GLSL语言–OpenGL Shading Language
无论是OpenGL还是其他图形API的着色器,通常都是通过一种特殊的编程语言去编写的。对于OpenGL来说,我们会使用GLSL,它是在OpenGL2.0版本左右发布的,GLSL与“C”语言非常类似,当然还有一点C++的影子。因为从下一节基本图元的绘制开始,我们就会开始接触到GLSL,所以必须先介绍GLSL。我们主要从以下几个常用的方面介绍:
1. 注释
类型 | 符号 |
---|---|
单行注释 | // |
多行注释 | /* 内容 */ |
2.基本数据类型
GLSL是一种强类型语言,所有变量都必须事先声明,并要给出变量的类型(如下表)。变量名的命名规范与C语言相同:可以使用字母、数字、以及下划线字符,但是数字不能作为变量名称的第一个字符,此外也不能包含连续的下划线。
类型 | 符号 |
---|---|
float | 32位浮点数 |
double | 64位浮点数(使用double时要看是否支持,不支持要看起扩展) |
int | 有符号二进制补码的32位整数 |
uint | 无符号的32位整数 |
bool | 布尔值 |
3. 聚合类型
GLSL的基本类型可以合并,从而与OpenGL的数据类型相匹配。GLSL支持2个、3个以及4个分量的向量,每个分量都可以使用bool、int、uint、float、double这些基本变量,此外GLSL也支持float和double类型的矩阵。具体如下表:
基本类型 | 2D向量 | 3D向量 | 4D向量 | 矩阵类型 | 非方阵矩阵 |
---|---|---|---|---|---|
float | vec2 | vec3 | vec4 | mat2 mat3 mat4 | mat2x2 mat2x3 mat4x2… |
double | dvec2 | dvec3 | dvec4 | dmat2 dmat3 dmat4 | dmat2x2 dmat2x3 dmat4x2… |
i |