Irrlicht 1.8.4中加入基于D3D9的系统字体支持

Irrlicht是一个基于C++开源的3D引擎,中文名叫鬼火引擎。成立团队现在基本走光了,只剩下一个德国人Michael还在苦苦坚持。老实讲,不推荐大家去用这款引擎,特别是商用。因为实在太老了,最高支持到D3D9,特别对字体的支持很差,对3D模型的加载支持也很差。但作为C++的3D引擎的学习材料还是可以的。

由于Irrlicht自己的字体只能使用图片字体,像这样的:

基本不能支持中文,所以我基于D3D9的字体sample将系统字体的支持添加到IGUIFont里面。这部分代码我也发给了Michael,他表示现在忙成狗,估计近期都无法抽出时间上传。

更新后的字体使用是这样的:

    gui::IGUIEnvironment* guiEnv = device->getGUIEnvironment();
	gui::IGUIFont* fontyh40h = NULL, *fontyh40n = NULL, *fontarial40n = NULL;
	gui::SD3D9FontDesc desc(L"微软雅黑", 40, FW_HEAVY, false);
	fontyh40h = guiEnv->getFont(desc);
	desc.fontWeight = FW_NORMAL;
	desc.italic = true;
	fontyh40n = guiEnv->getFont(desc);
	desc = gui::SD3D9FontDesc(L"Arial", 40, FW_NORMAL, false);
	fontarial40n = guiEnv->getFont(desc);

增加了一个结构体,SD3D9FontDesc:

        struct SD3D9FontDesc
    	{
			wchar_t fontName[100];
			u32 fontSize;
			u32 fontWeight;
			bool italic;
			IRRLICHT_API SD3D9FontDesc(wchar_t* fontName, u32 fontSize, u32 fontWeight, bool italic);
			bool operator ==(const SD3D9FontDesc &decs) const;
			bool IsEqual(const SD3D9FontDesc* decs) const;
		};

通过字体名,字体大小,字体重量也就是粗细,还有是否斜体这四个属性来从系统字体库中生成字体。

draw的函数目前和过去用同一个,但是Clip是无效的,而且无法支持右对齐和底部对齐。

fontyh40h->draw(L"微软雅黑40号,Heavy.",
					rect,
					video::SColor(255, 255, 255, 255),
					true, true);

打包的库文件下载:https://download.csdn.net/download/luoyu510183/10854154

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值