您的位置:首页 > 移动开发 > Objective-C

场景数据的动态更新setDataVariance(osg::Object::DYNAMIC) (转)

2012-12-14 21:42 543 查看

场景数据的动态更新

动态更新的核心就是设置数据变度属性DataVariance,它决定了OSG在多线程渲染的过程中的执行策略:只有所有DYNAMIC属性的对象被渲染 完毕之后,OSG才会开始执行下一帧的用户更新操作;这样有效地可以避免数据的过快更新造成当前的渲染动作出错,以致系统崩溃。

所有派生自osg::Object的对象都可以设置数据变度的属性,通常设置的时机在新建对象之时,例如:

osg::ref_ptr<osg::Group> node
= new osg::Group;

node->setDataVariance(osg::Object::DYNAMIC);

...


这就意味着这个组节点可能在渲染过程中发生变动,可能变动的内容包括:成员属性的改变,新增/替换/删除子节点,或者使用事件/更新/裁减回调实现的自定义变动。

数据变度的设置对于渲染状态和纹理的动态更新同样有重要的意义。而对于osg::Drawable对象,设置为动态更新意味着它可能在渲染过程中发生顶点
属性或者图元的变化;这其中尤为要提及osgText::Text,文字属性的变化必须预先设置动态的数据变度属性,否则可能造成系统运行过程中崩溃:

osg::ref_ptr<osgText::Text>
text = new osgText::Text;

text->setDataVariance(osg::Object::DYNAMIC);

...

// 渲染过程中可以动态改变文字的位置和内容等属性

{
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