OpenGL着色器语言GLSL语法总结

本文详细介绍了OpenGL着色器语言GLSL的基础语法,包括变量类型如bool、int、float及其向量和矩阵表示,以及变量限定符如in、out和uniform的使用。内容涵盖纹理类型、结构体、数组,并强调了in和out在着色器阶段的数据传递作用。此外,还提及流控制语句和函数定义,特别是main()函数作为着色器执行入口。GLSL中的内建变量和内建函数,如基本操作、三角函数、指数函数、几何函数和纹理函数,也是讨论的重点。
摘要由CSDN通过智能技术生成

GLSL语法与C语言类似。

1、变量类型

基础类型:bool,int,uint,float,double与C语言的类型类似。

向量类型:vecN,bvecN,ivecN,uvecN,dvecN,N表示向量维数(N=1,2,3,4),含前缀b为bool向量,i为int向量,u为uint向量,d为double向量,不含前缀为float向量,可以通过.xyzw(直角坐标)或者.rgba(颜色分量)或者.stpq(纹理坐标)分别访问第1、2、3、4个分量,并且分量可以随其重组,构成新的向量。向量用法示例:

vec2 v2  = vec2(0.0,1.0);
vec3 v3  = v2.xxy;           //v3=(0.0,0.0,1.0)
vec4 v4  = vec4(v3.zyx,0.1); //v4=(1.0,0.0,0.0,0.1)
vec4 v41 = vec4(v2,0.1,0.2);     //v41=(0.0,1.0,0.1,0.2)

矩阵类型:mat2,mat3,mat4分别为2x2,3x3,4x4 float矩阵,如mat2 m=mat2(1.0,2.0,3.0,4.0);构造一个2x2的矩阵,(1.0,2.0)为第一列,(3.0,4.0)为第二列。

纹理类型:sampler2D,samplerCube分别为2D纹理和立方体纹理;

结构体:与C语言结构体类似;

数组:与C语言数组类似,但GLSL中只能使用一维数组。

2、变量限定符

in和out:in和out设定变量为输入或输出,out标识的变量被送往下一着色器阶段,如果在下一阶段的in变量与该out变量相同(名称和类型都要相同),则使用该out变量的值。in和out还可以用于接口块(Interface Block),以传送一组数据,如下面示例的Interface_Block。如果片段着色器定义out vec4变量,则该变量就是最终的像素颜色。此外为方便在OpenGL中找到变量位置,可使用layout,layout(location=n)标识变量的位置,OpenGL中glVertexAttribPointer的第一个参数就是这个n的值,通过这个位置可以很方便设置顶点属性,如果没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值