查看: 1213|回复: 7

请教 cull 运行机制

[复制链接]

该用户从未签到

发表于 2013-5-29 10:22:07 | 显示全部楼层 |阅读模式
自己写了一个类,成员变量里有一个osg::MatrixTransfrom结点 m_transform
再把这个类的对象挂到了场景树上,重写了traverse函数
当cull 事件来到时,让m_transform接受cull 如下所示

cull(osgUtil::CullVisitor* nv)
{
                if(m_transform.valid())
                {
                        m_transform->accept(*nv);                       //传到transform
                }


现在问题是:我在m_transform先删了一个子结点,又加了一个子结点,
m_transform->removeChild(deleteLine);
m_transform->addChild(group);

删的这个不显示了,加进去的这个结点并没有绘制出来,断点也切不进去
谢谢!

该用户从未签到

 楼主| 发表于 2013-5-29 16:06:22 | 显示全部楼层
开始的时候,这个结点是显示出来的,m_transform->removeChild(deleteLine);
m_transform->addChild(group);
之后,删的删掉了,加起来的没加起来

该用户从未签到

发表于 2013-5-29 18:52:07 | 显示全部楼层
是没加到场景中还是被裁剪掉了?

该用户从未签到

 楼主| 发表于 2013-5-29 20:22:53 | 显示全部楼层
liuzhiyu123 发表于 2013-5-29 18:52
是没加到场景中还是被裁剪掉了?

m_transfrom 是接受到 cull事件了
它应该会把cull 分发到下面的各个子节点
不明白为什么,删一个子结点,又加了一个,加的那个没有被显示出来

该用户从未签到

发表于 2013-5-30 07:36:23 | 显示全部楼层
没有显示 很正常  所以我问你 是没加到场景中还是被裁剪掉了?

该用户从未签到

 楼主| 发表于 2013-5-30 08:39:55 | 显示全部楼层
liuzhiyu123 发表于 2013-5-30 07:36
没有显示 很正常  所以我问你 是没加到场景中还是被裁剪掉了?

还是不太明白您的意思
怎么算加到场景中了?

该用户从未签到

发表于 2013-5-30 20:55:38 | 显示全部楼层
如果您不确定是不是加入到场景中了,可以打印一下getNumChildren,还有检查一下addChild的子对象是否是有效的

该用户从未签到

 楼主| 发表于 2013-6-3 09:44:33 | 显示全部楼层
谢谢array 和 liuzhiyu123
问题解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表