GLSL 数据类型和限定符

GLSL的语言定义:
数据类型:
1、标量
float :声明一个单独的浮点数
int:声明一个单独的整数
uint  :声明一个无符号的整数
bool:声明一个单独的布尔数
不支持默认类型,必须在声明的时候指定类型。

2、矢量
vec2 :包含2个浮点数的矢量
vec3 :包含3个浮点数的矢量
vec4 :包含4个浮点数的矢量

ivec2 :包含2个整数的矢量
ivec3 :包含3个整数的矢量
ivec4 :包含4个整数的矢量

uvec2 :包含2个无符号整数的矢量
uvec3 :包含3个无符号整数的矢量
uvec4 :包含4个无符号整数的矢量

bvec2 :包含2个布尔数的矢量
bvec3 :包含3个布尔数的矢量
bvec4 :包含4个布尔数的矢量

内置的矢量可以很方便的存储和操作颜色、位置和纹理坐标等。
矢量的特殊性质包括可以通过字段选择(就像是用结构一样)或者作为数组来访问各个分量。
例如:
如果position是一个vec3,那么可以认为它是矢量(x, y, z),而position.x就将选择矢量
的第一部分。
总之,可以使用下面的名称来选择矢量的各个部分:
x、y、z、w将矢量看作一个位置或者是方向
r、g、b、a将矢量看作一种颜色
s、t、p、q将矢量看作一个纹理坐标
对于将矢量指定为一种颜色、一个位置、一个坐标等,并没有明确的方法,提供这些分
量选择名称只是为了在着色器程序中具有更好的可读性。从语言的角度来说,这些都是
矢量。

3、矩阵
对于浮点数矩阵,可以使用内置类型。其大小有 2*2 、 3*3 、 4*4 三种。
mat22*2 的浮点数矩阵
mat33*3 的浮点数矩阵
mat44*4 的浮点数矩阵

可以将矩阵作为矢量的数组来访问,也就是说,如果一个transform是一个mat4,那么
transform[2]就是transform的第三列。transform[2]的最终类型就是vec4。因为矢量是
可以作为数组来对待的,所以transform[3][1]是构成transform矩阵的第 4 列的第 2 个
分量。看起来好像矩阵transform是一个二维数组一样。只需要记住,transform的第一个
索引选定的是列而不是行,第二高峰索引选定的才是行。
    
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值