Les classes CanvasRenderingContext2D et WebGLRenderingContext ont toutes deux l'élément canvas associé à la propriété canvas
; et, comme d'habitude, les instances de contexte et leurs toiles seront collectées lorsque votre code ne fera plus référence à elles au moment de l'exécution.
Vous pouvez utiliser cette fonction pour créer un nouveau contexte
function newContext({width, height}, contextType = '2d') {
const canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
return canvas.getContext(contextType);
}
const ctx = newContext({width: 100, height: 100});
console.log(ctx.canvas.width == 100) // true
En utilisant le déréférencement, vous pouvez facilement créer un clone d'un canevas DOM pour la mise en mémoire tampon comme ceci :
const domCanvas = document.getElementById('myCanvas');
const frameBuffer = newContext(domCanvas);
frameBuffer.drawImage(domCanvas, 0, 0);
Ce qui créera un contexte avec la même largeur et hauteur que l'élément de toile transmis. Vous pouvez étendre cette fonction selon vos besoins.