Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
qt_opengl_-_annexes [2014/03/10 20:31] gbdivers créée |
qt_opengl_-_annexes [2014/12/11 17:19] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Qt OpenGL - Annexes ====== | ====== Qt OpenGL - Annexes ====== | ||
- | Voici les codes sources des exemples abordés dans ce tutoriel. Pour les tester, il suffit d'ouvrir le fichier .pro avec Qt Creator et de lancer l'application. Il est intéressant aussi d'étudier ces codes sources pour bien comprendre le fonctionnement et l'implémentation d'OpenGL/OpenCL dans Qt. | + | **Sommaire** |
- | ===== Application minimale QtOpenGL ===== | + | * [[qt_opengl_-_introduction|]] |
+ | * [[opengl_dans_qt5|]] | ||
+ | * [[qt_opengl_-_generer_un_terrain|]] | ||
+ | * [[qt_opengl_-_envoyer_des_donnees_au_processeur_graphique|]] | ||
+ | * [[qt_opengl_-_utilisation_du_pipeline_programmable|]] | ||
+ | * [[qt_opengl_-_ajouter_des_lumieres_et_des_textures|]] | ||
+ | * [[qt_opengl_-_realiser_un_rendu_offscreen|]] | ||
+ | * [[qt_opengl_-_overpainting|]] | ||
+ | * [[qt_opengl_-_gestion_des_extensions|]] | ||
+ | * [[qt_opengl_-_annexes|]] | ||
- | [[http://cpp.developpez.com/redaction/data/pages/users/gbdivers/qtopengl/fichiers/OpenGL-minimal.zip|Sources]] | + | Voici les codes sources des exemples abordés dans ce tutoriel. Pour les tester, il suffit d'ouvrir le fichier .pro avec Qt Creator et de lancer l'application. Il est intéressant aussi d'étudier ces codes sources pour bien comprendre le fonctionnement et l'implémentation d'OpenGL dans Qt. |
+ | |||
+ | **Remarque : les sources n'ont pas été testé avec les dernières versions de Qt 4. De plus, les versions Qt 5 sont une simple mise à jour du code écrit pour Qt 4 avec MingW 4.4 (ajout du module widgets, suppression des modules dans les includes). Il ne respecte donc pas les bonnes pratiques du C++11 et devra être réécrit pour utiliser les fonctionnalités OpenGL de QtGui et non de QtOpenGL. Pour terminer, le programme d'exemple OpenGL-offscreen ne fonctionne plus sur Qt 5 (problème avec le FBO ou le pbuffer ?), je regarderai le problème dès que possible.** | ||
+ | |||
+ | L'ensemble des sources est disponible sur [[https://github.com/GuillaumeBelz/qt-opengl|GitHub]]. | ||
+ | |||
+ | ===== Application minimale QtOpenGL ===== | ||
Cette application permet de présenter le code minimal nécessaire pour initialiser un contexte OpenGL avec Qt. Elle affiche un simple repère orthonormé et le nombre d'images par seconde (FPS). Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. | Cette application permet de présenter le code minimal nécessaire pour initialiser un contexte OpenGL avec Qt. Elle affiche un simple repère orthonormé et le nombre d'images par seconde (FPS). Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. | ||
Ligne 12: | Ligne 27: | ||
===== Comparaison entre les différents modes de transfert de données au GPU ===== | ===== Comparaison entre les différents modes de transfert de données au GPU ===== | ||
- | |||
- | [[http://cpp.developpez.com/redaction/data/pages/users/gbdivers/qtopengl/fichiers/OpenGL-buffers.zip|Sources]] | ||
Cette application permet de présenter les différentes méthodes de transfert des données entre le CPU et le GPU (directe, vertex array, vertex buffer, indices). Elle affiche une heightmap avec texture. Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. La touche "T" permet d'afficher ou non la texture. La touche "F" permet d'afficher la heightmap sous forme de fil de fer ou non. La barre d'espace permet de changer de mode de transfert. Les flèches haut et bas permettent de modifier le délai d'affichage entre deux images. Pour déterminer le taux de FPS maximal, il suffit de mettre le délai à 0. | Cette application permet de présenter les différentes méthodes de transfert des données entre le CPU et le GPU (directe, vertex array, vertex buffer, indices). Elle affiche une heightmap avec texture. Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. La touche "T" permet d'afficher ou non la texture. La touche "F" permet d'afficher la heightmap sous forme de fil de fer ou non. La barre d'espace permet de changer de mode de transfert. Les flèches haut et bas permettent de modifier le délai d'affichage entre deux images. Pour déterminer le taux de FPS maximal, il suffit de mettre le délai à 0. | ||
Ligne 20: | Ligne 33: | ||
===== Utilisation des shaders ===== | ===== Utilisation des shaders ===== | ||
- | |||
- | [[http://cpp.developpez.com/redaction/data/pages/users/gbdivers/qtopengl/fichiers/OpenGL-shader.zip|Sources]] | ||
Cette application permet de présenter l'utilisation des shaders avec Qt. Elle affiche une heightmap avec texture et ombrage de Phong. La source de lumière est de type parallèle, c'est-à-dire que la source de lumière est à l'infini. L'angle d'incidence varie au cours du temps mais il est possible de stopper l'animation en appuyant sur la touche "L". Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. La barre d'espace permet d'afficher ou non le texte et les images 2D. Les flèches droite et gauche permettent de contrôler l'intensité de la texture. Les flèches haut et bas permettent de contrôler l'intensité des ombrages. | Cette application permet de présenter l'utilisation des shaders avec Qt. Elle affiche une heightmap avec texture et ombrage de Phong. La source de lumière est de type parallèle, c'est-à-dire que la source de lumière est à l'infini. L'angle d'incidence varie au cours du temps mais il est possible de stopper l'animation en appuyant sur la touche "L". Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. La barre d'espace permet d'afficher ou non le texte et les images 2D. Les flèches droite et gauche permettent de contrôler l'intensité de la texture. Les flèches haut et bas permettent de contrôler l'intensité des ombrages. | ||
Ligne 28: | Ligne 39: | ||
===== Rendu off-screen ===== | ===== Rendu off-screen ===== | ||
- | |||
- | [[http://cpp.developpez.com/redaction/data/pages/users/gbdivers/qtopengl/fichiers/OpenGL-offscreen.zip|Sources]] | ||
Cette application permet de tester différents modes de rendu off-screeen. Elle affiche une heightmap avec texture et ombrage de Phong. Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. La barre d'espace permet de changer de mode de rendu off-screen. | Cette application permet de tester différents modes de rendu off-screeen. Elle affiche une heightmap avec texture et ombrage de Phong. Le bouton droit de la souris permet de tourner autour du repère et la molette permet de s'approcher et de s'éloigner. La barre d'espace permet de changer de mode de rendu off-screen. |