我正在使用模板缓冲区将两个 THREE.js 场景相互合成。这可行,但是当我尝试使用 PointerLockControls 时,移动相机(使用鼠标或键盘)以某种方式导致视图的模板部分被移动/移动。它似乎落后于相机位置。
我尝试过其他控件(轨迹球、轨道),使用这些控件时不会出现此问题。
有些东西似乎在发生冲突,但我不知道在哪里看。
PointerLock 代码直接从示例中复制而来。
这是渲染代码:
// 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/
如果你从左向右移动,或者只是环顾四周,这种变化是非常明显的。
任何帮助将不胜感激。