WebGL 啟動加載觸發更新流程分析
<a target="_blank" href="http://blog.csdn.net/opengl_es">轉載請保留此句:太陽火神的美麗人生 - 本部落格專注于 靈活開發及移動和物聯裝置研究:iOS、Android、Html5、Arduino、pcDuino,否則,出自本部落格的文章拒絕轉載或再轉載,謝謝合作。</a>
requestAnimFrame(tick);
此指令是 HTML5 中新增的用于替換定時器觸發更新的指令,以實作動畫更新,其背景實作有一特殊之處,是将頁面上的動畫進行合并再呈現,提供了很高的執行效率,且當目前頁面标簽離開未展現在螢幕上時,其自動暫停。
不妨試一試,打開一個 html5 的三維示例,展現的過程中,CPU 風扇在幾分鐘後會狂轉不止;但将頁面标簽切換到其它頁面,再過幾分鐘,CPU 風扇明顯降速,發熱也沒那麼大了。
不過還不清楚是 CPU 還是 GPU發熱,如果能找一部桌上型電腦來測試,打開機箱蓋子,摸一下兩者的散熱片溫度前後變化應該就能很清楚了,或者用溫度監測軟體也可以查得到。
moonAngle 和 cubeAngle 是兩個用于視圖模型轉換時使用的視角的變化值,這裡通過動畫更新,使其随時間的流逝,發生一定角度的旋轉,以達到動态更新旋轉的展示目的。
當僅保留 drawScene(); 這一句時,并不會呈現出内容來,而 animate(); 僅用于更新旋轉角度,可以不考慮,那麼 requestAnimFrame(tick); 這一句可能是確定其顯示的一個必要條件;
然而,requestAnimFrame(tick); 在我的了解中,它僅用于觸發執行 tick(); 方法本身,怎麼會有這樣緻命的影響呢?
也許資源的延遲加載,可能需要定時重新整理以達到更新各狀态的最新結果吧。
這是否對于靜态顯示來說,資源消耗過大呢?又或者,我們是否可以以另一種方式,即加載完成觸發的方式來考慮這個問題進行解決呢?
那麼 JS 也許可以有這樣的功能吧!也許 JQuery 對 JS 事件的封裝可能會很好的解決這些問題,有待進一步研究,後文續補。