Sur cette page

QOpenGLVersionFunctionsFactory Class

Permet d'accéder aux fonctions OpenGL pour une version et un profil donnés. En savoir plus...

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 sur les fonctions membres

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

Renvoie un pointeur vers un objet permettant d’accéder à toutes les fonctions d’ versionProfile de l’ context. Il n’est pas nécessaire d’appeler QAbstractOpenGLFunctions::initializeOpenGLFunctions() tant que l’ context est à jour. Il est également possible d'appeler cette fonction lorsque l'context n'est pas à jour, mais dans ce cas, il incombe à l'appelant de s'assurer que l'initialisation s'effectue correctement en appelant ensuite QAbstractOpenGLFunctions::initializeOpenGLFunctions().

En général, on utilise la version « template » de cette fonction pour que le résultat soit automatiquement converti au type approprié.

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

Renvoie un pointeur vers un objet permettant d’accéder à toutes les fonctions correspondant à la version et au profil de ce contexte. Il n’est pas nécessaire d’appeler la fonction QAbstractOpenGLFunctions::initializeOpenGLFunctions() tant que l’ context est à jour. Il est également possible d'appeler cette fonction lorsque l'context n'est pas à jour, mais dans ce cas, il incombe à l'appelant de s'assurer que l'initialisation s'effectue correctement en appelant ensuite QAbstractOpenGLFunctions::initializeOpenGLFunctions().

En général, on utilise la version « template » de cette fonction pour que le résultat soit automatiquement converti au type approprié.

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 de fonctions pour une version et un profil différents de ceux pour lesquels le contexte a été créé. Pour ce faire, utilisez soit la version « template » de cette fonction en spécifiant le type d’objet de fonctions souhaité comme paramètre de template, soit en passant un objet ` QOpenGLVersionProfile ` en argument à la fonction non-template.

Notez que les demandes d’objets de fonctions d’autres versions ou profils peuvent échouer et, dans ce cas, renvoyeront nullptr. La création de l’objet de fonctions peut notamment échouer si la demande ne peut être satisfaite parce qu’elle porte sur des fonctions qui ne figurent pas dans la version ou le profil de ce contexte. Par exemple :

  • La demande d’un objet `functions` du profil de base 3.3 aboutirait.
  • La demande d’un objet de fonctions du profil de compatibilité 3.3 échouerait. Nous ne pourrions pas résoudre les fonctions obsolètes.
  • La demande d’un objet de fonctions du profil de base 4.3 échouerait. Nous ne pourrions pas résoudre les nouvelles fonctions de base introduites dans les versions 4.0 à 4.3.
  • La demande d’un objet de fonctions de la version 3.1 aboutirait. Il n’y a rien dans la version 3.1 qui ne figure pas également dans le profil de base 3.3.

Notez que si vous créez un objet de fonctions via cette méthode, l’ QOpenGLContext e conserve la propriété de l’objet. Cela permet de mettre l’objet en cache et de le partager.

Cette fonction surcharge la méthode 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.