- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chap3用户接口与交互技术(阅读)
OpenGL的三种模式 渲染(绘制)模式:GL_RENDER(默认) 检选模式:GL_SELECT 反馈模式:GL_FEEDBACK在检选模式、反馈模式这两种模式下,OpenGL的绘图命令不会送到framebuffer中,即不会在屏幕上绘制任何东西。在使用选择模式时,应该首先把场景绘制到帧缓存,然后再进入选择模式。 拾取就是在选择模式下,在视区内根据光标位置生成一个小区域(视景体),并在该视景体绘制场景中的所有图元,从而确定哪些图元会出现视景体内,并将这些对象的标识符保存在选择数组中。 一旦进入选择模式,帧缓存中的内容就不会再改变,直到退出选择模式。 当退出选择模式,OpenGL返回一个选择数组,存有图元与拾取区域相交的选择命中记录,每个记录对应名称堆栈中的当前内容。 当用绘制命令绘制图元时,可以通过把图元的名称装载到名称堆栈中,这样,当返回命中记录时,可以使用名称堆栈中的内容,确定用户选择的是屏幕上的哪个图元。 检选模式下实现拾取Pick的步骤 使用glSelectBuffer定义图元列表缓冲区,保存拾取返回的信息; 使用glRenderModeGL_SELECT进入检选模式; 使用gluPickMatrix定义拾取区域; 使用glInitNames 初始化名称堆栈Name Stack; 使用glPushName保存名称; 使用glPushMatrix和glPopMatrix保存场景坐标; 绘制图形,使用glLoadName 为每个待选图形命名并保存相应物体; 使用glRenderModeGL_RENDER退出检选模式,返回渲染模式,并且返回拾取信息。 拾取Pick的主要函数 void glSelectBufferGLsize size,GLuint *buffer;定义选择数组 GLint glRenderModeGLenum mode;选择模式 mode: GL_RENDER默认、GL_SELECT和GL_FEEDBACK;返回值:当退出选择或反馈模式时,返回选择或反馈数组中的值的个数,负值表示溢出。 void glInitNamesvoid;初始化名称堆栈 void glPushNameGLuint name; 将name压入名称堆栈 拾取Pick的主要函数 void gluPickMatrixGLdouble x, GLdouble y,GLdouble width, GLdouble height,Glint viewport[4];定义拾取区域 x,y:拾取区域的中心(通常为光标位置); width,height:拾取区域的宽、高; viewport[4]:当前视区的边界,可以通过以下函数获得。glGetIntegervGL_VIEWPORT,Glint *viewport; void glLoadNameGLuint name;用name替换栈顶元素 * 基本交互绘图技术 旋转 设置旋转中心,绕旋转中心随光标移动而旋转。 图3.16 旋转技术 * 基本交互绘图技术 形变 图3.17 形变技术 * 三维交互技术 三维图形数据的输入 三维定位 三维定向 * 3.4 OpenGL实现橡皮筋技术 橡皮筋技术的实现方法 基于异或操作的橡皮筋技术 利用颜色的异或操作,对原有图形并不是擦除,而是再绘制一条同样的直线段并与原图形进行异或操作,此时原图形会从屏幕上消失; 基于缓冲区的橡皮筋技术 利用双缓存技术,绘制图形时分别绘制到两个缓存,交替显示。 * OpenGL实现橡皮筋技术 鼠标实现 鼠标响应函数glutMouseFunc 鼠标移动相应函数glutMotionFuncglutPassiveMotionFunc * OpenGL实现橡皮筋技术 键盘实现 键盘相应函数glutKeyboardFunc 3.5 OpenGL实现拾取操作 OpenGL实现拾取操作 * OpenGL实现拾取操作 设置拾取缓冲区void glSelectBufferGLsizei n, GLunint *buff; 进入选择模式GLint glRenderModeGLenum mode; * OpenGL实现拾取操作 名字堆栈操作 初始化名字堆栈(glInitNames) 将一个名字压入堆栈(glPushName) 替换名字堆栈的栈顶元素(glLoadName) 将栈顶元素弹出(glPopName) * OpenGL实现拾取操作 设置合适的变换过程gluPickMatrixxPick, yPick, widthPick, heightPick, *vp; 为每个图元分配名字并绘制 切换回渲染模式 分析选择缓冲区中的数据 * 3.6 OpenGL中的菜单功能 菜单注册函数glutCreateMenuProcessMenu; 在
您可能关注的文档
- CHAP13(材料与成型工艺选择)(阅读).ppt
- chap132胺类化合物.ppt
- chap13控制的基础(阅读).ppt
- chap13第13章羧酸(阅读).ppt
- chap14控制技术.ppt
- CHAP14聚类分析与判别分析(阅读).ppt
- chap14财政政策.ppt
- chap15.ppt
- Chap15一国收入的衡量.ppt
- Chap15垄断(经济学原理,曼昆,中英文双语).ppt
- 2025至2030全球及中国自推式拖车行业市场深度研究及发展前景投资可行性分析报告.docx
- 2025-2026学年高中信息技术(信息科技)必修2 信息系统与社会教科版(2019)教学设计合集.docx
- 2024年广西专业技术人员继续教育公需科目试题及答案.docx
- 学前儿童认知发展理论考核试题及答案.docx
- 注册城乡规划师之城乡规划原理题库附参考答案(综合卷).docx
- 2024秋新苏教版数学一年级上册课件 数学游戏分享 活动4 围“草地”.pptx
- 2025至2030全球及中国自动驾驶车辆控制系统行业市场深度研究及发展前景投资可行性分析报告.docx
- 全国10月自考监狱学基础理论试题及答案解析.docx
- 食物中毒应急预案演练脚本.docx
- 城市交通生态补偿-洞察及研究.docx
最近下载
- VEICHI伟创 AC310系列变频调速器使用手册2021.06.pdf VIP
- 隧道施工课件.ppt VIP
- 第五届国家级新区经开区高新区班组长管理技能大赛备赛试题库-下(判断题汇总).docx VIP
- DB 6108T 53-2023 煤基固废调理剂修复沙化土地技术规范.docx VIP
- DB6108_T 52-2023 煤基固废调理剂修复盐碱地技术规范.docx VIP
- 行政人事部年终工作总结.pdf VIP
- 行政人事部年终工作总结.pptx VIP
- 第五届国家级新区经开区高新区班组长管理技能大赛备赛试题库-中(多选题汇总).docx VIP
- 化工厂物资明细表.xls VIP
- 第五届国家级新区经开区高新区班组长管理技能大赛试题库(浓缩500题).docx VIP
文档评论(0)