功能:Locks a range of vertex data and obtains a pointer to the vertex buffer memory.
HRESULT Lock(
UINT OffsetToLock, //加锁内存起始地址
UINT SizeToLock, //加锁内存大小
VOID **ppbData, //返回内存指针地址
DWORD Flags //加锁属性
);
DWORD Flags
:指定了顶点缓冲区的加锁属性,它可以取值为
0
,或者如下中的任意组合:
D3DLOCK_DISCARD
//仅在动态缓冲区下使用,硬件丢弃原缓冲区并创建一个
新的缓冲区 (即创建缓冲时设置的内存属性)
D3DLOCK_NO_DIRTY_UPDATE
//在缺省状态下,对缓冲区加锁将会在该区域设置
Dirty标志,该属性将不对该区域设置Dirty标志
D3DLOCK_NOSYSLOCK
//在加锁的过程中系统可进行其他操作
D3DLOCK_READONL
//设置缓冲区位制度属性
D3DLOCK_NOOVERWRITE
//尽在动态缓冲区下使用,保证不覆盖缓冲区数据,即向
缓冲区中添加数据,允许在渲染时添加数据到缓冲区
//以下代码保存了顶点
//锁定顶点缓冲
void* pVertices;
if(FAILED(g_pVertexBuffer->Lock(0,sizeof(Vertices),(void**)&pVertices,0)))
{
return E_FAIL;
}
//拷贝顶点信息
memcpy(pVertices, vertices,size(vertices));
//解锁
g_pVertexBuffer->Unlock();
------------------------------------------------------------------------------------------------------------------------------------------