OpenGL ES 框架詳細(xì)解析(十三) —— Xcode OpenGL ES工具概述

版本記錄

版本號 時間
V1.0 2017.10.03

前言

OpenGL ES是一個強(qiáng)大的圖形庫娜谊,是跨平臺的圖形API懦鼠,屬于OpenGL的一個簡化版本。iOS系統(tǒng)可以利用OpenGL ES將圖像數(shù)據(jù)直接送入到GPU進(jìn)行渲染戈鲁,這樣避免了從CPU進(jìn)行計算再送到顯卡渲染帶來的性能的高消耗帚称,能帶來來更好的視頻效果和用戶體驗(yàn)。接下來幾篇就介紹下iOS 系統(tǒng)的 OpenGL ES框架蓬痒。感興趣的可以看上面幾篇泻骤。
1. OpenGL ES 框架詳細(xì)解析(一) —— 基本概覽
2. OpenGL ES 框架詳細(xì)解析(二) —— 關(guān)于OpenGL ES
3. OpenGL ES 框架詳細(xì)解析(三) —— 構(gòu)建用于iOS的OpenGL ES應(yīng)用程序的清單
4. OpenGL ES 框架詳細(xì)解析(四) —— 配置OpenGL ES的上下文
5. OpenGL ES 框架詳細(xì)解析(五) —— 使用OpenGL ES和GLKit進(jìn)行繪制
6. OpenGL ES 框架詳細(xì)解析(六) —— 繪制到其他渲染目的地
7. OpenGL ES 框架詳細(xì)解析(七) —— 多任務(wù),高分辨率和其他iOS功能
8. OpenGL ES 框架詳細(xì)解析(八) —— OpenGL ES 設(shè)計指南
9. OpenGL ES 框架詳細(xì)解析(九) —— 調(diào)整您的OpenGL ES應(yīng)用程序
10. OpenGL ES 框架詳細(xì)解析(十) —— 使用頂點(diǎn)數(shù)據(jù)的最佳做法
11. OpenGL ES 框架詳細(xì)解析(十一) —— 并發(fā)和OpenGL ES
12. OpenGL ES 框架詳細(xì)解析(十二) —— 采用OpenGL ES 3.0

Xcode OpenGL ES Tools Overview - Xcode OpenGL ES工具概述

用于調(diào)試梧奢,分析和調(diào)整OpenGL ES應(yīng)用程序的Xcode工具在開發(fā)的所有階段都很有用狱掂。 FPS Debug Gauge和GPU報告總結(jié)了每次從Xcode運(yùn)行時的應(yīng)用程序GPU性能,因此您可以在設(shè)計和構(gòu)建渲染器時快速查看性能問題亲轨。 找到故障點(diǎn)后趋惨,捕獲一幀并使用Xcode的OpenGL ES Frame Debugger界面來精確定位渲染問題并解決性能問題。

有效地使用Xcode OpenGL ES功能需要熟悉Xcode的調(diào)試界面惦蚊。 有關(guān)背景信息器虾,請閱讀Xcode User Guide


Using the FPS Debug Gauge and GPU Report - 使用 the FPS Debug Gauge and GPU 報告

如圖B-1所示蹦锋,F(xiàn)PS調(diào)試指示器和隨附的GPU報告提供了應(yīng)用程序運(yùn)行時的OpenGL ES性能的高級摘要兆沙。 通過在開發(fā)應(yīng)用程序時監(jiān)控這些顯示,您可以發(fā)現(xiàn)性能問題莉掂,并考慮在哪里集中調(diào)整工作葛圃。

Figure B-1 FPS Debug Gauge and GPU Report

注意:FPS測量儀和GPU報告的某些功能依賴于display link定時器。 如果您不使用CADisplayLinkGLKViewController類來動畫化OpenGL ES顯示巫湘,則儀表和報告將無法顯示相對于目標(biāo)幀速率的性能或提供準(zhǔn)確的CPU幀時間信息。

