Javascript three.js如何提高renderer.doElement.todataurl的速度?
我使用three.js renderer.domeElement.todataurl获取当前视图的图像。它很好用。 问题是我的项目需要以高频率(每0.1秒)捕获图像 在这种频繁浏览的情况下,浏览几乎冻结,用户无能为力。函数todataurl()占用了大部分cpu时间 欢迎提出任何建议 我的想法是: 1) 找到另一种捕获图像的方法,避免todataurl()? 2) 将渲染器放入web workerJavascript three.js如何提高renderer.doElement.todataurl的速度?,javascript,image,canvas,three.js,data-uri,Javascript,Image,Canvas,Three.js,Data Uri,我使用three.js renderer.domeElement.todataurl获取当前视图的图像。它很好用。 问题是我的项目需要以高频率(每0.1秒)捕获图像 在这种频繁浏览的情况下,浏览几乎冻结,用户无能为力。函数todataurl()占用了大部分cpu时间 欢迎提出任何建议 我的想法是: 1) 找到另一种捕获图像的方法,避免todataurl()? 2) 将渲染器放入web worker 谢谢。首先,不建议读取像素那么快。在普通桌面应用程序中甚至不建议使用它 如果必须,我建议您使用gl
谢谢。首先,不建议读取像素那么快。在普通桌面应用程序中甚至不建议使用它 如果必须,我建议您使用gl.readpixels。这应该是在javascript中读取像素的最快方法。同时尽可能减少宽度和高度,以加快阅读速度 如何使用:
var pixels = new Uint8Array(width * height * 4);
renderer.gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
然后,您可以使用worker中的像素数组来执行更多操作。或者将像素的变换延迟到稍后的日期
==================================================
如果您使用的是canvasrenderer,那么您应该使用context.getImagedata。Docs here:另请注意,您可以使用gl.RGB来减少复制的总数据量。