gluLookAt 不适用于某些参数

gluLookAt doesn't work with some parameters


我正在尝试沿 XYZ 轴移动相机。
为此,我更改了 glulookat 函数中的第三个参数,它的行为很奇怪。

这是我的全部代码:

glClear(GL_COLOR_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(
    0, 0, 1, //camera pos
    0, 0, 0, //camera target
    0.0, 1.0, 0.0
);

//draw grid

glutSwapBuffers();

如果我写

gluLookAt(
0, 0, 1, //camera pos
0, 0, 0, //camera target
0.0, 1.0, 0.0
);

然后一切正常并绘制一个网格

但是如果我把

gluLookAt(
0, 0, 2, //camera pos
0, 0, 0, //camera target
0.0, 1.0, 0.0
);

那我没看到网格。

为什么会发生这种情况以及如何摆脱它?

gluLookAt的第一个参数是相机的位置。当你增加相机和物体之间的距离时,物体被观察体积的近平面剪裁。

透视投影无效

glFrustum(-100, 100, -100, 100, -100, 100);

因为在透视投影中,到近平面和远平面的距离必须为正。 glFrustum defines a Viewing frustum,其中 0 < 近 < 远

更改近平面以解决问题。例如:

glFrustum(-100, 100, -100, 100, 0.1, 100);