three.js:立方体贴图和renderer.autoclear = false

3

我有两个场景需要分别渲染并叠加在一起,所以将renderer.autoClear设置为false。在渲染循环中,我使用renderer.clear(),一切都很好:

// This works fine!
renderer.clear();
renderer.render( bgScene, bgCamera )
renderer.clearDepth();
renderer.render( scene, camera );

不过,我现在已经在场景中添加了一个立方体相机,以便制作反射对象。不幸的是,将 renderer.autoClear 设置为 false 会导致问题,当周围环境改变时,反射对象的纹理不会清除,从而导致典型的“绘画”效果:

// Causes "painting" effect
cubeCamera.updateCubeMap( renderer, scene );

这里是一个简化的示例,复制了问题。我没有包含两个场景,以保持简单。我知道这可能实际上是库中的一个错误,如果是这种情况,我将在存储库中发布它。

https://jsfiddle.net/pqoz74rf/4/

1个回答

1
问题由伟大的WestLangley在github上解决。更新立方体贴图时必须开启自动清除,但可以在渲染的其他部分再次关闭。
renderer.autoClear = true;
cubeCamera.updateCubeMap( renderer, scene );

renderer.render( bgScene, bgCamera )
renderer.autoClear = false;

renderer.clearDepth();
renderer.render( scene, camera );

更新的代码片段:https://jsfiddle.net/pqoz74rf/6/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接