IDirect3DVertexBuffer9::Lock-Methode (d3d9.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
Versatz 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 Scheitelpunktdaten 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 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
- 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
Halten Sie in der Regel keine Sperre für mehr als einen Frame. Beim Arbeiten mit Scheitelpunktpuffern können Sie mehrere Sperraufrufe tätigen. Sie müssen jedoch sicherstellen, dass die Anzahl der Sperranrufe mit der Anzahl der Entsperrungsaufrufe übereinstimmt. DrawPrimitive-Aufrufe sind nicht erfolgreich mit einer ausstehenden Sperranzahl für einen aktuell festgelegten Vertexpuffer.
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
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | d3d9.h (einschließlich D3D9.h) |
Bibliothek | D3D9.lib |