2011-09-21 52 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来理解它为什么如此。

相关问题