1. ホーム
  2. javascript

[解決済み] HTML5/Canvasはダブルバッファリングに対応していますか?

2023-05-26 19:50:02

質問

私がやりたいことは、グラフィックスをバッファに描き、それをそのままキャンバスにコピーして、アニメーションを行い、ちらつきを避けることです。しかし、このオプションを見つけることができませんでした。どなたか、これを行う方法をご存知ですか?

どのように解決するのですか?

次の役に立つリンクでは、ダブル バッファリングの使用例と利点に加えて、html5 canvas 要素を使用する際のその他のパフォーマンスに関するヒントがいくつか紹介されています。これには、ブラウザ間のテスト結果を Browserscope データベースに集約する jsPerf テストへのリンクも含まれています。これにより、パフォーマンスのヒントが確実に検証されます。

http://www.html5rocks.com/en/tutorials/canvas/performance/

ご参考までに、記事で紹介されている効果的な二重バッファリングの最小限の例を載せておきます。

// canvas element in DOM
var canvas1 = document.getElementById('canvas1');
var context1 = canvas1.getContext('2d');

// buffer canvas
var canvas2 = document.createElement('canvas');
canvas2.width = 150;
canvas2.height = 150;
var context2 = canvas2.getContext('2d');

// create something on the canvas
context2.beginPath();
context2.moveTo(10,10);
context2.lineTo(10,30);
context2.stroke();

//render the buffered canvas onto the original canvas element
context1.drawImage(canvas2, 0, 0);