Three.jsで失われたコンテキストイベントを処理したいと思います。そのhereについて素敵なドキュメントがありますが、残念ながら私がrenderer.domElement
にそれを適用すると動作しません。私はクリックしてコンテキストを失うことを試み、loseContext()
の変数は未定義です。Three.jsでwebglコンテキストが失われたイベントを処理するには
Three.jsの構造が異なると思います。どんな専門家?
Three.jsで失われたコンテキストイベントを処理したいと思います。そのhereについて素敵なドキュメントがありますが、残念ながら私がrenderer.domElement
にそれを適用すると動作しません。私はクリックしてコンテキストを失うことを試み、loseContext()
の変数は未定義です。Three.jsでwebglコンテキストが失われたイベントを処理するには
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);
BTW-loseContextはThree.JSによって定義されておらず、この時点では標準的な方法ではありません。次のようにしてシミュレーションすることができます。
ロードこのスクリプトを、あなたのレンダラを開始した後Three.JS
https://github.com/vorg/webgl-debug
が次にあなたがキャンバスにloseContextをフックすることができます前に。
renderer.context.canvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderer.context.canvas);
loseContextをトリガーするには、これを行います。
renderer.context.canvas.loseContext();
また、これを行うことで、設定した回数の呼び出し後に失敗することもあります。
renderer.context.canvas.loseContextInNCalls(5);
あなたはThree.jsを使用していない場合、どうすればいいか教えてください。つまり、生のWebGL APIを使用している場合です。ありがとうございました。 – HartleySan
non threejsメソッドhttps://www.khronos.org/webgl/wiki/HandlingContextLost – mattdlockyer
ThreeJSで 'webgl-debug.js'を使用しているときに、私は手動で' renderer.context.canvas.getContext( " webgl ");' renderer.context.canvas.loseContext(); 'を使用する前に – sweeds