Вращение сцены в OpenGL (QT)
Итак, мы уже умеем инициализировать OpenGL-окно в QT. (/podklyuchenie-opengl-v-qt/) Теперь научимся вращать сцену. Сокращенно говоря, для поворота сцены в OpenGL необходимо вызвать функцию void glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z). Параметр angle задает угол поворота от текущего положения; x, y, z описывают вектор поворота, проще говоря - задают направление поворота. Можно так же изменить положение начала вектора.
Для этого нужно использовать матрицу трансляции. Делается это функцией: void glTranslated( GLdouble x, GLdouble y, GLdouble z ).
В примере будем просто вращать прямоугольник с предыдущего примера. Смена угла поворота осуществляется по таймеру (про таймеры можно почитать здесь).
Для поворота определим новый метод void rotate() и слот обработки переполнения таймера tiktack().
void WOpengl::rotate()
{ //При каждом вызове функции прибавляем к углу поворота один градус
angle+=1;
//Проверяем переполнение (360 градусов)
(angle>360)? angle = 0: 0;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//Очищаем экран glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
//Делаем поворот системы
glRotated(angle,0,0,1);
//Вызываем функцию отрисовки
paintGL();
}
void WOpengl::tiktack()
{
rotate();
}
Теперь видим вращающийся прямоугольник.

Готовый пример берем здесь: qtopengl_rotate