OpenGL超级宝典笔记五 - 基础Shader

这篇博客主要探讨了OpenGL中的片段着色器,它如何接收顶点着色器的纹理坐标和属性,利用uniform值进行光照计算,并最终决定像素的颜色输出。
摘要由CSDN通过智能技术生成
1、基本着色器的架构
顶点着色器:接收客户端输入的Attribute属性数据,有些计算后自己用于顶点变换,有些传给片段着色器。除此之外,顶点着色器还接受uniform数据,一般是变换矩阵。最后输出顶点的位置变换值。


片段着色器:接收来自顶点着色器输出的纹理坐标和纹理等属性,另外也接收用于计算光照的光照颜色的uniform值,最后输出像素的颜色值。


2、Shader的变量和数据类型
数据类型:整数(有符号和无符号),浮点数和布尔值。。没有指针和字符类型
复合数据类型:向量类型(vec3,ivec3...)和矩阵类型(max4,mac2x3...)
1、向量类型的特点:
a、向量类型的特殊寻址:我们用点号来确定多达4个向量元素的地址,可以使用下列三组标识符的任何一组:xyzw,rgba,stpq
b、调换操作:vNewColor.bgra = vOldColor.rgba
2、矩阵类型的特点:
a、矩阵其实就是一个由向量组成的数组。矩阵可以乘以向量得到一个新的向量:顶点的空间变换-> vOutPos = mvpMatrix * vVertex


3、Shader的存储限定符:in,out,inout,uniform,flat,smooth
in(输入变量):接收来自客户端提交的属性或者以前的着色器阶段传递的属性
out(输出变量):前一阶段的out变量在后续阶段的着色器能够接收到的变量
inout:由于Shader没有指针,所以这是将一个值传到一个函数并且运行这个函数修改并返回一个变量的唯一方法
flat:在两个着色器阶段之间不以一种透视正确的方法进行插值
smo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值