API-генератор Vulkan на C++
Генерирует API C++ на основе спецификации vulkan. Сравнение с вулкан-hpp:
- vkpp создан с учетом простоты и времени компиляции, более легкий
- НЕ создает монолитный заголовок размером почти 30 КБ LOC (обновление: vulkan-hpp сейчас достигает > 110 КБ LOC и продолжает расти)
- разделяет использование на несколько заголовков, что позволяет вам, например, использовать только предварительные объявления (менее 1 КБ LOC) в ваших общедоступных заголовках.
- меньше функций
- не моделирует все объектно-ориентированное
- нет автоматических функций to_string для перечислений
- вероятно, менее сложная обработка ошибок
- Предлагает только реальные преимущества по сравнению с простым C API.
- помещение всего в пространство имен
- типобезопасные перечисления
- автоматическая проверка критических ошибок
- конструкторы структур (настройки sType, инициализация по умолчанию)
- «векторизация» функций
-
vk::queueSubmit(queue, {info1, info2, info3}, fence)
действителен
- Имеет другой (необязательный) механизм динамической отправки. vkpp позволяет осуществлять неявную динамическую отправку, если вы этого хотите (может быть полезно для Android)
- Недостаток: не поставляется с пакетом vulkan sdk/vulkan.
- это означает, что у вас могут возникнуть проблемы с совместимостью версий при использовании этого API (просто используйте правильный тег git, соответствующий установленной версии vulkan.h для ваших проектов)
Если вам нужна одна из неподдерживаемых функций, упомянутых выше, ознакомьтесь с vulkan-hpp (или, если вы считаете, что они разумны здесь, опишите их с обоснованием в проблеме). Отчеты о проблемах, вклады и предложения приветствуются!
Управление версиями
Вы можете изменить версию Vulkan, для которой генерируются заголовки, заменив vk.xml
версией, которую вы хотите использовать. Обратите внимание, что вам необходимо настроить мезон с -Dregen=true
(или -Dvkpp:regen=true
если вы используете vkpp в качестве подпроекта) для регенерации заголовков. Текущий генератор также не поддерживает все версии, поскольку формат спецификации vulkan xml со временем претерпевает некоторые существенные (не обратно совместимые) изменения. Для некоторых версий Vulkan существуют специальные коммиты git, которые вы можете просто использовать.