繁体   English   中英

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();

编辑:谢谢克罗姆,感谢您的所有帮助并指导我完成任务。 我也有打电话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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM