0

如何使用 opengl 检测鼠标被动运动?换句话说,我如何理解它是向前、向后、向左、向右移动?

我已经做好了

glutPassiveMotionFunc ( func ) 

void func ( int x, int y ) {

   // x and y always positive, I wait it should be negative if it goes left 
   //   acc. to  my coordinate system determined in glLookAt.
}
4

2 回答 2

1

文档

x 和 y 回调参数指示鼠标在窗口相对坐标中的位置。

如果您对光标如何在两帧之间移动(增量)感兴趣,请存储每帧的光标位置并计算“当前”位置和“最后一次看到”位置之间的差异。

于 2012-11-24T09:14:19.157 回答
0

你不是用 OpenGL 做的,而是用 GLUT 做的。

存储之前记录的鼠标位置。将新位置与先前位置进行比较,以了解它是向上、向下、向左还是向右。

像这样的东西:

int x=0, y=0;
enum { LEFT, RIGHT, UP, DOWN };
int direction;

void func(int mx, int my)
{
     if(mx < x) direction = LEFT;
     else if(mx > x) direction = RIGHT;
     else if(my > y) direction = DOWN;
     else if(my < y) direction = UP;

     x = mx;
     y = my;
}

原点位于左上角。

于 2012-11-24T09:14:14.490 回答