青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

清源游民  gameogre@gmail.com

資源組
命名組可以作為一個整體加載與卸載。在加載,卸載,初始化時把把組中的所有資源作為一個執行單位來
看待,而不是逐個進行處理。資源組管理純粹是了為了管理上的方便,是否使用組的方式與性能無關。假
如向資源組管理器中加入了資源位置而沒有指定組名,那么這些資源位置被放入"General"組中。
資源組與世界幾何
缺省情況下,ogre把加載的世界幾何放入"General"組。也可以覆蓋(override)這種方式,使得對世界幾何的管理像其他資源的管理方式一樣。統一的場景管理器可以提供關于裝載世界總步驟的線索,這樣就可以在關卡加載時,提供精確的以進度條顯示的反饋信息。
資源位置(location)
資源位置是ogre去查找資源進行索引的地方。索引指的是在某個位置的所有資源通過它們的名字被映射,這樣可以方便進行更快的查找資源。可以在程序的任何時候添加或刪除資源位置,不必事先對所以可能用到的進行定義。資源位置在ogre中實際上是個archive,它的意思就是“文件的集合”。磁盤上的文件系統是
archive的一種類型。另外一種是zip archive??梢宰远xarchive格式。這通過改寫archive類實現來完成,必須支持對命名的leaf文件進行枚舉操作,必須支持通配符,支持結點遞歸,給ogre提供一個流訪問archive中文件的數據。ogre中的archive是只讀的。ogre資源管理器利用archive枚舉特性來索引archive的內容,當ogre對archive進行索引時,不會實際加載任何資源。
資源生命周期
資源有四種狀態,各狀態之間的轉換關系如下圖:

Undefined:這是程序開始時,所有資源的缺省狀態。除非它們被聲明,ogre對程序用到的資源一無所知,手工調用代碼 ResourceGroupManager::declareResource()或在腳本中被解析之后,資源的狀態變為Declared
Declared:聲明就是告訴ogre想要加載某些資源。ResourceGroupManager::declareResource()總是有效的,包括在渲染系統初始之前,這與ResourceManager::create()不同,因為后者依賴于渲染系統。
Unloaded:通過調用ResourceGroupManager::initialiseAllResourceGroup(), ResourceGroupManager::
initialiseResourceGroup(),或Root::initialise()(它會初始化在此調用之前所有聲明的資源),資源狀態進入到Unloaded,資源會占用一點內存來保存它的定義的實例,但是資源本身還沒有加載到內存。從另一角度看(從Loaded到Unloaded),引起狀態變化的調用有:ResourceManager::unload(),ResourceManager::unloadAll(), ResourceManager::unloadAllUnreferencedResources(),ResourceGroupManager::unloadResourceGroup(), or Resource::unload().所有這些調用仍會保存資源實例,但真正的資源數據會從內存中卸載。
Loaded: 這種狀態下,所有數據都變得有效。與此狀態有關的調用有Resource::load(), Resource::reload(),
ResourceManager::load(), ResourceManager::reload(), ResourceManager::reloadAll(),
ResourceManager::reloadAllUnreferencedResources(), and ResourceGroupManager::
loadResourceGroup().
邏輯資源管理
資源以命名組的形式組織,每組可以包括任何類型的資源,每種資源都有自己的資源管理器,后者負責加載與卸載特定類型的資源。ogre對它的資源沒有實現特定的內存管理方案,如果你需要對某種資源實“最近最少使用算法”方案來進行管理,那么需要自己的代碼來實現。值的一提的是,現在的大多數顯卡驅動,對于大多數重要的資源已經實現了這種LRU算法管理。
資源加載
假如沒有預加載,當資源被訪問時會進行加載。實際的加載,卸載是資源自己的責任。
手動加載資源
資源管理層不負責實際的加載與卸載。通常,不必擔心資源是否存在于易失性媒介。然而,手工方式時需要考慮。手工資源加載器必須在任何時候準備好重新加載資源。假如某個資源是通過程序生成的,那么手工資源加載器必須內存中緩沖這些資源,或者是當資源管理加載時重新創建它。ogre認為手工加載與自動加載沒有區別。
后臺資源管理
缺省,ogre不是線程安全的。假如在OgreConfig.h中 #define OGRE_THREAD_SUPPORT 1 ,那么資源管理
代碼的線程同步功能變得有效,我們就可以在包含Root實例的線程之外,開啟新的線程對資源管理類與方法進行操作,從而實現靈活的資源加載方案。 
非后臺資源管理
Ogre中大量使用了Observer模式,資源管理系統也不例外。ResourceGroupListene 回調接口包含了幾個方法
允許對資源加載過程進行細粒度的監聽。
資源卸載
資源被加載后總存在于內存中,直到被應用程序強行卸載(通過資源組管理器或是被資源直接釋放)。資源管理組管理會把組中所有的資源都卸載掉。在資源被引用時不能強行卸載。
Resource Locations
// 配置文件方式
ConfigFile cf;
cf.load("resources.cfg");
// Go through all sections & settings in the file
ConfigFile::SectionIterator seci = cf.getSectionIterator();
String secName, typeName, archName;
while (seci.hasMoreElements())
{
secName = seci.peekNextKey();
ConfigFile::SettingsMultiMap *settings = seci.getNext();
ConfigFile::SettingsMultiMap::iterator i;
for (i = settings->begin(); i != settings->end(); ++i)
{
typeName = i->first;
archName = i->second;
ResourceGroupManager::getSingleton().addResourceLocation(
archName, typeName, secName);
}
}
//硬編碼方式
ResourceGroupManager *rgm = ResourceGroupManager::getSingletonPtr();
rgm->addResourceLocation("../../media/packs/OgreCore.zip", "Zip", "Bootstrap");
rgm->addResourceLocation("../../media", "FileSystem", "General");
rgm->addResourceLocation("../../media/fonts", "FileSystem", "General");

