在三维开发中,着色器是WebGL
渲染三维图形的关键,GLSL
是专门用来编写着色器的编程语言,是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。这里主要总结下数据类型,变量,运算,程序流,函数,attribute,uniform,varying,预处理和指令等。
1.数据类型
GLSL
支持两种数据类型。只有数据类型和布尔值类型,没有字符串类形。
-
数据类型:
GLSL
只支持整型数和浮点数两种。 -
布尔值类型:
GLSL
支持布尔值类型,包括true
和false
。
2.变量
GLSL
中的变量命名跟其它语言没啥区别,由英文字母、数字、下划线等组成,但变量不能以数字开头。GLSL
是强类型的语言,在对变量进行赋值的时候,左右两边的类型必须相等。
3.矢量和矩阵类型
矢量主要包括以下类型:
vec2
,vec3
,vec4
:表示具有2,3,4个浮点数元素的矢量。
ivec2
,ivec3
,ivec4
:表示具有2,3,4个整型数元素的矢量。
bvec2
,bvec3
,bvec4
:表示具有2,3,4个布尔值元素的矢量。
mat2
,mat3
,mat4
:表示2x2
,3x3
,4x4
的浮点数元素的矩阵。
4.attribute变量
attribute
变量只能出现在顶点着色器中,只能被声明为全局亦是,被用来表示顶点的信息。attribute
的亦是类型只能是float
,vec2
,vec3
,vec4
,mat2
,mat3
,mat4
。
4.uniform变量
uniform
变量可以用在顶点着色器和片元着色器中,且必须是全局变量。uniform
是只读的,它可以是除了数组或结构体之外的任意类型。
5.varying
varying
变量用于从顶点着色器向片元着色器传输数据。必须是全局变量。并且必须在两种着色器中声明同名和同类型的varying
变量。