【发布时间】:2015-08-18 03:12:14
【问题描述】:
基本上,我想要的设置是preserveDrawingBuffer=true,渲染一次场景,抓取屏幕截图,然后返回。然而,这带来了两个问题:
- 渲染器中没有处理所有缓冲区的方法,
-
如果我这样做,画布会变黑
renderer = new THREE.WebGLRenderer({canvas:renderer.domElement,preserveDrawingBuffer:true});
我该如何正确地做到这一点?
编辑:我没有找到切换它的方法,所以我不得不克隆场景并创建第二个渲染器来制作屏幕截图。见https://github.com/mrdoob/three.js/issues/189
【问题讨论】:
-
为什么要切换它?
-
正如 gaitat 所问,为什么需要切换它?您不需要 preserveDrawingBuffer=true 来抓取屏幕截图。
-
preserveDrawingBuffer=true 会导致某些机器上的渲染错误,preserveDrawingBuffer=false 会使屏幕截图全黑
-
我相信@gman 是正确的。将
preserveDrawingBuffer设置为false,尝试立即重新渲染,如下所示:renderer.render( scene, camera ); var dataUrl = renderer.domElement.toDataURL( "image/jpeg" );
标签: javascript three.js