c++ - 在同一个 .obj 模型文件上,Assimp 查看器比 Assimp C++ 导入器快得多

标签 c++ 3d assimp

assimp 库提供了一种从文件加载 3D .obj 模型的好方法。但是我发现它附带的 assimp_viewer.exe(我使用 3.1.1 版)在导入我的 .obj 文件(42Mb,已经简化)时比我加载相同模型的 C++ 代码要快得多。查看器在几秒钟内加载文件,而我的 C++ 程序 (MSVS 2013/Win64/Release) 需要 154 秒才能完成。我在查看器和 C++ 中尝试了导入程序后处理标志,但我无法弥合两者之间的差距。

对原因有什么想法吗?这是我的 C++ 代码:

#include <ctime>
#include <iostream>
#include <fstream>
#include <vector>

#include "assimp/Importer.hpp"
#include "assimp/scene.h"
#include "assimp/postprocess.h"
#include "assimp/progresshandler.hpp"

using namespace std;

int main(int argc, char* argv[])
{
    Assimp::Importer importer;
    unsigned int post_processing_flags = aiProcess_Triangulate | aiProcess_SortByPType | aiProcess_JoinIdenticalVertices |
            aiProcess_OptimizeMeshes | aiProcess_OptimizeGraph | aiProcess_ImproveCacheLocality;

    cout << "starting load: ";

    auto begin = clock();
    auto scene = importer.ReadFile( "MODEL.obj", post_processing_flags);
    auto end = clock();

    cout << "done!\n";

    double seconds = (end - begin) / CLOCKS_PER_SEC;

    cout << "loading took " << seconds << " seconds" << endl;

    return 0;
}

最佳答案

找到我自己的答案:我在 Visual Studio 中运行它,但在 Release模式 (F5) 下使用调试器启动它。当我调试(CTRL+F5) 启动它时,现在加载模型需要1 秒,就像assimp 查看器一样。如果您使用文件资源管理器或命令行从 visual studio 外部运行可执行文件,这同样适用。调试和不调试之间仍然存在巨大差异。

关于c++ - 在同一个 .obj 模型文件上,Assimp 查看器比 Assimp C++ 导入器快得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39325485/

相关文章:

c++ - 创建一个可以运行的DLL

c++ - 未定义引用。 DSO 缺失

java - 为什么我的对象的纹理没有显示出来?

assimp - 如何使用 gltf 格式通过 Assimp 加载粗糙度/金属贴图?

opengl - glm四元数旋转合并

python - 在 Python 中使用 pyassimp 库

c++ - + 运算符,类类型和内置类型之间的区别?

c++ - &a[x] 在 C 中返回什么类型的值

python - 如何连接 3D 散点图上的点?

javascript - CSS FPS View 闪烁和卡住