WebGL 绘制Line的bug(一)

作者: ITman彪叔 | 来源:发表于2017-07-05 09:55 被阅读239次

熟悉WebGL的同学都知道,WebGL绘制模式有点、线、面三种;通过点的绘制可以实现粒子系统等,通过线可以绘制一些连线关系;面就强大了,通过面,我们可以绘制我们想绘制的所有的三维对象。

一切看起来都很完美,perfect。

然而,不幸的是,WebGL在绘制线条的时候,存在一个缺陷,那就是在一些机器的一些浏览器上面(应该是大多数情况下)线宽只能设置为1,而不能设置成其他的值。

通过网址http://alteredqualia.com/tmp/webgl-linewidth-test/,我们可以测试自己的电脑是否有线宽的不能设置的bug,以下是我的电脑(mac 电脑)用chrome(版本59.0.3071.115)的测试效果:

macOS chrome测试效果

(麻蛋,以前的mac 下的chrome是好使的,看来这病越来越严重了)

用firefox试试:

macOS下firefox测试结果

在firefox下面看来还是正常的。

事实上,这是一个长久以来一直存在的bug,下面这个地址就是证明:

https://bugs.chromium.org/p/chromium/issues/detail?id=60124

Line width bug 

很早之前就有人提过了,只是一直没有解决。

这是病,得治,只是那些搞浏览器大佬们不想出药。

我们就只能想点偏方来自己治疗了。 

偏方是啥,由于Line的线宽是底层问题,我们并不好解决;不过,我们可以考虑通过面的绘制来模拟线,线的特点就是不随镜头变化而改变宽度,只要能够达到这个特点就可以达到模拟的效果。

下一篇将会介绍 如何通过三角形(面)的方式来模拟线条的绘制。

如果你对WebGL 感兴趣,可以了解下我们用WebGL开发的3D机房项目:

HTML5,不只是看上去很美(第二弹:打造最美3D机房)

相关文章

  • WebGL 绘制Line的bug(一)

    熟悉WebGL的同学都知道,WebGL绘制模式有点、线、面三种;通过点的绘制可以实现粒子系统等,通过线可以绘制一些...

  • WebGL 绘制Line的bug(三)

    上一篇已经讲述了通过面模拟线条时候,每一个顶点的顶点数据包括:端点坐标、偏移量、前一个端点坐标、后一个端点坐标,当...

  • WebGL 绘制Line的bug(二)

    基本思路 上一篇文章简单介绍了WebGL绘制Line的bug,这一篇文章会讲述解决这个问题的work around...

  • TWaver3D直线、曲线、曲面的绘制

    1. WebGL原生线 WebGL支持绘制点、线、三角;绘制线的方法比较简单,给定顶点,设置绘制方式即可; 假设给...

  • webgl入门(一)

    webgl是基于 canvas 进行绘制,通过 getWebGLContext()来获取 webgl 的绘图上下文...

  • WebGL入门

    初识WebGL 01-手动绘制一个WebGL图形 实现的步骤: 添加一个画布元素 获取到画布元素的基于webgl上...

  • 用线段绘制球体(three.js webgl_lines_spe

    用线段绘制球体(three.js webgl_lines_spere例子) Three.js中的webgl_lin...

  • Threejs in autonomous driving -(

    绘制各种几何体是webgl的强项,相反各种异性几何体就非常麻烦。比如圆角矩形来说在webgl中绘制就相对比较麻烦。...

  • WebGL学习(1) — 浏览器支持测试

    什么是WebGL? WebGL是一项用来在网页上绘制和渲染三维图形并允许用户与之交互的技术。同时,WebGL(we...

  • 《WebGL编程指南》1&2 WebGL入门

    什么是WebGL? WebGL是一种可以在网页上绘制渲染3D图形,并允许用户与之交互的技术。浏览器内置了WebGL...

网友评论

    本文标题:WebGL 绘制Line的bug(一)

    本文链接:https://www.haomeiwen.com/subject/hamsfxtx.html