看了官方引擎显示文字的方法居然是影射位图。。。。实在悲剧,开发者居然没考虑其他语言的问题,因为很多语言根本不由小量的字母组成,就算硬用中文字影射的方法,这个文件不知道会有多大。再就是在渲染环境里我们也没可能让美工来打字吧?再退一步好了,如果要设置字体大小这样的设定,影射根本不实际。
无奈下在官方的找有无方法弥补这个问题,发现有个日本的网友zgock做了个类,这个类是使用freetype达到我们文字显示的要求。http://www.zgock-lab.net/irrlicht/
下边是如何支持中文:(我的引擎版本是:irrlicht-1.7.2,IDE是:VS2008)
1.IDE--工具--属性vc++目录,包含文件,添加freetype的include目录,库文件添加freetype的objs目录
2.复制项目需求文件去项目里
3.在解决方案里添加这两个文件(添加现有项)
4.在项目属性--链接器--输入--附加依赖项--追加freetype244MT_D.lib Irrlicht.lib
5.若出现lib警告,可以在项目属性--链接器--输入--忽略特定库--追加libcmtd.lib
6.使用方法如下:
#include "CGUITTFont.h"
//设置字体,最后一次参数为字体大小(如果字体文件不存在,程序将会终止)
CGUITTFont* font = gui::CGUITTFont::createTTFont(env, "c:/windows/fonts/simsun.ttc", 12);
if (font) skin->setFont(font);
//现在菜单支持中文了
env->addButton(rect<s32>(10,240,110,240 + 32), 0, GUI_ID_QUIT_BUTTON,
L"退出", L"终止程序");
这个东西折腾了我好多时间,希望官方以后加上这个多语言支持吧。