GLSL中的gl_Color在顶点着色器和片段着色器中的不同意义

转载请标明出处:http://blog.sina.com.cn/s/blog_41630e7e01008uu6.html


先来看看这2段代码
 
顶点着色器:
void main()
{
    gl_FrontColor = gl_Color;

    gl_Position = ftransform();
}

片元着色器:

void main()

     gl_FragColor = gl_Color;
}

 

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 内置易变变量

虽然名字一样,可是涵义完全不同..


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值