three.js - 我们如何在Three.js中处理WebGL上下文丢失事件

标签 three.js webgl

我想在Three.js中处理丢失的上下文事件。有一个关于here的不错的文档,但是不幸的是,当我将其应用于renderer.domElement时,它不起作用。我尝试通过单击来丢失上下文,并且loseContext()中的某些变量未定义。

我猜在Three.js中,结构是不同的。有专家吗?

最佳答案

您应该能够对渲染器进行这样的初始化,并且当然假设您将渲染器存储到的变量名为“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);

顺便说一句-Three.JS尚未定义LostContext,目前还不是标准方法。您可以通过执行以下操作来模拟它。

在Three.JS之前加载此脚本

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

然后,在启动渲染器之后,您可以将LosContext挂接到 Canvas 上。
renderer.context.canvas = WebGLDebugUtils.makeLostContextSimulatingCanvas(renderer.context.canvas);

要触发lostContext,您可以执行此操作。
renderer.context.canvas.loseContext();

然后,您也可以通过设置一定数量的调用使其失败。
renderer.context.canvas.loseContextInNCalls(5);

关于three.js - 我们如何在Three.js中处理WebGL上下文丢失事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14350350/

相关文章:

javascript - 如何在 iOS 中创建 WebGL 2 渲染器?

html - 3D实体文件层到three.js json

javascript - Three.js 使用 Ray 检测 2 个移动物体之间的碰撞

javascript - 在webGL中用.jpg图像覆盖矩形

javascript - 如何在 x3dom 中更改 3d 文本的斜 Angular 大小?

javascript - 如何使用 Three.js 拖放 Object3D 元素?

javascript - 有没有办法等待 THREE.TextureLoader.load() 完成?

opengl-es - 一般而言,WebGL/OpenGL 中属性的重要用例是什么?

opengl - 读取当前帧缓冲区

javascript - Three.js - 在单个 PointCloud 中使用多个纹理