@ Давидо Извините, у меня нет никакого опыта с целью-C. Это было просто предложение.

аюсь загрузить файлы .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]);
    }
}

У меня была одна мысль: сериализовать массивы в двоичный файл, а затем просто десериализовать их прямо в мою программу. Хотя я еще не понял, как это сделать, но, возможно, что-то в этом роде может быть решением.

Ответы на вопрос(2)

Ваш ответ на вопрос