Vertex Switch DX

问题描述 投票:2回答:1

所以我的问题有点简单。我有一个顶点缓冲区,我创建它

    pDevice->CreateVertexBuffer(
        m_dwCount * sizeof(CUSTOMVERTEX)),
        0,
        CUSTOMFVF,
        D3DPOOL_MANAGED,
        &m_pVB, NULL);

然后让我们说出于测试目的,我想修改所有这些并将它们相乘。我怎么能锁定所有这些然后再乘以它们?我试图锁定它

    CUSTOMVERTEX* pVoid;
    pVB->Lock(0, 0, (void**)&pVoid, 0);

但我认为不会锁定整个缓冲区。我是DirectX的新手,所以如果问题太愚蠢我很抱歉,不过感谢任何人的帮助。

c++ directx direct3d vertex directx-9
1个回答
1
投票

首先创建乘法顶点(例如,称为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();
© www.soinside.com 2019 - 2024. All rights reserved.