ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:1.68MB ,
资源ID:3095397      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3095397.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(26基于OpenGL的3d游戏的设计与实现Word格式文档下载.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

26基于OpenGL的3d游戏的设计与实现Word格式文档下载.docx

1、OpenGL;Visual Studio 2005AbstractWith computers in every household, people are demanding more and more computer games, whereas the 3D game is to meet the needs of people in this area. People on the game screen, animation is realistic, easy to operate and game ideas, more and more emphasis on storyli

2、ne. Many large-scale 3D game produced in most foreign countries, while domestic production of the current 3D game is not mature enough yet, especially the fidelity of the game screen, there are the production thought the game, and gameplay are still enough . In recent years,domestic production of 3D

3、 games are slowy on the track,in this context to increase the production of the game on the train personnel,and strive to be like”WOW”,the same level of 3d gaming. Current openGL game screen area to achieve its effect is one of the mainstream. This issue is based on Visual Studio 2005 platform, 3D g

4、ame, although some simple procedures, but this is the basis for creating complex 3D games. This game is mainly composed of four parts: angle control, sky, ground and model loading. First of all, necessary to establish the basis of some system files, such as the various header files included in a col

5、lection of files Stdafx, to facilitate other documents call the function library file (such as the OpenGL library, math library files, etc.). On this basis, the establishment of a number, such as font type (group to be used to display numbers), vector type, bitmap loading basic framework of classes

6、and system classes and other systems necessary to run some basic classes. The establishment of a good run these games must have some basic classes, we can create the sky type, terrain type of the. Then these two files with a SkyAndTerrain encapsulate. Key words: computer; the 3d games; OpenGL; Visua

7、l Studio 20051 OpenGL概述OpenGL作为一个性能优越的图形应用程序设计界面(API)适合于广泛的计算机环境,从个人计算机、工作站到超级计算机,OpenGL都能实现高性能的三维图形功能。由于许多在计算机界具有领导地位的计算机公司纷纷采用OpenGL作为三维图形应用程序设计界面,OpenGL应用程序具有广泛的移植性。OpenGL已成为目前的三维图形开发标准。OpenGL(OpenGL Graphics Library,开发性图形库)是目前用于开发可移植的、可交换的2D和3D图形应用程序的首选环境,是行业领域中最为广泛接纳的2D/3D图形API,也是目前应用最为广泛的计算机图形

8、标准,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。通过对OpenGL的特点、功能、工作流程和绘图流程的学习,我们将会对OpenGL有一个初步的了解,建立起基本的概念。1.1 OpenGL的特点及功能OpenGL作为一个性能优越的图形应用程序设计界面,具有以下几个特点,如图1.1所示图1.1 OpenGL特点1.1.1 OpenGL的特点 1图形质量高、性能好:在CAD/CAM/CAE、医学图像处理、虚拟实现、娱乐、广告等不同领域中,开发人员可以利用OpenGL的这些能力自由发挥自己的创造力。标准化:OpenGL是唯一真正开放的、独立于供应商的跨平台的图形标准。稳定性:Open

9、GL已经在各种平台上应用多年,它具有明确而控制良好的规范,并具有向后兼容性,使现有的应用程序不会失效。可靠性和可移植性:利用OpenGL技术开发的应用图形软件与硬件无关,只要硬件支持OpenGL API 标准就可以了,也就是说,OpenGL应用可以运行在支持OpenGL API标准的任何硬件上。可扩展性:通过OpenGL扩展机制,可以利用API进行功能扩充。如今,许多OpenGL开发商在OpenGL核心技术规范的基础上,增强了图形绘制功能,从而使O+能紧跟最新硬件发展和计算机图形绘制算法的发展。对于硬件特性的升级可以体现在OpenGL扩展机制及OpenGL API 中,一个成功的OpenGL扩

10、展会被融入在未来的OpenGL版本中。可缩放性:基于OpenGL的应用程序可以在各种平台上运行。易用性:OpenGL具有良好的结构、直观的设计和逻辑命令。与其他的图形程序包相比,OpenGL应用程序的代码行数少。此外,OpenGL封装了有关基本硬件信息,使开发人员无须针对具体的硬件进行专门的设计。灵活性:尽管OpenGL有一套独特的图形处理标准,但各平台开发商可以自由地开发适合各自系统的OpenGL执行实例。在这些实例中,OpenGL功能可由特定的硬件实现,也可用纯软件例程实现,或者以软硬件结合的方式实现。1.1.2 OpenGL的七大功能如图1.2所示:图1.2 OpenGL功能各功能说明如

11、下:建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球,锥,多面体,茶壶等),以及复杂曲线和曲面(例如Bezier、Nurbs等曲线或曲面)绘制函数。变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比、镜像4种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引模式(Color Index)模式。纹理映射(Texture Mapping):利用OpenGL纹理映射功能可以十分逼真的表现物体表面细节。光照和材质设置:OpenGL光有辐射光(Emitte

12、d Light)、环境光(Ambient Light)、慢反射光(Biffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是红、绿、蓝、分量与材质红、绿、蓝分量的反射率相乘后形成的颜色。双缓存动画(Double Buffering):双缓存即前台缓存和后天缓存。后台缓存计算场景、生产动画,前天缓存显示后台缓存已经画好的画面。特殊效果:利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)、融合(Blending)、反走样(Antialiasing)和雾(Fog)等特殊效果。运动

