OpenGL GLSL 语法和函数详解
Last updated
Last updated
可用的数据类型只有4种:有符号整数,无符号整数,浮点数,布尔值。 OpenGL着色语言中没有指针和字符串或字符。返回值可以为void。
所有4种基本数据类型都可以存储在二维、三维或者四维向量中:
OpenGL着色语言向量数据类型
GLSL 类型 | 描述 |
---|---|
矩阵类型只支持浮点数
OpenGL着色语言矩阵数据类型
GLSL 类型 | 描述 |
---|---|
限定符用于将变量标记为输入变量、输出变量或常量。
变量存储限定符
属性是每个顶点位置、表面法线和纹理坐标等都需要的,而统一值则用于为整个图元批次向保持不变的(统一(uniform)的)着色器传递数据。 创建一个统一值只需在变量声明开始时放置一个uniform关键词:
限定符 | 描述 |
---|---|
vec2,vec3,vec4
2分量、3分量和4分量浮点向量
ivec2,ivec3,ivec4
2分量、3分量和4分量整数向量
uvec2,uvec3,uvec4
2分量、3分量和4分量无符号整数向量
bvec2,vbec3,bvec4
2分量、3分量和4分量布尔向量
mat2,mat2x2
两行两列
mat3,mat3x3
三行三列
mat4,mat4x4
四行四列
mat2x3
三行两列
mat2x4
四行两列
mat3x2
两行三列
mat3x4
四行三列
mat4x2
两行四列
mat4x3
三行四列
const
一个编译时常量,或者说是一个队函数来说为只读的参数
in
一个从以前的截断传递过来的变量
in
centroid 一个从以前的截断传递过来的变量,使用质心插值
out
传递到下一个处理阶段或者在一个函数中指定一个返回值
out
centroid 传递到下一个处理阶段,使用质心插值
inout
一个读/写变量,只能用于局部函数参数
uniform
一个从客户端代码传递过来的变量,在顶点之间不做改变