Класс QVulkanFunctions
Класс QVulkanFunctions предоставляет кроссплатформенный доступ к ядру Vulkan 1.2 API на уровне экземпляра. Подробнее...
| Заголовок: | #include <QVulkanFunctions> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| С момента: | Qt 5.10 |
Подробное описание
Qt и приложения Qt по умолчанию не связываются с какими-либо библиотеками Vulkan. Вместо этого все функции разрешаются динамически во время выполнения. Каждый QVulkanInstance предоставляет объект QVulkanFunctions, извлекаемый через QVulkanInstance::functions(). Он не содержит функций уровня устройства, чтобы избежать потенциальной нагрузки внутренней диспетчеризации. Вместо этого функции, зависящие от устройства или диспетчерского дочернего объекта устройства, экспортируются через QVulkanDeviceFunctions и QVulkanInstance::deviceFunctions(). QVulkanFunctions и QVulkanDeviceFunctions вместе обеспечивают доступ к полному ядру Vulkan API, за исключением расширений.
Примечание: Экземпляры QVulkanFunctions не могут быть созданы напрямую.
Типичное использование показано ниже:
void Window::render()
{
QVulkanInstance *inst = vulkanInstance();
QVulkanFunctions *f = inst->functions();
// ...
VkResult err = f->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
// ...
} Примечание: Специфики и расширения интерфейса системы окон (WSI) исключены. Этот класс охватывает только базовые команды Vulkan, за исключением создания, уничтожения экземпляра и разрешения функций, поскольку такая функциональность покрывается самим QVulkanInstance.
Для доступа к дополнительным функциям приложения могут использовать QVulkanInstance::getInstanceProcAddr() и vkGetDeviceProcAddr(). Приложения также могут решить связать Vulkan библиотеку напрямую, так как платформы с соответствующим загрузчиком обычно экспортируют символы функций для основных команд. Подробнее см. документацию по vkGetInstanceProcAddr.
Примечание: Прототипы функций-членов для команд Vulkan 1.1 и 1.2 имеют ifdef с соответствующим VK_VERSION_1_x определением из заголовков Vulkan. Поэтому эти функции будут вызываемы приложением только тогда, когда заголовки Vulkan системы (на которой приложение построено) достаточно новые и содержат определения API Vulkan 1.1 и 1.2. При построении Qt из исходного кода это имеет дополнительное следствие: заголовки Vulkan на среде разработки также должны быть совместимы с 1.1 и 1.2, чтобы получить сборку Qt, поддерживающую разрешение команд API 1.1 и 1.2. Если хотя бы одно из этих условий не выполнено, приложения смогут вызывать только команды Vulkan 1.0 через QVulkanFunctions и QVulkanDeviceFunctions.
См. также QVulkanInstance, QVulkanDeviceFunctions, QWindow::setVulkanInstance() и QWindow::setSurfaceType().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qvulkanfunctions.html