調(diào)試計和報告包含以下顯示:

  • FPS Gauge昏鹃。顯示您的應(yīng)用程序的當(dāng)前動畫速率(以每秒幀數(shù)(FPS))和最近的FPS讀數(shù)歷史記錄尚氛。 單擊此計量器可在Xcode的主編輯器中顯示GPU報告。
  • Frames Per Second洞渤。 顯示當(dāng)前幀速率阅嘶,相對于您的應(yīng)用設(shè)置的目標(biāo)幀速率(通常為30或60 FPS)。 藍(lán)色弧表示最近的FPS讀數(shù)范圍。
  • Utilization讯柔。 顯示三個條狀圖抡蛙,分解您的應(yīng)用程序?qū)PU上不同處理資源的使用情況,并指出在使用圖形硬件時性能瓶頸的可能位置魂迄。
    • The Tiler bar可以測量GPU的幾何處理資源的使用粗截。 高層次利用率可以表明OpenGL ES流水線的頂點(diǎn)和原始處理階段的性能瓶頸,例如使用無效的頂點(diǎn)著色器代碼或每幀畫出過多數(shù)量的頂點(diǎn)或圖元捣炬。
    • The Renderer bar可以使用GPU的像素處理資源熊昌。 高渲染器利用率可以指示OpenGL ES管道的片段和像素處理階段的性能瓶頸,例如使用無效的片段著色器代碼或處理每個幀用于顏色混合的附加片段湿酸。
    • The Device bar顯示了GPU的整體使用情況婿屹,并結(jié)合了tilerrenderer的使用。
  • Frame Time推溃。 顯示在CPU和GPU上處理每個幀的時間昂利。 此圖可以指示您的應(yīng)用程序是否有效使用CPU / GPU并行性。

