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

本文介绍了Metal着色语言中数组与结构的使用限制,包括纹理和采样器不能声明为数组或定义在结构中等。同时,还详细说明了不同类型数据的大小与对齐方式,并解释了如何使用alignas对齐符来声明类型或对象对齐。
689

被折叠的 条评论
为什么被折叠?



