2012-07-30 52 views
2

我有一個頁面http://williame.github.com/Mandel_1,它使用requestAnimationFrame繪製動畫webGL場景。這是generally recommended approachChrome緩慢並且在嚴格繪製webGL時不重繪非webGL

偶爾會更新畫布旁邊的div元素。

在火狐瀏覽器中,雖然Firefox地址欄可能很慢,但它仍可以很好地工作。

在Chrome中,div通常不會被重新繪製,儘管被更新並且整個Chrome可能會變得遲鈍和反應遲鈍。我從Linux和Windows上的人那裏得到這個報告。

此外,FPS I計算(通過定期統計前3秒內有多少幀)與Chrome自己的調試FPS計數器顯示的FPS不匹配。這種差異足以讓我懷疑Chrome是否在測量其他東西?

如何構建我的繪製循環以保持Chrome和其他瀏覽器的響應,同時以儘可能高的幀率進行繪製?

+0

我在Mac上看不到問題,所以如果它只是Linux和Windows,這可能與Mac上尚未啓用的一些合成器更改有關。當我轉到about:flags並啓用線程化合成(我相信這是在Win和Linux上默認啓用的)時,瀏覽器確實變得非常緩慢(儘管很難評估「div通常不會被重新繪製」)。你看到的是同樣的行爲嗎? 這可能是一個錯誤...你應該在http://crbug.com/new/上的Chrome上提交它。你可能會先查找是否有其他人提交了類似的東西。 – 2012-07-31 21:30:08

回答

1

我不確定你的應用中發生了什麼,但它看起來像每次插入一個div時,你也在編譯和鏈接4個着色器並檢查是否成功。編譯和鏈接很慢。

嘗試在啓動時編譯和鏈接所有程序。或者相反,如果你100%確定他們會編譯和鏈接,那麼不檢查編譯和鏈接狀態,在這種情況下,他們的編譯和鏈接將相對於JavaScript是100%異步。