Share via


Filtrage de texture (Direct3D 9)

Lorsque Direct3D restitue une primitive, il mappe la primitive 3D sur un écran 2D. Si la primitive a une texture, Direct3D doit utiliser cette texture pour produire une couleur pour chaque pixel de l’image 2D de la primitive. Pour chaque pixel de l’image à l’écran de la primitive, elle doit obtenir une valeur de couleur à partir de la texture. Ce processus est appelé filtrage de texture.

Lorsqu’une opération de filtre de texture est effectuée, la texture utilisée est généralement également agrandie ou réduite. En d’autres termes, il est mappé dans une image primitive qui est plus grande ou plus petite que lui-même. L’agrandissement d’une texture peut entraîner le mappage de plusieurs pixels à un texel. Le résultat peut être une apparence en bloc. La minification d’une texture signifie souvent qu’un seul pixel est mappé à de nombreux texels. L’image résultante peut être floue ou sous alias. Pour résoudre ces problèmes, un mélange des couleurs de texel doit être effectué pour obtenir une couleur pour le pixel.

Direct3D simplifie le processus complexe de filtrage de texture. Il vous fournit trois types de filtrage de texture : le filtrage linéaire, le filtrage anisotrope et le filtrage mipmap. Si vous ne sélectionnez aucun filtrage de texture, Direct3D utilise une technique appelée échantillonnage au point le plus proche.

Chaque type de filtrage de texture présente des avantages et des inconvénients. Par instance, le filtrage de texture linéaire peut produire des bords déchiquetés ou une apparence segmentée dans l’image finale. Toutefois, il s’agit d’une méthode de filtrage de texture à faible charge de calcul. Le filtrage à l’aide de mipmaps produit généralement les meilleurs résultats, en particulier lorsqu’il est combiné avec un filtrage anisotrope. Toutefois, il nécessite la plus grande quantité de mémoire des techniques que Direct3D prend en charge.

Les applications qui utilisent des pointeurs d’interface de texture doivent définir la méthode de filtrage de texture actuelle en appelant la méthode IDirect3DDevice9::SetSamplerState . Définissez la valeur du premier paramètre sur le numéro d’index entier (0-7) de la texture pour laquelle vous sélectionnez une méthode de filtrage de texture. Passez D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER ou D3DSAMP_MIPFILTER pour le deuxième paramètre pour définir le filtre d’agrandissement, de minification ou de mipmapping. Transmettez un membre du type énuméré D3DTEXTUREFILTERTYPE comme valeur dans le troisième paramètre.

Cette section présente les méthodes de filtrage de texture prises en charge par Direct3D. Il est organisé en rubriques suivantes.

Notes

Bien que les états de rendu de filtrage de texture présents dans le type énuméré D3DRENDERSTATETYPE soient remplacés par des états d’étape de texture, le IDirect3DDevice9::SetRenderState, par opposition à la version IDirect3DDevice2, n’échoue pas si vous tentez de les utiliser. Au lieu de cela, le système mappe les effets de ces états de rendu à la première étape de la cascade multitexture, étape 0. Les applications ne doivent pas mélanger les états de rendu hérités avec leurs états d’étape de texture correspondants, car des résultats imprévisibles peuvent se produire.

 

Direct3D Textures