我已經有了一個WebGL場景,並且我可以使用一組參數來平衡渲染質量和速度。只要幀速率沒有降低到某個閾值以下,我就會盡可能提高質量,從而向用戶展示場景。爲了實現這一點,我必須以某種方式測量「當前」幀速率以響應質量變化。測量渲染時間
但是,只要用戶不與其交互(如使用鼠標旋轉相機),場景就是靜態的。即使沒有任何變化,我也不想讓循環重新渲染同一場景。如果場景停止移動,我想停止渲染。這意味着我不能簡單地平均連續幀之間的時間,因爲我無法區分呈現器緩慢和用戶只是更慢地移動鼠標。
我想過在啓動時多次渲染場景,並從中判斷幀速率。但是由於場景的一部分可以從當前相機位置看到,或者由於用戶在畫布外進行交互,場景的複雜性可能會隨時間而改變。所以當場景改變時,我必須調整質量。在每次鼠標釋放之後運行校準循環可能是一種選擇。
我也想過使用finish
而不是flush
調用來準確測量渲染時間。但是當我等待GL完成渲染時,我的應用程序基本上無響應,特別是無法排隊鼠標事件。由於我設想渲染理想地在兩幀之間以目標閾值幀速率佔據所有時間,所以這可能是相當糟糕的。我只能在某些場合使用finish
而不是flush
,就像在鼠標釋放之後一樣。
什麼是在WebGL應用程序中實現所需幀速率或定期測量渲染時間的最佳方法?
僅供參考:[完成只是在chrome中刷新](http://stackoverflow.com/a/20810521/128511)。 – gman 2015-03-14 08:12:23
@gman:有一個想法...非常感謝那篇文章! – MvG 2015-03-14 14:34:02