zoukankan      html  css  js  c++  java
  • [译]GLUT教程

    Lighthouse3d.com >> GLUT Tutorial >> Input >> The Mouse

    上一节我们讨论了怎么用GLUT的键盘函数跟OpenGL应用程序进行交互.现在来探讨鼠标的.GLUT的鼠标接口提供了一堆可选的事件来添加鼠标交互,来监测鼠标点击和鼠标移动.

    监测鼠标点击事件

    和键盘事件一样,GLUT提供了响应鼠标点击事件的注册回调函数.函数名是glutMouseFunc,也是在程序的初始化语句中被调用.原型如下:

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

    func - 鼠标点击事件的触发函数名

    在glutMouseFunc函数的原型中可以看到4个参数.

    第一个参数表示按下或释放了哪个键,该参数有3个常量值选项:

    GLUT_LEFT_BUTTON

    GLUT_MIDDLE_BUTTON

    GLUT_RIGHT_BUTTON

    第二个参数表示事件触发时按键的状态,例如是按下还是释放.可选值是:

    GLUT_DOWN

    GLUT_UP

    当一个事件回调被带着GLUT_DOWN状态触发的时候,应用程序会自动断定GLUT_UP的状态会在鼠标移离窗体的时候自动触发.

    剩下的两个参数是提供了相对于窗体客户区域左上角的x,y坐标.

    监测鼠标移动

    GLUT为应用程序提供鼠标移动监测的能力.有两类移动GLUT可以监测:活跃移动和静默移动.活跃移动是鼠标移动且鼠标键按下时触发.静默移动是鼠标移动且鼠标键没按下时触发.如果应用程序正在跟踪活动,在鼠标移动的期间每帧都会生成事件.

    和之前一样,你要注册GLUT回调函数来响应控制移动事件.GLUT允许我们指定两个不同的函数: 以个跟踪静默移动,一个跟踪活跃移动.原型如下:

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

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

    func - 响应各自类型的移动的处理函数.

    处理函数的参数是相对于窗体客户区域左上角的x,y坐标.

    检测鼠标进入和离开窗体

    GLUT可以检测鼠标离开或进入窗体区域的动作.一个回调函数可以用于控制这两个事件.原型如下:

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

    func - 处理函数

    该处理函数的参数是表示鼠标已进入/已离开窗体区域.GLUT定义两个常量值以用于描述状态:

    GLUT_LEFT

    GLUT_ENTERED

    注意: 在微软的窗体中,该函数不太精确,因为在微软系统中,焦点转移是要通过鼠标点击.虽然你可以通过微软提供的工具更改该特性,但是有的人可能认为这是标准设置,不在微软窗体中使用该特性来监测鼠标进入/离开窗体会是更好的选择.

  • 相关阅读:
    dede织梦调取一二三级栏目名及栏目下的内容列表的方法
    Maven 加载ojdbc14.jar报错,解决方法
    vue.set动态新增对象属性,触发dom渲染
    object_funs.py
    module+standard library.py
    function.py
    exception.py
    assign.py
    if_test.py
    hello.py
  • 原文地址:https://www.cnblogs.com/live41/p/3390840.html
Copyright © 2011-2022 走看看