Opengl GLSL几何体着色器和投影矩阵

Opengl GLSL几何体着色器和投影矩阵,opengl,glsl,geometry-shader,Opengl,Glsl,Geometry Shader,因此,从目前为止的使用情况来看,我推测GLSL几何体着色器在输入顶点被投影/模型视图矩阵变换后工作。换句话说,几何体着色器处理剪辑坐标上的内容 如果我使用几何体着色器将GL_点转换为(比如)由GL_三角形构成的立方体,会怎么样?在计算剪辑坐标时,生成的形状似乎总是面向您/忽略旋转/缩放等 此外,似乎不支持将GL_三角形作为可能的几何输出类型之一。但我还是试过了,而且似乎奏效了。我想这取决于视频卡?如果不支持GL_三角形,是否可以制作立方体?在空间之间制作零宽度三角形条带可能???您正在使用着色器

因此,从目前为止的使用情况来看,我推测GLSL几何体着色器在输入顶点被投影/模型视图矩阵变换后工作。换句话说,几何体着色器处理剪辑坐标上的内容

如果我使用几何体着色器将GL_点转换为(比如)由
GL_三角形构成的立方体,会怎么样?在计算剪辑坐标时,生成的形状似乎总是面向您/忽略旋转/缩放等


此外,似乎不支持将
GL_三角形
作为可能的几何输出类型之一。但我还是试过了,而且似乎奏效了。我想这取决于视频卡?如果不支持
GL_三角形
,是否可以制作立方体?在空间之间制作零宽度三角形条带可能???

您正在使用着色器:几何体着色器处理顶点着色器传递给它们的任何对象。如果要将其作为剪辑空间值,则几何体着色器将对剪辑空间值进行处理。如果顶点着色器传递它们的眼空间值,则几何体着色器必须处理眼空间值

重要的是最终预光栅化着色器阶段输出到
gl\u位置的内容。这就是在同质剪辑空间中所需要的。后面有几何体着色器的顶点着色器甚至不需要写入
gl\u位置

此外,似乎不支持将GL_三角形作为可能的几何输出类型之一

必须使用ARB_geometry_shader4,而不是实际的核心几何体着色器功能。如果您有能力,您可能应该避免这种扩展。任何具有几何体着色器的硬件都可以运行OpenGL 3.2

在任何情况下,核心功能都不支持三角形作为输出。它支持点、线条带和三角形带

如果不支持GL_三角形,是否可以制作立方体

这就是EndPrimitive()的用途。当你完成一个原语时,你就称它为原语;没有什么能阻止你发射第二个基元。或者第三


此外,您应该被告知,这可能会很慢。几何体着色器不具备快速渲染性能。

谢谢。经过初步测试,它似乎比我以前的glBegin/glEnd方法绘制立方体的速度更快。。我想我应该试着用纯粹的VBO来做基准测试,而不是这样做。还有,你被伪装成一个旅法师:)