数组与结构(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 |