在Ogre中加载自己的资源包
转自:http://www.cnblogs.com/minggoddess/archive/2011/02/19/1958472.html
由于数据保护的需要,一款游戏一般都会有自己独有的资源包,这样做既有利于知识产权的保护,又减少了磁盘碎片的产生。Ogre本身是支持的Zip包的,但Zip包不具要资源保护的特性,随便用个winrar就可以把资源打开并导出,这样就失去了数据保护的意义。
现在假设你的操作资源包的API已经完成,下一步需要集成到OGRE中去,那么该怎么做呢,
大致我机械式的列出下面几步,照着做一般就不会错。
1. 继承Ogre::Archive 派生出新的,假设派生出 Ogre::XXXArchive
2. Ogre::XXXArchive 中实现下面的虚函数bool isCaseSensitive(void)
void unload()
DataStreamPtr open(const String& filename)
StringVectorPtr list(bool recursive = true )
FileInfoListPtr listFileInfo(bool recursive = true )
StringVectorPtr find(const String& pattern, bool recursive = true)
FileInfoListPtr findFileInfo(const String& pattern, bool recursive = true)
bool exists(const String& filename)
3. 继承Ogre::DataStream 派生出新的, 假设派生出 Ogre::XXXDataStream
4. Ogre::XXXDataStream 中实现下面的虚函数
void skip(long count);
void seek( size_t pos );
size_t tell(void) const;
bool eof(void) const;
void close(void);
5. 继承 Ogre::ArchiveFactory 派生出新的, 假设派生出 Ogre::XXXArchiveFactory
6. Ogre::XXXArchiveFactory 中实现下面虚函数
Archive* createInstance( const String& name )
7. 在OgreRoot.h 中注册我们新的资源包的加载
在private成员中加入一个新的变量
代表你新的资源包的创建工厂
8. 在OgreRoot.cpp 中加入相关代码
在
ArchiveManager::getSingleton().addArchiveFactory( mZipArchiveFactory );
两句代码的下面加上,注册我们资源包的代码
ArchiveManager::getSingleton().addArchiveFactory( mXXXArchiveFactory );
关于XXXArchive, 和 XXXDataStream 的编写,可以参照 ZipArchive 和 ZipDataStream 照葫芦画瓢来做。
在Ogre中加载自己的资源包的更多相关文章
- Arcmap中加载互联网地图资源
本文转载自:http://blog.3snews.net/space.php?uid=6955280&do=blog&id=67981 前一段时间想在Arcmap中打开互联网地图中的地 ...
- [转]在Arcmap中加载互联网地图资源的4种方法
转自http://blog.3snews.net/space.php?uid=6955280&do=blog&id=67981 前一段时间想在Arcmap中打开互联网地图中的地图数据, ...
- 在Arcmap中加载互联网地图资源的4种方法
前一段时间想在Arcmap中打开互联网地图中的地图数据,如影像数据.基础地图数据等,经过简单研究目前总结了四种方法,整理下与大家分享,有些内容可能理解有误,希望大家多多指教.4种方法如下: a) ...
- 在Arcmap中加载互联网地图资源的4种方法(转载)
前一段时间想在Arcmap中打开互联网地图中的地图数据,如影像数据.基础地图数据等,经过简单研究目前总结了四种方法,整理下与大家分享,有些内容可能理解有误,希望大家多多指教.4种方法如下: a) ...
- 使用 pdf.js 在网页中加载 pdf 文件
在网页中加载并显示PDF文件是最常见的业务需求.例如以下应用场景:(1)在电商网站上购物之后,下载电子发票之前先预览发票.(2)电子商务管理系统中查看发布的公文,公文文件一般是PDF格式的文件. 目前 ...
- Direct2D开发:MFC下从资源文件中加载位图
转载请注明出处:http://www.cnblogs.com/ye-ming 0X01 概述: 相对于GDI处理界面,Direct2D有得天独厚的优势,下图就是Direct2D与GDI的效果对比,wi ...
- 『转载』从内存资源中加载C++程序集:CMemLoadDll
MemLoadDll.h #if !defined(Q_OS_LINUX) #pragma once typedef BOOL (__stdcall *ProcDllMain)(HINSTANCE, ...
- Spring中加载xml配置文件的六种方式
Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog 因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...
- Android中加载位图的方法
Android中加载位图的关键的代码: AssetManager assets =context.getAssets(); //用一个AssetManager 对象来从应用程序包的已编译资源中为工程加 ...
随机推荐
- cocos2dx 2.0+ 版本,IOS6.0+设置横屏
使用cocos2dx 自带的xcode模板,是不能正常的设置为横屏的. 一共修改了三个地方: 在项目属性中:Deployment Info中,勾选上 Landscape left,以及 Landsca ...
- MySQL DBA面试全揭秘
来源:http://ourmysql.com/archives/1426 本文起源于有同学留言回复说想了解下MySQL DBA面试时可能涉及到的知识要点,那我们今天就来大概谈谈吧. MySQL DBA ...
- 任务:写一个tomcat自启动脚本
写一篇<gitlab无法启动了应该怎么办>
- linux 安装memcached
1.下载文件wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gzwget http://www.memcached.org/ ...
- xml给提示
1. FAQ:不给提示: a) window – preferences – myeclipse – xml – xml catalog b) User Specified E ...
- Codeforces Round #284 (Div. 2)
题目链接:http://codeforces.com/contest/499 A. Watching a movie You have decided to watch the best moment ...
- Windows10+IIS7.5上如何配置PHP站点
最近我一直在写PHP,但是我很喜欢微软的开发环境和Windows的硬件环境,我就想在IIS上配置一下PHP站点,这样用起来也比较方便,在经过各位前辈的文章学习后,自己整理了一个比较简单的图片为主的教程 ...
- asp.net各种类型视频播放代码(全)
1.avi格式 代码片断如下: <object id="video" width="400" height="200" border= ...
- 使用 Microsoft Word 发布博客文章
以 Microsoft Word 2010 为例: 依次选择:文件 -> 保存并发送 -> 发布为博客文章 配置说明:新建账户 的 博客文章 URL 一栏填写 http://rpc.cn ...
- DOS系统功能调用表(INT 21H)
AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异步通迅输入 AL=输入数据 04 异 ...