MetalKit: Начало работы с графической платформой Apple
MetalKit — это платформа высокого уровня, которая упрощает освоение Metal. Вот как начать использовать 3D-фреймворк Apple.
Metal — это конвейер Apple для 3D-графики и игр, предназначенный для рендеринга 3D-объектов на устройствах Apple. Разработанный для замены OpenGL и других 3D-фреймворков, Metal имеет то преимущество, что оптимизирован для оборудования Apple для достижения максимальной производительности.
Apple обеспечивает плавный 3D-рендеринг на устройствах Apple с уровнем производительности, недоступным с другими 3D-платформами.
Вы, вероятно, видели пример рендеринга металла на устройстве iOS или macOS, если подписались и запустили приложение аркадной игры Apple. Краткая вводная анимация в Arcade визуализируется с помощью Metal:
В 2015 году на WWDC Apple представила еще одну платформу более высокого уровня для Metal под названием MetalKit. Эта платформа упрощает использование Metal, предоставляя некоторые функции более высокого уровня, которые упрощают разработку 3D-приложений.
В частности, MetalKit предоставляет дополнительные API-интерфейсы Metal в следующих областях:
При использовании MetalKit загрузку ресурсов и текстур упрощает использование класса MTKTextureLoader. Этот класс предоставляет простой способ загрузки ресурсов и текстур, а также установки параметров текстур.
Эти параметры включают использование и загрузку MIP-карт, режимы кэша и хранения, преобразование координат текстуры, использование текстуры куба и параметры цвета RGB.
Mip-карта (или MIP-карта) — это просто многослойное изображение, разрешение каждого слоя которого постепенно снижается по сравнению с предыдущим слоем. Mip-карты используются для ускорения рендеринга изображений и удаления артефактов сглаживания, таких как муаровые узоры.
Муаровый узор — это отвлекающий узор из полос или цветных артефактов, который иногда появляется в компьютерной графике и состоит из линий или регулярных пиксельных узоров, таких как чередующиеся пиксельные сетки:
Полная документация по MTKTextureLoader доступна на веб-сайте разработчика Apple в документации Metal framework по адресу Documentation/MetalKit/MTKTextureLoader.
Model I/O — это платформа разработчиков Apple для управления 3D- и 2D-ресурсами. Интеграция ввода-вывода модели MetalKit включает API для быстрой загрузки текстур в буферы Metal и использования данных сетки с использованием контейнеров.
В настоящее время в MetalKit существует около полдюжины классов, связанных с модельным вводом-выводом, в основном имеющих дело с сетками. (Через минуту мы перейдем к классам и объектно-ориентированному программированию).
Большинство приложений iOS и macOS используют представления — стандартные классы, которые представляют визуальную информацию и элементы пользовательского интерфейса на экране. Различные подклассы представлений предоставляют разные типы представлений.
Например, в iOS UIView — это базовый класс представления, а UIButton — это класс представления кнопок, производный от UIView. Используя объектно-ориентированные классы представлений в iOS или macOS, вы можете создавать дополнительные функциональные возможности, основанные на стандартных функциях, уже определенных классами Apple.
Это известно как наследование объектов. Думайте об объекте в приложении как о пакете кода, который инкапсулирует как код, так и данные, с которыми код работает. Объединив их в объекты, код можно легко повторно использовать и перепрофилировать с помощью дополнительных объектов.
В частности, в MetalKit предусмотрен новый класс — MTKView, который позволяет разработчикам создавать полноценные представления Metal в приложениях. Имея специальный класс представления Metal, представление может оптимально рисоваться и управляться с помощью Metal без какого-либо дополнительного кода.
Документация Apple для MTKView находится на веб-сайте разработчика Documentation/MetalKit/MTKView. MTKView также требует, чтобы вы сначала установили MTLDevice в одном из его свойств, чтобы указать ему, на каком устройстве и экране визуализировать металлические объекты.
MTKView также предоставляет MTLRenderPassDescriptor, когда вас спрашивают, в какой из них вы можете визуализировать свои текстуры. Посетите раздел «Документация/Metal/Render Passes» на сайте разработчиков Apple.
В объектно-ориентированном программировании (ООП) объекты определяются классами. Класс — это определение в файле исходного кода, которое определяет, что содержит объект, а в Swift — фактическую реализацию объекта.
Класс определяет методы (функции), которые могут получать сообщения, отправленные им другими объектами, для выполнения некоторой функции. Каждый метод содержит код для выполнения некоторой работы.