看看全流程,

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































重点在cullstage()


















状态树与渲染树的构建都是在pushStateSet和popStateSet函数中完成的。而CullVisitor::apply函数(在遍历节点时调用),则负责根据不同的节点类型,在不同的时机调用这两个函数。
在遍历场景节点树时,使用pushStateSet将某个节点的渲染位置置入,然后再将它的子节点的渲染状态置入,如此反复。。。。。。结束这个子树的遍历时,则依次使用popStateSet弹出_currentRenderBin和_currentStateGraph,知道返回初始位置为止。如此即可在遍历节点子树中构建起渲染后台的状态树和渲染树;并且,如果在筛选(cull)过程中,我们判断某个节点(及其子树)应当被剔除掉时,只要跳过pushStateSet和popStateSet的步骤,直接返回,就不会在渲染时留下节点的任何蛛丝马迹。
下一步深入展开osgUtil::CullVisitor::pushStateSet(const osg::StateSet* ss)









![]()

popStateSet,是pushStateSet的逆过程。




下一步进行CullVisitor

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

被折叠的 条评论
为什么被折叠?



