Metodo IDirect3DDevice9::UpdateTexture (d3d9.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.
- IDirect3DCubeTexture9::AddDirtyRect
- IDirect3DTexture9::AddDirtyRect
- IDirect3DVolumeTexture9::AddDirtyBox
- IDirect3DDevice9::UpdateSurface
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
Piattaforma di destinazione | Windows |
Intestazione | d3d9.h (includere D3D9.h) |
Libreria | D3D9.lib |