2010-11-30 71 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格式。它需要幾個頂點。