C++ 在2D中只旋转一个四边形

C++ 在2D中只旋转一个四边形,c++,opengl,rotation,C++,Opengl,Rotation,在OpenGL中,对于2D中的以下情况,如何旋转这一个四边形,并且仅旋转这一个四边形(场景中的所有其他内容都应保持在原来的位置) glRotatef(角度,x,y,z)似乎在旋转我的整个场景。将其包含在glPushMatrix和popMatrix中 glPushMatrix(GL_MODELVIEW); glRotatef(angle, x,y,z); // Draw in immediate mode glBegin(GL_QUADS); // b

在OpenGL中,对于2D中的以下情况,如何旋转这一个四边形,并且仅旋转这一个四边形(场景中的所有其他内容都应保持在原来的位置)


glRotatef(角度,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矩阵向上推一个位置到堆栈中,并将其保存在精华中。然后旋转模型视图并绘制四边形。
之后,您在模型视图中弹出一个位置,恢复到旋转和绘图之前的状态。

那么我需要传递到
glRotatef
什么才能让它将我的四边形旋转90度呢?@Ben:您是否费心查看glRotate?它清楚地说,“指定旋转角度,以度为单位。”这一页实际上是谷歌搜索“glRotatef”的第一个结果。@Nicol我不确定传递什么
x,y,z
,这样它旋转整个对象,而不仅仅是一个向量。@Ben文档非常清楚。如果希望它绕x轴旋转45度,那么只需执行以下操作:glRotatef(45,1,0,0);为了更好地理解它,x,y,z实际上是一个向量。场景/对象将围绕其旋转角度的向量。所以通过给1,0,0,你可以绕X轴旋转它
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);