Vulkan sdk что это

Начало работы с Vulkan SDK

Vulkan sdk что это. lazy placeholder. Vulkan sdk что это фото. Vulkan sdk что это-lazy placeholder. картинка Vulkan sdk что это. картинка lazy placeholder

Vulkan sdk что это. lazy placeholder. Vulkan sdk что это фото. Vulkan sdk что это-lazy placeholder. картинка Vulkan sdk что это. картинка lazy placeholder

Версия для Windows

В этом руководстве описаны требования и процедура установки Vulkan SDK для Windows. Всю документацию по SDK можно найти в Интернете по адресу vulkan.lunarg.com, а также информацию об отслеживании проблем SDK и любую последнюю информацию.

Vulkan API — это Явный кроссплатформенный графический API с низкими накладными расходами, который предоставляет приложениям прямой контроль над графическим процессором, повышая производительность приложений. Дополнительные сведения о спецификации и API Vulkan см. На сайте Khronos.org. Для получения информации на уровне руководства см. Руководство по Vulkan на сайте загрузки Vulkan SDK.

Этот SDK НЕ включает Vulkan Водитель. Обратитесь к поставщику оборудования графического процессора для получения устанавливаемого клиентского драйвера Vulkan (ICD). Этот SDK позволит вам создавать приложения Vulkan, но для их выполнения вам понадобится Vulkan ICD.

Этот SDK НЕ включает загрузчик Vulkan. Загрузчик Vulkan поставляется с пакетом драйверов от поставщика оборудования графического процессора.

Управление версиями

Компоненты в этом SDK построены с использованием конкретной версии заголовка Khronos Vulkan API, версия которой отражается в номере версии SDK. Например, версия SDK vwxx.0 указывает, что SDK использует заголовок Vulkanrevision, где:

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

Например, SDK Версия 1.1.70.0 указывает, что SDK использует версию 1.1.70 заголовка Vulkan.

После установки драйвера Vulkan в вашей системе есть версия для вашего Vulkan Loader и версия для каждого физического устройства. 1. Версия экземпляра Vulkan. Это версия вашего загрузчика Vulkan. Если вы запустите vulkaninfo, версия экземпляра Vulkan будет первым сообщенным элементом. Загрузчик Vulkan поставляется с пакетом обновления вашего драйвера. 2. Для каждого физического устройства существует «apiVersion». ApiVersion — это версия вашего драйвера Vulkan. Вы можете найти apiVersion для каждого физического устройства из выходных данных vulkaninfo в разделе «Свойства и расширения устройства».

Терминология

СрокОписание
МКБУстанавливаемый драйвер клиента — драйвер дисплея, совместимый с Vulkan
GLSLOpenGL Shading Language
LayerБиблиотека, предназначенная для работы в качестве плагина для загрузчика. Обычно он служит для обеспечения функциональности проверки и отладки для приложений
LoaderБиблиотека, которая реализует точки входа Vulkan API и управляет слои, расширения и драйверы. Он находится в установках драйвера независимого поставщика оборудования
SPIR ‑ VСтандартное переносимое промежуточное представление — промежуточное соединение между API язык, который изначально представляет параллельные вычислительные и графические программы
VulkanЯвный графический API с низкими накладными расходами, разработанный Khronos Group и компании-члены
WSIИнтеграция оконной системы

Системные требования

Для разработки Vulkan с использованием Vulkan SDK требуется система разработки Windows, отвечающая определенным требованиям к оборудованию и программному обеспечению. Эти спецификации следующие:

Кроме того, для сборки примеров и демонстраций необходимо установить следующие программы:

Загрузите SDK

Установите SDK

Содержимое SDK

Vulkan SDK предоставляет компоненты разработки и времени выполнения для создания, отслеживания и воспроизведения приложений Vulkan. SDK также включает в себя компоненты среды выполнения для загрузки и запуска уровней проверки и отладки приложений Vulkan. В процессе установки SDK устанавливается содержимое, как описано в таблице ниже. Пути указаны относительно каталога, в котором установлен SDK.

