在我的引擎中,我想避免使用直线和单独的三角形类型。我想使用 2 个顶点相同的三角形绘制线条。但是在 opengl 中,这个三角形不会显示,因为它的面积为零,因此不能覆盖一个像素。
在内部,在驱动程序级别,使用退化三角形绘制 opengl 线,并使用不同的光栅化规则,它在每个扫描线至少绘制一个像素。
D3d 有一些选项,您可以将光栅化设置为始终绘制每条扫描线的第一个像素——有效地完成我在 d3d 中想要的。
但是我怎样才能用 opengl 做到这一点呢?我没有看到任何允许您更改光栅化规则的命令。
最佳答案
好吧,我通过在必要的三个顶点中完成这件事,使用前两个作为直线的起点,然后在直线的起点使用 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
渲染对象和 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
最后。
将其与适当启用和禁用面部剔除相结合,您将获得一个非常好的线条渲染器,它仍然使用三角形设置。
关于c++ - OpenGL : drawing line using degenerate triangle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30243199/