Skip to content

Latest commit

 

History

History
70 lines (48 loc) · 2.11 KB

glsl-syntax.md

File metadata and controls

70 lines (48 loc) · 2.11 KB

OpenGL GLSL 语法和函数详解

变量和数据类型

可用的数据类型只有4种:有符号整数,无符号整数,浮点数,布尔值。 OpenGL着色语言中没有指针和字符串或字符。返回值可以为void。

向量类型

所有4种基本数据类型都可以存储在二维、三维或者四维向量中:

OpenGL着色语言向量数据类型

GLSL 类型 描述
vec2,vec3,vec4 2分量、3分量和4分量浮点向量
ivec2,ivec3,ivec4 2分量、3分量和4分量整数向量
uvec2,uvec3,uvec4 2分量、3分量和4分量无符号整数向量
bvec2,vbec3,bvec4 2分量、3分量和4分量布尔向量

矩阵类型

矩阵类型只支持浮点数

OpenGL着色语言矩阵数据类型

GLSL 类型 描述
mat2,mat2x2 两行两列
mat3,mat3x3 三行三列
mat4,mat4x4 四行四列
mat2x3 三行两列
mat2x4 四行两列
mat3x2 两行三列
mat3x4 四行三列
mat4x2 两行四列
mat4x3 三行四列

�存储限定符

限定符用于将变量标记为输入变量、输出变量或常量。

变量存储限定符

限定符 描述
const 一个编译时常量,或者说是一个队函数来说为只读的参数
in 一个从以前的截断传递过来的变量
in centroid 一个从以前的截断传递过来的变量,使用质心插值
out 传递到下一个处理阶段或者在一个函数中指定一个返回值
out centroid 传递到下一个处理阶段,使用质心插值
inout 一个读/写变量,只能用于局部函数参数
uniform 一个从客户端代码传递过来的变量,在顶点之间不做改变

着色器统一值

属性是每个顶点位置、表面法线和纹理坐标等都需要的,而统一值则用于为整个图元批次向保持不变的(统一(uniform)的)着色器传递数据。 创建一个统一值只需在变量声明开始时放置一个uniform关键词:

uniform float u_time; // 总是只读的

OpenGL GLSL 语法和函数详解