Я пытаюсь загрузить файлы .obj, которые я отформатировал в:
vertexX vertexY vertexZ normalX normalY normalZ
и:
index1 index2 index3
формат в векторные и векторные массивы, которые я затем напрямуюрендер в Opengl-ES.Моя проблема в том, что когда я пытаюсь загрузить модель в массивы, их загрузка занимает около 40 секунд. Я не уверен, почему это происходит так медленно, я видел, как другие программы загружают ту же модель всего за несколькосекунд.Какие-либо предложения?Мой код для загрузки файла приведен ниже:
-(void)loadModel:(NSString*)filePath
{
try {
ifstream objFile([filePath UTF8String]);
objFile >> numVertices;
objFile.ignore(128, '\n');
vertices.resize(numVertices*6);
VertexNormal* vertex = (VertexNormal*) &vertices[0];
svec3* faceDef;
while (objFile) {
char c = objFile.get();
switch (c) {
case 'v':
{
objFile >> vertex->vertices.x >> vertex->vertices.y >> vertex->vertices.z
>> vertex->normals.x >> vertex->normals.y >> vertex->normals.z;
vertex++;
break;
}
case 'f':
{
objFile >> faceDef->x >> faceDef->y >> faceDef->z;
faceDef++;
break;
}
case '#':
{
part newPart;
partList.push_back(newPart);
numObjects++;
objFile.ignore(128, '\n');
int numFaces;
objFile >> numFaces;
partList[partList.size()-1].faces.resize(numFaces*3);
partList[partList.size()-1].numFaces = numFaces;
faceDef = (svec3*) &partList[partList.size()-1].faces[0];
break;
}
default:
break;
}
objFile.ignore(128, '\n');
}
objFile.close();
free(objFile);
} catch (NSException *ex) {
NSLog(@"%@", [ex reason]);
}
}
Я подумал о том, чтобы сериализовать массивы в двоичный файл, а затем просто десериализовать их прямо в мою программу.Хотя я еще не понял, как это сделать, но, возможно, что-то в этом роде может быть решением.