实验四交互式程序设计

实验四交互式程序设计

ID:30864753

大小:166.73 KB

页数:9页

时间:2019-01-03

实验四交互式程序设计_第1页
实验四交互式程序设计_第2页
实验四交互式程序设计_第3页
实验四交互式程序设计_第4页
实验四交互式程序设计_第5页
资源描述:

《实验四交互式程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验四交互式程序设计实验目的:掌握键盘、鼠标的交互设计。实验内容:1.绘制一个三角形;2.加入键盘交互;3.加入鼠标交互。实验原理:一、画一个三角形#includevoiddraw_triangle(void){glBegin(GL_TRIANGLES);glVertex2f(0.0,25.0);glVertex2f(25.0,-25.0);glVertex2f(-25.0,-25.0);glEnd();}voiddisplay(void){glClearColor(0.(),0.0,().(),1.0)

2、;glClear(GL_COLOR_BUFFER_BIT);glLoadldentityO;glColor3f(1.0,10,1.0);/白色/draw_triangle();glFlush();}voidmyinit(void){glShadeModel(GL_FLAT);}voidmyRcshapc(GLsizciw,GLsizcih){glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadldentityO;if(w<=h)glOrtho(-50.0,50.0r50.

3、0(GLfloat)h/(GLfloat)w,50.0(GLfloat)h/(GLfloat)w,-1.0,1.0);elseglOrtho(-50.0(GLfloat)w/(GLfloat)h,50.0(GLfloat)w/(GLfloat)h,-50.0,50.0,-1.0,1.0);glMatrixMode(GL_MODELVIEW);}voidmain(void)glutInitDisplayModc(GLUT_SINGLEIGLUT_RGBA);glutInitWindowPosition(0,0);glutInit

4、WindowSize(500,500);glutCreateWindow("几何变换”);myinit();glutReshapeFunc(myReshape);glutDisplayFunc(display);glutMainLoopO;}二、键盘输入GLUT允许我们编写程序,在里面加入键盘输入控制,包括了普通键,和其他特殊键(如Fl,UP)o在这一节里我们将学习如何去检测哪个键被按卞,可以从GLUT里得到些什么信息,和如何处理键盘输入。到现在,你应该注意到了,貝要伤〈想控制一个事件的处理,你就必须提前告诉GLUT,哪个函数

5、将完成这个任务。到现在为止,我们已经使用GLUT告诉窗口系统,当窗口重绘时我们想调用哪个渲染函数;当系统空闲时,哪个函数被调用;当窗口大小改变吋,哪个函数又将被调用。相似的,我们必须做同样的事來处理按键消息。我们必须使用GLUT通知窗口系统,当某个键被按卜•时,哪个函数将完成所耍求的操作。我们同样是调用一个函数注册相关的凹调函数。当按下一个键后,GLUT提供了两个函数为这个键盘消息注册冋调。第一个是glutKeyboardFunCo这个函数是告诉窗II系统,哪一个函数将会被调用来处理普通按键消息。普通键是指字母,数字,和具他可

6、以用ASCII代码表示的键。函数原型如下:voidglutKcyboardFunc(void(func)(unsignedcharkey,intx,inty));指定当任何键被按下时,函数func()将被调用。所按下的键连同光标的位置一-并传入func()0注意,光标位置的单位为像素,是从窗口的左上角开始度最的。参数:func:处理普通按键消息的函数的名称。如果传递NULL,则表示GLUT忽略普通按键消息。这个作为glutKcyboardFunc函数参数的函数需要有三个形参。第一个表示按下的键的ASCII码,其余两个提供了,当

7、键按下时当前的鼠标位置。鼠标位置是相对于当前客户窗口的左上角而言的。一个经常的用法是当按下ESCAPE键时退出应用程序。注意,glutMainLoop函数产生的是一个永无止境的循环。唯一的跳岀循环的方法就是调用系统exit函数。这就是我们函数要做的,当按下ESCAPE键调用exit两数终止应用程序(同时要记住在源代码包含头文件stdlib.h)。下面就是这个函数的代码:voidprocessNormalKeys(unsignedcharkey,intx,inty){if(key==27)Exit(O);下血il我们控制特殊键的

8、按键消息。GLUT提供函数glutSpecialFunc以便为有特姝键按下的消息时,你能注册你的函数。函数原型如下:voidglutSpecialFunc(void(func)(intkey,intx,inty));参数:func:处理特殊键按下消息的函数的名称。传递NULL

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。