Freigeben über


IDirect3DVertexBuffer9::Lock-Methode (d3d9helper.h)

Sperrt einen Bereich von Vertexdaten und ruft einen Zeiger auf den Vertexpufferspeicher ab.

Syntax

HRESULT Lock(
  [in]  UINT  OffsetToLock,
  [in]  UINT  SizeToLock,
  [out] void  **ppbData,
  [in]  DWORD Flags
);

Parameter

[in] OffsetToLock

Typ: UINT

Offset in die zu sperrenden Vertexdaten in Bytes. Um den gesamten Vertexpuffer zu sperren, geben Sie 0 für beide Parameter an, SizeToLock und OffsetToLock.

[in] SizeToLock

Typ: UINT

Größe der zu sperrenden Vertexdaten in Bytes. Um den gesamten Vertexpuffer zu sperren, geben Sie 0 für beide Parameter an, SizeToLock und OffsetToLock.

[out] ppbData

Typ: VOID**

VOID*-Zeiger auf einen Speicherpuffer, der die zurückgegebenen Vertexdaten enthält.

[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_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE
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

Im Allgemeinen gilt: Halten Sie keine Sperre für mehr als einen Frame. Wenn Sie mit Vertexpuffern arbeiten, können Sie mehrere Sperraufrufe ausführen. Sie müssen jedoch sicherstellen, dass die Anzahl der Sperranrufe mit der Anzahl der Entsperrungsaufrufe übereinstimmt. DrawPrimitive-Aufrufe sind bei ausstehender Sperranzahl für derzeit festgelegte Vertexpuffer nicht erfolgreich.

Die flags D3DLOCK_DISCARD und D3DLOCK_NOOVERWRITE sind nur für Puffer gültig, die mit D3DUSAGE_DYNAMIC erstellt wurden.

Informationen zur Verwendung von D3DLOCK_DISCARD oder D3DLOCK_NOOVERWRITE mit IDirect3DVertexBuffer9::Lock finden Sie unter Verwenden von dynamischen Vertex- und Indexpuffern.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d9helper.h (include D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

IDirect3DVertexBuffer9

IDirect3DVertexBuffer9::Unlock

Vertexpuffer (Direct3D 9)