Compartir a través de


Modos de direccionamiento de textura (Direct3D 9)

La aplicación Direct3D puede asignar coordenadas de textura a cualquier vértice de cualquier primitivo. Para obtener más información, consulta Coordenadas de textura (Direct3D 9). Normalmente, las coordenadas de textura u y v que se asignan a un vértice se encuentran en el intervalo de 0,0 a 1,0 inclusive. Sin embargo, al asignar coordenadas de textura fuera de ese intervalo, puede crear ciertos efectos especiales de texturización.

Controla lo que Hace Direct3D con coordenadas de textura que están fuera del intervalo [0.0, 1.0] estableciendo el modo de direccionamiento de textura. Por ejemplo, puede hacer que la aplicación establezca el modo de direccionamiento de textura para que una textura esté en mosaico en un primitivo.

Direct3D permite a las aplicaciones realizar el ajuste de texturas. Es importante tener en cuenta que establecer el modo de direccionamiento de textura en D3DTADDRESS_WRAP no es lo mismo que el ajuste de textura. Establecer el modo de direccionamiento de textura en D3DTADDRESS_WRAP da como resultado varias copias de la textura de origen que se aplican al primitivo actual y la habilitación del ajuste de texturas cambia la forma en que el sistema rasteriza los polígonos con textura. Para obtener más información, consulta Ajuste de texturas (Direct3D 9).

La habilitación del ajuste de texturas hace que las coordenadas de textura fuera del intervalo [0.0, 1.0] no sean válidas y el comportamiento para rasterizar estas coordenadas de textura delinquent no está definida en este caso. Cuando el ajuste de textura está habilitado, no se usan los modos de direccionamiento de textura. Tenga cuidado de que la aplicación no especifique coordenadas de textura inferiores a 0,0 o superior a 1,0 cuando se habilite el ajuste de texturas.

Establecer el modo de direccionamiento

Puedes establecer modos de direccionamiento de texturas para fases de textura individuales llamando al método IDirect3DDevice9::SetSamplerState . Especifique el identificador de fase de textura deseado en el parámetro Sampler . Establezca el parámetro Type en D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV o D3DSAMP_ADDRESSW valores para actualizar los modos de direccionamiento u, v o w individualmente. El parámetro Value determina qué modo se establece. Puede ser cualquier miembro del tipo enumerado D3DTEXTUREADDRESS . Para recuperar el modo de dirección de textura actual para una fase de textura, llame a IDirect3DDevice9::GetSamplerState, usando el D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV o D3DSAMP_ADDRESSW miembros de la enumeración D3DSAMPLERSTATETYPE para identificar el modo de dirección sobre el que desea obtener información.

Limitaciones del dispositivo

Aunque el sistema generalmente permite coordenadas de textura fuera del intervalo de 0,0 y 1,0, inclusive, las limitaciones de hardware a menudo afectan a la distancia fuera de esa coordenada de textura de rango. Un dispositivo de representación comunica este límite en el miembro MaxTextureRepeat de la estructura D3DCAPS9 al recuperar las funcionalidades del dispositivo. El valor de este miembro describe la gama completa de coordenadas de textura permitidas por el dispositivo. Por ejemplo, si este valor es 128, las coordenadas de textura de entrada deben mantenerse en el intervalo -128.0 a +128.0. Pasar vértices con coordenadas de textura fuera de este intervalo no es válido. La misma restricción se aplica a las coordenadas de textura generadas como resultado de la generación automática de coordenadas de textura y las transformaciones de coordenadas de textura.

La interpretación de MaxTextureRepeat también se ve afectada por el bit de funcionalidad D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE. Cuando se establece este bit, el valor del miembro MaxTextureRepeat se usa exactamente como se describe. Sin embargo, cuando no se establece D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE, las limitaciones de repetición de texturas dependen del tamaño de la textura indizada por las coordenadas de textura. En este caso, MaxTextureRepeat debe escalarse mediante el tamaño de textura actual en el nivel de detalle más grande para calcular el intervalo de coordenadas de textura válido. Por ejemplo, dada una dimensión de textura de 32 y MaxTextureRepeat de 512, el intervalo de coordenadas de textura válido real es 512/32 = 16, por lo que las coordenadas de textura de este dispositivo deben estar dentro del intervalo de -16.0 a +16.0.

En los temas siguientes se incluye información adicional sobre los modos de direccionamiento de textura.

Conceptos básicos de texturización