整理自《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=4 //对齐 };
11>背景类型: void setBackdropType(BackdropType type);