osgText::Text简介

5 篇文章 0 订阅
1 篇文章 0 订阅

 

 

转载并添加部分内容: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);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值