<@乌龟:>[原创]设计自己的3D图像引擎(2): WuguiEngine之项目结构组织
1. 项目文件夹组织:
本引擎中没有把各个源文件放在不同的文件夹之下,只是使用了VS2008的Filter功能,虚拟的分出了一些文件夹,在项目浏览器中可以比较方便的看到
上面的图片是基本的一个组织情况:
Core里面是一些核心的类, 比如说计时器等等
Document里面就是文档了
FX是Shader的代码
Graphics里面是渲染需要的类,里面又有一些文件夹:
Effect是Shader的一些类
Camera是摄像机的一些类
Scene是场景管理相关的
Include里面是将各个Filter里面的头文件分类组合起来,方便引用
这里的这些头文件对应着Filter里面的内容,一个头文件都引用了这个Filter里面的所有头文件.比如说WEExternal类就包含了需要引用外部库函数的时候的类,其内容看起来是这样的:
1: #ifndef _WEEXTERNAL_H2: #define _WEEXTERNAL_H3:
4: #include <map>5: #include <algorithm>6: #include <vector>7: #include <list>8: #include <string>9: #include <iostream>10: #include <iomanip>11: #include <sstream>12:
13: #include <windows.h>14: #include <d3dx9.h>15: #include <math.h>16:
17: #endif另外值得一提的是WuguiEngine.h包含了所有的.h文件,这个类是给外部的逻辑使用的
Interface包含了一些接口,比如说IRenderable, IUpdatable, IDisposed
Input顾名思义就是输入相关的一些类了
IO包含文件系统和读取文件等内容
MainLogic里面是放测试代码的,如果之后需要写游戏也是可以把内容放在这里,Mainlogic里面的代码和游戏引擎是分离的
Math就不用说什么了,什么碰撞检测代码,一些小的数学函数都在这里
UI是给用户看的一些界面,目前只放了一个在屏幕上面写字的类进去
在这些Filter外面的类就是一些杂七杂八的东西了
2. 命名空间组织:
命名空间的组织和Filter的组织是类似的,这里就不说太多了,仅仅列一下代码:
该引擎主要包含下面的命名空间:
WuguiEngine : 引擎的一些最基本的Interface以及头文件
WuguiEngine::Core : 引擎所必须的一些类,比如GameTime等等
WuguiEngine::Graphics : 引擎的图像相关的内容,包括场景管理以及其他的一些实现
WuguiEngine::IO : 引擎输入输出的内容
WuguiEngine::Math : 引擎的数学库
WuguiEngine::Input : 输入相关的一些类
WuguiEngine::MainLogic : 作为引擎实现的一个程序(可以是测试程序)
WuguiEngine::UI : 引擎的界面的内容,包括菜单,显示汉字等等
这篇文章就到此为止了,下一篇文章我将主要写写怎样构建一个可重用的Windows(WEWindow)类以及主要的游戏主循环类BaseGame