osg中文字的使用

前言

在 osg 中,osgText 组件负责所有文字渲染细节,不仅支持设置字体、颜色、尺寸和位置,还允许配置字符大小模式与自动朝向屏幕旋转等高级特性,以实现丰富的文字显示效果。


目录

  • 1 osg绘制文字示例
  • 2 osgText类图

正文

1 osg绘制文字示例

cpp 复制代码
#include <osgViewer/Viewer>
#include <osgText/Text>
#include <osgText/Text3D>
#include <osgGA/TerrainManipulator>
#include <osgViewer/ViewerEventHandlers>


int main(int argc, char** argv)
{
	osgViewer::Viewer viewer;
	viewer.setCameraManipulator(new osgGA::TerrainManipulator());
	viewer.addEventHandler(new osgViewer::ScreenCaptureHandler);
	osg::ref_ptr<osgText::Text3D> text = new osgText::Text3D;
	text->setText("TextTest");
	text->setFont("fonts/arial.ttf");
	text->setColor(osg::Vec4(0.0, 1.0, 1.0, 1.0));
	text->setCharacterSize(20);
	text->setPosition(osg::Vec3(0.0, 0.0, 0.0));
	osg::ref_ptr<osg::Geode> geode = new osg::Geode;
	geode->addDrawable(text);
	viewer.setSceneData(geode);
	return viewer.run();
}

如上代码为osgText::Text使用代码,通过setText方法设置文字内容、setFont方法设置文字字体、setColor设置文字颜色、setCharacterSize设置位子大小(高度)、setPositon设置文字位置。将osgText::Text替换为osgText::Text3D可显示三维文字。显示效果如下:

|----------------------------------------------------------------------------|----------------------------------------------------------------------------|
| | |
| 二维文字 | 三维文字 |

其中三维文字相比二维文字轮廓更清晰,从原理上二维文字采用QUAD贴图方案会随着放大而逐渐模糊,而三维文字是纯矢量方案,文字通过三角网构成,无论怎样缩放其轮廓仍然清晰。

同时三维文字的显示需依赖设置的字体,当设置的字体导入失败时,则三维文字不显示,字体文件ttf的加载依赖osgDB_freetype插件,在编译osg库时需设置freetype三方库。

2 osgText类图

osgText::Text和osgText::Text3D是osgText::TextBase的两个不同子类,上节中设置文字内容、字体、颜色、大小、位置均为osgText::TextBase的方法。osgText::TextBase内置了些高级方法setCharacterSizeMode、setAutoRotateToScreen用于设置文字大小模式与是否自动朝向屏幕旋转。

相关推荐
扶尔魔ocy8 天前
【qt openGL入门笔记】windows编译MinGW版本的osgearth(2.10.1)
qt·opengl·osg
扶尔魔ocy9 天前
【QT OpenGL】知识点编目及传送门
qt·opengl·osg
扶尔魔ocy22 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行并进行态势标绘(四)
qt·opengl·osg
扶尔魔ocy24 天前
【qt openGL入门笔记】OSG实现显示飞机模型飞行的点迹(二)
qt·opengl·osg
扶尔魔ocy24 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行(三)
opengl·osg
扶尔魔ocy25 天前
【qt openGL入门笔记】OSG实现飞机模型在网格图上飞行
qt·opengl·osg
directx3d_beginner8 个月前
10,cookbook的lod示例
osg
directx3d_beginner8 个月前
8,将0级简模文件和精模文件同时放入pagedlod
osg
directx3d_beginner8 个月前
9,0级建模文件和0级精模文件写成根节点
osg
directx3d_beginner8 个月前
5,保存4个一级节点
osg