在Ogre中載入自己的資源包

2021-05-21 23:33:34 字數 1921 閱讀 7365

由於資料保護的需要,一款遊戲一般都會有自己獨有的資源包,這樣做既有利於智財權的保護,又減少了磁碟碎片的產生。ogre本身是支援的zip包的,但zip包不具要資源保護的特性,隨便用個winrar就可以把資源開啟並匯出,這樣就失去了資料保護的意義。

現在假設你的操作資源包的api已經完成,下一步需要整合到ogre中去,那麼該怎麼做呢,

大致我機械式的列出下面幾步,照著做一般就不會錯。

1. 繼承ogre::archive 派生出新的,假設派生出 ogre::***archive

2. ogre::***archive 中實現下面的虛函式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::***datastream

4. ogre::***datastream 中實現下面的虛函式

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::***archivefactory

6. ogre::***archivefactory 中實現下面虛函式

const string& gettype(void) const

archive* createinstance( const string& name )

7. 在ogreroot.h 中註冊我們新的資源包的載入

在private成員中加入乙個新的變數

archivefactory *m***archivefactory;

代表你新的資源包的建立工廠

8. 在ogreroot.cpp 中加入相關**

在 mziparchivefactory = new ziparchivefactory();

archivemanager::getsingleton().addarchivefactory( mziparchivefactory );

兩句**的下面加上,註冊我們資源包的**

m***archivefactory = new ***archivefactory();

archivemanager::getsingleton().addarchivefactory( m***archivefactory );

關於***archive, 和 ***datastream 的編寫,可以參照 ziparchive 和 zipdatastream 照葫蘆畫瓢來做。

Java在jar包中載入so包dll包dylib等

使用ide為idea,lib libxyz.so位於resource下,通過動態設定jar路徑,然後載入。system.loadlibrary xyz 如果直接啟動idea系統正常載入。但將項打包為jar,啟動jar包執行確出現找不到jar載入異常,產生unsatisfied linked erro...

在cocos2d JS中載入動畫資源檔案

首先,我們應該把 running.plist 和 running.png 新增到 resource.js檔案中。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var res var g resources image res.hellobg png,res...

使用ClassLoader載入包內的資源

classloader可以把包 jar包,war包 內的class檔案載入到 jvm中,第一步就是將class檔案以stream的方式讀取出來。classloader也將這個載入資源的方法 getresourceasstream暴露了出來。程式設計時可以使用這個方法來載入包內的任何資源,比如prop...