欢迎来到天天文库
浏览记录
ID:14122693
大小:46.00 KB
页数:8页
时间:2018-07-26
《基于mfc和opengl三维图形的开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于MFC和OpenGL三维图形的开发匡天君滕远道王乘徐明毅(华中科技大学数字化工程中心,湖北武汉430074)摘要:本文介绍了OpenGL的基本概念,通过对三维动态球体模型的具体分析,详细讨论了如何利用OpenGL函数库在MFC中实现三维绘图。关键词:OpenGL;MFC;三维;设备描述表(DC);绘制描述表(RC)中国分类号:TP391.41文献标识码:A3DGraphicsBasedonMFCandOpenGLKUANGTian-jun,TENGYuan-dao,WANGCheng,XUMing-yi(D
2、igitalEngineeringResearchCenter,HUST,HuBeiWuHan430074,China)Abstract:ThispaperdescriblesthebasicconceptsofOpenGL。Andhowtoimplementthree-dimentsionsimagesinMFCusedOpenGLisalsoparticulararguedthroughanthree-dimentsionsdynamicalspherespecificanalyzed。Keywords:O
3、penGL;MFC;3D;DC;RC引言随着三维图形的应用愈来愈广泛,计算机图形学的发展也越来越迅速。那么如何快速实现三维图形的计算可视化,仿真可视化呢?OpenGL即可作为主要途径之一。OpenGL作为一种硬件图形的软件接口,其优点是作为一个独立的工作平台,独立于硬件设备、窗口系统和操作系统,用它编写的软件可以在Unix、Windows98/NT等系统间移植。但是现在很多有关OpenGL的书中的程序都是使用标准C调用OpenGL函数实现的,这样做使得它缺乏面向对象能力,不符合当前流行的软件设计思想。因此我们需
4、要借助一个“窗口”系统来完成OpenGL三维图形的制作。众所周知,VisualC++中MFC包含了强大的基于Windows的应用框架,提供了丰富的窗口和事件管理函数,已经成为当前一种比较流行的工作平台。于是我们可以选用MFC调用OpenGL函数来进行三维图形的开发。现在以三维动态球体模型来讲述MFC中的OpenGL编程1.基本思想在Windows98/NT平台下,GDI是原始窗口的图形接口。而GDI实现这些是通过一个设备描述表DC来实现的。现在通过OpenGL绘图需要创建绘图描述表RC。但是RC并不能直接完成绘
5、图,只能与特定的DC联系起来,从而完成具体的绘图工作。最后要注意释放RC和DC。2.编程步骤第一步,设置开发环境现在以Windows2000为例,首先将glu.dll,glu32.dll,glut.dll,glut32.dll,opengl32.dll文件拷贝到操作系统WINNT/System32目录下,将gl.h,glaux.h,glu.h,glut.h拷贝到MicrosoftVisualStudio/VC98/Include/GL目录中中,将glaux.lib,glu32.lib,glut32.lib,op
6、engl32.lib拷贝到MicrosoftVisualStudio/VC98/Lib目录中;然后在编译程序的时候选择Project
7、Setting菜单,在Link标签中的Object/librarymodules编辑框中输入“opengl32.lib,glut32.lib,glu32.lib,glaux.lib”。到这时候环境就建立好了,可以进行下面的具体编程工作。第二步,具体编程本实例采用基于对话框的工程。至于用单文档方式和多文档方式其编程原理是一样的,这里不再作单独介绍。2.1创建项目文件。选择File
8、
9、New菜单项,新建一个基于对话框的项目文件MyDlgOpenGL;2.2修改对话框模板。删除对话框中的静态文本,调整控件的位置。2.3创建新类,添加消息映射。选择View
10、ClassWizard菜单项,打开MFC对话框,在AddClass之中选择New,以便添加一个新类COpenGL,且该类的基类选择genericCWnd;最后利用MFCClassWizard为COpenGL类添加消息WM_CREATE,WM_PAINT的映射。2.4添加代码。2.4.1定义像素格式,创建OpenGL显示。在OpenGL能够在一
11、个绘图对象中绘图之前,该绘图对象必须初始化。为此引入像素格式的概念。像素格式能告诉OpenGL是否使用双缓存,颜色模式,颜色位数,深度位数等等重要信息。它由一个被称作PIXELFORMATDESCRIPTOR的所描述。于是定义在OpenGL.h中定义函数intMySetPixelFormat(HDChdc)。然后在OpenGL.cpp文件中加入如下代码:intCOpenGL::MySe
此文档下载收益归作者所有