Sur cette page

QOpenGLVersionFunctionsFactory Class

Permet d'accéder aux fonctions OpenGL pour une version et un profil spécifiés. Plus d'informations...

En-tête : #include <QOpenGLVersionFunctionsFactory>
CMake : find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake : QT += opengl
Depuis : Qt 6.0

Membres publics statiques

QAbstractOpenGLFunctions *get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)
TYPE *get(QOpenGLContext *context = nullptr)

Description détaillée

Documentation des fonctions membres

[static] QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)

Renvoie un pointeur sur un objet qui permet d'accéder à toutes les fonctions de versionProfile de context. Il n'est pas nécessaire d'appeler QAbstractOpenGLFunctions::initializeOpenGLFunctions() tant que context est à jour. Il est également possible d'appeler cette fonction lorsque le site context n'est pas à jour, mais dans ce cas, il est de la responsabilité de l'appelant d'assurer une initialisation correcte en appelant QAbstractOpenGLFunctions::initializeOpenGLFunctions() par la suite.

Habituellement, on utilise la version template de cette fonction pour que le résultat soit automatiquement coulé dans le bon type.

[static] template <typename TYPE> TYPE *QOpenGLVersionFunctionsFactory::get(QOpenGLContext *context = nullptr)

Retourne un pointeur vers un objet qui donne accès à toutes les fonctions pour la version et le profil de ce contexte. Il n'est pas nécessaire d'appeler QAbstractOpenGLFunctions::initializeOpenGLFunctions() tant que le site context est à jour. Il est également possible d'appeler cette fonction lorsque le context n'est pas à jour, mais dans ce cas, il est de la responsabilité de l'appelant d'assurer une initialisation correcte en appelant QAbstractOpenGLFunctions::initializeOpenGLFunctions() par la suite.

Habituellement, on utilise la version template de cette fonction pour que le résultat soit automatiquement coulé dans le bon type.

auto funcs = QOpenGLVersionFunctionsFactory::get<QOpenGLFunctions_3_3_Core>(context) ;if (!funcs) {    qFatal("Could not obtain required OpenGL context version");
}

Il est possible de demander un objet fonctionnel pour une version et un profil différents de ceux pour lesquels le contexte a été créé. Pour ce faire, il convient d'utiliser la version modèle de cette fonction en spécifiant le type d'objet fonctionnel souhaité en tant que paramètre modèle ou en transmettant un objet QOpenGLVersionProfile en tant qu'argument à la fonction non modèle.

Notez que les demandes d'objets fonctionnels d'autres versions ou profils peuvent échouer et renvoient alors nullptr. La création de l'objet fonction peut échouer si la requête ne peut être satisfaite parce qu'elle demande des fonctions qui ne font pas partie de la version ou du profil de ce contexte. Par exemple :

  • La demande d'un objet de fonctions du profil de base 3.3 est acceptée.
  • La demande d'un objet de fonctions de profil de compatibilité 3.3 échouera. Nous ne parviendrons pas à résoudre les fonctions obsolètes.
  • La demande d'un objet de fonctions de profil de base 4.3 échouerait. Nous ne parviendrons pas à résoudre les nouvelles fonctions de base introduites dans les versions 4.0-4.3.
  • La demande d'un objet de fonctions 3.1 aboutirait. Il n'y a rien dans la version 3.1 qui ne soit pas également dans la version 3.3 core.

Notez que si vous créez un objet de fonction via cette méthode, l'adresse QOpenGLContext conserve la propriété de l'objet. Cela permet à l'objet d'être mis en cache et partagé.

Cette fonction surcharge QOpenGLVersionFunctionsFactory::get().

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