OpenGLES入門教程1-Tutorial01-GLKit
OpenGLES入門教程2-Tutorial02-shader入門
OpenGLES入門教程3-Tutorial03-三維變換
OpenGLES入門教程4-Tutorial04-GLKit進階
OpenGLES進階教程1-Tutorial05-地球月亮
OpenGLES進階教程2-Tutorial06-光線
OpenGLES進階教程3-Tutorial07-粒子效果
OpenGLES進階教程4-Tutorial08-幀緩存
OpenGLES進階教程5-Tutorial09-碰碰車
這壹次的是性能優化。
渲染的優化不是僅僅提高渲染的速度,超過60Hz的渲染速度沒有任何意義,用戶永遠看不到這些信息。同時在考慮用電消耗的情況下,30Hz的刷新率能延長電池的使用時間。
以下的渲染優化策略總是管用的:
通過減少渲染的幾何對象,在不影響顯示效果的前提下,盡可能減少需要繪制的圖元。
在壹個場景中,很多物體是處於平截體外部,這些物體是用戶永遠看不到的對象。
計算眼睛到當前測試點的向量,提取這個向量關於平截體X、Y、Z軸的分量,分別進行判斷。
測試球體會測試點更復雜,同樣是對比X/Y/Z軸分量,在判斷的範圍加上半徑的距離。
但是,考慮下面的情況
如下圖,考慮球體被外切情況,得出相應的放大因子。
為什麽FPS會在20FPS和30FPS之間擺動?
繪制 和 顯示 並不壹樣。
通過CADisplayLink(hardware generated),繪制的速率可能是60FPS。
如果繪制的時間超過1/60s,理論上幀率最多為30FPS。
想象壹條1s的線段,分隔成60小段,每個小段的起點都可以作為繪制的起點。
如果繪制的時間超過1/60s,那麽繪制的終點會延伸到第二個小段。
這樣,壹條1s的線段,最多有30個繪制的時間段。
妳能得到FPS,但是它不代表真正的性能,每幀持續時間是壹個更佳選擇。FPS不能線性評判性能表現。
最後, 即使妳自己通過自定義線程(不采用CADisplayLink),把繪制時間的空缺填補,實際上繪制的速率並不會變快 。
主要講解的是數學部分的知識,OpenGL ES的部分沒有引入新的技術點。
工作原因,以後更新會慢壹些。能看到這裏,妳也是喜歡技術的,謝謝支持。來壹波關註和喜歡如何 -> 我會加油更新。
附上 源碼