我試圖加載的obj,我已經格式化成文件:將頂點和麪的索引數組加載到OpenGL-ES的最快方法?
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]);
}
}
一號線是數組序列化爲一個二進制文件,然後只反序列化他們直接進入我的程序。儘管如此,還沒有弄清楚如何做到這一點,但也許有些東西可能是解決方案。
我從來沒有這樣做過,你有一個關於你如何做的代碼示例?聽起來像它可能是我正在尋找。 – Davido 2010-12-01 22:38:54
對不起,我忘了澄清。這可能會改變你的建議,但我希望用戶能夠從他們的設備中打開NEW .obj文件並在我的OpenGL查看器中查看這些文件。所以靜態文件是不行的,除非有一種方法可以在文本文件中基本擁有數組的代碼,並且可以在運行時直接編譯這些數組。 – Davido 2010-12-01 22:54:39