2013-02-20 24 views
0

我需要在OpenGL(C++,OS:windows)中繪製一個平面(使用GL_QUADS),以便它與屏幕中心對齊。如何設計一個平面在任何窗口大小的視口中心

我的意思是,在任何窗口調整大小的起源將在飛機的中心。

我知道我必須使用視口座標和大小,但我無法配置如何使用它們。我也使用gluPerspective

回答

2

原點與您的窗口大小無關。調整窗口大小時,重新計算窗口的高寬比(window.width/window.height),並使用新的方面調用gluPerspective來重置投影矩陣。

在此之後,只要你glLoadIdentity()到模型視圖矩陣,你應該能夠在屏幕中心畫一個四使用

glBegin(GL_QUADS); 
glVertex3f(-.5f,.5f,-1); 
glVertex3f(-.5f,-.5f,-1); 
glVertex3f(.5f,-.5f,-1); 
glVertex3f(.5f,.5f,-1); 
glEnd(); 

這應該在中心放置單元大小的四的屏幕。

+0

我正在做你在第一段中所說的話。 什麼時候應該做glLoadIdentity()調用? 我需要這個爲我的遊戲創建一個暫停菜單,所以我需要在按鍵後恢復以前的狀態。我怎麼能這樣做?通過使用push和pop矩陣? – Chris 2013-02-20 18:19:37

+0

是的,你會推動/彈出模型視圖,就像'所有的憤怒'張貼。 – Aeluned 2013-02-21 14:46:36

1
glMatrixMode(GL_MODELVIEW); 
glPushMatrix(); 
glLoadIdentity(); 

glBegin(GL_QUADS); 
glVertex3f(-.5f,.5f,-1); 
glVertex3f(-.5f,-.5f,-1); 
glVertex3f(.5f,-.5f,-1); 
glVertex3f(.5f,.5f,-1); 
glEnd(); 

glPopMatrix(); 

注意,這仍然會使用所有的3D渲染狀態,如深度測試,陰影等..最有可能你會希望把它們關掉。

相關問題