我現在想了很長一段時間來優化我的遊戲幀率,而沒有真正取得進展。我正在運行最新的iPhone SDK並擁有iPhone 3G 3.1.2設備。iPhone的openGLES性能調整
我調用角落找尋150 drawcalls,總共渲染約1900三角形(所有對象都使用兩個texturelayers和多紋理紋理化。最紋理來自存儲在PVRTC 2bpp壓縮紋理相同textureAtlasTexture)。 這使我的手機呈現在30 fps的周圍,這對我來說似乎太低了,只有1900個三角形。
我嘗試了很多事情來優化性能,包括將對象組合在一起,轉換CPU上的頂點並將它們渲染成單個drawcall。這個字節8個drawcalls(作爲oposed到150 drawcalls),但性能差不多(fps下降到大約26fps)
我使用存儲在交錯數組中的32byte頂點(12bytes位置,12bytes normals,8bytes uv) 。我正在渲染triangleLists,頂點按TriStrip順序排列。
我做了一些分析,但我不知道如何解釋它。
儀器採樣 使用儀器和採樣yelds這樣的結果: http://neo.cycovery.com/instruments_sampling.gif 告訴我說了很多時間在「mach_msg_trap」是花。我搜索了它,似乎這個函數被稱爲等待一些其他的東西。但等待什麼?
儀器的OpenGL 儀器符合OpenGL模塊yelds這樣的結果: http://neo.cycovery.com/intstruments_openglES_debug.gif 但在這裏,我真的不知道這些數字告訴我
鯊魚分析: 與鯊魚卻沒有告訴剖析我不到多少: http://neo.cycovery.com/shark_profile_release.gif 數量最多爲10%,由DrawTriangles花 - 和所有的剩餘在非常小的比例的功能花了
任何人都可以告訴我還有什麼可以做的,以找出瓶頸,並可以幫助我解釋這些分析信息?
非常感謝!