OpenGL ES 2.0——片段着色器Fragment Shader

一、片段着色器的定义:

    它计算每个像素的颜色和其它属性,实现了一种作用于片段的通用可编程方法,对光栅化阶段产生的每个片段进行操作。

输入:

1.Varying变量——顶点着色器阶段输出的 varying 变量在光栅化阶段被线性插值计算之后输出到片元着色器中作为它的输入,即图中的 gl_FragCoordgl_FrontFacing 和 gl_PointCoord。OpenGL ES 2.0 也规定了所有实现应该支持的最大 varying 变量个数不能少于 8 个。

2.Uniforms——用于片元着色器的常量,OpenGL ES 2.0 也规定了所有实现应该支持的最大的片元着色器 uniform 变量个数不能少于 16 个。

3.Samples——一种特殊的 Uniforms,用于呈现纹理。

4.Shader Program——片段着色器编程源码或可执行的部分


输出:

在顶点着色器阶段只有唯一的 varying 输出变量-即内建变量:gl_FragColor

        


二、例子:

        片段着色器也能丢弃片段或者产生一些颜色值像 gl_FragColor,光栅化阶段产生的颜色、深度、模板、屏幕坐标(Xw,Yw)变成 OpenGL ES 2.0 管线输入。

 precision mediump float;

 varying vec4 v_color; // input vertex color from vertex shader

 void
 main(void)
{
 gl_FragColor = v_color;
}
        上例中首先设置了显示质量,然后声明片段着色器输入,由于片段着色器不需要定义输出,因为其输出仅仅只有gl_FragColor。

你可能感兴趣的:(OpenGL,ES2.0)