我想绘制一些平行线。起初我使用gl.LINES
,但问题是渲染的线在屏幕上的任何一点都是一个像素宽,无论它是非常接近还是离相机很远。
相反,我渲染了细长方形:
正如你所看到的,他们现在变得越来越瘦,因为他们越来越远离相机,但现在我得到了所有这些丑陋的混叠神器。在OpenGL / WebGL中有一种“正确”的方法吗?
答案 0 :(得分:2)
有几种方法可以解决这个问题。
(1)正如其他人所提到的,只需运行超级或多重采样。
(2)使用着色器。如果您使用的是Es2 / WebGL,那么您已经这样做了。但是,不是输出恒定的颜色,而是写一个颜色加上一个alpha来确定你与该线的接近程度。然后启用与该alpha混合。
一种非常简单的方法是将纹理映射为矩形的Alpha通道。
或者,您可以绘制2个四边形而不是一个,并在着色器中计算距离。然后使用斜坡函数将距离映射到alpha。
答案 1 :(得分:0)
如果你正在使用GLUT,你可以试试这样的东西 -
glutInitDisplayMode(GLUT_MULTISAMPLE);// along with all the other flags
如果你没有使用GLUT,那么你可以找到一个非常有用的主题here。 每个平台都允许您在获取OpenGL上下文后执行multisampling。