webgl canvas的toDataURL()返回透明图像

Chr*_*dal 5 javascript html5 canvas webgl

我无法使用toDataUrl()。这是我尝试获取画布图像并将其用作现有图像元素来源的代码。

var canvas = document.getElementById('glcanvas');
canvas.setAttribute('crossOrigin','anonymous');
var img = document.getElementById('imageToShowCanvas');
img.src = canvas.toDataURL();
Run Code Online (Sandbox Code Playgroud)

imageToShowCanvas显示的是一个损坏的URL。当我console.log调用toDataUrl()的结果时,我得到一个链接,该链接显示具有画布高度和宽度的透明图像。

我听说过cors问题会导致此类问题,但我正在将chrome与–allow-file-access-from-files标志一起使用,并且控制台中没有任何安全性错误。有没有更简单的方法来获取我的webGl画布的屏幕截图?

Chr*_*dal 5

谢谢LJ,我只需要在获取webGl上下文时启用prepareDrawingBuffer标志。屏幕截图现在可以完美运行了!

  • 真好!另外,如果您使用的是THREE.js,则可以将标志添加到渲染中,如下所示:new THREE.WebGLRenderer({preserveDrawingBuffer:true}); (2认同)