threejs canvas todataurl为空

San*_*ddi 4 html5 canvas webgl three.js todataurl

好的,我知道canvas.toDataUrl()会生成png格式的图像。但是,当我尝试从http://threejs.org/examples/#webgl_lines_sphere获取图像时。我所看到的只是镀铬的黑色图像。复制步骤-

1)打开开发者控制台,然后选择canvas元素。2)canvas = $0 3)context = canvas.getContext('webgl', {preserveDrawingBuffer: true}) 4)img = canvas.toDataUrl() 5)document.write('<img src="'+img+'"/>')

图像为空白。但是,我尝试使用链接http://threejs.org/examples/#canvas_geometry_cube上的其他画布。请执行以下步骤进行复制。

1)打开开发者控制台,然后选择canvas元素。2)canvas = $0 3)context = canvas.getContext('2d', {preserveDrawingBuffer: true}) 4)img = canvas.toDataUrl() 5)document.write('<img src="'+img+'"/>')

这给出了预期的结果。为什么会有区别?又如何避免获取第一张图片?

小智 6

我也得到了稳定的黑色图像。

我的代码以前是:

this.renderer = new THREE.WebGLRenderer({premultipliedAlpha: false});
Run Code Online (Sandbox Code Playgroud)

我已将中的参数更改THREE.WebGLRenderer为:

this.renderer = new THREE.WebGLRenderer({preserveDrawingBuffer: true});
Run Code Online (Sandbox Code Playgroud)

我正在拍摄快照。

希望能帮助到你。


Kai*_*ido 0

这是因为第一个示例(参见源代码第 103 行)确实使用了THREE.WebGLRenderer创建者,而第二个示例(参见源代码第 92 行)使用了THREE.CanvasRenderer.

一些注意事项: