OpenGLES(四)glsl语法

GLSL是OpenGL的着色器语言,主要版本有2.0和3.0。GLSL3.0引入了in和out关键字替换attribute和varying,并删除了内置的gl_FragColor。顶点着色器使用in接收顶点数据,out指定颜色输出。片段着色器必须有一个颜色输出。uniform用于从CPU向GPU传递数据,且有多种设置和获取方法。精度限定符可以设置数据类型的默认精度。

GLSL是OpenGL着色器语言(OpenGL Shading Language)

版本说明

OpenGLES版本 GLSL版本
2.0 100
3.0 300
3.1 310
3.2 320
GLSL3.0与2.0差异
  • inout 取代 attributevarying
  • 头文件多了个 #version 300 es
  • 纹理 texture2Dtexture3D 统统改为 texture
  • 内置函数 gl_FragColorgl_FragData 删除,如果片段着色器要输出用out声明字段输出,不过保留了gl_Position
  • 可直接使用 layout 指定属性位置

数据类型

  • 基本数据类型:void、int、float、double、uint、bool
  • 容器数据类型:向量(Vector)、矩阵(Matrix)
向量

可以包含有2、3、4个分量,分量的类型可以是基础数据类型的任意一个(除过void类型),n表示向量维度,如下表:

数据类型 说明
vecn 包含n个float分量的默认向量
bvecn 包含n个bool分量的默认向量
ivecn 包含n个int分量的向量
uvecn 包含n个unsigned int分量的向量
dvecn 包含n个double分量的向量
  • 一个向量可能有特殊含义,其可以看作是空间坐标(x,y,z,w)、颜色(r,g,b,a)或纹理坐标(s,t,p,q)。
  • 向量的分量可以通过vecn.x这种方式获取,可以分别使用.x、.y、.z、.w来获取它们的第1、2、3、4个分量(或着使用颜色vecn.rgba、或者使用纹理venc.stpq)。
  • 向量可以使用上面4个字母任意组合来创建一个和分量类型相同的新向量,只要原来向量有那些分量即可,这个叫做向量重组
//如果向量构造器中只提供了一个标量参数,则向量中所有值都会设定为该参数,即color={1.0,1.0,1.0,1.0}
vec4 color = vec4(1.0);

//向量重组
vec2 someVec;
vec4 differentVec = someVec.xyxx;
vec3 anotherVec = differentVec.zyw;
vec4 otherVec = som
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值