OSG学习:LOD、数据分页、动态调度
2017-07-24 09:49
106 查看
LOD(level of detail):是指根据物体模型的结点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。在OSG的场景结点组织结构中,专门提供了场景结点osg::LOD来表达不同的细节层次模型。其中,osg::LOD结点作为父节点,每个子节点作为一个细节层次,设置不同的视域,在不同的视域下显示相应的子节点。
数据分页:在城市三维场景中可以采用数据分页的方式进行动态调度。这里“分页”的意思是随着视口范围的变化,场景只加载和渲染当前视口范围内数据,并将离开视口范围内的数据清除内存(可以设定不同的数据卸载策略),不再渲染。保证内存中只有有限的数据量,场景的每一帧也只有有限的数据被送到图形渲染管道,从而提高渲染性能。
动态调度:OSG源代码中提供PagedLOD来进行模型的动态调度。在不同的视域下,PagedLOD动态读取不同细节层次的结点模型,实现了分页LOD显示。OSG内部采用osgDB::DatabasePager类来管理场景结点的动态调度,场景循环每一帧的时候,会将一段时间内不在当前视图范围内的场景子树卸载掉,并加载新进入到当前视图范围的新场景子树。OSG采用了多线程的方式来完成上述工作。
数据分页:在城市三维场景中可以采用数据分页的方式进行动态调度。这里“分页”的意思是随着视口范围的变化,场景只加载和渲染当前视口范围内数据,并将离开视口范围内的数据清除内存(可以设定不同的数据卸载策略),不再渲染。保证内存中只有有限的数据量,场景的每一帧也只有有限的数据被送到图形渲染管道,从而提高渲染性能。
动态调度:OSG源代码中提供PagedLOD来进行模型的动态调度。在不同的视域下,PagedLOD动态读取不同细节层次的结点模型,实现了分页LOD显示。OSG内部采用osgDB::DatabasePager类来管理场景结点的动态调度,场景循环每一帧的时候,会将一段时间内不在当前视图范围内的场景子树卸载掉,并加载新进入到当前视图范围的新场景子树。OSG采用了多线程的方式来完成上述工作。
相关文章推荐
- OSG学习:LOD、数据分页、动态调度
- 地形LOD动态加载分页调度实现思路
- Mybatis+mySQL动态分页查询数据经典案例
- 移动开发学习记录点滴-动态增加列表行数据
- osg 实现动态跟新纹理数据
- visualgo动态学习数据结构
- android分页加载动态数据
- 带着实例继续学习(4):下拉框数据填充、组件生命周期、动态绑定事件
- vue.js动态数据绑定学习
- Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
- windows phone开发学习--Pivot动态加载数据
- SSH+Ext左侧tree右侧grid,点击左侧tree节点右侧grid数据动态加载和分页问题
- 数据分页显示学习笔记
- discuz学习记录:前面的数据用EasyUI DataGrid显示,实现了服务器端分页
- ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- MySQL学习笔记之数据定义表约束,分页方法总结
- Mybatis+mysql动态分页查询数据案例——条件类(HouseCondition)
- 场景数据的动态更新setDataVariance(osg::Object::DYNAMIC) (转)
- 动态模板列更新数据分页的例子