#include <Windows.h>

#include <osg/Geode>

#include <osg/Geometry>

#include <osgText/Text>

#include <osgViewer/Viewer>

#include <locale.h>

#include <osgDB/ReadFile>

void setupProperties(osgText::Text& textObject,osgText::Font* font,float size,const osg::Vec3& pos )

{

 textObject.setFont(font);//

 textObject.setCharacterSize(size);//字体大小
textObject.setPosition(pos);
textObject.setColor(osg::Vec4(1.0,1.0,1.0,1.0));
textObject.setAlignment(osgText::Text::CENTER_BOTTOM);//文字显示方向
//textObject.setAxisAlignment(osgText::Text::SCREEN);//获取文字对称成方式正对屏幕方向
//textObject.setCharacterSizeMode(osgText::Text::SCREEN_COORDS);//跟随视角不断变化,离物体越远,文字越大
textObject.setAutoRotateToScreen(true);//跟随视角不断变化,但离物体越远,文字越小,和现实当中像类似
textObject.setBackdropType(osgText::Text::OUTLINE);//对文字进行描边
textObject.setBackdropColor(osg::Vec4(1.0,0.0,0.0,1.0));//描边颜色
textObject.setDrawMode(osgText::Text::TEXT | osgText::Text::BOUNDINGBOX);//添加文字边框 textObject.setAxisAlignment(osgText::Text::XZ_PLANE);//获取文字对称成方式 } void createContent(osgText::Text& textObject,const char* string) { int requiredSize=mbstowcs(NULL,string,);//如果mbstowcs第一参数为NULL那么返回字符串的数目 wchar_t* wText=new wchar_t[requiredSize+]; mbstowcs(wText,string,requiredSize+);//由char转换成wchar类型 textObject.setText(wText); delete wText; } int main() { setlocale(LC_ALL,".936");// 配置地域化信息 const char* titleString="木兰辞\n拟古决绝词简友"; const char* textString={ "人生若只如初见,何事秋风悲画扇;\n" "等闲变却故人心,却道故人心易变;\n" "骊山语罢倾销半,夜雨霖铃终不怨;\n" "何如薄幸锦衣郎,比翼连枝当日愿。" }; osgText::Font* fontHei=osgText::readFontFile("C:\\WINDOWS\\Fonts\\simhei.ttf"); osgText::Font* fontKai=osgText::readFontFile("C:\\WINDOWS\\Fonts\\simkai.ttf"); osg::ref_ptr<osgText::Text> title=new osgText::Text; setupProperties(*title,fontHei,20.0f,osg::Vec3(0.0,0.0,0.0)); createContent(*title,titleString); osg::ref_ptr<osgText::Text> text=new osgText::Text; setupProperties(*text,fontKai,15.0,osg::Vec3(0.0,0.0,-80.0f)); createContent(*text,textString); osg::ref_ptr<osg::Geode> geode=new osg::Geode; geode->addDrawable(osg::createTexturedQuadGeometry(osg::Vec3(-150.0,1.0,-130.0),osg::Vec3(300.0,0.0,0.0),osg::Vec3(0.0,0.0,200.0),1.0,1.0));//创建一个写字板 geode->addDrawable(title.get()); geode->addDrawable(text.get()); osgViewer::Viewer viewer; viewer.setSceneData(geode.get()); return viewer.run(); }

OSG显示文字——自定义显示文字函数的更多相关文章

  1. 写了一个迷你toast提示插件,支持自定义提示文字和显示时间

    写了一个迷你toast提示插件,支持自定义提示文字和显示时间,不想用其他第三方的ui插件,又想要toast等小效果来完善交互的同学可以试试, 代码中还贡献了一段css能力检测js工具函数,做项目的时候 ...

  2. jQuery hover事件鼠标滑过图片半透明标题文字滑动显示隐藏

    1.效果及功能说明 hover事件制作产品图片鼠标滑过图片半透明,标题文字从左到右滑动动画移动显示隐藏 2.实现原理 首先把效果都隐藏,然后定义一个伪类来触发所有的效果,接下来当触发伪类后会有一个遍历 ...

  3. CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容

    CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容,DiV透明其实挺简单,主要是为background定义opacity属性,一般这个是最大值是1,数值越接近1,则越不透明 ...

  4. js实现文字逐个显示

    先把代码摆上了吧: <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtm ...

  5. 文字超出DIV后,隐藏文字并显示...

    <html> <head> <style type="text/css"> #cs{width:100px;height:50px;line-h ...

  6. ActionBar只显示图标不显示文字

    问题:ActionBar菜单项android:showAsAction设置为android:showAsAction="always|withText"或者android:show ...

  7. delphi之完美Splash方案(在TfrmMain.FormCreate里不断调用TfrmSplash显示加载进度文字,并且及时Update显示)

    前言:网上有很多介绍delphi创建闪屏的代码,大多只是在程序开启前显示一个闪屏,但是却没有说如何在闪屏上显示程序加载的进度,于是笔者有意思介绍一下这种闪屏方式. 1.创建一个窗体(TfrmSplas ...

  8. 让TextView里面的文字逐个显示的动画效果实现(1)

    最近使用TextView时想要实现里面的文字逐个显示的动画效果,就如同打字一样. 主要实现思想:新建一个TextView的派生类,先将要逐个显示的字符串保存变量 mOriginalStr 中,然后启动 ...

  9. Ueditor增加文字竖排显示和从右向左输入(支持蒙古文和维吾尔文)

    平时我们在ueditor中都是输入的中文,排版都是从左向右输入.但是当输入一些少数民民族言时,ueditor却不能正常显示. 例如蒙古文字,传统蒙文是竖排书写.如下图:传统蒙古文排文方式,<蒙古 ...

随机推荐

  1. iOS集成微信支付

    微信支付的开发 前言:之前听说过微信支付有很多坑,其实没有想象的那么坑,整体感觉很容易上手,按照它的流程来不会有错!PS:官方的流程看的TMD烦,好啦,废话有点多,进入开发.(ps:每个微信的版本一直 ...

  2. 模拟app上商品详情点击图片放大并且可以切换大图

    主要使用swiper插件,这里使用各小技巧,就是用两个swiper容器,点击一个小图容器,去让大图容器展示出来 小图容器 <div class="q_banner"> ...

  3. laravel中间件源码分析

    laravel中间件源码分析 在laravel5.2中,HTTP 中间件为过滤访问你的应用的 HTTP 请求提供了一个方便的机制.在处理逻辑之前,会通过中间件,且只有通过了中间件才会继续执行逻辑代码. ...

  4. tornado 使用过程中提示‘no module name ioloop’

    千万不要将程序文件命名为tornado.py 不然永远不会运行,因为运行后会在tornado.py里查找ioloop信息,永远找不到...

  5. java+android学习路线图

    java.android学习路线图  看图之前先按住Ctrl键同时滑动鼠标滚轮

  6. 移动网络山寨版(OpenBTS)【2】频段的故事

    OpenBTS 系统有两个看点.一个是无线收发,尤其是频段的处理,另一个是网络系统,尤其是替代传统的基站(BTS),基站控制器(BSC),移动控制中心(MSC),以及(HLR/VLR)的另类方案. 先 ...

  7. 震撼,强烈推荐 OrangeUI For FireMonkey

    今天,高勇上传了一个演示rtx for kbmMW的android应用,我下载测试,被实际的效果给震惊了!万万想不到的,用OrangeUI做的一个List列表,数据通过远程查询,运行效果在我看来,达到 ...

  8. 第52周四ApplicationContext

    ApplicationContext的中文意思是"应用前后关系"应用上下文即容器,它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持.资 ...

  9. 习题3.10 约瑟夫环 josephus问题

    /* assume a header */ /* 双向循环链表 */ struct Node; typedef struct Node * PtrToNode; typedef PtrToNode L ...

  10. 【POJ】1330 Nearest Common Ancestors ——最近公共祖先(LCA)

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18136   Accept ...