转载并添加部分内容:https://www.cnblogs.com/xiaocainiao2hao/p/4544273.html
整理自《OpenSceneGraph三维渲染引擎编程指南》
在OSG中,为了显示高质量的文字,专门定义了一个新的名字空间来管理场景中的文字渲染,这个名字空间中的类主要用于加载字体和控制文字渲染的各种属性,该空间主要包括下面几个类。

1 class FadeText //渐变文字 2 class Font //字体 3 class Font3D //3D字体 4 class VectorUInt //向量单元 5 class String //字符串——用于多字节字符和各类文字编码 6 class Text //文字 7 class Text3D //3D文字 8 class TextBase //文字基类

其中又以TextBase这个基类比较重要,其定义了文字渲染的基本接口,文字的主要属性包括颜色、位置、方向、大小模式、分辨率、对齐方式、输出格式、绘制模式、背景类型和颜色倾斜模式等。
下面介绍一些其成员函数:
1> 颜色:void setColor(const osg::Vec4 &color);
2>位置: void setPosition(const osg::Vec3 &pos);
3>方向: void Text::setAxisAlignment(setAxisAlignment axis);
4>文字方向的枚举方式如下:

1 enum AxisAlignment
2 {
3 XY_PLANE, //xy面
4 REVERSED_XY_PLANE, //xy面的反面
5 XZ_PLANE, //xz面
6 REVERSED_XZ_PLANE, //xz面的反面
7 YZ_PLANE, //yz面
8 REVERSED_YZ_PLANE, //yz面的反面
9 SCREEN, //屏幕
10 USER_DEFINED_ROTATION //用户自定义旋转
11 };

5>大小模式: void setCharacterSizeMode(CHaracterSizeMode mode);
6>文字大小模式枚举变量如下:

1 enum CharacterSizeMode
2 {
3 OBJECT_COORDS, //默认模式
4 SCREEN_COORDS //根据屏幕坐标自动缩放
5 OBJECT_COORDS_WITH_MAXIMUM_SCREEN_SIZE_CAPPED_BY_FONT_HEIGHT //根据视点自动缩放
6 };

7>分辨率:void setFontResolution(unsigned int width,unsigned int height)
8>对齐方式: void Text::setAlignment(AlignmentType alignment);
对齐方式枚举如下:

1 enum AlignmentType
2 {
3 LEFT_TOP, //左上
4 LEFT_CENTER, //左中
5 LEFT_BOTTOM, //左下
6 CENTER_TOP, //中上
7 CENTER_CENTER, //中中
8 CENTER_BOTTOM, //中下
9 RIGHT_TOP, //右上
10 RIGHT_CENTER, //右中
11 RIGHT_BOTTOM, //右下
12 LEFT_BASE_LINE, //左基线
13 CENTER_BASE_LINE, //中间的基线
14 RIGHT_BASE_LINE, //右基线
15 LEFT_BOTTOM_BASE_LINE, //左下基线
16 CENTER_BOTTOM_BASE_LINE, //中下基线
17 RIGHT_BOTTOM_BASE_LINE, //右下基线
18 BASE_LINE = LEFT_BASE_LINE //default, //左基线为默认方式
19 };

9>输出格式: void setLayout(Layout layout);
文字输出格式枚举模式如下:
enum Layout
{
LEFT_TO_RIGHT, //default,默认格式从左到右
RIGHT_TO_LEFT, //从右到左
VERTICAL //垂直
};
10>绘制模式:
void setDrawMode(unsigned int mode);
绘制模式枚举如下:
enum DrawModeMask
{
TEXT = 1, //默认模式文字
BOUNDINGBOX=2, //包围盒
ALIGNMENT=3 //对齐
};
TEXT = 1, //默认模式文字

BOUNDINGBOX=2, //包围盒

ALIGNMENT=3, //对齐

11>背景类型: void setBackdropType(BackdropType type);
text->setBackdropType(osgText::Text::NONE); 之前的都是这个

text->setBackdropType(osgText::Text::DROP_SHADOW_BOTTOM_RIGHT);

text->setBackdropType(osgText::Text::OUTLINE);


本文深入探讨了OpenSceneGraph(OSG)中文字渲染的核心概念和技术细节。介绍了TextBase类及其关键成员函数,如设置文字颜色、位置、方向、大小模式、分辨率、对齐方式、输出格式、绘制模式和背景类型等。同时,详细解析了各种枚举类型的含义,为开发者提供了全面的文字渲染控制指南。
2327

被折叠的 条评论
为什么被折叠?



