GLSL 结构体和数组

结构体

着色语言还提供了类似于 C 语言中的用户自定义结构体,同样也是使用struct关键字进行声明,基本用法如下所示:

struct info {
        vec3 color;
        vec3 postion;
        vec3 textureCoor;
};

声明了info类型的结构体之后,就可以像使用内建数据类型一样使用这个用户自定义类型了,如:

info CubeInfo;    //声明了一个 info 类型的变量 CubeInfo

对于结构体来说,其他的使用方法都与 C 语言基本类似,这里就不再累述了,需要的读者可以查阅参考 C 语言结构体部分的相关知识。

数组

从前面对向量的介绍中应该能够感觉到,着色语言应该支持自定义数组的,实际情况也确实如此。声明数组的方式主要有两种,具体情况如下所示:

(1)声明数组的同时,指定数组的大小。

vec3 postion[20];    //声明了一个包含20个vec3的数组,索引从0开始

(2) 在声明数组并初始化的同时,可以不指定数组的大小。

float x[] = float[2](1.0, 2.0);        //数组的长度为2
float y[] = float[](1.0 ,2,0, 3.0);    //数组的长度为3

着色语言只支持一维数组,不支持二维数组。

空类型

空类型使用void表示,仅用来声明不返回任何值的函数。例如在顶点着色器以及片元着色器中必须存在的 main 函数就是一个返回值为空类型的函数,代码如下所示:

void main()                           //声明一个空返回值类型的 main 方法
    {/*函数的具体操作省略*/}
赞(2)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址