在Metal File中访问Swift Struct或类

时间:2018-10-26 08:10:44

标签: ios swift metal

在swift文件中,顶点数据已声明:

struct Vertex {
    let position: vector_float4
    let color: vector_float4
}

我想在金属文件中访问此结构,可以吗? 如果是,怎么做?

我已经知道如何通过Objective-C做到这一点,只是想使用swift。

1 个答案:

答案 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