【发布时间】:2013-08-12 15:19:39
【问题描述】:
我正在尝试使用 HTML5 画布编写一个简单的光线投射器,但帧速率非常糟糕。 Firefox 的分析器报告说我 80% 的运行时间都花在了 context2d.fillRect() 中,我在地板和天花板的每列以及纹理墙壁上的每个像素中都使用了它。我遇到了this 问题,发现fillRect 在chrome 上比1x1 px 图片快40%,在firefox 上快4%。他们提到它仍然在计算 alpha 的东西,尽管我假设如果 alpha 为 1,它会通过不透明渲染?是否有任何其他方法可以使用 javascript 进行大量矩形和像素位传输,我应该尝试一下?
【问题讨论】:
-
其实我觉得你应该试试WebGL。据我所知,WebGL 的硬件加速浏览器比 canvas 2d 多。
-
Canvas 2d 在浏览器中的性能还没有真正完善,它在不同浏览器之间存在很大差异。我相信它在未来会有所改善。但在那之前,我会说使用上面提到的 WebGL。我也相信它将完全取代 Flash。
-
现在的浏览器默认启用 webgl 吗?我一直在使用画布,希望有更好的兼容性
-
@zacaj 检查此website。他们有一个 webgl 兼容性列表。当然这并没有考虑到某些显卡被列入黑名单。
-
需要看一些代码。根据您的操作方式,createImageData + putImageData 比 fillRect 快 很多 这是一个显示超过 20k 个粒子的快速示例somethinghitme.com/projects/masspart
标签: javascript html canvas