<@乌龟:>[原创]设计自己的3D图像引擎(2): WuguiEngine之项目结构组织

1. 项目文件夹组织:

本引擎中没有把各个源文件放在不同的文件夹之下,只是使用了VS2008的Filter功能,虚拟的分出了一些文件夹,在项目浏览器中可以比较方便的看到

image

上面的图片是基本的一个组织情况:

Core里面是一些核心的类, 比如说计时器等等

Document里面就是文档了

FX是Shader的代码

Graphics里面是渲染需要的类,里面又有一些文件夹:

image

    Effect是Shader的一些类

    Camera是摄像机的一些类

    Scene是场景管理相关的

Include里面是将各个Filter里面的头文件分类组合起来,方便引用

image

    这里的这些头文件对应着Filter里面的内容,一个头文件都引用了这个Filter里面的所有头文件.比如说WEExternal类就包含了需要引用外部库函数的时候的类,其内容看起来是这样的:

   1: #ifndef _WEEXTERNAL_H
   2: #define _WEEXTERNAL_H
   3:  
   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

posted on 2009-08-23 16:47  乌龟_毛驴  阅读(2008)  评论(3编辑  收藏  举报

导航