かなりの数のマテリアル、シーン、レンダー バッファーなどを使用するかなり大規模な three.js アプリケーションがあります。数回しか更新/再起動できず、いくつかの問題のうちの 1 つで失敗します。そのすべてが WebGL リソースの不足につながりました。
window.onbeforeunload にクリーンアップ ルーチンを追加しました。これは、それをサポートするオブジェクトで dispose() メソッドを呼び出します。マテリアル、renderBuffers、およびジオメトリ。すべてのリソースを取得したとは確信していません。でも、30 分間は 5 秒ごとにリフレッシュできたので、それで十分だったようです。
質問は次のとおりです。[1]そのようなクリーンアップをトリガーする最良の方法は何ですか? window.onbeforeunload は非常に効果的だと思われますが、代替手段を選択する理由があるのでしょうか?
[2]そのようなクリーンアップを実行する最良の方法は何ですか? すべての WebGL リソースをクリーンアップするレンダラーを破棄するとよいでしょう。(ブラウザはそれらをクリーンアップできるように見えるので、javascript オブジェクトについては心配していません。)
ここで関連する質問を見てきました。たとえば、シーンのクリーンアップですが、完全なクリーンアップに興味があります。下位の WebGL レベルでの回答は、このグローバル クリーンアップでも機能すると思います。これらの小さなクリーンアップの範囲を理解できないため、一部の three.js リソースだけではない可能性があります。