引擎设计跟踪(二)
2010-06-18 10:21
381 查看
这次主要说说引擎的配置系统的设计.借鉴了Ogre的启动配置思想.只不过Ogre的只能配置渲染系统,我的这个...请看:
IConfig<---->IConfigManager<--------->IConfigDialog-------->MFCConfigDialog
|
+------------->GameGUIConfigDialog(未实现)
如上ASCII示意图,这样的设计优点很明显,因为接口最小化,所以只需要实现不同的Dialog就OK.你甚至可以写一个GtkConfigDialog,或者干脆来个WxConfigDialog或者QtConfigDialog,我只是比较熟悉MFC...
计划以后添加游戏GUI,比如CEGUI,最后再加上CEGUIConfigDialog.
可以将不同Config注册给ConfigManager,也可以将不同的ConfigDialog注册给ConfigManager
以实现配置参数和配置界面的分离.
有图有真相:
(另:对于上图的配置,我起初是把分辨率和全屏放在window配置里了,可以放在Graphics配置中比较好)
用MFC做的类似树状的结构:
用CListCtrl做的,有点像.NET的Property Grid
IConfig则使用了GOF Composite Pattern,所以IConfig可以是树状配置.
IConfig<---->IConfigManager<--------->IConfigDialog-------->MFCConfigDialog
|
+------------->GameGUIConfigDialog(未实现)
如上ASCII示意图,这样的设计优点很明显,因为接口最小化,所以只需要实现不同的Dialog就OK.你甚至可以写一个GtkConfigDialog,或者干脆来个WxConfigDialog或者QtConfigDialog,我只是比较熟悉MFC...
计划以后添加游戏GUI,比如CEGUI,最后再加上CEGUIConfigDialog.
可以将不同Config注册给ConfigManager,也可以将不同的ConfigDialog注册给ConfigManager
以实现配置参数和配置界面的分离.
有图有真相:
(另:对于上图的配置,我起初是把分辨率和全屏放在window配置里了,可以放在Graphics配置中比较好)
用MFC做的类似树状的结构:
用CListCtrl做的,有点像.NET的Property Grid
IConfig则使用了GOF Composite Pattern,所以IConfig可以是树状配置.
相关文章推荐
- 引擎设计跟踪 地形LOD的改进
- 引擎设计跟踪(九.14.2f) 最近更新: OpenGL ES & tools
- 引擎设计跟踪(九.7) Gizmo helper
- 引擎设计跟踪(四)
- 引擎设计跟踪(五)
- 引擎设计跟踪(九.11) 资源管理设计备忘
- 引擎设计跟踪(九.14.2h) 开发计划
- 引擎设计跟踪 ShadowMap 细节和分析
- 引擎设计跟踪(九.14) 更新记录和骨骼动画导出
- 引擎设计跟踪(六)
- 引擎设计跟踪(九.2) 3DS MAX 导出插件 继续
- 引擎设计跟踪(九.14.3) deferred shading 准备
- 引擎设计跟踪(九.14.3.3) Deferred shading的一些小细节
- 引擎设计跟踪(三)
- 引擎设计跟踪(九.3) 多视图:基本工具菜单完成
- 引擎设计跟踪(九.14.3.1) deferred shading: Depthstencil as GBuffer depth
- 引擎设计跟踪(九.14.2g) 将GNUMake集成到Visual Studio
- 引擎设计跟踪(七) Mile sone 1: terrain 基本完成
- 引擎设计跟踪(九.13) 跨平台输入系统的畅想
- 引擎设计跟踪(九.14.2 final) Inverse Kinematics: CCD 在Blade中的实现