Я написал программу для загрузки obj-файла в directx 9. Все, что я делаю, это чтение данных вершин и данных индекса из файла (я не читал никаких нормальных данных текстуры или вершин). Затем я подключаю эти данные непосредственно к вершинам и буферам индексов.Obj loader in directX 9
Когда я запускаю код, объекты визуализируются, но они не являются правильной формой. Сетка деформируется. Вот мой код -
D3DXCreateMeshFVF(
index_size, // NumFaces
vertex_size, // NumVertices
D3DXMESH_MANAGED, // Options
D3DFVF_XYZ, // FVF
Device, // The Device
&Mesh[id].MeshData); // The Mesh
VOID* pVertices;
// Copy the vertices into the buffer
Mesh[id].MeshData->LockVertexBuffer(D3DLOCK_DISCARD, (void**)&pVertices);
memcpy(pVertices, VertexData, vertex_size*sizeof(FLOAT)*3); // VertexData is the vertex data that I obtained form the obj file
// Unlock the vertex buffer
Mesh[id].MeshData->UnlockVertexBuffer();
// Prepare to copy the indices into the index buffer
VOID* IndexPtr;
// Lock the index buffer
Mesh[id].MeshData->LockIndexBuffer(0, &IndexPtr);
// Check to make sure the index buffer can be locked
// Copy the indices into the buffer
memcpy(IndexPtr, IndexData, index_size*sizeof(WORD));// IndexData is the list of indices I obtained form he obj file.
// Unlock the buffer
Mesh[id].MeshData->UnlockIndexBuffer();
Когда я показываю куб, он отображает только половину его, а некоторые грани отсутствуют. Я подозреваю, что это некоторая проблема с буфером индекса, но я не знаю, как это исправить.
Мне очень нужна помощь. Спасибо всем.