QVulkanFunctions Class

Die Klasse QVulkanFunctions bietet plattformübergreifenden Zugriff auf die Kern-API von Vulkan 1.3 auf Instanzebene. Mehr...

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

Detaillierte Beschreibung

Qt und Qt-Anwendungen binden standardmäßig keine Vulkan-Bibliotheken ein. Stattdessen werden alle Funktionen dynamisch während der Laufzeit aufgelöst. Jedes QVulkanInstance bietet ein QVulkanFunctions-Objekt, das über QVulkanInstance::functions() abgerufen werden kann. Dieses enthält keine Funktionen auf Geräteebene, um den potenziellen Overhead eines internen Dispatchings zu vermeiden. Stattdessen werden Funktionen, die auf ein Gerät oder ein dispatchbares Kindobjekt eines Geräts angewiesen sind, über QVulkanDeviceFunctions und QVulkanInstance::deviceFunctions() bereitgestellt. QVulkanFunctions und QVulkanDeviceFunctions bieten zusammen Zugriff auf die gesamte Kern-Vulkan-API, mit Ausnahme aller Erweiterungen.

Hinweis: QVulkanFunctions-Instanzen können nicht direkt erstellt werden.

Die typische Verwendung ist die folgende:

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

Hinweis: Windowing System Interface (WSI) Spezifika und Erweiterungen sind ausgeschlossen. Diese Klasse deckt nur die Kernbefehle von Vulkan ab, mit Ausnahme von Instanzerstellung, -zerstörung und Funktionsauflösung, da diese Funktionalität von QVulkanInstance selbst abgedeckt wird.

Um auf zusätzliche Funktionen zuzugreifen, können Anwendungen QVulkanInstance::getInstanceProcAddr() und vkGetDeviceProcAddr() verwenden. Anwendungen können sich auch dafür entscheiden, sich direkt mit einer Vulkan-Bibliothek zu verbinden, da Plattformen mit einem entsprechenden Lader normalerweise Funktionssymbole für die Kernbefehle exportieren. Weitere Informationen finden Sie in der Man Page für vkGetInstanceProcAddr.

Hinweis: Die Prototypen der Mitgliedsfunktionen für Vulkan 1.1-, 1.2- und 1.3-Befehle sind ifdefed mit dem entsprechenden VK_VERSION_1_x, das durch die Vulkan-Header definiert ist. Daher sind diese Funktionen nur dann von einer Anwendung aufrufbar, wenn der Vulkan-Header des Systems (auf dem die Anwendung erstellt wird) neu genug ist und 1.1, 1.2 oder 1.3 Vulkan-API-Definitionen enthält. Wenn Qt aus dem Quellcode gebaut wird, hat dies eine zusätzliche Konsequenz: Die Vulkan-Header der Build-Umgebung müssen ebenfalls 1.1-, 1.2- und 1.3-kompatibel sein, um ein Qt-Build zu erhalten, das die Auflösung der 1.1-, 1.2- und 1.3-API-Befehle unterstützt. Wenn keine dieser Bedingungen erfüllt ist, können Anwendungen die Vulkan 1.0-Befehle nur über QVulkanFunctions und QVulkanDeviceFunctions aufrufen.

Siehe auch QVulkanInstance, QVulkanDeviceFunctions, QWindow::setVulkanInstance(), und QWindow::setSurfaceType().

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.