我已经看到了这个主题的多重看法,它开始让我感到困惑.我真的希望有人能给我一个明确的答案!:)
我想直言不讳:Android模拟器是否支持OpenGL ES 2.0?我见过有人说"是的,但你必须改变一些设置." 而且我也看过"不,它不支持它,期间." 以下是我尝试解决问题所做的工作,包括我收到的一些错误消息.
首先,我修改了AndroidManifest.xml以包含以下代码:
android:glEsVersion="0x00020000" />
android:minSdkVersion="15"
android:targetSdkVersion="17" />
然后,当我想实例化我的GLSurfaceView时,我使用这段代码来实例化它:
super(context);
setEGLContextClientVersion(2);
setRenderer(new MyRenderer());
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
然后,我看到的任何地方都说你必须进入AVD管理器,选择模拟器,转到"硬件",添加"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)
我会说我根本不是这方面的专家,这是我第一次使用OpenGL.如果有人对我能做些什么来解决这个问题有任何想法,我将永远感激不尽.:) 谢谢!