OpenGL(3)GLUT库回调函数API

/* GLUT window callback sub-API.注册回调 */
GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));
/*
lutDisplayFunc函数用于注册一个绘图函数, 这样操作系统在必要时刻就会对
窗体进行重新绘制操作。类似于windows程序设计中处理WM_PAINT消息,执行函数
*/
GLUTAPI void APIENTRY glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height));
/*
参数: 

func: 当窗口需要被重绘是调用的函数的名称。注意使用NULL作为实参是错误的。 
*/
GLUTAPI void APIENTRY glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
/*
参数: 
func: 处理普通按键消息的函数的名称。如果传递NULL,则表示GLUT忽略普通按键消息。 
这个作为glutKeyboardFunc函数参数的函数需要有三个形参。第一个表示按下的键的ASCII码,其余两个提供了,当键按下时当前的鼠标位置。鼠标位置是相对于当前客户窗口的左上角而言的。 

*/
GLUTAPI void APIENTRY glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
//点击鼠标执行func函数
GLUTAPI void APIENTRY glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
//设置鼠标器移动回调函数,当鼠标发生移动时执行被注册的函数。
GLUTAPI void APIENTRY glutPassiveMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
/*
设置移动回调函数;设置当前鼠标移动函数

Func为注册的鼠标移动函数

x,y为鼠标按下式,光标相对于窗口左上角的位置
*/

GLUTAPI void APIENTRY glutEntryFunc(void (GLUTCALLBACK *func)(int state));
/*
设置鼠标的进出窗口的回调函数

Func为注册的鼠标进出回调函数

state为鼠标的进出状态,为以下常量之一:

GLUT_LEFT

鼠标离开窗口

GLUT_RIGHT

鼠标进入窗口

*/
GLUTAPI void APIENTRY glutVisibilityFunc(void (GLUTCALLBACK *func)(int state));
/*
设置当前窗口的可视回调函数

Func为指定的可视回调函数

state表示窗口的可视性,为以下常量:

GLUT_NOT_VISIBLE

窗口完全不可见

GLUT_VISIBLE

窗口可见或部分可见

*/
GLUTAPI void APIENTRY glutIdleFunc(void (GLUTCALLBACK *func)(void));
//设置空闲回调函数,当CPU空闲时调用该函数。
GLUTAPI void APIENTRY glutTimerFunc(unsigned int millis, void (GLUTCALLBACK *func)(int value), int value);
/*
注册一个回调函数,当指定时间值到达后,由GLUT调用注册的函数一次

msecs是等待的时间

Func是注册的函数

value是指定的一个数值,用来传递到回调函数Func中

这个函数注册了一个回调函数,当指定的毫秒数到达后,这个函数就调用注册的函数,value参数用来向这个注册的函数中传递参数.
*/
GLUTAPI void APIENTRY glutMenuStateFunc(void (GLUTCALLBACK *func)(int state));
/*
设置菜单状态回调函数

func是注册的菜单状态回调函数

status是当前是否使用菜单,为以下定义的常量

GLUT_MENU_IN_USE

菜单正在使用

GLUT_MENU_NOT_IN_USE

菜单未被使用

*/

#if (GLUT_API_VERSION >= 2)
GLUTAPI void APIENTRY glutSpecialFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
/*
参数:
func: 处理特殊键按下消息的函数的名称。传递NULL则表示GLUT忽略特殊键消息。
*/

GLUTAPI void APIENTRY glutSpaceballMotionFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
/*
注册一个当前窗口的spaceball平移的回调函数

参数:
func:形如void func(int x, int y, int z);
x,y,z:spaceball的三维空间坐标.
paceball即一种特殊的带3D滚轮的鼠标,不仅可以前后转动,更可以在三维空间里滚动,具体图片,可以在百度里搜索.

当spaceball在当前注册的窗口内平移时,调用该函数.
*/
GLUTAPI void APIENTRY glutSpaceballRotateFunc(void (GLUTCALLBACK *func)(int x, int y, int z));
/*
注册一个当前窗口的spaceball转动的回调函数

参数:
func:形如void func(int x, int y, int z);
当spaceball在当前注册的窗口内滚动时调用.
*/
GLUTAPI void APIENTRY glutSpaceballButtonFunc(void (GLUTCALLBACK *func)(int button, int state));
/*
注册当前窗口的spaceball的按键回调函数.

参数:
func:形如void func(int button, int state);
button:按键编号,从1开始,可用的按键编号可以通过glutDeviceGet(GLUT_NUM_SPACEBALL_BUTTONS)查询.
state:按键状态
GLUT_UP:按键释放
GLUT_DOWN:按键按下
当spaceball在当前窗口中敲击相应的按键时调用.
*/
GLUTAPI void APIENTRY glutButtonBoxFunc(void (GLUTCALLBACK *func)(int button, int state));
/*
注册当前窗口的拨号按键盒按键回调函数

参数:
func:形如void func(int button, int state);
button:按键编号,从1开始,可用的按键号可通过glutDeviceGet(GLUT_NUM_BUTTON_BOX_BUTTONS)查询
state:按键状态
GLUT_UP:按键释放
GLUT_DOWN:按键按下
当拨号按键盒按键被按下时调用.
*/
GLUTAPI void APIENTRY glutDialsFunc(void (GLUTCALLBACK *func)(int dial, int value));
/*
注册当前窗口的拨号按键盒拨号回调函数.

参数:
func:形如void func(int dial, value);
dial:dial的编号,从1开始,可通过glutDeviceGet(GLUT_NUM_DIALS)查询可用编号.
value:dial所拨的值,value是每次所拨的值的累加,直到溢出.
当拨号按键盒拨号时被调用.
*/

