检测浏览器中对WebGL粗线的支持

时间:2016-07-12 16:06:03

标签: javascript three.js webgl

作为three.js docs中的stated

  

由于ANGLE图层的限制,使用Windows平台上的WebGL渲染器,无论设置值如何,线宽始终为1。

在一些不使用ANGLE的浏览器中,广泛的线路也不起作用,例如IE11

enter image description here

this question讨论了解决方法。

但是,如果浏览器支持宽线,有没有办法检测

2 个答案:

答案 0 :(得分:5)

是的,有一个参数:ALIASED_LINE_WIDTH_RANGE。查询时,它返回行宽可能值的范围:

gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE) // returns [1, 1] on my machine, for example

答案 1 :(得分:1)

仅供参考:

虽然您可以调用gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)并返回一个数组,其中包含行的最小和最大宽度,但所支持的几乎只有1.0。这不仅是因为角度。

从3.1版开始,OpenGL本身不支持大于1.0的行。根据规格。

E.2.1已过时...功能

  • 宽行-LineWidth值大于1.0将产生INVALID_VALUE错误。

请注意,这在OpenGL的核心配置文件中。您可以使用“兼容性配置文件”,并且仍然可以使用粗线和其他所有旧样式。不幸的是,要使用“核心”配置文件来实现所需的WebGL2,这意味着几乎所有的WebGL仅支持宽度为1.0的行。