我在返回这个 const 指针时遇到了问题。使用调试器向我展示了场景已正确导入并存储在可变场景中。返回scene后,scene指向的内容丢失,调用loadData()的类无法访问。
const aiScene* IOHandler::loadData(const std::string& pFile){
Assimp::Importer importer;
const aiScene* scene = importer.ReadFile(pFile,
aiProcess_CalcTangentSpace |
aiProcess_Triangulate |
aiProcess_JoinIdenticalVertices |
aiProcess_SortByPType);
return scene;
}
Run Code Online (Sandbox Code Playgroud)
(Importer并且aiScene(struct)是assimp库的一部分,不能修改)
我假设场景存储在堆栈中,返回调用重置堆栈指针并且内容丢失。如何在c++中处理这样的问题?
你忘记阅读文档了。
该场景归 拥有Importer,因此当超出范围时它将被销毁。返回importer.GetOrphanedScene()获取所有权,并记住在完成后将其删除。
或者,您可以将进口商存储在更永久的地方;但如果您需要同时导入和使用多个场景,这可能不太好。
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |