在 swift 文件中,声明了顶点数据:
struct Vertex {
let position: vector_float4
let color: vector_float4
}
我想在 metal 文件中访问这个结构,可以吗? 如果是,如何制作?
我已经知道如何使用 Objective-C 来实现,只是想使用 swift。
最佳答案
直接从 Metal 中使用 Swift 结构是不可能的。但是,您可以在 Objective-C header 中声明该结构,并在 Swift 和 Metal 中使用它(通过 Objective-C 桥接 header )。有关如何执行此操作的示例,请参阅随 Xcode 提供的 Metal Game 模板。与 Apple 的最佳实践建议相反,我实际上不想这样做,而是在每种相应语言中声明此类结构。
Metal 着色语言中的等效结构声明是
struct Vertex {
float4 position;
float4 color;
};
如果您在管道中使用顶点描述符(顶点函数带有一个 stage_in
参数,而不是通过接收一个 vertex_id
来手动获取顶点和指向 Vertex
结构的指针),您需要将属性属性添加到结构中,对应于它们在顶点描述符属性数组中的索引。例如,
struct Vertex {
float4 position [[attribute(0)]];
float4 color [[attribute(1)]];
};
关于ios - 访问 Metal 文件中的快速结构或类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53004271/