Compartilhar via


Filtragem de textura (Direct3D 9)

Quando o Direct3D renderiza uma primitiva, ele mapeia a primitiva 3D em uma tela 2D. Se a primitiva tem uma textura, o Direct3D deve usar essa textura para produzir uma cor para cada pixel na imagem renderizada em 2D da primitiva. Para cada pixel da imagem na tela da primitiva, ele deve obter um valor de cor da textura. Esse processo é chamado de filtragem de textura.

Quando uma operação de filtro de textura é executada, a textura que está sendo usada normalmente também está sendo ampliada ou reduzida. Em outras palavras, ela está sendo mapeada para uma imagem primitiva maior ou menor que ela mesma. A ampliação de uma textura pode resultar no mapeamento de muitos pixels para um texel. O resultado pode ser uma aparência robusta. A redução de uma textura geralmente significa que um único pixel é mapeado para muitos texels. A imagem resultante pode ficar desfocada ou distorcida. Para resolver esses problemas, a mesclagem das cores dos texels devem ser realizada para chegar a uma cor para o pixel.

O Direct3D simplifica o processo complexo de filtragem de textura. Ele fornece três tipos de filtragem de textura: filtragem linear, filtragem anisotrópica e filtragem mipmap. Se você não selecionar a filtragem de textura, o Direct3D usará uma técnica chamada de amostragem do ponto mais próximo.

Cada tipo de filtragem de textura possui vantagens e desvantagens. Por exemplo, a filtragem de textura linear pode produzir bordas irregulares ou uma aparência robusta na imagem final. No entanto, esse é um método de filtragem de textura computacionalmente de baixa sobrecarga. A filtragem com mipmaps geralmente produz os melhores resultados, especialmente quando combinada com uma filtragem anisotrópica. No entanto, ele exige o máximo de memória das técnicas que o Direct3D pode suportar.

Os aplicativos que usam ponteiros de interface de textura devem definir o método de filtragem de textura atual chamando o método IDirect3DDevice9::SetSamplerState . Defina o valor do primeiro parâmetro como o número de índice inteiro (0-7) da textura para a qual você está selecionando um método de filtragem de textura. Passe D3DSAMP_MAGFILTER, D3DSAMP_MINFILTER ou D3DSAMP_MIPFILTER para o segundo parâmetro para definir o filtro de ampliação, minificação ou mipmapping. Passe um membro do tipo enumerado D3DTEXTUREFILTERTYPE como o valor no terceiro parâmetro.

Esta seção apresenta os métodos de filtragem de textura aos quais o Direct3D dá suporte. Ele é organizado nos tópicos a seguir.

Observação

Embora os estados de renderização de filtragem de textura presentes no tipo enumerado D3DRENDERSTATETYPE sejam substituídos por estados de estágio de textura, o IDirect3DDevice9::SetRenderState, em oposição à versão IDirect3DDevice2, não falhará se você tentar usá-los. Em vez disso, o sistema mapeia os efeitos desses estados de renderização para o primeiro estágio na cascata de multitextura, estágio 0. Os aplicativos não devem misturar os estados de renderização herdados com seus estados de estágio de textura correspondentes, pois resultados imprevisíveis podem ocorrer.

 

Texturas Direct3D