在OpenSceneGraph中向节点添加Cull Callback的正确方法

时间:2017-09-25 17:56:25

标签: openscenegraph

我有一个代码通过覆盖遍历方法来处理Cull回调:

void SomeNode::traverse(osg::NodeVisitor& nv)
{
    if (nv.getVisitorType() == osg::NodeVisitor::CULL_VISITOR)
    {
        //adjust child node positions depending on the projection
    }
}

但看起来有另一种方法如何使用

添加Cull回调
void Node::setCullCallback(Callback* nc);

哪一个更好,在什么情况下?第一种方法是正确的吗?

1 个答案:

答案 0 :(得分:0)

最常见的方法是在节点上设置Cull Callback,因为它不需要您编写自定义的osg :: Node派生类。因此,您可以将回调添加到任何现有节点类型,特别是从文件加载的模型。

它也非常灵活,因为您可以在运行时轻松添加/删除/替换回调。

在这两种情况下,如果在感兴趣的节点上剔除处于活动状态,则仅当节点通过剔除测试时才会调用traverse()方法或回调。