iOS Xcode 調試OpenGL shader 步驟詳解測試
注意Apple的官方文檔詳細的描述了要使用GPU Frame Capture功能,必須使用EAGLContext做爲上下文,並且要使用CAEAGLLayer或者GLKView,同時還要保證使用定時器等,去循環調用3d
[_context presentRenderbuffer:GL_RENDERBUFFER];//方法調試
不然不能使用GPU Frame Capture功能。code
當不能使用GPU Frame Capture功能時,此按鈕是灰色不可點擊狀態blog
下面介紹調試步驟:文檔
首先設置Options裏面的GPU Frame Capture爲OpenGL ES默認爲Automatically Enabled默認設置其實也能夠調試,可是此處爲了過程更符合OpenGL ES的流程,此處設置爲OpenGL ES。io
而後運行程序變量
運行過程當中點擊Capture按鈕捕獲一幀OpenGL ES數據。捕獲過程較慢。渲染
捕獲完畢以後:循環
可是到目前並不能看到shader的內容,已經shader內的變量的值,調試shader變量的值纔是咱們的目的。
在選擇All GPU Objects -> All 以後調試shader的界面就出現了調試OpenGL ES shader的界面爲:
此處若是想一邊查看frameBuffer一邊調試OpenGL ES shader能夠這樣操做:
界面變爲:
下面打開frameBuffer界面:
點擊後咱們想要的界面就出現了一邊爲frameBuffer界面一邊爲調試OpenGL ES shader的界面
下面查看OpenGL ES在渲染此幀時shader內的各個變量值是多少
此處以查看shader的變量的值爲示例,雙擊Vertex Array Objective #0
shader 內的變量的值爲:
使用的shader爲:
異常爲:
此異常是爲了測試調試信息故意這樣寫的,去掉此處的異常只須要將GLfloat jeffasdColors[]改成:
//GLfloat jeffasdColors[] = { 1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f };
至於緣由估計屬性OpenGL ES的都清除此處再也不解釋。