GLSL为不同的渲染阶段定义了一些特定的变量。这些预定义(也叫做内置变量)有特定的属性。所有的预定义变量都以gl_开头。用户定义的变量不能以此开头。
下面分类进行介绍。
(1)顶点着色器输入
in int gl_VertexID;
in int gl_InstanceID;
gl_VertexID是当前被处理的顶点的索引。对于array rendering,它是当前顶点在数组中的索引;对于indexed rendering,它是从element buffer中获取的索引值。
gl_InstanceID指出了当前被渲染的instance,当使用instancedrendering的时候。
gl_Vertex从140开始就被移除了。
(2)顶点着色器输出
out gl_PerVertex
{
vec4gl_Position;
floatgl_PointSize;
float gl_ClipDistance[];
}
为输出定义了一个block接口。
gl_Position是当前顶点的输出坐标(如果没有几何着色器,是在clip-space)。指定这个值并不是必须的。但是不指定可能会导致意想不到的结果。如果你使用转换反馈或者是关闭了光栅化,或者是使用采用用户定义输出产生坐标的几何着色器,则可以忽略指定这个值。
gl_PointSize指定了点的宽度和高度。只有在绘制点的时候指定它的值才是必须的。
gl_ClipDistance允许着色器设置一个顶点到每个剪切平面的距离。正值表示顶点在剪切平面的里面(后面),而负值表示在剪切平面的外面(

本文介绍了OpenGL的GLSL语言中预定义的内置变量,包括顶点着色器输入输出、几何着色器输入输出、片断着色器输入输出等,详细讲解了各个变量的作用和应用场景,如gl_Position、gl_FragCoord等。
GLSL的内置变量 预定义变量&spm=1001.2101.3001.5002&articleId=90524114&d=1&t=3&u=96214627768e468e92ed1c336a8295e6)
411

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



