Вращение 2D-объекта, нарисованного с помощью OpenGL - PullRequest
1 голос
/ 27 марта 2012

Я сделал причудливую форму с OpenGL, и я рисую эту форму этой функцией:

drawShape(const Point & center, char radius, int points, int rotation)

Внутри функции у меня есть код, который сообщает OpenGL, где вершины:

glBegin(GL_LINE_LOOP);
  glColor3f(1.0, 1.0, 1.0);
  glVertex2f(center.getX() + 0.0, center.getY() + 1.0);
  // more vertices
glEnd();

Теперь, когда я добавляю glRotatef(rotation, 0.0, 0.0, 1.0), мне бы хотелось, чтобы эта фигура, которую я нарисовал, вращалась на экране.Однако, если я добавлю его выше glBegin(), он вращает все в окне.Если я включу весь код между glPushMatrix() и glPopMatrix(), объект будет вращаться, но вокруг центра окна.Как я могу повернуть только нарисованный объект?

1 Ответ

4 голосов
/ 27 марта 2012

Вы выполняете работу OpenGL, добавляя center.getX и все такое к значениям.

То, что вы хотите, это:

glPushMatrix();
glTranslatef(center.getX(), center.getY(), 0.0f);
glRotatef(rotation, 0.0, 0.0, 1.0);

glBegin(GL_LINE_LOOP);
  glColor3f(1.0, 1.0, 1.0);
  glVertex2f(0.0, 1.0);
  // more vertices
glEnd();

glPopMatrix();

Вероятно, вы можете применить радиус, используя матрицу glScale и предполагая радиус 1,0 в ваших glVertex вызовах.

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