




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、东南大学计算机图形学实验名: 学号:08011322姓评定成绩: 审阅教师:一. 实验目的与内容1、学习用 OpenGL 制作简单的动画2、学习使缓冲技术绘图3、让画出的钟表图具有动画效果二. 基本实验原理这次课程作业,做一个钟表出来。为了使这个钟表可以真正的“动”起来,实时显示时间,不仅需要画出钟表,还需要运用到 OpenGL 中的双缓冲。当 A 缓冲区显示时,B缓冲区正在绘制图形。当B 绘制完毕时,就交换缓冲区,此时B 显示,而 A 就进行绘画。从而实现平滑地显示每一帧地显示,观众就看不到没有完成的画面。计算机的在交换缓冲区的时候,速度很快,所以一般用户是觉察不到的。为了能让的程序能够使缓
2、冲需要改变 main 函数中 glutInitDisplayMode()函数的参数,把 GLUT_SINGLE 改为 GLUT_DOUBLE,表示以前是单缓冲(single)。现在要使缓冲(double)了,在OpenGL 中,并没有提供交换缓冲这个函数,因为有些硬件不支持这个特性。对于不同的操作系统,有不同的方法。使用的 GLUT 辅助库,帮解决了这个问题,只用调用 glutSwapBuffers();函数所以再把 Draw 函数中的 glFlush()函数换成glutSwapBuffers()就可以了。这个时候编译运行,会同样的出现钟表,画面并没有动起来,因为 Draw 函数只调用了一次。
3、在 main 函数中使用 glutIdleFunc(&Update)函数,可以设置一个回调函数 Update。设置了以后,Update 便会在循环中不断地被调用,直到有窗口消息产生。这里暂时不管窗口消息是什么,只需要知道 Update 正不断被调用。Update 函数:void Update()time_t structtime (rawtime;tm * timeinfo; &rawtime );timeinfo = localtime ( &rawtime ); h=timeinfo-tm_hour;m=timeinfo-tm_min; s=timeinfo-tm_sec;gluttRed
4、isplay();gluttRedisplay 函数,就和它的名字一样,它发送了一个消息给 glut 窗口,告诉它重新绘制一下画面,结果就是 Draw 函数会被调用。这时再编译运行一次,发现同样可以显示画面。其实这个时候,画面是在不断地更新的,只是感觉不出来而已。需要注意的是,与指针读数相关的的h、m、s 三个参数必须设置为全局变量,让其在其他函数中也可以被使用。三. 方案实现与测试程序完整代码如下:#include #include #include #include#defin 3.1415926float h,m,s; void Draw()i;float R,TR,PR,h_Angle
5、,m_Angle,s_Angle,count,h_Length,m_Length,s_Length; R=0.5;TR=R-0.04; PR=R-0.08;glClear(GL_COLOR_BUFFER_BIT); glLineWidth(5); glBegin(GL_LINE_LOOP);for (i=0; i100; i+)glVertex2f(R*cos(2*PI/100*i),R*sin(2*PI/100*i);glEnd();glLineWidth(2);/画表盘for (i=0; i12; i+)glBegin(GL_LINES);glVertex2f(PR*sin(2*PI/12
6、*i),PR*cos(2*PI/12*i); glVertex2f(R*sin(2*PI/12*i),R*cos(2*PI/12*i);glEnd();glLineWidth(1);for (i=0; i60; i+)glBegin(GL_LINES);glVertex2f(TR*sin(2*PI/60*i),TR*cos(2*PI/60*i); glVertex2f(R*sin(2*PI/60*i),R*cos(2*PI/60*i);glEnd();glLineWidth(0.5);/画长、短刻度h_Length=0.2; m_Length=0.3; s_Length=0.4; count=
7、60; s_Angle=s/count; count*=60; m_Angle=(m*60+s)/count; count*=12;h_Angle=(h*60*60+m*60+s)/count; glLineWidth(1); glBegin(GL_LINES);glVertex2f(0.0f,0.0f);/计算每一时刻下时、分、秒针的角度glVertex2f(s_Length*sin(2*PI*s_Angle),s_Length*cos(2*PI*s_Angle);glEnd();glLineWidth(5); glBegin(GL_LINES);glVertex2f(0.0f,0.0f);
8、/画秒针glVertex2f(h_Length*sin(2*PI*h_Angle),h_Length*cos(2*PI*h_Angle);glEnd();glLineWidth(3); glBegin(GL_LINES);glVertex2f(0.0f,0.0f);/画分针glVertex2f(m_Length*sin(2*PI*m_Angle),m_Length*cos(2*PI*m_Angle);glEnd();glLineWidth(1);/画时针glBegin(GL_POLYGON); for (i=0; itm_hour; m=timeinfo-tm_min;s=timeinfo-tm_sec;gluttRedisplay();/不停地本地时间main(argc, char *argv)glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);glutInitWindowition(100, 10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 7436:2024 EN Fasteners - Slotted set screws with cup point
- 2025年度二手房买卖交易合同(附带房屋抵押权解除及贷款还款计划)
- 2025年度新能源项目安全生产责任书汇编
- 2025年度科技创新项目资金担保合同
- 2025年高科技车间承包服务协议
- 2025年度社区配套车位代理销售服务合同
- 传统艺术与现代美术课程融合计划
- 如何进行有效的课堂观察计划
- 提升自我管理能力的策略计划
- 关注员工个人发展的措施计划
- 直播营销与运营(第2版)全套教学课件
- 高二英语阅读理解30篇
- 耳鼻喉科患者的疼痛管理
- GB/T 42765-2023保安服务管理体系要求及使用指南
- JGJT10-2011 混凝土泵送技术规程
- 高教社新国规中职英语教材《英语2基础模块》英语2-U3-1.0
- 2023版设备管理体系标准
- 《工程款纠纷》课件
- 中建地下管廊竖井及矩形顶管专项施工方案
- 第7课互联网应用协议 课件 2023-2024学年浙教版(2023)初中信息技术七年级上册
- 特殊问题学生记录表
评论
0/150
提交评论