GLSL语法要点总结:变量、矩阵、采样器和限定符
需积分: 10 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中的限定符类似,放在变量类型之前,并且只能用于全局变量。
1387 浏览量
503 浏览量
265 浏览量
217 浏览量
123 浏览量
2013-08-24 上传
李二二
- 粉丝: 8
- 资源: 8
最新资源
- yolov3 yolov3-tiny yolov4 yolov-tiny预训练模型下载
- TCSC.zip_tcsc simulink_无功补偿_电力 补偿_电容器_电容器补偿
- fs-family:已弃用:显示一对夫妇,并可以选择加载和显示该夫妇的孩子
- github-upload
- Open-Myo:使用通用BLE接口从Myo臂章获取数据的Python模块
- D3-React-Patterns:各种技术和模式的集合,用于在较大的React框架内组织D3项目。 这将是任何人都可以参与的公开回购,更多细节可以在DVS松弛中找到。
- Yolov5-master.zip
- RoboSpice-samples:RoboSpice库的所有样本
- ExtremeSpaceCombat:带有太空飞船的Java游戏
- 学生管理系统源码.zip
- FurniTale::no_entry:种族关系进展
- 捷德
- Trapped
- 高斯白噪声matlab代码-PE-GAMP:带有内置参数估计的通用近似图像消息传递
- 安卓Android活动社交仿QQ聊天app设计
- sdnotify-proxy:在不同cgroup中的systemd和进程之间代理sd_notify消息