注:本文发布日期为2008年(ogre1.4.x版本的时间),关于更新到2010年Ogre1.7.x版本与显示中文的方法,请参看本文评论中4、5、6楼给出的提示。
在Ogre官方网站的wiki上有一个MovableText类:http://www.ogre3d.org/wiki/index.php/MovableText(新wiki的地址为:http://www.ogre3d.org/tikiwiki/MovableText)
它可以用来在SceneNode旁显示二维字,使用时只要构造一个MovableText对象,然后将其挂在SceneNode下就可以了。其实我们可以用它显示各种二维字,包括像Overlay一样的东西。在我们的工程中,我们用它来显示飞行模拟器各仪表上的二维文字。一、 这里给的是我对MovableText的一个改进版,主要增加两项功能:
1.可以使文字反色(或者说是高亮)
通过给material增加一个pass,然后进行混合来实现:
1{
2Pass *_pass0 = mpMaterialReverse->getBestTechnique()->getPass(0);
3Pass *_pass = mpMaterialReverse->getBestTechnique()->createPass();
4mpMaterialReverse->getBestTechnique()->movePass(1,0);
5_pass0->setSceneBlending(SBF_ZERO,SBF_ONE_MINUS_SOURCE_ALPHA);
6}
2Pass *_pass0 = mpMaterialReverse->getBestTechnique()->getPass(0);
3Pass *_pass = mpMaterialReverse->getBestTechnique()->createPass();
4mpMaterialReverse->getBestTechnique()->movePass(1,0);
5_pass0->setSceneBlending(SBF_ZERO,SBF_ONE_MINUS_SOURCE_ALPHA);
6}
2.设置文字与SceneNode的相对位置。
在写字时通过位置偏移计算三角形顶点坐标实现。
二、这个类使用方法很简单:
1{
2m_Text = new MovableText("Title","OGRE" ,"BlueHighway", 5, ColourValue::Green);
3m_Text->setRelativePos(-10, 3);
4m_Text->setTextAlignment(MovableText::H_CENTER, MovableText::V_BELOW);
5m_MonsterSceneNode->attachObject(m_Text);
6}
在需要高亮显示时调用:
2m_Text = new MovableText("Title","OGRE" ,"BlueHighway", 5, ColourValue::Green);
3m_Text->setRelativePos(-10, 3);
4m_Text->setTextAlignment(MovableText::H_CENTER, MovableText::V_BELOW);
5m_MonsterSceneNode->attachObject(m_Text);
6}
m_Text->reverseColor();
代码在 这里 下载
--ArenAK--