我正在使用模板缓冲区将两个THREE.js场景相互合成。这很有效,但是当我尝试使用PointerLockControls时,移动相机(使用鼠标或键盘)会以某种方式移动/移动视图的模板部分。它似乎落后于相机位置。
我尝试过其他控件(轨迹球,轨道),使用它们时不会出现此问题。
似乎有些冲突,但我不知道在哪里看。
PointerLock代码直接从examples复制。
这是渲染代码:
// 1: clear scene (autoClear is disabled)
renderer.clear(true, true, true);
// 2: draw portal mesh into stencil buffer
gl.colorMask(false, false, false, false);
gl.depthMask(false);
gl.enable(gl.STENCIL_TEST);
gl.stencilMask(0xFF);
gl.stencilFunc(gl.NEVER, 0, 0xFF);
gl.stencilOp(gl.INCR, gl.KEEP, gl.KEEP);
renderer.render(stencilScene, camera);
gl.colorMask(true, true, true, true);
gl.depthMask(true);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
// 3: draw toScene on scencil
renderer.clear(false, true, false);
gl.stencilFunc(gl.LESS, 0, 0xff);
renderer.render(toScene, camera);
gl.disable(gl.STENCIL_TEST);
renderer.clear(false, false, true);
// clear the depth buffer and draw the fromPortal mesh into it
renderer.clear(false, true, false);
gl.colorMask(false, false, false, false);
gl.depthMask(true);
renderer.render(stencilScene, camera);
// draw the actual scene
gl.colorMask(true, true, true, true);
gl.depthMask(false); // gl.enable(gl.DEPTH_TEST) ?
renderer.render(fromScene, camera);
这是一个小提琴:http://jsfiddle.net/g8EWG/
如果你从左向右移动,或者只是环顾四周,那么转变是非常明显的。
非常感谢任何帮助。