在同一个 .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 外部 运行 可执行文件,这同样适用。调试和不调试还是有很大区别的。
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 外部 运行 可执行文件,这同样适用。调试和不调试还是有很大区别的。