1、此文档收集于网络,如有侵权请联系网站删除 题目:三维画面锯齿处理此文档仅供学习和交流三维画面锯齿处理摘要 随着计算机多媒体技术、可视化技术及图形学技术的发展,我们可以使用计算机来精确地再现现实世界中绚丽多彩的三维物体,并充分发挥自身的创造性思维,通过人机交互来模拟、改造现实世界,这就是目前最为流行的虚拟现实技术。通过这种技术,建筑工程师可以直接设计出美观的楼房模型;军事指挥员可以模拟战场进行军事推演,网民可以足不出户游览故宫博物馆等名胜古迹等。而虚拟现实技术最重要的一部分内容就是三维图形编程。它已经成为一个工业标准的计算机三维图形软件开发接口,并广泛应用于游戏开发、建筑、产品设计、医学、地球科
2、学、流体力学等领域。值得一提的是,虽然微软有自己的三维编程开发工具DirectX,但它也提供OpenGL图形标准,因此,OpenGL可以在计算机中广泛应用。虚拟现实技术是计算机图形学的一个分支。OpenGL 是功能强大的开放式图形库。论文运用OpenGL工具在MFC单文档平台下创建了一个虚拟三维环境,绘制一些常见的三维图形, 并实现消锯齿处理以增加物体的真实感。关键词:系统设计 OpenGL技术 三维图形设计 消锯齿 虚拟现实 The Three-Dimensional graphics Anti-aliasing Abstract With the development of the In
3、ternet and the multimedia technology, visualization technology, Graphics technology, We can accurately emersion the 3D object in the reality world that use computer, and completely exert the creationary thinking of ourselves. Through man-machine conversation to simulate or transform the real world,
4、thats the most fashionably technology of the Virtual Reality. Through this technology, the architect could design the beauty model of building directly; The military commander could imitate battlefield for a sham battle, the web cam could excurse museum,scenic spot and historic resort being confined
5、 at home. And the most important of the Virtual Reality technology is 3D photograph programme.Its become a soft development connection of Industrial standard for computers 3D photograph,and widely utilizes in game design, architecture, porduct design, medicine, geoscience, hydromechanics domain. Wha
6、t is worth mentioning is, although the Microsoft have his own 3D programmer development kit,Directx, he also offer OpenGL photograph standard, so, OpenGL could use in computer widely. Virtual reality technology is a computer graphics branching. OpenGL is the function formidable open style graph stor
7、ehouse. This design implements a virtual three-dimensional environment with OpenGL onMFC single document platform, and draws up some common hypothesized objects, achieve Anti-aliasing processing to increase the realism of the object.Key Word:System design; OpenGL technology; 3D photograph design; An
8、ti-aliasing; Virtual Reality.目 录摘 要IABSTRACTII绪 论11 系统概述21.1课题研究的背景及意义21.2目前国内外相关研究和发展趋向31.2.1可视化是计算机程序设计的发展趋势31.2.1 OpenGL提供直观的三维图形开发环境41.2.1 OpenGL成为目前三维图形开发标准41.3课题研究的内容及技能要求51.4课题开发环境介绍61.4.1环境需求61.4.2 C+语言及其特点61.4.3 OpenGL及其特点71.4.4软硬件要求92 OPENGL实现三维图像显示的基本理论102.1概要设计102.2基本设计概念和流程112.2.1创意说明11
9、2.2.2系统初始化112.2.3对象模型的建立123 三维图像显示锯齿处理技术143.1图像显示产生锯齿原因143.2相关的反走样技术153.2.1过取样技术153.2.2区域取样173.2.3 WU像素反走样214 反走样算法改进234.1多段直线反走样算法234.1.1概述234.1.2算法的设计思想23 4.1.3计算效率分析244.2圆反走样算法244.2.1算法思想244.2.2算法254.3本课题采用的反走样算法累积缓冲区实现反走样254.3.1概述25 4.3.2实现效果27 结 论28参考文献29致 谢30毕业设计(论文)知识产权声明31毕业设计(论文)独创性声明32附录33
10、绪 论计算机图形学是伴随着计算机技术在图形处理领域中的应用而发展起来的一门实践性的学科,是游戏、数字媒体、计算机视觉、图像处理、地理信息系统、计算机辅助设计等专业技术的基础。计算机图形学的应用领域非常广泛,已经渗透到科研、工程、商业、艺术等社会生活和工业生产的几乎一切领域,并与这些领域的发展相互推动和促进。随着计算机软硬件技术的不断进步,人们发现复杂的数据结构以可视的形式加以表达更容易为人们所理解。因此,计算机图形学的研究目标之一便是通过计算机将数据转变为图形,并在有关的设备上以特定的形式加以显示。为了方便这一转换过程,避免不必要的重复劳动,人们设计了各种各样的辅助编程工具,并将它们打包以公共
11、图库的形式加以推介。这些图库的一个共同特点是:都提供了一些标准的点、线、面、体的建模方法以及一些标准的图形变换方法,甚至还提供一些外部图形设备的访问接口。不过,OpenGL走得更远。它除了提供上述通用建模和变换方法之外,更提供了光照处理、反走样、混合、雾化、纹理映射及动画等功能。OpenGL被设计成一个独立于硬件的软件编程接口,适用于多种不同的计算环境,包括个人计算机、图形工作站、超级计算机及多机互连的网络环境。OpenGL应用开发的这种广泛适应性给从事三维图形开发的人员带来的好处是不言而喻的。同时,OpenGL业已成为广大图形开发人员的必备工具。OpenGL是近几年发展起来的一个性能卓越的三
12、维图形平台,OpenGL的显著优点是作为一个独立的工作平台,独立于硬件设备、窗口系统和操作系统,用它编写的软件可以在UNIX、Windows95、Windows98/NT等系统间实现移植,并能在网络环境下以客户/服务器模式工作,专业图形处理、科学计算等高端应用领域的标准图形库。开发者可以在多种硬件平台及操作系统下很方便地利用OpenGL图形库,创建出具有照片质量的、独立于窗口系统、操作系统和硬件平台的三维彩色图形和动画。本课题提出了在MFC(Microsoft Foundation Class) 的框架下来实现MFC和OpenGL函数库结合绘制图形的方法,这种方法有效简化了应用程序与操作系统之
13、间的连接,也符合面向对象的程序设计思想,提高了接口的通用性。1 系统概述1.1 课题研究的背景及意义近年来,随着计算机图形学和计算机技术的发展,计算机可视化技术不断普及,创建虚拟世界也不断掀起热潮,而建立具有真实感的三维场景是建设虚拟世界的重要一步。为了适应未来信息的需要,必须提高人与信息社会的接口能力,提高人们对信息的理解能力。人们不再只要求能够通过人的视觉、听觉、触觉,参与到处理信息环境中去,而获得身临其境的体验。建立一个多维的信息空间,感性认识和理性认识相结合的综合集成环境,而虚拟现实技术将是支撑这个信息空间的关键技术。80年代末、90年代初国际和国内形成对虚拟现实的热潮,为人们带来了一
14、个绚丽多彩的虚拟的计算机视觉世界。 虚拟现实技术(Virtual Reality ,简称VR)是诞生于90年代初的新技术,近年来在技术研究领域十分活跃,它汇集了计算机图形学、多媒体技术、人工智能、人机接口技术、传感器技术等多项关键技术:它是以计算机技术为核心,综合使用了各项最新技术,融合视、听、触觉为一体的模拟现实的三维空间再现技术。图形图像制作技术发展很快,在产品设计、动画、场景漫游等领域都有广泛的应用。本文主要说明了在VC+6.0环境下如何使用OpenGL生成简单的三维图形,并对其进行消锯齿处理。在吸取了计算机图形学、计算机科学、光学等多领域先进理论成果的基础上,系统地论述了基于OpenG
15、L下场景的研究和实现及其相关理论和技术。OpenGL作为一种图形与硬件的接口,与其他图形程序开发工具相比较,它提供了众多图形函数,直观的编程环境简化了三维图形程序。随着3D游戏越来越多的被开发,更多的游戏开发人员选择OpenGL作为开发工具,以简化操作。目前OpenGL已成为三维图形的开发标准。课题采用Windows下VC+的开发平台,以面向对象的编程C+为编程语言,通过调用OpenGL函数,实现三维图形的绘制。其中,通过调用OpenGl函数库实现三维环境的处理,渲染出具有真实感的图形。通过在这次毕业设计,首先对计算机图形学有了新的认识,计算机图形学涵盖的范围很广,其次对计算机图形学研究的一个
16、领域虚拟现实的特点和应用前景作了进一步的介绍。认识到虚拟现实技术在我们现实生活中的作用日益凸现,尤其在实现建筑仿真与漫游系统方面非常突出。最后,通过研究计算机图形学的相关技术和OpenGL图形软件包的编程原理和编程机制,实现了系统的功能。1.2 目前国内外相关研究和发展趋向1.2.1 可视化是计算机程序设计的发展趋势我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体。我们又生活在一个充满信息的世界中,能否尽快地理解并运用这些信息将直接影响事业的成败,所以我们需要用一种最直接的形式来表示这些信息。最近几年计算机图形学的发展使得三维表现技术得
17、以形成,这些三维表现技术使我们能够再现三维世界中的物体,能够用三维形体来表示复杂的信息,这种技术就是可视化 ( Visualization ) 技术。可视化技术使人能够在三维图形世界中直接对具有形体的信息进行操作,和计算机直接交流。这种技术已经把人和机器的力量以一种直觉而自然的方式加以统一,这种革命性的变化无疑将极大地提高人们的工作效率。可视化技术赋予人们一种仿真的、三维的并且具有实时交互的能力,这样人们可以在三维图形世界中用以前不可想象的手段来获取信息或发挥自己创造性的思维。机械工程师可以从二维平面图中得以解放直接进入三维世界,从而很快得到自己设计的三维机械零件模型。医生可以从病人的三维扫描
18、图象分析病人的病灶。军事指挥员可以面对用三维图形技术生成的战场地形,指挥具有真实感的三维飞机、军舰、坦克向目标开进并分析战斗方案的效果。更令人惊奇的是目前正在发展的虚拟现实技术,它能使人们进入一个三维的、多媒体的虚拟世界,人们可以游历远古时代的城堡,也可以遨游浩翰的太空。所有这些都依赖于计算机图形学、计算机可视化技术的发展。人们对计算机可视化技术的研究已经历了一个很长的历程,而且形成了许多可视化工具,其中SGI公司推出的GL三维图形库表现突出,易于使用而且功能强大。利用GL开发出来的三维应用软件颇受许多专业技术人员的喜爱,这些三维应用软件已涉及建筑、产品设计、医学、地球科学、流体力学等领域。随
19、着计算机技术的继续发展,GL已经进一步发展成为OpenGL,OpenGL已被认为是高性能图形和交互式视景处理的标准,目前包括ATT公司UNIX软件实验室、IBM公司、DEC公司、SUN公司、HP公司、Microsoft公司和SGI公司在内的几家在计算机市场占领导地位的大公司都采用了OpenGL图形标准。值得一提的是,由于Microsoft公司在Windows NT中提供OpenGL图形标准,OpenGL将在微机中广泛应用,尤其是OpenGL三维图形加速卡和微机图形工作站的推出,人们可以在微机上实现三维图形应用,如CAD设计、仿真模拟、三维游戏等,从而更有机会、更方便地使用OpenGL及其应用软
20、件来建立自己的三维图形世界。因此,虚拟现实技术便应运而生。虚拟现实(简称VR),又称灵境技术,是以沉浸性、交互性和构想性为基本特征的计算机高级人机界面。他综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。使用者不仅能够通过虚拟现实系统感受到在客观物理世界中所经历的“身临其境”的逼真性,而且能够突破空间、时间以及其他客观限制,感受到真实世界中无法亲身经历的体验。1.2.2 OpenGL
21、提供直观的三维图形开发环境OpenGL实际上是一种图形与硬件的接口。它包括了120个图形函数,开发者可以用这些函数来建立三维模型和进行三维实时交互。与其他图形程序设计接口不同,OpenGL提供了十分清晰明了的图形函数,因此初学的程序设计员也能利用OpenGL的图形处理能力和1670万种色彩的调色板很快地设计出三维图形以及三维交互软件。OpenGL强有力的图形函数不要求开发者把三维物体模型的数据写成固定的数据格式,这样开发者不但可以直接使用自己的数据,而且可以利用其他不同格式的数据源。这种灵活性极大地节省了开发者的时间,提高了软件开发效益。长期以来,从事三维图形开发的技术人员都不得不在自己的程序
22、中编写矩阵变换、外部设备访问等函数,这样为调制这些与自己的软件开发目标关系并不十分密切的函数费脑筋,而OpenGL正是提供一种直观的编程环境,它提供的一系列函数大大地简化了三维图形程序。例如: . OpenGL提供一系列的三维图形单元供开发者调用 . OpenGL提供一系列的图形变换函数 . OpenGL提供一系列的外部设备访问函数,使开发者可以方便地访问鼠标、键盘、空间球、数据手套等这种直观的三维图形开发环境体现了OpenGL的技术优势,这也是许多三维图形开发者热衷于OpenGL的缘由所在。1.2.3 OpenGL成为目前三维图形开发标准在计算机发展初期,人们就开始从事计算机图形的开发。直到
23、计算机硬软件和计算机图形学高度发达的九十年代,人们发现复杂的数据以视觉的形式表现时是最易理解的,因而三维图形得以迅猛发展,于是各种三维图形工具软件包相继推出,如PHIGS、PEX、RenderMan等。这些三维图形工具软件包有些侧重于使用方便,有些侧重于渲染效果或与应用软件的连接,但没有一种三维工具软件包在交互式三维图形建模能力、外部设备管理以及编程方便程度上能够OpenGL相比拟。OpenGL经过对GL的进一步发展,实现二维和三维的高级图形技术,在性能上表现得异常优越,它包括建模、变换、光线处理、色彩处理、动画以及更先进的能力,如纹理影射、物体运动模糊等。OpenGL的这些能力为实现逼真的三
24、维渲染效果、建立交互的三维景观提供了优秀的软件工具。OpenGL在硬件、窗口、操作系统方面是相互独立的。许多计算机公司已经把OpenGL集成到各种窗口和操作系统中,其中操作系统包括UNIX、Windows NT、DOS等,窗口系统有X窗口、Windows等。为了实现一个完整功能的图形处理系统,设计一个与OpenGL相关的系统结构为:其最底层是图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,第五层为应用软件。OpenGL是网络透明的,在客户服务器(Client-Server)体系结构中,OpenGL允许本地和远程绘图。所以在网络系统中,OpenGL在X窗口、Windows或其
25、它窗口系统下都可以以一个独立的图形窗口出现。OpenGL作为一个性能优越的图形应用程序设计界面(API)而适合于广泛的计算环境,从个人计算机到工作站和超级计算机,OpenGL都能实现高性能的三维图形功能。由于许多在计算机界具有领导地位的计算机公司纷纷采用OpenGL作为三维图形应用程序设计界面,OpenGL应用程序具有广泛的移植性。因此,OpenGL已成为目前的三维图形开发标准,是从事三维图形开发工作的技术人员所必须掌握的开发工具。1.3 课题研究的内容和技能要求作为一门新兴学科,可视化技术所研究的内容集中在使抽象的数据呈现出客观世界的缤纷五彩与绚丽多姿。类繁多的信息源产生的大量数据,远远超出
26、了人脑分析解释这些数据的能力。由于缺乏大量数据的有效分析手段,大约有95%的计算被浪费,这严重阻碍了科学研究的进展。为此,美国计算机成像专业委员会提出了解决方法可视化。可视化技术作为解释大量数据最有效的手段而率先被科学与工程计算领域采用,并发展为当前热门的研究领域科学可视化。可视化把数据转换成图形,给予人们深刻与意想不到的洞察力,在很多领域使科学家的研究方式发生了根本变化。可视化技术的应用大至高速飞行模拟,小至分子结构的演示,无处不在。在互联网时代,可视化与网络技术结合使远程可视化服务成为现实,可视区域网络因此应运而生。它是SGI公司在2002年3月提出的新理念。它的核心技术是可视化服务器硬件
27、和软件。科学可视化的主要过程是建模和渲染。建模是把数据映射成物体的几何图元。渲染是把几何图元描绘成图形或图像。渲染是绘制真实感图形的主要技术。严格地说,渲染就是根据基于光学原理的光照模型计算物体可见面投影到观察者眼中的光亮度大小和色彩的组成,并把它转换成适合图形显示设备的颜色值,从而确定投影画面上每一像素的颜色和光照效果,最终生成具有真实感的图形。真实感图形是通过物体表面的颜色和明暗色调来表现的,它和物体表面的材料性质、表面向视线方向辐射的光能有关,计算复杂,计算量很大。因此工业界投入很多力量来开发渲染技术。由于本课题所研究的内容只是基于探计基于OpenGL的三维图形绘制,以及消锯齿处理,所以
28、所要求的技能仅是一门熟练编程语言,如C+,并且,能够使用OpenGL所提供的函数接口,进行简单的图形绘制,并完成反走样算法,实现消锯齿。另外就是能使用一个开发工具,如本课题所采用的VC+。技能要求并不是太复杂,一般的初学者都能够完成。1.4 课题开发环境介绍1.4.1环境需求Visual C+是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用c+的一个开发平台,是微软公司在其Windows操作系统下进行应用程序开发的最重要的产品,是系统级应用开发工具,是运用面向对象思想进行软件项目开发的得力工具。它使得软件开发能够在源码级、类级、控件级等多个级别上重用,不仅加快了软件开发效率,而且
29、提高了软件的可重用性和顽健性。VC基于C,C+语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在 Windows平台无所不能。VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC+不是门语言,虽然它和C+之间有密切的关系,如果形象点比喻的话,可以把C+看作为一种“工业标准”,而VC+则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。VC+应用程序的开发主要有两种模式,一种是WIN
30、API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势。系统在Windows XP/7系统下均可运行,计算机只需安装VC+,并在相应文档中添加OpenGL函数库相关头文件及动态链接文件即可。1.4.2 C+语言及其特点C+它是一种使用非常广泛的计算机编程语言。是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。C+语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语
31、言更容易为人们学习和掌握。C+语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C+编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%20%。C+以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C+完美地体现了面向对象的各种特性,主要有以下特点:1、语句简练、语法结构清晰、紧凑,使用方便、灵活。2、程序结构简单、书写
32、格式自由。3、数据类型丰富、齐全。标准C供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型。C+还增加了类这一特殊数据类型的定义机制。4、运算符丰富、齐全,运算能力强。C提供的运算符分为常规运算和与硬件有关的运算两部分:u 常规运算符算术运算符、逻辑运算符、关系运算符等,这类运算符各种语言一般都具备; u 与硬件有关的运算符位运算符、地址运算符等,这些运算符是C所独有的,体现出汇编语言的某些特征。5、语法限制不太严格,程序自由度大。6、C编译系统生成的目标代码质量高,程序执行效率高。程序可移植性强。语言的通用性较强。C+包含了整个C,因此也继承了C的全部特征和优
33、点,同时添加了对 OOP的完全支持。7、C+语言引入了类与对象机制,包括类的定于,类的继承与派生,类的多态性等。8、C+语言一方面自定义结构类型进行扩充,另一方面也支持新的类构造。1.4.3 OpenGL及其特点OpenGL是用于开发简捷的交互式二维和三维图形应用程序的最佳环境,任何高性能的图形应用程序,从3D动画、CAD辅助设计到可视化访真,都可以利用OpenGL高质量、高性能的特点。OpenGL自1992年出现以来,逐渐发展完善,已成为一个唯一开放的,独立于应用平台的图形标准,一个典型的OpenGL应用程序可以在任何平台上运行-只需要使用目标系统的OpenGL库重新编译一下。 OpenGL
34、非常接近硬件,是一个图形与硬件的接口,包括了100多个图形函数用来建立三维模型和进行三维实时交互。OpenGL强有力的图形函数不要求开发人员把三维物体模型的数据写成固定的数据格式,也不要求开发人员编写矩阵变换、外部设备访问等函数,大大地简化了编写三维图形的程序。例如:1、OpenGL提供一系列的三维图形单元(图元)供开发者调用。2、OpenGL提供一系列的图形变换函数。 3、OpenGL提供一系列的外部设备访问函数,使开发者可以方便地访问鼠标键盘、空间球、数据手套等外部设备。由于微软在Windows中包含了OpenGL,所以OpenGL可以与Visual C+紧密接合,简单快捷地实现有关计算和
35、图形算法,并保证算法的正确性和可靠性。简单地说,OpenGL具有建模、变换、色彩处理、光线处理、纹理影射、图像处理、动画及物体运动模糊等功能: 1、建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体,如球、锥、多面体、茶壶以及复杂曲线和曲面(例如Bezier、Nurbs等曲线或曲面)的绘制函数。 2、变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。 3、颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。 4、光照
36、和材质设置:OpenGL光有辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。客观世界中的物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。 5、纹理映射(Texture Mapping):利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。6、位图显示和图象增强:OpenGL的图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可是被
37、仿真物更具真实感,增强图形显示的效果。7、双缓存动画(Double Buffering):OpenGL使用了前台缓存和后台缓存交替显示场景(Scene)技术,简而言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。8、特殊效果:利用OpenGL还能实现深度暗示( Depth Cue )、运动模糊(Motion Blur)等特殊效果。运动模糊的绘图方式(motion-blured),模拟物体运动时人眼观察所感觉的动感现象。深度域效果(depth-of-effects),类似于照相机镜头效果,模型在聚焦点处清晰,反之则模糊。其工作流程如图1.1:几何顶点数据图像顶点数据显示列表运算
38、器逐个顶点操作纹理映射帧缓冲区光栅化逐个顶点操作和图元组装图像操作图1.1 OpenGL工作流程根据这个流程,我们可以归纳出在OpenGL中进行主要的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基本步骤:1、根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL中把:点、线、多边形、图像和位图都作为基本图形单元)。2、把景物模型放在三维空间中的合适的位置,并且设置视点(viewpoint)以观察所感兴趣的景观。3、计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定光照条件、纹理粘贴方式等。4、把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素,这个
39、过程也就是光栅化(rasterization)。1.4.4软硬件需求u 操作系统:Windows 7/Windows xp/ Windows 2000。u 集成开发环境: VC+ 6.0 Vistual Studio 2008 or Vistual Studio 2010u 开发语言:C+u 分辨率:最佳效果12801024像素。(1024 X 768 亦可)u CPU:M380 2.53GHzu 内存:256MB以上2 OpenGL实现三维图像显示的基本理论2.1 概要设计因为OpenGL与VC+是通过接口程序相连的,所以在实现三维图形的生成及显示时,需要一个应用程序入口;然后要注册窗口类,
40、注册完成后需要创建OpenGL显示窗口;之后便可以进行三维图形的绘制;绘制完成后销毁窗口、注册窗口,整个过程便结束。程序的具体实现框架如图2.1所示是否开始创建opengl显示CreateWindowGL()注册窗口类RegisterWindowcals()初始化opengl绘制程序initialize()循环更新显示并等待消息消息是否退出退出前的扫尾工作Deinitialize()销毁窗口DestroyWindowGL()注销窗口Unregister()WinMain()应用程序入口返回0结束 图2.1 程序流程图应用实例的实现包括以下几个步骤:程序初始化,形体建模,色彩渲染,应用动画。 程
41、序初始化形体建模渲染色彩动画的应用图2.2 工程实现流程图2.2基本设计概念和流程2.2.1创意说明本软件系统的创意来自于互联网上时下流行的3D游戏环境。在游戏场景的畅游过程中,发现各种场景皆可真实如斯,无论是现代城市中的房屋、车辆,还是森林场景中的树木、花草、山峰等皆可实现。对它的细腻的真实感到惊讶,于是,决心实现其中的某些功能。试图实现其三维物体的创造,因此,便产生了本系统。2.2.2系统初始化在InitializeOpenGL()中会创建一个设备上下文(DC),为这个DC选择一个像素格式,创建和这个DC相关的绘制上下文(RC),然后选择这个RC.这个函数会调用SetupPixelForm
42、at()来建立像素格式,调用SetLogicalPalette()设置逻辑调色板。BOOL CDifferentView:SetupPixelFormat()PIXELFORMATDESCRIPTOR pfd = sizeof(PIXELFORMATDESCRIPTOR), / pfd结构的大小 1, / 版本号 PFD_DRAW_TO_WINDOW | / 支持在窗口中绘图 PFD_SUPPORT_OPENGL | / 支持 OpenGL PFD_DOUBLEBUFFER, / 双缓存模式 PFD_TYPE_RGBA, / RGBA 颜色模式 24, / 24 位颜色深度 0, 0, 0,
43、0, 0, 0, / 忽略颜色位 0, / 没有非透明度缓存 0, / 忽略移位位 0, / 无累加缓存 0, 0, 0, 0, / 忽略累加位 32, / 32 位深度缓存 0, / 无模板缓存 0, / 无辅助缓存 PFD_MAIN_PLANE, / 主层 0, / 保留 0, 0, 0 / 忽略层,可见性和损毁掩模 ; int pixelformat;pixelformat = :ChoosePixelFormat(m_pDC-GetSafeHdc(), &pfd);/选择像素格式:SetPixelFormat(m_pDC-GetSafeHdc(), pixelformat, &pfd)
44、;/设置像素格式if(pfd.dwFlags & PFD_NEED_PALETTE)SetLogicalPalette();/设置逻辑调色板return TRUE;2.2.3对象模型的建立在场景模型建立方面,我们选择了3个物体立方体、金字塔、圆球体。其中前两个物体的构造比较简单。代码如下:void CDifferentView:DrawCube()glLoadIdentity(); glTranslatef(0.0f,0.0f,-5.0f);glRotatef(m_xRot,1.0f,1.0f,1.0f);/旋转操作glRotatef(m_yRot,0.0f,1.0f,0.0f);glRota
45、tef(m_zRot,0.0f,0.0f,1.0f);glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D,m_Texture0);/加载纹理glBegin(GL_POLYGON); /前面glTexCoord2f(0,0); glVertex3f(-1.0f,-1.0f,1.0f);glTexCoord2f(1,0); glVertex3f( 1.0f,-1.0f,1.0f)glTexCoord2f(1,1); glVertex3f( 1.0f, 1.0f,1.0f);glTexCoord2f(0,1); glVertex3f(-1.0f, 1.0f,1.0f);glEnd();/其他各面的绘制类似,不再写出glDisable(GL_TEXTURE_2D);规则多面体的绘制比较简单,只需考虑将各个纹理坐标绑定到相应的空间坐标即可,金字塔型不外如此,不再赘述。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100