我试图了解OpenGL中的透视图。 我想要做的是渲染两个相同的三角形,但在不同的z坐标,所以我认为它们应该以不同的大小出现。这是我的代码:
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时的不同位置。 有人可以向我解释一下吗?
答案 0 :(得分:2)
您不能将0.0用于透视投影的近Z值。它必须是大于零的正数。优选约1.0左右。
答案 1 :(得分:0)
正如尼科尔所说,你应该使用大于0的数字进行截头构造。我强烈建议您阅读此article以了解其原因。