Partager via


Modes d’adressage de texture

Votre application Direct3D peut affecter des coordonnées de texture à n’importe quel sommet de n’importe quelle primitive. En règle générale, les coordonnées u-and-v-texture que vous affectez à un sommet sont comprises entre 0,0 et 1,0 inclus. Toutefois, en affectant des coordonnées de texture en dehors de cette plage, vous pouvez créer certains effets de texturation spéciaux. .

Vous contrôlez ce que fait Direct3D avec les coordonnées de texture qui se trouvent en dehors de la plage [0.0, 1.0] en définissant le mode d’adressage de texture. Par exemple, votre application peut définir le mode d’adressage de texture afin qu’une texture soit mosaïque sur une primitive.

Direct3D permet aux applications d’effectuer l’habillage de texture. Consultez l’habillage de texture.

L’activation de l’habillage de texture rend efficacement les coordonnées de texture en dehors de la plage [0.0, 1.0] non valide, et le comportement de rastérisation de ces coordonnées de texture en ligne n’est pas défini dans ce cas. Lorsque l’habillage de texture est activé, les modes d’adressage de texture ne sont pas utilisés. Veillez à ce que votre application ne spécifie pas de coordonnées de texture inférieures à 0,0 ou supérieures à 1,0 lorsque l’habillage de texture est activé.

Résumé des modes d’adressage de texture

Mode d’adressage de texture Description
Inclusion dans un wrapper Répète la texture sur chaque jonction entière.
Miroir Met en miroir la texture à chaque limite entière.
Clamp Limite vos coordonnées de texture à la plage [0.0, 1.0] ; Le mode pince applique la texture une seule fois, puis écaille la couleur des pixels de bord.
Couleur de bordure Utilise une couleur de bordure arbitraire pour toutes les coordonnées de texture en dehors de la plage comprise entre 0,0 et 1,0, inclus.

 

Encapsuler le mode d’adresse de texture

Le mode d’adressage de texture wrap permet à Direct3D de répéter la texture sur chaque jonction entière.

Supposons, par exemple, que votre application crée une primitive carrée et spécifie les coordonnées de texture (0,0,0,0,0), (0,0,3.0), (3.0,3.0) et (3.0,0.0). La définition du mode d’adressage de texture sur « Wrap » entraîne l’application de la texture trois fois dans les directions u-et v, comme illustré dans l’illustration suivante.

illustration d’une texture de visage encapsulée dans la direction u et la direction v

Contrastez-le avec le mode d’adresse de texture miroir suivant.

Mode d’adresse de texture miroir

Le mode d’adresse de texture miroir amène Direct3D à mettre en miroir la texture à chaque limite entière.

Supposons, par exemple, que votre application crée une primitive carrée et spécifie les coordonnées de texture (0,0,0,0,0), (0,0,3.0), (3.0,3.0) et (3.0,0.0). La définition du mode d’adressage de texture sur « Miroir » entraîne l’application de la texture trois fois dans les directions u et v. Toutes les autres lignes et colonnes auxquelles elle est appliquée sont une image miroir de la ligne ou de la colonne précédente, comme illustré dans l’illustration suivante.

illustration d’images miroir dans une grille 3x3

Contrastez-le avec le mode d’adresse de texture wrap précédent.

Mode d’adresse de texture de pince

Le mode d’adressage de texture de pince entraîne la compression de vos coordonnées de texture par Direct3D à la plage [0.0, 1.0] ; Le mode pince applique la texture une seule fois, puis écaille la couleur des pixels de bord.

Supposons que votre application crée une primitive carrée et affecte des coordonnées de texture (0,0,0,0,0), (0,0,3.0), (3.0,3.0) et (3.0,0.0) aux sommets de la primitive. La définition du mode d’adressage de texture sur « Clamp » entraîne l’application de la texture une seule fois. Les couleurs de pixels en haut des colonnes et la fin des lignes sont étendues respectivement au haut et à droite de la primitive.

L’illustration suivante montre une texture limitée.

illustration d’une texture et d’une texture limitée

Mode d’adresse de texture de couleur de bordure

Le mode d’adresse de texture de couleur de bordure entraîne l’utilisation d’une couleur arbitraire, appelée couleur de bordure, pour toutes les coordonnées de texture en dehors de la plage comprise entre 0,0 et 1,0, inclus.

Dans l’illustration suivante, l’application spécifie que la texture doit être appliquée à la primitive à l’aide d’une bordure rouge.

illustration d’une texture et d’une texture avec une bordure rouge

Limitations de l’appareil

Bien que le système autorise généralement les coordonnées de texture en dehors de la plage de 0,0 et 1.0, les limitations matérielles affectent souvent la distance entre les coordonnées de texture de la plage. Un appareil de rendu communique la limite pour la plage complète de coordonnées de texture autorisée par l’appareil, lorsque vous récupérez les fonctionnalités de l’appareil.

Par exemple, si cette valeur est 128, les coordonnées de texture d’entrée doivent être conservées dans la plage -128.0 à +128.0. Le passage de sommets avec des coordonnées de texture en dehors de cette plage n’est pas valide. La même restriction s’applique aux coordonnées de texture générées à la suite de transformations automatiques de coordonnées de texture et de coordonnées de texture.

Les limitations de répétition de texture peuvent dépendre de la taille de la texture indexée par les coordonnées de texture. Dans ce cas, la dimension de texture est 32 et la plage de coordonnées de texture autorisée par l’appareil est de 512, la plage de coordonnées de texture valide réelle serait donc 512/32 = 16, de sorte que les coordonnées de texture de cet appareil doivent être comprises entre -16.0 et +16.0.

Textures