- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 OpenGL的简单动画
一、实验目的
1、掌握OpenGL的闲置函数
2、掌握OpenGL的时间函数
3、掌握OpenGL的简单动画功能。
4、掌握OpenGL的闲置函数与简单动画。
5、 了解OpengGL裁剪窗口、视区、显示窗口的概念和它们之间的关系。
6、进一步掌握OpenGL的基本图元的绘制。
二、实验环境
硬件要求:
PC机,主流配置,最好为独立显卡,显存512M以上。
软件环境:
操作系统:Windows 7/Windows8
语言开发工具:Microsoft Visual studio 2010,Visual C++。
三、实验内容与要求
要求: 实验所有步骤所生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。 WORD文档命名方式:学号姓名-实验序号-实验名称。
内容:
1、闲置函数的使用与简单动画。
(1) 旋转的六边形,如图3-1所示
阅读五 ,5.1)中 旋转的六边形样本框架程序,分析程序的实现步骤:
运行该程序,观察旋转动画效果。
思考: 如果要调整旋转速度,旋转更快或更慢,应该如何修改程序?
图2-1 六边形绘制
(2) 线框六边形
在display 函数中
添加多边形模式设置语句观看效果。
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); //线框模式
添加线宽语句观看效果
glLineWidth(2.0); //设置线宽
重回多边形填充模式:
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); //填充模式
(3) 在图形中添加字符Hello,观察结果;然后将Hello字符改为自己名字的拼音或英文名字。如图3-2所示。
提示:在图形中添加如下代码:
glColor3f(1,0,0); //设置红色绘制颜色
glRasterPos2i(30,20); //定位当前光标,起始字符位置
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,H); //写字符H
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,e); //写字符e
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,l); //写字符l
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,l); //写字符l
glutBitmapCharacter(GLUT_BITMAP_9_BY_15,o); //写字符o
(4) 变色技术举例:
在程序头部设置全部变量:
int k=0;
在myidle函数中添加代码:
if (k==1)
{ glColor3f(1,0,0) ;
k=0;
}
else
{
glColor3f(1,1,0) ;
k=1;
}
然后在绘制函数中屏蔽原来的绘制颜色,运行查看效果
(5) 六边形静止,直线单独旋转,如图3-2所示。
要求:
1)修改前面的程序,使得六边形保持静止,以六边形中心为起点画一条不同颜色的直线,终点为六边形某一顶点,使得直线不停绕中心点旋转。代码保存下来备用。
思考:如果需要直线保持与机器时钟的秒针节拍吻合,应该如何修改?
提示:可用延时 Sleep()函数,例如
Sleep(1000)表示延时1秒,放在 myidle函数中
图2-2 六边形和直线
2)时间函数的使用与简单动画。
将以上程序中的闲置函数替换为时间函数,
1、主程序中的glutIdleFunc(myidle); //注册闲置回调函数 改为 glutTimerFunc(1000, mytime,10); //1000毫秒后调用时间函数 mytime
2、 myidle()闲置回调函数 改为时间函数 mytime( t)
在程序顶部,函数声明语句也要相应更改:
void myidle(); 改为 void mytime( int t);
3. 在时间函数 mytime(t)最后,再添加
glutTimerFunc(1000, mytime,
您可能关注的文档
最近下载
- 河北省保定市定州市2023-2024学年四年级下学期期末质量监测语文试题(word版有答案).docx VIP
- 外研版五年级上册英语Module6-01Unit1课件.ppt VIP
- 基于世界技能大赛技术规范的货运代理沉浸式模拟训练研究.pdf VIP
- 家居平面图设计方案介绍.pptx VIP
- 河北省保定市定州市2023-2024学年四年级下学期期末质量监测道德与法治试题(word版 有答案).docx VIP
- 螺旋离心泵设计.doc VIP
- 河北省保定市定州市2024-2025学年四年级上学期期中质量监测道德与法治试题(word版 有答案).docx VIP
- 6T厨房管理课件.pptx
- 每日听书《我有自己的宇宙》导读.pdf VIP
- 党支部书记素质能力大赛试题附答案.doc VIP
文档评论(0)