2010-11-30 70 views
0

过去几周里,我一直在我的键盘上敲打我的头。我想要做的是从文本文件中加载一个浮点数组(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 

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

+0

“我无法让这些呈现”。相反,你会得到......什么?崩溃?黑屏? – genpfault 2010-11-30 23:13:02

+0

对不起,我没有澄清,它只是没有呈现任何东西,但我的清晰背景。就像我已经注释掉了我的glDrawElements行一样。说到这一点,有没有比glDrawElements更有效的方式来呈现我试图做的事情? – Davido 2010-12-01 20:50:59

回答

2

您可以使用GL_TRIANGLES指定顶点格式。

alt text

查看关于GL_TRIANGLES图表,您的格式是错误的。 而且,我更喜欢使用GL_TRIANGLE_STRIP格式。它需要几个顶点。