13、模糊和绘图方式(motion-blured),模拟物体运动时人眼观察说感觉的动感现象。深度域效果(depth-of-effects)类似于照相机的镜头效果,模型在聚焦点处清晰,反之则模糊。1.2 OpenGL工作流程OpenGL被设计成独立于硬件、以流水线的方式工作,工作流程图如图3所示图1.3 OpenGL工作流程图OpenGL工作流程的输入端可以是图像或几何图元,但最终结果都是光栅化后的图像。这些图像进入帧缓冲区后,由硬件显示在输出设备上。OpenGL的所有绘图对象(包括几何图元和图像)既可以存储在显示列表中(延迟模式),也可以立即处理(立即模式)。对于图像,OpenGL首先通过像素解包把

14、其像素格式转换成OpenGL内部格式,然后通过像素操作后直接光栅化输出或者作为其他物体的表现纹理。对于几何图元,OpenGL中的所有图元都是用顶点来描述的。OpenGL首先通过顶点解包将不同格式的顶点转化为内部的标准格式,然后对顶点及相关数据(坐标、颜色、法向量、纹理坐标、边标识等)进行操作,在进行光栅化,最终得到可见的图像。1.3 OpenGL绘图流程OpenGL的绘图流程如图1.4所示图1.4 OpenGL绘图流程图设置像素格式:主要包括建立OpenGL绘制风格、颜色模式、颜色位数、深度位数等。建立景物模型:根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述。在OpenGL中把点

15、、线、多边形、图像和位图都作为基本图形单元。舞台布景:把景物模型放在三维空间中合适的位置,并且设置视点(Viewpoint)以观察所感兴趣的景观。效果处理:设置物体对象的材质(颜色、光学性能及纹理映射等 ),加入光照和光照条件。光栅化:把景物模型的数学描述及其色彩信息转换至可在计算机上显示的像素信息,这个过程就是光栅化(rasterization)。2 系统分析与设计2.1系统结构总框架设计本游戏系统主要分成四大模块,这些模块又是由若干个子模块构成的,形成一个功能明确的游戏系统。系统结构总框架设计如图2.1所示:头文件类向量类基础类的实现窗口类位图载入类视角控制3D游戏模型数据读取模型载入模型

16、调用图2.1系统结构图2.2系统目的玩家以第一人称视角观察周围环境,并可以进行旋转视角,前后移动等操作。3 OpenGL的配置3.1程序运行环境的配置 在建立程序框架前首先要下好OpenGL库文件,把解压好的库文件分别按如下路径放到文件夹里, 对于VS2005可以如下设置21、把 glut.h 复制到 VC 安装路径下的 PlatFormSDKincludegl 文件夹2、把 glut32.lib 复制到 VC 安装路径下的 PlatFormSDKlib 文件夹3、把 glut32.dll 复制到 WindowsSystem32 文件夹4、在 VC 中创建控制台应用程序,在选项中清除“使用预编

17、译头”(以免影响可移植性)5、在 VC 中打开项目-属性对话框进行如下设置:将“配置”下拉框选则为“所有配置”,打开 “链接器-输入”项。在“附加依赖项”中增加:OpenGL32.lib glu32.lib glut32.lib4 基础类的实现4.1头文件包含类Stdafx 在Stdafx.h中包含了常用的头文件,以方便其他文件的调用,这样就不用每个用到如下头文件的文件都去写这些头文件了。常用头文件:#include stdio.hmath.htime.hgl头文件:glgl.h glglu.hglglaux.hglglext.hOpenGL链接库文件:#pragma comment(lib,

18、 opengl32.lib) glu32.lib) glaux.lib)另外还进行了用算符重载的操作 定义地面网格:const unsigned int MAP_WIDTH = 1024; /位图的宽度 const unsigned int CELL_WIDTH = 16; /单元格的宽度4.2 向量类Vector主要计算向量的点积和叉积(详细参考附录)算法的代码实现为:点积: float Vector3:dotProduct(const Vector3& v) return ( x * v.x + y * v.y + z * v.z );叉积:Vector3 Vector3:crossPro

