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 照葫芦画瓢来做。

  • 相关阅读:
    char、varchar、nchar、nvarchar的区别
    linux和windows下分别如何查看电脑是32位的还是64位?
    HP-Unix安装Memcache问题
    安装GCC-4.6.1详细教程
    JSTL 核心标签库 使用
    JSP && EL表达式
    UNIX环境高级编程——标准IO-实现查看所有用户
    UNIX环境高级编程——环境变量表读取/添加/修改/删除
    UNIX网络编程——进程间通信概述
    UNIX网络编程——通过UNIX域套接字传递描述符和 sendmsg/recvmsg 函数
  • 原文地址:https://www.cnblogs.com/minggoddess/p/1958472.html
Copyright © 2011-2022 走看看