Поверните только один квад в 2D - PullRequest
1 голос
/ 10 февраля 2012

В OpenGL, для следующей ситуации в 2D, как я могу повернуть этот один квад - и только этот один квад (все остальное в сцене должно остаться там, где оно есть)?

// Draw in immediate mode
glBegin(GL_QUADS);                      // begin drawing quads
glVertex2f(box.x,box.y);                // top-left corner
glVertex2f(box.x+box.w,box.y);          // top-right corner
glVertex2f(box.x+box.w,box.y+box.h);    // bottom-right corner
glVertex2f(box.x,box.y+box.h);          // bottom-left corner
glEnd();                                // end drawing quads

glRotatef(angle, x,y,z), кажется, вращает всю мою сцену.

1 Ответ

3 голосов
/ 10 февраля 2012

Заключите его в glPushMatrix и popMatrix

glPushMatrix(GL_MODELVIEW);

glRotatef(angle, x,y,z);

// Draw in immediate mode
glBegin(GL_QUADS);                      // begin drawing quads
glVertex2f(box.x,box.y);                // top-left corner
glVertex2f(box.x+box.w,box.y);          // top-right corner
glVertex2f(box.x+box.w,box.y+box.h);    // bottom-right corner
glVertex2f(box.x,box.y+box.h);          // bottom-left corner
glEnd();                                // end drawing quads

glPopMatrix(GL_MODELVIEW);

По сути, в приведенном выше примере вы перемещаете матрицу modevliew на одну позицию вверх в стек, сохраняя ее в сущности. Затем вы поворачиваете вид модели и рисуете свой квад. После этого вы возвращаетесь на одну позицию в виде модели, возвращаясь к тому, что было до поворота и рисования.

...