を知られているとき、私は現在、イベントのように実装されている単一の画素のみの変更が知られているWebアプリケーション、に取り組んでいます:キャンバス最適化ピクセルの変化が
function pixelChanged(x, y, color)
キャンバスに描画するこれらの必要性。これらのメソッドの両方を持っているように見える今
- ドローピクセル直接fillRectと
- ごとに数マイクロ秒
をピクセルを暗記し、putImageDataでキャンバス上に置く:私はこれを実現するには、2つの方法を試してみましたパフォーマンスが悪い最初のものは多くの再描画をもたらし、2番目のものは小さな領域のみが変更されたとしてもイメージ全体を再描画します。
私の具体的な質問は、これを実装するためのより良い方法がある場合です(1.のようなものですが、何らかの方法で遅れていますか?)。
もしそうでなければ、どの方法を好むべきですか?この場合、どうすれば最適化できますか?キャンバス - 最適化のためのさまざまなアプローチで
事前に感謝し、よろしく、
コピー
準備が整ったら、getImageData()を使用して、そこにピクセルを変更してからputImageData()を試しましたか? –
(1の場合)pixelchangedの呼び出しは同じ '呼び出しサイクル'で発生するか、またはそれらの間に遅延があります(settimout、userinputなど)?ダブルバッファリングを試みるかもしれません。オフスクリーンのキャンバスに描画し、数秒ごとにキャンバス全体を可視のキャンバスにコピーします。あなたの方法2で改善するかどうかはわかりません。 – Gerben
@JamesClarkいいえ、私はしませんでした。これは本当に素晴らしい改善です。 :-) – copy