OpenGL几何着色器:功能与应用
1. 几何着色器概述
在OpenGL渲染管线中,镶嵌阶段之后紧接着就是几何阶段。在这个阶段,开发者可以选择使用几何着色器。实际上,几何着色器的出现早于镶嵌着色器,它在2009年的OpenGL 3.2版本中成为了核心的一部分。
和镶嵌着色器一样,几何着色器让开发者能够对顶点组进行操作,这是顶点着色器无法做到的。在某些情况下,一项任务既可以使用镶嵌着色器完成,也可以使用几何着色器完成,因为它们的功能在某些方面存在重叠。
1.1 OpenGL中的逐图元处理
几何着色器阶段位于镶嵌和光栅化之间,属于管线中专门处理图元的部分。顶点着色器每次只能操作一个顶点,片段着色器每次只能操作一个片段(本质上是一个像素),而几何着色器每次可以操作一个图元。
图元是OpenGL中绘制对象的基本构建块,可用的图元类型不多,这里主要关注处理三角形的几何着色器。当说几何着色器可以一次操作一个图元时,通常意味着该着色器可以同时访问三角形的三个顶点。几何着色器允许进行以下操作:
- 一次性访问图元中的所有顶点。
- 输出未改变的相同图元。
- 输出顶点位置已修改的相同图元。
- 输出不同类型的图元。
- 输出额外的图元。
- 删除图元(完全不输出)。
与镶嵌评估着色器类似,传入的顶点属性在几何着色器中以数组形式访问。不过,在几何着色器中,传入的属性数组索引仅到图元大小。例如,如果图元是三角形,那么可用的索引是0、1和2。可以使用预定义数组 gl_in 来访问顶点本身,如下所示:
超级会员免费看
订阅专栏 解锁全文
391

被折叠的 条评论
为什么被折叠?



