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の単なるバグですか?私は何か間違ったことをしていますか?回避策はありますか?
助けてくれてありがとう!