计算机图形与图像 第三章 第三节 交互式程序设计.pdf

计算机图形与图像 第三章 第三节 交互式程序设计.pdf

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

计算机图形与图像 计算机学院黄章进 zhuang@ustc.edu.cn 第三章第三节 交互式程序设计 2 主要内容 • 选择与拾取 • 橡皮条操作 • 显示列表 3 拾取(picking) • 从屏幕上显示结果中识别用户定义的对象 • 原则上说要达到这个目标是很简单的,因 为鼠标可以提供位置信息,我们应该能够 根据位置确定对应的是哪个对象 • 实际操作中的困难 – 流水线图形体系结构是单向的,很难从二维屏 幕返回到三维世界 – 二维屏幕,三维世界,也使问题变得复杂 – 离位置多近可以认为选择了对象? 4 三种方法 • 命中列表(hit list) – 最一般性的方法,实现也最困难 – OpenGL 3.1及更高版本已废弃该功能 • 矩形映射(包围盒方法) – 容易实现 • 利用后缓冲区或其它缓冲区,用不同颜色 绘制不同的对象,通过颜色来识别对象 (推荐方法) 5 绘制模式 • OpenGL使用三种模式进行绘制 GLint glRenderMode(GLenum mode) – GL_RENDER 渲染模式:正常绘制到帧缓冲 区中(缺省模式) – GL_FEEDBACK 反馈模式:提供已绘制的图 元列表,但并不输出到帧缓冲区中 – GL_SELECT 选择模式:视景体中的每个图元 产生一个命中记录(hit record),这个记录放到 名字堆栈(name stack)中,稍后要被检测 6 选择模式中用到的函 数 void glSelectBuffer(GLsizei size, GLuint *buffer); • 指定用于返回选择数据的数组。 – buffer 指向的无符号整型数组用于存放选择数 据(命中纪录) – size 表示数组的大小 – 在进入选择模式前,必须调用glSelectBuffer() 7 选择模式中用到的函 数 void glInitNames(void); • 初始化名字堆栈,使其成为空栈 void glPushName(GLuint name); • 把name压入到名字堆栈。名字堆栈的深度因实现而异,至少能 容纳64个名字。 void glPopName(void); • 从名字堆栈中弹出栈顶名字 void glLoadName(GLuint name) • 用name替换名字堆栈的栈顶元素。应该至少调用一次 glPushName()函数在堆栈中压入一些东西,然后再调用 glLoadName()以避免堆栈是空的。 • 如果要用程序并不是处于选择模式下,对glPushName(), glPopName() 和glLoadName()的调用会被忽略 8 创建名字栈 glInitNames(); glPushName(0); glPushMatrix(); /* save the current trans

文档评论(0)

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

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

1亿VIP精品文档

相关文档