如果您的應(yīng)用程序花費(fèi)更多的CPU處理時間铁坎,您可以通過將工作轉(zhuǎn)移到GPU來提高性能蜂奸。 例如,如果每個幀需要許多類似的glDrawArraysglDrawElements調(diào)用厢呵,那么可以使用硬件實(shí)例來減少CPU開銷窝撵。 (有關(guān)詳細(xì)信息,請參閱 Use Instanced Drawing to Minimize Draw Calls

如果您的應(yīng)用程序在GPU處理中花費(fèi)更多時間襟铭,則可以通過將工作移到CPU來提高性能碌奉。 例如,如果著色器在特定繪制調(diào)用期間對每個頂點(diǎn)或片段執(zhí)行與相同結(jié)果相同的計算寒砖,則可以在CPU上執(zhí)行該計算一次赐劣,并將其結(jié)果傳遞給均勻變量中的著色器。 (請參閱Use Uniforms or Constants Instead of Computing Values in a Shader)哩都。

  • Program Performance魁兼。捕獲幀后才會出現(xiàn)(請參閱下面的Capturing and Analyzing an OpenGL ES Frame ),顯示渲染捕獲幀時花費(fèi)在每個著色器程序中的時間漠嵌,以毫秒為單位咐汞,占總幀渲染時間的百分比。 擴(kuò)展程序的列表顯示使用該程序進(jìn)行的繪圖調(diào)用和每個渲染時間的貢獻(xiàn)儒鹿。 選擇列表中的程序以在助理編輯器中查看其著色器源代碼化撕,或單擊繪圖調(diào)用旁邊的箭頭圖標(biāo),以在框架導(dǎo)航器中選擇該調(diào)用(請參閱下面的Navigator Area)约炎。

注意:僅在支持OpenGL ES 3.0的設(shè)備上進(jìn)行調(diào)試時植阴,才會顯示“程序性能”視圖(無論您的應(yīng)用程序是使用OpenGL ES 3.0還是2.0上下文)蟹瘾。

調(diào)整應(yīng)用程序時,您可以使用此圖形來查找優(yōu)化的機(jī)會掠手。 例如憾朴,如果一個程序占用幀渲染時間的50%,則通過優(yōu)化它可以獲得更多的性能喷鸽,而不是通過提高僅占幀時間的10%的程序的速度众雷。 雖然這個視圖通過著色器程序組織幀時間,但請記住魁衙,改善著色器算法不是優(yōu)化應(yīng)用程序性能的唯一方法 - 例如报腔,您還可以減少使用昂貴的著色器程序的繪圖調(diào)用次數(shù),或者減少 由慢片段著色器處理的片段數(shù)剖淀。

  • Problems & Solutions纯蛾。只有在Xcode分析幀捕獲后才會顯示(請參閱Capturing and Analyzing an OpenGL ES Frame),此區(qū)域列出了分析期間發(fā)現(xiàn)的可能問題以及提高性能的建議纵隔。

當(dāng)您在捕獲的幀中更改GLSL著色器程序(請參閱下面的Editing Shader Programs)時翻诉,幀時間和程序性能圖展開,以顯示原始捕獲的幀的基線渲染時間和使用已編輯的渲染著色器的當(dāng)前渲染時間捌刮。


Capturing and Analyzing an OpenGL ES Frame - 采集和分析OpenGL ES幀

要詳細(xì)了解您的應(yīng)用程序的OpenGL ES使用情況碰煌,請捕獲用于渲染單幀動畫的OpenGL ES命令的順序。 Xcode提供了幾種開始幀捕獲的方法:

  • Manual capture绅作。在Xcode中運(yùn)行應(yīng)用程序時芦圾,單擊調(diào)試欄中的相機(jī)圖標(biāo)(如圖B-2所示),或者從Debug菜單中選擇Capture OpenGL ES Frame俄认。
Figure B-2 Debug Bar with Capture OpenGL ES Frame button

注意:只有當(dāng)您的項(xiàng)目與OpenGL ES或Sprite Kit框架相連時个少,Capture Open ES ES Frame按鈕才會自動出現(xiàn)。 您可以通過編輯活動方案來選擇是否顯示給其他項(xiàng)目眯杏。 (請參閱About the Scheme Editing Dialog)夜焦。

  • Breakpoint action。斷點(diǎn)動作岂贩。 選擇Capture OpenGL ES Frame作為任何斷點(diǎn)的操作茫经。 當(dāng)調(diào)試器通過此操作到達(dá)斷點(diǎn)時,Xcode會自動捕獲一個幀萎津。 (請參閱Setting Breakpoint Actions and Options)卸伞,如果在開發(fā)應(yīng)用程序時使用此操作與OpenGL ES錯誤斷點(diǎn)(請參閱 Adding an OpenGL ES Error Breakpoint),每當(dāng)發(fā)生錯誤的時候锉屈,可以使用OpenGL ES Frame Debugger調(diào)查OpenGL ES錯誤的原因 荤傲。

  • OpenGL ES event marker。通過在OpenGL ES命令流中插入事件標(biāo)記以編程方式觸發(fā)幀捕獲部念。 以下命令插入如下標(biāo)記:

glInsertEventMarkerEXT(0, "com.apple.GPUTools.event.debug-frame")

當(dāng)OpenGL ES客戶端到達(dá)此標(biāo)記時弃酌,它完成渲染幀,然后Xcode自動捕獲用于渲染該幀的整個命令序列儡炼。

Xcode捕獲幀后妓湘,會顯示OpenGL ES Frame Debugger界面。 使用此界面來檢查渲染幀的OpenGL ES命令的順序乌询,并檢查OpenGL ES資源榜贴,參見Touring the OpenGL ES Frame Debugger

此外妹田,Xcode可以對應(yīng)用程序的OpenGL ES使用情況進(jìn)行自動分析唬党,以確定渲染器和著色器架構(gòu)的哪些部分可以從性能優(yōu)化中獲益最多。 要使用此選項(xiàng)鬼佣,請單擊GPU報告頂部的分析按鈕(如Figure B-1右上方所示)驶拱。

當(dāng)您單擊“分析”按鈕時,Xcode將捕獲一個框架(如果尚未被捕獲)晶衷,則通過使用附加的iOS設(shè)備進(jìn)行一系列實(shí)驗(yàn)來運(yùn)行渲染代碼蓝纲。 例如,要查看渲染速度是否受到紋理大小的限制晌纫,Xcode將運(yùn)行OpenGL ES命令的捕獲序列税迷,同時將您的應(yīng)用程序提交到GPU的紋理數(shù)據(jù)和大小減小的紋理集合。 在Xcode完成分析之后锹漱,GPU報告的Problems & Solutions領(lǐng)域列出了所發(fā)現(xiàn)的任何問題箭养,并提出可能的性能改進(jìn)建議。


Touring the OpenGL ES Frame Debugger - 瀏覽OpenGL ES幀調(diào)試器

Xcode捕獲幀后哥牍,會自動重新配置OpenGL ES調(diào)試界面毕泌。 OpenGL ES Frame Debugger界面修改了Xcode工作區(qū)窗口的幾個區(qū)域,以提供有關(guān)OpenGL ES渲染過程的信息砂心,如圖B-3和圖B-4所示懈词,并在下面進(jìn)行了總結(jié)。 (框架調(diào)試器不使用檢查器或庫工作板辩诞,因此您可能希望在OpenGL ES調(diào)試期間隱藏Xcode的實(shí)用程序區(qū)域坎弯。)

Figure B-3 Frame debugger examining draw calls and resources
Figure B-4 Frame debugger examining shader program performance and analysis results

1. Navigator Area - 導(dǎo)航區(qū)域

在OpenGL ES幀調(diào)試器界面中,調(diào)試導(dǎo)航器由OpenGL ES幀導(dǎo)航器替代译暂。 該導(dǎo)航儀顯示OpenGL ES命令抠忘,可以渲染捕獲的幀,按順序或根據(jù)其相關(guān)的著色器程序進(jìn)行組織外永。 使用框架導(dǎo)航器頂部的Frame View Options彈出菜單在視圖樣式之間切換崎脉。

Figure B-5 View Frame By popup menu in navigator

View Frame By Call - 按調(diào)用查看幀

當(dāng)您要依次研究OpenGL ES命令以查明錯誤,診斷呈現(xiàn)問題或識別常見性能問題時伯顶,通過調(diào)用查看捕獲的幀囚灼。 在此模式下骆膝,框架導(dǎo)航器按照您的應(yīng)用程序所稱的順序列出命令。 導(dǎo)致OpenGL ES錯誤或可能指示性能問題的命令旁邊出現(xiàn)錯誤或警告圖標(biāo)灶体。

您可以通過使用glPushGroupMarkerEXTglPopGroupMarkerEXT函數(shù)為OpenGL ES命令組添加結(jié)構(gòu)來添加結(jié)構(gòu)阅签,這些組顯示為可以展開或折疊以顯示更多或更少細(xì)節(jié)的文件夾。 (有關(guān)詳細(xì)信息蝎抽,請參閱 Annotate Your OpenGL ES Code for Informative Debugging and Profiling)政钟,您還可以展開OpenGL ES命令,以顯示堆棧跟蹤樟结,指示應(yīng)用程序代碼中發(fā)出命令的位置养交。

使用上下文菜單來選擇是否縮寫命令名稱以及要顯示的命令,組和警告瓢宦。 使用導(dǎo)航器底部的標(biāo)志圖標(biāo)在顯示所有OpenGL ES命令之間切換碎连,并僅顯示繪制到幀緩沖區(qū)中的那些。

單擊OpenGL ES命令列表將導(dǎo)航到OpenGL ES命令序列中的那一點(diǎn)驮履,影響幀調(diào)試器接口其他區(qū)域的內(nèi)容破花,如下所述,并顯示OpenGL ES調(diào)用的效果并附加設(shè)備的顯示疲吸。

View Frame By Program - 按程序查看幀

當(dāng)您要分析在每個著色器程序上花費(fèi)的GPU時間和繪制命令時座每,可以通過程序查看捕獲的幀。

展開程序的列表摘悴,以查看每個著色器在程序和每個繪圖調(diào)用中的時間貢獻(xiàn)峭梳。 展開一個繪圖調(diào)用的列表,以顯示一個堆棧跟蹤蹂喻,指示您的應(yīng)用程序代碼中發(fā)出該命令的位置葱椭。

使用上下文菜單來優(yōu)化顯示 - 您可以選擇程序是按照其時間貢獻(xiàn)進(jìn)行排序的,以及時間信息是否以總渲染時間的百分比顯示口四。

單擊程序或著色器將在主編輯器中顯示相應(yīng)的GLSL源代碼孵运。 單擊OpenGL ES命令將導(dǎo)航到幀捕獲序列中的那一點(diǎn)。

注意:按程序查看幀選項(xiàng)僅在支持OpenGL ES 3.0的設(shè)備上進(jìn)行調(diào)試時可用(無論您的應(yīng)用程序是否使用OpenGL ES 3.0或2.0上下文)蔓彩。 在其他設(shè)備上治笨,框架視圖選項(xiàng)彈出菜單被禁用。

2. Editor Area - 編輯區(qū)

使用幀捕獲時赤嚼,您可以使用主編輯器預(yù)覽要渲染的幀緩沖區(qū)旷赖,還可以使用助手編輯器來檢查OpenGL ES資源并編輯GLSL著色器程序。 默認(rèn)情況下更卒,助理編輯器顯示OpenGL ES上下文所有資源的圖形概述等孵,如圖Figure B-3.所示。 使用助理編輯器的跳轉(zhuǎn)欄僅顯示為框架導(dǎo)航器中選擇的調(diào)用使用的資源蹂空,或者選擇一個單獨(dú)的資源進(jìn)行進(jìn)一步檢查俯萌。 您也可以雙擊概述中的資源進(jìn)行檢查果录。 當(dāng)您選擇資源時,助理編輯器將更改為適合該資源類型的任務(wù)的格式咐熙。

Previewing Framebuffer Contents - 預(yù)覽Framebuffer內(nèi)容

主編輯器顯示由幀導(dǎo)航器中當(dāng)前選擇的繪圖調(diào)用渲染的幀緩沖區(qū)的內(nèi)容雕憔。 (如果幀導(dǎo)航器中所選的OpenGL ES命令不是繪圖命令,例如糖声,設(shè)置諸如glUseProgram之類的狀態(tài)的命令,則framebuffer會反映在選擇之前由最近的繪圖調(diào)用完成的渲染分瘦。)您也可以 使用主編輯器頂部的跳轉(zhuǎn)條導(dǎo)航OpenGL ES命令的序列蘸泻。

Figure B-6 Framebuffer info popover

編輯器顯示當(dāng)前為繪圖綁定的每個幀緩沖附件的預(yù)覽。 例如嘲玫,3D渲染的大多數(shù)方法都使用具有顏色和深度附件的幀緩沖區(qū)悦施,如圖所示。 使用編輯器左下角的控件選擇當(dāng)前顯示的幀緩沖附件去团。 單擊每個幀緩沖附件名稱左側(cè)的信息按鈕抡诞,顯示一個彈出窗口,詳細(xì)說明附件的屬性土陪,如圖B-6所示昼汗。 單擊framebuffer附件名稱右側(cè)的設(shè)置按鈕,以顯示具有調(diào)整預(yù)覽圖像的控件的彈出窗口鬼雀。 例如顷窒,您可以使用這些控件在深度緩沖區(qū)中在其灰階預(yù)覽中使一定范圍的Z值更可見,如圖B-7所示源哩。

Figure B-7 Framebuffer settings popover

每個幀緩沖附件預(yù)覽還顯示一個綠色線框鞋吉,突出顯示當(dāng)前繪圖調(diào)用的效果(如圖 Figure B-3所示)。 使用預(yù)覽圖像中的上下文菜單來選擇是否突出顯示在預(yù)覽中或顯示連接的設(shè)備上励烦。

Editing Shader Programs - 編輯著色器程序

當(dāng)您在助手編輯器的跳轉(zhuǎn)欄或資源概述中選擇著色程序時谓着,助手編輯器將顯示該程序片段著色器的GLSL源代碼(如圖B-8所示)。 當(dāng)您在框架導(dǎo)航器中選擇一個程序(請參閱View Frame By Program)時坛掠,主編輯器顯示程序的片段著色器赊锚,助手編輯器顯示其頂點(diǎn)著色器。 在顯示片段著色器的任何編輯器中屉栓,您可以使用跳轉(zhuǎn)條切換到其對應(yīng)的頂點(diǎn)著色器改抡,反之亦然。

Figure B-8 GLSL shader source editor with update button

著色器源代碼的每一行在右邊距中突出顯示系瓢,表示其對渲染時間的相對貢獻(xiàn)阿纤。 使用這些來集中您的著色器優(yōu)化工作 - 如果幾行占用更多的渲染時間,可以查看更快的替代方案夷陋。 (有關(guān)著色器性能提示欠拾,請參閱Best Practices for Shaders胰锌。)

您可以在編輯器中更改著色器源代碼。 然后藐窄,單擊編輯器下方的更新按鈕(如圖Figure B-8所示)重新編譯著色器程序资昧,并查看其對捕獲幀的影響。 如果編譯著色器會導(dǎo)致GLSL編譯器發(fā)生錯誤或警告消息荆忍,則Xcode會為每個問題注釋著色器源代碼格带。 重新編譯的著色器程序在設(shè)備上仍然使用,因此您可以恢復(fù)運(yùn)行應(yīng)用程序刹枉。 單擊調(diào)試欄中的繼續(xù)按鈕以查看您的著色器更改的操作叽唱。

Inspecting Vertex Data - 檢查頂點(diǎn)數(shù)據(jù)

當(dāng)您檢查數(shù)組緩沖區(qū)時,助理編輯器顯示緩沖區(qū)的內(nèi)容(參見圖B-9)微宝。 因?yàn)镺penGL ES內(nèi)存中的緩沖區(qū)沒有定義的格式棺亭,您可以使用編輯器底部的彈出菜單來選擇其內(nèi)容的顯示方式(例如,32位整數(shù)或浮點(diǎn)值蟋软,或兩倍于 許多16位整數(shù)或半浮點(diǎn)值)以及Xcode用于顯示數(shù)據(jù)的列數(shù)镶摘。

