利用シーン
たとえば15個の要素からなる背景があったとする。(下図参照)可視領域内にあるCanvasにレンダリングしていると、1フレームごとに15回の描画処理が行われる。
それをあらかじめ背景用のオフスクリーンCanvasに描画しておいて、1フレームごとに可視領域内のCanvasにコピーして描画すると、背景の描画処理は1回ですむ。
負荷の高い描画処理が15→1回になることでパフォーマンス向上が見込めるという技だ。
プリレンダリングした内容をCanvasに表示する
// 可視領域のCanvas
const canvas = document.getElementById('game');
const ctx = canvas.getContext('2d');
// オフスクリーン
const offscreen = document.createElement('canvas');
offscreen.width = canvas.width;
offscreen.height = canvas.height;
const offscreenCtx = offscreen.getContext('2d');
// いろんな描画処理
offscreenCtx.fillRect(0, 0, 30, 30); // などなど
// 可視領域のCanvasにコピーして描画する
ctx.drawImage(offscreen, 0, 0);
やっていることは非常に簡単で、オフスクリーンCanvasは
document.createElement('canvas')
で作ってメモリ上で管理し、offscreenの2Dコンテキストをつかって背景などを描画していく。最後に可視領域のCanvasに
drawImage(offscreen, 0, 0)
で描画することができる。参考サイト
以上
written by @bc_rikko
0 件のコメント :
コメントを投稿