OpenGL几何着色器
OpenGL几何着色器简介
我们早就开始使用顶点和切片着色器,但实际上我们错过了一种类型,称为几何着色器(GS)。这种类型的着色器是由微软在DirectX10中引入的,然后被添加到OpenGL内核的3.2版本中。当 VS 针对顶点启动,而 FS 针对像素运行时,GS 对原始值运行。这意味着,如果我们绘制三角形,则每个 GS 调用将只收到一个三角形;如果我们绘制线,那么只有1行等,这给GS一个独特的模型视图,其中顶点之间的关系可供开发人员使用,允许基于这些知识构建新的方法。
如果顶点着色器在任何情况下只接受 1 个顶点,并且只发出 1 个顶点(即它不能在旅途中创建或删除顶点),则 GS 可以修改通过它的原始值。更改可以是:
更改传入基元的拓扑。GS 可以接受任何类型的基元,但仅输出点、剥线和三角形剥线的列表(下文将解释脱衣舞等拓扑)。
GS 接受一个原始元,并且可以完全删除它,也可以发送一个或多个原始元(这意味着它可以释放比接收的更小、更多的顶点)。这种能力被称为成长几何。在本课中,我们利用这两种可能性。
几何着色器是可选的。如果在没有 GS 的情况下编译,基元将直接从顶点着色器切换到分段着色器。这就是为什么我们能够达到这一点,而