Shader历程——数据传递

本文介绍了OpenGL中数据如何传递给shader,包括Attribute、Uniform和Varying类型数据的使用和传递方式,以及如何通过GLSL指令进行数据管理,强调了glVertexAttrib*系列指令在自定义attribute数据中的应用和glUniform*系列指令在传递Uniform数据中的作用。
摘要由CSDN通过智能技术生成
“前文再续,书接上一回”。。。。大闹西游看多了^_^ 作为一个图形应用程序的一部分,shader定义了这个程序的图形渲染指令。但要让系统按照我们的设计去渲染图形,我们还需要把必要的数据传递给shader。shader是由gpu来负责执行的,那么数据如何能按照我们的要求传入shader,由gpu来获取呢? 首先我们来粗略地了解一下shader中的数据类型吧。因为处理器不一样,shader也有一些自己特有的数据类型。 标量数据类型有float, int, bool; 矢量数据类型有vec2, vec3, vec4,即2、3、4维向量,其中的分量可以是三种标量数据类型中的任何一种),然后是矩阵,同样也有2、3、4维; 采样器数据类型有6种:sampler1D,sampler2D,sampler3D,samplerCube,sampler1DShadow和sampler2DShadow。它们的功能是用于纹理采样; 此外,还有跟c/c++一样的“结构体”,“数组”等。 shader中的数据可以分为如何三类: 1. Attribute类型。这一类数据是shader中变化频率最快的,它由应用程序传递到vertex shader,为每一顶点指定,一般是描述顶点的属性,如坐标、颜色、法线等。在opengl中,glVertex, glNormal等指令都会把这类数据传递给vertex shader。 2. Uniform类型。这一数据的变化频率相对比较低,一般来说全局的渲染属性就属于这一类数据,如光源的参数、视点的位置等,它们对于所有顶点来说都是一样的。 3. Varying类型。这种类型用于从vertex shader往pixel shader传递数据,vertex shader的计算结果通过它们流入到pixel shader环
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值