|
楼主 |
发表于 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);
测试运行很长一段时间,没有出错
|
|