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. |
|
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 |