ma模型類中的問題是處理它組成的每個網格。當它由7個網格組成時,首先析構函數被調用21次。在退出程序後,它被稱爲14次。真的不知道我做錯了什麼。我能夠將問題轉化爲這種特殊的代碼。析構函數被多次調用並且不合適
void Model::processNode(aiNode *node, const aiScene *scene) {
for(unsigned int i = 0; i < node->mNumMeshes; i++) {
aiMesh* mesh = scene->mMeshes[node->mMeshes[i]];
mMeshes.push_back(processMesh(mesh, scene));
}
for(unsigned int i = 0; i < node->mNumChildren; i++) {
processNode(node->mChildren[i], scene);
}
}
mMeshes是單個模型對象的網格的私有向量。
編輯:
爲了澄清,問題是,當網格類的析構函數沒有被註釋掉,它完全破壞了mMeshes矢量一切。這是Mesh的析構函數
Mesh::~Mesh() {
glDeleteVertexArrays(1, &mVAO);
glDeleteBuffers(NUM_BUFFERS, mVBOs);
}
這是Meshes的向量。
std::vector<Vertex> mVertices;
和processNode的頭部,它只是創建新的網格並將其返回給向量。
Mesh Model::processMesh(aiMesh *mesh, const aiScene *scene);
什麼是'mMeshes'? 'processMesh'做什麼? 'processNode'做了什麼?可能有一些拷貝正在進行,你沒有注意到。 –
你可能忘了裝飾你的拷貝構造函數。 – NathanOliver
'mMeshes.push_back(processMesh(mesh,scene));'那裏是複製城市。 –