2013-01-16 14 views
6

Chcę obsłużyć utracone zdarzenie kontekstowe w Three.js. Jest dobra dokumentacja dotycząca tego here, ale niestety to nie działa, gdy aplikuję ją do mojego renderer.domElement. Próbuję utracić kontekst, klikając i niektóre zmienne w loseContext() są niezdefiniowane.Jak radzić sobie z utraconym kontekstem webgl w Three.js

Domyślam się, że struktura jest inna w Three.js. Każdy ekspert?

Odpowiedz

7

Powinieneś być w stanie zrobić coś takiego na temat renderera, który został zainicjowany i zakładając oczywiście, że zmienna, w której zapisałeś renderer, nazywa się "renderer".

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 - lostContext nie jest zdefiniowany przez Three.JS i nie jest standardową metodą od tego czasu. Możesz go symulować, wykonując następujące czynności.

obciążenia skrypt przed Three.js

https://github.com/vorg/webgl-debug

Następnie po tym, jak zaczął swoją renderujący można zaczepić loseContext na płótnie.

renderer.context.canvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderer.context.canvas); 

Aby wywołać metodę lostContext, należy to zrobić.

renderer.context.canvas.loseContext(); 

Można również ustawić opcję niepowodzenia po określonej liczbie wywołań.

renderer.context.canvas.loseContextInNCalls(5); 
+0

Czy możesz mi powiedzieć, jak byś to zrobił, jeśli nie używasz Three.js. Innymi słowy, jeśli używasz surowego API WebGL. Dziękuję Ci. – HartleySan

+1

metoda non threejs https://www.khronos.org/webgl/wiki/HandlingContextLost – mattdlockyer

+0

Podczas używania 'webgl-debug.js' z ThreeJS, stwierdziłem, że musiałem ręcznie wywołać' renderer.context.canvas.getContext (" webgl ");' przed użyciem 'renderer.context.canvas.loseContext();' – sweeds

Powiązane problemy