gluLookAt () делает пустой экран - PullRequest
       26

gluLookAt () делает пустой экран

1 голос
/ 19 сентября 2011

У меня мало опыта в 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 () не вызывается, код работает как положено;с отображаемым чайником.

1 Ответ

3 голосов
/ 19 сентября 2011

Правильно ли настроена матрица проекции?В противном случае ваш вызов gluLookAt приведет к тому, что заварочный чайник окажется слишком далеко и, следовательно, будет урезан дальней плоскостью.

Попробуйте добавить это в код инициализации (а также в обработчик изменения размера, чтобы исправить соотношение сторон).когда окно изменено в размере).Я установил дальний самолет на 100, что должно быть достаточно для вашего чайника.

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