[英]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();
编辑:谢谢克罗姆,感谢您的所有帮助并指导我完成任务。 我也有打电话glTranslatef
之前glRotatef
尽管其希望仍然存在的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.