CUSTOMVERTEX* pVertexArray;
if( FAILED( m_pVB->Lock( 0, 0, (void**)&pVertexArray, 0 ) ) ) {
return E_FAIL;
}
pVertexArray[0].position = D3DXVECTOR3(-1.0, -1.0, 1.0);
pVertexArray[1].position = D3DXVECTOR3(-1.0, 1.0, 1.0);
pVertexArray[2].position = D3DXVECTOR3( 1.0, -1.0, 1.0);
...
Я некоторое время не касался C ++ - отсюда и тема, но этот кусочек кода сбивает меня с толку. После вызова m_pVB-> Lock массив инициализируется.
Это замечательно, и все, кроме моей проблемы, в том, как это происходит. Код ниже использует девять элементов, но другая функция (в значительной степени, копирование / вставка) кода, с которым я работаю, имеет доступ только к четырем элементам.
CUSTOMVERTEX - это структура, но у меня сложилось впечатление, что это не имеет значения, и что массив структур / объектов должен быть инициализирован до фиксированного размера.
Может кто-нибудь прояснить это?
Edit:
Учитывая ответы, откуда он знает, что мне требуется девять элементов в массиве или четыре и т. Д ...?
Так что, пока буфер достаточно большой, элементы являются законными. Если это так, этот код устанавливает размер буфера, если я не ошибаюсь.
if( FAILED( m_pd3dDevice->CreateVertexBuffer( vertexCount * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &m_pVB, NULL ) ) ) {
return E_FAIL;
}