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 Manager,选择模拟器,进入“硬件”,添加“GPU仿真”,并将布尔值设置为“是”。但是,当我查看我的时候,我看到的是这样的:
奇怪的是,我在AVD Manager中还有另一个模拟器,它确实有“硬件”表:
为了向您展示我正在做什么,这里有一些代码可以执行我想要在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)