Я преобразовал исходный код 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);
}
Я не могу на всю жизнь понять, почему после нажатия клавиши он не обновляет позицию.
Любая помощь будет принята с благодарностью! Спасибо.