OpenGL ES 2.0的支持的Android?(OpenGL ES 2.0 Support fo

2019-07-04 13:51发布

我见过多次发生在这个主题和它的开始迷惑我。 我真的希望有人可以给我一个明确的答案! :)

我猜是直言不讳:做Android模拟器支持OpenGL ES 2.0吗? 我见过一些人说:“是的,但你必须改变一些设置。” 而我也看到了“不,它不支持它,期限。” 这是我做了什么,试图纠正这个问题,包括我得到了一些错误信息。

首先,我修改了AndroidManifest.xml中包含以下代码:

<uses-feature 
    android:glEsVersion="0x00020000" />

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="17" />

然后,当我想要我的实例GLSurfaceView,我使用此代码序列进行实例化:

super(context);

setEGLContextClientVersion(2);

setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);

然后,我到处看了看说,你必须进入AVD管理器,选择仿真器,进入“硬件”,增加了“GPU仿真”,并设置布尔为“yes”。 然而,这里是我所看到的,当我看到我的:

什么是奇特的是,我在我的AVD管理另一个模拟器,其中我有“硬件”表:

而刚刚给你看我在做什么,这里的一些代码,做一些东西,我想在OpenGL ES 2.0的做(我主要是得到这个从Android的自身教程):

int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);

program = GLES20.glCreateProgram();
GLES20.glAttachShader(program, vertexShader);
GLES20.glAttachShader(program, fragmentShader);
GLES20.glLinkProgram(program);

我不想改变我的代码回来的OpenGL ES 1.0的工作,因为这将需要很多麻烦,如果我能避免它,我会的。

最后,当我尝试运行我的程序,该程序与窗口关闭:“不幸的是,已经停止。” 这是logcat的告诉我:

12-05 06:16:27.165: E/AndroidRuntime(936): FATAL EXCEPTION: GLThread 81
12-05 06:16:27.165: E/AndroidRuntime(936): java.lang.IllegalArgumentException: No config chosen
12-05 06:16:27.165: E/AndroidRuntime(936):  at    android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:874)
12-05 06:16:27.165: E/AndroidRuntime(936):  at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:1024)
12-05 06:16:27.165: E/AndroidRuntime(936):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1401)
12-05 06:16:27.165: E/AndroidRuntime(936):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

我会说我不是在所有这方面的专家,这是我的OpenGL的第一次经历。 如果有人有什么我可以做些什么来解决这个任何想法,我将永远感激。 :) 谢谢!

Answer 1:

我可以对你的问题是。 Android模拟器支持OpenGL ES 2.0。 我创建的cocos2d-X V.2(其使用OpenGL ES 2.0)的应用程序。 我有同样的致命异常:GLThread 81误差相同的堆栈。 我加入解决了这个问题

gLSurfaceView.setEGLConfigChooser(8 , 8, 8, 8, 16, 0);

之前设置渲染setRenderer:

gLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());

现在,我可以运行我的Android模拟器应用。

见我的问题和答案https://stackoverflow.com/a/13719983/307547 。 我的这个链接后包含AVD设置截图:

http://www.cocos2d-x.org/boards/6/topics/12563?r=19274#message-19274



Answer 2:

我只是解决了这一问题,不添加任何新的生产线,以我的源代码。 在AVD-经理,我设置为“使用主机GPU”我的模拟器装置。 现在能对我的Geforce GTX 570完美的罚款。

仿真器的设备上的API级别为16,分钟-SDK在清单是15。



Answer 3:

得到了同样的问题。 原bug的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d(this.getClass().getName(), "Into onCreate Draw triangle");
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    if (detectOpenGLES20()){
        Log.d("GLES20", "GL ES 2.0 Supported..............!");
    } else {
        Log.d("GLES20", "GL ES 2.0 Not Supported...............!");
    }

    view = new GLSurfaceView(this);
    view.setEGLContextClientVersion(2);
    view.setEGLConfigChooser(true);
    view.setRenderer(new TriangleRenderer(view));
    setContentView(view);
}


解决方式:

a。)中的更换这个代码行

view.setEGLConfigChooser(true);

view.setEGLConfigChooser(8, 8, 8, 8, 16, 0);


。B)设置-gpu on >运行方式--->目标--->其他仿真器的命令行选项-通过Eclipse


有我碰到与上面这段代码工作,而两个不同的异常消息

致命异常:GLThread 75 java.lang.IllegalArgumentException异常:无CONFIGS匹配configSpec

java.lang.IllegalArgumentException异常:没有配置选择

在叙述更详细的案例研究http://on-android-opengl2.blogspot.in/2013/05/android-opengl-es-20-emulator.html



文章来源: OpenGL ES 2.0 Support for Android?