Bạn sẽ có thể làm điều gì đó như thế này về trình kết xuất đã được khởi tạo và giả sử tất nhiên biến mà bạn đã lưu trình kết xuất vào được đặt tên là 'trình kết xuất'.
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 không được định nghĩa bởi Three.JS và nó không phải là phương pháp chuẩn tại thời điểm này. Bạn có thể mô phỏng nó bằng cách làm như sau.
tải kịch bản này trước khi Three.js
https://github.com/vorg/webgl-debug
Sau đó, sau khi bạn đã bắt đầu renderer của bạn, bạn có thể treo các loseContext vào khung.
renderer.context.canvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderer.context.canvas);
Để kích hoạt LossContext, bạn sẽ thực hiện việc này.
renderer.context.canvas.loseContext();
Và sau đó bạn cũng có thể bị lỗi sau khi thực hiện một số cuộc gọi bằng cách thực hiện việc này.
renderer.context.canvas.loseContextInNCalls(5);
Nguồn
2013-01-28 19:00:38
Bạn có thể vui lòng cho tôi biết bạn sẽ làm điều này như thế nào nếu bạn không sử dụng Three.js. Nói cách khác, nếu bạn đang sử dụng API WebGL thô. Cảm ơn bạn. – HartleySan
phương thức nonjjs https://www.khronos.org/webgl/wiki/HandlingContextLost – mattdlockyer
Trong khi sử dụng 'webgl-debug.js' với ThreeJS, tôi thấy rằng tôi phải gọi thủ công' renderer.context.canvas.getContext (" webgl ");' trước khi sử dụng 'renderer.context.canvas.loseContext();' – sweeds