调试osg最长的一帧(第30天)

本文详细解析了DrawThreadPerContext和CullThreadPerCameraDrawThreadPerContext两种线程模式在场景筛选与绘制中的协作,包括栅栏机制、线程数量配置及CPU调度。重点讨论了场景同步与动态对象管理策略。

终于快结束了,再接再厉。GOGOGO!

对于剩下的两个线程模型,

一,默认的线程模式是DrawThreadPerContext

其实,前面有些已经跟踪过了,再一边抄一边调试,熟悉下,一遍肯定记不住。

如果ViewerBase类的成员函数suggestBestThreadingModel(),没有找到适合当前计算机系统的线程模式的话,将自动采用这一模式来完成渲染的工作。

 

DrawThreadPerContext模式没有设置渲染启动栅栏和结束栅栏。因此,这一渲染模式下将不会在每一帧对场景的筛选和绘制工作进行同步,且用户的更新动作将有可能在某些线程的渲染动作还未结束时即开始运行。

DrawThreadPerContext模式下根据场景中摄像机的数量设置_endDynamicDrawBlock变量的值,这个阻塞器用于在每个渲染器都渲染完毕之前阻塞主进程的运行,以免用户对数据的更新动作于动态对象的渲染动作产生冲突。

这个numViewerDoubleBufferedRenderingOperation是根据摄像机获得的。

初始为0

接下来即DrawThreadPerContext模式下需要执行的任务列表。由于也走ViewerBase::startThreading函数,所以很多可以在不同模式下复用的流程,只是根据变量进入不同的分支。

评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值