Я только что закончил писать полнофункциональный просмотрщик моделей и манипулятор для iPhone и iPad. По сути, я просто написал свой собственный анализатор файлов, который будет хранить массивы вершин, затем в цикле рендеринга я просто рендеринг массивов. Это довольно просто сделать, хотя бинарные файлы читаются намного быстрее, чем файлы .obj. Таким образом, вы можете открыть любой файл, а не только тот, который вы «обрабатываете». В интернете также есть много примеров.
EDIT:
Просто поместите ваши вершины в плотно упакованный массив:
vertexX, vertexY, vertexZ, normalX, normalY, normalZ
Так что у вас есть одномерный массив с плавающей точкой, но он отображается как выше. Если у вас есть массив с плавающей точкой, его легко отобразить.
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glColor4f(R, G, B, 1); //range 0-1
glDrawArrays(GL_TRIANGLES, 0, numVertices); //number of floats in array divided by 6
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
Затем просто поместите это в свой цикл рендеринга OpenGL-ES 1.1. Дайте мне знать, если это поможет вам.
EDIT2:
Просто уточняю, если вы открываете файл OBJ в текстовом редакторе, он выглядит так:
list of vertices
list of texture coordinates
list of normals
list of faces
и список лиц ссылается на индексы в трех других списках в том же порядке. Например, одна строка может выглядеть так:
f 16/4/1 4/4/4 1/1/1
означает, что первая вершина грани ссылается на индекс 16 вершин, индекс 4 текстур и индекс 1 нормалей. Второй индекс ссылается на индекс 4 вершин, индекс 4 текстур и индекс 4 нормалей и т. Д. Затем вам просто нужно проанализировать грани и извлечь правильные значения из разных массивов в один массив с плавающей точкой, содержащий вершины и нормали на основе индексы лица.