CEGUI初學者指南2 裝載資料檔案和初始化

2021-04-12 12:22:30 字數 3338 閱讀 7337

裝載資料檔案和初始化的初學者指南

from ceguiwiki

1 概覽:資料檔案和resourceprovider

1.1 資源的提供 – 什麼是resourceprovider?

1.2 xml, xsd? 都是xml!

1.3 資料檔案

1.3.1 集

1.3.2 字型

1.3.3 scheme

1.3.4 布局

1.3.5 配置

2 裝載基本檔案

3 簡單的預設初始化

4 結論

1 概覽:資料檔案和resourceprovider

cegui使用一些資料檔案的變體,這可能會導致一些混淆的發生。因此首先介紹資料檔案是什麼,它們用來幹什麼,怎麼在cegui中裝載。

1.1 資源的提供 – 什麼是resourceprovider?

cegui使用乙個叫做resourceprovider的幫助物件。這個物件提供乙個cegui核心庫和外部檔案裝載系統的介面。例如ogre和irrlicht引擎使用他們自己的資源管理器、檔案裝載子系統:通過實現和提供乙個專門化的resourceprovider物件,這些引擎的渲染器實現了以上系統的「無縫」整合,因此cegui資料檔案是通過這些系統裝載的。

direct3d和opengl預設情況下沒有使用專門話的resourceprovider,這些系統預設從應用程式的當前路徑裝載所有資源檔案。因此這些檔案必須和同乙個資料夾相關,但是他們彼此毫無關係,這個很重要。

1.2 xml, xsd? 都是xml!

除了圖形檔案和可裝載模組檔案(.dll/.so等等),所有cegui使用的資料檔案都是xml。這兒出現了第乙個障礙:如何使用schema(.xsd)檔案。

預設情況下,cegui使用xerces-c++來處理帶有schema驗證的xml檔案。(關於xsd檔案的介紹略)。cegui有一些xsd在cegui_mk2/xmlrefschema/ 目錄下。必須記住的是xsd檔案是resourceprovider系統所必須的,你可以在要裝載的xml檔案目錄下放置乙個合適的.xsd檔案。

1.3 資料檔案

資料檔案常常不是以.xml結尾的,儘管它們都是xml檔案。它們通常根據檔案內容定義,例如.imageset是imageset的xml配置檔案,.font是字型的xml配置檔案,等等。下面是對每種資料檔案的簡要介紹。

1.3.1 集imageset

imageset只是原圖形/紋理檔案某個區域的定義(imageset定義時將會指定區域)。每個定義的區域都有乙個唯一的名字,並且在系統內被認為是乙個image。image是imageset中乙個基本的元素。如果想要更改cegui畫出的圖形,可以更改原圖形/紋理檔案,或者更改image的定義區域。

1.3.2 字型

可以定義兩種型別的字型供cegui使用動態字型    基於true-type(.ttf)的字型檔案靜態字型    乙個位圖字型,這種字型基於乙個定義了images的imageset。

1.3.3 scheme

schema是把零碎的資料檔案組合起來的一種方法。 它也是裝載和註冊widget型別的最簡便的方法。乙個schema可以包含以下乙個或者多個型別的定義(這些檔案描述的資源可以在schema被裝載時裝載)。

imageset和font在前面已經提到過。乙個window set指定了可裝載模組(.dll/.so, 等等)的名字。

widgets集包含了你希望註冊的模組集。(注,根據網上的資料,widgets類似於windows的themes)

window或者widget型別可以有多個名字,windows alias提供了這一機制。我們也可以通過這種機制使乙個widget"隱藏"另乙個已經註冊了的widget。(有點象c++的隱藏?)

1.3.4 布局layout

布局檔案包含了乙個視窗布局的資訊,它也是xml格式的。其中每個'window'元素定義了被建立的window或者widet,'property'元素定義每個window的屬性值。

1.3.5 配置

cegui支援配置檔案。可以通過這個檔案設定一些預設值,例如使用哪個scheme,哪個布局,哪個指令碼檔案(在使用sriptmoudle時)等等

2 裝載基本檔案

要跑起乙個cegui的示例,至少必須有以下檔案。

scheme檔案的好處在於它可以用來自動裝載其他兩個資料檔案。在cegui的樣例schemes中只有imageset而沒有font。下面我們來裝載乙個scheme檔案和font檔案。如下:

// load in the scheme file, which auto-loads the taharezlook imageset

cegui::schememanager::getsingleton().loadscheme(「../datafiles/schemes/taharezlook.scheme」);

// load in a font.  the first font loaded automatically becomes the default font.

cegui::fontmanager::getsingleton().createfont(「../datafiles/fonts/commonwealth-10.font」);

在上面的**中,我們假設'datafiles'目錄存在,並且位於當前目錄的上層目錄中,其中包含了cegui_mk2/samples/datafiles中的所有檔案。

oger使用者注意:要使用沒有被編輯過的樣例資料檔案,你必須確保當前工作目錄被oger資源管理器中設定為資源路徑(可以通過resources.cfg設定)。或者你可以新增所有資料檔案子目錄並且刪去資料檔案中的所有相對路徑資訊。這樣做是因為它們必須在預設的resourceprovider下和d3d/opengl一起工作,就像前面討論的那樣。

3 簡單的預設初始化

最後,你需要設定一些預設值。這保證了在window或者widget中沒有指定特定的主題時系統總是可以有乙個可用的字型和滑鼠圖示。

在現實中,我們沒有必要指定乙個預設字型,因為fontmanager總是會自動設定第乙個裝載的字型為預設的。但如果這不是你要的預設字型,你可以再設定乙個你想要的預設字型。設定預設字型的**如下:

system::getsingleton().setdefaultfont(「commonwealth-10」);

另乙個需要設定的預設物件就是滑鼠圖示了。在你沒有定義當滑鼠移到某個元素上的圖示時,滑鼠不會消失。設定預設滑鼠圖示的**如下:(使用上面和scheme一起裝載的taharezlook imageset)

system::getsingleton().setdefaultmousecursor(「taharezlook」, 「mousearrow」);

4 結論

我們學習了一些基本資料檔案,它們怎麼裝載,cegui的需要的最小初始化資料檔案等等。其他文章會討論每種資料檔案的細節。

初學者mysql MySQL初學者使用指南

有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...

DLL初學者指南

這裡有兩個方法來載入乙個dll 乙個方法是捷徑另乙個則相比要複雜些。捷徑是只鏈結到你.lib 檔案並將.dll檔案置入你的新專案的路徑中去。因此,建立乙個新的空的win32控制台專案並新增乙個原始檔。將你做的dll放入你的新專案相同的目錄下。include include declspec dlli...

DLL初學者指南

dll初學者指南 dll project的源 及測試專案 原文出處 codeguru 我正在學習dlls,談不上對其有什麼高屋建瓴的見解 本文只是 通過 編碼讓你看到並想知道 是如何執行的。在本文中,我假定你知道如何使用你的編譯器特性,比如設定目錄路徑等等。ifndef dll tutorial h...