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 仿真”并将布尔值设置为“是”。然而,当我看到我的时候,这是我看到的:
奇怪的是,我的 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)