计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

基于XML脚本驱动的DirectX游戏引擎(一)信息工(3)

2013-05-11 18:00
导读:游戏厂商所购买。并且一次授权只能用于一款游戏,就是说同一厂商要开发两款游戏就必须购买两次授权,可见其商业价值不可估量。 基于DirectX 的游戏引
游戏厂商所购买。并且一次授权只能用于一款游戏,就是说同一厂商要开发两款游戏就必须购买两次授权,可见其商业价值不可估量。

基于DirectX 的游戏引擎概述

2.1  游戏引擎开发目标和结构描述

 本游戏引擎基于Microsoft DirectX 9C SDK的基础上,探讨和分析了自制3D游戏此外,本游戏引擎还具有魔法系统类(CMagic)、地形自动生成系统类(CTerrain)、游戏环境渲染系统类、粒子系统类、用户事件响应系统、DirectX 3D异常类(D3DException)、3DSMAX 模型对象驱动控制类。考虑到实际运行的需要,本引擎还支持游戏对象动态生成。以上的所有系统,都进行了面向对象的封装,使得和游戏引擎的框架(DXUT)、脚本解析引擎完美的融合在一起。

 2.2  Microsoft DXUT框架简介

         本游戏引擎是运行在DXUT框架的基础上,DXUT是微软为了简化DirectX在Win32平台下的开发而实现的一套框架。由于该框架较为复杂,本着实用为主的精神,本人对其中重要的部分进行了打包,包名为Microsoft。下面我就对DXUT中的一些重要的函数和整个框架调用API的顺序进行一个简单介绍。
     程序启动:InitApp →MsgProc →IsDeviceAcceptable →ModifyDeviceSettings OnCreateDevice →OnResetDevice → 渲染主循环  
     渲染主循环: OnFrameMove → OnFrameRender  
     改变设备:   ModifyDeviceSettings → OnLostDevice →根据需要调用
 OnDestroyDevice → OnResetDevice → 渲染主循环  
     程序退出:   OnLostDevice →OnDestroyDevice  
 
 下面是DXUT下各函数的作用: 
 InitApp 初始化一些图形控件和GUI的消息处理函数  (科教作文网http://zw.nseAc.com)
OnCreateDevice     创建设备时的回调函数,用于创建D3DPOOL_MANAGED资源 
OnResetDevice      重设设备时的回调函数,用于创建D3DPOOL_DEFAULT资源 
OnFrameMove      动画实现处,常用于矩阵转换等操作 
OnFrameRender      渲染实现处,常用于渲染场景 
OnLostDevice       设备丢失时的回调函数,释放由OnResetDevice创建的资源 
OnDestroyDevice     设备析构时的回调函数,释放由OnCreateDevice创建的资源 
IsDeviceAcceptable   创建设备时用来对所有可用设备进行过滤的函数 
ModifyDeviceSettings 更改设备时的回调函数,用于实现更改设备时所需做的其他操作 
MsgProc            安排各空件处理消息的顺序 
OnGUIEvent         程序控件绑定的消息处理回调函数 

掌握了以上的基本函数后,就可以把游戏引擎中的一些函数架设在此基础之上了。

 

 

 

 

 

 

 

  游戏引擎开发包D3DUtility简介

 D3DUtility开发包是本游戏引擎的核心部分,里面封装的许多类库,提供给DXUT框架调用,下面展现一下该工具包的具体内容。更加详细的UML建模,参看附件的Tiny.gif。
 
CMagic:是负责魔法系统的基类,它的派生类是CCrystalMagic、CBlazeMagic。
CCrystalMagic:产生水晶魔法效果的类。
CBlazeMagic:产生火焰魔法效果的类。
DirectX3DObject:是D3D对象的基类,它的派生类是DirectX3DDotXObject。
 ID3DObjectFactory:是负责产生D3D对象的工厂类,是一个接口,D3DDotXFactory实现了它。 (科教作文网 zw.nseac.com整理)
 IControlDirectX3DObject:是负责控制D3D模型对象具有的抽象行为,它是一个接口。
 DirectX3DDotXObject:是用来驱动和控制3DSMAX模型对象的类,它实现了IControlDirectX3DObject,且从DirectX3DObject派生而来。
 ……………………………….
 
  游戏引擎文件的组织结构

 本引擎的文件组织参考了Java包结构的组织形式,结构清晰易于管理。主要有D3DUtility包和Microsoft包,Microsoft包中打包好了DXUT框架下的常用类库,最后是主文件D3DMain.cpp和stdafx.h。
 

一款基于DirectX 游戏引擎的实现及主要类库说明

3.1  开发环境
IDE:Microsoft Visual Studio 2005 Professional Edition (Visual C++ 2005)
DirectX SDK:Microsoft DirectX 9C SDK
游戏引擎脚本IDE:XMLSpy
建模工具:Rational Rose 2003
Windows Platform:Windows XP (Service Pack 2)

3.2  游戏引擎功能描述
 初步实现了用鼠标控制人物模型的移动(基于骨骼模型驱动),绚丽的魔法效果,地形的自动生成,灵活的视角移动。驱动3DSMAX模型文件(.x)的功能,及其对模型文件进行控制响应,同时还配备一个游戏脚本解析引擎。下面就争对该引擎在设计过程中的几个重要类进行一下简单的介绍。

  工

上一篇:机电一体化的发展与应用 (一)信息工程毕业 下一篇:没有了