Обновление экрана для отображения положения камеры - PullRequest
0 голосов
/ 28 марта 2011

Я преобразовал исходный код C ++ из GLUT в SDL / OpenGL. Проблема в том, что я изменил с GLUT положение камеры не обновляется, поэтому вместо перемещения по клавиатуре экран просто показывает, что он нуждается и не обновляется.

Мазки клавиатуры работают так, как я их настроил, поэтому при нажатии ESC он выходит, и это нормально.

Вот моя функция Display, которая вызывается каждый цикл, а также после нажатия клавиши (wasd):

glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
Camera.Render();
glTranslatef(0.0,-0.5,-6.0);

....Draw some stuff....

SDL_GL_SwapBuffers();

следующий за камерой. Рендер ();

SF3dVector ViewPoint = Position+ViewDir;
gluLookAt(Position.x,Position.y,Position.z,ViewPoint.x,ViewPoint.y,ViewPoint.z,UpVector.x,UpVector.y,UpVector.z);

Что происходит после нажатия клавиши (w, которая должна перемещать камеру вперед):

case SDLK_w:
    CCamera().MoveForward( -0.1 ) ;
    Display();
    break;

и, наконец, функция CCamera (). MoveForward ():

MoveForward(GLfloat Distance){
    Position = Position + (ViewDir*-Distance);
}

Я не могу на всю жизнь понять, почему после нажатия клавиши он не обновляет позицию. Любая помощь будет принята с благодарностью! Спасибо.

1 Ответ

1 голос
/ 28 марта 2011

CCamera() просто создает временную камеру. (Который вы затем двигаете.) Тогда временное уходит.

Возможно, вы хотели изменить Camera?

...