在爲我正在處理的iPhone/iPad的小型項目進行一些測試時,我觀察到在使用GL_LINES使用glDrawElements繪製線框時存在很大的CPU性能損失。帶GL_LINES的glDrawElements強制gleRunVertexSubmitARM? (或:爲什麼繪製線框在iOS上很慢?)
這是情景:
- 640個頂點(4個浮點的位置,3周的float法線,沒有對齊的問題......都在4個字節邊界)
- 3840指數(無符號短)的模型
- 兩個頂點和索引使用維也納組織(無VAO)
- 與GL_TRIANGLES glDrawElements繪製上述優良樣板工程
然後:
- 640個頂點
- 2560指數
- 維也納組織和無VAO
- 同型號與GL_LINES glDrawElements繪製觸發連續通話gleRunVertexSubmitARM,CPU使用率天空火箭...
在這兩種情況下,模型看起來像預期的一樣,沒有附近的glErrors ...
看來問題是依賴於設備的。我在iPhone 3GS和iPhone 4上體驗它,而不是在iPad 2上,也不在模擬器上。 在iPad 2幀時間CPU = 1ms且未調用gleRunVertexSubmitARM時,iPhone 4幀時間CPU = 12ms,並連續調用gleRunVertexSubmitARM。
任何人都可以解釋這種行爲或指出我可能犯的錯誤嗎?
任何有識之士高度讚賞。 由於提前,
弗朗西斯