Programmation Graphique - Synthèse d'Images : 2D CPU, 2D GLSL et OpenGL 3.2+

 

 
Pour information : la validation de l'enseignement est faite sur projet-démo (voir en bas de page). Les projets sont à rendre par email (titre : Projet PG2D1617S2) au plus tard le jeudi 27 avril 23h59 (retard = session de rattrapage). La soutenance (5mn max par étudiant(e)) se déroulera en B104 le mercredi 03/05 ou 10/05 selon date d'envoi du projet et convocation.
La dernière séance de cours aura donc lieu le mercredi 29 mars 2017.
Pour le rattrapage, les projets sont à rendre par email (sujet de l'email : Projet PG2D1617S2) au plus tard le jeudi 11 mai 2017 à 23h59 et peuvent être soutenus en même temps qu'API8 (www.api8.fr) le 17 mai 2017.
 
UNE NOUVELLE RELEASE gl4dummies-0.1.6.tar.gz EST DISPONIBLE SUR SOURCEFORGE, CERTAINS EXEMPLES SONT/SERONT BASES DESSUS.
 
Supports & liens
Documentations
Exemples utilisés en cours
Ecran bleu - l'Init de la SDL2 avec OpenGL 3.2 : SIExemple01-1.0.tgz
Shaders statiques - Affichage d'une géométrie simple (un TRIANGLE_STRIP décrivant un rectangle) utilisant un VAO (Vertex Array Object) et un VBO (Vertex Buffer Object) : SIExemple02-1.0.tgz
Shaders dynamiques - avec la bibliothèque GL4Dummies - transfert et traitement en vertex et fragment shader des coordonnées et des couleurs des sommets: SIExemple03-1.0.tgz
Shaders dynamiques - avec la bibliothèque GL4Dummies - transfert et traitement en vertex et fragment shader des coordonnées et d'une texture statique : SIExemple03-1.01_tex.tgz
Implémentation du tracé de droite par l'algorithme de Bresenham'65 et comparaison avec un tracé de droite par division flottante : fichier tests_droite.c
Exemple minimal (29 lignes de code) GL4D-Primitives ouvrant une fenêtre-écran et remplissant l'écran de couleurs aléatoires : sample_2d_01-1.0.tgz
Exemple GL4D-Primitives reprenant l'usage des primitives 2D de base : sample_2d_02-1.0.tgz
Code débuté en cours le 06/02/17 concernant le diagramme de Voronoi CPU, à finir : sample_2d_04-0.1.tgz
Code débuté en cours le 13/02/17 sur la simulation de déplacement de mobiles (balles) avec prise en compte des rayons et de la gravité : sample_2d_03-0.2.tgz. A faire : ajoutez la collision entre balles.
Code minimal utilisant une transformation type scale en GPU (zoom en fonction d'une sinusoide) : sample_2d_05-1.0.tgz. Fait en cours le 20/02/2017, sample_2d_05-1.1.tgz même code mais avec musique et variation de la taille du rectangle en fonction de la moyenne des échantillons sonores.
Simulation de balles avec rendu des balles 100% GPU : sample_2d_06-1.0.tgz.
Nouvelle version (faite en cours) : sample_2d_06-1.1.tgz : ajout d'un mode voronoï (appuyer sur 'v') et d'une rotation avec une gravité toujours vers le bas (dans l'absolu)
Nouvelle version (faite en cours) : sample_2d_06-1.2.tgz : gestion d'un fond texturé et de la transparence
tutoAPI8.tgz : exemples progressifs permettant de réaliser une démo (comme pour api8). Reprendre l'exemple analysant le son (02_music) et l'intégrer dans la simulation de balles 100% GPU.


Exemples réalisés en cours le 22/03/17 :
demoHelper-1.5.tgz intégration de earth dans une démo.
sample_2d_03-0.3.tgz rendu de mobiles en Quads OpenGL texturés.
(Fait en cours) Pour vos pages de crédits : exemple de titrage et incrustation de texte sur fond noir à l'aide d'une nouvelle transition demoHelper-1.6.tgz.
Exercices
Exercice 1 (à faire pour 30/01/17 dernier délais, séance de TP au bocal)
FACILE : Paramétrez votre machine de développement pour compiler et exécuter les 3 premiers exemples de cours et plus particulièrement le dernier.
 
Exercice 2 (à faire pour 30/01/17 dernier délais, noté, séance de TP au bocal)
  • Partir de l'exemple SIExemple03-1.01_tex.tgz, modifier la taille de la texture pour qu'elle corresponde à la taille de la fenêtre et la remplir avec des couleurs (pixels) aléatoires (soit en niveaux de gris soit en 16M).
  • Faire que les pixels changent à chaque Frame.
 
Exercice 3 (à faire pour 06/02/17)
  • Partir de l'exemple sample_2d_03-0.1.tgz et ajouter la prise en compte du temps, du rayon de la balle et corriger les bugs de type blocage de la balle (quand la gestion du temps sera ajoutée).
 

 

Exemples de Démos

Cet enseignement donne lieu, depuis deux ans, à une présentation des projets des étudiants en synthèse d'images au concours API8


 

Farès Belhadj

 

<-