在swift文件中,顶点数据已声明:
struct Vertex {
let position: vector_float4
let color: vector_float4
}
我想在金属文件中访问此结构,可以吗? 如果是,怎么做?
我已经知道如何通过Objective-C做到这一点,只是想使用swift。
答案 0 :(得分:0)
不可能直接从Metal使用Swift结构。但是,您可以在Objective-C标头中声明该结构,并在Swift和Metal中同时使用它(通过Objective-C桥接标头)。有关如何执行此操作的示例,请参阅Xcode随附的Metal Game模板。与Apple的最佳做法建议相反,我实际上不愿意这样做,而是以每种相应的语言声明这种结构。
金属着色语言中的等效结构声明为
struct Vertex {
float4 position;
float4 color;
};
如果您正在管道中使用顶点描述符(对顶点函数使用stage_in
参数,则与通过获取vertex_id
和指向{{ 1}}结构),您需要将属性属性添加到结构中,并与它们在顶点描述符属性数组中的索引相对应。例如,
Vertex