Modes d’adressage de texture (Direct3D 9)

Votre application Direct3D peut affecter des coordonnées de texture à n’importe quel sommet de n’importe quelle primitive. Pour plus d’informations, consultez Coordonnées de texture (Direct3D 9). En règle générale, les coordonnées de texture u- et v 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 Direct3D fait 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 instance, votre application peut définir le mode d’adressage de texture afin qu’une texture soit en mosaïque sur une primitive.

Direct3D permet aux applications d’effectuer un habillage de texture. Il est important de noter que définir le mode d’adressage de texture sur D3DTADDRESS_WRAP n’est pas la même chose que d’effectuer un habillage de texture. La définition du mode d’adressage de texture sur D3DTADDRESS_WRAP entraîne l’application de plusieurs copies de la texture source à la primitive actuelle et l’activation de l’habillage de texture modifie la façon dont le système rastérise les polygones texturés. Pour plus d’informations, consultez Habillage de texture (Direct3D 9).

L’activation de l’habillage de texture rend effectivement les coordonnées de texture en dehors de la plage [0.0, 1.0] non valides, et le comportement de rastérisation de ces coordonnées de texture en attente 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é.

Définition du mode d’adressage

Vous pouvez définir les modes d’adressage de texture pour chaque étape de texture en appelant la méthode IDirect3DDevice9::SetSamplerState . Spécifiez l’identificateur d’étape de texture souhaité dans le paramètre Sampler . Définissez le paramètre Type sur D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV ou D3DSAMP_ADDRESSW valeurs pour mettre à jour les modes d’adressage u, v-ou w individuellement. Le paramètre Value détermine le mode défini. Il peut s’agir de n’importe quel membre du type énuméré D3DTEXTUREADDRESS . Pour récupérer le mode d’adresse de texture actuel pour une étape de texture, appelez IDirect3DDevice9::GetSamplerState, à l’aide de la D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV ou D3DSAMP_ADDRESSW membres de l’énumération D3DSAMPLERSTATETYPE pour identifier le mode d’adresse sur lequel vous souhaitez obtenir des informations.

Limitations de l’appareil

Bien que le système autorise généralement des coordonnées de texture en dehors de la plage de 0.0 et 1.0, inclusivement, les limitations matérielles affectent souvent la distance en dehors de ces coordonnées de texture de plage. Un appareil de rendu communique cette limite dans le membre MaxTextureRepeat de la structure D3DCAPS9 lorsque vous récupérez les fonctionnalités de l’appareil. La valeur de ce membre décrit la plage complète des coordonnées de texture autorisées par l’appareil. Par instance, si cette valeur est 128, les coordonnées de texture d’entrée doivent être conservées entre -128,0 et +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 la génération automatique de coordonnées de texture et des transformations de coordonnées de texture.

L’interprétation de MaxTextureRepeat est également affectée par le bit de fonctionnalité D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE. Lorsque ce bit est défini, la valeur dans le membre MaxTextureRepeat est utilisée précisément comme décrit. Toutefois, lorsque D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE n’est pas défini, les limitations de répétition de texture dépendent de la taille de la texture indexée par les coordonnées de texture. Dans ce cas, MaxTextureRepeat doit être mis à l’échelle selon la taille de texture actuelle au niveau de détail le plus élevé pour calculer la plage de coordonnées de texture valide. Par exemple, avec une dimension de texture de 32 et MaxTextureRepeat de 512, la plage de coordonnées de texture valide réelle est 512/32 = 16, de sorte que les coordonnées de texture de cet appareil doivent être comprises entre -16.0 et +16.0.

Des informations supplémentaires sur les modes d’adressage de texture sont contenues dans les rubriques suivantes.

Concepts de base de la texturation