2012-03-11 53 views
2

我試圖利用setDebugFlags這裏推薦的掃描OpenGL的錯誤:Android/OpenGL-ES 2.0:setDebugFlags不會做任何事情嗎?

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

這是由於包裝器的工作方式。請參閱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似乎有一個很好的層次,但是,我沒有真的看看它,所以我不能確定。

+0

感謝您的見解,很高興知道。 – Tim 2012-04-07 07:39:42

+0

因此,如果我正確讀取這個,調試功能根本不起作用? (如果你不限制自己的GL ES 1) – nmr 2013-11-12 19:16:30

+0

那麼,這個答案已經過了一年半了。從那以後,我沒有看過實施。這當然可以使用重新評估。可能你會看看[gltracer](http://developer.android.com/tools/help/gltracer.html)。它已被同事成功使用。 – 2013-11-12 20:37:03