zoukankan      html  css  js  c++  java
  • 在Ogre中加载自己的资源包

    由于数据保护的需要,一款游戏一般都会有自己独有的资源包,这样做既有利于知识产权的保护,又减少了磁盘碎片的产生。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 );

    关于XXXArchive, 和 XXXDataStream 的编写,可以参照 ZipArchive 和 ZipDataStream 照葫芦画瓢来做。

  • 相关阅读:
    rCore-Tutorial-Book-v3学习笔记(五)
    rCore-Tutorial-Book-v3学习笔记(四)
    rCore-Tutorial-Book-v3学习笔记(三)
    rCore-Tutorial-Book-v3学习笔记(二)
    rCore-Tutorial-Book-v3学习笔记(一)
    OpenStack 命令行速查表(转载)
    mysql数据库总结笔记
    Owncloud迁移上云案例
    Python
    高等数学(微积分)
  • 原文地址:https://www.cnblogs.com/minggoddess/p/1958472.html
Copyright © 2011-2022 走看看