Three.jsで失われたコンテキストイベントを処理したいと思います。ここにそれについての素晴らしいドキュメントがありますが、残念ながら、それを自分のに適用すると機能しませんrenderer.domElement
。クリックしてコンテキストを失おうとしましたが、の一部の変数loseContext()
が未定義です。
Three.jsでは構造が違うと思います。専門家はいますか?
レンダラーが初期化され、もちろん、レンダラーを格納した変数の名前が「レンダラー」であると仮定すると、このようなことができるはずです。
renderer.context.canvas.addEventListener("webglcontextlost", function(event) {
event.preventDefault();
// animationID would have been set by your call to requestAnimationFrame
cancelAnimationFrame(animationID);
}, false);
renderer.context.canvas.addEventListener("webglcontextrestored", function(event) {
// Do something
}, false);
ところで-loseContextはThree.JSによって定義されておらず、現時点では標準的なメソッドではありません。次のようにしてシミュレートできます。
Three.JSの前にこのスクリプトをロードします
https://github.com/vorg/webgl-debug
次に、レンダラーを開始した後、loseContextをキャンバスにフックできます。
renderer.context.canvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderer.context.canvas);
lostContextをトリガーするには、これを行います。
renderer.context.canvas.loseContext();
また、これを行うことで、設定された回数の呼び出しの後で失敗させることもできます。
renderer.context.canvas.loseContextInNCalls(5);