1. 項目文件夾組織:
本引擎中沒有把各個源文件放在不同的文件夾之下,只是使用了VS2008的Filter功能,虛擬的分出了一些文件夾,在項目浏覽器中可以比較方便的看到
上面的圖片是基本的一個組織情況:
Core裡面是一些核心的類, 比如說計時器等等
Document裡面就是文檔了
FX是Shader的代碼
Graphics裡面是渲染需要的類,裡面又有一些文件夾:
Effect是Shader的一些類
Camera是攝像機的一些類
Scene是場景管理相關的
Include裡面是將各個Filter裡面的頭文件分類組合起來,方便引用
這裡的這些頭文件對應著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