如何选择性能最佳的渲染器,Canvas或WebGL

时间:2015-09-04 13:17:22

标签: javascript canvas webgl pixi.js

我正在使用PIXI.js为桌面设备开发游戏。 PIXI提供WebGL和Canvas渲染器,我们将在设备支持的任何地方使用WebGL。

我的问题是一些低端设备在技术上支持 WebGL,虽然由于GPU速度慢而运行不好。在某些情况下,Canvas渲染会表现得更好。

如何在运行时决定使用哪个渲染器?

也许WebGL上下文包含一些有用的信息。

1 个答案:

答案 0 :(得分:4)

官方方法是在上下文创建时使用failIfMajorPerformanceCaveat标志。这是指向说明如何工作的规范的链接: https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2.1

它在Chrome上支持了一段时间(自2013年以来我认为),所以很有可能它会排除很多"慢"实现。

坏消息是,截至编写PixiJS时,似乎仍无法将任意参数传递给WebGL上下文创建。我没有重新检查,但问题尚未正式关闭: https://github.com/pixijs/pixi.js/issues/1738

因此,您必须手动劫持PixiJS代码或创建Web上下文。

当然,并非每个浏览器都支持这个相对较新的标志。

如果稳定性比性能更重要,那么另一个选择是在4.4之前完全禁用原生Android浏览器的WebGL,Chrome Web View正式推出。这将排除较旧的自定义WebGL实现(例如Sony xperia one)。

我个人不愿意在应用程序开始时进行压力测试以选择渲染实现。性能上的小故障/尖峰可能导致在完美的硬件上切换到画布。但是如果你想走这条路,那么有关于在PIXI中实现它的讨论: http://www.html5gamedevs.com/topic/1733-detect-performance-issues-to-display-a-message/