片段着色器

我们的三角形由来自顶点着色器的三个顶点作为三角形的顶点构成,这一三角形范围内的屏幕像素会被使用片段着色器处理后的片段进行填充。一个非常简单的直接将片段颜色设置为红色的片段着色器代码如下所示:

#version 450
#extension GL_ARB_separate_shader_objects : enable

layout(location = 0) out vec4 outColor;

void main() {
    outColor = vec4(1.0, 0.0, 0.0, 1.0);
}

对于每个片段着色器的main函数执行一次。GLSL下的颜色是一个具有四个分量的向量,分别对应R,G,B和Alpha通道,分量的取值范围为[0,1]。和顶点着色器不同,片段着色器没有类似gl_Position这样的内建变量可以用于输出当前处理的片段的颜色。我们必须自己为每个使用的帧缓冲指定对应的输出变量。上面代码中的layout(location=0)用于指定与颜色变量相关联的帧缓冲,颜色变量的颜色数据会被写入与它相关联的帧缓冲中。上面的代码,我们将红色写入和索引为0的帧缓冲相关联的颜色变量outColor。