设置3D OpenGL透视投影的最简单方法

有很多教程,其中每个建议使用gluPerspectiveglFrustum与其他东西的组合,但我在设置正确的矩阵时遇到了困难。 我需要用什么代码来设置俯视+ z轴的45˚透视图?

到目前为止我有:

 glShadeModel(GL_SMOOTH); glClearColor(0,0,0,0); glClearDepth(1); glDepthFunc(GL_LEQUAL); glViewport(0,0,width,height); glEnable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,1,0.1,100); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); 

但这似乎不起作用。 当我试图绘制东西时,我得到的只是黑屏。

编辑:这是最小的绘图代码:

 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColor3ub(255,255,255); glBegin(GL_TRIANGLE_STRIP); glVertex3f(20,20,20); glVertex3f(20,30,20); glVertex3f(30,20,20); glVertex3f(30,30,20); glEnd(); 

编辑:这是最小的绘图代码:

 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glColor3ub(255,255,255); glBegin(GL_TRIANGLE_STRIP); glVertex3f(20,20,20); glVertex3f(20,30,20); glVertex3f(30,20,20); glVertex3f(30,30,20); glEnd(); 

您的顶点坐标位于查看体积之外。 首先,OpenGL默认情况下“向下看”负Z轴,因此您选择的近和远剪裁平面的Z坐标必须为-100

但即使你在Z坐标上翻转了标志,你的顶点仍会位于45°FOV之外。 (20,0,20)与观察轴成45°,并且(30,0,20)甚至更远。 尝试将顶点坐标围绕(0,0,-5)居中,如(+/- 1,+ / – 1,-5)

诸如(1,1,1)和(2,50,23)点之类的东西。 它们没有出现。

那是你的问题。 默认的OpenGL摄像头的+ Z轴指向摄像头。 由于相机处于Z = 0,因此Z位置> 0的任何位置都在相机后面。

将您的点移动到相机前面。 他们至少需要一个-Z的位置。