数组与结构(Array and Structs)
Metal 着色语言支持数组和结构, 但是有如下限制:
- 纹理和采样器不能声明为数组.
- 纹理和采样器不能定义在结构中
- Graphics 和 Kernel 函数的参数不能为size_t 或者 ptrdiff_t 类型, 也不能为包含了这两种类型的结构.
- 结构中的成员必须被声明为属于同样的地址空间.
不同类型的大小与对齐方式:
标量与矢量:
Type |
Alignment (in bytes) |
Size (in bytes) |
---|---|---|
|
1 |
1 |
|
1 |
1 |
|
2 |
2 |
|
4 |
4 |
|
4 |
4 |
|
2 |
2 |
|
4 |
4 |
|
8 |
8 |
|
8 |
8 |
|
4 |
4 |
|
8 |
8 |
|
16 |
16 |
|
16 |
16 |
|
2 |
2 |
|
4 |
4 |
|
8 |
8 |
|
8 |
8 |
|
4 |
4 |
|
8 |
8 |
|
16 |
16 |
|
16 |
16 |
Type |
Alignment (in bytes) |
Size (in bytes) |
---|---|---|
|
4 |
8 |
|
8 |
16 |
|
8 |
16 |
|
4 |
12 |
|
8 |
24 |
|
8 |
24 |
|
4 |
16 |
|
8 |
32 |
|
8 |
32 |
|
8 |
16 |
|
16 |
32 |
|
16 |
32 |
|
8 |
24 |
|
16 |
48 |
|
16 |
48 |
|
8 |
32 |
|
16 |
64 |
|
16 |
64 |