Настройте среду выполнения Среда

Убедитесь, что вы установили графический драйвер, который включает поддержку ICD для Vulkan. За соответствующими драйверами обращайтесь к поставщику графического оборудования. Пакет драйверов от поставщика графического оборудования также включает загрузчик Vulkan, который является необходимой частью среды выполнения Vulkan.

Запуск с альтернативным SDK

Если больше, чем в системе установлена ​​одна версия SDK, путь к каталогу Bin последней установленной версии SDK будет первым в среде PATH переменная. Чтобы переключаться между различными версиями SDK, просто переустановите версию SDK, которую вы хотите использовать; не требуется удалять SDK перед повторной установкой другого.

ICD и конфигурация уровней

Проверить установку

Проверьте установку Vulkan SDK, выполнив следующие действия:

Сборка демонстрационных программ

Демонстрационные приложения Vulkan используют файлы решений Microsoft Visual Studio. Чтобы собрать демонстрационные программы, откройте InstallPath > Demos DEMOS.sln код> файл. Это запустит Microsoft Visual Studio, откроет решение с конфигурацией сборки по умолчанию Debug/Win32. Выберите желаемую конфигурацию сборки (например, Debug/x64 ). При сборке решения будут построены все демонстрационные приложения. Если вы используете версию Visual Studio новее 2015, вам будет предложено обновить файлы проекта. Это не должно вызывать никаких проблем.

Трассировка и воспроизведение

Vulkan SDK поддерживает трассировку и воспроизведение приложений Vulkan. Обратитесь к руководству Vulkan Trace and Replay Tools для получения подробной информации о трассировке и воспроизведении Vulkan.

Отслеживайте демонстрационную программу Vulkan Cube, выполнив следующие команды из командная строка:

Воспроизвести только что созданный файл трассировки куба Vulkan:

Обратите внимание на параметры, используемые в приведенной выше команде.

Включить уровни проверки и служебные уровни

Vulkan SDK включает поддержку среды выполнения для уровней проверки и служебных программ. Эти уровни можно включить для запуска приложения или воспроизведения трассировки, установив в переменной среды VK_INSTANCE_LAYERS список имен слоев или расширений, разделенных точкой с запятой, как указано в файлах манифеста уровня. Дополнительную информацию о файлах манифеста слоев см. В документе Vulkan Validation and Utility Layers.

Vulkan SDK включает следующие уровни:

Подробную информацию о слоях см. в документации Vulkan Validation и Utility Layers.

Слои можно включить либо с помощью графического инструмента, Vulkan Configurator, либо путем установки переменных среды. В качестве примера в этом разделе будет показано, как включить уровень дампа API с помощью Vulkan Configurator. Уровень дампа API позволит вам исследовать вызовы API Vulkan из приложения. Более подробную информацию о Vulkan Configurator можно найти здесь.

Запустите программу Vulkan Cube из командной строки:

Деактивируйте слои, которые вы только что активировали в конфигураторе Vulkan, нажав кнопку «Очистить» в нижней части окна.

Создать новый проект Visual Studio

Пакет Vulkan SDK включает шаблоны Visual Studio, чтобы программист мог легко создать проект Vulkan, не настраивая пути включения и библиотеки. Шаблоны находятся в установочном каталоге SDK в подкаталоге «Шаблоны». Чтобы эти шаблоны отображались в Visual Studio, их необходимо скопировать в каталог, в котором Visual Studio ищет шаблоны C ++. По умолчанию это находится в:

Vulkan SDK включает отдельные шаблоны для Visual Studio 2015, 2017 и 2019. Шаблоны можно включить, скопировав zip-файлы из каталога шаблонов SDK в путь Visual Studio, указанный выше. Возможно, вам придется создать один или несколько каталогов по указанному выше пути.

