Невозможно использовать структуру Swift напрямую из Metal.Однако вы можете объявить структуру в заголовке Objective C и использовать ее (через соединительный заголовок Objective C) как в Swift, так и в Metal.Обратитесь к шаблону Metal Game, предоставленному с Xcode, для примера того, как это сделать.Вопреки рекомендациям Apple, я предпочитаю этого не делать, а вместо этого объявляю такие структуры на каждом из соответствующих языков.
Эквивалентное объявление структуры в Metal Shading Language -
struct Vertex {
float4 position;
float4 color;
};
Если вы используете дескриптор вершины в своем конвейере (с параметром stage_in
для функции вершины, в отличие от ручного извлечения вершины с использованием vertex_id
и указателя на Vertex
структуры), вы 'Вам нужно будет добавить атрибуты атрибутов в структуру, соответствующие их индексам в массиве атрибутов дескриптора вершины.Например,
struct Vertex {
float4 position [[attribute(0)]];
float4 color [[attribute(1)]];
};