Spec-Zone.ru › Qt

Класс 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 вместе обеспечивают доступ ко всему ядру API Vulkan, исключая любые расширения.

Примечание: Объекты 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.2/qvulkanfunctions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API