为了账号安全,请及时绑定邮箱和手机立即绑定

初始化时,文件报错!

初始化时,文件报错!

慕田峪4524236 2023-01-07 17:13:19

Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
archName, typeName, secName); //加载这个“SdkTrays.zip”文件时报错

查看完整描述

1 回答

?
BIG阳

TA贡献1591条经验 获得超6个赞

Ogre 本身是支持的 Zip 包的, 但Zip 包不具要资源保护的特性, 随便用个winrar 就可以把资源打开并导出, 这样就失去了数据保护的意义。现在假设你的操作资源包的 API 已经完成, 下一步需要集成到OGRE 中去, 那么该怎么做呢,大致机械式的列出下面几步, 照着做一般就不会错。
1. 继承Ogre: : Archive 派生出新的, 假设派生出 Ogre: : XXXArchive 
2. Ogre: : XXXArchive 中实现下面的虚函数bool isCaseSensitive(void) void load() 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 中实现下面的虚函数 size_t read(void* buf, size_t count) ; 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 中实现下面虚函数 const String& getType(void) const Archive* createInstance( const String& name ) 
7. 在OgreRoot. h 中注册我们新的资源包的加载 在private 成员中加入一个新的变量 ArchiveFactory *mXXXArchiveFactory; 代表你新的资源包的创建工厂 
8. 在OgreRoot. cpp 中加入相关代码在 mZipArchiveFactory = new ZipArchiveFactory() ; ArchiveManager: : getSingleton() . addArchiveFactory( mZipArchiveFactory ) ; 两句代码的下面加上, 注册我们资源包的代码 mXXXArchiveFactory = new XXXArchiveFactory() ; ArchiveManager: : getSingleton() . addArchiveFactory( mXXXArchiveFactory ) ;


查看完整回答
反对 回复 2023-01-10

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信