调试最长的一帧(第21天)

博客主要围绕sceneview::cull()展开,重点在cullstage()。状态树与渲染树构建在pushStateSet和popStateSet函数中完成,CullVisitor::apply函数根据节点类型调用。遍历场景节点树时用这两个函数构建状态树和渲染树,筛选时可跳过某些节点。还将深入展开相关函数。

看看全流程,

主要讲sceneview::cull(),跟过去

重点在cullstage()

 

 

 

 

状态树与渲染树的构建都是在pushStateSet和popStateSet函数中完成的。而CullVisitor::apply函数(在遍历节点时调用),则负责根据不同的节点类型,在不同的时机调用这两个函数。

在遍历场景节点树时,使用pushStateSet将某个节点的渲染位置置入,然后再将它的子节点的渲染状态置入,如此反复。。。。。。结束这个子树的遍历时,则依次使用popStateSet弹出_currentRenderBin和_currentStateGraph,知道返回初始位置为止。如此即可在遍历节点子树中构建起渲染后台的状态树和渲染树;并且,如果在筛选(cull)过程中,我们判断某个节点(及其子树)应当被剔除掉时,只要跳过pushStateSet和popStateSet的步骤,直接返回,就不会在渲染时留下节点的任何蛛丝马迹。

 

下一步深入展开osgUtil::CullVisitor::pushStateSet(const osg::StateSet* ss)

 

 

 

popStateSet,是pushStateSet的逆过程。

 

 

 

下一步进行CullVisitor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值