要在程序中创建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。