问题描述
我正在处理使用几何着色器的旧代码库。它使用“glProgramParameteriEXT(...) 来启用和指定 GS 的输入/输出。有问题的代码是渲染曲线。
GS 的输入(通过上述方法而不是在 GLSL 中使用布局说明符)是 GL_LInes_ADJACENCY,输出是 GL_TRIANGLE_STRIP。在实际的 GLSL 几何着色器中,代码按照 GL_LInes 的预期吐出两个 EmitVertex()。最终在执行 drawcall 时,会使用 glDrawElements (GL_LInes,....)。绘制调用不应该与 GS 输出的 GL_TRIANGLE_STRIP 匹配吗?我不太熟悉几何着色器,所以我一定错过了一些东西。如果是这种情况,openGL 被告知要画线,它是如何计算出要画三角形的?
谢谢!
解决方法
primitive几何着色器从输入图元中生成图元。绘制调用决定了输入原始类型; GS 确定输出原语类型。 OpenGL“弄清楚”它正在绘制三角形,因为这就是 GS 所说的绘制。 GS 是 OpenGL 的一部分;妨碍 OpenGL 的并不是什么外来实体。