事件回调(EventCallback):由事件触发回调函数的执行。 拣选回调(CullCallback):在拣选遍历时执行回调函数。 绘制回调(DrawCallback):几何体(Drawable)对象绘制时,执行回调函数,只能(Drawable)对象使用。 在osg自带的example程序中分别演示了这些回调类型的用法,执行回调首先要从osg::NodeCallback派生子类,在派生类中重载...
NodeCallback*getNestedCallback();//调用临近中的下一个更新回调voidtraverse(Node* node,NodeVisitor* nv); 节点类中完成回调函数设置和获取: //设置/获取节点的更新回调voidsetUpdateCallback(NodeCallback*); NodeCallback*getUpdateCallback();//设置/获取节点的事件回调voidsetEventCallback(NodeCallback*); ...
最后,观察CameraUpdateCallback和CameraEventCallback结构体的内容,可以发现它们均继承自 osg::NodeCallback,并重载了操作符operator(),当执行摄像机更新或者事件回调时,operator()的内容将被调用,添加 traverse函数可以实现节点的继续遍历。 此外,还可以使用Node::setEventCallback来设置节点的事件回调,其输入参数为继承...
osg::NodeCallback是update callback,event callback和cull callbacks的实现者.它只可以附加到node上.而对于drawable这种类型可以使用osg::Drawable::UpdateCallback, osg::Drawable::EventCallback ,osg::Drawable::CullCallback来实现相同的目的. 在osg::NodeCallback类需要重写operator()方法,从而自定义自己的逻辑代...
根据回调功能被调用的时机划分为更新回调(Update CallBack)和人机交互时间回调(Event CallBack)。前者在每一帧中系统遍历到当前节点时调用,后者则由交互事件触发,如操作键盘、鼠标、关闭窗口、改变窗口大小等动作。回调类基类是osg::NodeCallBack(),主要函数如下:1 2 3 4 5 6 7 8 9 10 //虚函数,...
此外,还可以使用Node::setEventCallback来设置节点的事件回调,其输入参数为继承自osg::NodeCallback的用户类,且需要重载操作符operator()以实现回调过程的处理。 综上,可以得出回调的编写方法: 1、编写用户结构体,继承OSG中相应的虚函数结构体,如osg::NodeCallBack; ...
(EventCallback)。 2.执行updateTraversal函数,这个函数负责遍历所有的更新回调(UpdateCallback);除此之外,它的另一个重要任务就是负责更新DatabasePager与ImagePager这两个重要的分 页数据处理组件。 3.执行renderingTraversals函数,这里将使用较为复杂的线程处理方法,完成场景的筛选(cull)和绘制(draw)工作) ...
NodeCallback *getUpdateCallback() //获取节点的更新回调 void setEventCallback(NodeCallback *) //设置节点的交互事件回调 NodeCallback *getEventCallback() //获取节点的交互事件回调 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ...
已有的回调的类型有很多种,一般很容易就想到的是UpdateCallBack,或者EventCallBack等 Ø 自定义回调 自定义回调为从一个回调类型派出生自己的回调,然后具有该种回调的特点等等。 NodeVisitor是一个极有用的类,可以访问结点序列,使用的方法大同小异,NodeVisitor的工作流程如下图所示: ...
2 回调机制NodeCallBack:节点回调基类,可根据实际需求重写并加入到节点中。在特定遍历时触发,进行节点的回调处理。场景交互 EventQueue:保存GUIEventAdapter对象的队列,记录所有传递给场景的鼠标和键盘事件、用户自定义事件。事件处理器:GUIEventHandler是OSG键盘和鼠标交互事件的处理终端,提供可扩展的虚函数handle(),...