QVulkanFunctions 类

QVulkanFunctions 类提供对核心 Vulkan 1.3 API 的跨平台访问。 了解更多...

头文件 #include <QVulkanFunctions>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
  • QVulkanFunctions 是 3D 渲染 的一部分。

详细介绍

Qt 和 Qt 应用程序默认不链接到任何 Vulkan 库。相反,所有函数都在运行时动态解析。每个 QVulkanInstance 提供 QVulkanFunctions 对象,可通过 QVulkanInstance::functions() 获取。这不含设备级别函数,以避免内部调度的潜在开销。相反,依赖于设备或设备可调度子对象的函数通过 QVulkanDeviceFunctionsQVulkanInstance::deviceFunctions() 暴露。QVulkanFunctions 和 QVulkanDeviceFunctions 一起提供对完整核心 Vulkan API 的访问,不包括任何扩展。

注意:QVulkanFunctions 实例不能直接构建。

典型用法如下

void Window::init()
{
    QVulkanInstance *inst = vulkanInstance();
    QVulkanFunctions *f = inst->functions();
    // ...
    uint32_t count = 0;
    VkResult err = f->vkEnumeratePhysicalDevices(inst->vkInstance(), &count, nullptr);
    // ...
}

注意:窗口系统接口(WSI)特定和扩展已排除。此类仅涵盖核心 Vulkan 命令,除创建、销毁和函数解析外,这些功能由 QVulkanInstance 本身覆盖。

要访问更多函数,应用程序可以使用 QVulkanInstance::getInstanceProcAddr() 和 vkGetDeviceProcAddr()。应用程序也可以决定直接链接到 Vulkan 库,因为具有适当加载器的平台通常会导出核心命令的函数符号。有关更多信息,请参阅 vkGetInstanceProcAddr 的手册页

注意:对于 Vulkan 1.1、1.2 和 1.3 命令的成员函数原型,通过适当的 VK_VERSION_1_x 与 vulkan 头文件中定义的相应版本进行预处理指令的条件编译。因此,这些函数仅当应用程序所构建的系统(vulkan 头文件)新旧足够且包含 1.1、1.2 或 1.3 Vulkan API 定义时才能由应用程序调用。当从源代码构建 Qt 时,这有一个额外的后果:构建环境的 Vulkan 头文件也必须与 1.1、1.2 和 1.3 兼容,以获取支持解析 1.1、1.2 和 1.3 API 命令的 Qt 构建。如果不符合这些条件,应用程序将只能通过 QVulkanFunctions 和 QVulkanDeviceFunctions 调用 Vulkan 1.0 命令。

另请参阅 QVulkanInstanceQVulkanDeviceFunctionsQWindow::setVulkanInstance()和QWindow::setSurfaceType

© 2024 The Qt Company Ltd. 本文档内包含的贡献文档的版权归其各自的所有者。本提供的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3授权的。Qt及其相应的标志是芬兰The Qt Company Ltd.和其他国家的商标。所有其他商标均为其各自所有者的财产。