IDirect3DVertexBuffer9::Lock 方法 (d3d9helper.h)

锁定一系列顶点数据,并获取指向顶点缓冲区内存的指针。

语法

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

参数

[in] OffsetToLock

类型: UINT

要锁定的顶点数据的偏移量(以字节为单位)。 若要锁定整个顶点缓冲区,请为 SizeToLock 和 OffsetToLock 这两个参数指定 0。

[in] SizeToLock

类型: UINT

要锁定的顶点数据的大小(以字节为单位)。 若要锁定整个顶点缓冲区,请为 SizeToLock 和 OffsetToLock 这两个参数指定 0。

[out] ppbData

类型: VOID**

VOID* 指针,指向包含返回顶点数据的内存缓冲区。

[in] Flags

类型: DWORD

描述要执行的锁类型的零个或多个锁定标志的组合。 对于此方法,有效标志为:

  • D3DLOCK_DISCARD
  • D3DLOCK_NO_DIRTY_UPDATE
  • D3DLOCK_NOSYSLOCK
  • D3DLOCK_READONLY
  • D3DLOCK_NOOVERWRITE
有关标志的说明,请参阅 D3DLOCK

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果 方法失败,则可以D3DERR_INVALIDCALL返回值。

备注

一般情况下,不要跨多个帧锁定。 使用顶点缓冲区时,可以进行多个锁调用;但是,必须确保锁调用数与解锁调用数匹配。 DrawPrimitive 调用将不会成功,并且任何当前设置的顶点缓冲区上任何未完成的锁计数。

D3DLOCK_DISCARD和D3DLOCK_NOOVERWRITE标志仅在使用 D3DUSAGE_DYNAMIC 创建的缓冲区上有效。

有关将 D3DLOCK_DISCARD 或 D3DLOCK_NOOVERWRITE 与 IDirect3DVertexBuffer9::Lock 配合使用的信息,请参阅 使用动态顶点和索引缓冲区

要求

   
目标平台 Windows
标头 d3d9helper.h (包括 D3D9.h)
Library D3D9.lib

另请参阅

IDirect3DVertexBuffer9

IDirect3DVertexBuffer9::Unlock

顶点缓冲区 (Direct3D 9)