先看看流程
电子书上介绍了渲染器osgViewer::Renderer类,osgViewer::Renderer为摄像机渲染场景的工作提供了一个公共接口,当我们向视景器viewer添加了一个新的摄像机camera时,一个与摄像机相关联的渲染器Renderer也会被自动创建。当准备渲染场景时,与特定图形设备GraphicsContext相关联的摄像机也会自动调用其渲染器的响应函数,执行场景筛选与绘制等工作。渲染器负责调用场景视图
获取摄像机附带渲染器的代码:
关于场景视图在渲染器中的体现,
关于创建摄像机,就会有渲染器,
在摄像机类中,成员变量
派生关系
现在跟踪renderer::cull()
所以要设定
可以进去renderer::cull()
全局渲染状态
osg::State是状态机在OSG中的具体实现,封装了几乎所有的opengl状态量,属性参数,以及顶点数组的设置值,对Stateset,Geometry等类的操作,实质上都交由State类在保存和执行。它提供了对Opengl状态堆栈的处理机制,对即将进入渲染管线的数据进行优化(执行渲染状态数据的排序,减少Opengl状态的频率),同时还允许用户直接查询各种OpenGL状态的当前值
场景筛选SceneView::cull()以后会深入,所以这里不扩展。
接下来将了场景绘制
当然,重点在于Renderer::draw(),这里不扩展,是因为下一天的内容扩展了,就到这里吧。