osg总结一:osg视察器NodeVistor 使用注意事项及剖析

不废话直接上!

1、osg::NodeVistor
继承模式:

NodeVistor
Object
Referenced

osg::Node
继承方式:

Node
Object
Referenced

2、要想监视某个物,必须要有一个方法
osg所有节点的监视方式,由继承于父亲节点即(osg::Node)与监视器(osg::NodeVistor)合并使用的方法来完成,那么入口呢?使用方式呢?

osg::Node提供了虚函数入口方式

  1. virtual void accept(NodeVisitor& nv);
  2. virtual void ascend(NodeVisitor& nv);
  3. virtual void traverse(NodeVisitor& /nv/) {}

在NodeVistort提供了很多apply方法,使用自带接口都是具有目的性的,其中osg视察器已经定义了很多,可以从其中选择一个适合当前要做的操作,比如计算节点包络框,也可以利用c++特性,继承NodeVisitor来实现自己节点想要的操作;
virtual void accept(NodeVisitor& nv);
定义:
void Node::accept(NodeVisitor& nv)
{
//判断Node是否要遍历操作;其中最为关键,也是最为方便的决定此
//模型是否要被操作取决于 node.getNodeMask(),相当于Node的遍历的开关
if (nv.validNodeMask(this))
{
// 加入父节点
nv.pushOntoNodePath(this);
// 调用视察器方法
nv.apply(this);
// 使用完毕踢出
nv.popFromNodePath();
}
}
** virtual void ascend(NodeVisitor& nv);

向上遍历
irtual void traverse(NodeVisitor& /nv/) {}
向下遍历

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值