osg显示文字

在osg中显示文字的时候,遇到了两个问题:

1、编译好的osg居然缺少插件,一看果然少了osgdb_freetype插件;

2、中午字体无法显示,最后查到是需要转成宽字节。

 

以下是Text文本节点的相关属性和设置,字体设置那里,有些字体不能显示中文是正常的,建议使用“simhei.ttf”

osg::ref_ptr<osgText::Font> font = osgText::readFontFile("fonts/simhei.ttf");  //文本使用字体
//test文本节点
osg::ref_ptr<osgText::Text>text = new osgText::Text; 	
text->setFont(font);//设置字体样式
text->setCharacterSize(size);//字体大小
text->setPosition(pos);  //设置字体放置位置
text->setColor(osg::Vec4(1.0,1.0,1.0,1.0));  //设置字体颜色
text->setAlignment(osgText::Text::CENTER_BOTTOM);//文字显示方向
//text->setAxisAlignment(osgText::Text::SCREEN);//获取文字对称成方式正对屏幕方向
//text->setCharacterSizeMode(osgText::Text::SCREEN_COORDS);//跟随视角不断变化,离物体越远,文字越大
text->setAutoRotateToScreen(true);//跟随视角不断变化,但离物体越远,文字越小,和现实当中像类似
text->setBackdropType(osgText::Text::OUTLINE);//对文字进行描边
text->setBackdropColor(osg::Vec4(1.0,0.0,0.0,1.0));//描边颜色
text->setDrawMode(osgText::Text::TEXT | osgText::Text::BOUNDINGBOX);//添加文字边框
text->setAxisAlignment(osgText::Text::XZ_PLANE);//获取文字对称成方式 

将char转换成wchar即转换成宽字节,需要注意的是要引入头文件#include<window.h>

//第一种转换成宽字节
int requiredSize=mbstowcs(NULL,string,0);//如果mbstowcs第一参数为NULL那么返回字符串的数目
wchar_t* wText=new wchar_t[requiredSize+1];
mbstowcs(wText,string,requiredSize+1);//由char转换成wchar类型
text.setText(wText);
delete wText;   

//第二种转换成宽字节
char *data1 = "滑坡体长约300米";
DWORD len1 = MultiByteToWideChar(CP_ACP, 0, data1, -1, NULL, 0);//得到data的字节数
TCHAR *des1 = new TCHAR[len1];
MultiByteToWideChar(CP_ACP, 0, data1, -1, des1, len1);
text1->setText(des1);//设置显示的文字

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值