【发布时间】:2017-06-10 09:27:03
【问题描述】:
是否可以“检测”并仅在 HTML5 Canvas 上绘制可见图像?这将在我的游戏中进行巨大的性能优化,例如如果图像 1 被图像 2 覆盖,我怎样才能只绘制图像 2?
【问题讨论】:
-
是的,有很多工作和代码。光线投射,遮挡剔除,熊,哦,我的!您是否考虑过使用像 Unity3D 这样的现有引擎?
-
您似乎正在使用
'2d'上下文并渲染简单的 2D 图形,例如瓷砖。如果您对此提供更多信息,我们可以为您提供更好的建议。 -
@DaveS 我的游戏是 2D 的,所以我不需要 Unity3D,但是我正在使用 PIXI.JS 库使用 WebGL 进行快速渲染
-
@le_m 我的游戏是使用 Pixi.JS 构建的 2D 等距游戏。它可以包含很多可以相互覆盖的实体/对象,所以我想在我的游戏中添加这个优化,以在有很多对象时提高性能。
-
使用下面给出的答案。 10000 个 Sprite 渲染全部 142 毫秒。剔除和渲染,在 1567ms 中剔除 2096 渲染剩余 114ms,性能损失 1100% 。对于 1000 个精灵,渲染所有 18 毫秒,剔除和渲染,剔除 27 个,在 47 毫秒内渲染剩余 17 毫秒 性能损失 300% 您需要能够在绘制大约 10% 的精灵所需的时间内进行剔除,然后您刚刚收支平衡。查找 CPU 周期的最佳位置是在您编写的代码中,斜线和刻录,内联尽可能多的函数,不要分配不要删除。如果那不起作用。随时重写计数 CPU 滴答声。
标签: javascript html canvas html5-canvas