Библиотека assimp предоставляет удобный способ загрузки 3D-моделей .obj из файла. Однако я обнаружил, что прилагаемый к нему assimp_viewer.exe (я использую версию 3.1.1) намного быстрее импортирует мой файл .obj (42 МБ, уже упрощенный), чем мой код 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;
}