Freigeben über


IDirect3DTexture9::LockRect-Methode (d3d9helper.h)

Sperrt ein Rechteck für eine Texturressource.

Syntax

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

Parameter

[in] Level

Typ: UINT

Gibt die Ebene der zu sperrenden Texturressource an.

[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 Angeben von NULL für diesen Parameter wird der modifiziert Bereich erweitert, um die gesamte Textur abzudecken.

[in] Flags

Typ: DWORD

Kombination von 0 oder mehr Sperrflags, die den Typ der auszuführenden Sperre beschreiben. Für diese Methode gelten die folgenden Flags:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
Sie dürfen keine Unterect 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 werden.

Hinweise

Mit D3DPOOL_DEFAULT erstellte Texturen können nicht gesperrt werden. Im Videospeicher erstellte Texturen können gesperrt werden, wenn sie mit USAGE_DYNAMIC erstellt werden.

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

Das einzige sperrbare Format für eine Tiefenschablonentextur ist D3DLOCK_D16_LOCKABLE.

Videospeichertexturen können nicht gesperrt werden, müssen jedoch durch Aufrufen von IDirect3DDevice9::UpdateSurface oder IDirect3DDevice9::UpdateTexture geändert werden. Es gibt Ausnahmen für einige proprietäre Treiberpixelformate, die Direct3D 9 nicht erkennt. Diese können gesperrt werden.

Diese Methode kann keine Daten aus einer Texturressource abrufen, die mit D3DUSAGE_RENDERTARGET erstellt wurde, da eine solche Textur D3DPOOL_DEFAULT Arbeitsspeicher 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 d3d9helper.h (einschließlich D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3DDevice9::GetRenderTargetData

IDirect3DDevice9::UpdateTexture

IDirect3DTexture9

IDirect3DTexture9::UnlockRect