Figure B-9 Assistant editor previewing array buffer contents

頂點(diǎn)數(shù)組對象(VAO)將一個或多個數(shù)據(jù)緩沖區(qū)封裝在OpenGL ES存儲器中,以及用于將頂點(diǎn)數(shù)據(jù)從緩沖區(qū)提供給著色器程序的屬性綁定岳守。 (有關(guān)使用VAO的詳細(xì)信息凄敢,請參閱Consolidate Vertex Array State Changes Using Vertex Array Objects)由于VAO綁定包含有關(guān)緩沖區(qū)內(nèi)容格式的信息,因此檢查VAO會顯示OpenGL ES解釋的內(nèi)容(參見圖B-10)湿痢。

Figure B-10 Assistant editor previewing vertex array object

Viewing Textures or Renderbuffers - 查看紋理或幀緩沖區(qū)

當(dāng)您檢查紋理或渲染緩沖區(qū)時贡未,助理編輯器將顯示其內(nèi)容的圖像預(yù)覽。 您可以使用主編輯器中找到的相同控件來獲取有關(guān)紋理對象或渲染緩沖區(qū)的更多信息蒙袍,并調(diào)整圖像預(yù)覽俊卤。 對于紋理,您可以使用助手編輯器左下角的附加控件預(yù)覽多維數(shù)據(jù)集地圖紋理的每個面的紋理和(如果適用)的每個mipmap級別(如圖B-11所示)害幅。

