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 u-et v-texture que vous affectez à un sommet se trouvent dans la plage comprise 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 sont en dehors de la plage [0.0, 1.0] en définissant le mode d’adressage de texture. Par exemple, vous pouvez définir le mode d’adressage de texture pour qu’une texture soit mosaïque sur une primitive.

Direct3D permet aux applications d’effectuer l’habillage de texture. Il est important de noter que la définition du mode d’adressage de texture sur D3DTADDRESS_WRAP n’est pas identique à l’exécution d’un encapsulage 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 change la façon dont le système rasterise les polygones textures. Pour plus d’informations, consultez Le wrapping de texture (Direct3D 9).

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 rasterisation de ces coordonnées de texturelinquent 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 les coordonnées de texture inférieures à 0,0 ou supérieures à 1.0 lorsque le wrapping de texture est activé.

Définition du mode d’adressage

Vous pouvez définir des modes d’adressage de texture pour des étapes de texture individuelles 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 u-, v ou w-adressage individuellement. Le paramètre Value détermine le mode en cours de définition. Il peut s’agir d’un 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 du D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV ou D3DSAMP_ADDRESSW membres de l’énumération D3DSAMPLERSTATETYPE pour identifier le mode d’adresse sur lequel vous souhaitez des informations.

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 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 de coordonnées de texture autorisée par 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 en raison de la génération automatique des 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 du membre MaxTextureRepeat est utilisée précisément comme décrit. Toutefois, lorsque D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE n’est pas définie, 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 par la taille de texture actuelle au plus grand niveau de détail pour calculer la plage de coordonnées de texture valide. Par exemple, étant donné 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 se trouver dans la plage de -16.0 à +16.0.

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

Concepts de texte de base