Partilhar via


Modos de endereçamento de textura

Seu aplicativo Direct3D pode atribuir coordenadas de textura a qualquer vértice de qualquer primitivo. 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 inclusive. No entanto, ao atribuir 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 para que uma textura seja colocada lado a lado em um primitivo.

O Direct3D permite que os aplicativos executem o encapsulamento de textura. Consulte Quebra de textura.

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

Resumo dos modos de endereçamento de textura

Modo de endereçamento de textura Descrição
Empacotamento Repete a textura em cada junção inteira.
Espelho Espelha a textura em cada limite inteiro.
Clamp Fixa suas coordenadas de textura no intervalo [0,0, 1,0]; O modo de fixação aplica a textura uma vez e, em seguida, mancha a cor dos pixels da borda.
Cor da borda Usa uma cor de borda arbitrária para qualquer coordenada de textura fora do intervalo de 0,0 a 1,0, inclusive.

 

Modo de endereço de textura de quebra automática

O modo de endereço de textura Wrap faz com que o Direct3D repita a textura em cada junção inteira.

Suponha, por exemplo, que seu aplicativo crie um primitivo quadrado e especifique 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" faz com que a textura seja aplicada três vezes nas direções u e v, conforme mostrado na ilustração a seguir.

Ilustração de uma textura de rosto envolta na direção U e na direção V

Compare isso com o seguinte modo de endereço de textura espelhada.

Modo de endereço de textura espelhada

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

Suponha, por exemplo, que seu aplicativo crie um primitivo quadrado e especifique 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 "Espelho" resulta na aplicação da textura três vezes nas direções u e v. Todas as outras linhas e colunas às quais 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ço de textura Wrap anterior.

Modo de endereço de textura de grampo

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 da borda.

Suponha que seu aplicativo crie um primitivo quadrado 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 do primitivo. Definir o modo de endereçamento de textura como "Clamp" faz com que a textura seja aplicada uma vez. As cores de pixel na parte superior das colunas e no final das linhas são estendidas para a parte superior e direita do primitivo, respectivamente.

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

ilustração de uma textura e uma textura fixada

Modo de endereço de textura de cor da borda

O modo de endereço de textura Cor da Borda faz com que o Direct3D use uma cor arbitrária, conhecida como cor da borda, para qualquer coordenada de textura fora do intervalo de 0,0 a 1,0, inclusive.

Na ilustração a seguir, o aplicativo especifica que a textura seja aplicada ao primitivo 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, inclusive, as limitações de hardware geralmente afetam a distância que as coordenadas de textura podem estar fora desse intervalo. Um dispositivo de renderização comunica o limite para toda a gama de coordenadas de textura permitidas pelo dispositivo, quando você recupera os recursos 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. A passagem de vértices com coordenadas de textura fora desse intervalo é inválida. A mesma restrição se aplica às coordenadas de textura geradas como resultado da geração automática de coordenadas de textura e 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, portanto, as coordenadas de textura para esse dispositivo devem estar dentro do intervalo de -16,0 a +16,0.

Texturas