【发布时间】:2014-10-15 03:17:12
【问题描述】:
这是我正在尝试的一个 js 小提琴:
所有重要的事情都发生在
render()
画布将鼠标的位置合并到每个帧的每个块的颜色计算中。现在,无论我似乎从功能中删除了什么,画布在大尺寸 (1600 x 900) 下的渲染速度约为 10fps。
即使只是渲染纯黑色,填充样式没有变化,它也以 10fps 渲染。
对可能导致此问题的原因有任何见解吗?
【问题讨论】:
-
代码太多了,你应该在问题中发布代码,而不是在 jsfiddle 上
-
@Izzey 对大量代码感到抱歉,我不确定如何在不过度简化到无用的情况下对其进行提炼。对所发生的事情进行简短的解释对未来的人有帮助吗?
-
您是否尝试过在 Chrome 中使用分析器?
-
好吧。 A 画布越大,积木越多,积木更新越快。同时拥有
setTimeout和requestAniamtionFrame也可能与此有关。并且仅仅因为它是黑色并不意味着它没有更新,您可以在黑色上绘制黑色。 -
那么不要为每个块设置填充样式。如果您可以批处理具有相同填充样式的块并同时绘制它们,那么您不必过多地更改上下文的状态。这是游戏引擎中常见的优化,它只是与您可能如何在逻辑上执行它有点反直觉。
标签: javascript optimization canvas