0
内のノードにカルコールバックを追加する正しい方法私はオーバーライドトラバース法によりカルコールバックを処理するコードがあります。OpenSceneGraph
void SomeNode::traverse(osg::NodeVisitor& nv)
{
if (nv.getVisitorType() == osg::NodeVisitor::CULL_VISITOR)
{
//adjust child node positions depending on the projection
}
}
が、カルを追加する方法を別の方法があるように見えるがコールバックで
void Node::setCullCallback(Callback* nc);
どちらが良いとどのような状況ですか?そして最初の方法は正しいですか?
ノードに複数のCullコールバックが追加されている場合は、トラバースメソッドが複数回実行されるため(理論的には、追加された各コラボレーションに対して)、トラバースメソッドをオーバーライドするコードは、 nv.getVisitorType()== osg :: NodeVisitor :: CULL_VISITOR '条件をトラバースメソッドで使用しますが、Cull Visitorの各タイプごとに異なるコードを動作させるためのdynamic_castのようなものもありますか? –
Koban
@Kobanあなたが何を意味しているのかわからないのは、あなたがカルテ訪問者とカルコールバックのコンセプトを混ぜているようです。通常、あなたのノードは、アクティブなカメラの数と同じくらい多くの巡回によって各フレームを訪問されます。各カリングトラバーサルに使用されるデフォルトクラスはosgUtil :: CullVisitorです。あなたのコールバックは、訪問ごとに1回呼び出されます(私が答えで言及したカリングテストを考慮に入れて) – rickyviking