2011-09-21 31 views
1

我想了解OpenGL中的透視圖。 我想要做的是呈現兩個相同的三角形,但在不同的z座標,所以我假設他們應該出現在不同的大小。這裏是我的代碼:OpenGL ES中的glFrustum():爲什麼形狀顯示的尺寸相同?

CUSTOMVERTEX Vertices[] = 
{ 
    { 0.5f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f }, // x, y, z, color 
    { 0.0f, 0.0f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f }, 
    { 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f }, 
}; 

,並繪製

glDrawArrays(GL_TRIANGLES,0, 3); 
glTranslatef(0.0f,-1.0f,-1.5f); 
glDrawArrays(GL_TRIANGLES,0, 3); 

,這裏是我如何初始化某些屬性

glShadeModel(GL_SMOOTH); 
glClearDepthf(1.0f); 
glEnable(GL_DEPTH_TEST); 
glDepthFunc(GL_LEQUAL); 
glEnable(GL_CULL_FACE); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glFrustumf(-1.0f, 1.0f, -1.0f, 1.0f, 0.0f, 100.0f); 
glMatrixMode(GL_MODELVIEW);     
glLoadIdentity(); 

但三角形出現在大小相同,只是在不同的位置如我翻譯Y. 有人可以向我解釋嗎?

回答

2

對透視投影的近Z值不能使用0.0。它必須是一個大於零的正數。最好約爲1.0左右。

0

正如尼科爾所說,你應該使用大於0的數字來進行製造。我強烈建議你閱讀這個article來理解它爲什麼如此。

相關問題