整理自《OpenSceneGraph三维渲染引擎编程指南》
在OSG中,为了显示高质量的文字,专门定义了一个新的名字空间来管理场景中的文字渲染,这个名字空间中的类主要用于加载字体和控制文字渲染的各种属性,该空间主要包括下面几个类。
class FadeText //渐变文字
class Font //字体
class Font3D //3D字体
class VectorUInt //向量单元
class String //字符串——用于多字节字符和各类文字编码
class Text //文字
class Text3D //3D文字
class TextBase //文字基类
其中又以TextBase这个基类比较重要,其定义了文字渲染的基本接口,文字的主要属性包括颜色、位置、方向、大小模式、分辨率、对齐方式、输出格式、绘制模式、背景类型和颜色倾斜模式等。
下面介绍一些其成员函数:
1> 颜色:void setColor(const osg::Vec4 &color);
2>位置: void setPosition(const osg::Vec3 &pos);
3>方向: void Text::setAxisAlignment(setAxisAlignment axis);
4>文字方向的枚举方式如下:
enum AxisAlignment
{
XY_PLANE, //xy面
REVERSED_XY_PLANE, //xy面的反面
XZ_PLANE, //xz面
REVERSED_XZ_PLANE, //xz面的反面
YZ_PLANE, //yz面
REVERSED_YZ_PLANE, //yz面的反面
SCREEN, //屏幕
USER_DEFINED_ROTATION //用户自定义旋转
};
5>大小模式: void setCharacterSizeMode(CHaracterSizeMode mode);
6>文字大小模式枚举变量如下:
enum CharacterSizeMode
{
OBJECT_COORDS, //默认模式
SCREEN_COORDS //根据屏幕坐标自动缩放
OBJECT_COORDS_WITH_MAXIMUM_SCREEN_SIZE_CAPPED_BY_FONT_HEIGHT //根据视点自动缩放
};
7>分辨率:void setFontResolution(unsigned int width,unsigned int height)
8>对齐方式: void Text::setAlignment(AlignmentType alignment);
对齐方式枚举如下:
enum AlignmentType
{
LEFT_TOP, //左上
LEFT_CENTER, //左中
LEFT_BOTTOM, //左下
CENTER_TOP, //中上
CENTER_CENTER, //中中
CENTER_BOTTOM, //中下
RIGHT_TOP, //右上
RIGHT_CENTER, //右中
RIGHT_BOTTOM, //右下
LEFT_BASE_LINE, //左基线
CENTER_BASE_LINE, //中间的基线
RIGHT_BASE_LINE, //右基线
LEFT_BOTTOM_BASE_LINE, //左下基线
CENTER_BOTTOM_BASE_LINE, //中下基线
RIGHT_BOTTOM_BASE_LINE, //右下基线
BASE_LINE = LEFT_BASE_LINE //default, //左基线为默认方式
};
9>输出格式: void setLayout(Layout layout);
文字输出格式枚举模式如下:
enum Layout
{
LEFT_TO_RIGHT, //default,默认格式从左到右
RIGHT_TO_LEFT, //从右到左
VERTICAL //垂直
};
10>绘制模式:
void setDrawMode(unsigned int mode);
绘制模式枚举如下:
enum DrawModeMask
{
TEXT = , //默认模式文字
BOUNDINGBOX=, //包围盒
ALIGNMENT= //对齐
};
11>背景类型: void setBackdropType(BackdropType type);