Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js canvas.toDataURL()是否已损坏?_Javascript_Three.js_Html5 Canvas_Chromium_Archlinux - Fatal编程技术网

Javascript Three.js canvas.toDataURL()是否已损坏?

Javascript Three.js canvas.toDataURL()是否已损坏?,javascript,three.js,html5-canvas,chromium,archlinux,Javascript,Three.js,Html5 Canvas,Chromium,Archlinux,我在一段时间前进行了系统升级,之后我开始注意到Chromium的一些问题。其中一个问题是在我的Three.js r85项目开始加载之前,铬挂起几秒钟。我已经升级到Three.js r90,这个问题消失了 但是,即使使用最新版本的Three.js,toDataUrl()似乎也不再有效。以下是与我自己的代码类似的代码,在Firefox中运行良好,但在Chromium中不起作用: renderer = new THREE.WebGLRenderer({ preserveDrawingBuffer: t

我在一段时间前进行了系统升级,之后我开始注意到Chromium的一些问题。其中一个问题是在我的Three.js r85项目开始加载之前,铬挂起几秒钟。我已经升级到Three.js r90,这个问题消失了

但是,即使使用最新版本的Three.js,toDataUrl()似乎也不再有效。以下是与我自己的代码类似的代码,在Firefox中运行良好,但在Chromium中不起作用:

renderer = new THREE.WebGLRenderer({ preserveDrawingBuffer: true });
我也尝试过不将
preserveDrawingBuffer
设置为true,并在调用渲染场景后立即调用toDataUrl()。它也不再工作了

renderer.render( scene, camera );
var screenshot = renderer.domElement.toDataURL();
还有其他人经历过这种行为吗?除了使用toDataUrl()将纹理渲染到图像上,还有其他方法吗


Chrome版本65.0.3325.146(开发者版本)(64位)

Chrome还可以,但是您应该使用代理画布来保存注释中提到的图像

let canvas = document.createElement('canvas');
canvas.width = 512;
canvas.height = 512;
let canvasCtxt = canvas.getContext('2d');
canvasCtxt.drawImage(editor.renderer.domElement, 0, 0, canvas.width, canvas.height);

canvas.toBlob(function(blob){
    blob.name = 'test.png';
    var link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.download = 'test.png';
    link.click();
});

FWIW,在osx上使用Chrome(到金丝雀)。作为一种盲射和无铬测试,您确定没有安全/指纹保护插件/设置吗?你有一个2d上下文的结果吗?在osx上的Chrome上试用过,它在那里也有效。@Kaido它在Windows上的Chrome上对我也有效。我尝试禁用所有扩展。2D上下文是有效的。所以最好的方法是报告它。现在,如果您需要快速修复,您可以尝试通过2D上下文作为代理(
twoDCtx.drawImage(webgl_canvas,0,0);twoDCanvas.toDataURL();
),但这是假设
drawImage
有效。。。如果没有,您可以尝试在ImageData的缓冲区中读取像素,然后将ImageData放在2DContext.lol上,看起来我的基本three.js旋转框正在扩展。Scrrenshot仍在为我工作,windows 10上的Chrome(版本65.0.3325.146(官方版本)(64位))