osg 源码剖析(一)frame函数剖析

osg 是基于MVC模式进行的。

frame函数包含了整个引擎在渲染一帧的过程中所要做的所有事情。这个函数是viewbase的成员函数。对于单视景体和多视景体都是一样。

该函数所执行的主要工作如下:
1、如果这是仿真系统启动后的第一帧,则执行viewerInit();此时如果还没有执行realize()
函数,则执行它。
2、执行advance 函数。
3、执行eventTraversal 函数,顾名思义,这个函数将负责处理系统产生的各种事件,诸
如鼠标的移动,点击,键盘的响应,窗口的关闭等等,以及摄像机与场景图形的事件回调
(EventCallback)。
4、执行updateTraversal 函数,这个函数负责遍历所有的更新回调(UpdateCallback);
除此之外,它的另一个重要任务就是负责更新DatabasePager 与ImagePager 这两个重要的分
页数据处理组件。
5、执行renderingTraversals 函数,这里将使用较为复杂的线程处理方法,完成场景的筛
选(cull)和绘制(draw)工作。


可以看出mvc模式是C先行,也就是事先响应C端的事件,比如用户的GUI事件,以及事件回调

接着是更新数据就是M端,这个可能是来自于C端产生的数据变化,也可能是lod加载造成的变化,

可以看出几何和纹理是分开两个线程的,这是为了分页数据处理

最后是V端,这个地方主要是利用opengl的渲染管线进行绘制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值