Работа с Vulkan API
Начиная с ОС Аврора 5.2, в приложения можно подключать Vulkan API. Vulkan API — это низкоуровневый, кроссплатформенный графический интерфейс, предоставляющий прямой доступ к оборудованию для высокопроизводительной и гибкой разработки графических приложений с поддержкой многопоточности.
Более подробно узнать об его архитектуре и функциональности можно в данной статье.
Сравнение Vulkan API и OpenGL ES
Помимо Vulkan API для работы с графикой также можно использовать OpenGL ES. Подробнее ознакомиться с данной технологией можно из источников, указанных здесь.
Выбор между OpenGL ES и Vulkan API зависит от конкретных требований проекта:
- OpenGL ES подходит для разработки на мобильных устройствах, особенно если важна простота и скорость разработки, а требования к производительности умеренные.
- Vulkan API целесообразно использовать в проектах, где требуется максимальная производительность, низкоуровневый контроль над аппаратными ресурсами и поддержка современных графических технологий.
Ниже приведено более подробное сравнение Vulkan API и OpenGL ES по различным критериям:
Критерий | OpenGL ES | Vulkan API |
---|---|---|
Платформы | Мобильные устройства (Android, iOS), встраиваемые системы, Аврора ОС | Кроссплатформенный (Android, Linux, Windows, macOS/iOS через слой совместимости), Аврора ОС |
Поддержка на устройствах | Все устройства под управлением Аврора ОС | Поддерживается не на всех устройствах под управлением Аврора ОС — должна быть обеспечена поддержка со стороны производителя |
Уровень абстракции | Высокий (упрощенное управление) | Низкий (прямой контроль над железом) |
Производительность | Подходит для простых приложений | Высокая (оптимизация для сложных сцен и многопоточности) |
Сложность разработки | Низкая (меньше кода, проще обучение) | Высокая (требует глубоких знаний) |
Использование в движках | Мобильные движки и библиотеки (например, OpenSceneGraph) | Современные движки (VulkanSceneGraph) |
GPGPU | Возможно, но не оптимально | Прямая поддержка через вычислительные шейдеры, можно применять для запуска нейросетей |
Современные технологии | Ограниченная поддержка новейших функций | Полная поддержка (трассировка лучей, сеточные шейдеры) |
Подключение
-
Подключить следующие зависимости в .spec-файле:
BuildRequires: vulkan-headers BuildRequires: vulkan-devel
-
Подключить модуль в системе сборки qmake:
CONFIG += link_pkgconfig PKGCONFIG += vulkan
Или же в cmake:
find_package(Vulkan REQUIRED) target_link_libraries(${PROJECT_NAME} Vulkan::Vulkan ${AURORA_LDFLAGS})
-
В результате необходимый функционал можно будет импортировать в C++ код:
#include "vulkan/vulkan.h"