IDirect3DTexture9::LockRect-Methode (d3d9.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
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
Zielplattform | Windows |
Kopfzeile | d3d9.h (einschließlich D3D9.h) |
Bibliothek | D3D9.lib |
Weitere Informationen
IDirect3DDevice9::GetRenderTargetData