Предыдущие изображения не исчезают после ввода с клавиатуры - PullRequest
0 голосов
/ 13 мая 2018

Я работаю над функцией клавиатуры, которая перемещается вверх, вниз, влево, вправо, вперед и назад.Кажется, они работают нормально, но проблема в том, что все еще появляются изображения предыдущих объектов.Это как после того, как изображения распространяются по всему экрану.

Ниже приведены мои коды.

Это в начальной настройке для переменных:

double x1 = 0.0f;
double yi = 1.0f;
double z1 = 3.0f;

double lx1 = 0.0f;
double ly1 = 0.0f;
double lz1 = -1.0f;

double angle = 0.0f;

Функция клавиатуры:

switch (key) {

case 033: 
    glutLeaveMainLoop();
    break;
case 'd':
    angle -= 0.01f;
    lx1 = sin(angle);
    lz1 = -cos(angle);
    //setCamera();
    break;
case 'a':
    angle += 0.01f;
    lx1 = sin(angle);
    lz1 = -cos(angle);
    //setCamera();
    break;
case 's':
    angle += 0.01f;
    ly1 = angle;
    //setCamera();
    break;
case 'w':
    angle -= 0.01f;
    ly1 = angle;
    //setCamera();
    break;
case '2' :
    x1= (-1) * lx1 * 0.1 + x1;
    z1 = (-1) * lz1 * 0.1 + z1;
    //setCamera();
    break;
case '1':
    x1 = (1) * lx1 * 0.1 + x1;
    z1 = (1) * lz1 * 0.1 + z1;
    //setCamera();
    break;
}

glutPostRedisplay(); }

и

void setCamera() {
    glLoadIdentity();
    gluLookAt(x1, yi, z1, x1 + lx1, yi + ly1, z1 + lz1, 0, 1, 0); 
}

Существует также функция setCamera() в функции display().Я думал об этом каждый раз, когда я набираю входные данные, переменные, которые вставляются в функцию gluLookAt(), обновляются и рисуют новое изображение на glutPostRedisplay(), тогда как прежнее изображение остается.Есть что-нибудь, что я бы упустил?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...