Compartilhar via


Modos de endereçamento de textura (Direct3D 9)

Seu aplicativo Direct3D pode atribuir coordenadas de textura a qualquer vértice de qualquer primitiva. Para obter detalhes, consulte Coordenadas de textura (Direct3D 9). Normalmente, as coordenadas de textura u e v que você atribui a um vértice estão no intervalo de 0.0 a 1.0. No entanto, atribuindo coordenadas de textura fora desse intervalo, você pode criar certos efeitos especiais de texturização.

Você controla o que o Direct3D faz com coordenadas de textura que estão fora do intervalo [0.0, 1.0] definindo o modo de endereçamento de textura. Por exemplo, você pode fazer com que seu aplicativo defina o modo de endereçamento de textura de forma que uma textura seja colocada lado a lado em uma primitiva.

O Direct3D permite que os aplicativos executem o encapsulamento de textura. É importante observar que definir o modo de endereçamento de textura como D3DTADDRESS_WRAP não é o mesmo que executar encapsulamento de textura. Definir o modo de endereçamento de textura como D3DTADDRESS_WRAP resulta em várias cópias da textura de origem sendo aplicadas ao primitivo atual e habilitar a disposição de textura altera como o sistema rasteriza polígonos texturizados. Para obter detalhes, consulte Disposição de textura (Direct3D 9).

Habilitar a disposição de textura efetivamente torna inválidas as coordenadas de textura fora do intervalo [0.0, 1.0] e o comportamento para rasterizar essas coordenadas de textura delinquente é indefinido nesse caso. Quando o encapsulamento de textura está habilitado, os modos de endereçamento de textura não são usados. Tome cuidado para seu aplicativo não especificar coordenadas de textura menores que 0.0 ou maiores que 1.0 quando o encapsulamento de textura estiver habilitado.

Definindo o modo de endereçamento

Você pode definir modos de endereçamento de textura para estágios de textura individuais chamando o método IDirect3DDevice9::SetSamplerState . Especifique o identificador de estágio de textura desejado no parâmetro Sampler . Defina o parâmetro Type como D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV ou valores D3DSAMP_ADDRESSW para atualizar os modos u-, v ou w-addressing individualmente. O parâmetro Value determina qual modo está sendo definido. Isso pode ser qualquer membro do tipo enumerado D3DTEXTUREADDRESS . Para recuperar o modo de endereço de textura atual para um estágio de textura, chame IDirect3DDevice9::GetSamplerState, usando os membros D3DSAMP_ADDRESSU, D3DSAMP_ADDRESSV ou D3DSAMP_ADDRESSW da enumeração D3DSAMPLERSTATETYPE para identificar o modo de endereço sobre o qual você deseja obter informações.

Limitações do dispositivo

Embora o sistema geralmente permita coordenadas de textura fora do intervalo de 0.0 e 1.0, as limitações do hardware geralmente ditam até que ponto as coordenadas de textura podem se afastar desse intervalo. Um dispositivo de renderização comunica esse limite no membro MaxTextureRepeat da estrutura D3DCAPS9 quando você recupera recursos do dispositivo. O valor neste membro descreve a gama completa de coordenadas de textura permitidas pelo dispositivo. Por exemplo, se esse valor for 128, as coordenadas de textura de entrada deverão ser mantidas no intervalo de -128.0 a +128.0. Passar vértices com coordenadas de textura fora desse intervalo será inválido. A mesma restrição se aplica às coordenadas de textura geradas como resultado da geração automática de coordenadas de textura e das transformações de coordenadas de textura.

A interpretação de MaxTextureRepeat também é afetada pelo bit de funcionalidade D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE. Quando esse bit é definido, o valor no membro MaxTextureRepeat é usado precisamente conforme descrito. No entanto, quando D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE não está definido, as limitações de repetição de textura dependem do tamanho da textura indexada pelas coordenadas de textura. Nesse caso, MaxTextureRepeat deve ser dimensionado pelo tamanho da textura atual no maior nível de detalhes para calcular o intervalo de coordenadas de textura válido. Por exemplo, dada uma dimensão de textura de 32 e MaxTextureRepeat de 512, o intervalo de coordenadas de textura válido real é 512/32 = 16, portanto, as coordenadas de textura para este dispositivo devem estar dentro do intervalo de -16,0 a +16,0.

Informações adicionais sobre os modos de endereçamento de textura estão contidas nos tópicos a seguir.

Conceitos básicos de texturing