在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,就这样吧
本文详细介绍了OpenGL渲染过程中osgUtil::SceneView的使用,它主要用于摄像机剔除。主要内容包括从_availableQueue中取出SceneView,更新状态和设置,获取剔除配置,执行剔除操作,然后将SceneView加入绘制队列。此外,还提及了状态收集和立体显示的融合距离等辅助步骤。
1498

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