19、duct(const Vector3& Vector3 vec; vec.x = y * v.z - z * v.y; vec.y = z * v.x - x * v.z; vec.z = x * v.y - y * v.x; return vec;4.3 窗口类GLWindow4.3.1 窗口类概述 任何一个Windows程序都必须处理设备描述表(Device Context),它告诉Windows怎样在一窗口中显示图形信息。一个设备描述表(DC)说明了笔和画刷的颜色绘制模式,调色盘信息,映射模式,以及其他Windows必须知道的怎样显示图形的属性。与其他的Windows应用程序一样,Ope

20、nGL应用程序也必须应用DC。不过我们将其称为着色描述表(Rendering Context,RC),由它通知Windows在窗口中绘制图形。每一个OpenGL都被连接到一个RC上。RC将所有的OpenGL调用命令连接到DC上,应用程序必须在绘图之前调用专用函数wglCreateContext()创建自己的RC,调用wglMakeCurrent使其当前化,退出OpenGL时使RC非当前化。4.3.2 GLWindow.h及GLWindow.cpp主要要完成窗口的设置:int m_WindowPosX; /* 窗口的左上角的X位置*/int m_WindowPosY; /* 窗口的左上角的Y位置

21、*/int m_WindowWidth; 窗口的宽度*/int m_WindowHeight; 窗口的高度*/int m_ScreenWidth; 全屏的宽度*/int m_ScreenHeight; /* 全屏的高度*/int m_BitsPerPixel; /* 颜色位深*/bool m_IsFullScreen; 是否全屏*/以及设置像素格式,设置像素格式首先要填充PIXELFORMATDESCRIPTOR结构,其默认设置如下PIXELFORMATDESCRIPTOR pfd = /* 设置像素描述结构*/ sizeof(PIXELFORMATDESCRIPTOR), /* 像素描述结构

22、的大小*/ 1, /* 版本号*/ PFD_DRAW_TO_WINDOW | /* 缓存区的输出显示在一个窗口中*/ PFD_SUPPORT_OPENGL | /* 缓存区支持OpenGL绘图*/ PFD_STEREO | /* 颜色缓存区是立体缓存*/ PFD_DOUBLEBUFFER, /* 颜色缓存区是双缓存*/ PFD_TYPE_RGBA, /* 使用RGBA颜色格式*/ m_BitsPerPixel, /* 颜色缓存区中颜色值所占的位深*/ 0, 0, 0, 0, 0, 0, /* 使用默认的颜色设置*/ 0, /* 无Alpha缓存*/ 颜色缓存区中alpha成分的移位计数*/ 无

23、累计缓存区*/ 0, 0, 0, 0, /* 累计缓存区无移位*/ 32, /* 32位深度缓存*/ 无蒙版缓存*/ 无辅助缓存区*/ PFD_MAIN_PLANE, /* 必须为PFD_MAIN_PLANE,设置为主绘图层*/ 0, /* 表示OpenGL实现所支持的上层或下层平面的数量*/ 0, 0, 0 /* 过时,已不再使用*/;4.4 位图载入类CBMPLoader4.4.1 BMP图像文件格式3BMP是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4b

24、it、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。典型的BMP图像文件由三部分组成:位图文件头数据结构,它包含BMP图像文件的类型、显示内容等信息;位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息。BMP 是(Windows 位图 ) Windows 位图可以用任何颜色深度(从黑白到 24 位颜色)存储单个光栅图像。Windows 位图文件格式与其他 Microsoft Windows 程序

25、兼容。它不支持文件压缩,也不适用于 Web 页。 从总体上看,Windows 位图文件格式的缺点超过了它的优点。为了保证照片图像的质量,请使用 PNG 、JPEG、TIFF 文件。BMP 文件适用于 Windows 中的墙纸。优点:BMP 支持 1 位到 24 位颜色深度。BMP 格式与现有 Windows 程序(尤其是较旧的程序)广泛兼容。缺点: BMP 不支持压缩,这会造成文件非常大。 BMP 文件不受 Web 浏览器支持。4.4.1位图载入类CBMPLoader流程图如图4.1所示:图4.1 位图载入类流程图4.5 基本框架的组成键盘类和程序框架类(GLFrame):键盘类:class

26、Keys public: Keys() Clear(); /* 构造函数*/void Clear() ZeroMemory(&m_KeyDown, sizeof(m_KeyDown); /* 清空所有的按键信息*/bool IsPressed(unsigned int key) return (key MAX_KEYS) ? (m_KeyDownkey = true) : false; /* 判断某个键是否按下*/void SetPressed(unsigned int key) if (key MAX_KEYS) m_KeyDownkey = true; /* 设置某个键被按下*/void

27、SetReleased(unsigned int key) if (key MAX_KEYS) m_KeyDownkey = false; /* 设置某个键被释放*/private: static const unsigned int MAX_KEYS = 256; bool m_KeyDownMAX_KEYS; /* 保存各按键的状态*/在继承类中完成以下函数的实现GLApplication * GLApplication:Create(const char * class_name) /创建子类的一个实例 bool Init(); /执行所有的初始化工作,如果成功函数返回truevoid Uninit(); / 执行所有的卸载工作 void Update(DWORD milliseconds); /执行所有的更新操作,传入的参数为两次操

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2