渲染循环无法访问Assimp const场景变量

时间:2017-01-01 15:56:57

标签: c++ opengl graphics 3d

在我的主渲染循环中,我需要每帧访问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;
}

1 个答案:

答案 0 :(得分:0)

Importer::ReadFile的文档读取&#34; 导入器对象保留数据的所有权,并在销毁时将其销毁&#34;。在您调用ReadFile的方法返回后,importer将被销毁,以便您以后无法访问数据。

您应该在更大的范围内声明importer,最好是作为对象类的成员。