В чем разница между MDLVertexDescriptor и MTLVertexDescriptor? - PullRequest
1 голос
/ 24 марта 2019

В чем разница между MDLVertexDescriptor и MTLVertexDescriptor для Metal? Интересно, почему существуют две разные структуры данных для определения дескриптора вершины?

1 Ответ

1 голос
/ 25 марта 2019

MDLVertexDescriptor - это интерфейс, который находится в платформе ввода-вывода модели.

MTLVertexDescriptor - это интерфейс, который находится в Metal framework.

Несмотря на то, что оба они представляют собой схожую концепцию (описание расположения вершин), их необходимо разделить по следующим причинам.

Прежде всего, вы можете ссылаться на обе вышеупомянутые платформы, но вам не требуется для использования любой из них.

Например, допустим, мне нужно написать приложение, которое загружает модель и рисует ее, но я не хочу изучать металл, поэтому я просто придерживаюсь OpenGL. И модель ввода / вывода соответствует моим потребностям. В этом случае я бы связался с Model I / O и OpenGL, но не с Metal, поэтому у меня не будет MTLVertexDescriptor.

С другой стороны, скажем, мне нужно написать приложение, которое загружает, скажем, модель glTF 2.0 (https://www.khronos.org/gltf/)), и, поскольку я знаю, что OpenGL устарела Apple, я хочу использовать Metal Framework В этом случае я буду ссылаться на Metal framework и некоторые другие библиотеки, которые могут загружать файлы glTF, но мне не нужен Model I / O, так как я использую glTF. Так что в этом случае у меня не будет MDLVertexDescriptor.

Оба интерфейса довольно похожи, так как оба представляют одно и то же, но различия в некоторой степени зависят от конкретного домена.

Но главная причина, по-моему, почему это разные классы, заключается в том, что Apple решила, что внедрение одинаковых концепций в обе среды лучше, чем просто разделение всех «похожих» концепций в одну среду, потому что это будет сложнее поддерживать, документ и просто обойти.

...