indent

GLSL ES

1
2
3
4
varying vec2 vUv;
void main() {
gl_FragColor = vec4(vUv.x, vUv.y, 0.0, 1.0);
}

main()函数是GLSL ES程序的入口,一个着色器程序有且仅有一个main函数,并且不能接受任何参数。

强类型语言

声明变量时,必须指明变量类型。
在定于函数时,必须指明函数的返回值。如上main前的void就是表示函数不返回任何值。

基本数据类型

  • 数值类型 (整型数和浮点数)
  • 布尔值类型

没有字符串类型

其他数据类型

  • 矢量
  • 矩阵

矢量和矩阵类型是由多个基本数据类型组成。

声明变量

前面说到的GLSL ES是强类型语言,那么就不能像js那样申明任何变量都用一个关键词var。而是通过不同的关键词来申明不同类型的变量:

foat a; 申明浮点类型变量a;
int b = 1; 申明整行类型变量b,赋值为1;
bool c = false; 声明布尔类型变量c,赋值为false。

赋值符号=右侧的数据类型必须为左边指明的数据类型,否则会报错。

对于声明非基本数据类型的变量,也有相应的关键词:

  • vec2 | vec3 | vec4 具有2,3,4个浮点数元素的矢量
  • ivec2 | ivec3 | ivec4 具有2,3,4个整型数元素的矢量
  • bvec2 | bvec3 | bvec4 具有2,3,4个布尔值元素的矢量
  • mat2 | mat3 | mat4 22,33,4*4的浮点数元素的矩阵

在给非基本数据类型的变量赋值时,会调用与申明该变量所用关键词同名的构造函数,例如:

vec3 point = vec3(1.0, 0.0, 0.8);

在用矩阵构造函数来构造矩阵时,必须按列主序的顺序来传入每一个值。

849890769@qq.com

Comments

添加评论
评论列表
Proudly published with Hexo