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 |
- QVulkanDeviceFunctions 是 3D 渲染中的部分。
详细说明
Qt 和 Qt 应用程序默认不链接到任何 Vulkan 库。相反,所有功能都在运行时动态解析。每个 QVulkanInstance 都提供了一个可通过对 QVulkanInstance::functions() 的引用获取的 QVulkanFunctions 对象。该对象不包含设备级别函数,以避免内部分派的开销。相反,依赖于设备或设备可调度子对象的函数通过 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 调用 QVulkanInstance::deviceFunctions() 时,会创建针对特定 VkDevice 的 QVulkanDeviceFunctions 对象。然后对象被内部缓存。
要访问其他函数,应用程序可以使用 QVulkanInstance::getInstanceProcAddr() 和 vkGetDeviceProcAddr().应用程序还可以选择直接链接到 Vulkan 库,因为许多实现导出了核心命令的功能符号。有关更多信息,请参阅 vkGetInstanceProcAddr 的 man 页面。
另请参阅 QVulkanInstance、QVulkanFunctions、QWindow::setVulkanInstance() 和 QWindow::setSurfaceType()。
© 2024 The Qt Company Ltd. 本文档贡献的版权属于各自的拥有者。本文档根据由自由软件开发基金会发布的 GNU 自由文档许可版本 1.3 的条款获得许可。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和其他国家的商标。所有其他商标均属于其各自的拥有者。