因此,到目前为止,通过使用它,我收集GLSL几何着色器在投影/模型视图矩阵转换输入顶点之后工作。换句话说,几何着色器处理剪辑坐标上的内容。
如果我使用几何着色器将GL_POINTS转换为由GL_TRIANGLES
构成的多维数据集,该怎么办?在剪辑坐标上计算事物时,生成的形状似乎总是面向你/忽略旋转/缩放等。
此外,似乎不支持GL_TRIANGLES
作为可能的几何输出类型之一。但我反正尝试过,似乎有效。我想这是视频卡依赖?如果不支持GL_TRIANGLES
,是否可以制作多维数据集?在空格之间制作零宽度三角形条带可能是??
答案 0 :(得分:4)
您正在使用着色器:几何着色器可以处理顶点着色器传递它们的任何内容。如果您希望它是剪辑空间值,则几何着色器适用于剪辑空间值。如果顶点着色器为它们传递了眼睛空间值,那么几何着色器必须对眼睛空间值起作用。
最重要的前栅格化着色器阶段输出到gl_Position
的重要性。 那是同类剪辑空间中需要的东西。在其后面具有几何着色器的顶点着色器甚至不需要写入gl_Position
。
此外,似乎不支持GL_TRIANGLES作为可能的几何输出类型之一。
您必须使用ARB_geometry_shader4,而不是实际的核心几何着色器功能。如果可以,你可能应该避免使用该扩展。任何具有几何着色器的硬件都可以运行OpenGL 3.2。
在任何情况下,核心功能都不支持三角形作为输出。它支持点,线条和三角条。
如果不支持GL_TRIANGLES,是否可以制作立方体?
这就是EndPrimitive()的用途。当你完成一个原语时,你可以调用它;没有什么可以阻止你发出第二个原语。或者第三。
此外,您应该被告知这可能会很慢。几何着色器因快速渲染性能而闻名。