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

时间:2016-09-05 07:13:53

标签: 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;
}

1 个答案:

答案 0 :(得分:0)

找到我自己的答案:我在Visual Studio中运行它,但在发布模式(F5)中启动它 - 调试器。当我启动它没有调试(CTRL + F5)时,现在花费1秒来加载模型,就像assimp查看器一样。如果使用文件资源管理器或命令行从Visual Studio外部运行可执行文件,则同样适用。有无调试之间仍然存在巨大差异。