Я пытаюсь понять, как манипулировать сеткой из файла .X. Я начал с тестирования пирамиды (5 вершин). Я загружаю .X с помощью классической функции D3DX
D3DXLoadMeshFromX( path.c_str(), D3DXMESH_DYNAMIC, pDevice->GetDeviced3d(), NULL, &pMaterialBuffer, NULL, &m_numMaterials, &m_pMesh);
В рендерере все выглядит нормально. Но я заметил, что GetNumVertices()
возвращает 16... Когда я получаю буфер вершин с GetMesh()->LockVertexBuffer(0(void**)&pVerts);
и печатаю все 16 вершин, я получаю этот вывод:
0 1 -1
1 0 -1
0 -1 -1
0.13477 0.180836 1.34715
-1 0 -1
0.13477 0.180836 1.34715
0 1 -1
0.13477 0.180836 1.34715
-1 0 -1
0 -1 -1
0.13477 0.180836 1.34715
1 0 -1
-1 0 -1
0 -1 -1
1 0 -1
0 1 -1
Из следующего файла X:
Frame Root {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000,-0.000000, 1.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Frame Cone {
FrameTransformMatrix {
1.000000, 0.000000, 0.000000, 0.000000,
0.000000, 1.000000, 0.000000, 0.000000,
0.000000, 0.000000, 1.000000, 0.000000,
0.000000, 0.000000, 0.000000, 1.000000;;
}
Mesh { // Cone mesh
5;
0.000000; 1.000000;-1.000000;,
1.000000;-0.000000;-1.000000;,
-0.000000;-1.000000;-1.000000;,
0.134770; 0.180836; 1.347146;,
-1.000000; 0.000000;-1.000000;;
5;
3;4,3,2;,
3;1,3,0;,
3;0,3,4;,
3;2,3,1;,
4;4,2,1,0;;
MeshNormals { // Cone normals
5;
-0.657358;-0.657358; 0.368458;,
0.692540; 0.692540; 0.201935;,
-0.679600; 0.679600; 0.276205;,
0.674410;-0.674410; 0.300568;,
0.000000; 0.000000;-1.000000;;
5;
3;0,0,0;,
3;1,1,1;,
3;2,2,2;,
3;3,3,3;,
4;4,4,4,4;;
} // End of Cone normals
} // End of Cone mesh
} // End of Cone
} // End of Root
Так как же возможно иметь эти 16 вершин, если файл содержит только 5? Моя цель - иметь возможность редактировать координату вершины XYZ.
Большое спасибо!