为什么 WebGL 比 Canvas 慢?

Why WebGL slower than Canvas?

我刚开始玩 canvas 和 webgl,阅读了一些文章等。据我所知,WebGL 应该比 canvas 快得多,但是在这些经过测试,速度明显变慢:

我 运行 他们在 Chrome 和 Firefox 中,在这两个浏览器中,差异约为 80%。

为什么 canvas 渲染速度更快? jsperf不准确吗? canvas 是否在浏览器中变得更加优化?

(PS: 我不是测试的作者,我只是找到了它们。)

简短的回答是 webgl/opengl 并不意味着一次绘制一个四边形。 GPU 设计为大规模并行,因此要充分利用 webgl,您必须分批绘制。

您应该比较在 canvas 中绘制 10k 个图像与在 webgl 中使用适当的 webgl 实现绘制 10k 个图像。然而,你发现的大多数 webgl 库都是为了方便客户端而编写的,但不一定是为了最大性能。

我的 2d webgl 渲染器实现比 canvas(100 倍以上)快得多,尤其是当您需要 rotate/scale 图像时。当然,如果您需要自己的混合操作,那么 webgl 是唯一的选择。