Figure B-11 Assistant editor previewing cube map texture

3. Debug Area - 調(diào)試區(qū)

調(diào)試欄提供多個控件消恍,用于瀏覽捕獲的OpenGL ES命令序列(如圖B-12所示)。 您可以使用其菜單來跟蹤幀導(dǎo)航器中顯示的層次結(jié)構(gòu)以现,并選擇一個命令狠怨,也可以使用箭頭和滑塊按順序前后移動。 按繼續(xù)按鈕結(jié)束框架調(diào)試并返回運(yùn)行應(yīng)用程序邑遏。

Figure B-12 OpenGL ES debug bar

框架調(diào)試器沒有調(diào)試控制臺佣赖。 相反,Xcode提供了多個變量視圖记盒,每個視圖都提供了OpenGL ES渲染過程當(dāng)前狀態(tài)的不同摘要憎蛤。 使用彈出菜單在可用變量視圖之間進(jìn)行選擇,在以下部分中討論。

The All GL Objects View - 所有GL對象視圖

所有GL對象視圖與圖B-13右側(cè)所示的“綁定GL對象”視圖類似俩檬,列出了與輔助編輯器中圖形概述相同的OpenGL ES資源萎胰。 然而,與圖形概述不同棚辽,當(dāng)您擴(kuò)展其顯示三角形時技竟,此視圖可以提供有關(guān)資源的更詳細(xì)信息。 例如屈藐,擴(kuò)展幀緩沖區(qū)或緩沖區(qū)對象的列表顯示僅通過OpenGL ES查詢功能(如glGetBufferParameterglGetFramebufferAttachmentParameter)可用的信息榔组。 擴(kuò)展著色器程序的列表顯示其狀態(tài),屬性綁定和每個統(tǒng)一變量的當(dāng)前綁定值联逻。

