我一直在嘗試執行一些OpenGL ES性能優化,試圖增加我能夠在iPhone應用程序中呈現的每秒三角形數量,但是我碰到了一堵磚牆。我已經嘗試將我的OpenGL ES數據類型從固定值轉換爲浮點值(根據Apple's recommendation),交錯我的頂點緩衝區對象,並儘量減少繪圖狀態的變化,但這些變化都沒有改變渲染速度。無論如何,我似乎無法在運行3.0操作系統的iPhone 3G上將我的應用程序推到32萬個三角形以上。根據this benchmark,我應該能夠在這個硬件上打出687,000個三角形/ s,並使用我正在使用的平滑着色。在我的測試中,當我在Instruments中運行OpenGL ES性能工具以對抗運行設備時,我看到統計「Tiler Utilization」在渲染我的基準測試時達到近100%,但「Renderer Utilization」僅爲達到約30%。這可能提供了顯示過程中瓶頸的線索,但我不知道這些值是什麼意思,並且我沒有找到任何文檔。有人能夠很好地描述iPhone OpenGL ES儀器中的這些數據和其他統計數據嗎?我知道iPhone 3G中的PowerVR MBX Lite是tile-based deferred renderer,但我不確定該架構中的Renderer和Tiler之間會有什麼不同。Tiler Utilization統計在iPhone OpenGL ES儀器中的含義是什麼?
如果它有任何幫助,(BSD許可的)源代碼到這個應用程序is available如果你想自己下載和測試它。在當前的配置中,每次載入新的分子結構並輸出三角形到控制檯時,它都會啓動一個基準測試。
你的三角形有多大?我認爲其中的一個統計數據更多的是關於#個像素,另一個關於三角形的數量。如果縮小屏幕以減少屏幕填充,相對利用率數字是否會發生變化? – 2009-08-17 12:59:12
這取決於我加載的模型,但它們往往很小。無論模型的縮放級別如何,數字似乎都保持不變。另外,我嘗試將OpenGL視圖大小降低到現在的一半,但沒有效果,似乎排除了填充率限制。 – 2009-08-17 14:24:08