「指令」窗格會顯示應用程式發出的呼叫,並依照頁框分組及繪製呼叫,或依使用者標記分組。
運作
在這個窗格中,您可以執行下列作業:
作業 | 說明 |
---|---|
顯示結果 | 按一下指令或群組,即可更新其他窗格,反映所選指令或群組之後的狀態。 |
展開或收合指令階層 | 按一下分組左側的灰色三角形圖示,或是在群組上按兩下即可展開或收合群組。 |
搜尋 | 在窗格頂端的搜尋列中輸入字串,然後按下 Return 鍵 (請參閱上圖)。如要尋找下一個出現記錄,請確保已選取該長條,然後再次按下 Return 鍵。 選取「規則運算式」方塊,即可使用規則運算式搜尋模式。 舉例來說, glClear.* 會比對 glClear() 和 glClearColor() 指令。您也可以搜尋指令參數值,例如 glBindBuffer(). 中使用的 2 緩衝區 |
編輯 | 在指令上按一下滑鼠右鍵,然後選取「編輯」。在「Edit」對話方塊中,變更一或多個值,然後按一下「OK」。注意:這僅適用於 Vulkan 指令,不適用於 OpenGL 指令。 |
查看狀態或記憶體資訊 | 按一下參照狀態參數 (例如紋理 ID) 的指令引數。「State」窗格會顯示額外資訊。按一下記憶體位址或指標,開啟「Memory」窗格。注意:這僅適用於 Vulkan 指令,不適用於 OpenGL 指令。 |
複製指令 | 在窗格中選取項目,然後按下 Control+C 鍵 (或 Command+C 鍵) 即可複製含有其引數值的指令。您可以將這些資訊貼入文字檔。 |
放大縮圖 | 縮圖會顯示在通話左側,如下圖所示。將遊標懸停在縮圖上即可放大圖片。 |
OpenGL ES 指令階層
OpenGL ES 指令會轉譯為 Vulkan,並分析 Vulkan 指令。因此,OpenGL ES 指令會在展開階層中同時顯示 OpenGL ES 和 Vulkan 指令。在上述範例中,您可以在 RenderPass
底下看到多個 glDrawElement
指令。第二個 glDrawElements
指令階層已展開,並顯示「OpenGL ES 指令」和「DrawIndexed」。您可以展開這兩個階層,顯示相關的 OpenGL ES 指令,以及這些指令轉譯時的 Vulkan 指令。
由於 OpenGL ES 與 Vulkan 間並沒有一對一的關係,因此可能會有差異。例如,在第一個 glDraw*
指令出現在 RenderPass
之前的 glClear
指令。如果展開 glClear
階層,將不會有 Vulkan 指令。這是因為在啟動 Vulkan RenderPass
時,系統會延遲及完成這項清除作業。
偵錯標記
視應用程式而定,「Commands」(指令) 窗格可以在一個頁框中提供非常長的指令清單。為提升導覽和易讀性,您可以定義偵錯標記,將呼叫在樹狀結構標題下方的分組。這可能包含分組,例如名為「Setup」或「Render World」。
如果偵錯標記已啟用,按一下「Commands」(指令) 窗格就會顯示這項資訊的連結。OpenGL ES 具備下列 API,可用於將指令分組:
擴充功能 / 版本 | 推送 | 郵局協議:POP |
---|---|---|
KHR_debug | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |
EXT_debug_marker | String |
String |
OpenGL ES 3.2 | String |
String |
Vulkan 提供下列 API,可將指令分組:
擴充功能 / 版本 | 推送 | 郵局協議:POP |
---|---|---|
VK_EXT_debug_marker | glPushDebugGroupKHR() |
glPopDebugGroupKHR() |