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.
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
- IDirect3DDevice9::UpdateSurface
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 |