Programmation Graphique 2D

 

 
Pour information : la validation de l'enseignement est faite sur projet. Les projets sont à rendre au plus tard le lundi 15 décembre 2014 à 9h00 (1 point de pénalité par heure de retard). Le projet est soutenu (présentation de 5mn sur vidéo projecteur) et la soutenance se déroule en A193 le mardi 16 décembre à 12h00. Afin d'être notés, tous les étudiants ont l'obligation de se présenter aux soutenances même si leur projet n'est pas terminé.
 
Supports & liens
  • Site de la SDL - Simple DirectMedia Layer : Nous utiliserons la SDL-2 comme bibliothèque donnant accès à un contexte OpenGL 3.2 ou plus et aussi comme bibliothèque de gestion des évènements et des interactions utilisateur. Elle pourra, si besoin, être utilisée pour la gestion des threads, des fonts, au chargement de divers formats d'images ou de sons.

  • Site d'OpenGL - Open Graphics Library : OpenGL sera utilisé en version CORE 3.2 et + (voire 3.3 et +). Nous utiliserons la documentation des Reference Pages d'OpenGL 3.3, au moins pour les premiers exemples donnés, nous fournissons les Projets/Makefiles pour un fonctionnement sous Linux (Makefile), Windows (Code::Blocks, Visual C++ 2010 express, DevC++ 5 ou Makefile sous cygwin/MingW32) et Mac OS X (Makefile).

  • GL4Dummies : nous développons une bibliothèque permettant une gestion uniforme et facile des ressources OpenGL via la SDL2 (une ancienne version utilisant la SDL 1.2 existe mais ne sera plus maintenue par l'auteur). Actuellement, le source de cette bibliothèque est fourni, quand nécessaire, avec le source des exemples de cours.

  • ForCB : contenu spécifique aux utilisateurs de Code::Blocks, vous pouvez décompresser le dossier ForCB au même niveau que les exemples de cours afin d'avoir l'ensemble des dépendances nécessaires (includes et libs des libs SDL2).

  • ForVC : contenu spécifique aux utilisateurs de Visual C++ 2010 Express, vous pouvez décompresser le dossier ForVC au même niveau que les exemples de cours afin d'avoir l'ensemble des dépendances nécessaires (includes et libs des libs SDL2 et GL).

Exemples utilisés en cours
Ecran de neige : PG2DExemple01-1.0.tgz
Les primitives et le ScanLine : PG2DExemple02-1.0.tgz
demoHelper-1.3.1.tgz : Nouvelle version de la bibliothèque avec, comme nouvelle fonctionnalité depuis la 1.3.0, la prise en compte d'anciennes architectures OpenGL 2 ; pour cela une ligne est à décommenter (ligne ajoutant -DDHGL2 à CPPFLAGS) dans le Makefile et l'ensemble à recompiler. Cette version corrige un bug sur le chargement d'une image et adopte définitivement la lib SDL2_image.
demoHelper-1.3.0.tgz : Nouvelle version de la bibliothèque avec, comme nouvelle fonctionnalité (depuis la 1.1.0 et la 1.2.0), la gestion automatique et dynamique de multiple écrans en mode CPU, la copie depuis une surface SDL et le placage avec possibilité de rotation (GPU) entre plusieurs écrans. Aussi, ajout d'exemples de chargement d'une image RGBA (et donc prise en compte du blending) depuis SDL et de recopie multiple depuis la surface SDL vers l'écran en mode CPU (pixel par pixel) et aussi en mode GPU.
demoHelper-1.1.0.tgz : Nouvelle version de la bibliothèque ultime qui vous permet de réaliser facilement vos démos en SDL2 / OpenGL et SDL2_Mixer. Cette version apporte des corrections de bugs ( personne n'est parfait ;) ) et une intégration directe et facile des outils de primitives CPU (voir exemple d'animation 03). Pour ceux qui ont commencé l'intégration avec la précédente version il suffit de remplacer les fichier primitives.* et animeManager.* par ceux de la nouvelle version.
Voronoï CPU par cercles grossissants : PG2DExemple03_Voronoi-1.0.tgz
Première tentative de voronoï GPU commencée en cours et à continuer : PG2DExemple01-1.1.tgz
Triangulation itérative de Delaunay : téléchargeable ici - faire
make && ./delaunay 200 > test.ps && evince test.ps
Codes vus en cours pour respectivement faire un simple flou, appliquer une convolution passée en argument ou un filtre Sobel : simple flou, convolution générique, Sobel
SIExemple13-1.0.tgz : Flou, Sobel, itérations de flous le tout en GPU et utilisant les FBO (Frame Buffer Objets) pour réaliser les itérations. Lors de l'exécution, appuyez sur n pour obtenir l'effet suivant et p pour l'effet précédent.
Animation de mobiles subissant la gravité et ricochant sur les bords de l'écran : SIExemple16-1.0.tgz
Exercices
Exercice 1 (pour le 07 octobre 2014)
FACILE : Paramétrez votre machine de développement pour compiler et exécuter le premier exemple de cours. Envoyez une preuve de réussite : une capture d'écran.
 
Exercice 2 (entre le 07 et le 14 octobre 2014)
MOYEN : Intégrer la fonction tracé de droites (Br'65) vue en cours et écrire une fonction tracé de cercles (Br'77). Les utiliser afin d'obtenir un exemple proche de celui de la figure ci-contre. Envoyer l'archive.
 
Exercice 3 (pour le 28 octobre 2014)
FACILE : Réaliser, à partir du code PG2DExemple02-1.0.tgz et comme vu en cours durant la séance du 21/10/14, un programme permettant de calculer et d'afficher un diagramme de Voronoï discret par la méthode des cercles grossissants.
 

 

 

Farès Belhadj

 

<-