在我的主渲染循环中,我需要每帧访问Assimp的Scene节点以从中获取骨骼名称,但每次都会发生崩溃。 我正在尝试打印根名称作为测试。调试器说场景变量没有初始化,虽然如果我留在Object.cpp中,我可以在本地访问它。如果我试图从外面打电话,我会崩溃。 myFSQ对象是shared_ptr。
//Object.h
const aiScene *m_scene;
//Object.cpp
//myFSQ
Assimp::Importer importer;
m_scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_GenSmoothNormals | aiProcess_JoinIdenticalVertices | aiProcess_CalcTangentSpace);
cout << "root node name 1 = " << m_scene->mRootNode->mName.data << endl;
//render loop
if (myFSQ->m_scene)
{
cout << "access root node name 2 = " << access->mRootNode->mName.data << endl;
}
答案 0 :(得分:0)
Importer::ReadFile
的文档读取&#34; 导入器对象保留数据的所有权,并在销毁时将其销毁&#34;。在您调用ReadFile
的方法返回后,importer
将被销毁,以便您以后无法访问数据。
您应该在更大的范围内声明importer
,最好是作为对象类的成员。