- 16
- 0
- 约9.12千字
- 约 66页
- 2018-06-27 发布于湖北
- 举报
第3章图形学 输入及交互
显示列表中的状态 绝大多数OpenGL函数都可以放在显示列 表中 ?? 在显示列表中发生的状态改变在列表执行 结束后仍然起作用 ?? 可以通过刚进入显示列表时调用 glPushAttrib和glPushMatrix,执 行结束之前调用glPopAttrib和 glPopMatrix避免这个问题 层次体系与显示列表 考虑一个汽车模型 ? 为底盘创建显示列表 ? 为车轮创建显示列表 glNewList(CAR, GL_COMPILE); glCallList(CHASSIS); glTranslatef(…); glCallList(WHEEL); glTranslatef(…); glCallList(WHEEL); …… elEndList(); 鼠标移动回调函数的应用 通过利用移动回调函数可以在不释放鼠标 按钮的情况下,连续画一系列方框 (square.c) ?glutMotionFunc(drawSquare) ???? 应用被动移动回调函数,可以不用按鼠标 按钮就可以连续画方框 ?glutPassiveMotionFunc(drawSquare) 键盘的应用 glutKeyboardFunc(mykey) ?? void mykey(GLubyte key, GLint x, GLint y) ?返回键盘上被按下键的ASCII码和鼠标位置 ?注意在GLUT中并不把释放键做为一个事件 void mykey(GLubyte key, GLint x, GLint y) { if(key == ‘Q’ | key == ‘q’) exit(0); } 特殊按键 GLUT在glut.h中定义了特殊按键: ? 功能键1: GLUT_KEY_F1 ? 向上方向键:GLUT_KEY_UP ?if(key == GLUT_KEY_F1) …… ?? 其它键 ?可以利用glutGetModifiers(…)探测是否按下了 GLUT_ACTIVE_SHIFT, GLUT_ACTIVE_CTRL, GLUT_ACTIVE_ALT ?由此可以利用单钮或双钮鼠标模拟三钮鼠标 窗口形状的改变 通过拖动窗口的角点可以改变窗口的形状 和尺寸 ?? 那么其中的显示内容该如何处理? ? 必须由应用程序重新绘制 ? 有两种可能性 ? 显示原来内容的一部分 ? 通过强迫适应新窗口来显示所有内容 ? 可能会改变了显示长宽比率 形状改变的可能性 形状改变的回调函数 glutReshapeFunc(myreshape) ?? void myreshape(GLint w, GLint h) ?返回新窗口以像素为单位的宽度与高度 ?在回调函数执行后自动发送重新显示的事件 ?GLUT有一个缺省的形状改变的回调函数,但用户可能 需要定义自己的行为 ?? 这个回调函数是放置照相机函数的恰当地方, 因为当窗口第一次被打开时就会调用这个函数 例子 在下面的例子中通过改变窗和世界窗口使得长宽比率不变 void myreshape(GLint w, GLint h) { glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); /*switch matrix mode */ glLoadIdentity(); if(w=h) gluOrtho2D(-2.0, 2.0, -2.0*(GLfloat)h/(GLfloat)w, 2.0*(GLfloat)h/(GLfloat)w); else gluOrtho2D(-2.0*(GLfloat)w/(GLfloat)h, 2.0*(GLfloat)w/(GLfloat)h, -2.0, 2.0); glMatrixMode(GL_MODELVIEW); /*return to modelview mode*/ } 窗口资源 许多窗口系统提供了一个工具包或者一组库函 数用来建立用户界面,界面中用到了一些特殊 类型的窗口,称为资源构件(widget) ?? 构件集合中包含下述工具: ? 菜单 ? 滑动条 ? 对话框 ? 输入文本框 ?? 但上述构件通常都是与平台相关的 ?? GLUT只提供了包含菜单在内的很少几个构件 菜单 GLUT支持弹出式菜单 ? 可以有子菜单 ?? 创建弹出式菜单的三个步骤 ? 定义菜单内各条目 ? 定义每个菜单项的行为 ? 如果条目被选择执行的操作 ? 把菜单连接到鼠标按钮上 定义一个简单菜单 在main()中 menu_id = glutCreateMenu(mymenu); glutAddMenuEntry(“Clear Screen”, 1); glutAddMenuEntry(“Exit”, 2); glutAttachMenu(GLUT_RIGHT_BUTTON
您可能关注的文档
最近下载
- 电子倍增层背散射效应对增益及噪声的影响研究.pdf
- 弹簧模型-2023年高考物理动量常用模型模拟题精练(解析版).pdf VIP
- REF615使用操作说明书 (1).pdf
- (高清版)DB33 686-2019 机制纸板和卷烟纸单位产品能耗限额及计算方法.pdf VIP
- 7.3 世界上最大的黄土堆积区—黄土高原 第2课时(教学课件)-2025-2026学年八年级地理下册(人教版2024).pptx
- 深度解析(2026)《SFT 0074-2020耕地和林地破坏司法鉴定技术规范》.pptx VIP
- 2024年贵州省高考生物真题卷(含答案与解析)_7674.pdf VIP
- 弹簧模型-动量守恒的十种模型2025高考物理专项复习含答案.pdf VIP
- 市政协领导班子2024年民主生活会对照检查发言材料(四个带头).docx VIP
- 市政协副主席2024年民主生活会对照检查材料(四个带头).docx VIP
原创力文档

文档评论(0)