javascript - WebGL & Three.js - 在两个渲染器中连续渲染一个场景

标签 javascript three.js webgl

我试图在两个不同的渲染器中渲染一个场景(不同时连续渲染),但它会导致错误“GL_INVALID_OPERATION”。

这是一个示例脚本:

var scene1   = new THREE.Scene();
var camera1  = new THREE.PerspectiveCamera( ... );
var renderer1= new THREE.WebGLRenderer( ... );

var renderer2= new THREE.WebGLRenderer( ... );
var camera2  = new THREE.PerspectiveCamera( ... );

//Render scene1 in renderer1
renderer1.render( scene1, camera1 );

//[After some user event...]
//Render scene1 in renderer2
renderer2.render( scene1, camera2 );  //This fails. getError()=1282 (i.e. GL_INVALID_OPERATION)

我知道经常不赞成在两个不同的渲染器中渲染一个场景,即使不是同时渲染,但我想不出其他方法来解决我的问题,因为它是一个非常大的项目的一部分。

我知道有与 scene1 相关联的 GL 数据链接到 renderer1 但我如何删除这些数据以便我可以在另一个渲染器中再次渲染 scene1 ???

请注意,我并没有尝试同时在两个渲染器中渲染场景(这与 https://github.com/mrdoob/three.js/issues/189 不同)。

感谢您的帮助。 问候。

最佳答案

该问题与绑定(bind)到特定 OpenGL 缓冲区的对象/ Material /纹理有关。因此,解决方案是在将要从特定场景中删除的对象的所有子对象从任何缓冲区中解除绑定(bind),然后再将其添加到其他场景。

我会尽快发布我的解决方案的代码。 问候。

关于javascript - WebGL & Three.js - 在两个渲染器中连续渲染一个场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564280/

相关文章:

javascript - 尝试理解 Hive Plot 的 D3 代码

javascript - "Last domain does not have enough data columns"为 Google Charts 组合烛台图和折线图

javascript - 从 node.js 中的平面数组构建树数组

javascript - Rails - 如何向使用 javascript 创建的表单添加 CSRF 保护?

javascript - Three.js OrbitControls 跟随鼠标指针

json - blender 为three.js导出json

javascript - 如何旋转 WebGL 曲面分割中的各个三 Angular 形?

javascript - Three.js:加载适当的模型比例/大小

macos - 如何更简洁地从命令行启动带有标志的Chrome?

JavaScript 图像仅在刷新时加载