Partilhar via


Recursos de textura (Direct3D 9)

Os recursos de textura são implementados na interfaceIDirect3DTexture9 do. Para obter um ponteiro para uma interface de textura, chame o método IDirect3DDevice9::CreateTexture ou qualquer uma das seguintes funções D3DX.

O exemplo de código a seguir usa D3DXCreateTextureFromFile para carregar uma textura do Tiger.bmp.

// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.

LPDIRECT3DTEXTURE9 pTexture;

D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);

O primeiro parâmetro que D3DXCreateTextureFromFile aceita é um ponteiro para uma interfaceIDirect3DDevice9. O segundo parâmetro informa ao Direct3D o nome do arquivo a partir do qual carregar a textura. O terceiro parâmetro leva o endereço de um ponteiro para um IDirect3DTexture9 interface, representando o objeto de textura criado.

Renderização com recursos de textura

O Direct3D suporta a mistura de múltiplas texturas através do conceito de estágios de textura. Cada estágio de textura contém uma textura e operações que podem ser realizadas na textura. As texturas nos estágios de textura formam o conjunto de texturas atuais. Para obter mais informações, consulte mistura de textura (Direct3D 9). O estado de cada textura é encapsulado em seu estágio de textura.

Em um aplicativo C++, o estado de cada textura deve ser definido com o IDirect3DDevice9::SetTextureStageState método. Passe o número do estágio (0-7) como o valor do primeiro parâmetro. Defina o valor do segundo parâmetro como um membro do D3DTEXTURESTAGESTATETYPE tipo enumerado. O parâmetro final é o valor do estado para o estado de textura particular.

Usando ponteiros de interface de textura, seu aplicativo pode renderizar uma mistura de até oito texturas. Defina as texturas atuais invocando o IDirect3DDevice9::SetTexture método. O Direct3D combina todas as texturas atuais com as primitivas que renderiza.

Observação

O método IDirect3DDevice9::SetTexture incrementa a contagem de referência da superfície de textura que está sendo atribuída. Quando a textura não for mais necessária, você deverá defini-la no estágio apropriado para NULL. Se você não fizer isso, a superfície não será liberada, resultando em um vazamento de memória.

 

Seu aplicativo pode definir o estado de encapsulamento de textura para as texturas atuais chamando o IDirect3DDevice9::SetRenderState método. Passe um valor de D3DRS_WRAP0 para D3DRS_WRAP7 como o valor do primeiro parâmetro e use uma combinação dos sinalizadores D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 e D3DWRAPCOORD_3 para habilitar o encapsulamento nas direções u, v ou w.

Seu aplicativo também pode definir a perspetiva de textura e os estados de filtragem de textura. Consulte Filtragem de textura (Direct3D 9).

de texturas Direct3D