Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何选择性能最好的渲染器、画布或WebGL_Javascript_Canvas_Webgl_Pixi.js - Fatal编程技术网

Javascript 如何选择性能最好的渲染器、画布或WebGL

Javascript 如何选择性能最好的渲染器、画布或WebGL,javascript,canvas,webgl,pixi.js,Javascript,Canvas,Webgl,Pixi.js,我正在为桌面设备开发一个游戏。PIXI同时提供WebGL和画布渲染器,我们将在设备支持的任何地方使用WebGL 我的问题是,一些低端设备在技术上支持WebGL,尽管由于GPU速度慢,它运行不好。在某些情况下,画布渲染的性能会更好 如何在运行时决定使用哪个渲染器? 也许WebGL上下文包含一些有用的信息。官方方法是在创建上下文时使用failIfMajorPerformanceCaveat标志。以下是说明其工作原理的规范链接: 它在Chrome上支持了一段时间(我想是从2013年开始),所以很可能

我正在为桌面设备开发一个游戏。PIXI同时提供WebGL和画布渲染器,我们将在设备支持的任何地方使用WebGL

我的问题是,一些低端设备在技术上支持WebGL,尽管由于GPU速度慢,它运行不好。在某些情况下,画布渲染的性能会更好

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


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

官方方法是在创建上下文时使用
failIfMajorPerformanceCaveat
标志。以下是说明其工作原理的规范链接:

它在Chrome上支持了一段时间(我想是从2013年开始),所以很可能会排除一些“缓慢”的实现

坏消息是,在编写PIXIJ时,似乎仍然无法将任意参数传递给WebGL上下文创建。我还没有重新检查,但该问题尚未正式结束:

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

当然,也不是每个浏览器都支持这个相对较新的标志

如果稳定性比性能更重要,另一个选择是在正式引入Chrome Web View的4.4版本之前,完全禁用本机Android浏览器的WebGL。这将排除旧的自定义WebGL实现(例如索尼xperia one)

就我个人而言,我不愿意在应用程序开始时进行压力测试,以选择渲染实现。性能上的小故障/尖峰可能会导致切换到完美硬件上的画布。但如果你想走这条路,这里有一个关于在PIXI实施的讨论:

虽然(本机)WebGL上下文中没有任何性能信息,但在gameloop中测量帧时间应该很容易做到。您是否考虑过像大多数PC游戏一样询问用户?@gman这是一个很好的建议,但我们的用户可能不知道消息在说什么。他们不是最专业的一群人。