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

Assimp viewer is much faster then Assimp C++ importer on the same .obj model file

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

对原因有什么想法吗?这是我的 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 中 运行 但在发布模式 (F5) 下使用调试器启动它。当我启动它时 没有 调试 (CTRL+F5) 现在需要 1 秒来加载模型,就像 assimp 查看器一样。如果您使用文件资源管理器或命令行从 visual studio 外部 运行 可执行文件,这同样适用。调试和不调试还是有很大区别的。