首页 > 代码库 > Ogre输出屏幕2d文字(Overlay文字)

Ogre输出屏幕2d文字(Overlay文字)

参考: 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 转载请标明来源)

 

Ogre输出屏幕2d文字(Overlay文字)