本章信息:
• pc和手機遊戲區別
• 爲手機遊戲優化代碼
• 經驗之談:處理遊戲固定楨速和不同尺寸適配
• 幾何和紋理動畫簡介
• 使用OpenGL ES 渲染2D畫面
OpenGL ES的出現,使得pc端移植到手機端,成爲可能和easy的事。
porting面臨的問題:
• CPU speed
• GPU speed
• CPU上缺少HW floating pt
• 系統內存的大小和速度
• 存儲空間
CPU方面的建議:
少使用浮點數。必要時使用sine查找表。
內存和存儲能力:
重點:渲染資源、聲音。
使用 壓縮。
使用platform相關的native的紋理壓縮格式。
資源artwork創建
從渲染性能角度出發,用低端機開發,或者不能 性能機器,不能artwork.
資源角度,可以先只畫一套高清的紋理,然後做個工具,針對不同平臺來縮放或改變格式。
GPU運算速度,決定了一楨能渲染多少頂點。
基於Graphics Pipeline的優化
直接影響流暢的一楨可渲染的多邊形的數量。
知道你的數據類型。
儘量使用小的數據類型,減少memory帶寬。如16位或8位的定點數。還有助於減少幾何模型的佔用的存儲空間。
一個頂點用到的數據省幾個字節,數以千計的頂點就會節省很多空間,、
減少頂點傳輸,減少glDrawArrays()/ glDrawElements()調用。增加該方法繪製的頂點數從而減少調用次數,比減少頂點數而調用次數增加,執行速度快很多。
VBO的使用。
只畫你所看到的。
不同遠近,對於一個物體來說,使用不同面的模型:設計師做幾套或用工具導出。
一般三種:特寫鏡頭用的高清、中等距離、很遠距離。
雖然OpenGL ES會不畫屏幕以外的,但傳輸到OpenGL ES本身就損耗性能,所以在屏幕外時,就不要去傳送它到OpenGL ES.
一些排除不可見物體的算法:
group法。
適用第一視角的BSP算法。
用於野外環境的四叉樹、八叉樹。
理清渲染狀態,減少渲染狀態的改變次數,如改變textureID。
以4輛摩托車渲染爲例,優化後,改變渲染狀態的次數,從36,驟減至12 !。
拼大圖,也能減少texture改變的次數。
以固定楨速運行
一般是控制在30fps,即一楨耗時33ms左右。
快的時候,等待。
慢的時候,引入frame_speed的概念,logic x frame_speed,以保持遊戲運行速度一致。
幾何和紋理動畫
幾何動畫:mesh morphing和skeletal animation。
紋理動畫:使用一張拼起來的大圖,變換座標即可。