gluLookAt()使屏幕空白

gluLookAt() makes blank screen

本文关键字:屏幕 空白 gluLookAt      更新时间:2023-10-16

我没有太多的OpenGL经验。我正试着画一个茶壶,并在茶壶周围移动相机。为此,我使用了gluLookAt函数。问题是,当我调用gluLookAt时,屏幕是空白的,我看不到我的茶壶。

#include "openGLer.h"
void openGLer::simulate(grid* toSim, int* argc, char** argv)
{
    myGrid = toSim;
    glutInit(argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowSize(400, 400); //Set the window size
    glutCreateWindow("");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutKeyboardFunc(handleKeypress);
    glEnable(GL_DEPTH_TEST);
    glutMainLoop();
}
void openGLer::handleKeypress(unsigned char key, //The key that was pressed
                              int x, int y)
{
    switch (key)
    {
    case 27: exit(0);
    }
}
void openGLer::camera()
{
    gluLookAt(3, 3, 0,
              0, 0, 0,
              0, 1, 0
              );
}
void openGLer::draw()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    camera();
    glutWireTeapot(0.5);
    glutSwapBuffers();
}
void openGLer::display()
{
    draw();
}

为什么gluLookAt()使屏幕空白,我如何解决这个问题?当camera()未被调用时,代码按预期执行;

你的投影矩阵设置正确了吗?否则,你对gluLookAt的调用将导致茶壶离得太远,因此被远平面夹住。

尝试将此添加到您的初始化代码中(以及您的resize处理程序,以在调整窗口大小时修复长宽比)。我把远平面调到100度,对你的茶壶来说足够了。

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective (60.0, width/(float)height, 0.1, 100.0);
glMatrixMode(GL_MODELVIEW);