转载请标明出处:http://blog.sina.com.cn/s/blog_41630e7e01008uu6.html
先来看看这2段代码
顶点着色器:
void main()
void main()
{
gl_FrontColor = gl_Color;
}
片元着色器:
void main()
{
}
2个都利用到了gl_Color,可是涵义是不同的
考虑最简单的流程:
内置属性变量->顶点处理器->内置易变变量->OpenGL固定功能->内置易变变量->片元处理器->输出变量
内置属性变量: gl_Color 就是属于这个,是应用程序传递给顶点处理器的值,类似的还有 gl_Normal gl_Vertex 等等
内置易变变量:顶点处理器对内置属性变量进行了某些操作后的输出值,而且这个值要交由片元处理器做进一步处理,例如本例子中的 gl_FrontColor 类似的例如 gl_BlackColor
内置易变变量:例如 gl_Color。 gl_Color 就是固定功能由 gl_FrontColor 和 gl_BlackColor 计算出来的结果
输出变量:片元处理器根据内置易变变量,进行某些计算后的输出例如本例中的gl_FragColor
因此 gl_Color 是内置属性变量,gl_Color 是内置易变变量
虽然名字一样,可是涵义完全不同..