2016-04-25 67 views
0

我正在學習OpenGL,並且我的程序出現問題,我應該製作太陽系。OpenGL與相機問題(?)

的一切都在這裏首先是代碼我用它來建立我的模型視圖矩陣:

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glRotatef(20, 1, 0, 0); 
glTranslatef(0, -20, -60); 

然後我用線循環繪製軌道和太陽是一個gluSphere:

glPushMatrix(); 
glColor3f(1, 0.4f, 0); 
glTranslatef(0, -2, 0); 
gluSphere(gluNewQuadric(), 4, 30, 30); 
glPopMatrix(); 

而這裏的結果:

​​

但隨後當我使用此代碼 「放大」:

if (key=='w') 
{ 
    glTranslatef(0, 1, 2.4); 
} 
else if (key=='s') 
{ 
    glTranslatef(0, -1, -2.4); 
} 

發生這種情況:

enter image description here

線留在了球門前。我知道這可能是愚蠢的我正在做的事情,但我剛剛開始學習,這真的讓我放慢腳步。 謝謝!

回答

5

您可能沒有打開深度測試。

glEnable(GL_DEPTH_TEST); 

您可能還需要擺弄深度測試參數,儘管通常默認設置就足夠了。

glDepthfunc(GL_LESS); 

我也想借這個時候強烈建議您停止使用OpenGL的立即模式和OpenGL的固定管線,和learn Modern OpenGL

+0

太容易了!非常感謝! – Mykod

+0

@Mykod確保接受答案,如果它爲你工作。 – Xirema

+0

我會的,我只能在一分鐘內完成!關於OpenGL的即時模式,我正在閱讀更多關於它的內容,但我正在上大學的OpenGL課程,這就是我被告知要做的事情。這不好嗎? :/ – Mykod