Vertex Switch DX - PullRequest
       92

Vertex Switch DX

0 голосов
/ 25 декабря 2018

Так что моя проблема довольно проста.У меня есть буфер вершин, я создаю его с помощью

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

, а затем, скажем, в целях тестирования, я хочу изменить их все и умножить.Как именно я могу заблокировать их все и затем умножить?Я пытался заблокировать его

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

, но я предполагаю, что он не блокирует весь буфер.Я немного новичок в DirectX, поэтому прошу прощения, если вопрос слишком глуп, однако спасибо всем за помощь.

1 Ответ

0 голосов
/ 25 декабря 2018

Сначала создайте ваши умноженные вершины (например, с именем 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();
...