• Glut 回调函数小结


    2014-04-08  16:25:50
     
    void glutDisplayFunc(void (*func)(void));

    注册当前窗口的显示回调函数

     

    参数:
    func:形为void func()的函数,完成具体的绘制操作

    这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态
    //*******************************************************************************************
    void glutReshapeFunc(void (*func)(int width, int height));

    指定当窗口的大小改变时调用的函数

     

    参数:
    func:形如void func(int width, int height)
    处理窗口大小改变的函数.
    width,height:为窗口改变后

    这个函数确定一个回调函数,每当窗口的大小或形状改变时(包括窗口第一次创建),GLUT将会调用这个
    //*******************************************************************************************
    void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));

    注册当前窗口的键盘回调函数

     

    参数:
    func:形如void func(unsigned char key, int x, int y)
    key:按键的ASCII码
    x,y:当按下键时鼠标的坐标,相对于窗口左上角,以像素为单位

    当敲击键盘按键(除了特殊按键,即glutSpecialFunc()中处理的按键,详见glutSpecialFunc())时调用.



    //******************************************************************************************
    void glutMouseFunc(void (*func)(int button, int state, int x, int y));

    注册当前窗口的鼠标回调函数

    参数:
    func:形如void func(int button, int state, int x, int y);
    button:鼠标的按键,为以下定义的常量
    GLUT_LEFT_BUTTON:鼠标左键
    GLUT_MIDDLE_BUTTON:鼠标中键
    GLUT_RIGHT_BUTTON:鼠标右键
    state:鼠标按键的动作,为以下定义的常量
    GLUT_UP:鼠标释放
    GLUT_DOWN:鼠标按下
    x,y:鼠标按下式,光标相对于窗口左上角的位置

    当点击鼠标时调用.



    //******************************************************************************************
    void glutMotionFunc(void (*func)(int x, int y));

    当鼠标在窗口中按下并移动时调用glutMotionFunc注册的回调函数

    void glutPassiveMotionFunc(void (*func)(int x, int y));

    当鼠标在窗口中移动时调用glutPassiveMotionFunc注册的回调函数

    参数:
    func:形如void func(int x, int y);
    x,y:鼠标按下式,光标相对于窗口左上角的位置,以像素为单位



    //*******************************************************************************************
    void glutEntryFunc(void (*func)(int state));

    设置鼠标的进出窗口的回调函数

    参数:
    func:形如void func(int state);注册的鼠标进出回调函数
    state:鼠标的进出状态,为以下常量之一
    GLUT_LEFT 鼠标离开窗口
    GLUT_RIGHT 鼠标进入窗口

    当窗口取得焦点或失去焦点时调用这个函数,当鼠标进入窗口区域并点击时,state为GLUT_RIGHT,当鼠标离开窗口区域点击其他窗口时,state为GLUT_LEFT.

     

    //******************************************************************************************

     

    void glutVisibilityFunc(void (*func)(int state));

    设置当前窗口的可视回调函数

    参数:
    func:形如void func(int state);指定的可视回调函数
    state:窗口的可视性,为以下常量
    GLUT_NOT_VISIBLE 窗口完全不可见
    GLUT_VISIBLE 窗口可见或部分可见

    这个函数设置当前窗口的可视回调函数,当窗口的可视性改变时,该窗口的可视回调函数被调用.只要窗口中的任何一个像素是可见的,或者他的任意一个子窗口中任意一个像素是可见的,GLUT则认为窗口是可见的.

     

    //*******************************************************************************************
    void glutIdleFunc(void (*func)(void));

    设置空闲回调函数

    参数:
    func:形如void func(void);

    当系统空闲时调用.

     

    //*******************************************************************************************
    void glutTimerFunc(unsigned int millis, void (*func)(int value), int value);

    注册一个回调函数,当指定时间值到达后,由GLUT调用注册的函数一次

    参数:
    millis:等待的时间,以毫秒为单位
    unc:形如void func(int value)
    value:指定的一个数值,用来传递到回调函数func中

    这个函数注册了一个回调函数,当指定的毫秒数到达后,这个函数就调用注册的函数,value参数用来向这个注册的函数中传递参数. 但只能触发一次,若要连续触发,则需在func中重新设置计时函数glutTimerFunc();

     

    //*******************************************************************************************
    void glutMenuStateFunc(void (*func)(int state));

    注册菜单状态回调函数

    参数:
    func:形如void func(int state);
    state:
    GLUT_MENU_IN_USE:菜单被使用.
    GLUT_MENU_NOT_IN_USE:菜单不再被使用,即菜单被关闭.
    如果state代入GLUT_MENU_IN_USE,则当菜单被使用时调用该函数;
    如果state代入GLUT_MENU_NOT_IN_USE,则当菜单被关闭时调用该函数.

     

    //*******************************************************************************************

    void glutMenuStatusFunc(void (*func)(int status, int x, int y));
    设置菜单状态回调函数
    参数:
    func:形如void func(int status, int x, int y);
    status:当前是否使用菜单,为以下定义的常量
    GLUT_MENU_IN_USE:菜单正在使用
    GLUT_MENU_NOT_IN_USE:菜单未被使用
    x,y:鼠标按下时,光标相对于窗口左上角的位置
    这个函数调用时glut程序判定是否正在使用菜单,当弹出菜单时,调用注册的菜单状态回调函数,同时status设置为常量GLUT_MENU_IN_USE,当菜单使用完毕时,也调用菜单状态回调函数,此时status变量变为GLUT_MENU_NOT_IN_USE.从已弹出的菜单中再弹出的菜单不产生菜单状态回调过程.每个glut程序只有一个菜单状态回调函数. 此函数与上面一个函数相比,只是多传了一个光标位置,其他相同.

     

    //*******************************************************************************************
    void glutSpecialFunc(void (*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:当按下键时鼠标的坐标,相对于窗口左上角,以像素为单位

    注意:ESC,回车和delete键由ASCII码产生,即可以用glutKeyboardFunc()处理. 当在键盘上敲击上述按键时调用该函数.注意与glutKeyboardFunc()的区别.

     

    //*******************************************************************************************

    void glutSpaceballMotionFunc(void (*func)(int x, int y, int z));

    注册一个当前窗口的spaceball平移的回调函数

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

    当spaceball在当前注册的窗口内平移时,调用该函数.

     

    //*******************************************************************************************
    void glutSpaceballRotateFunc(void (*func)(int x, int y, int z));

    注册一个当前窗口的spaceball转动的回调函数

    参数:
    func:形如void func(int x, int y, int z);
    当spaceball在当前注册的窗口内滚动时调用.

     

    //*******************************************************************************************

    void glutSpaceballButtonFunc(void (*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在当前窗口中敲击相应的按键时调用.

     

    //*******************************************************************************************

     

    void glutButtonBoxFunc(void (*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:按键按下

    当拨号按键盒按键被按下时调用.



    //*******************************************************************************************

    void glutDialsFunc(void (*func)(int dial, int value));

    注册当前窗口的拨号按键盒拨号回调函数.

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

    当拨号按键盒拨号时被调用.

     

    //*******************************************************************************************
    void glutTabletMotionFunc(void (*func)(int x, int y));

    注册图形板移动回调函数

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

    当图形板移动时调用.

    //******************************************************************************************

    void glutTabletButtonFunc(void (*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:当按键状态改变时,相对于窗口的坐标.

    //******************************************************************************************

    void glutOverlayDisplayFunc(void (*func)(void));

    注册当前窗口的重叠层的显示回调函数

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

    这个函数告诉GLUT当窗口内容必须被绘制时,那个函数将被调用.当窗口改变大小或者从被覆盖的状态中恢复,或者由于调用glutPostOverlayRedisplay()函数要求GLUT更新时,执行func参数指定的函数.

     

    //*******************************************************************************************

    void glutWindowStatusFunc(void (*func)(int state));

    注册当前窗口状态的回调函数.

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

    当窗口状态发生相应改变时调用.

     

    //*******************************************************************************************

     

    void glutKeyboardUpFunc(void (*func)(unsigned char key, int x, int y));

    注册释放普通按键的回调函数

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

    当普通按键被释放时调用.

     

    //*******************************************************************************************

     


    void glutSpecialUpFunc(void (*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:释放特殊按键时鼠标相对于窗口的位置,以像素为单位.

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

    //******************************************************************************************

    void glutJoystickFunc(void (*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();
    //*******************************************************************************************
  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/z-sm/p/3652266.html
Copyright © 2020-2023  润新知