在二维中仅旋转一个四边形

Rotate just one Quad in 2D

本文关键字:一个 四边形 旋转 二维      更新时间:2023-10-16

在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)似乎旋转了我的整个场景。

将其封装在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矩阵向上推一个位置到堆栈中,本质上保存了它。然后旋转模型视图并绘制四边形。然后,在模型视图中弹回一个位置,恢复到旋转和绘制之前的状态。