2011-02-03 61 views
0

我試圖使用gluLookAt移動相機在我的iPhone遊戲,但每次我試圖用我的gluLookAt屏幕只是去「空白」(灰色在這種情況下)使用gluLookAt在2D iPhone遊戲中移動相機?

我試着渲染一個簡單的三角形和移動攝像機,這是我的代碼:

設置我的場景我做的:

glViewport(0, 0, backingWidth, backingHeight); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glRotatef(-90.0, 0.0, 0.0, 1.0); //using iPhone in horizontal mode 
glOrthof(-240, 240, -160, 160, -1, 1); 
glMatrixMode(GL_MODELVIEW); 

然後我的「三角形渲染」代碼如下所示:

GLfloat triangle[] = {0, 100, 100, 0, -100, 0,}; 
glClearColor(0.7, 0.7, 0.7, 1.0); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glEnableClientState(GL_VERTEX_ARRAY); 
glColor4f(1.0, 0.0, 0.0, 1.0); 
glVertexPointer(2, GL_FLOAT, 0, &triangle); 
glDrawArrays(GL_TRIANGLES, 0, 6); 
glDisableClientState(GL_VERTEX_ARRAY); 

這繪製一個紅色的三角形在屏幕的中間,當我嘗試申請gluLookAt(我從cocos2d的功能的實現,所以我asume它是正確的),我做的:

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
gluLookAt(0,0,1,0,0,0,0,0,1); // try to move the camera a bit ? 

GLfloat triangle[] = {0, 100, 100, 0, -100, 0,}; 
glClearColor(0.7, 0.7, 0.7, 1.0); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glEnableClientState(GL_VERTEX_ARRAY); 
glColor4f(1.0, 0.0, 0.0, 1.0); 
glVertexPointer(2, GL_FLOAT, 0, &triangle); 
glDrawArrays(GL_TRIANGLES, 0, 6); 
glDisableClientState(GL_VERTEX_ARRAY); 

這使我灰色屏幕(glClearColor是灰色的),我已經嘗試了各種各樣的東西,並閱讀我在網上發現的關於gluLookAt,但沒有運氣:(如果有人可以解釋我或告訴我如何移動移動相機以自頂向下的方式(塞爾達等),我真的很感激它。

謝謝!

回答

0

最後3個參數看起來不正確。您正在向正Z方向創建「向上」向量,這意味着您的視圖方向與三角形平面平行(因此三角形不再可見)。你可以嘗試:

gluLookAt(0,0,1,0,0,0,0,1,0); 

但是,如果你想要做的是移動視圖上/下/左/右,那麼你可以只用glTranslatef代替,如:

glTranslatef(100.0f, 20.0f, 0.0f); 

應使你的三角形右邊100像素,頂部20像素。