GLSL是OpenGL着色器语言(OpenGL Shading Language)
版本说明
| OpenGLES版本 | GLSL版本 |
|---|---|
| 2.0 | 100 |
| 3.0 | 300 |
| 3.1 | 310 |
| 3.2 | 320 |
GLSL3.0与2.0差异
- 用
in和out取代attribute和varying - 头文件多了个
#version 300 es - 纹理
texture2D和texture3D统统改为texture - 内置函数
gl_FragColor和gl_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

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

被折叠的 条评论
为什么被折叠?



