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コールバックパラメータは、ウィンドウの相対座標でのマウスの位置を示します。

カーソルが2つのフレーム間でどのように移動したか(デルタ)に関心がある場合は、フレームごとにカーソル位置を保存し、「現在の」位置と「最後に見た」位置の差を計算します。

于 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 に答える