1. 程式人生 > >MyGUI3.2.0+Ogre1.8.1開發詳解之第一個MyGUI程式

MyGUI3.2.0+Ogre1.8.1開發詳解之第一個MyGUI程式

 

mygui是一款簡單、易用的開源圖形介面開發庫,主要面向物件是遊戲的3D介面,下面是它的官方介紹
MyGUI是為遊戲和3D應用程式建立圖形使用者介面(GUI)的一個庫。 mygui的主要目標是:速度,靈活性和易用性。(出自MyGUI官網)

官方網站:http://mygui.info
下載mygui之後,編譯,構建就不必細說了,網上有詳細的教程。
Ogre要使用1.8.1 SDK版本,請大家下載相應的版本。
順便說一下,以後我們構建Ogre工程都用AppWizard進行,這樣就可以省去好多不必要的麻煩,好了,廢話不多說,破文開始
開發工具;VS2008 
Ogre版本:1.8.1 SDK
MyGUI版本:3.2.0
平臺:Win32
程式碼生成方式:Ogre AppWizard for VS2008

首先,新建一個Ogre Application工程,在VC++工程模板中選擇Ogre Application,然後在開啟的對話方塊點選完成即可

我們先編譯一下這個工程,如果你的配置沒有錯誤的話,就能看到怪獸的頭了
然後我們開啟  你的工程名.cpp,在createScene函式裡鍵入如下程式碼

點選(此處)摺疊或開啟

  1.     Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
  2.     mPlatform=new MyGUI::OgrePlatform();
  3.     mPlatform-
    >initialise(mWindow,mSceneMgr);
  4.     mGui=new MyGUI::Gui;
  5.     mGui->initialise();
  6.     MyGUI::ResourceManager::getInstance().load("MyGUI_BlueWhiteTheme.xml");
  7.     MyGUI::LayoutManager::getInstance(
    ).load("test.layout");

  8.     MyGUI::Button* m_pButton=MyGUI::Gui::getInstance().findWidget<MyGUI::Button>("Quit",false);
解釋一下:
第一句Ogre::ResourseGroup::getSingleton().initialiseAllResourseGroups()是通過呼叫 initialiseAllResourseGroups()函式初始化ogre的資源組,也就是 ResourseGroup,這是Ogre裡的一個管理資源的類,MyGUI經常與資源打交道,所以要使用MyGUI裡的資源必須先初始化資源組。
第二句和第三句是初始化MyGUI的Ogre平臺的指標mPlatform,當然,在建構函式之前必須宣告MyGUI::OgrePlatform* mPlatform
第四句和第五句是初始化MyGUI的圖形介面指標mGui,這個也必須在建構函式之前宣告MyGUI::Gui* mGui
第六句呼叫MyGUI::ResourceManager::getInstance().load()函式載入一個.xml資原始檔,以便渲染之用,相當於初始化資源。
第七句同樣是呼叫load()載入,所不同的是這次是載入一個.layout檔案,對應的類自然就是LayerManager
第八句通過MyGUI::Button* m_pButton宣告一個button的指標,實質上就是通過findWidget建立一個按鈕,第一個引數是按鈕的名稱,第二個引數是按鈕是凸起還是凹下,true代表凹下,false代表凸起
最終效果:

看到這裡,也許有人會問,咱們剛剛不是建立了一個名為"Quit"的button嗎?怎麼會有兩個呢?另一個是從何而來呢?其實奧祕就在test.layout檔案裡,不信我們可以用MyGUI自帶的工具layoutEditor開啟看看:

果不其然,問題果然出在test.layout檔案裡!
其實,layoutEditor不僅可以檢視.layout檔案,還可以根據自己的需要建立.layout檔案,使其達到自己想要的效果。