J'étudie un texte sur texture mapping
et dans la preparing to draw
session, je lis:
Définissez les paramètres d'habillage de texture. Cela contrôlera ce qui se passe lorsqu'une coordonnée de texture supérieure à 1,0 ou inférieure à 0,0 est rencontrée:
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,wrap);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,wrap);
où wrap est:
GL_REPEAT: spécifie que ce motif se répétera (c'est-à-dire, wrap-around) si des coordonnées de texture transformées inférieures à 0,0 ou supérieures à 1,0 sont rencontrées.
GL_CLAMP: spécifie que le motif «collera» à la valeur à 0,0 ou 1,0.
Mais il n'y a aucune explication quelle est la raison de rencontrer de telles coordonnées de texture?
Par exemple, supposons que je viens de dessiner un rectangle et que je souhaite y appliquer une image comme texture, est-il possible de rencontrer de telles coordonnées?
glTexCoord2f(0, 2);
par exemple. Cela a une signification bien définie très spécifique dans le code et lorsque le programme est en cours d'exécution. Si vous voyez cela, le programmeur l'a fait intentionnellement car il donne le résultat souhaité.Oui, vous pouvez rencontrer des coordonnées de texture supérieures
1.0
et inférieures à0.0
.Cela dépend complètement du modèle que vous avez chargé. Normalement, pour chaque sommet, la position, la normale et les coordonnées de texture sont stockées. Dans la plupart des formats de fichiers maillés, les coordonnées de texture ne sont limitées à aucune plage.
Ceci est utilisé pour répéter une texture . Par exemple, pour enjamber une texture quatre temps entre un quad de sommets, les coordonnées de texture seraient
0,0
,0,4
,4,0
et4,4
. Sans texture emballage, vous auriez besoin des sommets supplémentaires pour diviser la surface en 4 fois 4 surfaces sous chacune avec les coordonnées de texture0,0
,0,1
,1,0
,1,1
. Moins de sommets entraîne de meilleures performances de rendu.En règle générale, il n'est pas souhaité que l'utilisateur remarque les bords d'une texture répétée. Par conséquent, les textures répétées peuvent être carrelées dans la plupart des cas. Cela signifie que le bord droit s'estompe de manière transparente vers le gauche et le bord supérieur vers le bas. De cette façon, la transition se fait en douceur et, espérons-le, ne sera pas remarquée par l'utilisateur.
Un sujet plus avancé, mais connexe, consiste à masquer intelligemment le fait que la même texture a été répétée plusieurs fois. Par exemple, le mélange de textures répétées de différentes tailles, par exemple une texture de mur et un décalque de saleté, est une technique courante.
la source
Without texture wrapping, you would need additional vertices to split the surface into 4 times 4 sub surfaces with each the texture coordinates 0,0, 0,1, 1,0, 1,1
Voilà une vraie explication pratique! Merci!