Примечание : SDK 26624 ранее назывался 10240.

ИмяОписание
Программа VulkanПростая программа Vulkan без зависимостей, кроме загрузчика Vulkan и уровней проверки. Эта программа создает и затем уничтожает простой экземпляр Vulkan с помощью C Vulkan API.
Оконная программа VulkanПрограмма Vulkan, которая зависит от SDL и GLM. Эта программа создает пустое окно, инициализирует поверхность Vulkan в этом окне, а затем ожидает, пока пользователь закроет окно. Этот шаблон использует C Vulkan API.
Программа Vulkan C ++Простая программа Vulkan без зависимостей, кроме загрузчика Vulkan и уровни проверки. Эта программа создает и затем уничтожает простой экземпляр Vulkan с помощью C ++ Vulkan API.
Оконная программа Vulkan C ++Программа Vulkan это зависит от SDL и GLM. Эта программа создает пустое окно, инициализирует поверхность Vulkan в этом окне, а затем ждет, пока пользователь закроет окно. В этом шаблоне используется C ++ Vulkan API.
Vulkan LayerУровень Vulkan, созданный с использованием инфраструктуры Vulkan Layer Factory.

Выберите «Оконная программа Vulkan», введите имя своего проекта и нажмите «ОК». Вы должны увидеть новое решение и проект, открытый в Visual Studio. Скомпилируйте и запустите проект. Когда вы запустите проект, вы должны увидеть всплывающее пустое окно, а когда вы закроете окно, программа должна выйти с кодом 0. Теперь измените конфигурацию на x64, соберите и снова запустите проект. Вы должны увидеть те же результаты, но теперь с 64-битной сборкой.

Вам следует потратить некоторое время, чтобы изучить исходный код в этом проекте. Проект включает уровни проверки, если проект построен в режиме отладки. Этот проект создает поверхность Vulkan в окне, но ничего не отображает на экране.

Теперь у вас есть рабочий проект Vulkan. Не стесняйтесь использовать это как основу для более крупных проектов. Для получения дополнительной информации об использовании Vulkan обязательно просмотрите примеры Vulkan или найдите множество примеров, доступных в Интернете.

Изучите образец кода Vulkan

Папка Samples в Vulkan Папка установки SDK содержит образцы программ Vulkan. Этот набор примеров кода Vulkan находится в стадии разработки. Обратитесь к руководству Vulkan Samples для получения информации о создании и запуске примеров программ.

Дальнейшие действия

Это руководство представляет собой введение в основные компоненты и инструменты в Vulkan SDK. Посетите сайт загрузки Vulkan SDK для получения самой последней информации о SDK, включая полный набор документации SDK.

Источник

Что такое Vulkan и DirectX и как они влияют на видеоигры

Vulkan sdk что это. penci holder. Vulkan sdk что это фото. Vulkan sdk что это-penci holder. картинка Vulkan sdk что это. картинка penci holder

Большинство из нас, геймеров, слышали о Microsoft DirectX. Однако, немногие из нас знакомы с его утилитами и как они влияют на видеоигры. В настоящее время, фактически, приобретя конкурента в форме Vulkan, вещи относящиеся к двум API, как правило, становятся еще более сложными. В этом руководстве мы увидим, что такое API, Vulkan и DirectX, и мы покажим метод, с помощью которого они влияют на наши игры.

Предварительная информация о API

Прежде чем мы начнем говорить о DirectX и Vulkan, нам нужно сначала понять, что такое API. Аббревиатура означает «Интерфейс прикладного программирования».

Интерфейс предназначен для обеспечения связи между двумя объектами. Одним из примеров является графический интерфейс Windows, который играет роль посредника между операционной системой и пользователем.