初始化
在初始化之前,必須創建至少一個渲染窗口。因為在分析腳本時可能會創建GPU資源,而后者需要渲染
上下文。
// initialize all of the previously defined resource groups
ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
// or, alternately, initialize the defined resource groups one at a time
ResourceGroupManager::getSingleton().initialiseResourceGroup("General");
ResourceGroupManager::getSingleton().initialiseResourceGroup("Bootstrap");
卸載
可以在任何時候卸載資源(以組或單個的方式),正在使用的資源不會被卸載。
以組的方式卸載
ResourceGroupManager::getSingleton().unloadResourceGroup("Bootstrap", true);
ResourceGroupManager::getSingleton().
unloadUnreferencedResourcesInGroup("Bootstrap", true);
true表示只卸載資源數據,不刪除資源實例,它可以被reloaded。有些資源在創建時被標為
"nonreloadable",這種類型的資源不能使用上述方法卸載。
清理或銷毀資源組
清理僅是卸載資源與分離資源索引,銷毀不僅做清理的工作,還包括從資源組中把自己移除。
ResourceGroupManager::geSingleton().clearResourceGroup("Bootstrap");
ResourceGroupManager::geSingleton().destroyResourceGroup("Bootstrap");
以個體方式卸載
// assume that pEntity is a valid pointer to an instance of Entity
MeshPtr meshPtr = pEntity->getMesh();
meshPtr->unload();
加載/重載資源組
ResourceGroupManager::getSingleton().loadResourceGroup("Bootstrap", false, true)
二個布爾變量不同資源類型資源加載開關,一針對"Normal"資源,二針對"World geometry"
資源組加載通知
class LoadingProgressListener :?public ResourceGroupListener
{
?? public:?
???????
?// fired when a group begins parsing scripts
??????????????? void resourceGroupScriptingStarted(const String& groupName,
??????????????????????????????????????????????????????????????????????? size_t scriptCount) {}
?????? // fired when a script is about to be parsed
?????????????? void scriptParseStarted(const String& scriptName) {}
??? ?? // fired when the script has been parsed
?????????????? void scriptParseEnded() {}
???? ? // fired when all scripts in the group have been parsed
????????????? void resourceGroupScriptingEnded(const String& groupName) {}
????? //還有一些接口
}
//實現之后,進行注冊
LoadingProgressListener listener(m_progressMeter);
ResourceGroupManager::getSingleton().addResourceGroupListener(&listener);

