使用OpenGL2.0教程的示例代码在运行时崩溃

时间:2012-01-08 08:13:38

标签: java android opengl-es

由于我是OpenGL编程的新手,我曾尝试测试OpenGL2.0教程中显示的示例代码。应用程序编译时没有错误,但是当我尝试在模拟器中运行它时,它崩溃了。 以下是DDMS所说的:

01-08 08:03:41.365: E/AndroidRuntime(380): FATAL EXCEPTION: GLThread 8
01-08 08:03:41.365: E/AndroidRuntime(380): java.lang.IllegalArgumentException: No configs match configSpec
01-08 08:03:41.365: E/AndroidRuntime(380):  at android.opengl.GLSurfaceView$BaseConfigChooser.chooseConfig(GLSurfaceView.java:760)
01-08 08:03:41.365: E/AndroidRuntime(380):  at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:916)
01-08 08:03:41.365: E/AndroidRuntime(380):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1246)
01-08 08:03:41.365: E/AndroidRuntime(380):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1116)

有谁能解释一下坠机的原因?

2 个答案:

答案 0 :(得分:3)

这是因为模拟器不支持opengl es 2,它目前只支持opengl es 1.你需要一个实际的设备来运行你的代码。

答案 1 :(得分:1)

我在最长的时间内遇到了同样的问题。我几乎放弃了。 确保在创建的surfaceview类中设置上下文客户端版本,然后再设置渲染器。

根据教程,你的calss的构造应如下所示:

public MyGLSurfaceView(Context context){
    super(context);
    // Create an OpenGL ES 2.0 context
    setEGLContextClientVersion(2);
    // Set the Renderer for drawing on the GLSurfaceView
    setRenderer(new MyRenderer());
    // Render the view only when there is a change in the drawing data
    setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}//..