gluLookAt的问题

时间:2014-10-15 09:11:28

标签: opengl glulookat

我正在尝试使用此代码测试gluLookAt。但我只能看到黑屏。这段代码有什么问题?是否有任何关于glulookAt(或opengl相机)的基本概念我需要了解。

glViewport(0,0,640,480);
glEnable(GL_DEPTH_TEST);
glClearColor(0,0,0,1);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluLookAt(0,0,5,0,0,0,0,0,1);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glBegin(GL_POLYGON);
glColor3f(1, 0, 0);
glVertex2d(0.25, 0.25);
glVertex2d(-0.25, 0.25);
glVertex2d(-0.25, -0.25);
glVertex2d(0.25, -0.25);
glEnd();

1 个答案:

答案 0 :(得分:0)

一个问题是gluLookAt的向上矢量与外观方向的方向相同。

您需要做的就是设置+ Y,它应该可以工作......

gluLookAt(0, 0, 0.5, //position is +0.5 along Z (NOTE: 0.5, not 5. see below),
          0, 0, 0,   //looking at a 0.5x0.5 X/Y quad at the origin
          0, 1, 0    //rotated such that +Y is up
         );

另一个问题是gluLookAt不应该应用于投影矩阵。它现在可以工作,但稍后会破坏照明。将其移至模型视图矩阵:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(... as before ...);

假设尚未设置投影矩阵,将gluLookAt位置更改回5将使四边形消失。这是因为默认投影给出了正交-1到1立方体的观看体积。随着“相机”现在太远,它将看不到任何东西。这是您要调查更改投影矩阵的地方。也许可以使用glOrtho()增加正交投影的大小,或者查看更复杂但更自然的gluPerspective()

相关问题