GLUTAPI void APIENTRY glutTabletMotionFunc(void (GLUTCALLBACK *func)(int x, int y));
/*
注册图形板移动回调函数

参数:
func:形如void func(int x, int y);
x,y:图形板移动的坐标.

当图形板移动时调用.
*/
GLUTAPI void APIENTRY glutTabletButtonFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y));
/*
注册当前窗口的图形板按键回调函数

参数:
func:形如void func(int button, int state, int x, int y);
button:按键号,通过glutDeviceGet(GLUT_NUM_TABLET_BUTTONS)查询可用键号.
state:按键状态.
GLUT_UP:按键被按下
GLUT_DOWN:按键被释放

x,y:当按键状态改变时,相对于窗口的坐标.
*/
#if (GLUT_API_VERSION >= 3)
GLUTAPI void APIENTRY glutMenuStatusFunc(void (GLUTCALLBACK *func)(int status, int x, int y));
/*
设置菜单状态回调函数

func为注册的菜单状态回调函数

status表示当前是否使用菜单,为以下定义的常量

GLUT_MENU_IN_USE

菜单正在使用

GLUT_MENU_NOT_IN_USE

菜单未被使用

*/
GLUTAPI void APIENTRY glutOverlayDisplayFunc(void (GLUTCALLBACK *func)(void));
/*
注册当前窗口的重叠层的显示回调函数

参数:
func:形如void func(void);指向重叠层的显示回调函数.

这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态中恢复,或者由于调用glutPostOverlayRedisplay()函数要求GLUT更新时,执行func参数指定的函数.
*/
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)
GLUTAPI void APIENTRY glutWindowStatusFunc(void (GLUTCALLBACK *func)(int state));
/*
注册当前窗口状态的回调函数.

参数:
func:形如void func(int state);
state:窗口状态.
GLUT_HIDDEN:窗口不可见
GLUT_FULLY_RETAINED:窗口完全未被遮挡
GLUT_PARTIALLY_RETAINED:窗口部分遮挡
GLUT_FULLY_COVERED:窗口被全部遮挡

当窗口状态发生相应改变时调用.
*/
#endif
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 13)
GLUTAPI void APIENTRY glutKeyboardUpFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y));
/*
注册释放普通按键的回调函数

参数:
func:形如void func(unsigned char key, int x, int y);
key:按键的ASCII码.
x,y:释放按键时鼠标相对于窗口的位置,以像素为单位.

当普通按键被释放时调用.
*/
GLUTAPI void APIENTRY glutSpecialUpFunc(void (GLUTCALLBACK *func)(int key, int x, int y));
/*
注册释放特殊按键的回调函数

参数:
func:形如void func(int key, int x, int y);
key:特殊按键的标识
GLUT_KEY_F1:F1功能键
GLUT_KEY_F2:F2功能键
GLUT_KEY_F3:F3功能键
GLUT_KEY_F4:F4功能键
GLUT_KEY_F5:F5功能键
GLUT_KEY_F6:F6功能键
GLUT_KEY_F7:F7功能键
GLUT_KEY_F8:F8功能键
GLUT_KEY_F9:F9功能键
GLUT_KEY_F10:F10功能键
GLUT_KEY_F11:F11功能键
GLUT_KEY_F12:F12功能键
GLUT_KEY_LEFT:左方向键
GLUT_KEY_UP:上方向键
GLUT_KEY_RIGHT:右方向键
GLUT_KEY_DOWN:下方向键
GLUT_KEY_PAGE_UP:PageUp键
GLUT_KEY_PAGE_DOWN:PageDown键
GLUT_KEY_HOME:Home键
GLUT_KEY_END:End键
GLUT_KEY_INSERT:Insert键
x,y:释放特殊按键时鼠标相对于窗口的位置,以像素为单位.

当特殊按键被释放时调用.
*/

GLUTAPI void APIENTRY glutJoystickFunc(void (GLUTCALLBACK *func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);
/*
注册操纵杆的回调函数

参数:
buttonMask:操纵杆按键
GLUT_JOYSTICK_BUTTON_A
GLUT_JOYSTICK_BUTTON_B
GLUT_JOYSTICK_BUTTON_C
GLUT_JOYSTICK_BUTTON_D
x,y,z:操纵杆在三维空间内移动的位移量
pollInterval:确定检测操纵杆的间隔时间,其单位为毫秒.

该函数在两种情况下被调用:
1.在pollInterval所规定的时间间隔内调用.
2.在调用glutForceJoystickFunc()函数时调用一次glutJoystickFunc();
*/
#endif
#endif
#endif

你可能感兴趣的:(OpenGL(3)GLUT库回调函数API)