Ogre::Archive::open返回的DataStream相当于一个抽象的可供读(写)的文件。DataStream数据流就代表了一个文件,文件也是以DataStream数据流的形式供用户访问的。DataStream提供了常用的类似于标准文件系统的读写和文件定位方法。Ogre默认实现了四种具体的DataStream:
Ogre默认提供了两种具体的Archive文件系统的实现:
另外,ogre-7z项目还提供了基于7z压缩包的Ogre Archive实现。
各种不同的Archive文件系统由各自对应的ArchiveFactory来创建,这些工厂需要在ArchiveManager管理器中注册,然后就可以通过ArchiveManager::load来获得对应的Archive。有了Archive就可以轻松open得到对应的DataStream了。
Ogre Archive明晰的接口很方便使用,也很容易去写新的包文件插件。自定义Archive路线图:继承Archive实现MyArchive,只在有必要的情况下才继承DataStream实现MyDataStream。然后继承ArchiveFactory简单实现一个MyArchiveFactory,并注册到ArchiveManager,万事大吉。
框架结构:
目前国内很多DIY的引擎都是绑死到封闭的DIY文件系统的。其实可以选择将Ogre的Archive部分抠出来,然后仅实现自己的包文件逻辑部分。