原文地址:http://blog.sina.com.cn/s/blog_6b8a7cc60100lvgw.html

这里说的架构只是从大体上初略描述,

从模块的分布上来看CryEngine3和CryEngine2没有区别,

其主要的dll从文件名就可以看出个大概:

image

这里最有意思的是:

CrySystem.dll、Cry3DEngine.dll、CryRenderD3D9(10).dll、CryRenderNULL.dll

其中CrySystem是引擎和外界交互的接口,从CrySystem中可以获取各个接口,例如:

 

IGame*                   游戏框架;
INetwork*               网络接口;
IRenderer*              Renderer接口;
IInput*                    Input system,鼠标键盘手柄等等
ITimer*                    计时器的各种接口;

IConsole                    这个不是说console平台,而是引擎提供的命令行
IScriptSystem            脚本系统,无需多言
I3DEngine                 3d引擎的接口,这个放到后面细说。
ISoundSystem           声音接口
IMusicSystem            音乐接口,音乐有theme、mood,没有sound那样的衰减等3d概念
IPhysicalWorld          物理世界的接口
IMovieSystem           过场动画
IAISystem                AI系统
IMemoryManager     内存管理器
IEntitySystem           Entity系统,CryEngine3的Entity写的着实精彩
ICryFont                   字体管理接口
ICryPak                    Pak管理接口,CryEngine中使用的pak其实都是zip文件
ILog                         日志,不要小看这个,CryEngine中的日志很好用
ICmdLine                 解析command line
IStreamEngine         流接口
ICharacterManager  人物管理器
IValidator                 用来检查资源错误的接口
IFrameProfileSystem  用于profile的接口,收集一帧中运行的数据
IDiskProfiler               专门用于磁盘io的profile接口
INameTable              名字管理器,CryEngine中有一个专门的名字类SNameEntry。
IBudgetingSystem    预算接口,这个很有意思。可以设置一些限制,例如显存使用限制、fps限制、声音使用的内存限制、占用的时间限制等等。
IFlowSystem             flow graph的接口
IAnimationGraphSystem  AnimationGraph
IDialogSystem          对话系统
IHardwareMouse      主要用于ui中的鼠标指针绘制
INotificationNetwork  network通知接口
IPlatformOS             平台相关的接口,主要是读取保存
ICryPerfHUD            profile时显示的HUD
IFileChangeMonitor  主要用于编辑器
IVisualLog              能够显示在屏幕的log,可以设置颜色字体等
ISystemEventDispatcher  事件分发器,事件包括resize、level读取等等
IProfilingSystem        VTune Profiling interface
IThreadTaskManager  线程任务管理器
IResourceManager   管理读入的level以及pak中的资源

IMaterialEffects*      材质的声音效果
IParticleManager*    例子特效
ILocalMemoryUsage*     局部内存分配器
ICodeCheckpointMgr*    检查代码覆盖的接口
IScaleformGFx*               CryEngine中整合Scaleform的接口

 

从接口上来看I3DEngine中是比较高层次的概念,例如读入天空、读入地形、读入Level、设置水面、海洋高度、设置太阳位置等等这些与绘制无直接关系的概念。

 

而IRender中则不同,IRender中操作的接口都是与渲染密切相关,例如网格、贴图、设置XX矩阵、绘制XXX、设置shader参数、设置后处理参数等等。

 

当然这里只列举了少数接口,还有大量的接口并没有列出来。

ISystem中含有最常用的接口,ISystem将这些接口调用转发给相应的各个接口,相当于一个门面或者说代理。如果要进一步使用高级的功能可以从ISystem中将相应的接口get出来 直接操作。

posted on 2012-07-02 10:58  谭宇(tony)  阅读(836)  评论(0)    收藏  举报