TP 2: Apparence et Ombrage OpenGL

But:

Dans ce TP, vous allez travailler sur l'apparence des objets, en multipliant les combinaisons des différents paramètres vu en cours: ombrage plat ou doux, couleurs directes ou combinaison matériaux / lumières, et enfin avec ou sans texture.

Description:

Le programme ouvre une fenêtre sur un environnement contenant une sphère, les deux objets plans tracés dans le TP précédent et un plan horizontal situé en dessous de ces objets. Tous les objets sont tracés en plein. Le programme compile déjà, mais vous présente les objets sans aucune caractéristique d'apparence. Le travail consistera à intégrer au code existant les composantes d'ombrage requises.

Pendant l'exécution du programme, tous les paramètres d'apparence seront contrôlables par l'intermédiaire d'un menu accessible grâce au bouton droit de la souris. La sélection d'un élément du menu active ou désactive alternativement le paramètre correspondant. Le menu est déjà en place, mais il n'a pour l'instant aucun effet visible.

Le programme fourni comprend par ailleurs une solution au problème de la navigation du TP précédent.

Implémentation:

Lumières:

Objets:

Quand les textures sont activées, seul le plan horizontal devra être texturé. Une texture de bois est fournie dans le fichier wood.ppm. Une fonction ppm_read_file est fournie et déjà appelée dans le code pour charger la texture. Cette fonction remplie une variable de type texture_data_t qui contient tous les paramètres dont vous avez besoin pour définir la texture au sens OpenGL.

L'application de la texture devra être conforme aux paramètres suivants:

Culling et autres rappels:

Contrairement au TP précédent, nous souhaitons maintenant voir le triangle et le rectangle des deux côtés. En conséquence, le culling ne devra être activé que pour le tracé de la sphère et du plan horizontal. N'oubliez pas non plus que seul le plan horizontal doit être texturé, et que seuls les deux objets de côté (rectangle et triangle) doivent utiliser leurs couleurs simples en tant que composantes de matériau.

Conseils:

Fonctions utiles:

glEnable, glDisable, glPushAttrib, glPopAttrib, glLoadIdentity, glShadeModel, glNormal3f, glColorMaterial, glColor3f, glLightModeli, glLightModelfv, glLightf, glLightfv, glMaterialfv, glTexEnvf, glTexParameteri, glTexImage2D, glTexCoord2f