QVulkanFunctions Class
La classe QVulkanFunctions offre un accès multiplateforme à l'API Vulkan 1.3 de base au niveau des instances. En savoir plus…
| En-tête : | #include <QVulkanFunctions> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- QVulkanFunctions fait partie du module « Rendu 3D ».
Description détaillée
Par défaut, Qt et les applications Qt ne sont liées à aucune bibliothèque Vulkan. Au lieu de cela, toutes les fonctions sont résolues dynamiquement au moment de l’exécution. Chaque instance de ` 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 instancesde QVulkanFunctions ne peuvent pas être instanciées directement.
L’utilisation typique est la suivante :
void Window::init()
{
QVulkanInstance *inst = vulkanInstance();
QVulkanFunctions *f = inst->functions();
// ...
uint32_t count = 0;
VkResult err = f->vkEnumeratePhysicalDevices(inst->vkInstance(), &count, nullptr);
// ...
}Remarque : les spécificités et extensions de l’interface du systèmede fenêtrage (WSI) sont exclues. Cette classe ne couvre que les commandes principales de Vulkan, à l’exception de la création et de la destruction d’instances, ainsi que de la résolution de fonctions, puisque ces fonctionnalités sont gérées par QVulkanInstance elle-même.
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 les plateformes dotées d’un chargeur approprié exportent généralement les symboles de fonction pour les commandes de base. Consultez la page de manuel de `vkGetInstanceProcAddr` pour plus d’informations.
Remarque : les prototypes des fonctions membres pour les commandes Vulkan 1.1, 1.2 et 1.3 sont de la forme ` ifdefed ` avec l’ VK_VERSION_1_x ation appropriée définie par les en-têtes Vulkan. De ce fait, ces fonctions ne seront appelables par une application que si l’en-tête Vulkan du système (sur lequel l’application est compilée) est suffisamment récente et contient les définitions de l’API Vulkan 1.1, 1.2 ou 1.3. Lors de la compilation de Qt à partir du code source, cela a une conséquence supplémentaire : les en-têtes Vulkan de l’environnement de compilation doivent également être compatibles avec les versions 1.1, 1.2 et 1.3 pour obtenir une compilation Qt prenant en charge l’exécution des commandes des API 1.1, 1.2 et 1.3. Si aucune de ces conditions n'est remplie, les applications ne pourront appeler que les commandes Vulkan 1.0 via `QVulkanFunctions` et ` QVulkanDeviceFunctions`.
Considérations de sécurité
QVulkanFunctions 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. Appeler une fonction membre ici équivaut donc à appeler directement la commande Vulkan correspondante, et les règles d’utilisation valides de la spécification Vulkan s’appliquent sans modification. 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 QVulkanFunctions 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 leur contrôle. Voir QVulkanInstance pour plus d’informations.
Voir également QVulkanInstance, QVulkanDeviceFunctions, 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.