Sur cette page

QVulkanDeviceFunctions Class

La classe `QVulkanDeviceFunctions` offre un accès multiplateforme à l'API Vulkan 1.3 de base au niveau du périphérique. En savoir plus...

En-tête : #include <QVulkanDeviceFunctions>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
  • QVulkanDeviceFunctions fait partie du module « Rendu 3D ».

Description détaillée

Par défaut, Qt et les applications Qt ne sont liés à aucune bibliothèque Vulkan. Au lieu de cela, toutes les fonctions sont résolues dynamiquement au moment de l’exécution. Chaque ` QVulkanInstance ` fournit un objet ` QVulkanFunctions ` accessible via ` QVulkanInstance::functions()`. Celui-ci ne contient pas de fonctions au niveau du périphérique afin d’éviter la surcharge potentielle liée à une répartition interne. En revanche, les fonctions qui dépendent d’un périphérique, ou d’un objet enfant dispatchable d’un périphérique, sont exposées via `QVulkanDeviceFunctions` et ` QVulkanInstance::deviceFunctions()`. ` QVulkanFunctions ` et `QVulkanDeviceFunctions` permettent ensemble d’accéder à l’intégralité de l’API Vulkan de base, à l’exclusion de toute extension.

Remarque : les instances de `QVulkanDeviceFunctions ` ne peuvent pas être créées directement.

L’utilisation type est la suivante :

void Window::render()
{
    QVulkanInstance *inst = vulkanInstance();
    QVulkanDeviceFunctions *df = inst->deviceFunctions(device);
    VkResult err = df->vkAllocateCommandBuffers(device, &cmdBufInfo, &cmdBuf);
    // ...
}

L’objet `QVulkanDeviceFunctions` spécifique au `VkDevice` fourni est créé lors du premier appel de la fonction ` QVulkanInstance::deviceFunctions()` avec le périphérique en question. L’objet est ensuite mis en cache en interne.

Pour accéder à des fonctions supplémentaires, les applications peuvent utiliser ` QVulkanInstance::getInstanceProcAddr()` et `vkGetDeviceProcAddr()`. Les applications peuvent également choisir de se lier directement à une bibliothèque Vulkan, car de nombreuses implémentations exportent des symboles de fonction pour les commandes de base. Consultez la page de manuel de `vkGetInstanceProcAddr` pour plus d’informations.

Considérations de sécurité

QVulkanDeviceFunctions est une fine couche de répartition qui expose l’API Vulkan telle quelle. Les arguments sont transmis tels quels à l’implémentation Vulkan sous-jacente, qui est une dépendance de plateforme fiable et intégrée au processus. Qt n’inspecte pas, ne valide pas et ne nettoie pas les descripteurs, les structures et les pointeurs transmis, et n’intervient pas sur les résultats renvoyés. Cela concerne, entre autres, toutes les commandes de création de ressources, de mappage mémoire et de construction de tampons de commandes. Appeler une fonction membre ici équivaut donc à appeler directement la commande Vulkan correspondante, et les règles d’utilisation valides définies dans la spécification Vulkan s’appliquent telles quelles. Leur non-respect entraîne un comportement indéfini dans l’implémentation Vulkan, et non un échec géré par Qt.

Avertissement : toutes les données transmises via `QVulkanDeviceFunctions` sont censées provenir d’une source fiable. Il est conseillé aux développeurs d’applications d’examiner attentivement les implications potentielles avant d’en dériver quoi que ce soit à partir de contenu fourni par l’utilisateur qui ne fait pas partie de l’application et n’est pas sous le contrôle des développeurs. Voir QVulkanInstance pour plus d’informations.

Voir également QVulkanInstance, QVulkanFunctions, QWindow::setVulkanInstance() et 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.