OSG中,visitor与callback密切配合,为用户提供了灵活的场景控制机制.
1. visitor 顾名思义,提供遍历访问scene graph各个节点的方式.
2. callback提供控制单个场景节点的方式.
3. visitor在访问节点的过程中,可以添加节点控制逻辑, 亦或逐一调用节点callback.
OSG3.4:
帧循环:
void ViewerBase::frame(double simulationTime)
{... ... //realize 初始化工作advance(simulationTime);eventTraversal();updateTraversal();renderingTraversals();
}
在渲染循环中,对scene graph进行了三种类型遍历操作,即三种回调及访问机制.
1. event traversal 事件处理, 执行event visitor,event callback.
2. update traversal 更新遍历,执行update visitor, update callback
3. rendering traversal 渲染遍历, 执行cull visitor,cull callback. drawable callback。