基于opengl的立体模型库-毕设论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1前言
1.1选题背景
OpenGL(全称Open Graphics Library)是一个定义了跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)的处理[1]。OpenGL是个专业的三维图形程序接口,是一个功能强大,并且调用方便的底层图形库。
目前,OpenGL仍然是仅有的能够取代微软对3D图形技术的完全控制的接口。它仍然具有很强的生命力,但是Silicon Graphics公司已经不再用任何让微软不悦的方式推广Open GL了,因而它存在较高的风险性。图形程序开发人员是一个有着独立思想的人群,很多开发人员目前仍然在使用OpenGL图形库。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和某些专业应用;所以OpenGL在这些领域任然占据着统治地位。
目前,国内的三维开发技术正处于追赶国外技术的关键时期,从三维程序的创意、策划、研究开发与实现,到软件的运营与维护,都有大量的地方值得我们学习和探究。由于 Linux 操作系统平台的广泛推广,基于Linux 的各种应用软件也在不断壮大,因此基于跨平台的三维图形处理软件开发也越来越受重视。OpenGL是一种独立且与平台无关的三维图形开发库,在各种语言下都能进行主框架开发并结合应用OpenGL 函数都可以开发出三维软件。但是由于框架开发的平台相关性从而使编成的三维图形处理软件无法跨平台编译运行,因此glut + OpenGL 的方式成了一种很好的选择。但是在对复杂框架和各种媒体的支持方面,glut 并不理想。在Linux 下可以采用FLTK 等框架平台技术实现包括按钮在内的比较复杂的框架功能,但是需要专门的Linux 开发环境,众多的Window 环境下的KDE 开发者明显对此无法适从。相反,SDL(Simple DirectMedia Layer)作为免费的跨平台多媒体应用编程接口,已经被人们广泛用于开发二维软件,其优秀的消息框架支持、文件支持和声音支持等都使得它成为能与微软DirectX 匹敌的最为成熟的技术之一。
1.2选题意义
目前,基于OpenGL的三维立体图形软件都是一些有关绘制三维立体图,或者处理三维立体图的软件,对于有些常用的立体图形一到用时就得从新加载到三维立体软件中,没有进行系统的管理。这样一来就给学习和工作带来诸多的时间浪费。
为了解决上面的问题,从而更高效的实现对立体模型的管理应用,我选择了这个软件(基于OpenGL的立体模型库软件开发)作为毕业设计。软件通过OpenGL与ACCESS 数据库相结合,提高对三维立体模型的高效、交互式的管理。
1.3设计思路
针对上面提到的,该软件要通过OpenGL与ACCESS相结合实现高效的、交互式的管理,我想到了下面的的软件设计方案。
首先,该软件分为两大模块。第一个模块就是OpenGL的框架模块。这个模块是通过Visual C++,利用OpenGL的库函数系统编程一个基于OpenGL的三维模型处理窗口框架。在该窗口里面能实现对三维模型的浏览、旋转和缩放。这一部分是该软件的基础部分,也是最底层的框架结构。第二个模块就是ACCESS的数据库管理模块。这个模块是通过ACCESS建立三维立体图形的数据库,并对数据库实现查看、添加和删除。
然后,通过Visual C++编程将OpenGL的三维模型处理窗口模块与ACCESS的数据库管理模块结合起来。这样这个软件就成型了。通过这个软件可以在数据库里面调用三维模型的数据来在OpenGL窗口里面查看三维立体图形,这样就更形象的理解与操作三维立体模型。也可以在窗口上实现智能化、形象化的三维立体模型数据库管理。从而实现更高效、交互式的三维立体模型库的管理。
2设计中所用的软件及接口技术简介
在该软件程序设计共用了三个软件及接口技术:Visual C++、OpenGL、Access。
2.1Visual C++简介
Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序软件。Visual C++是一个功能强大的可视化软件开发工具。自从1993年Microsoft公司推出Visual C++1.0后,随后其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选编程软件。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0操作系统下。所以在实际的软件开发中,更多的是以Visual C++6.0为开发平台。Visual C++6.0不仅是一个C++ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发组件工具包。
2.1.1Visual C++组成部分
Visual C++由三个部分组成:Developer Studio、MFC、Platform SDK。
(1)Developer Studio,它是Visual C++的一个集成开发环境,我们日常工作的99%都是在它上面完成程序开发的,加上它的标题赫然写着“Microsoft Visual C++”,所以很多人都理所当然的认为,那就是Visual C++了。其实不是这样的,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能。其实Developer Studio并不是只用于VC的,它也同样用于VB,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C++,它仅仅只是Visual C++的一个壳子。
(2)MFC,如果从理论上来讲,MFC也不是仅仅专用于Visual C++,Borland C++,C++Builder和Symantec C++同样可以处理MFC。同时,用Visual C++编写代码也并不意味着一定要用MFC,如果可以,用Visual C++中的STL,ATL编写程序也是一样没有限制的。但是,Visual C++很多功能本来就是为MFC打造的,Visual C++中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C++而不用MFC就相当于抛弃了Visual C++中很大的一部分功能。
(3)Platform SDK,这才真正是Visual C++和整个Visual Studio的主要部分,即使我们很少直接的接触到它。大致说来,Platform SDK是以Microsoft C/C++编译器为核心,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,所以这项工作是由CL、NMAKE和其他许许多多命令行程序来完成的。这些