當前位置:編程學習大全網 - 源碼下載 - 基於視錐體(平截體)的OpenGL ES性能優化

基於視錐體(平截體)的OpenGL ES性能優化

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的部分沒有引入新的技術點。

工作原因,以後更新會慢壹些。能看到這裏,妳也是喜歡技術的,謝謝支持。來壹波關註和喜歡如何 -> 我會加油更新。

附上 源碼

  • 上一篇:什麽是手機多用戶模式(如何設置oppo多用戶模式)
  • 下一篇:建行信用卡分期付款是從申請當月就開始還是次月
  • copyright 2024編程學習大全網