游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4092|回复: 1

Irrlicht引擎中文支持核心的编译

[复制链接]

16

主题

191

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2008-4-10 17:27:00 | 显示全部楼层 |阅读模式
    Irrlicht引擎中文支持核心的编译 by 游山玩水(ysws) 2008-4-10

  这篇文章技术含量非常低,仅供刚刚接触Irrlicht引擎的初学者参考。

  编译环境:Windows2000中文版+Visual Studio .NET 2003+DirectX9.0C SDK

  引擎介绍不多说了,最新版下载:http://irrlicht.sourceforge.net/
  注意下面的“X:\irrlicht”指你安装irrlicht引擎的根目录。
  因为原版引擎内核不支持中文,我们需要打上中文支持的补丁,打补丁前先编译一下原版以便配置好编译环境。打开工程X:\irrlicht\source\Irrlicht\Irrlicht7.1.vcproj,生成一次会发现少一些DirectX的头文件,如果你的机器里有就把所需文件拷到X:\irrlicht\include下面,如果没有可以到:http://resource.gameres.com/下载“DirectX9.0C SDK library”,实际只需要14个DirectX的头文件,当然你要懒得一个一个找可以把DirectX的include目录里所有d3d打头的文件都拷到X:\irrlicht\include下面。好了,源文件配齐了,把输出属性配置为: Release|Win32(这样编译出来的dll文件比较小),开始生成,没有意外的话数分钟后你就有了一个比原版更小巧的Irrlicht.dll引擎核心了。在我的电脑上,把显卡驱动、DirectX9.0C都升级后,使用重新编译的Irrlicht.dll,渲染骨骼动画的fps从此前的40+提高到80+,可说效果显著了。
  安装中文支持补丁前先要准备个FreeType库文件,源码下载地址:http://www.freetype.org/,最新的版本是2.3.5,解压出来后打开X:\freetype-2.3.5\builds\win32\visualc\freetype.sln,输出属性配置为: Multithread|Win32,编译后就能在X:\freetype-2.3.5\objs目录下找到编译好的库文件:freetype235MT.lib。
  中文支持补丁的源码下载地址:http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=6513,注意翻到帖子最后,下载最新版的补丁。下来后解压到一个单独的目录,把其中include目录下的所有文件拷到X:\irrlicht\include下面覆盖同名文件,source\Irrlicht目录下的所有.cpp和.h文件拷到X:\irrlicht\include下面覆盖同名文件,把FreeType源码中X:\freetype-2.3.5\include下面的所有文件和目录拷到X:\irrlicht\include下面(其中freetype\internal这个目录里的东西用不着可以把internal目录删掉)。把上面编译好的“freetype235MT.lib”复制到X:\irrlicht\lib\Win32-visualstudio目录下面,至此支持中文内核的源文件算是配齐了。
  打开工程X:\irrlicht\source\Irrlicht\Irrlicht7.1.vcproj,在左边的“gui impl”上按鼠标右键,“添加->添加现有项”依次打开“CGUITTFont.h”和“CGUITTFont.cpp”两个文件,在左边的“Irrlicht”右键打开“属性”,在“链接器->常规->附加库目录”里输上"freetype235MT.lib"所在的相对目录“..\..\lib\Win32-visualstudio”,在"链接器->输入->附加依赖项"里最后加个空格后输入:freetype235MT.lib,把编译器输出属性配置为: Release|Win32后开始生成,没有意外的话数分钟后你就有了一个支持中文的Irrlicht.dll引擎核心了。
  注意有了新的Irrlicht.dll后最好把原来应用程序都重新编译一遍,不然运行时候可能会有无法定位的错误。

  ***中文使用方法要点***

  代码前面首先加上:
#ifdef WIN32
#include <windows.h>
#endif

  在main()里加上下面代码指明使用的中文字体:
c8 tmp[512];
GetWindowsDirectory(tmp,511);
strcat(tmp,"\\fonts\\simsun.ttc");   //使用宋体
IGUIFont *font = env->getFont(tmp,12, false, false);   //字体大小12点
IGUISkin* skin = env->getSkin();
if (font) skin->setFont(font);   //这步做了就能显示中文了

  示例:增加一个中文按钮:
env->addButton(rect<s32>(10,240,110,240 + 32), 0, 101, L"退出", L"关闭本程序");

  示例:增加一个聊天输入框(本框字体颜色大小可以单独指定):
IGUIEditBox* edChat = env->addEditBox(L"聊天", rect<s32>(350, 80, 550, 100));
edChat->setOverrideColor(SColor(0,0,0,255));        //字体颜色设成蓝色
//单独设定字体
font = env->getFont(tmp,16, false, false);
edChat->setOverrideFont(font);

  本人也是刚刚开始学鬼火引擎,VC2003也是为了学习这个引擎最近装上的,此前几乎没使用过C++语言,上面这个中文核心编译流程是花了整整一天时间自己摸索出来的,错误之处请看官达人指正。

  免费开源3D引擎irrlicht爱好者QQ群: 59170681

本文章原文地址

0

主题

3

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2010-11-16 21:11:00 | 显示全部楼层

Re:Irrlicht引擎中文支持核心的编译

大哥 qq???
想学习游戏引擎技术
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-30 12:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表