QVulkanDeviceFunctions Class
Die Klasse „QVulkanDeviceFunctions“ bietet plattformübergreifenden Zugriff auf die Kern-API von Vulkan 1.3 auf Geräteebene. Mehr...
| Header: | #include <QVulkanDeviceFunctions> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- QVulkanDeviceFunctions ist Teil von „3D-Rendering“.
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 Vermittlung zu vermeiden. Stattdessen werden Funktionen, die auf ein Gerät oder ein dispatchbares untergeordnetes Objekt eines Geräts angewiesen sind, über `QVulkanDeviceFunctions` und ` QVulkanInstance::deviceFunctions()` bereitgestellt. ` QVulkanFunctions ` und `QVulkanDeviceFunctions` bieten gemeinsam Zugriff auf die vollständige Kern-Vulkan-API, mit Ausnahme etwaiger Erweiterungen.
Hinweis: Instanzen von `QVulkanDeviceFunctions ` können nicht direkt instanziiert werden.
Die typische Verwendung ist wie folgt:
void Window::render()
{
QVulkanInstance *inst = vulkanInstance();
QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
// ...
}Das für das bereitgestellte `VkDevice` spezifische `QVulkanDeviceFunctions`-Objekt wird erstellt, wenn ` QVulkanInstance::deviceFunctions()` zum ersten Mal mit dem betreffenden Gerät aufgerufen wird. Das Objekt wird anschließend intern zwischengespeichert.
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 viele Implementierungen Funktionssymbole für die Kernbefehle exportieren. Weitere Informationen finden Sie in der Manpage zu `vkGetInstanceProcAddr`.
Sicherheitshinweise
QVulkanDeviceFunctions 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. Dies umfasst unter anderem alle Befehle zur Ressourcenerstellung, zum Speicher-Mapping und zum Aufbau von Befehlspuffern. Der Aufruf einer Member-Funktion entspricht hier daher dem direkten Aufruf des entsprechenden Vulkan-Befehls, und die in der Vulkan-Spezifikation festgelegten Nutzungsregeln 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 `QVulkanDeviceFunctions` übergebenen Daten vertrauenswürdigen Inhalten entstammen. Anwendungsentwicklern wird empfohlen, die potenziellen Auswirkungen sorgfältig abzuwägen, bevor sie Daten aus benutzerbereitgestellten Inhalten ableiten, die nicht Teil der Anwendung sind und nicht unter der Kontrolle der Entwickler stehen. Weitere Informationen finden Sie unter QVulkanInstance.
Siehe auch QVulkanInstance, QVulkanFunctions, 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.