查看: 1753|回复: 3

请教一个关于osg::Text的问题,屏幕上中文英文都不能显示

[复制链接]

该用户从未签到

发表于 2014-1-6 15:18:57 | 显示全部楼层 |阅读模式
#include<osgViewer/Viewer>
#include<osg/Node>
#include<osg/Geode>
#include<osg/Group>
#include<osgDB/ReadFile>
#include<osgDB/WriteFile>
#include<osgText/Text>
#include<osgText/Font>
#include<iostream>
#include<fstream>
#include<istream>
#include<osgUtil/Optimizer>
//创建文字
osg::ref_ptr<osg::Geode>createText()
{
        osg::ref_ptr<osgText::Text>text = new osgText::Text;
        osg::ref_ptr<osgText::Font>font = new osgText::Font();
        //读取字体
        font = osgText::readFontFile("/fonts/simhei.ttf");
        //设置字体文件
        text->setFont(font.get());
   //设置文字信息
        text->setText(L"http://osgChina.社区");
        //设置字体大小
        text->setCharacterSize(0.5f);
        text->setAutoRotateToScreen(true);
        //设置字体颜色
        text->setColor(osg::Vec4(1.0f,0.0f,0.0f,1.0f));
        //设置显示的位置
        osg::Vec3f position = osg::Vec3f(0.0f,-10.0f,0.0f);
        text->setPosition(position);
        //设置对齐方式
        text->setAlignment(osgText::Text::CENTER_TOP);
        //设置旋转方式
        text->setAxisAlignment(osgText::Text::SCREEN);
        //添加到叶节点中
        osg::ref_ptr<osg::Geode>geode = new osg::Geode();
        geode->addDrawable(text.get());
        return geode.get();
}
void  main()
{
        //创建Viewer对象,场景游览器
        osg::ref_ptr<osgViewer::Viewer>viewer = new osgViewer::Viewer();
        // 创建场景组节点
        osg::ref_ptr<osg::Group>root = new osg::Group();
   //创建文字
        osg::ref_ptr<osg::Node>node = createText();
        // 添加到场景
        root->addChild(node.get());
        // 优化场景数据
        osgUtil::Optimizer optimizer;
    optimizer.optimize(root.get());
    // 设置场景数据
        viewer->setSceneData(root.get());
        // 初始化并创建窗口
        viewer->realize();
        // 开始渲染
        viewer->run();
}
这是我的代码,就是书上的例子,我自己在网上下载了一个simhei.ttf字体,然后在工程中建了一个fonts文件夹,然后把字体放入了。程序可以运行,但是屏幕上就是什么都不显示,我以为是有中文的原因,然后我把字体换成了C:\\OSG\\data\\fonts\\times.ttf,文字的内容换成了全英文,然后运行还是什么也没有显示。我是vs2010,osg3.0。然后osgdb_freetype.dll等内容都是全的。
请高手帮助一下,十分感谢!!

该用户从未签到

 楼主| 发表于 2014-1-6 15:19:30 | 显示全部楼层
希望可以得到大家的帮助,呵呵!!

该用户从未签到

 楼主| 发表于 2014-1-6 16:35:35 | 显示全部楼层
问题解决了,把旋转方式SCREEN改成XZ_PLANE就可以了,我都郁闷了一天了,原来是这个问题!请高手告诉一下SCREEN的旋转方式是什么意思,XZ_PLANE这一系列的都是绕某个平面旋转,就是这个SCREEN的旋转方式不是很了解!!

该用户从未签到

发表于 2014-1-18 20:44:34 | 显示全部楼层
始终面向屏幕的旋转呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表