QAbstractOpenGLFunctions Class
La classe QAbstractOpenGLFunctions est la classe de base d'une famille de classes qui exposent toutes les fonctions pour chaque version et profil OpenGL. Plus d'informations...
| En-tête : | #include <QAbstractOpenGLFunctions> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS OpenGL)target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake : | QT += opengl |
| Héritée par : | 27 typesQOpenGLFunctions_1_0 QOpenGLFunctions_1_1, , , , , , , , , , , , , , , , , , , , , , , , , et QOpenGLFunctions_1_2 QOpenGLFunctions_1_3 QOpenGLFunctions_1_4 QOpenGLFunctions_1_5 QOpenGLFunctions_2_0 QOpenGLFunctions_2_1 QOpenGLFunctions_3_0 QOpenGLFunctions_3_1 QOpenGLFunctions_3_2_Compatibility QOpenGLFunctions_3_2_Core QOpenGLFunctions_3_3_Compatibility QOpenGLFunctions_3_3_Core QOpenGLFunctions_4_0_Compatibility QOpenGLFunctions_4_0_Core QOpenGLFunctions_4_1_Compatibility QOpenGLFunctions_4_1_Core QOpenGLFunctions_4_2_Compatibility QOpenGLFunctions_4_2_Core QOpenGLFunctions_4_3_Compatibility QOpenGLFunctions_4_3_Core QOpenGLFunctions_4_4_Compatibility QOpenGLFunctions_4_4_Core QOpenGLFunctions_4_5_Compatibility QOpenGLFunctions_4_5_Core QOpenGLFunctions_ES2 |
Fonctions publiques
| virtual | ~QAbstractOpenGLFunctions() |
Fonctions protégées
Description détaillée
Les implémentations d'OpenGL sur différentes plateformes sont capables de se lier à un nombre variable de fonctions OpenGL en fonction de l'ABI d'OpenGL sur cette plateforme. Par exemple, sur Microsoft Windows, seules les fonctions jusqu'à celles d'OpenGL 1.1 peuvent être liées au moment de la construction. Toutes les autres fonctions doivent être résolues au moment de l'exécution. La solution traditionnelle consiste à utiliser QOpenGLContext::getProcAddress() ou QOpenGLFunctions. La première solution est fastidieuse et sujette aux erreurs, et implique de traiter directement les pointeurs de fonction. La seconde n'expose que les fonctions communes à OpenGL ES 2 et à OpenGL de bureau. Il y a cependant beaucoup de nouvelles fonctionnalités OpenGL qui sont utiles lors de l'écriture d'applications OpenGL dans le monde réel.
Qt Core fournit maintenant une famille de classes qui héritent toutes de QAbstractOpenGLFunctions qui exposent chaque fonction OpenGL de base par le biais d'une fonction membre correspondante. Il existe une classe pour chaque combinaison valide de version et de profil OpenGL. Chaque classe suit la convention de nommage :
QOpenGLFunctions_<MAJOR VERSION>_<MINOR VERSION>[_PROFILE]
Pour les versions OpenGL 1.0 à 3.0, il n'y a pas de profil, ce qui conduit aux classes :
- QOpenGLFunctions_1_0
- QOpenGLFunctions_1_1
- QOpenGLFunctions_1_2
- QOpenGLFunctions_1_3
- QOpenGLFunctions_1_4
- QOpenGLFunctions_1_5
- QOpenGLFunctions_2_0
- QOpenGLFunctions_2_1
- QOpenGLFunctions_3_0
où chaque classe hérite de QAbstractOpenGLFunctions.
La version 3.1 d'OpenGL a supprimé de nombreuses fonctions obsolètes, ce qui a conduit à une API beaucoup plus simple et générique.
Avec OpenGL 3.2, le concept de profils a été introduit. Deux profils sont actuellement définis pour OpenGL : Core et Compatibility.
Le profil Core n'inclut aucune des fonctions qui ont été supprimées dans OpenGL 3.1. Le profil Compatibilité contient toutes les fonctions du profil Core de la même version plus toutes les fonctions qui ont été supprimées dans OpenGL 3.1. De cette manière, les classes du profil de compatibilité permettent d'utiliser les nouvelles fonctionnalités d'OpenGL tout en vous permettant de continuer à utiliser votre ancien code OpenGL. Pour le nouveau code OpenGL, le profil Core devrait être préféré.
Veuillez noter que certains fournisseurs, notamment Apple, n'implémentent pas le profil de compatibilité. Par conséquent, si vous souhaitez cibler de nouvelles fonctionnalités OpenGL sur macOS, vous devez vous assurer que vous demandez un contexte de profil Core via QSurfaceFormat::setProfile().
Qt Core fournit des classes pour toutes les combinaisons de versions et de profils Core et Compatibility. Les classes pour les versions OpenGL 3.1 à 4.3 sont :
- QOpenGLFunctions_3_1
- QOpenGLFunctions_3_2_Core
- QOpenGLFunctions_3_2_Compatibility
- QOpenGLFunctions_3_3_Core
- QOpenGLFunctions_3_3_Compatibility
- QOpenGLFunctions_4_0_Core
- QOpenGLFunctions_4_0_Compatibility
- QOpenGLFunctions_4_1_Core
- QOpenGLFunctions_4_1_Compatibility
- QOpenGLFunctions_4_2_Core
- QOpenGLFunctions_4_2_Compatibility
- QOpenGLFunctions_4_3_Core
- QOpenGLFunctions_4_3_Compatibility
où chaque classe hérite de QAbstractOpenGLFunctions.
Un pointeur sur un objet de la classe correspondant à la version et au profil d'OpenGL utilisés peut être obtenu à partir de QOpenGLVersionFunctionsFactory::get(). Si vous l'obtenez de cette manière, notez que le site QOpenGLContext conserve la propriété de l'objet. Ceci afin que l'instance puisse être mise en cache et partagée.
Avant d'appeler l'une des fonctions OpenGL exposées, vous devez vous assurer que l'objet a résolu les pointeurs de fonction vers les fonctions OpenGL. Cela ne doit être fait qu'une seule fois par instance avec initializeOpenGLFunctions(). Une fois initialisé, l'objet peut être utilisé pour appeler n'importe quelle fonction OpenGL pour la version et le profil correspondants. Notez que initializeOpenGLFunctions() peut échouer dans certaines circonstances, vérifiez donc la valeur de retour. Les situations dans lesquelles l'initialisation peut échouer sont celles où vous avez un objet de fonctions pour une version ou un profil qui contient des fonctions qui ne font pas partie du contexte utilisé pour résoudre les pointeurs de fonctions.
Si vous utilisez exclusivement des objets de fonction, vous obtiendrez des erreurs de compilation si vous tentez d'utiliser une fonction qui n'est pas incluse dans cette version et ce profil. C'est évidemment beaucoup plus facile à déboguer qu'un comportement indéfini au moment de l'exécution.
Voir également QOpenGLVersionFunctionsFactory::get().
Documentation sur les fonctions membres
[protected] QAbstractOpenGLFunctions::QAbstractOpenGLFunctions()
Construit un objet QAbstractOpenGLFunctions.
[virtual noexcept] QAbstractOpenGLFunctions::~QAbstractOpenGLFunctions()
Détruit un objet QAbstractOpenGLFunctions.
© 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.