Xcode OpenGL ES Frame Capture的使用


一、使用背景

近期在Xcode中使用OpenGL ES 2.0實現一些效果,剛開始存在一些性能問題(CPU和GPU),幸運的是Xcode中自帶了免費的性能工具Instruments,其中包含OpenGL ES Analysis,查找方法如圖1,圖2所示,英文好的童鞋可以訪問Apple官方提供的資料(https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ToolsOverview/ToolsOverview.html)。

      

           圖1  OpenGL ES Analysis查找                      圖2  OpenGL ES Analysis

為了方便查看draw call的回調和shader的執行過程,故此分享下Xcode OpenGL ES Frame Capture的使用。

參考網址:http://www.cnblogs.com/TracePlus/p/4093830.html

二、使用方法

1.OpenGL ES Frame Capture設置

如果使用該功能的前提:

(1)必須使用真機

(2)至少Xcode4.5以上

(3)需要把GLKit或OpenGL Framework加入代碼中

(4)設置Manager Schemes..,設置GPU Frame Capture為OpenGL ES 效果如圖3,圖4所示。

       

        圖3  Manager Schemes                                              圖4  設置GPU Frame Capture為OpenGL ES

2.捕獲Frame

此時,按下command+R運行工程,當在真機上加載完成后進入Debug Navigator ,然后點擊FPS標簽查看FPS顯示,CPU/GPU執行時間等,如圖5,圖6所示。

      圖5  FPS查找

                              圖6  FPS標簽內容

圖6中顯示FPS為60,CPU耗時0毫秒,GPU耗時1.7毫秒。程序員的目標是將FPS盡可能的達到60,即每幀畫面CPU和GPU耗時Wie16毫秒(1/60)。當FPS的值偏低時,就需要通過上圖查看是CPU的瓶頸還是GPU的瓶頸,進而對其進行性能優化。

當GPU遇到瓶頸時,可以捕獲每幀,來查看渲染的內部流程,方法為在運行過程中,點擊相機圖標獲取當前Frame,如圖7,圖8所示。

            圖7  Frame捕獲按鈕

   

    圖8  捕獲到的當前Frame                                     圖9  狀態信息

此時在當前設備上,可以看到當前捕獲幀的畫面(暫停中),選中左側一行指令,右側會出現對應的Buffers,GPU Objects 和變量,如圖9所示。

如果您的當前畫面中沒有Objects面板,則可以通過點擊show assistant Editor,找到想要顯示的選項,如圖10所示。

                            

      圖10  show assistant Editor                                                                      圖11  設置是否高亮顯示

可以通過右鍵選擇Show/Hide Draw Call Highlight,顯示當前渲染部分為高亮顯示,如圖11所示。

在assistant窗口中選擇Programs選項,選擇其中的Program Object便可查看其對應的shader,如圖12所示。當然可以查看shader中各個方法的耗時情況,進而進行優化,修改之后點擊左下角更新按鈕即可查看修改之后的效果,如圖13所示。

       

         圖12  查看Program Objects                      圖13  shader查看
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM