three.js如何加速renderer.domelement.todataurl

three.js how can speed up renderer.domelement.todataurl?

本文关键字:renderer domelement todataurl 加速 js 何加速 three      更新时间:2023-09-26

我使用three.js renderer.domelement.todataurl来获取当前视图的图像。它运行良好。问题是我的项目需要以高频率,每0.1秒捕捉一次图像。

在这种频繁、浏览几乎冻结的情况下,用户什么都做不了。由于函数todaul()占用了大部分cpu时间。

欢迎任何建议。

我的想法是:1) 找到另一种捕捉图像的方法,避免todaul()?2) 将渲染器放在web worker中?

谢谢。

首先,不建议以那么快的速度读取像素。它甚至不建议在普通的桌面应用程序中使用。

如果必须的话,我建议你使用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.