Demo包括分为两个主要部分:
一、 引擎内核部分
包括:图形(Core_Graphics)内核、系统管理(Core_System)内核、输入(Core_Input)内核、工具箱(Core_Tool)内核四部分(正准备加入声音(Core_Sound)内核)
1、 Core_Graphics图形内核介绍:与图形渲染有关的功能集合。主要包括以下类:
cGraphics类(管理图形设备接口)
cVertexManager类(顶点管理器)
cSkinManager(材质纹理表皮管理器)
cFrustum类(视锥六面体更新可见性检测等封装)
cWorldPosition类(封装3D世界变换操作,内含广告牌技术)
cCamera类(第一人称、第三人称相机封装)
cSprite2D类(自己实现的一个2D贴图类,未使用D3D中精灵接口)
cModel类(自己实现的加载X文件中各种类型数据的模型,并对其操作的模型类。格式包括一般网格的加载、骨骼动画加载、蒙皮骨骼动画加载、带路程数据的动画模型加载。实现中只使用了D3D的XFile接口读取文件数据,数据的组织分析完全自己实现。其下面包括cModelMesh、cModelFrame、cModelAnimSet、cModelRoute、cXFileParserc、XParser等功能类)
cFont类(字体操作封装)
cFPSCounter类(帧数统计)
2、 Core_System系统内核介绍:系统内核处理应用程序的初始化;应用程序流程、进程、状态以及数据包的管理;为游戏提供精确的时间控制和FPS计数等等。主要包括下面几个类:
cApplication类(创建应用程序和控制程序流程接口类)
cStateManager类(使用状态编程SBP法,利用状态栈控制游戏状态的更新切换)
cProcessManager类(同上,控制“进程”更新切换)
cDataPackage类(数据包文件简单存储读取操作的封装)
cTime类(应用程序计时类,类中首选精确计时法,不支持时提供粗略计时法,为游戏提供时间控制和帧数统计)
3、 Core_Input输入内核介绍:让玩家与游戏进行交互。主要包括以下几个类:
cInput类(初始化DirectInput)
cInputDevice类(输入设备管理接口)
cKeyBoard类(键盘接口控制类)
cMouse类(鼠标接口控制类)
cJoystick类(游戏杆接口控制类)
4、 Core_Tool工具箱内核介绍:独立的工具类集。主要包括以下几个类:
cBitmapFile类(自己实现的不同位数的位图文件的加载保存、颜色数据的获取填充等操作)
cAABB类(实现了AABB与AABB的快速相交检测、AABB与射线的快速相交性检测、AABB与平面的快速相交性检测等操作)
二、 地形Demo部分
包括:LOD四叉树地形、地形物体管理、天空、顶点着色器阴影体等部分。
1、 cTerrain类:实现了动态生成高度图数据、动态生成与高度图相应的地形纹理图、动态生成相应的光照纹理图、地形LOD四叉树的动态生成更新、地形相机裁剪等功能。
2、 cTerrainObject类:实现了地形静态物体、动态物体的加载渲染,动态物体的更新,静态物体的四叉树、八叉树的生成和动态相机裁剪,主角和地形上物体的快速碰撞检测等功能。
3、 顶点着色器阴影体:利用顶点着色器实现模型的阴影体形成,使用Z-Fail算法渲染阴影体,加速动态物体阴影的渲染。(注:此部分目前正在编写中,未完全实现)
注:本引擎是本人边学习边编写的,代码的结构和思想主要参考了一下书籍:
一、《DirectX9.0 3D 游戏开发编程基础》
二、《Focus On 3D Terrain Programming》(地形部分)
三、《3D Game Engine Programming》(内核图形引擎部分)
四、《DirectX 角色扮演游戏编程》(内核结构框架)
五、《DirectX高级动画制作》(内核模型部分)
六、《DirectX 实时渲染技术详解》(阴影体等)
七、《Visual C++/DirectX9 3D游戏开发引导》(地形部分)
八、其它一些参考书籍