【发布时间】:2015-05-14 17:06:54
【问题描述】:
在我的引擎中,我想避免使用线条和单独的三角形类型。我想使用两个顶点相同的三角形来绘制线条。但是在opengl中,这个三角形不会显示,因为它的面积为零,因此不能覆盖一个像素。
在内部,在驱动程序级别,使用退化三角形绘制一条 opengl 线,并使用不同的光栅化规则,每条扫描线至少绘制一个像素。
D3d 有一些选项,您可以将光栅化设置为始终绘制每条扫描线的第一个像素——有效地完成我在 d3d 中想要的。
但是我怎么能用opengl做到这一点呢?我没有看到任何可以让您更改光栅化规则的命令。
【问题讨论】:
-
可能是 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);但是如果你必须改变线条和多边形的opengl状态,那么不使用GL_LINES的优势在哪里?
-
你说的 D3d 选项是什么?
-
我想我也没有听说过 D3D 标志...通常退化三角形在 GL 和 D3D 的顶点设置阶段都会被拒绝(例如,即使顶点着色器也不会被执行,更不用说像素/片段着色器了)。如果您正在渲染三角形条带,禁用退化拒绝会相当奇怪,因为对于任何通用模型数据,通常都有大量退化。你会得到……到处都是线条,我不知道为什么会这样?
-
我没有确切的标志,也没有它显示的 Directx 版本。d3d 标志设置为模拟线框显示而不使用线条。它将光栅化更改为每扫描线输出 1 个像素,无论它是否覆盖一个像素。这将允许您绘制一个退化的三角形,它会显示为一条线。
-
你的意思是 D3D11_FILL_WIREFRAME?