Метод IDirect3DVertexBuffer9::Lock (d3d9.h)
Блокирует диапазон данных вершин и получает указатель на память буфера вершин.
Синтаксис
HRESULT Lock(
[in] UINT OffsetToLock,
[in] UINT SizeToLock,
[out] void **ppbData,
[in] DWORD Flags
);
Параметры
[in] OffsetToLock
Тип: UINT
Смещение в данные вершины для блокировки в байтах. Чтобы заблокировать весь буфер вершин, укажите 0 для обоих параметров SizeToLock и OffsetToLock.
[in] SizeToLock
Тип: UINT
Размер данных вершин, которые необходимо заблокировать, в байтах. Чтобы заблокировать весь буфер вершин, укажите 0 для обоих параметров SizeToLock и OffsetToLock.
[out] ppbData
Тип: VOID**
VOID* указатель на буфер памяти, содержащий возвращенные данные вершины.
[in] Flags
Тип: DWORD
Сочетание нулевых или более флагов блокировки, описывающих тип выполняемой блокировки. Для этого метода допустимые флаги:
- D3DLOCK_DISCARD
- D3DLOCK_NO_DIRTY_UPDATE
- D3DLOCK_NOSYSLOCK
- D3DLOCK_READONLY
- D3DLOCK_NOOVERWRITE
Возвращаемое значение
Тип: HRESULT
Если метод выполнен успешно, возвращаемое значение будет D3D_OK. Если метод завершается сбоем, возвращаемое значение можно D3DERR_INVALIDCALL.
Комментарии
Как правило, не удерживайте блокировку в нескольких кадрах. При работе с буферами вершин можно выполнять несколько вызовов блокировки; Однако необходимо убедиться, что количество вызовов блокировки совпадает с числом вызовов разблокировки. Вызовы DrawPrimitive не будут успешными при наличии количества незавершенных блокировок для любого заданного буфера вершин.
Флаги D3DLOCK_DISCARD и D3DLOCK_NOOVERWRITE действительны только для буферов, созданных с помощью D3DUSAGE_DYNAMIC.
Сведения об использовании D3DLOCK_DISCARD или D3DLOCK_NOOVERWRITE с IDirect3DVertexBuffer9::Lock см. в статье Использование динамических буферов вершин и индексов.
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d9.h (включая D3D9.h) |
Библиотека | D3D9.lib |