glRotatef没有按预期旋转
glRotatef not rotating as expected
我正试图围绕其中心旋转一个四边形,但是当我运行应用程序时,四边形围绕屏幕的0,0位置旋转,我无法找出原因,因为一切看起来都很好。如有任何帮助,我将不胜感激。
glPushMatrix();
glTranslatef(pxob->x, pxob->y, 0);
glRotatef(pxob->theta,0.0f,0.0f,1.0f);
glBegin(GL_QUADS);
glColor3f((28.0f / 255.0f), (28.0f / 255.0f), (28.0f / 255.0f));
glVertex3f(pxob->x - (SIZE / 2), pxob->y- (SIZE / 2), 0);
glVertex3f(pxob->x + (SIZE / 2), pxob->y- (SIZE / 2), 0);
glVertex3f(pxob->x + (SIZE / 2), pxob->y + (SIZE / 2), 0);
glVertex3f(pxob->x- (SIZE / 2), pxob->y + (SIZE / 2), 0);
glEnd();
glPopMatrix();
编辑:谢谢你Krom,谢谢你的帮助和指导我通过它。我必须在glRotatef
之前调用glTranslatef
因为它仍然想绕(0,0)旋转。再次感谢!
您需要先glRotatef
,然后glTranslatef
。
这是因为第一个对象需要乘以旋转矩阵(围绕其中心旋转对象),然后应用平移矩阵(将旋转的对象移动到所需位置)。
如果你以另一种方式操作,那么平移后的对象将绕0;0个坐标旋转。
编辑:看看你的代码-你用X/Y偏移量构建四边形,而你已经把它应用到glTranslatef
。这可能是个错误。代码应该是:
glVertex3f(-SIZE / 2, -SIZE / 2, 0);
glVertex3f( SIZE / 2, -SIZE / 2, 0);
glVertex3f( SIZE / 2, SIZE / 2, 0);
glVertex3f(-SIZE / 2, SIZE / 2, 0);
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 发布旋转矩阵(openGL/glm)
- 如何在 glRotatef 中使用 glm::mat4
- 顺时针迭代旋转 3 位数字
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- 子轴围绕父轴而不是他自己的轴旋转
- 将使用太多的纹理插值器 - 带旋转的着色器
- SFML 向下移动时如何围绕屏幕中心旋转?
- glRotatef 旋转相机而不是对象
- 如何像在OpenGL中使用glRotatef()一样旋转顶点
- glRotatef 不会旋转任何东西
- glRotatef旋转什么?
- glRotatef没有按预期旋转
- 如何使用 glRotatef 围绕对象的局部(非全局)轴执行旋转?