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
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 |