在cull时,如果摄像机没有用线程剔除,则用Renderer::cull(),
在最长的一帧里用到了这种方法。
这里有个osgUtil::SceneView类,仅由renderer调用。这个SceneView类一开始我还以为时osgViewer;:Viewer,其实是两码事。
osgUtil::SceneView类一般是双缓存,放在_availableQueue里
可以说,Renderer的剔除过程也就是osgUtil::SceneView的操作过程
分几步
1,取出_availableQueue中取出第一个osgUtil::SceneView
2,更新osgUtil::SceneView的全局状态,状态量和设置
3,获取osgUtil::SceneView的剔除设置
4, osgUtil::SceneView剔除
5,将osgUtil::SceneView放入绘制队列_drawQueue
如果再加上状态收集,立体显示的融合距离。那就比较全面了。当然,那不是核心。
看看核心
1,取
2,更新状态和显示设置
3,获取筛选设置
4,筛选
5,放入绘制队列
OK,就这样吧