OpenGL:使用退化三角形绘制线条

OpenGL : drawing line using degenerate triangle

本文关键字:三角形 绘制 OpenGL      更新时间:2023-10-16

在我的引擎中,我想避免使用线和单独的三角形类型。我想用三角形来画直线,其中两个角相等。但是在opengl中,这个三角形不会被显示,因为它的面积为零,因此不能覆盖一个像素。

在内部,在驱动级,opengl线使用退化三角形绘制,并且使用不同的光栅化规则,在每个扫描线至少绘制一个像素。

D3d有一些选项,你可以设置栅格化,总是在每条扫描线上画第一个像素——有效地完成了我在D3d中想要的。

但是我怎么用opengl做到这一点呢?我没有看到任何命令允许你改变光栅化规则。

我确实做到了这一点,在三个必要的顶点中,使用前两个作为线的起点,然后在线渲染对象的开始使用glPolygonMode(GL_FRONT_AND_BACK, GL_LINE),在结束使用glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)

结合适当的启用和禁用面部剔除,你就得到了一个完美的线条渲染器,仍然使用三角形设置。