从文件加载顶点数组的正确格式

时间:2010-11-30 21:54:07

标签: iphone objective-c opengl-es objective-c++ vertex-array

过去几周我一直在敲我的键盘。我要做的是将一个浮点数组(GLfloat)和一个无符号短路数组(GLushort)从一个文本文件加载到objective-c中的等效数组中,这样我就可以渲染包含的对象。我已将我的数组加载到矢量对象

vector<float> vertices;

vector<GLushort> indices;

但由于某种原因,我无法弄清楚为什么我不能让这些渲染。这是我渲染上面的代码:

glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPoitner(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glDrawElements(GL_TRIANGLES, sizeof(indices)/sizeof(indices[0]), GL_UNSIGNED_SHORT, indices);

示例数组如下:

vertices: (Vx, Vy, Vz, Nx, Ny, Nz)

{10, 10, 0, 0, 0, 1,
-10, 10, 0, 0, 0, 1,
-10, -10, 0, 0, 0, 1,
10, -10, 0, 0, 0, 1};

indices: (v1, v2, v3)
{0, 1, 2,
0, 2, 3};

我想从渲染中加载这些数组的文本文件如下所示:

4 //Number of Vertices
###Vertices###
v 10 10 0 0 0 1
v -10 10 0 0 0 1
v -10 -10 0 0 0 1
v 10 -10 0 0 0 1
###Object1###
2 //Number of faces
f 0 1 2
f 3 4 5

矢量对象是最好的方法吗?如果不是,那是什么?我不知道这些不会呈现的错误?感谢。

1 个答案:

答案 0 :(得分:2)

使用GL_TRIANGLES指定顶点格式。

alt text

查看有关GL_TRIANGLES的图表,您的格式错误。 并且,我更喜欢使用GL_TRIANGLE_STRIP格式。它需要很少的顶点。