Ceci est une ancienne révision du document !
Le support d’OpenGL dans Qt 5 a été modifié pour mieux l’intégrer avec les nouveaux modules de Qt : QtQuick2 et Qt3D. Cet article présente les modifications apportées dans Qt 5.
Dans Qt 4, les fonctionnalités d’OpenGL sont implémentées dans un module spécifique, QtOpenGL. Ce module était utilisé par différentes classes pour bénéficier de l’accélération matérielle. Il existe plusieurs méthodes pour activer l’accélération matérielle :
QApplication::setGraphicsSystem(“opengl”)
, dans la fonction main
par exemple ;QGraphicsView
(QtGraphics) ou QDeclarativeView
(QtQuick), utilisez la fonction setViewport(new QGLWidget)
;QPainter
directement sur un QGLWidget
, qui est une classe dérivée de QWidget
avec un contexte OpenGL ;Dans Qt 4, le support d'OpenGL était donc optionnel, dans un module dédié. Il fallait créer spécifiquement un contexte OpenGL et le passer en paramétré pour bénéficier de l’accélération matérielle.
Dans Qt 5, l'objectif a été de fournir un support minimal d'OpenGL dans QtGui, ce qui permet de l'utiliser dans tous les modules graphiques (widgets, Qt Quick) qui dépendent de QtGui.
QOpenGLXxx
appartiennent au module QtGui et fournissent les fonctionnalités de base permettant l’accélération matérielle pour toute les classes de rendu de Qt ;QWidget
n’est plus le parent de toutes les classes de rendu. Cette classe et ses dérivées (QGraphicsView
par exemple) sont transférées dans le module “widgets” ;QWidget
, la classe QDeclarativeView
devient QQuickView
et OpenGL est utilisé par défaut ;QGLWidget
et ses dérivés (les classes qui commencent par QGLXxx
). Ce module permet de conserver le code Qt 4 compatible avec Qt 5, mais ces classes sont dépréciées au profit des classes QOpenGLXxx
.
Remarque : il faut faire attention de ne pas confondre le module QtOpenGL, contenant les classes commençant par QGLXxx
, et le module QtGui, contenant les classes commençant par QOpenGLXxx
(sans t).
Vous trouverez la liste de toutes les classes QOpenGLXxx
dans la documentation de Qt.
'Notes de mise à jour
'
Ce tutoriel concerne que les classes de Qt Gui, non QtOpenGL.