Partilhar via


Filtragem de textura (Direct3D 9)

Quando o Direct3D renderiza uma primitiva, ele mapeia a primitiva 3D em uma tela 2D. Se a primitiva tiver uma textura, o Direct3D deverá usar essa textura para produzir uma cor para cada pixel na imagem renderizada 2D da primitiva. Para cada pixel na imagem apresentada no ecrã do primitivo, deve-se obter um valor de cor da textura. Este 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 minificada. Em outras palavras, ele está sendo mapeado em uma imagem primitiva que é maior ou menor do que ela mesma. A ampliação de uma textura pode resultar em muitos pixels sendo mapeados para um texel. O resultado pode ser uma aparência volumosa. A minificação de uma textura geralmente significa que um único pixel é mapeado para muitos texels. A imagem resultante pode ser desfocada ou com aliasing. Para resolver esses problemas, alguma mistura das cores texel deve ser realizada para chegar a uma cor para o pixel.

O Direct3D simplifica o complexo processo 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 nenhuma filtragem de textura, o Direct3D usará uma técnica chamada amostragem de ponto mais próximo.

Cada tipo de filtragem de textura tem vantagens e desvantagens. Por exemplo, a filtragem linear de textura pode produzir bordas irregulares ou uma aparência volumosa na imagem final. No entanto, é um método de filtragem de textura com baixo custo computacional. A filtragem com mipmaps geralmente produz os melhores resultados, especialmente quando combinada com filtragem anisotrópica. No entanto, requer a maior parte da memória das técnicas suportadas pelo Direct3D.

Os aplicativos que utilizam ponteiros de interface de textura devem definir o método atual de filtragem de textura chamando o método IDirect3DDevice9::SetSamplerState. Defina o valor do primeiro parâmetro para 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 secção apresenta os métodos de filtragem de textura suportados pelo Direct3D. Está organizado nos seguintes tópicos.

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, o 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.

 

de texturas Direct3D