查看: 1730|回复: 4

关于用OSG显示变化的文字的问题

[复制链接]

该用户从未签到

发表于 2011-7-25 12:52:30 | 显示全部楼层 |阅读模式
本帖最后由 zlulu2006 于 2011-7-25 12:54 编辑

osgmfc.rar (53.03 KB, 下载次数: 121)

该用户从未签到

发表于 2011-7-25 23:25:27 | 显示全部楼层
1、请保证文字的更改是在callback或者eventhandler中
2、请设置文字setDataVariance(DYNAMIC)

该用户从未签到

 楼主| 发表于 2011-7-26 08:45:00 | 显示全部楼层
回复 2# array


   
1、请保证文字的更改是在callback或者eventhandler中
2、请设置文字setDataVariance(DYNAMIC)


我的文字设置了setDataVariance(DYNAMIC),但是文字更改没有放在callback中,估计就是这个问题了,我再试试,谢谢array

该用户从未签到

发表于 2011-7-26 13:44:19 | 显示全部楼层
所有的更新都要在回调中进行

该用户从未签到

 楼主| 发表于 2011-7-27 10:15:43 | 显示全部楼层
回复 4# tianxiao888


    感谢两位的回答,现在完成了,确实应该将所有的更新操作放在回调函数里面,这样做可能是要和OSG的帧同步吧,这样才不会出错。否者在更新text的时候,就和OSG的帧变化冲突了


具体实现如下:
osg::Camera  *camera_txt = new osg::Camera;
osgText::Text  *txt = new osgText::Text;
osg::Geode *geode  = new osg::Geode;

mRoot->addChild(camera_txt);
camera_txt->addChild(geode);
geode->addDrawable(txt);

geode->setUpdateCallback(new simpleCallBack());




simpleCallBack中实现关键代码:
//disnum为变化的数字


  osg::ref_ptr<osg::Geode> mt=dynamic_cast<osg::Geode*>(node);
  CString s_num;
  s_num.Format(_T("%d"),disnum);
  ((osgText::Text* )(mt->getDrawable(0)))->setText(s_num);


测试运行很长一段时间,没有出错 QQ截图20110727101451.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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