ゲームの場合、光と影を計算しようとしています。このために、キャンバスを正方形の領域に分割し、プレーヤーから各正方形の位置に向かう途中で光線がブロックされるかどうかを計算します。私は今、これらの計算でかなり良いパフォーマンスを達成することができました。
結果は、目に見えない領域を暗い四角形で覆うことによって視覚化されます ( Canvas.fillRect(...)
) が、このステップは、計算に適切な解像度、つまり約 10,000 の四角形が必要な場合にコストがかかりすぎます。最初にそれらをオフスクリーン キャンバス (= バッファ) にレンダリングしてから、表示されているキャンバスにバッファを描画しようとしましたが、顕著なパフォーマンスの向上は見られませんでした。
見逃したものはありますか、または描画を固定する他の方法はありますか?
アップデート:
影響を受けるコードは次の場所にあります: https://github.com/otruffer/Ape_On_Tape/blob/master/src/client/js/visibility.js (コードは大きすぎてここに投稿できません)
実際の描画は、このファイルの下部で行わdrawCloudAt(...)
れます。flushBuffer()