Compartilhar via


Recursos de textura (Direct3D 9)

Os recursos de textura são implementados na interface IDirect3DTexture9 . 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 de 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 interface IDirect3DDevice9 . O segundo parâmetro informa ao Direct3D o nome do arquivo do qual carregar a textura. O terceiro parâmetro leva o endereço de um ponteiro para uma interface IDirect3DTexture9 , representando o objeto de textura criado.

Renderização com recursos de textura

O Direct3D dá suporte à mesclagem de várias texturas pelo conceito de estágios de textura. Cada estágio de textura contém uma textura e as operações que podem ser executadas na textura. As texturas nos estágios de textura formam o conjunto de texturas atuais. Para obter mais informações, consulte Combinação 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 método IDirect3DDevice9::SetTextureStageState . 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 tipo enumerado D3DTEXTURESTAGESTATETYPE . O parâmetro final é o valor de estado para o estado de textura específico.

Usando ponteiros de interface de textura, seu aplicativo pode renderizar uma combinação de até oito texturas. Defina as texturas atuais invocando o método IDirect3DDevice9::SetTexture . O Direct3D mescla todas as texturas atuais aos primitivos 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á definir a textura no estágio apropriado como 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 disposição de textura para as texturas atuais chamando o método IDirect3DDevice9::SetRenderState . Passe um valor de D3DRS_WRAP0 até 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 perspectiva da textura e os estados de filtragem de textura. Consulte Filtragem de textura (Direct3D 9).

Texturas Direct3D