我正在尝试rotate
我的形状mouses X and Y position
。与2D自上而下游戏一样,tank's turret
会轮换到mouses X
和Y 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;
}
我相信调试会给我一个0
和90
之间的值。
然而,我的五角大楼并没有轮换。
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
方法,因此它应该是旋转的。但事实并非如此。
有人知道为什么吗?
答案 0 :(得分:0)
确保您在空闲/定时器回调中调用鼠标回调中的glutPostRedisplay()
xor。否则,当操作系统感觉到时,您的显示回调只会被调用(并且您的五角形用新角度重绘)。