查看: 1104|回复: 3

osg recipes 6.10

[复制链接]

该用户从未签到

发表于 2013-10-9 16:32:05 来自手机 | 显示全部楼层 |阅读模式
array您好,您书里这个cg的例子让人大开眼界,但我想了很久还是有不明白的地方。就是您在cgprogram中重载的apply函数中if(!_profiles.size())那部分,他的目的当然是关掉cg管线对于绘制的影响。但我一直奇怪他在这个位置是怎么被调用的。于是我装了两个节点进去,只对其中一个设置了cgprogram。结果运行时发现cgprogram的构造函数被调用了两次。第二次是osg.dll里用clone方式调用的,于是您的代码起作用了。我觉得很奇怪,难道osg对于所有节点会clone我们设置过的stateattribute?这说不通啊?

该用户从未签到

发表于 2013-10-11 09:58:47 | 显示全部楼层
没有什么说不通的,每个StateAttribute被第一次使用时,都会被全局记录一次,以便在根节点上重置可能的所有状态

该用户从未签到

 楼主| 发表于 2013-10-11 17:38:49 来自手机 | 显示全部楼层
array 发表于 2013-10-11 09:58
没有什么说不通的,每个StateAttribute被第一次使用时,都会被全局记录一次,以便在根节点上重置可能的所有 ...

可是对于另一个节点我没有对他设置cgprogram啊,怎么osg自动就clone一个给它用了?

该用户从未签到

发表于 2013-10-20 18:36:51 | 显示全部楼层
不会对每个节点clone,只是根节点,然后默认的继承关系会保证所有其它节点均使用默认状态
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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