Freigeben über


IDirect3DSurface9::LockRect-Methode (d3d9.h)

Sperrt ein Rechteck auf einer Oberfläche.

Syntax

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

Parameter

[out] pLockedRect

Typ: D3DLOCKED_RECT*

Zeiger auf eine D3DLOCKED_RECT Struktur, die den gesperrten Bereich beschreibt.

[in] pRect

Typ: const RECT*

Zeiger auf ein zu sperrende Rechteck. Wird durch einen Zeiger auf eine RECT-Struktur angegeben. Durch Angabe von NULL für diesen Parameter wird der modifiziert Bereich erweitert, um die gesamte Oberfläche abzudecken.

[in] Flags

Typ: DWORD

Kombination aus 0 oder mehr Sperrflags, die den Typ der auszuführenden Sperre beschreiben. Für diese Methode sind die folgenden Flags gültig:

  • D3DLOCK_DISCARD
  • D3DLOCK_DONOTWAIT
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Sie dürfen keine Subrect angeben, wenn Sie D3DLOCK_DISCARD verwenden. Eine Beschreibung der Flags finden Sie unter D3DLOCK.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK.

Wenn die Methode fehlschlägt, kann der Rückgabewert D3DERR_INVALIDCALL oder D3DERR_WASSTILLDRAWING sein.

Hinweise

Wenn das flag D3DLOCK_DONOTWAIT angegeben ist und der Treiber die Oberfläche nicht sofort sperren kann, gibt IDirect3DSurface9::LockRect D3DERR_WASSTILLDRAWING zurück, sodass eine Anwendung die CPU-Zyklen verwenden kann, während sie darauf wartet, dass der Treiber die Oberfläche sperrt.

Das einzige abschließbare Format für eine Tiefenschablonenoberfläche ist D3DFMT_D16_LOCKABLE. Siehe D3DFORMAT.

Aus Leistungsgründen werden modifiziert Regionen nur für ebene null einer Textur aufgezeichnet. Fehlerhafte Regionen werden automatisch aufgezeichnet, wenn IDirect3DSurface9::LockRect ohne D3DLOCK_NO_DIRTY_UPDATE oder D3DLOCK_READONLY aufgerufen wird. Weitere Informationen finden Sie unter IDirect3DDevice9::UpdateTexture .

Ein Multisample-Backpuffer kann nicht gesperrt werden.

Diese Methode kann keine Daten von einer Oberfläche abrufen, die in einer Texturressource enthalten ist, die mit D3DUSAGE_RENDERTARGET erstellt wurde, da eine solche Textur D3DPOOL_DEFAULT Speicher zugewiesen werden muss und daher nicht gesperrt werden kann. Verwenden Sie in diesem Fall stattdessen IDirect3DDevice9::GetRenderTargetData , um Texturdaten aus dem Gerätespeicher in den Systemspeicher zu kopieren.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3DSurface9

IDirect3DSurface9::UnlockRect