cegui 2 資源管理入門

2021-04-24 05:41:39 字數 4569 閱讀 5219

cegui 2

資源管理入門

讀了cegui渲染入門這一章,你已經知道,要想讓cegui跑起來,至少對cegui進行最基礎的

初始化,並呼叫system ::rendergui方法,這看起來不錯。可是,你仍然畫不出任何東西。

為了達成,下一步是設定資源管理組(resource provider groups),我們將用它們裝載一些檔案供cegui在渲染的時候使用。

resourceprovide 是什麼?

cegui使用了乙個工具物件,我們叫它「resourceprovide」。這個物件提供了一組介面負責cegui與其他的檔案裝載系統通訊。

例如: ogre 和irrlicht 都有他們自己的資源管理/檔案裝載子系統,通過實現特定的resourceprovide 物件,cegui

的渲染模組就和那些子系統無縫的組合起來。那樣cegui的資料檔案就可以通過那些子系統裝載了。但是,更底層的庫

(direct3d opengl) 沒有那樣的資源管理系統。所以cegui 為他們提供了預設的資源管理系統

(default resource provider)。

default resource provider 相關說明

cegui::defaultresourceprovider --------cegui 的預設的資源管理系統,是為那些還沒有資源管理的庫

提供基礎幫助的系統。 他不僅提供了cegui裝載檔案 資料時所需要的函式,而且對資源組(resource groups)

也提供了初步的支援。 這裡的「資源組」其實只是乙個標籤,它代表系統的某個資料夾路徑。這使得我們可以將資料夾

中的檔案按邏輯型別分組,然後可以通過乙個人簡單的標籤而不是硬編碼的路徑去指定它,也就是說:當資料檔案的

路徑有改動的時候,只需要更細資源組的路徑而不必更改**和xml檔案中的路徑資訊。

指定資源組和路徑

defaultresourceprovider  允許你定義任意數目的資源組,並為每個資源組指定乙個路徑。也就是說,你可以

建立乙個資源組,比如 「imagesets」,並為它指定乙個路徑,假設是"./game/datafile/gui/imagesets/".

然後,你通過imagesetmanager裝載imageset的時候,就可以指定"imagesets"為他將要使用的資源組,

這樣系統就會在預定義的路徑中尋找資源。目前,每個資源組只可以賦予乙個路徑。 個

例子說明

以前,在沒有使用資源組的時候,你may be

imageset *set = imagesetmanager::getsingleton().createimageset("./game/datafile/gui/imagesets/windowslook.imageset");

使用了資源組以後,在初始化階段,你可以使用預設的資源管理器像這樣建立資源組

defaultresourceprovider *rp = cegui::system::getsingleton().getresourecprovider();

rp->setresourcrgroupdirectory("imagesets","("./game/datafile/gui/imagesets/windowslook.imageset");

imageset *set = imagesetmanager::getsingleton().createimageset("windowslook.imageset","imagesets")

預設資源組

系統定義的任何代表可以可裝載資源的資源類,都有獲取和設定預設資源組的靜態函式。

當需要載入資料檔案的時候,他就用那個預設資源組。比如:對於imageset類,預設的資源組應該指向

乙個儲存imageset xml 檔案和材質檔案的資料夾。

對於每個資源類,他們獲取 設定資源組的靜態函式的名字都是一樣的(xerces 是個例外)

const string& getdefaultresourcegroup();

void setdefaultresourcegroup(cosnt string& groupname);

如果是資源類的乙個列表,後面是他們各自管理的資源型別

cegui::imageset ------- imageset xml and texture image files

cegui::font ---------- font xml and ttf font files.

cegui::scheme -------scheme xml files

cegui::windowmanager      --------- window layout xml files

cegui::widgetlookmanager          ---------- looknfeel xml files

cegui::scriptmodule ---------script files in whichever scripted langauge

上面提到過,xerces是個例外,它是「基於xerces-c的xml直譯器(xerces-c based xml parser)」。對此,有乙個特殊的資源組設定檔案,它指明schema檔案在**(它們是用來檢查xml的.xsd檔案)。對於這個特殊情況,它的靜態成員如下:

const

string& xercesparser::getschemadefaultresourcegroup(); 

void

xercesparser::setschemadefaultresourcegroup(

const

string& groupname);

需要注意的最後一點是:資源管理類也有乙個預設的資源組。當乙個資源類沒有顯示的指定資源組的時候,

系統就會使用它。當你把所有的資料檔案都放到乙個資料夾的時候,這點就很方便了。

乙個完整的例子:配置

defaultresourceprovider

// 為defaultresourceprovider設定所需的路徑

cegui::defaultresourceprovider* rp = static_cast

(cegui::system::getsingleton().getresourceprovider());  

rp->setresourcegroupdirectory("schemes"

, "../datafiles/schemes/"

);  

rp->setresourcegroupdirectory("imagesets"

,   

"../datafiles/imagesets/"

);  

rp->setresourcegroupdirectory("fonts"

, "../datafiles/fonts/"

);  

rp->setresourcegroupdirectory("layouts"

, "../datafiles/layouts/"

);  

rp->setresourcegroupdirectory("looknfeels"

,   

"../datafiles/looknfeel/"

);  

rp->setresourcegroupdirectory("lua_scripts"

,   

"../datafiles/lua_scripts/"

);  

// 這步僅當你使用xerces作為xml解析器的時候才需要

rp->setresourcegroupdirectory("schemas"

, "../../xmlrefschema/"

);  

完成這步以後,我們就把資源組和它們的路徑都設定好了。最後,為了讓系統使用新設定的路徑,我們來設定預設資源組:

// 設定預設資源組

cegui::imageset::setdefaultresourcegroup("imagesets"

);  

cegui::font::setdefaultresourcegroup("fonts"

);  

cegui::scheme::setdefaultresourcegroup("schemes"

);  

cegui::widgetlookmanager::setdefaultresourcegroup("looknfeels"

);  

cegui::windowmanager::setdefaultresourcegroup("layouts"

);  

cegui::scriptmodule::setdefaultresourcegroup("lua_scripts"

);  

// 僅當你用xerces做xml解析器,並為它定義了乙個資源組的時候使用

cegui::xercesparser::setschemadefaultresourcegroup("schemas"

);  

總結:目前,你對defaultresourceprovider 這個類有了大致的了解了。

知道了怎麼建立資源

組並為他們制定路徑。 還學會為cegui的使用的每個資源型別設定預設資源組。

2 資源管理技術

在相互競爭的應用程式之間有序地控制軟硬體資源的分配 使用和 使資源能夠在多個程式之間共享。讓眾多程序共享物理資源 分割實際存在的物理資源 物理資源復用共享的基本方法 把乙個物理上的實體變為多個邏輯上的對應物 或把多個物理資源變成單個邏輯上的對應物 使用者感受到的,是假想的虛擬同類資源 為什麼記憶體4...

部門管理入門 2 評審制度

執行說明 1 有效的評審是什麼?我經常在思考這個問題。正文 軟體部評審制度 變更記錄序號 修改條款 修改內容 修改人 日期 備 注 注 對該檔案內容增加 刪除或修改均需填寫此變更記錄,詳細記載變更資訊,以保證其可追溯性。規範化的流程,為專案實施過程的監控提供比較全面的思考 書寫模板,指導專案經理通過...

使用yii2的appasset資源管理包

yii2.0對於css js 管理,使用assetbundle資源包類。namespace frontend assets useyii web assetbundle class extends assetbundle 定義按需載入css方法,注意載入順序在最後 public static fun...