为什么WebGL比Canvas慢

Why WebGL slower than Canvas?

本文关键字:Canvas WebGL 为什么      更新时间:2023-09-26

我刚刚开始使用canvas和webgl,阅读一些文章等,据我所知,WebGL应该比canvas快得多,但是在下面的测试中,它的速度要慢得多:

  • http://jsperf.com/canvas-drawimage-vs-webgl-drawarrays
  • http://jsperf.com/three-js-canvas-vs-webgl/2

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

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

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

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

您应该比较使用适当的 webgl 实现在画布中绘制 10k 图像和在 webgl 中绘制 10k 图像。但是,您找到的大多数 webgl 库都是为了方便客户端而编写的,但不一定是为了获得最佳性能。

我的 2d webgl 渲染器的实现比画布快得多(100 倍+),特别是如果您需要旋转/缩放图像。当然,如果您需要自己的混合操作,那么webgl是唯一的方法。