9

Three.jsで失われたコンテキストイベントを処理したいと思います。ここにそれについての素晴らしいドキュメントがありますが、残念ながら、それを自分のに適用すると機能しませんrenderer.domElement。クリックしてコンテキストを失おうとしましたが、の一部の変数loseContext()が未定義です。

Three.jsでは構造が違うと思います。専門家はいますか?

4

1 に答える 1

10

レンダラーが初期化され、もちろん、レンダラーを格納した変数の名前が「レンダラー」であると仮定すると、このようなことができるはずです。

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);
于 2013-01-28T19:00:38.803 に答える