Метод IDirect3DVertexBuffer9::Lock (d3d9helper.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 | d3d9helper.h (включая D3D9.h) |
Библиотека | D3D9.lib |