GLSL语法要点总结:变量、矩阵、采样器和限定符

需积分: 10 1 下载量 80 浏览量 更新于2024-08-30 收藏 3KB TXT 举报
关于GLSL常量整理 GLSL(Graphics Library Shading Language)是一种基于C语言的高级着色语言,用于编写图形处理单元(GPU)上的着色器程序。在GLSL中,常量是指在着色器程序中使用的基本数据类型和复杂数据类型。下面是GLSL中常量的整理。 标量(Scalar) 在GLSL中,标量只有三种:bool、int和float。bool类型用于表示布尔值,int类型用于表示整数,float类型用于表示浮点数。 向量(Vector) GLSL中有九种向量类型:vec2、vec3、vec4、ivec2、ivec3、ivec4、bvec2、bvec3和bvec4。其中,vec2、vec3和vec4用于表示浮点数向量,ivec2、ivec3和ivec4用于表示整数向量,bvec2、bvec3和bvec4用于表示布尔向量。 矩阵(Matrix) GLSL中有三种矩阵类型:mat2、mat3和mat4,分别用于表示2x2、3x3和4x4矩阵。 采样器(Sampler) GLSL中有五种采样器类型:sampler1D、sampler2D、sampler3D、samplerCube和sampler1DShadow、sampler2DShadow。采样器用于访问纹理数据,例如访问一维、二维、三维和立方体纹理。 结构体(Struct) GLSL中的结构体与C/C++中的结构体类似,用于定义一个复杂的数据类型。例如: ```glsl struct Light { vec4 position; vec3 color; }; ``` 数组(Array) GLSL中的数组可以是固定大小的,也可以是不固定的。例如: ```glsl vec4 points[10]; // 创建一个10个元素的数组 vec4 points[]; // 创建一个不指定大小的数组 points[2] = vec4(1.0); // points现在大小为3 points[7] = vec4(2.0); // points现在大小为8 ``` 空类型(Void) GLSL中的空类型用void表示,仅用于声明不返回任何值的函数。 限定符(Qualifier) GLSL中的限定符用于限定变量的作用域和生命周期。有四种限定符:attribute、uniform、varying和const。 * attribute:用于限定变量在每个顶点上的值不同,例如顶点颜色、坐标等。 * uniform:用于限定变量在所有顶点上的值相同,例如光源位置、统一变换矩阵等。 * varying:用于限定变量在顶点着色器和片元着色器之间传递,例如顶点坐标、颜色等。 * const:用于限定变量为常量,例如π、e等数学常数。 在GLSL中,限定符与Java中的限定符类似,放在变量类型之前,并且只能用于全局变量。