查看: 1713|回复: 8

osgDB::writeNodeFile保存后的文字位置不对!

[复制链接]

该用户从未签到

发表于 2012-12-14 17:46:47 | 显示全部楼层 |阅读模式
本帖最后由 木子匕 于 2012-12-14 17:48 编辑

保存前 1.jpg
保存后打开 2.jpg


线的位置没有什么问题!text往右偏移了很多求解!
  1.         //线
  2.         osg::Geode* geode = new osg::Geode;
  3.         osg::Geometry* geom = new osg::Geometry;
  4.         osg::StateSet* stateset = new osg::StateSet;
  5.         osg::LineWidth* linewidth = new osg::LineWidth();

  6.         //线的宽度
  7.         linewidth->setWidth(2.0f);
  8.         stateset->setAttributeAndModes(linewidth,osg::StateAttribute::ON);
  9.         stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
  10.         //让这些点总是画在最上面
  11.         stateset->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);
  12.         stateset->setMode(GL_LIGHTING, osg::StateAttribute::OFF|osg::StateAttribute::PROTECTED );
  13.         //设置渲染优先级
  14.         stateset->setRenderBinDetails(101, "RenderBin");
  15.         geom->setStateSet(stateset);

  16.         osg::Vec3dArray* vertexs = new osg::Vec3dArray;
  17.         geom->setVertexArray(vertexs);

  18.         osg::Vec4dArray* colors = new osg::Vec4dArray;
  19.         osg::Vec4d color(1,1,1,1);
  20.         geom->setColorArray(colors);
  21.         geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
  22.         {
  23.                 vertexs->push_back(star);
  24.                 vertexs->push_back(end);
  25.                 colors->push_back(color);
  26.                
  27.         }
  28.         geom->addPrimitiveSet(new osg::DrawArrays(osg::DrawArrays::LINES,0,2));
  29.         geode->addDrawable(geom);       

  30.         //////////////////////////////////////////////////////////////////////////
  31.         //文字
  32.         osgText::Text *text = new osgText::Text;
  33.         osgText::Font *font = osgText::readFontFile("fonts\\simhei.ttf");

  34.         //设置字体文件
  35.         text->setFont(font);
  36.         //设置文字信息
  37.         text->setText(wtext.c_str());
  38.         //设置字体大小
  39.         text->setCharacterSize(1.0f);
  40.         text->setAutoRotateToScreen(true);
  41.         //设置字体颜色
  42.         text->setColor(osg::Vec4(1,1,1,1));
  43.         //设置显示位置
  44.         text->setPosition(end);
  45.         //设置对齐方式
  46.         text->setAlignment(osgText::Text::CENTER_TOP);
  47.         //设置旋转方式
  48.         text->setAxisAlignment(osgText::Text::SCREEN);
  49.         geode->setStateSet(stateset);
  50.         geode->addDrawable(text);
复制代码

该用户从未签到

发表于 2012-12-15 13:12:01 | 显示全部楼层
看你这个貌似只有"起始"和"终止"的那一部分有偏移,是吧?

该用户从未签到

发表于 2012-12-17 08:21:39 | 显示全部楼层
观察的位置和角度 一致?

该用户从未签到

 楼主| 发表于 2012-12-17 09:14:26 | 显示全部楼层
bigboy 发表于 2012-12-15 13:12
看你这个貌似只有"起始"和"终止"的那一部分有偏移,是吧?

似的 !不是全部的文字都偏移咯!

该用户从未签到

 楼主| 发表于 2012-12-17 09:14:56 | 显示全部楼层
liuzhiyu123 发表于 2012-12-17 08:21
观察的位置和角度 一致?

恩 摄像机没动~

该用户从未签到

发表于 2012-12-17 13:30:20 | 显示全部楼层
木子匕 发表于 2012-12-17 09:14
似的 !不是全部的文字都偏移咯!

你可以试试把汉子去了再看看

该用户从未签到

 楼主| 发表于 2012-12-17 14:59:16 | 显示全部楼层
本帖最后由 木子匕 于 2012-12-17 15:12 编辑
bigboy 发表于 2012-12-17 13:30
你可以试试把汉子去了再看看


汉字去掉了 依然如此!

该用户从未签到

发表于 2012-12-17 19:33:24 | 显示全部楼层
木子匕 发表于 2012-12-17 14:59
汉字去掉了 依然如此!

呃~!这个就不知道了。没有代码没法具体看了

该用户从未签到

 楼主| 发表于 2012-12-18 09:02:17 | 显示全部楼层
我发现在文字前面加了个\n换行符解决了这个问题!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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