一、GLSL是什么?
GLSL(OpenGL Shading Language),是用来在OpenGL中编写着色器(顶点着色器和片元着色器)程序的语言,该程序会在GPU(Graphic Processor Unit)上执行,使得渲染管线具有可编程性。
二、GLSL的特有语法
GLSL和C非常相似,基本类型、函数、结构体(stuct、对应java的class)比较常用,流程控制等。没有指针,但增加了不少着色器特有的基本类型。
学习一门语言首先看它的数据类型的表示,再学习具体的运行流程,由于运行流程上和C、Java等语言基本一致。所以我们来重点看看GLSL特有的数据类型的表示,从基本类型、修饰符、内置变量、内置函数四个方面说明。
2.1 基本类型
在计算机图形中,向量和矩阵是变换的基础,这两种数据类型也是GLSL的核心
vec2 ,vec3 ,vec4:浮点向量
ivec2 ,ivec3 ,ivec4:整数向量
uvec2 ,uvec3 ,uvec4:无符号整型向量
bvec2 ,bvec3 ,bvec4:boolean向量
mat2,mat3,mat4,mat2x3…:浮点矩阵
sampler2D :二维纹理句柄
2.2 修饰符
const:(只读) 常量变量
attribute:只能用于顶点着色器,用于经常更改的信息
uniform: (始终如一的)用于不经常更改的信息,