1

我正在研究使用几何着色器的旧代码库。它使用“glProgramParameteriEXT(...) 来启用和指定 GS 的输入/输出。有问题的代码是渲染曲线。

GS 的输入(通过上述方法而不是在 GLSL 中使用布局说明符)是 GL_LINES_ADJACENCY,输出是 GL_TRIANGLE_STRIP。在实际的 GLSL 几何着色器中,代码会按照 GL_LINES 的预期吐出两个 EmitVertex()。最终在执行 drawcall 时,使用了 glDrawElements (GL_LINES, ....)。绘制调用是否不应该与 GS 输出的 GL_TRIANGLE_STRIP 相匹配?我不太熟悉几何着色器,所以我一定遗漏了一些东西。如果是这种情况,openGL 如何在被告知绘制线条时绘制三角形?

谢谢!

4

1 回答 1

3

几何着色器从输入图元生成图元。绘制调用确定输入图元类型;GS 确定输出原语类型。OpenGL“发现”它正在绘制三角形,因为这就是 GS 所说的要绘制的内容。GS 是OpenGL 的一部分;阻碍 OpenGL 的不是一些外来实体。

于 2021-02-14T16:12:28.090 回答