Synthèse d'Image - TD1 : OpenGL: Primitives et fenêtres
Introduction
Ce TD a pour but de vous familiariser avec les primitives d'OpenGL
et de comprendre les différentes coordonnées d'une fenêtre OpenGL.
Pour ce faire, un
squelette de code vous est fourni.
Taches à réaliser
Tout d'abord, téléchargez et décompressez le squelette de code,
puis compilez avec make dans un terminal.
Normalement, une fenêtre noire devrait apparaitre.
Afin de comprendre et identifier les fonctions de bases, il vous faudra lire le code.
En particulier: la fonction mouse (commandes souris), keyboard (commandes clavier),
draw_scene (affichage de la scène), draw_objects (modélisation des objets),
window_reshape (remise à l'échelle de la fenêtre).
Ces différentes fonctions sont appelés dans le main.
Vous allez commencez par affichez les points à la fenêtre.
Pour ce faire, chaque nouveau point sera stocké dans le tableau points
Remplissez la fonction draw_objects pour un premier affichage.
Vérifiez votre programme en insérant quelques points dans le tableau points.
Nous cherchons à ce qu'un clique de souris ajoutent un point à afficher à l'endroit exact du pointeur.
Remplissez la fonction mouse dans cet optique.
Nous allons maintenant comprendre les différentes primitives existantes en OpenGL.
Pour ce faire, modifier draw_objects avec les différents types de primitives.
Utilisez type et la touche 'c' du clavier!
Si vous avez finis les différentes étapes, où bien avez du mal à comprendre les différentes primitives:
Affichez les sommets et les arrêtes en même temps que les faces.
Pour affichez les arrêtes, utilisez la fonction glPolygonMode.
Remarques
Les coordonnées (x, y) à l'écran sont comprises entre -1 et 1.
Les coordonnées (x, y) de mouse sont les valeurs entières du pixel correspondant dans la fenêtre
Voici un exemple de programme pour afficher un point à l'origine:
    glBegin(GL_POINTS);           // Remplacez GL_POINTS par le type de Primitive
      glColor2d (1.0, 1.0, 1.0);   // Couleurs des prochains points (en rgb).
      glVertex2d(0.0, 0.0);         // Place le vertex (point) à la coordonnées 0,0
    glEnd();
Pour l'affichage des arrêtes, utilisés glPolygonMode;