получить доступ к быстрому Структуре или классу в Металлическом Файле - PullRequest
0 голосов
/ 26 октября 2018

В файле swift объявлены данные вершин:

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

Я хочу получить доступ к этой структуре в металлическом файле, возможно ли это?если да, то как это сделать?

Я уже знаю, как сделать это с помощью Objective-C, просто хочу использовать swift.

1 Ответ

0 голосов
/ 26 октября 2018

Невозможно использовать структуру 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)]];
};
...