对于游戏,我正在尝试计算光影。为此,我将我的画布分解为正方形区域,并计算在从玩家到每个正方形位置的途中是否会阻挡光线。我现在已经设法为这些计算达到了相当好的性能。
然后通过用黑色方块 ( Canvas.fillRect(...)
) 覆盖不可见区域来可视化结果,但是当想要一个好的分辨率时,这个步骤变得过于昂贵,即大约 10'000 个方块用于计算。我尝试先将它们渲染到屏幕外画布(=缓冲区)中,然后在可见画布上绘制缓冲区,但我无法体验到任何显着的性能改进。
是我遗漏了什么,还是有其他方法可以加快绘图速度?
更新:
受影响的代码可以在这里找到:https ://github.com/otruffer/Ape_On_Tape/blob/master/src/client/js/visibility.js (代码有点太大,不能在这里发布)
实际绘图发生在该文件drawCloudAt(...)
的flushBuffer()
下部。