我想创建一个场景快照,但是当我启用保留rawingbuffer = true时,perfermance是低的,所以我会制作一个按钮,当我单击按钮时,我创建一个我创建一个新渲染器如下:
$("#shot").click(function() {
renderer = new THREE.WebGLRenderer({
antialias: true,
preserveDrawingBuffer: true
})
new TWEEN.Tween(camera.position).to({
x: 0,
y: 400,
z: 1700
}, 1000).start();
setTimeout(function() {
var pic = renderer.domElement.toDataURL('image/jpeg');
console.log(pic);
}, 1100)
});
但这引起了一个新问题,渲染和动画被停止了,代码有什么问题?为什么我不能创建一个新的渲染器?
您需要将renderer.domeElement
附加到您的文档中,以便可见。
您无需设置preserveDrawingBuffer: true
即可获得快照。您只需要在渲染之后拍摄快照和退出当前事件。
renderer.render(scene, camera);
const pic = renderer.domElement.toDataURL('image/jpeg');
请参阅此答案:https://stackoverflow.com/a/30647502/128511