- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华中科技大学电子科学与技术系
软件课程设计中期报告
( 2010 -- 2011 年度第 二 学期)
名 称:软件课程设计
题 目:基于OpenGL的3D旋转魔方
院 系:电子科学与技术系
班 级:电子0906班
学 号:U200914760
学生姓名:马晓龙
联系方式
指导教师:杨文涛
设计周数:两周
成 绩:
日期: 2011 年 月 日
目录:
一,本阶段的任务及实现
二结构分析
三消息处理机制
四编程方法及重要函数分析
1,创建窗口
2, 绘制图形
3,模仿旋转
4,纹理映射
五心得体会
六待解决问题及任务
七参考文献
一 本阶段的任务及实现
在中期阶段,最主要任务是实现了一个立方体的旋转。首先,看了C++语言及openGL 编程的一些东西,然后参考了周炜的nehe的中文教程。学会了构建Windows窗体,设置窗体的标题及全屏的控制。了解了Windows消息循环机制和消息函数消息处理,以及键盘鼠标输入处理。然后在创建好的窗体中通过openGL中的创建图形的函数构建出你基本的图形单元,再由基本的图形单元通过建模创建起一个立方体。学会了立方体进行着色,实现了立方体的旋转,使用函数对立方体进行纹理映射。通过参看教程,掌握了glTexCoord2f、glGenTextures、glBindTexture、glTexImage2D、glTexParameteri glTranslatef、glRotatef 等函数用法;了解函数的PeekMessage、TranslateMessage、DispatchMessage使用和键盘虚码值;WndProc函数工作;了解了SetTimer和计时器回调函数用法等以及添加光照和键盘控制。
二,结构分析
openGL的程序结构可以基本分为三个部分:
第一部分是初始化部分,主要设置一些OpenGLDE 状态开关,如颜色模式的选择,是否做光照处理,深度检验,裁剪等等。这些状态函数一般都用函数glEnable()H和glDisable()来设置,()中为相应的状态。
第二部分设置观察坐标系下的取景模式和取景框位置及大小,主要利用了三个函数:函数void glViewport(left,top,right,bottom):设置在屏幕上的窗口大小,四个参数描述屏幕窗口在四个边界坐标。函数void glOrtho(left,top,right,bottom,near,far)设置投影方式。函数void gluPerspective(fovy,aspect,zNear,zFar)设置投影为透视投影。
第三部分是openGL的主要部分,使用openGL的库函数构造几何物体对象的数学描述。
三,消息处理机制
消息机制是windows应用系统的核心,在WINDOWS中发生的一切都可以用消息来表示。消息用于告诉操作系统发生了什么所有windows应用程序都是消息驱动的,如窗口鼠标移动窗口大小改变等,消息控制中心一般是三级控制结构,起顶端就是windows内核,windows内核维护者一个队列。第二季是从这个消息队列中获取属于自己的管辖的消息,后做出处理。第二级控制中心一般是个windows应用程序application对象,第三级就是windows窗体对象,每一个窗体都有一个窗体过程,这个过程负责接收道德消息。 如下图所示:
消息由一个消息名称(UNIT)和两个参数(WPARAM,LPARAM)组成。当用户进行输入或是窗口的状态发生改变时系统都会发送一个消息到窗口。用户可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。一个消息必须有一个窗口接受在窗口过程(WNPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理,而MS为窗口提供可默认的窗口过程,这个过程将负责那些你不处理的消息,正因为有了这个过程文才可以利用windows的窗口进行开发而不必过多关注窗口的各种消息处理。还有窗口句柄,系统通过窗口句柄在窗口中唯一标识一个窗口,发送消息时必须指定一个窗口句柄,表明消息有那个窗口接受而每个窗口都会有自己的窗口过程,所以输入就会被正确处理。一个消息从产生到被一个窗口响应有以下几个步骤
文档评论(0)