我有一个ArrayBuffer
,我有一个名为 module.repaint
的函数,它可以与 ArrayBuffer
一起工作。在每次重绘调用中,我想把ArrayBuffer
中的颜色放到画布上。
我是这样做的:
imgData.data.set(new Uint8ClampedArray(MEM, 0, siz));
但是,是否可能更快地将ArrayBuffer的一部分复制到另一个位置? 代码:
var MEM = new ArrayBuffer(2*1024*1024);
var canvas, ctx, imgData, siz;
var repaint = function() {
// module.repaint works on the arraybuffer
module.repaint();
imgData.data.set(new Uint8ClampedArray(MEM, 0, siz));
ctx.putImageData(imgData, 0, 0);
requestAnimationFrame(repaint);
};
var init = function() {
canvas = document.getElementById('canvas');
ctx = canvas.getContext('2d');
siz = canvas.width*canvas.height*4;
imgData=ctx.createImageData(canvas.width,canvas.height);
repaint();
};
drawImage
方法,那么我必须在每个循环中将实际的ImageData转换为图像。我不知道如何快速从ArrayBuffer中读取字节并将像素写入画布。 - Iter Ator