Android / OpenGL-ES 2.0:setDebugFlags什么都不做?

时间:2012-03-11 21:00:55

标签: android opengl-es

我正在尝试使用此处推荐的setDebugFlags来扫描opengl错误:

http://developer.android.com/resources/articles/glsurfaceview.html

我把它放在我的surfaceview的构造函数中:

public MySurfaceView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setEGLContextClientVersion(2);
    setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS);
    _renderer = new MyRenderer(getContext());
    setRenderer(_renderer);
    setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
}

然而,在运行时,我没有在详细的logcat中看到任何内容,无论是在我的会话过滤器下还是在所有消息中。没有opengl调用,没有opengl错误。

我在每帧结束时手动检查错误,但我确实有错误,但我不知道它来自哪里。我是否遗漏了一些显而易见的东西以使setDebugFlags工作?

1 个答案:

答案 0 :(得分:1)

这是由于包装器的工作方式。请参阅EglHelper's createSurface方法,这是唯一使用mDebugFlags的地方。它包装GL10实例并返回它。但是,由于您使用的是ES 2.0,因此必须使用GLES20的静态函数调用,这些调用无法按照完成的方式进行封装。

仍然更好,即使您通过调用GL10实例方法仅使用GLES,设置调试标志也将prevent you from using the extension interfacesGL11似乎是totally unsupported in this regard。这个bug现在已经超过2年了,所以最好自己实现一些东西; JOGL似乎有一个很好的层次结构,但是,我没有真的看它,所以我不能确定。