在2D中仅旋转一个Quad

时间:2012-02-10 19:51:00

标签: c++ opengl rotation

在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 个答案:

答案 0 :(得分:3)

将其包含在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矩阵一个位置推入堆栈,将其保存在本质中。然后旋转模型视图并绘制四边形。 之后,您将在模型视图中弹回一个位置,回溯旋转和绘图之前的位置。