计算机图形与图像 第三章 第二节 回调函数的应用.pdf

计算机图形与图像 第三章 第二节 回调函数的应用.pdf

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形与图像 第三章 第二节 回调函数的应用

计算机图形与图像 计算机学院黄章进 zhuang@ 第三章第二节 回调函数的应用 2 主要内容 • 事件驱动编程 – 鼠标 –键盘 – 窗口改变 • 弹出式菜单 3 使用定位设备 • 一般把定位设备假定成鼠标,不过定位设备也 可以是跟踪球或数据板 • 有两类事件和定位设备相关联 – 鼠标事件(mouse event):当鼠标的一个按键被按 下或释放。 • 返回的信息包括:生成这个事件的鼠标按键、事件之后 按键的状态(释放或按下)、窗口坐标系(原点位于左 上角)中鼠标光标位置 – 移动事件:如果鼠标在某个按键被按下时移动,就 发生了移动事件(move event);如果移动时没有按 键被按下,这个事件称为被动移动事件(passive move event) 4 鼠标回调函数 glutMouseFunc(mouse) void mouse(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表示在窗口中的位置 5 定位 • 在屏幕上的位置通常是以像素为单位的,原点在左上 角 – 因为显示器自顶向下刷新显示内容 • 在OpenGL 中使用的世界坐标系,其原点在左下角 • 在这个坐标系中的y坐标需要从窗口高度中减去回调函 数返回的y值:y = h - y w y (0,0) h (x,y) h-y 6 获取窗口尺寸 • 为了完成y坐标的转换,需要知道窗口的尺 寸 – 在程序执行过程中,高度可能发生改变 – 需要利用一个全局变量跟踪其变化 – 新高度值返回给形状改变回调函数(见后) – 也可以用查询函数glGetIntegerv()和 glGetFloatv() 获取,因为高度是状态的一部分 7 结束程序 • 在以前的程序中没有办法通过OpenGL结束 当前程序 • 可以利用简单的鼠标回调函数做到这一点 void mouse(int btn , int state, int x, int y) { if(btn==GLUT_RIGHT_BUTTON state==GLUT_DOWN)

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档