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用于设置文字大小模式与是否自动朝向屏幕旋转。

相关推荐
CHPCWWHSU2 个月前
osg中相机矩阵到vsg相机矩阵的转换
opengl·osg·投影矩阵·vulkan·vsg
幽迷狂4 个月前
AFSIM入门教程03.03:更新所有依赖库版本
c++·qt·仿真·osgearth·osg·军事·afsim
星火撩猿7 个月前
如何配置osg编译使支持png图标加载显示
osgearth·osg·地图图标添加
xiyangxiaoguo8 个月前
使用OpenSceneGraph (osg)实现一个星系漫游
osg
slntJy8 个月前
ubantu&windows搭建gis开发环境(qt+osg+osgearth+osgqt)
gis·win11·osgearth·ubantu·osg·osgqt
CHPCWWHSU8 个月前
vulkanscenegraph显示倾斜模型(5.4)-相机操纵器
c++·osg·vulkan·vsg
CHPCWWHSU8 个月前
vulkanscenegraph显示倾斜模型(5.3)-相机
c++·osg·vulkan·vsg
是阿牛啊9 个月前
【ubuntu20安装usv_sim_lsa (无人水面航行器模拟环境) - v0.3】
ubuntu·ros·osg·usv_sim
蜕变的土豆9 个月前
十一、OSG学习笔记-操作系统接口
osg