Ogre輸出螢幕2d文字(Overlay文字),ogreoverlay

來源:互聯網
上載者:User

Ogre輸出螢幕2d文字(Overlay文字),ogreoverlay

參考: http://www.cnblogs.com/wanghao111/archive/2009/08/11/1543495.html
參考:http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html

參考: Pro OGRE 3D Programming

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 轉載請標明來源)

 

Ogre文字的產生方法分為:設定檔建立 和 程式建立兩中.  兩者異曲同工, 都是實作類別似定義結構

首先文字定義說明, 然後定義文字2d層,在層中添加container,再加TextArea.
2d-overlay
->container
->container/element

其中設定檔配置比較靈活易於理解,介紹如下: (特別感謝參考文章的作者,要不然還真不知道咋弄.)

1. 設定檔建立-建立英文文字
如果在設定檔中建立的話,方法是:
例如
a. 在sample.fontdef中配置字型定義
MyFont1
{
 type truetype
 source solo5.ttf
 size 16
 resolution 96
}

b. 建立sample.overlay,在裡面定義
(注意:範圍不能過大,否則可能不能正常展示)
(注意: material Core/StatsBlockCenter 為文字底色背景)
MyOverlay
{
 zorder 499
 container BorderPanel(MyContainer3)
 {
  metrics_mode pixels
  left 0
  top 10
  width 300
  height 200
  material Core/StatsBlockCenter
  
  element TextArea(MyTextArea3)
  {
   metrics_mode pixels
   top 10
   left 50
   width 200
   height 50
   font_name MyFont1
   char_height 19
   caption who am i
   colour_top 1 1 0.7
   colour_bottom 1 1 0.7
  }
 }
}

c. 需要在程式中對MyOverlay的顯示
 // 載入字型
 Ogre::FontManager::getSingleton().getByName("MyFont1")->load();
 // 顯示二維層
 Ogre::OverlayManager* p = Ogre::OverlayManager::getSingletonPtr();
 Ogre::Overlay* pOverlay = p->getByName("MyOverlay");
 pOverlay->show();

 


3. 設定檔建立-建立中文文字
建立中文文字的話,需要中文字型檔的支援
參考http://www.cnblogs.com/wanghao111/archive/2009/08/11/1543495.html這篇文章的介紹
例如使用simhei.ttf,添加幾個文字
a. 在sample.fontdef中配置字型定義
MyChsFont1
{
 type truetype
 source simhei.ttf
 size 16
 resolution 96
 code_points 25105-25105 26159-26159 35841-35841 33-166
}
注意: code_points中為漢字和英文字母的unicode的wchar十進位值. 漢字字型檔比較大,全載入的話比較耗時.這種使用哪些加哪些的方法據說比較節省消耗.


b.在sample.overlay中定義
MyOverlay
{
 zorder 499
 container BorderPanel(MyContainer3)
 {
  metrics_mode pixels
  left 0
  top 10
  width 300
  height 200
  material Core/StatsBlockCenter
  
  element TextArea(MyTextArea4)
  {
   metrics_mode pixels
   top 70
   left 50
   width 200
   height 50
   font_name MyChsFont1
   char_height 19
   caption 我是誰
   colour_top 1 1 0.7
   colour_bottom 1 1 0.7
  }
 }
}

c.在程式中,載入這個字型
 // 載入字型
 Ogre::FontManager::getSingleton().getByName("MyChsFont1")->load();
 // 顯示二維層
 Ogre::OverlayManager* p = Ogre::OverlayManager::getSingletonPtr();
 Ogre::Overlay* pOverlay = p->getByName("MyOverlay");
 pOverlay->show();

 

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 轉載請標明來源)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.