在WebGLrenderer中使用autoclear和preserveDrawingBuffer

时间:2014-12-03 16:32:09

标签: three.js webgl renderer orbit todataurl

我有一个Three.js场景,我设置了渲染器的preserveDrawingBuffer:true因为我想使用renderer.toDataURL拍摄画布上的内容的快照,我也使用renderer.autoClear = false因为我是使用2个场景,每个场景一个(当然是一个渲染器)。

问题在于,当我使用orbitControls移动相机时,对象不会像它们应该的那样动画,它们之前的状态保留在画布上,并且它们正在创建一个丑陋的绘画(它们没有被删除),因为preserveDrawingBuffer:true设置。

如何同时拥有2个场景/摄像机和轨道控制的快照功能?

谢谢。

1 个答案:

答案 0 :(得分:7)

如果要实例化WebGLRenderer并保留绘图缓冲区,请执行以下操作:

var renderer = new THREE.WebGLRenderer( { preserveDrawingBuffer: true } );

如果你正在设置

renderer.autoClear = false;

你必须在渲染之前调用renderer.clear()

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

three.js r.69