|
楼主 |
发表于 2011-7-12 14:10:44
|
显示全部楼层
本帖最后由 david850911 于 2011-7-12 20:28 编辑
回复 3# array
谢谢array,我试了下更新回调的方法,但是节点没有显示出来。能帮我看下什么问题吗?
我想做的是在间隔5秒的时间切换一个节点,
class TimerCallBack : public osg::NodeCallback,public Handmodel
{ public:
double _num;
double _delay;
double _preTime;
public:
TimerCallBack():
_delay(5.0),
_preTime(0.0),
_num(0.0)
{}
//~TimerCallBack();
virtual void operator()(osg::Node* ,osg::NodeVisitor* nv)
{
if (nv->getFrameStamp())
{
double curTime = nv->getFrameStamp()->getReferenceTime();
if (curTime-_preTime>=_delay)
{ if(_num==0)
{
for (int i=0;i<SUMMODEL;i++)
m_picNode1->setNodeMask(0);
m_picNode1[0]->setNodeMask(1);
}
if (_num==1)
{
for (int i=0;i<SUMMODEL;i++)
m_picNode1->setNodeMask(0);
m_picNode1[1]->setNodeMask(1);
}
if (_num==2)
{
for (int i=0;i<SUMMODEL;i++)
m_picNode1->setNodeMask(0);
m_picNode1[2]->setNodeMask(1);
}
}
_num++;
_preTime = curTime;
}
}
};
后面是加到主场景中进行渲染. 但不明白为什么节点没有显示,更不用说切换了。谢谢! |
|