osg显示文字总结

符号 阅读:764 2021-08-26 14:18:32 评论:0
本文章主要介绍了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);//设置显示的文字

标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

我的关注

全民解析

搜索
关注我们