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 ().