Интерфейс обеспечивает удобную среду. С помощью этой среды мы используем операционную систему, не зная, как ее функции реализованы в фоновом режиме. Интерфейс прикладного программирования (API) заполняет роль посредника. Однако на этот раз пользователь может быть ПК или другой программой и не обязательно человеком. API-интерфейсы гораздо более распространены, чем можно было бы подумать, предлагая программистам необходимые инструменты для создания своего программного обеспечения.

Vulkan sdk что это. directx 11 windows 7 1. Vulkan sdk что это фото. Vulkan sdk что это-directx 11 windows 7 1. картинка Vulkan sdk что это. картинка directx 11 windows 7 1Ориентировочный пример, в котором мы используем API, — это когда мы автоматически регистрируемся в новом социальном средстве или онлайн-сервисе, используя наши ранее существующие учетные записи из Facebook или Google (вместо создания новой учетной записи вручную).

В таких случаях веб-сайт использует API, через который он связывается с конкретной услугой (например, Facebook или Twitter), чтобы собирать нашу личную информацию (имя (имена), адрес электронной почты, контактные номера и т. д.) Для создания нашего нового аккаунта.

Тем не менее существует множество других применений API для всех видов взаимодействия между приложениями и компьютерами, такими как системы баз данных, операционные системы и библиотеки программного обеспечения.

В таких случаях использование API-интерфейсов применимо к нашему компьютерному оборудованию и в частности, к нашей графической карте (видеокартам).

DirectX и Vulkan фактически улучшают связь между приложением (игрой) и графическим процессором, чтобы повысить производительность графики.

Vulkan sdk что это. 1 23 1024x589. Vulkan sdk что это фото. Vulkan sdk что это-1 23 1024x589. картинка Vulkan sdk что это. картинка 1 23 1024x589Microsoft DirectX

С выпуском Windows 95 и модели защищенной памяти разработчики не имели такого же доступа к ресурсам, как в MS-DOS. DirectX впервые появился в виде набора конкретных API для разработки мультимедийных приложений, таких как игры.

Термин «DirectX» начинается со слова «Direct», ссылаясь на прямой доступ к ресурсам системы. Некоторые примеры включают Direct3D для графики и DirectSound для аудио. Часть «Х» относится к API в общей коллекции; таким образом объединив все API-интерфейсы под названием DirectX. Вышеупомянутое название также вдохновило название популярной видеоигр компании Xbox.

Вышеприведенное иллюстрирует тесную связь между DirectX и консолью Microsoft. Его последняя версия, DirectX 12, имеет большие улучшения. Тем не менее он поддерживается только Windows 10 и новейшей игровой консолью компании Xbox One.

Vulkan sdk что это. vulkan amd 1024x514. Vulkan sdk что это фото. Vulkan sdk что это-vulkan amd 1024x514. картинка Vulkan sdk что это. картинка vulkan amd 1024x514Direct3D является жемчужиной DirectX и полезен для создания 3D-объектов на нашем экране. Он также позволяет просматривать игры в полноэкранном режиме, а также использовать аппаратные ускорители. Последний метод позволяет реализовать некоторые функции более эффективно, чем они работают в программном обеспечении. Это может быть достигнуто за счет более эффективного использования аппаратного обеспечения нашего компьютера. В этом случае это будет наша видеокарта.

Вулкан AMD

В 2015 году Kronos Group разработала свой собственный API. Vulkan — это низкоуровневый API, используемый для разработки графически требующих приложений. Его первая стабильная версия дебютировала в августе 2016 года.

Следует четко указать, что «низкий уровень» не относится к качеству. Вместо этого этот термин описывает способность Вулкана работать на аппаратном уровне.

Хронос окружает себя одними из самых больших имен в ИТ-индустрии. Некоторые из них — Google, Intel, Sony, Nvidia и AMD. Последние два дали API, свести к минимуму время разработки Vulkan.

OpenGL — популярный API среди графических дизайнеров. Фактически он был разработан Хроносом, и он также включает в себя многие характеристики Вулкана. Однако его прием игровыми дизайнерами был непредвиденным.

