osg创建Text对象

要在程序中创建text,通常需要三步:
1.创建一个Font对象。
2.创建一个Text对象,设置参数,将Font对象关联到Text对象中。
3.用addDrawable()将Text对象添加到Geode中,一个Geode节点可以添加多个Text对象,也可以创建多个Geode节点,根据需求选择。

首先需要添加两个头文件:

#include <osgText/Font>
#include <osgText/Text>

创建一个Font对象:使用cour.ttf

osg::ref_ptr<osgText::Font> font = osgText::readFontFile("fonts/cour.ttf");

如果readFontFile()函数没有找到指定的字体,或者文件打开失败,将返回NULL。

创建一个Text对象:关联font,显示“hello, world”

osg::ref_ptr<osgText::Text> text = new osgText::Text;
text->setFont(font.get());
text->setText("hello, world");

如果没有使用Text::setFont(),会使用缺省值且保证可用的字体来替换。
Text::setText会将std::String自动转换为osgText::String,以实现多字符编码的支持。

设置文字颜色:设置为蓝色

text->setColor(osg::Vec4(0.f, 0.f, 1.f, 1.f);

缺省为白色

设置文字尺寸:设置高度为16个物体坐标单元

text->setCharacterSize(16.f);

缺省高度为32个物体坐标单元,宽度可变,由字体决定
如果想使文字保持恒定尺寸:

text->setCharacterSizeMode(osgText::Text::SCREEN_COORDS);

Text将根据视角,适当调整文字,保持在屏幕上恒定尺寸

设置分辨率:64X64像素

text->setFontResolution(64, 64);

缺省为32X32,字体分辨率上升会使硬件资源需求上升。

设置坐标位置:在(1,1,1)处绘制文字

text->setPosition(osg::Vec3(1.f, 1.f 1.f));

如果没有使用Text::setPosition(),对象坐标会在原点

设置文字方向:始终朝向视口的文字

text->setAxisAlignment(osgText::text::SCREEN);

Text::setAxisAlignment的输入参数为一个Text::AxisAlignment枚举量,共有七种:Text::XY_PLANE(缺省) , Text::XZ_PLANE,Text::YZ_PLANE 将文字面向某个轴,放置在指定的平面上; Text::REVERSED_XY_PLANE,Text::REVERSED_XZ_PLANE 和 Text::REVERSED_YZ_PLANE 类似,但是文字朝向指定轴的负向; Text::SCREEN 使文字总是朝向屏幕。

设置对齐方式

text->setAlignment(osgText::Text::CENTER_TOP);

Text::setAlignment()共有十五种Text::AlignmentYype枚举量:RIGHT_BOTTOM,CENTER_BOTTOM,LEFT_BOTTOM, RIGHT_BOTTOM_BASE_LINE,CENTER_BOTTOM_BASE_LINE, LEFT_BOTTOM_BASE_LINE,RIGHT_BASE_LINE,CENTER_BASE_LINE,LEFT_BASE_LINE(缺省), RIGHT_CENTER,CENTER_CENTER, LEFT_CENTER,RIGHT_TOP,CENTER_TOP, LEFT_TOP。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值