OPENGL中和鼠标、键盘事件有关的函数

1. void glutMotionFunc(void (*func)(int x, int y))

当鼠标在窗口中按下并移动时调用glutMotionFunc注册的回调函数,x和y为按下鼠标时鼠标的位置

2. void glutPassiveMotionFunc(void (*func)(int x, int y))

当鼠标在窗口中移动时调用glutPassiveMotionFunc注册的回调函数。x,y:鼠标按下式,光标相对于窗口左上角的位置,以像素为单位。

3. void glutKeyboardFunc(void(*func)(unsigned char key,int x,int y))

这个函数可以用来处理键盘上可以用ascii码表示的键按下的事件,key就是这个键ascii码,x和y则是键摁下时鼠标相对于窗口左上角的位置。

4. void glutSpecialFunc(void (*func)(int key,int x,int y))

这个函数是用来处理一些特殊键(如:F1,F2,etc)摁下的事件。参数key是这个键编号,在glut.h中预定义了这些常量:

#define GLUT_KEY_F1          1
#define GLUT_KEY_F2          2
#define GLUT_KEY_F3          3

还有很多被预定义的按键,可以在glut.h文件中查看,或者直接输出按键值进行查看。同样,x和y也是当前鼠标的位置。

5. void glutMouseFunc(void(*func)(int button,int state,int x,int y))

这个函数用来处理鼠标左右键和中键摁下的事件。其中button保存的是摁下的鼠标键的键位信息。在glut.h中,有定义:

#define GLUT_LEFT_BUTTON    0
#define GLUT_MIDDLE_BUTTON  1
#define GLUT_RIGHT_BUTTON    2

#define GLUT_DOWN        0
#define GLUT_UP          1

参数state表示这个事件发生是这个键是摁下还是松开。
参数x和y则表示当前鼠标的位置。

6. void glutPassiveMotionFunc(void (*func)(int x,int y))

这个函数是处理当没有鼠标键摁下时,鼠标拖动的事件。当鼠标拖动时,将每一帧都调用一次这个函数。

7. void glutEntryFunc(void(*func)(int state))

这个函数则是处理鼠标离开和进入窗口的事件。参数state的值在glut.h中有定义:

#define GLUT_LEFT        0
#define GLUT_ENTERED      1

8. int glutGetModifiers(void)

这个函数的返回值是三个glut.h里预定义的常量里的一个,或它们的或组合。这三个常量是:

GLUT_ACTIVE_SHIFT: 返回它,当按下SHIFT键或以按下CAPS LOCK,注意两者同时按下时,不会返回这个值。
GLUT_ACTIVE_CTRL: 返回它,当按下CTRL键。
GLUT_ACTIVE_ATL:返回它,当按下ATL键

猜你喜欢

转载自blog.csdn.net/Miha_Singh/article/details/84997067