2016-03-16 17 views
0

我有這樣的代碼爲什麼我們在openGL中默認查看負z?

glColor3f(1, 0, 0);// red quad 
glBegin(GL_QUADS); 
glVertex3f(-1, 0, -0.1); 
glVertex3f(1, 0, -0.1); 
glVertex3f(1, 1, -0.1); 
glVertex3f(-1, 1, -0.1); 
glEnd(); 

glColor3f(0, 1, 0); //green quad 
glBegin(GL_QUADS); 
glVertex3f(-1, 0, -0.2); 
glVertex3f(1, 0, -0.2); 
glVertex3f(1, 1, -0.2); 
glVertex3f(-1, 1, -0.2); 
glEnd(); 

glutSwapBuffers(); 

使用默認的投影矩陣,顯示是我的綠四的一個。
如果我們看到負z(從1到-1),那麼紅色四邊形後面的綠色四邊形不應該是?

+0

您是否啓用了深度測試? – vesan

+1

定義「默認投影矩陣」。 –

+0

@NicolBolas我只是說我沒有改變投影矩陣。我讀過的默認值與glOrtho(-1,1,-1,1,1,-1)相同,根據https://www.opengl.org/discussion_boards/showthread.php/145698-what -is-the-default-projection-matrix – Rei

回答

1

兼容模式下的所有矩陣OpenGL作爲標識矩陣開始;他們不應用任何轉換。

在標準化設備座標中,+ Z進入窗口;你正在看+ Z。矩陣和着色器當然可以改變它。

還要確保啓用了深度測試,並使用深度緩衝區創建窗口。

+0

嗨,我已經啓用了深度測試,深度工作正常,謝謝。任何方式我可以證實這一點? – Rei

0

如果紅色四邊形位於截錐體的近平面和遠平面之外,那麼您的紅色四邊形將不可見,因爲它會被裁剪出。 More information

+0

這不是,實際上.. – Rei

+0

你如何設置你的模型視圖矩陣? –

+0

一切都是默認的,所以我猜他們必須是身份矩陣.. :) – Rei

相關問題