Одним из самых сильных активов Vulkan является тот факт, что он с открытым исходным кодом. Кроме того, совместимость Vulkan с несколькими платформами вместе с общей производительностью — это два дополнительных актива, которые делают его более прибыльным, чем DirectX.

Vulkan sdk что это. . Vulkan sdk что это фото. Vulkan sdk что это-. картинка Vulkan sdk что это. картинкаЗдесь вы можете найти полный список с именами, которые содержат Khronos. Мантия обеспечила основную базу, на которой был разработан Вулкан. Наконец Vulkan в настоящее время находится в версии 1.1.

Как они влияют на игры

До этого момента мы рассмотрели некоторые основы, касающиеся API, Microsoft и Khronos. Но как они влияют на игры?

Эти два API значительно улучшили производительность. До сих пор DirectX, по-видимому, обеспечивал лучшую производительность, чем Vulcan, что на самом деле он не так далеко позади.

Microsoft утверждает, что DirectX 12 снижает потребление на 50% при использовании DirectX 11. С другой стороны, Vulkan также демонстрирует лучшую гибкость, чем его предшественник. Говоря о предшественниках, DirectX 11 и OpenGL были созданы с учетом одноядерных процессоров; что означает, что они не были точно настроены с использованием новых, многоядерных процессоров.

В результате одно ядро ​​управляет большинством различных процессов, в то время как остальные работают с низкой скоростью, а иногда и вовсе отключены. Оба API (DirectX 12 и Vulkan) поддерживают процессоры с несколькими ядрами и потоками, чтобы максимально эффективно использовать свои возможности. Более того, они передают большую часть требуемых задач от процессора к графической карте (видеокартам), предлагая более сбалансированный опыт.

Взаимодействие между этими двумя элементами может существенно повлиять на будущие сборки ПК. Графические карты в значительной степени важнее, чем процессоры, когда дело доходит до игр. С дальнейшим развитием игровых API маловероятно, что процессоры могут стать еще менее важными, когда дело доходит до него. Таким образом, даже с простым процессором мы можем получить хорошую производительность без каких-либо узких мест.

Поддержка нескольких графических карт

Здесь Khronos Group столкнулась со значительным разрывом между двумя API-интерфейсами с поддержкой использования нескольких графических карт (использование явного многоканального GPU). Мы можем использовать разные карты, если их чипы имеют аналогичную архитектуру и используют один и тот же драйвер. Это позволит различным картам обрабатывать другую часть экрана.

Microsoft здесь еще на один шаг впереди, позволяя использовать несколько графических карт даже у другого производителя, что часто бывает, поскольку большинство систем имеют независимый и интегрированный графический процессор. Важно подчеркнуть тот факт, что эти реализации отличаются от возможностей SLI и Crossfire от Nvidia и AMD, которые реализованы с помощью драйверов, и в частности, в случае SLI требуют идентичные графические карты.

Шейдеры

Шейдеры — это небольшие программы, которые запускаются на наших видеокартах. Они отвечают за определенные функции различных объектов в 3D-среде. Тени, туман и освещение в игре являются результатом шейдера.

Vulkan использует промежуточное представление для шейдеров под названием SPIR-V. Его двоичная форма похожа на байт-код DirectX DX.

SPIR-V версия 1.3 отличается SPIR-V opt, инструментом для уменьшения размера шейдеров. Максимальный размер достигает + 40% от байт-кода DX соответствующего представления для DirectX.

Кроме того, некоторые структуры в HLSL (высокоуровневый шейдерный язык), которые были разработаны Microsoft, не поддерживались непосредственно некоторыми видеокартами.

HLSL широко используется DirectX с версии 9. Он использовался в качестве дополнения к существующему языку ассемблера шейдеров. С новой версией SPIR-V Vulkan также поддерживает ее.

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

