TD 1 : primitives et fenętres OpenGL

Résumé du TD

Le but est de tester les différentes primitives OpenGL, les callbacks GLUT et les différents systèmes de coordonnées dans la fenętre. Un squelette de programme est fourni ; il contient tous les appels de fonctions de base. Il vous reste à remplir les fonctions qui prennent en charge le dessin des primitives elles-męme.

Instructions

Premièrement, téléchargez et décompressez le squelette de code fourni. Compilez-le en tapant make dans une fenętre terminal. Il devrait compiler, mais ne rien faire.

Prenez le temps de lire le code, pour identifier les fonctions qui sont appelées en fonction des événements système (bouton de souris enfoncé, touche au clavier, fenętre redimensionnée...)

Le principe du programme est simple : à chaque fois que l'utilisateur appuie sur le bouton de la souris, on va créer un nouveau point 2D dans le tableau controlPoints (ça se passe dans la fonction mouse).

Dans la fonction drawObject, on affiche une primitive OpenGL basée sur tous ces sommets. Ŕ vous de voir à quoi elle ressemble.

Difficultés : faire en sorte que le point soit exactement à l'endroit où est la souris. Y compris quand on retaille la fenętre, et qu'elle devient rectangle (tout en gardant le bon aspect ratio). Ensuite, afficher les primitives.

N'oubliez pas d'utiliser la variable primitiveType pour faire varier le type de primitive employée (GL_POINTS, GL_LINES...) Observez quelles arrętes sont utilisées, suivant le type de primitives.

Niveau 2 : pour mieux comprendre ce qui se passe, ajoutez un affichage des sommets et des arrętes par dessus les polygones. Pour les arrętes, il vous faudra la fonction glPolygonMode.

Si vous avez fini avant les autres : la fonction myReshape assure que les objets tracés gardent leur position par rapport à la fenętre, avec un aspect ratio de 1. On pourrait envisager d'autres versions, par exemple les primitives restent fixes à l'écran quand on déplace la fenętre.