I am trying to download .obj files that I formatted:
vertexX vertexY vertexZ normalX normalY normalZ
and
index1 index2 index3
into vector and vector arrays, which I then directly visualize in Opengl-ES. My problem is that when I try to load a model into arrays, it takes about 40 seconds to load them. I'm not sure why this is happening so slowly, I saw that other codes load the same model in just a few seconds. Any suggestions? My code for downloading the file is below:
-(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]); } }
One of my thoughts was to serialize the arrays to a binary, and then just deserialize them directly into my program. We have not yet figured out how to do this, but perhaps something along these lines may be the solution.
objective-c iphone opengl-es objective-c ++
Davido
source share