The Bound GL Objects View - 綁定GL對象視圖

B-13右側(cè)所示的“綁定GL對象”視圖的行為與All GL Objects view視圖相同湿蛔,但僅列出當(dāng)前要綁定的資源顿天,用于框架導(dǎo)航器中所選的OpenGL ES命令钾虐。

Figure B-13 Debug area with GL Context and Bound GL Objects views

The GL Context View - GL上下文視圖

B-13左側(cè)的GL上下文視圖列出了OpenGL ES渲染器的整個狀態(tài)向量扛稽,并將其組織成功能組藏否。 當(dāng)您在更改OpenGL ES狀態(tài)的框架導(dǎo)航器中選擇一個調(diào)用時步藕,更改的值將突出顯示腹备。 例如感憾,調(diào)用glCullFaceglFrontFace函數(shù)會更改并突出顯示狀態(tài)列表的“剔除”部分中的值谭贪。 使用glEnable(GL_BLEND)調(diào)用或使用glBlendFunc函數(shù)更改混合參數(shù)來啟用混合境钟,可以在狀態(tài)列表的“混合”部分中更改和突出顯示值。

The Context Info View - 上下文信息視圖

B-14右側(cè)所示的The Context Info View列出了有關(guān)正在使用的OpenGL ES渲染器的靜態(tài)信息:名稱俭识,版本慨削,功能,擴(kuò)展名和類似數(shù)據(jù)套媚。 您可以查看此數(shù)據(jù)缚态,而不是編寫自己的代碼來查詢渲染器屬性,如GL_MAX_TEXTURE_IMAGE_UNITSGL_EXTENSIONS堤瘤。

