c++ - OpenGL : drawing line using degenerate triangle

标签 c++ opengl

在我的引擎中,我想避免使用直线和单独的三角形类型。我想使用 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/

相关文章:

c - 如何获得每个骨骼的绝对矩阵?

c++ - 如何在 SDL 2.0 中绘制像素?

c++ - 调整 std::vector<AbstractClass*> 的大小

c++ - 镶嵌结果闪烁 - OpenGL/GLSL

c++ - 无法使显示列表工作

c++ - 过剩库中缺少 glutInitContextVersion()

c++ - C++ 中右值引用的分配和不变性

C++继承: calling overloaded base class function

c++ - 为arm编译qwt

c++ - Mac 上的 OpenGL GLSL 着色器无法编译