Modos de endereçamento de textura

Seu aplicativo Direct3D pode atribuir coordenadas de textura a qualquer vértice de qualquer primitiva. 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. Consulte Encapsulamento de textura.

Habilitar a disposição da 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.

Resumo dos modos de endereçamento de textura

Modo de endereçamento de textura Descrição
Encapsular Repete a textura em cada junção de inteiros.
Espelho Espelha a textura em cada limite de inteiro.
Clamp Fixa as coordenadas de textura ao intervalo [0.0, 1.0]; O modo de fixação aplica a textura uma vez e, em seguida, mancha a cor dos pixels de borda.
Border Color Usa uma cor de borda arbitrária para qualquer coordenada de textura fora do intervalo de 0.0 e 1.0.

 

Modo de endereçamento de textura Wrap

O modo de endereçamento de textura Wrap faz o Direct3D repetir a textura em cada junção de inteiros.

Suponhamos que, por exemplo, seu aplicativo crie uma primitiva quadrada e especifique as coordenadas de textura de (0.0,0.0), (0.0,3.0), (3.0,3.0) e (3.0,0.0). Definir o modo de endereçamento de textura como "Wrap" resulta na aplicação da textura três vezes nas direções u e v, conforme mostrado na ilustração a seguir.

ilustração de uma textura de face encapsulada na direção u e na direção v

Compare isso com o modo de endereçamento de textura Mirror a seguir.

Modo de endereço de textura espelhada

O modo de endereço de textura Mirror faz com que o Direct3D espelhe a textura em cada limite de inteiro.

Suponhamos que, por exemplo, seu aplicativo crie uma primitiva quadrada e especifique as coordenadas de textura de (0.0,0.0), (0.0,3.0), (3.0,3.0) e (3.0,0.0). Definir o modo de endereçamento de textura como "Mirror" faz com que a textura seja aplicada três vezes nas direções u e v. As linhas e colunas alternadas em que ele é aplicado são uma imagem espelhada da linha ou coluna anterior, conforme mostrado na ilustração a seguir.

ilustração de imagens espelhadas em uma grade 3x3

Compare isso com o modo de endereçamento de textura Wrap anterior.

Modo de endereço de textura de fixação

O modo de endereço de textura Clamp faz com que o Direct3D fixe suas coordenadas de textura ao intervalo [0.0, 1.0]; O modo de fixação aplica a textura uma vez e, em seguida, mancha a cor dos pixels de borda.

Suponhamos que seu aplicativo crie uma primitiva quadrada e atribua coordenadas de textura de (0.0,0.0), (0.0,3.0), (3.0,3.0) e (3.0,0.0) aos vértices da primitiva. Definir o modo de endereçamento de textura como "Clamp" faz com que a textura seja aplicada uma vez. As cores dos pixels na parte superior das colunas e no final das linhas são estendidas até a parte superior e à direita da primitiva respectivamente.

A ilustração a seguir mostra uma textura ancorada.

ilustração de uma textura e uma textura ancorada

Modo de endereço de textura cor da borda

O modo de endereçamento de textura Border Color faz com que o Direct3D use uma cor arbitrária, conhecida como a cor da borda, para qualquer coordenada de textura fora do intervalo de 0.0 a 1.0.

Na ilustração a seguir, o aplicativo especifica que a textura deve ser aplicada à primitiva usando uma borda vermelha.

ilustração de uma textura e uma textura com uma borda vermelha

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. O dispositivo de renderização comunica o limite para o intervalo completo de coordenadas de textura permitido pelo dispositivo quando você recupera as funcionalidades do 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.

As limitações de repetição de textura podem depender do tamanho da textura indexada pelas coordenadas de textura. Nesse caso, supondo que a dimensão da textura seja 32 e o intervalo de coordenadas de textura permitido pelo dispositivo seja 512, o intervalo de coordenadas de textura válido real seria, portanto, 512/32 = 16. Então, as coordenadas de textura para esse dispositivo devem estar dentro do intervalo de -16.0 a +16.0.

Texturas