Ceci est une ancienne révision du document !
Le support d’OpenGL dans Qt5 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 Qt5.
Dans Qt4, 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 :
Dans Qt4, on a donc un problème dans l’organisation des modules. Beaucoup de classes de QtGui peuvent dépendre des classes appartenant à QtOpenGL alors que ce module dépend normalement de QtGui. C’est pour cela que de nouvelles classes font leur apparition dans Qt5 et que les différents modules ont été réorganisés :
Remarque : il faut faire attention de ne pas confondre le module QtOpenGL, contenant les classes commençant par QGL, et le module QtGui, contenant les classes commençant par QOpenGL (sans t).
Le module QtGui de Qt5 réutilise des classes existantes du module QtOpenGL de Qt4. Les noms sont explicites :
Plusieurs nouvelles classes font leur apparition :
La procédure d'installation ci-dessous concerne les anciennes versions de Ubuntu
Tout d’abord, il faut Qt5. Le plus simple est d’utiliser les dépôts PPA sur Ubuntu : https://launchpad.net/~forumnokia/+archive/fn-ppa. Qt5 sera installé dans le répertoire /opt/qt5. Pour ajouter cette version de Qt dans QtCreator, il faut aller dans le menu « Outils » puis « Options… », allez dans « Compiler et exécuter… » puis l’onglet « Versions de Qt ». Cliquer sur « Ajouter » et aller chercher le fichier « /opt/qt5/bin/qmake ». Voilà, Qt5 est prêt à être utilisé.
Pour les versions récentes de Ubuntu (à partir de 13.04 je crois ?), il est possible d'utiliser les paquets libqt5* ou le paquet ubuntu-sdk
sudo apt-get update && sudo apt-get install libqt5* // ou sudo apt-get update && sudo apt-get install ubuntu-sdk
Je vous conseille d'installer également les dernières versions des compilateurs C++ : GCC 4.9 et Clang 3.4 (il y a également Clang 3.5 dans les version unstable je crois, à tester) :
sudo apt-get update && sudo apt-get install gcc-snapshoot clang-3.4 clang-3.5
Modifier le code
Il est également nécessaire de modifier un peu (ou beaucoup, si vous utilisez des fonctionnalités dépréciée de Qt 4) votre code. La première chose à faire est d’ajouter le module “widgets” (remarque : l’ajout des modules “core” et “gui” n’est pas obligatoire puisqu'ils sont inclus par défaut, je les remets pour que cela soit plus clair) :
QT += core gui opengl greaterThan(QT_MAJOR_VERSION, 4) { QT += widgets }
Le seconde chose à faire est de supprimer la déclaration des modules dans les includes. Par exemple :
#include <QtGui/QWidget> // devient #include <QWidget>
Dans la majorité des cas, ces deux modifications seront suffisantes. Si ce n'est pas le cas, il faudra modifier en cas par cas, n'hésitez pas à demander sur les forums.