Auf dieser Seite

QVulkanFunctions Class

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

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

Ausführliche Beschreibung

Qt und Qt-Anwendungen verknüpfen standardmäßig keine Vulkan-Bibliotheken. Stattdessen werden alle Funktionen zur Laufzeit dynamisch aufgelöst. Jedes „ QVulkanInstance “ stellt ein QVulkanFunctions-Objekt bereit, das über ` QVulkanInstance::functions()` abgerufen werden kann. Dieses enthält keine Funktionen auf Geräteebene, um den potenziellen Overhead einer internen Verteilung zu vermeiden. Stattdessen werden Funktionen, die auf einem Gerät oder einem dispatchbaren untergeordneten Objekt eines Geräts basieren, über ` QVulkanDeviceFunctions ` und ` QVulkanInstance::deviceFunctions()` bereitgestellt. `QVulkanFunctions` und ` QVulkanDeviceFunctions ` bieten zusammen Zugriff auf die gesamte Kern-Vulkan-API, mit Ausnahme etwaiger Erweiterungen.

Hinweis: Instanzen von„QVulkanFunctions“ können nicht direkt instanziiert werden.

Die typische Verwendung sieht wie folgt aus:

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

Hinweis: Besonderheiten und Erweiterungender Windowing-System-Schnittstelle (WSI) sind ausgeschlossen. Diese Klasse deckt nur die Kernbefehle von Vulkan ab, mit Ausnahme der Instanzerstellung, -löschung und der Funktionsauflösung, da diese Funktionen von QVulkanInstance selbst abgedeckt werden.

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

Hinweis: Die Prototypen der Mitgliedsfunktionen für Vulkan-Befehle der Versionen 1.1, 1.2 und 1.3 lauten „ ifdefed “ mit dem entsprechenden „ VK_VERSION_1_x “, der in den Vulkan-Header-Dateien definiert ist. Daher können diese Funktionen von einer Anwendung nur dann aufgerufen werden, wenn der Vulkan-Header des Systems (auf dem die Anwendung erstellt wird) aktuell genug ist und Vulkan-API-Definitionen der Versionen 1.1, 1.2 oder 1.3 enthält. Beim Kompilieren von Qt aus dem Quellcode hat dies eine weitere Konsequenz: Die Vulkan-Header in der Build-Umgebung müssen ebenfalls mit den Versionen 1.1, 1.2 und 1.3 kompatibel sein, um einen Qt-Build zu erhalten, der die Auflösung der API-Befehle der Versionen 1.1, 1.2 und 1.3 unterstützt. Ist keine dieser Bedingungen erfüllt, können Anwendungen die Vulkan-1.0-Befehle nur über `QVulkanFunctions` und ` QVulkanDeviceFunctions` aufrufen.

Sicherheitshinweise

QVulkanFunctions ist eine dünne Dispatch-Schicht, die die Vulkan-API unverändert bereitstellt. Die Argumente werden unverändert an die zugrunde liegende Vulkan-Implementierung weitergeleitet, bei der es sich um eine vertrauenswürdige, prozessinterne Plattformabhängigkeit handelt. Qt überprüft, validiert oder bereinigt die übergebenen Handles, Strukturen und Zeiger nicht und führt keine Aktionen anhand der zurückgegebenen Ergebnisse durch. Der Aufruf einer Member-Funktion entspricht daher dem direkten Aufruf des entsprechenden Vulkan-Befehls, und die in der Vulkan-Spezifikation festgelegten Regeln für die zulässige Verwendung gelten unverändert. Ein Verstoß gegen diese Regeln führt zu undefiniertem Verhalten in der Vulkan-Implementierung, nicht zu einem kontrollierten Fehler von Qt.

Warnung: Es wird erwartet, dassalle über QVulkanFunctions übergebenen Daten vertrauenswürdige Inhalte sind. Anwendungsentwicklern wird empfohlen, die potenziellen Auswirkungen sorgfältig abzuwägen, bevor sie Daten aus benutzerbereitgestellten Inhalten ableiten, die nicht Teil der Anwendung sind und sich nicht unter der Kontrolle der Entwickler befinden. Weitere Informationen finden Sie unter QVulkanInstance.

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

© 2026 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.