首
都
师
范
大
学
计
算
机
图
形
学
论
文
题目
基于
OpenGL
与
MFC
的太阳系绘制
作者
袁沅祥
学院
数学科学学院
专业
应用统计
学号
2130502033
指导教师
赵
星
二〇一四年六月二十四日
首 都 师 范 大 学
计 算 机 图 形 学 论 文
摘 要
计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格
形式的科学。本文基于 OpenGL,在 MFC 的框架下,完成了太阳系的绘制任务。本实
验所绘制的太阳系,包括水星、金星、地球、火星、木星、土星、天王星、海王星、冥
王星及彗星,所使用主要 OpenGL 技术有光照、纹理贴图等,结合 MFC 还采用了双缓
存技术。本实验的亮点:一方面,采用面向对象的思想,将星球和纹理都设计为类,其
具体的实现都是类的对象;另一方面,充分利用了 MFC 消息机制,实现了更良好的人
机交互。
关键词:OpenGL,MFC,计算机图形学,太阳系,光照,纹理贴图
Abstract
Computer graphics is a science to use mathematical algorithms to translate two
dimensional or three dimensional graphics for computer monitor’s grid form. This article is
based on the OpenGL, and the MFC framework, has completed the task of drawing the solar
system. The drawing of the solar system, including Mercury, Venus, Earth, Mars, Jupiter,
Saturn, Uranus, Neptune, Pluto and the comet, using the main OpenGL technology of light,
texture and so on, combining with MFC also has used double-buffering technique. Highlights
of this experiment: on the one hand, it uses the object-oriented ideas, the planets and textures
are designed as a class, a specific implementation is just an object; on the other hand, it makes
full use of the MFC message mechanism, and realizes more good human-computer
interaction.
Key words: OpenGL, MFC, computer graphics, solar system, light, texture
首 都 师 范 大 学
计 算 机 图 形 学 论 文
目 录
一、OpenGL 介绍 .................................................................................................................... 1
二、MFC 介绍 .......................................................................................................................... 1
三、新建 MFC 工程 .................................................................................................................. 2
3.1 新建项目 .................................................................................................................... 2
3.2 重载函数 .................................................................................................................... 3
3.3 添加成员 .................................................................................................................... 4
3.4 运行结果 .................................................................................................................... 6
四、纹理类介绍 ........................................................................................................................ 7
4.1 头文件 ........................................................................................................................................ 7
4.2 实现文件 .................................................................................................................................... 7
4.3 使用方法 ................................................................................................................................... 11
五、星球类介绍 ...................................................................................................................... 11
5.1 头文件 ....................................................................................................................................... 11
5.2 实现文件 .................................................................................................................................. 12
六、添加功能 .......................................................................................................................... 12
6.1 添加控件 .................................................................................................................................. 12
6.2 添加处理程序 ......................................................................................................................... 13
6.3 其他消息与响应 .................................................................................................................... 13
6.4 关于双缓存 ............................................................................................................................. 14
七、结 论 .............................................................................................................................. 15
7.1 程序改进 .................................................................................................................................. 15
7.1.1 代码优化 ........................................................................................................ 15
7.1.2 主要功能 ........................................................................................................ 17
7.1.3 特色功能 ........................................................................................................ 18
7.2 程序截图 .................................................................................................................................. 18
参 考 文 献 ............................................................................................................................ 20
附录一: 图表目录 ................................................................................................................... 21
附录二: 源程序 ....................................................................................................................... 21
致 谢 ...................................................................................................................................... 22
- i -
首 都 师 范 大 学
计 算 机 图 形 学 论 文
一、OpenGL 介绍
OpenGL(全写 Open Graphics Library)
是个定义了一个跨编程语言、跨平台的编
程接口的规格,它用于三维图象(二维的
亦可)。OpenGL是个专业的图形程序接口,
是一个功能强大,调用方便的底层图形库。
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生
了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或
其它操作系统的,亦是网络透明的。在包含 CAD、内容创作、能源、娱乐、游戏开发、
制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、
超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
二、MFC 介绍
MFC :微软基础类(Microsoft
Foundation Classes),同 VCL 类似,是一种
应用程序框架,随微软 Visual C++开发工
具发布。目前最新版本为 10.0(截止 2011
年 3 月),并且发布了中文版。该类库提供
一组通用的可重用的类库供开发人员使
用,大部分类均从 CObject 直接或间接派
生,只有少部分类例外。
MFC应用程序的总体结构通常由开发人员从 MFC类派生的几个类和一个 CWinApp
类对象(应用程序对象)组成。MFC 提供了 MFC AppWizard 自动生成框架
Windows 应用程序中,MFC 的主包含文件为 Afxwin.h
此外 MFC 的部分类为 MFC/ATL 通用,可以在 Win32 应用程序中单独包含并使用
这些类。
由于它的易用性,初学者常误认为 VC++开发必须使用 MFC,这种想法是错误的。
作为 Application Framework,MFC 的使用只能提高某些情况下的开发效率,只起到辅助
作用,而不能替代整个 Win32 程序设计。
1
1 本页的介绍摘自百度百科.
- 1 -
首 都 师 范 大 学
计 算 机 图 形 学 论 文
三、新建 MFC 工程
3.1 新建项目
打开 Visual Studio 2012,新建项目,选择“MFC 应用程序”,名称为“SolSys”,点击
下一步。对应用程序的类型设置如下(单文档),最后点击完成。
图表 1 应用程序类型
在 类 视图可以看到,向导已为我们生成 7 个 类:CAboutDlg, CCalendarBar,
CMainFrame, COutlookBar, CSolSysApp, CSolSysDoc, CSolSysView。其中 Doc 和 View
两个类可能是我们要改动的,通常情况下其余的类不需要改动。
图表 2 项目类视图
- 2 -