查看: 1326|回复: 4

请教各位一个关于StateSet节点的问题

[复制链接]

该用户从未签到

发表于 2011-3-7 10:45:20 | 显示全部楼层 |阅读模式
一段程序是这样的:
我开始定义了一个StateSet节点
                osg::StateSet* stateset = new osg::StateSet;
然后就balabala的设置了stateset的各种属性状态。
接着我再定义一个组节点root
                 osg::Group* root = new osg::Group();
继而再把刚刚设置的stateset 添加到组节点里
                   root->setStateSet(stateset);
从而就实现了一些渲染效果,这些都没有什么问题。

现在我的问题是,程序后面我需要回到最初没有设置stateset时的那个状态,就是刚开始没有任何渲染时的那个状态,我试过重新再定义一个StateSet节点,
              osg::StateSet* stateset_new = new osg::StateSet;
再添加到组节点里
                root->setStateSet(stateset_new);
结果报内存错误。

请教各位有没有其他的方法能使其回到最初的状态。

PS:如果像addChild这个函数就好办了,可以用removeChild将添加进的节点移除。

该用户从未签到

发表于 2011-3-7 11:11:23 | 显示全部楼层
StateSet不是有clear的方法吗?试试?

该用户从未签到

发表于 2011-3-7 12:00:45 | 显示全部楼层
首先你的节点的DYNAMIC属性么,然后你属性修改是否在回调里进行

该用户从未签到

 楼主| 发表于 2011-3-7 14:40:20 | 显示全部楼层
回复 3# tianxiao888


    我设置的stateset节点里面没有DYNAMIC属性,是在后面通过按下键盘osgGA::GUIEventHandler中要求回到设置stateset前的属性状态,clear我也试过了:stateset->clear(); root->setStateSet(stateset);貌似没有效果

该用户从未签到

发表于 2011-3-7 15:18:40 | 显示全部楼层
是设置节点的数据变度为DYNIC,不是stateset
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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