Figure B-14 Debug area with Auto and Context Info views

The Auto View - 自動視圖

B-14左側(cè)所示的自動視圖會自動列出在其他變量視圖中通常找到的項(xiàng)目的子集以及適用于框架導(dǎo)航器中所選調(diào)用的其他信息玫芦。 例如:

  • 如果所選的調(diào)用導(dǎo)致OpenGL ES錯誤,或者Xcode已經(jīng)確定了所選調(diào)用的可能的性能問題本辐,則該視圖列出了每個的錯誤或警告和建議的修復(fù)桥帆。
  • 如果所選調(diào)用更改OpenGL ES上下文狀態(tài)的一部分,或者其行為取決于上下文狀態(tài)慎皱,則視圖會自動從GL Context view中列出相關(guān)項(xiàng)老虫。
  • 如果所選擇的調(diào)用綁定資源或使用諸如頂點(diǎn)數(shù)組對象,程序或紋理的綁定資源茫多,則視圖會自動列出“綁定GL對象”視圖中的相關(guān)項(xiàng)目祈匙。
  • 如果選擇了繪圖調(diào)用,則視圖列出了程序性能信息天揖,包括在繪制調(diào)用期間在每個著色器中花費(fèi)的總時間菊卷,如果你自捕獲幀以來已更改并重新編譯著色器缔恳,則在每一個著色器中花費(fèi)的基線時間都是不同的。 (僅在支持OpenGL ES 3.0的設(shè)備上進(jìn)行調(diào)試時洁闰,程序性能信息才可用)歉甚。

此外,此視圖列出了有關(guān)幀渲染性能的匯總統(tǒng)計信息扑眉,包括繪制數(shù)量和幀速率纸泄。

后記

有點(diǎn)小困,睡了腰素,未完聘裁,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弓千,隨后出現(xiàn)的幾起案子衡便,更是在濱河造成了極大的恐慌,老刑警劉巖洋访,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镣陕,死亡現(xiàn)場離奇詭異,居然都是意外死亡姻政,警方通過查閱死者的電腦和手機(jī)呆抑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汁展,“玉大人鹊碍,你說我怎么就攤上這事∈陈蹋” “怎么了侈咕?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長器紧。 經(jīng)常有香客問我乎完,道長,這世上最難降的妖魔是什么品洛? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任树姨,我火速辦了婚禮,結(jié)果婚禮上桥状,老公的妹妹穿的比我還像新娘帽揪。我一直安慰自己,他們只是感情好辅斟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布转晰。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查邢。 梳的紋絲不亂的頭發(fā)上蔗崎,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機(jī)與錄音扰藕,去河邊找鬼缓苛。 笑死,一個胖子當(dāng)著我的面吹牛邓深,可吹牛的內(nèi)容都是我干的未桥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼芥备,長吁一口氣:“原來是場噩夢啊……” “哼冬耿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起萌壳,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤亦镶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后袱瓮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缤骨,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年懂讯,在試婚紗的時候發(fā)現(xiàn)自己被綠了荷憋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片台颠。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡褐望,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出串前,到底是詐尸還是另有隱情瘫里,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布荡碾,位于F島的核電站谨读,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坛吁。R本人自食惡果不足惜劳殖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拨脉。 院中可真熱鬧哆姻,春花似錦、人聲如沸玫膀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至箕昭,卻和暖如春灵妨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背落竹。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工泌霍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筋量。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓烹吵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親桨武。 傳聞我的和親對象是個殘疾皇子肋拔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容