Вращение сцены в 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 ).

rotateВ примере будем просто вращать прямоугольник с предыдущего примера. Смена угла поворота осуществляется по таймеру (про таймеры можно почитать здесь).

Для поворота определим новый метод 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(); }

Теперь видим вращающийся прямоугольник. screen

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