旋转我的形状的角度,取决于鼠标的位置。

时间:2015-03-22 18:49:41

标签: c++ opengl rotation glut

我正在尝试rotate我的形状mouses X and Y position。与2D自上而下游戏一样,tank's turret会轮换到mouses XY position

使用

glutPassiveMotionFunc(MousePassiveMotion);

我能够记录X和Y位置;

void MousePassiveMotion(int x, int y){
    //do something here
    myAtan2 = atan2(y - Pentagon.y, x - Pentagon.x)* 180 / PI;
    Pentagon.angle = myAtan2;
    cout << Pentagon.angle << endl;
}

我相信调试会给我一个090之间的值。

然而,我的五角大楼并没有轮换。

void DrawShape(){

    glTranslatef(x, y, z);//the x and y position of the shape 

    glRotatef(angle, 0, 0, 1.0f);
    glBegin(GL_TRIANGLE_FAN);
    glVertex3f(v[9].x, v[9].y, v[9].z);

顶部代码是struct,称为五角大楼的类型Shape{};。 在DrawShape()中调用display function方法,因此它应该是旋转的。但事实并非如此。

有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

确保您在空闲/定时器回调中调用鼠标回调中的glutPostRedisplay() xor。否则,当操作系统感觉到时,您的显示回调只会被调用(并且您的五角形用新角度重绘)。