【问题标题】:Conversion from const aiScene* to aiScene*, ASSIMP从 const aiScene* 转换为 aiScene*, ASSIMP
【发布时间】:2015-11-27 21:07:19
【问题描述】:

我正在尝试将 ASSIMP 库中的 FindSceneCenter 函数应用于从文件导入的 aiScene* 对象。

    // Read file via ASSIMP
    Assimp::Importer importer;
    const aiScene* scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_FlipUVs);
    // Check for errors
    if(!scene || scene->mFlags == AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode) // if is Not Zero
    {
        cout << "ERROR::ASSIMP:: " << importer.GetErrorString() << endl;
        return;
    }
    aiVector3D out, min, max;
    Assimp::FindSceneCenter(scene, out, min, max); // Problem here

问题是这个函数需要[aiScene*] 对象作为参数,但是导入的场景是[const aiScene*] 并且是Assimp::Importer 类的属性。有一个函数 Assimp::Importer::GetOrphanedScene() 可以返回导入的场景并从 Importer 释放所有权,但我不知道之后如何正确删除这个场景(文档说释放后它会成为我的头疼)。

【问题讨论】:

  • 函数是否修改了你传递指针的对象?
  • 我不这么认为。我应该尝试复制此函数的粘贴源并将原型从 *aiScene 更改为 const *aiScene

标签: c++ assimp


【解决方案1】:

如果函数没有修改对象,那么如果可以的话,你应该更正它以获取一个 const 指针。如果你不能修改函数,那么在这里使用const_cast 来编译代码是可以接受的。但是,您需要确保对象不会被更改,否则可能会发生坏事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多