Совместимость с несколькими платформами

Что касается платформ, большое преимущество Vulkan заключается в том, что он поддерживает Windows, Linux, Mac OS, Android и iOS. DirectX 12 с другой стороны, поддерживается только в Windows 10 и Xbox One. Чтобы использовать усовершенствования, предлагаемые DirectX 12, нам нужно либо обновить нашу операционную систему до Windows 10, либо получить новую консоль компании.

Если вы хотите попробовать DirectX 12, и вам не удалось получить Windows 10 во время бесплатного обновления, ознакомьтесь с нашим пошаговым руководством по свободным методам модернизации, которые доступны:

Возвращаясь к предыдущей теме, игровой порт, поддерживаемый API Vulkan, будет значительно проще по сравнению с портом, поддерживаемым DirectX.

С одной стороны, мы можем иметь названия на нескольких платформах, а с другой разные операционные системы имеют возможность размещать наши игры. Одна из причин, почему Linux не так популярен, как Windows, связана с тем, что последняя отличается от игр.

Распределение Linux может быть лучшим выбором для размещения наших игр, поскольку он может быть скорректирован для этой цели. Например Steam OS — это специализированная операционная система, предназначенная исключительно для игр.

Также подумайте: компания думает о создании программного обеспечения для разработки игр и хочет поддерживать API. Кто бы вы выбрали?

Оба имеют схожие мощности оба лучшие, чем их предшественники, и оба обеспечивают явное использование видеокарт. Vulkan поддерживает все платформы, включая Windows 10 и Xbox One, в то время как DirectX поддерживает только последние две.

Vulkan sdk что это. vulkan performance. Vulkan sdk что это фото. Vulkan sdk что это-vulkan performance. картинка Vulkan sdk что это. картинка vulkan performanceВиртуальная реальность

Необходимо сказать, что Vulkan является примером больших улучшений в области виртуальной реальности. Приложение VR должно отображать определенную 3D-сцену с двух разных точек зрения — по одному для каждого глаза.

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

Версия 1.1 Vulkan предлагает набор команд рендеринга для формирования нескольких, немного разных выходов (изображений), которые в конечном итоге дают лучшую производительность в приложениях VR.

Развитие и будущее

Было бы упущением, не говоря уже о ходе разработки двух API. С одной стороны, у нас есть ветеран DirectX с более чем 20-летним развитием. С другой стороны, Вулкану едва будет 3 года с 2015 года. Тот факт, что Vulkan является открытым исходным кодом, может немного повлиять на его темпы роста. Конечно игроки Khronos, похоже серьезно относятся к разработке API, так как уровни улучшения впечатляют.

Все мы можем создавать новые инструменты и модификации и предоставлять их сообществу, помогая API расти быстрее. Наконец следует упомянуть, что DirectX не имеет вышеуказанной функции. Несмотря на свои годы развития, около 40 игр в настоящее время используют Vulkan, занимая большую часть рынка. Некоторые из них — Quake, Roblox, Talos и Dota 2. Что касается производительности, Vulkan приближается к DirectX, и в некоторых случаях он превосходит его. Самые захватывающие примеры работы Вулкана — игра Doom.

Vulkan sdk что это. vulkan comparison. Vulkan sdk что это фото. Vulkan sdk что это-vulkan comparison. картинка Vulkan sdk что это. картинка vulkan comparisonVulkan расширил свою поддержку названий AAA, таких как Wolfenstein II, не пренебрегая названиями VR, такими как Doom VFR и Serious Sam VR. Здесь вы можете увидеть подробный список поддерживаемых игр. Хотя здесь вы найдете игры с поддержкой DirectX 12.

Оба API значительно улучшили производительность. Лучшее использование нескольких графических карт и меньшее использование ЦП повысит общую производительность наших систем. По слухам, новые видеокарты от Nvidia будут выпущены к концу лета и значительно превзойдут сегодняшние высокопроизводительные графические карты. В целом, общее состояние вещей кажется довольно гибким. В любом случае, изменения в разработке игр скоро будут у нас, и оба API несомненно будут играть важную роль.

Как вы относитесь к двум API?

Вы уже узнали всю информацию, которую мы предоставили на Vulkan и DirectX? Со временем их соперничество усиливается, какой из двух API вы считаете более полезным для развития игры? Мы с нетерпением ждем ваших комментариев.

Источник

Vulkan API «Hello Triangle»

Статья описывает основные принципы работы с Vulkan API и включает в себя материал по установке SDK, обработке ошибок, работе с различными сущностями API и краткий курс по выводу треугольника, в качестве практической части. Работа позиционирует себя как быстрый экскурс в основы Vulkan API, не претендуя на полноту и оставляя детали на самостоятельное рассмотрение.

Для лучшего понимания материала крайне рекомендуется использовать документацию с официального сайта https://www.khronos.org/registry/vulkan/.

Вступление

В связи с большим количеством кода присущим Vulkan API, ради облегчения понимания происходящего структура программы не будет разделена на модули или обернута в классы, ровно как и не будет производится освобождение ресурсов и обработка сопутствующих этому процессу ошибок. Статья требует понимания базовых принципов программирования на С/С++ и уровень знакомства с WinAPI достаточный для создания окна и работы с ним. Также необходим опыт в работе со средой разработки Visual Studio 2013. Материалы по этим темам не будут включены в данную работу, т.к. могут быть легко найдены в сети.

Подготовка

Для простейшей демонстрации Vulkan API (вывод треугольника) нам потребуется установить «LunarG Vulkan SDK», создать консоль для вывода ошибок и логов, а также окно WinAPI, в которое бы и осуществлялся вывод.

Установка SDK

Скачать установщик «LunarG Vulkan SDK» можно на официальном сайте https://vulkan.lunarg.com/. Само собой, для работы с любыми версиями Vulkan API необходим не только SDK, но и соответствующий драйвер, специфический для производителя видеокарты. Также важно то, что имея SDK определенной версии, мы можем ограничить использование драйвера более низкой. При написании статьи использовалась версия SDK 1.0.21.1.

После установки SDK, все необходимые нам файлы могут быть найдены в соответствующем каталоге («C:/VulkanSDK/%версия SDK%» по умолчанию). В первую очередь нас интересуют заголовочные файлы (папка «vulkan» целиком), которые находятся в каталоге «Include» и файлы библиотек (файл «vulkan-1.lib»), в каталоге «Bin»/«Bin32». Имея их на руках, мы можем приступить к созданию консоли и окна.

Консольный проект

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

Затем, скопировать в папку с проектом (где размещен «*.vcxproj» файл, а не «*.sln») все необходимые нам файлы, т.е. папку заголовочных файлов «vulkan» и библиотечный файл «vulkan-1.lib». Убедимся в работоспособности подключенных файлов:

На данном этапе окно не является для нас чем-то необходимым, но мы бегло рассмотрим код его создания сейчас, дабы не возвращаться к этой теме во время изучения Vulkan API.

Для работы с окном нам необходимо подключить WinAPI:

Также, нам необходимо получить образец (instance) нашей программы (в контексте WinAPI):

Описание этих функций упускается умышленно, т.к. они не являются предметом данной статьи. Всю необходимую информацию по ним можно легко найти в сети.

Обработка ошибок

В условиях большого количества кода, т.е. в условиях Vulkan API, жизненно необходимо правильно отлавливать ошибки. Важность понимания этого процесса столь велика, что обработка ошибок будет описана в отдельном разделе этой статьи.
Мы не будем рассматривать логические ошибки (вроде передачи в качестве аргумента вектора на 10 элементов, когда в действительности он рассчитан всего лишь на 5), но рассмотрим способы найти их в некоторых ситуациях (в случае передачи несовместимых параметров). Так же мы рассмотрим способы выявления ошибок, которые можно отловить в «инженерной» версии программы, а также те, которые могут различаться для видеокарт разных производителей. В конечном счете, мы получим инструмент для составления детального отчета об ошибках в debug-версии приложения.

