使用Overlay显示中文

在本篇文章中所要说的是直接使用Ogre显示中文,一般Ogre中的Overlay来显示(当然还有可能会在公告板中用到)。

在自Ogre1.4版本后,在Ogre中就增加了一个DisplayString用于在字符串中使用unicode字符,这样在程序中就可以使用汉字了。http://www.cnblogs.com/gogoplayer/archive/2008/11/21/1189874.html这里,我们可以找到一种解决方法,通过在字体脚本中添加中文unicode来显示中文。 下面让我们先从程序开始吧!!

一定要包含下面两个头文件:

#include "OgreFontManager.h"
#include "OgreTextAreaOverlayElement.h"

在Ogre中还有一个类是用于字体的,它就是“Font”了。下面我们来加载一个中文字体:

  1. 创建一个Font:
  2. Ogre::FontPtr tempFont = Ogre::FontManager::getSingleton().create("TempFont","General");//第一个参数是字体名、第二个参数是字体要加入的资源组
  3. tempFont ->setSource("simhei.ttf");//设置字体源(字体文件名,这里加载华文楷体)
  4. tempFont ->setType(Ogre::FT_TRUETYPE);//设置字体类型(这里是"truetype"类型,Ogre支持二种类型,另 一种"image"类型可以看这里:http://hghhe.blog.163.com/blog/static/32377568200962484620536
  5. tempFont ->setTrueTypeSize( 18 );//设置字体大小(这里不是显示汉字的大小,而是生成纹理的大小,也就是说如果值越 大生成纹理所花的时间也就越多)
  6. tempFont ->setTrueTypeResolution( 96 );//设置字体的打印分辨率,一般为96
  7. tempFont ->addCodePointRange(OgreFont::CodePointRange(19968,40869));//添加纹理生成范围。19969转成16进制就 是0x4E00,这个是汉字'一'对应的unicode编码。40869是unicode编码中最后一个汉字,这个汉字我的输入法没法 打出来......   更多关于汉字的unicode编码请看:http://www.chi2ko.com/tool/CJK.htm      如果我们这样指定的话, Ogre就会生成这些汉字纹理,也就是说我们可以在程序中使用所有基本的汉字了。 
  8. 当然我们还不能使用英文字母,添加:
  9. tempFont ->addCodePointRange(Font::CodePointRange(33,255));//就可以使用英文了。 
  10. 在实际的应用中还应该加入半角和全角符号的unicode编码范围!!!
  11. 最后一步,
  12. tempFont ->load();


让我们来显示中文吧。可以在overlay脚本中定义TextAreaOverlayElement或在程序中生成(你可能需要添加头文件OgreTextAreaOverlayElement.h),这里假设textElement就是一个TextAreaOverlayElement类型的指针(可以用OverlayManager::getOverlayElement方法获取)。 

显示汉字方法如下:

textElement->setFontName("TempFont");//(用脚本的话就无需这步设置字体了)    

DisplayString chaText = L"使用Overlay显示汉字!!";  

textElement->setCaption( chaText ); //这样就可以了。

下面发二张我测试时截的图片

示了几百个汉字

按下Pause键后显示另一段汉字


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值