QVulkanDeviceFunctions 類

QVulkanDeviceFunctions 類提供對設備級核心 Vulkan 1.3 API 的跨平颱訪問。 更多...

頭: #include <QVulkanDeviceFunctions>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

詳細描述

默認情況下,Qt 和 Qt 應用程序未鏈接到任何 Vulkan 庫。相反,在運行時動態解析所有函數。每個 QVulkanInstance 提供 QVulkanFunctions 可檢索對象憑藉 QVulkanInstance::functions ()。這未包含設備級函數,為避免潛在內部分派開銷。相反,依賴設備或設備可分派子級對象的函數的暴露是憑藉 QVulkanDeviceFunctions 和 QVulkanInstance::deviceFunctions (). QVulkanFunctions 和 QVulkanDeviceFunctions 一起提供對完整核心 Vulkan API 的訪問,排除任何擴展。

注意: QVulkanDeviceFunctions 實例無法被直接構造。

典型用法如下:

void Window::render()
{
    QVulkanInstance *inst = vulkanInstance();
    QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
    VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
    // ...
}
					

創建由 VkDevice 提供的特定 QVulkanDeviceFunctions 對象當 QVulkanInstance::deviceFunctions () 首先以有問題設備被調用。然後,對象緩存在內部。

要訪問額外功能,應用程序可以使用 QVulkanInstance::getInstanceProcAddr () 和 vkGetDeviceProcAddr()。應用程序也可以決定直接鏈接到 Vulkan 庫,因為很多實現為核心命令導齣瞭函數符號。見 vkGetInstanceProcAddr 手冊頁 瞭解更多信息。

另請參閱 QVulkanInstance , QVulkanFunctions , QWindow::setVulkanInstance (),和 QWindow::setSurfaceType ().