posted on 2007-03-14 17:09 清源游民 閱讀(3038) 評論(2)  編輯 收藏 引用 所屬分類: OGRE

FeedBack:
# re: 《Pro Ogre 3D Programming》 讀書筆記 之 第七章 資源管理 第一部分
2007-03-15 16:43 | 夢在天涯
非常好,感謝!  回復  更多評論
  
# re: 《Pro Ogre 3D Programming》 讀書筆記 之 第七章 資源管理 第一部分
2007-03-15 16:44 | 夢在天涯
我的msn:mzty999@hotmail.com  回復  更多評論
  
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿(35)

隨筆分類(78)

隨筆檔案(74)

文章檔案(5)

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲日本中文字幕| 欧美吻胸吃奶大尺度电影| 欧美国产综合视频| 欧美午夜精品| 国产精品美女久久久久久免费 | 久久综合色天天久久综合图片| 亚洲综合日韩| 久久不射2019中文字幕| 午夜一区不卡| 免费成人网www| 欧美日韩黄视频| 国产视频精品va久久久久久| 在线日韩中文| 亚洲无线视频| 久久免费一区| 亚洲精品一区二区三| 亚洲视频欧美在线| 久久久亚洲国产天美传媒修理工| 欧美福利在线| 国产精品视频免费一区| 亚洲东热激情| 亚洲免费视频一区二区| 免费av成人在线| 中文在线一区| 久久免费黄色| 国产精品一区二区视频| 亚洲国产欧美一区二区三区同亚洲 | 亚洲日本理论电影| 香蕉久久夜色| 亚洲欧洲精品一区二区三区| 亚洲伊人网站| 欧美激情欧美狂野欧美精品| 国产视频在线一区二区| 日韩视频永久免费| 久久精品人人做人人爽| 99在线精品视频| 榴莲视频成人在线观看| 国产精品美女www爽爽爽视频| 亚洲精品欧美在线| 免费短视频成人日韩| 亚洲欧美日韩综合aⅴ视频| 欧美日韩亚洲在线| 日韩一级免费观看| 亚洲高清视频在线观看| 乱码第一页成人| 国内成+人亚洲+欧美+综合在线| 亚洲尤物视频网| 日韩午夜在线电影| 欧美日韩高清在线| 最新国产乱人伦偷精品免费网站| 久久综合一区二区| 亚洲欧美中文另类| 国产欧美在线| 久久久久久久久久看片| 欧美在线一二三四区| 国产欧美亚洲日本| 午夜精品视频在线观看一区二区| 亚洲色无码播放| 欧美激情亚洲视频| 欧美成人午夜激情在线| 亚洲精选一区| 99国产欧美久久久精品| 欧美三级黄美女| 亚洲神马久久| 亚洲无亚洲人成网站77777| 国产精品久久久久久久久久免费看 | 国产精品亚洲美女av网站| 亚洲午夜精品一区二区| 一二三区精品| 国产精品亚洲一区二区三区在线| 国产精品99久久久久久久vr| 一本综合久久| 国产欧美精品一区aⅴ影院| 欧美一区二区三区在线| 午夜视频在线观看一区| 黑丝一区二区| 亚洲日本中文| 国产亚洲成av人在线观看导航| 久久精品视频导航| 久久久久久网址| 亚洲精品小视频在线观看| 亚洲美女在线一区| 国产免费成人在线视频| 久久综合网色—综合色88| 模特精品在线| 欧美亚洲在线视频| 美女日韩欧美| 亚洲欧美日韩高清| 欧美 日韩 国产 一区| 亚洲一区二区三区午夜| 亚洲欧美国产三级| 亚洲精品一品区二品区三品区| 亚洲一区二区少妇| 在线精品亚洲一区二区| 日韩亚洲不卡在线| 激情一区二区三区| 一本久久综合亚洲鲁鲁| 伊人精品在线| 亚洲手机成人高清视频| 亚洲美女精品久久| 亚洲男女毛片无遮挡| 91久久精品一区| 午夜亚洲精品| 亚洲午夜视频在线观看| 久久爱另类一区二区小说| 亚洲一区二区三区777| 久久激情一区| 欧美一区二区黄色| 欧美日韩国产影院| 欧美激情综合| 国产主播喷水一区二区| 亚洲一区二区三区高清 | 欧美在线电影| 欧美激情精品久久久久久免费印度| 欧美综合二区| 欧美私人啪啪vps| 女人色偷偷aa久久天堂| 国产亚洲va综合人人澡精品| 99香蕉国产精品偷在线观看| 亚洲国内自拍| 欧美一区三区三区高中清蜜桃| 一区二区三区日韩欧美| 欧美aⅴ99久久黑人专区| 久久亚洲春色中文字幕久久久| 欧美色大人视频| 亚洲国产精品久久久| 一区二区三区在线视频播放| 亚洲欧美日韩国产| 欧美中文字幕在线观看| 国产精品久久网站| 99这里只有精品| 亚洲一区精品电影| 欧美日韩一区精品| 日韩亚洲欧美在线观看| 亚洲精品乱码久久久久久蜜桃91 | 亚洲黄色片网站| 在线看片成人| 美女视频黄免费的久久| 欧美国产另类| 亚洲精品视频免费在线观看| 欧美成人亚洲成人日韩成人| 欧美激情亚洲激情| 亚洲精品久久嫩草网站秘色| 欧美成黄导航| 日韩午夜免费视频| 亚洲免费在线精品一区| 国产精品高潮粉嫩av| 亚洲网站啪啪| 久久久999精品免费| 国产一区二区黄| 久久久亚洲影院你懂的| 亚洲黄色免费网站| 亚洲一级黄色片| 国产欧美一区二区三区在线老狼| 香蕉久久夜色精品| 欧美二区视频| 亚洲综合精品四区| 精品999日本| 欧美精选一区| 亚洲欧洲av一区二区三区久久| 久久蜜臀精品av| 亚洲全部视频| 国产精品一级在线| 久久精品国产欧美亚洲人人爽| 欧美成人免费网站| 亚洲亚洲精品在线观看| 黑丝一区二区| 国产精品jvid在线观看蜜臀 | 一本久道久久综合狠狠爱| 亚洲综合999| 韩国亚洲精品| 欧美午夜片在线观看| 午夜精品一区二区三区在线播放| 美女视频网站黄色亚洲| 亚洲五月婷婷| 欧美激情精品久久久久久黑人| 亚洲精品中文字幕在线| 久久久久久精| 一本久久综合亚洲鲁鲁五月天 | 亚洲精品国产精品国自产在线 | 9久草视频在线视频精品| 国产精品一区在线观看你懂的| 狂野欧美性猛交xxxx巴西| 亚洲视频一区在线| 欧美好吊妞视频| 久久aⅴ国产紧身牛仔裤| 日韩视频一区二区| 亚洲成人中文| 国产亚洲激情视频在线| 欧美日韩免费高清| 可以看av的网站久久看| 亚洲欧美一区二区三区在线| 亚洲成色最大综合在线| 久久先锋影音| 久久精品成人一区二区三区蜜臀 | 国产亚洲一区在线播放| 欧美先锋影音| 欧美精品aa| 欧美v国产在线一区二区三区| 欧美在线综合视频|