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