Javascript WebGL和Three.js可以优雅地处理哪些图形限制?

Javascript WebGL和Three.js可以优雅地处理哪些图形限制?,javascript,canvas,webgl,Javascript,Canvas,Webgl,我一直对此很好奇,也没有看到太多的例子说明是什么推动了边界 在图形方面,canvas可以走多远?有没有一个合适的方法来衡量它在开始摇晃之前可以处理多少个多边形?也许这是一款可以与之相比的游戏?画布vs.WebGL 首先,“画布”一词不是“WebGL”的同义词 以下初始值设定项返回CanvasRenderingContext2D canvas.getContext("2d"); 而此初始值设定项返回WebGLRenderingContext canvas.getContext("webgl");

我一直对此很好奇,也没有看到太多的例子说明是什么推动了边界


在图形方面,canvas可以走多远?有没有一个合适的方法来衡量它在开始摇晃之前可以处理多少个多边形?也许这是一款可以与之相比的游戏?

画布vs.WebGL

首先,“画布”一词不是“WebGL”的同义词

以下初始值设定项返回CanvasRenderingContext2D

canvas.getContext("2d");
而此初始值设定项返回WebGLRenderingContext

canvas.getContext("webgl");
HTML5
元素用作容器,WebGL是该容器中一种可能的呈现上下文

WebGL限制

至于限制,理论上WebGL使用的视频驱动程序与您机器上运行的任何桌面OpenGL应用程序使用的视频驱动程序相同。尽管如此,重要的是要注意WebGL本质上是OpenGL ES 2.0,与标准OpenGL相比,它有一些局限性

有关OpenGL ES的更多信息,请参阅

另一个限制是你接触广泛受众的能力。WebGL在IE 11中仅部分受支持,而在IE 11中之前完全不受支持。在当前版本的Opera和较早版本的Safari(8.0之前的版本)中,默认情况下也会禁用它。来源:

此外,WebGL应用程序运行的是JavaScript引擎,而不是本机编译的桌面应用程序。尽管Chrome的V8引擎在提高JavaScript性能方面取得了令人难以置信的进步,但它仍将比原生应用程序慢

有关这些挑战和其他挑战的更深入分析,请参阅:

总之

WebGL基于OpenGL ES 2.0,这是OpenGL的一个功能稍微简化的版本。它还运行在JavaScript引擎之上,这比本机代码要慢。WebGL在不同的web浏览器之间并没有得到同等的支持或标准化

除了上述限制外,WebGL几乎可以在桌面应用程序中渲染GPU可以渲染的任何内容,但性能可能会降低


撇开局限性不谈,Epic Games几个月前宣布与Mozilla就一个涉及的项目建立合作关系,因此我们现在当然不应该急于就WebGL的真正功能得出任何结论。

WebGL现在在IE11中可用四年后,WebGL支持有时仍然不稳定(WebGL2更糟糕)不同浏览器的WebGL1支持情况