Share via


Filtrado de texturas (Direct3D 9)

Cuando Direct3D representa un primitivo, asigna el primitivo 3D a una pantalla 2D. Si el primitivo tiene una textura, Direct3D debe usar esa textura para generar un color para cada píxel de la imagen representada en 2D del primitivo. Para cada píxel de la imagen en pantalla de la primitiva, debe obtener un valor de color de la textura. Este proceso se denomina filtrado de texturas.

Cuando se realiza una operación de filtro de textura, la textura que se usa normalmente también se amplía o minimiza. En otras palabras, se está asignando a una imagen primitiva que es mayor o más pequeña que sí misma. La ampliación de una textura puede dar lugar a que muchos píxeles se asignen a un elemento de textura. El resultado puede ser una apariencia fragmentada. La minificación de una textura suele significar que un solo píxel se asigna a muchos elementos de textura. La imagen resultante puede ser borrosa o con alias. Para resolver estos problemas, se deben realizar algunas combinaciones de los colores de textura para llegar a un color para el píxel.

Direct3D simplifica el proceso complejo de filtrado de texturas. Proporciona tres tipos de filtrado de texturas: filtrado lineal, filtrado anisotrópico y filtrado mipmap. Si no selecciona ningún filtrado de texturas, Direct3D usa una técnica denominada muestreo de punto más cercano.

Cada tipo de filtrado de texturas tiene ventajas y desventajas. Por ejemplo, el filtrado de textura lineal puede producir bordes irregulares o una apariencia fragmentada en la imagen final. Sin embargo, es un método computacionalmente bajo de sobrecarga de filtrado de texturas. El filtrado con mapas mip suele producir los mejores resultados, especialmente cuando se combina con el filtrado anisotrópico. Sin embargo, requiere la mayor cantidad de memoria de las técnicas que admite Direct3D.

Las aplicaciones que usan punteros de interfaz de textura deben establecer el método de filtrado de textura actual llamando al método IDirect3DDevice9::SetSamplerState . Establezca el valor del primer parámetro en el número de índice entero (0-7) de la textura para la que se selecciona un método de filtrado de texturas. Pase D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER o D3DSAMP_MIPFILTER para el segundo parámetro para establecer el filtro de ampliación, minificación o mipmapping. Pase un miembro del tipo enumerado D3DTEXTUREFILTERTYPE como valor en el tercer parámetro.

En esta sección se presentan los métodos de filtrado de texturas que admite Direct3D. Se organiza en los temas siguientes.

Nota

Aunque los estados de representación de filtrado de textura presentes en el tipo enumerado D3DRENDERSTATETYPE se sustituyen por estados de fase de textura, IDirect3DDevice9::SetRenderState, en lugar de la versión IDirect3DDevice2, no falla si intenta usarlos. En su lugar, el sistema asigna los efectos de estos estados de representación a la primera fase de la cascada multitexture, fase 0. Las aplicaciones no deben mezclar los estados de representación heredados con sus estados de fase de textura correspondientes, ya que pueden producirse resultados imprevisibles.

 

Texturas de Direct3D