【问题标题】:Will avoid drawing half pixel in HTML5 canvas improve speed?避免在 HTML5 画布中绘制半像素会提高速度吗?
【发布时间】:2010-12-14 09:00:29
【问题描述】:

我正在画布元素上绘制一个(球的)精灵。然而,随着球的移动,球的 x 或 y 位置可能变成分数,例如。 (20.153;63.638)。当使用画布绘制此图像时,它会尝试使用透明像素使球更准确地出现在它的位置。

我想知道是否应该在绘制球之前使用Math.round() 以避免透明像素的东西,并可能加快游戏​​速度。这会有很大帮助吗?该游戏是一种复杂的乒乓球游戏。

下面的图片应该有助于我的解释:

【问题讨论】:

  • 能否加速取决于浏览器对Canvas的实现。
  • 可以给地址玩游戏吗?

标签: html canvas


【解决方案1】:

至少this guy seems to believe so。正如 Gabe 所说,这取决于实现。

请注意,如果您使用常规坐标(1、14 等),似乎会出现某种抗锯齿。出于这个原因,一些指南(主要是Dive Into HTML5)似乎建议您最好使用半像素(即1.5、14.5等)进行渲染。不过,我不知道这是否会对性能产生任何影响。至少在渲染结果上很明显。

您可能还想尝试各种分层方案。有关更多信息,请参阅this question。根据您的情况,您甚至可能希望将您的对象视为单独的画布,并将它们偏移到背景之上。

或者,您可以尝试在一个画布上全部渲染。在这种情况下,您需要跟踪一些额外的内容。 This library 似乎为您处理所有簿记。

【讨论】:

  • 谢谢贝布罗。我想当我完成游戏后,我会测试一下性能和视觉外观上的差异。我想我也会在不同的浏览器上进行测试。
  • 酷。如果你能发表你的发现,那就太好了。祝你好运。 :)
  • +1 用于在单独的画布上建议精灵(甚至是带有背景的标准 HTML 元素)。
  • 为了获得更好的性能,请不要忘记使用类似 var x2 = x|0 而不是 Math.Round 的东西来舍入坐标
  • @Omiod 但那不是round。那是floor
猜你喜欢
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2012-04-18
  • 2020-02-17
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
相关资源
最近更新 更多