Condividi tramite


Metodo IDirect3DSurface9::LockRect (d3d9.h)

Blocca un rettangolo su una superficie.

Sintassi

HRESULT LockRect(
  [out] D3DLOCKED_RECT *pLockedRect,
  [in]  const RECT     *pRect,
  [in]  DWORD          Flags
);

Parametri

[out] pLockedRect

Tipo: D3DLOCKED_RECT*

Puntatore a una struttura D3DLOCKED_RECT che descrive l'area bloccata.

[in] pRect

Tipo: const RECT*

Puntatore a un rettangolo da bloccare. Specificato da un puntatore a una struttura RECT . Se si specifica NULL per questo parametro, l'area sporca viene espansa per coprire l'intera superficie.

[in] Flags

Tipo: DWORD

Combinazione di flag di blocco zero o più che descrivono il tipo di blocco da eseguire. Per questo metodo, i flag validi sono:

  • D3DLOCK_DISCARD
  • D3DLOCK_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Non è possibile specificare una sottorezione quando si usa D3DLOCK_DISCARD. Per una descrizione dei flag, vedere D3DLOCK.

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 o D3DERR_WASSTILLDRAWING.

Commenti

Se viene specificato il flag di D3DLOCK_DONOTWAIT e il driver non può bloccare immediatamente la superficie, IDirect3DSurface9::LockRect restituirà D3DERR_WASSTILLDRAWING in modo che un'applicazione possa usare i cicli della CPU durante l'attesa del driver per bloccare la superficie.

L'unico formato bloccabile per una superficie di profondità-stencil è D3DFMT_D16_LOCKABLE. Vedere D3DFORMAT.

Per motivi di prestazioni, le aree sporche vengono registrate solo per il livello zero di una trama. Le aree sporche vengono registrate automaticamente quando viene chiamato IDirect3DSurface9::LockRect senza D3DLOCK_NO_DIRTY_UPDATE o D3DLOCK_READONLY . Per altre informazioni, vedere IDirect3DDevice9::UpdateTexture .

Impossibile bloccare un buffer back multisample.

Questo metodo non può recuperare dati da una superficie contenuta da una risorsa trama creata con D3DUSAGE_RENDERTARGET perché tale trama deve essere assegnata a D3DPOOL_DEFAULT memoria e pertanto non è bloccabile. In questo caso, usare invece IDirect3DDevice9::GetRenderTargetData per copiare i dati della trama dalla memoria del dispositivo alla memoria di sistema.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d9.h (includere D3D9.h)
Libreria D3D9.lib

Vedi anche

IDirect3DSurface9

IDirect3DSurface9::UnlockRect