筆者環境:編譯環境:VS2008Irrlicht SDK:1.3版本
到這裡下載可以:http://irrlicht.sourceforge.net/downloads.html
FreeType: 2.2.1版
http://sourceforge.net/projects/freetype/files/
代碼如下:
Chinese.cpp:#include <irrlicht.h>
#include "TTFontManager.h"
#include "CGUITTFont.h"
using namespace irr;
using namespace irr::core;
using namespace irr::video;
using namespace irr::scene;
using namespace irr::gui;
#pragma comment( lib, "irrlicht.lib" )
#pragma comment( lib, "freetype221MT.lib" )
int main()
{
//獲取設備對象,驅動類型dx9
IrrlichtDevice *device = createDevice(EDT_DIRECT3D9, dimension2d<s32>(640, 480), 16, false, false, false, 0);
if(!device)
return 1;
device->setWindowCaption(L"你好 世界!");//設置窗體標題
IVideoDriver *driver=device->getVideoDriver();//與紋理有關
ISceneManager *smgr=device->getSceneManager();//獲取場景管理器對象
IGUIEnvironment *guienv=device->getGUIEnvironment();//獲取GUI環境對象(和界面相關)
IGUIStaticText *guitxt=guienv->addStaticText(L"Hello World.",rect<int>(10,10,200,20),true);
new TTFontManager( driver );
TTFontManager *ttmgr=TTFontManager::GetSingletonPtr();
IGUIFont *font=ttmgr->getFont("simsun.ttc",24);
ISceneNode *cubeNode=smgr->addCubeSceneNode(100.0f);//添加立方體
ITexture *tex=driver->getTexture("texture.jpg");//獲取貼圖紋理
cubeNode->setMaterialTexture(0,tex);//為立方體設置貼圖紋理
cubeNode->setMaterialFlag(EMF_LIGHTING,false);//設置貼圖與光源無關
//cubeNode->setMaterialType(EMT_TRANSPARENT_ALPHA_CHANNEL);//設置半透明Alpha通道
ICameraSceneNode *camera=smgr->addCameraSceneNode(0,vector3df(100,100,-100),vector3df(0,0,0));
//游戲循環Game Loop
while(device->run())
{
driver->beginScene(true,true,SColor(255,200,200,255));//[[Begin
smgr->drawAll();//全部繪制
guienv->drawAll();//繪制界面元素
font->draw(L"這是一段中文,字體為宋體!",rect<int>(0,200,200,30),SColor(255,0,0,0));
//font->draw(L"中文字體Chinese華文形楷--字體文件3M!", rect<s32>(200,340,800,600),SColor(255,255,255,0) );
driver->endScene();//End]]
}
font->drop();//刪除字體對象
delete ttmgr;//刪除字體管理器對象
device->drop();//刪除設備對象
return 0;
}
其他頭文件見附件。
截圖: