其他所有内容正常工作,并且绘制了线条。它似乎只是忽略了gl.linewidth()调用。我还有其他需要做的吗?
gl.lineWidth(17);
gl.drawArrays(this.drawMode,0,totalVertices);
我有机会过度简化事情吗?也许需要知道我要指定的宽度?
重要的是要注意,使用除1.0以外的任何宽度的gl.lineWidth
不能根据WebGL规格来工作。WebGL基于OpenGL ES 2.0(WebGL2基于OpenGL ES 3.0)。OpenGL ES 3.0规格说
第3.5节
支持的最大线宽度必须至少一个。
或以另一种方式提出,不需要支撑宽度> 1.0。OpenGL ES 2.0/WebGL1
也是如此找出您应该调用gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)
的线支持的最小和最大宽度,该行返回2个数字。第一个数字是支持的最小宽度,第二个数字是支持的最大宽度。两者都允许为1.0
因此,您真的不应该使用gl.lineWidth
,因为您的用户可能无法获得1.0以外的任何宽度。
也就是说,有一段时间某些实现支持线宽度> 1.0。当WebGL2发货时,这主要在2017年1月发生了变化。WebGL2,至少在Mac和Linux上是在OpenGL 3.3的核心配置文件之上实现的。来自OpenGL规格核心配置文件规格附录E
e.2.1不弃用,但仍支持功能
弃用以下功能,但仍存在于核心配置文件中。 他们 可以从未来版本的OpenGL,中删除,并在远期表达中删除 上下文实现核心配置文件。
- 宽行 - 线宽值大于1.0将产生Invalid_value错误。
浏览器不会从OpenGL规格产生错误,因为OpenGL ES规格不需要错误,但是限制仍然存在,因为下面的驱动程序不支持它们。
如果要绘制大于1的线路,则需要自己栅格化行。
gl.lineWidth()
对普通现代浏览器没有影响。这 相应的铬错误和Firefox错误被关闭,因为无法修复和 WebGL规范现在定义GL.LineWidth()不 再更改线宽度。如果您需要其他任何宽度的行 大于1PX,请考虑绘制一条狭窄的三角形。-Mozilla开发人员网络
因为在Windows Directx上用作WebGL后端,它不支持图形线比1像素更宽。