在之前的项目中,我启用了深度测试,使用在启动时调用一次的gluPerspective来设置 3D 空间。目前,在使用以下代码初始化 3D 世界后,我正在渲染一个介于 -0.5 和 0.5 之间的正方形,其原点为 0.0,这将导致正方形覆盖整个屏幕:
glBegin(GL_QUADS);
{
glVertex3f(-0.5, -0.5, 0);
glVertex3f(-0.5, 0.5, 0);
glVertex3f(0.5, 0.5, 0);
glVertex3f(0.5, -0.5, 0);
}
glEnd();
我正在寻找的是一种设置视角的方法,以便在世界空间中呈现形状。例如,下面的代码片段应该会渲染一个 200x200 的正方形:
glBegin(GL_QUADS);
{
glVertex3f(-100, -100, 0);
glVertex3f(-100, 100, 0);
glVertex3f(100, 100, 0);
glVertex3f(100, -100, 0);
}
glEnd();
下面的代码是我目前用来初始化 3D 世界的代码。
// WINDOW_WIDTH = 1600, WINDOW_HEIGHT = 900
glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(47, WINDOW_WIDTH / WINDOW_HEIGHT, 0.01, 1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
我是否错过了设置 3D 空间的任何步骤,如果gluPerspective
用于执行此操作,是否有任何建议为什么它不起作用?
我能够使用 2D 实现这一点ortho
,重要的是世界是 3D。一切都是用 C 语言编写的,使用 OpenGL 和 GLU 高达 1.3,我的 GLFW 设置与此相同。由于技术限制,我无法使用现代管道。