Método IDirect3DDevice9::UpdateTexture (d3d9helper.h)

Atualizações as partes sujo de uma textura.

Sintaxe

HRESULT UpdateTexture(
  [in] IDirect3DBaseTexture9 *pSourceTexture,
  [in] IDirect3DBaseTexture9 *pDestinationTexture
);

Parâmetros

[in] pSourceTexture

Tipo: IDirect3DBaseTexture9*

Ponteiro para uma interface IDirect3DBaseTexture9 , representando a textura de origem. A textura de origem deve estar na memória do sistema (D3DPOOL_SYSTEMMEM).

[in] pDestinationTexture

Tipo: IDirect3DBaseTexture9*

Ponteiro para uma interface IDirect3DBaseTexture9 , representando a textura de destino. A textura de destino deve estar no pool de memória D3DPOOL_DEFAULT.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, o valor retornado será D3D_OK. Se o método falhar, o valor retornado poderá ser D3DERR_INVALIDCALL.

Comentários

Você pode sujo uma parte de uma textura bloqueando-a ou chamando um dos métodos a seguir.

IDirect3DDevice9::UpdateTexture recupera as partes sujo da textura calculando o que foi acumulado desde a última operação de atualização.

Por motivos de desempenho, sujo regiões são registradas apenas para o nível zero de uma textura. Para subnível, supõe-se que o retângulo ou caixa correspondente (dimensionado) também seja sujo. Regiões sujas são registradas automaticamente quando LockRect ou IDirect3DVolumeTexture9::LockBox é chamado sem D3DLOCK_NO_DIRTY_UPDATE ou D3DLOCK_READONLY. Além disso, a superfície de destino de IDirect3DDevice9::UpdateSurface está marcada como sujo.

Esse método falhará se as texturas forem de tipos diferentes, se seus buffers de nível inferior forem de tamanhos diferentes ou se seus níveis correspondentes não corresponderem. Por exemplo, considere uma textura de origem de seis níveis com as dimensões a seguir.


32x16, 16x8, 8x4, 4x2, 2x1, 1x1

Essa textura de origem de seis níveis pode ser a origem para o destino de um nível a seguir.


1x1

Para o destino de dois níveis a seguir.


2x1, 1x1

Ou, para o destino de três níveis a seguir.


4x2, 2x1, 1x1

Além disso, esse método falhará se as texturas forem de formatos diferentes. Se a textura de destino tiver menos níveis do que a origem, somente os níveis correspondentes serão copiados. Se a textura de origem tiver menos níveis do que o destino, o método falhará.

Se a textura de origem tiver sujo regiões, a cópia poderá ser otimizada restringindo a cópia apenas a essas regiões. Não é garantido que somente esses bytes marcados sujo serão copiados.

Aqui estão as possibilidades para combinações de superfície de origem e destino:

  • Se pSourceTexture for um mipmap não gerado automaticamente e pDestinationTexture for um mipmap gerado automaticamente, somente o nível de correspondência mais alto será atualizado e os subnível de destino serão regenerados. Todos os outros subnível de origem são ignorados.
  • Se pSourceTexture e pDestinationTexture forem mipmaps gerados automaticamente, somente o nível de correspondência mais alto será atualizado. Os subnível da origem são ignorados e os subnível de destino são regenerados.
  • Se pSourceTexture for um mipmap gerado automaticamente e pDestinationTexture um mipmap não gerado automaticamente, UpdateTexture falhará.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d9helper.h (inclua D3D9.h)
Biblioteca D3D9.lib

Confira também

IDirect3D9::CreateDevice

IDirect3DDevice9