|
我测试过程中发现一个问题。在回调函数中执行的和在while循环中出现不一样的结果。本来一直以为是回调函数是每帧执行一次,while循环中也是每帧执行一次。现在运行的结构不是一个意思。有点搞不懂。请哪位能够指点一下,感激不尽。很想知道我哪边理解错了。
比如回调中:
class tanNodeCallback:public osg::NodeCallback
{
public:
tanNodeCallback( )
{
}
virtual void operator()(osg::Node* node,osg::NodeVisitor* nv)
{
osg:ositionAttitudeTransform* pat =
dynamic_cast<osg::PositionAttitudeTransform*> (node);
if(pat)
{//以下块为回调循环执行
osg::Vec3 center = pat->getPosition();
osg::Vec3 eye = pat->getPosition()+ osg::Vec3(0,-5,5);
osg::Vec3 up = osg::Vec3(0,0,1) ;
_viewer->getCamera()->setViewMatrixAsLookAt(eye,center,up);
}
traverse(node, nv);
}
};
while循环中:
while (!viewer->done())
{
//以下块为回调循环执行
osg::Vec3 center = pat->getPosition() ;
osg::Vec3 eye = pat->getPosition()+ osg::Vec3(0,-5,5);
osg::Vec3 up = osg::Vec3(0,0,1) ;
viewer->getCamera()->setViewMatrixAsLookAt(eye,center,up);
viewer->frame();
}
想请问的是,两种任选一种执行的结果是否一样。原因是什么。。。。谢谢 |
|