调试最长的一帧(第23天)

看看总体进度

第22天通过CUllvisitor创建了渲染树和状态树,并进行必要的剔除。

接下来进行排序和优化

RenderStage::sort函数时按照前序渲染台,当前渲染台和后续渲染台的顺序进行,其中前序渲染台和后续渲染台通过Camera::setRenderOrder实现,保存了指定摄像机及其场景子树和渲染树结构。

渲染树及其各个分支中数据的排序工作实际上时通过RenderBin::sortImplementation函数实现的,如果希望能实现自定义的渲染树排序动作,通过RenderBin::setSortCallback函数为根节点渲染台,(可以从摄像机的SceneView对象中取得)设置新的排序回调即可。

 

 

抄一抄继续,注意需要排序的对象仅仅时渲染树中各个渲染元(RenderBin)中保存的状态节点StateGraph或者渲染叶RenderLeaf,渲染元之间不需要进行排序(那样会打乱实际的绘制顺序)

StateSet对象的渲染细节可以设置为RenderBin(不透明体)和DepthSortedBin(透明体,按深度排序),对于设置为RenderBin或者缺省形式的渲染状态来说,再次进行排序的意义不大;因此OSG事实上仅针对DepthSortedBin渲染元中的各个渲染叶RenderLeaf进行排序,

可以用 RenderBin::setSortMode 加以指定排序类型
 
 

 

 

 

 

接下来查找状态树StateGraph中有没有无效的节点,并删除

 

设置用户变度的方式

场景筛选阶段进行了构建玩状态树和渲染数,剔除,排序后;接下来进行绘制了。这里用的单线程模型

可知,单线程渲染才行,

 

顺利进入

同样其他函数的删除集合

 

 

 

比如

 

对于非立体显示的情况

 

 

 

 

重点在RenderStage::draw()中,

 

运行摄像机第24天再详细,所以这里不扩展。

继续往下走

 

drawInner()会在下一天电子书中讲,所以这里暂时不展开。

copyTexture()也是电子书后面详细讲,这里暂时不展开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值