爲了擺脫這種錯誤的,一般要改變頂點,邊,面網格定義的定義。我能得到這個例子中使用的工作:
class MyFace;
class MyVertex;
struct MyUsedTypes : public vcg::UsedTypes< vcg::Use<MyVertex>::AsVertexType,
vcg::Use<MyFace>::AsFaceType>{};
class MyVertex : public vcg::Vertex< MyUsedTypes, vcg::vertex::Coord3f, vcg::vertex::Normal3f, vcg::vertex::VFAdj, vcg::vertex::BitFlags, vcg::vertex::Mark>{};
class MyFace : public vcg::Face < MyUsedTypes, vcg::face::VertexRef, vcg::face::Normal3f, vcg::face::FFAdj, vcg::face::Mark, vcg::face::VFAdj, vcg::face::BitFlags > {};
class MyMesh : public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace> > {};
我相信vcg::xx::BitFlags
是你需要添加兩個頂點和臉的人。這可以從你有關於cFlags()的錯誤中看出。
而且在trimesh_allocate.cpp
例子,你需要註釋掉以下部分:
// WRONG WAY of iterating: FN() != m.face.size() if there are deleted elements
/*for(int i=0;i<m.FN();++i)
{
if(!fi->IsD())
{
MyMesh::CoordType b = vcg::Barycenter(*fi);
}
}*/
我想你的解決方案。但它不適合我... 但其他簡單的例子適合我。 你知道如何在網格中插入頂點嗎? 我厭倦了這個例子中的解釋。但是當我嘗試插入'MyMesh :: VertexPointer ivp [400000];'像400k頂點。該程序崩潰沒有錯誤。請幫助我,謝謝。 –
如果您提出新問題並將鏈接放在此處,我會回答。 – Deepfreeze
嗨。謝謝你的回覆。我已經發布了這個問題[這裏](http://stackoverflow.com/questions/41628620/program-crashes-while-creating-vertexpointer-of-more-then-400k-vertex-in-vcg) –