我正在尝试使用 JavaScript drawImage 在 Firefox 中从缓冲区画布绘制到另一个画布;我使用相当大的画布每帧多次调用绘图。我的内存使用在 Firefox 中飙升,但在 Chrome 中几乎没有达到峰值。我很好奇这种行为的原因,以及是否有一种解决方法可以在不再需要绘制图像后释放所使用的内存(我假设)。
我需要使用 globalCompositeOperation = 'source-in' 进行渲染,这就是我使用这种方法的原因。
这是基本思想:
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
//set height and width of canvas to browser window
var dummyCanvas = document.createElement('canvas');
var dummyctx = dummyCanvas.getContext('2d');
dummyCanvas.width = canvas.width;
dummyCanvas.height = canvas.height;
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
//draw some stuff on normal canvas
dummyCtx.clearRect(0, 0, canvas.width, canvas.height);
//draw a polygon on buffer canvas
dummyctx.globalCompositeOperation = 'source-in';
//draw another polygon on buffer canvas
ctx.drawImage(dummyctx.canvas, 0, 0);
//draw some more stuff on normal canvas
}
这个内存问题只是 Firefox 中的一个错误吗?难道我做错了什么?有什么解决方法吗?
非常感谢您的帮助!