QVulkanDeviceFunctions Class▲
-
Header: QVulkanDeviceFunctions
-
Since: Qt 5.10
-
qmake: QT += gui
-
Group: QVulkanDeviceFunctions is part of Rendering in 3D
Detailed Description▲
Qt and Qt applications do not link to any Vulkan libraries by default. Instead, all functions are resolved dynamically at run time. Each QVulkanInstance provides a QVulkanFunctions object retrievable via QVulkanInstance::functions(). This does not contain device level functions in order to avoid the potential overhead of an internal dispatching. Instead, functions that rely on a device, or a dispatchable child object of a device, are exposed via QVulkanDeviceFunctions and QVulkanInstance::deviceFunctions(). QVulkanFunctions and QVulkanDeviceFunctions together provides access to the full core Vulkan API, excluding any extensions.
QVulkanDeviceFunctions instances cannot be constructed directly.
The typical usage is the following:
void
Window::
render()
{
QVulkanInstance *
inst =
vulkanInstance();
QVulkanDeviceFunctions *
df =
inst-&
gt;deviceFunctions(device);
VkResult err =
df-&
gt;vkAllocateCommandBuffers(device, &
amp;cmdBufInfo, &
amp;cmdBuf);
...
}
The QVulkanDeviceFunctions object specific to the provided VkDevice is created when QVulkanInstance::deviceFunctions() is first called with the device in question. The object is then cached internally.
To access additional functions, applications can use QVulkanInstance::getInstanceProcAddr() and vkGetDeviceProcAddr(). Applications can also decide to link to a Vulkan library directly, as many implementations export function symbols for the core commands. See the man page for vkGetInstanceProcAddr for more information.