osg中字体一般都是通过的Text来实现的,继承自TextBase
设置字体并且和屏幕平行显示;
void createText2() {
osg::ref_ptr<osg::Group> root = new osg::Group;
osg::ref_ptr<osg::Node> cowNode = osgDB::readNodeFile("cow.osgt");
root->addChild(cowNode);
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
osg::ref_ptr<osgText::Text> text = new osgText::Text;
text->setColor(osg::Vec4(1.0, 0.0, 1.0, 0.5));//设置字体颜色
text->setText("Hello aaa!");
text->setPosition(osg::Vec3(0.0, 0.0, 10.0));//设置字体的位置
text->setCharacterSize(3.0);//设置字体大小
text->setRotation(osg::Quat(90.0, osg::X_AXIS));//设置字体沿着X轴旋转90度
text->setFont("dummy.ttf");
#if 0
text->setAutoRotateToScreen(true);//设置字体不旋转
#endif
geode->addChild(text);
#if 1
osg::ref_ptr<osgText::Text3D> text3D = new osgText::Text3D;
text3D->setCharacterDepth(3.0);
text3D->setText("Hello AAA!");
text3D->setPosition(osg::Vec3(0.0, 0.0, -10.0));//设置字体的位置
text3D->setCharacterSize(3.0);//设置字体大小
text3D->setFont("arial.ttf");
text3D->setDrawMode(osgText::Text3D::TEXT | osgText::Text3D::BOUNDINGBOX);
text3D->setAxisAlignment(osgText::Text3D::XZ_PLANE);
osg::ref_ptr<osg::Geode> geode3D = new osg::Geode;
geode3D->addDrawable(text3D);
root->addChild(geode);
root->addChild(geode3D);
#endif
root->addChild(geode);
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
viewer->addEventHandler(new osgViewer::WindowSizeHandler());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
}
aaa