2010-12-11 59 views
0

我爲iPhone編程的OpenGL的遊戲,有這樣的代碼被稱爲24次第二,意味着更新視圖:使用以下代碼時,爲什麼我的OpenGL ES視圖不更新?

[gameWorld update]; 

glColor3f(1.0f, 0.85f, 0.35f); 
glBegin(GL_QUADS); { 
    glVertex3f(gameWorld.player.x, gameWorld.player.y, 0); 
    glVertex3f(gameWorld.player.x+10, gameWorld.player.y, 0); 
    glVertex3f(gameWorld.player.x+10, gameWorld.player.y+20, 0); 
    glVertex3f(gameWorld.player.x, gameWorld.player.y+20, 0); 
} 
glEnd(); 

其中[遊戲世界更新]調用需要改變遊戲世界的代碼.player.x基於什麼鍵被按下(這工作)。我的問題是,在屏幕上繪製的黃色矩形不會在glBegin()塊之後移動。任何想法爲什麼?

回答

2

OpenBean ES 1.1不支持glBegin()/ glEnd()。

您可能想看看this post,它解釋瞭如何執行類似的操作。基本上,繪製一個三角形:

glEnableClientState(GL_VERTEX_ARRAY); 
glVertexPointer(3, GL_FLOAT, 0, triVertices); 
glDrawArrays(GL_TRIANGLES, 0, 3); 
+0

這樣的作品,但現在繪製的對象不會移動。 gameWorld.player.x更改,但矩形在屏幕上的位置不變。 – Jumhyn 2010-12-11 20:55:46

+0

@Jhhyn - 你是否更新過'triVertices'中的頂點以反映對象座標的變化? – 2010-12-11 21:45:55

+0

我改變triVertices到quadVertices因爲我繪製一個矩形,但它看起來像這樣: GLfloat quadVertices [] = { \t \t gameWorld.player.x,gameWorld.player.y,0, \t \t gameWorld.player .X + 10,gameWorld.player.y,0, \t \t gameWorld.player.x + 10,+ gameWorld.player.y 20,0, \t \t gameWorld.player.x,gameWorld.player.y + 20 ,0 \t}; 編輯:在評論中格式不好,希望它仍然可讀。 – Jumhyn 2010-12-11 21:54:21

相關問題