Бібліотека 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 для відповіді № 1Знайшли свою власну відповідь: я запускаю її в Visual Studio, але запускаю її - з відладчиком в режимі випуску (F5). Коли я запускаю його без Налагодження (CTRL + F5) займає зараз 1 секундумодель, як це робить глядач. Те ж саме стосується і запуску виконуваного файлу з зовнішньої візуальної студії за допомогою файлового провідника або командного рядка. Ще велика різниця між налагодженням і без.