Результат выполнения

В большинстве случаев детальный анализ ошибок и большое количество проверок допустимо только в debug-версии приложения. Фокус заключается в том, что release-версия не должна содержать ошибки по определению, а потому и тратить лишние ресурсы на их проверку нет смысла. С другой стороны, debug-версия должна предоставлять не только сам факт наличия ошибки, но и более-менее развернутое описание. К счастью, Vulkan API разрабатывался отталкиваясь именно от такой идеологии.

Слои – набор опциональных модулей, предназначенных для проверки корректности (соответствие стандарту) использования Vulkan API. Их наличие и реализация зависят от версии API и видеокарты, а потому их использование носит отладочный характер – они не включаются в release-версию приложения. Еще одним важным нюансом является то, что для образца и устройства Vulkan API слои различаются.

Доступные для образца слои перечисляются следующим образом:

Доступные для устройства слои перечисляются схожей функцией:

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

Фундаментальные объекты

Прежде чем приступить к непосредственному выводу графики, нам необходимо создать серию абстрактных объектов, которые являются фундаментом для дальнейшей работы.
В общих чертах наш план выглядит следующим образом:
• Подготовить списки слоев и расширений для образца интерфейса
• Создать образец интерфейса
• Инициализировать получение отчетов об ошибках
• Перечислить все имеющиеся физические устройства
• Подготовить списки слоев и расширений для логического устройства
• На основе любого физического устройства создать логическое устройство
Но для начала, ознакомимся с функционалом.

Образец интерфейса

Первым необходимым нам объектом является образец интерфейса (instance) Vulkan API. Он содержит в себе базовую информацию о нашем приложении, необходимых для его работы слоях и расширениях.

Структура VkInstanceCreateInfo выглядит следующим образом:

Поле flags зарезервировано для использования в будущем и должно быть равно нулю. pApplicationInfo – указатель на структуру, содержащую информацию о приложении. enabledLayerCount и ppEnabledLayerNames – количество слоев и указатель на массив их названий. enabledExtensionCount и ppEnabledExtensionNames – количество и названия расширений.

Больше всего здесь нас интересует указатель на структуру с информацией о приложении – pApplicationInfo :

Теперь можно приступать к созданию образца интерфейса. Для начала нужно подготовить списки слоев:

Заполним информацию о приложении:

И, собственно, информацию для создания образца интерфейса:

Отчет об ошибках

Отчет об ошибках — мощный инструмент, который позволяет получать информацию от слоев, используя функцию обратного вызова (callback).
Как и любой другой объект Vulkan API, отчет рассматривается как объект и имеет соответствующие функции для создания и структуры, для описания. Отличие в том, что функцию для создания отчета мы будем получать с помощью vkGetInstanceProcAddr :

Полученная нами функция имеет следующий вид:

Она, не нарушая традиций, инициализирует объект, опираясь на информацию из описания и сигнализирует о любых ошибках посредством возвращаемого значения. Единственное отличие – теперь нужно указывать образец интерфейса, к которому будет привязан наш отчет.

Итак, преступим к созданию отчета:

Физические устройства

Имея образец интерфейса, мы можем перечислить все физические устройства (видеокарты, если вам угодно), с Vulkan API на борту. Подобное перечисление производит следующая функция:

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

А теперь интересный момент: некоторые слои могут ругаться, если при дальнейшей работе мы не перечислим свойства семейств очередей физического устройства. Вообще говоря, наше приложение должно опираться на эту информацию, но т.к. материал всего лишь обучающий, мы умышленно упустим это из виду и просто перечислим свойства:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *