2012-02-13 65 views
-1

我正在iOS上開發2D遊戲,但我發現很難讓繪圖快速運行(在Retina顯示屏上爲60 FPS)。什麼是iOS上最快的繪圖方法?

我已經第一次使用UIKit進行繪圖,這當然不適合遊戲。我沒有放慢速度,也沒有畫出幾個精靈。

然後,我轉向OpenGL,因爲我讀到它是最接近GPU(我認爲這意味着它是最快的)。我正在使用glDrawArrays()。當我在模擬器上運行它時,當我達到200多個三角形時,FPS下降了。人們說這是因爲模擬器或電腦沒有優化來運行iOS OpenGL。然後我在真實的設備上測試了它,而令我驚訝的是,性能差異非常小。它仍然無法順利運行那幾個三角形 - 而且我知道iOS上的其他遊戲使用更多的多邊形,着色器,3D圖形等。

當我通過Instruments檢查OpenGL性能時,它告訴我我可以通過使用維也納國際組織加速。所以我重寫我的代碼來使用VBO,而不是每幀更新所有頂點。性能增加很少,而且我仍然不能以一致的60 FPS超過200個三角形。這就是沒有上下文更改/轉換的2D繪圖。我還沒有寫遊戲 - 沒有任何對象沒有執行CPU密集型任務。

我問的每個人都說OpenGL是最高性能。我可能會做錯什麼?我假設OpenGL可以處理每幀更新的多邊形的LOTS - 是嗎?其他遊戲使用哪種方法,我看它們運行良好,就像3D無盡之劍,甚至有許多不斷更新的精靈的憤怒的小鳥?製作遊戲時推薦什麼?

回答

1

OpenGL肯定會成爲您最快的選擇。即使在最古老的iOS設備上,您也可以以30+ fps的速度運行約20000多個多邊形。

聽起來像你一定是做錯了什麼或額外的。如果沒有看到源代碼,就無法猜測可能會發生什麼。

一般來說,雖然你想確保你創建你的VBO,並且你的繪圖管道之外的所有加載。

+0

加載只在遊戲開始時完成,我只使用很少的狀態改變調用。但是當你說繪圖管道時我不明白......我的意思是,我必須每幀都更新頂點,而且每一幀都會出現繪圖,我認爲這兩個發生在「相同」時間。我怎樣才能將它們分開?我正在嘗試時間分析我的代碼,但我不完全瞭解儀器上發生了什麼...... – HLorenzi 2012-02-14 11:30:13

+1

繪圖管道是您的繪圖循環。沒有看到你在做什麼,我無法幫助你。我仍然懷疑你必須在你的繪圖循環中做一些你不應該做的事情。 – 2012-02-14 17:57:15

相關問題