Textures
DESS IM, UJF-Grenoble, 2003
Copiez le programme
tex2d.C
. Pour le compiler à l'aide du
Makefile
, il vous faut aussi
traqueboule.h
et
matrix.h
. Exécutez-le. La scène représente un maillage polygonal de la fonction de Rosenbrock sur l'intervalle
.
question 1
En appuyant sur la touche 'w' vous pouvez basculer entre deux modes d'affichage. Essayez. Expliquez très brièvement comment ceci est programmé.
question 2
Quels sont les tableaux de données utilisés pour définir le maillage ?
question 3
Décommentez la ligne glEnable(GL_TEXTURE_2D);, recompilez et exécutez. Où dans le programme la texture est-elle définie? Quelle est la dimension et la taille du tableau des couleurs de texture ?
question 4
Remplacez GL_REPLACE par GL_MODULATE. Expliquez brièvement la différence, et quelles opérations mathématiques sont impliquées.
question 5
En jouant sur les coordonnées de texture, et sans modifier l'image utilisée (elle reste 2x2), plaquez un échiquier 8x8 cases au lieu de 2x2 en jouant sur les coordonnées de texture. Quelles sont les modifications nécessaires ?
Nous voulons maintenant visualiser les courbes de niveau de la fonction. Nous créons une texture unidimensionnelle noire et blanche, et la coordonnée de texture de chaque sommet dépendra de sa hauteur. Ceci nécessite les modifications suivantes:
- définir un tableau de dimensions adéquates pour représenter la texture
- remplacer GL_TEXTURE_2D par GL_TEXTURE_1D, et remplacer glTexImage2D par glTexImage1D avec les paramètres adéquats
- associer de nouvelles coordonnées de texture aux sommets (une par sommet au lieu de deux)
- passer les bons paramètres à glTexCoordPointer
question 6
Quelle est la nouvelle dimension du tableau des couleurs de texture ?
question 7
Quelle est la nouvelle taille du tableau des coordonnées de texture ?
question 8
Proposez une expression de la coordonnée de texture de chaque sommet.
question 9
En appliquant (après renormalisation des hauteurs) comme coordonnées de texture, la fonction semble avoir plusieurs minima locaux. Est-ce certain ? Pour en avoir le coeur net, augmentez la résolution du maillage.
Récupérez et compilez
sphere.zip
qui essie de texturer une sphère pour représenter la terre. Comprenez et corrigez ce programme.
question 10
Que fallait-il changer ?
Francois Faure
2004-10-19