Metodo IDirect3DDevice9::UpdateTexture (d3d9helper.h)

Aggiornamenti le parti sporche di una trama.

Sintassi

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

Parametri

[in] pSourceTexture

Tipo: IDirect3DBaseTexture9*

Puntatore a un'interfaccia IDirect3DBaseTexture9 che rappresenta la trama di origine. La trama di origine deve essere in memoria di sistema (D3DPOOL_SYSTEMMEM).

[in] pDestinationTexture

Tipo: IDirect3DBaseTexture9*

Puntatore a un'interfaccia IDirect3DBaseTexture9 che rappresenta la trama di destinazione. La trama di destinazione deve trovarsi nel pool di memoria D3DPOOL_DEFAULT.

Valore restituito

Tipo: HRESULT

Se il metodo ha esito positivo, il valore restituito è D3D_OK. Se il metodo ha esito negativo, il valore restituito può essere D3DERR_INVALIDCALL.

Commenti

È possibile sporcare una parte di una trama bloccandola o chiamando uno dei metodi seguenti.

IDirect3DDevice9::UpdateTexture recupera le parti sporche della trama calcolando ciò che è stato accumulato dall'ultima operazione di aggiornamento.

Per motivi di prestazioni, le aree sporche vengono registrate solo per il livello zero di una trama. Per i sublevel, si presuppone che il rettangolo o la casella corrispondente (ridimensionato) sia anche sporco. Le aree sporche vengono registrate automaticamente quando LockRect o IDirect3DVolumeTexture9::LockBox viene chiamato senza D3DLOCK_NO_DIRTY_UPDATE o D3DLOCK_READONLY. Inoltre, l'area di destinazione di IDirect3DDevice9::UpdateSurface è contrassegnata come sporca.

Questo metodo ha esito negativo se le trame sono di tipi diversi, se i buffer a livello inferiore sono di dimensioni diverse o se i livelli corrispondenti non corrispondono. Si consideri ad esempio una trama di origine a sei livelli con le dimensioni seguenti.


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

Questa trama di origine a sei livelli potrebbe essere l'origine per la destinazione a un livello seguente.


1x1

Per la destinazione a due livelli seguente.


2x1, 1x1

In alternativa, per la destinazione a tre livelli seguente.


4x2, 2x1, 1x1

Inoltre, questo metodo avrà esito negativo se le trame sono di formati diversi. Se la trama di destinazione ha meno livelli rispetto all'origine, vengono copiati solo i livelli corrispondenti. Se la trama di origine ha meno livelli rispetto alla destinazione, il metodo avrà esito negativo.

Se la trama di origine ha aree sporche, la copia può essere ottimizzata limitando la copia solo a tali aree. Non è garantito che vengano copiati solo i byte contrassegnati come sporchi.

Ecco le possibilità per le combinazioni di superficie di origine e destinazione:

  • Se pSourceTexture è un mipmap non generato automaticamente e pDestinationTexture è una mipmap generata automaticamente, viene aggiornato solo il livello di corrispondenza superiore e vengono rigenerati i sublevel di destinazione. Tutti gli altri sublevel di origine vengono ignorati.
  • Se sia pSourceTexture che pDestinationTexture vengono generati automaticamente mipmap, viene aggiornato solo il livello di corrispondenza superiore. I sublevel dall'origine vengono ignorati e i sublevel di destinazione vengono rigenerati.
  • Se pSourceTexture è un mipmap generato automaticamente e pDestinationTexture un mipmap non generato automaticamente, UpdateTexture avrà esito negativo.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d9helper.h (include D3D9.h)
Libreria D3D9.lib

Vedi anche

IDirect3D9::CreateDevice

IDirect3DDevice9