顶点开关 DX
Vertex Switch DX
所以我的问题有点简单。我有一个顶点缓冲区,我用
创建它
pDevice->CreateVertexBuffer(
m_dwCount * sizeof(CUSTOMVERTEX)),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&m_pVB, NULL);
然后假设出于测试目的,我想修改所有这些并将它们相乘。我究竟如何锁定所有这些然后将它们相乘?我试图锁定它
CUSTOMVERTEX* pVoid;
pVB->Lock(0, 0, (void**)&pVoid, 0);
但我假设不会锁定整个缓冲区。我是 DirectX 的新手,所以如果问题太愚蠢,我很抱歉,但是感谢任何人的帮助。
首先创建你的多重顶点(例如称为newVertices
)。然后你需要 lock
你的顶点缓冲区并获取指向当前顶点指针的指针,如下所示:
CUSTOMVERTEX* pVertices;
HRESULT hr = m_pVB->Lock(0, 0, reinterpret_cast<void**>(&pVertices), 0);
然后你可以使用 memcpy
像这样替换你的新顶点:
if(hr == S_OK)
memcpy(pVertices, newVertices, num_of_vertices * sizeof(CUSTOMVERTEX));
然后unlock
你的顶点缓冲区是这样的:
hr = m_pVB->Unlock();
所以我的问题有点简单。我有一个顶点缓冲区,我用
创建它 pDevice->CreateVertexBuffer(
m_dwCount * sizeof(CUSTOMVERTEX)),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&m_pVB, NULL);
然后假设出于测试目的,我想修改所有这些并将它们相乘。我究竟如何锁定所有这些然后将它们相乘?我试图锁定它
CUSTOMVERTEX* pVoid;
pVB->Lock(0, 0, (void**)&pVoid, 0);
但我假设不会锁定整个缓冲区。我是 DirectX 的新手,所以如果问题太愚蠢,我很抱歉,但是感谢任何人的帮助。
首先创建你的多重顶点(例如称为newVertices
)。然后你需要 lock
你的顶点缓冲区并获取指向当前顶点指针的指针,如下所示:
CUSTOMVERTEX* pVertices;
HRESULT hr = m_pVB->Lock(0, 0, reinterpret_cast<void**>(&pVertices), 0);
然后你可以使用 memcpy
像这样替换你的新顶点:
if(hr == S_OK)
memcpy(pVertices, newVertices, num_of_vertices * sizeof(CUSTOMVERTEX));
然后unlock
你的顶点缓冲区是这样的:
hr = m_pVB->Unlock();