我們有一個相當豐富的three.js應用程序,它使用了很多材質,場景,渲染緩衝區等。我們只能刷新/重新啓動它幾次它會在幾個問題之一上失敗;所有這些都等於耗盡WebGL資源。如何在頁面刷新時清理three.js(或WebGL)
我在window.onbeforeunload上添加了一個清理例程,它在支持它的對象上調用dispose()方法;材料,渲染緩衝區和幾何圖形。我不相信我抓到了所有的資源;但似乎已經足夠,因爲我已經能夠每五秒刷新半小時。
的問題是: [1]什麼是觸發這種清理的最佳方法? window.onbeforeunload似乎相當有效,但也許有理由選擇一些替代方案?
[2] 執行這種清理的最佳方式是什麼?在清理所有WebGL資源的渲染器上配置一個配置會很好。 (我不關心javascript對象,因爲瀏覽器似乎很清楚這些對象。)
我在這裏看到過相關的問題;例如清理場景,但我對完整的清理感興趣。我猜在較低的WebGL級別上的任何答案都可以用於全局清理;這可能不僅僅只是一些three.js資源,因爲它無法解決這些小型清理的範圍。
好點,謝謝。我會在不同的瀏覽器上進行測試(問題出在Chrome上),並嘗試製作一個簡單的頁面來說明錯誤,最好不要使用three.js來儘可能簡單。 –
http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/ – Hobbes