查看: 1915|回复: 1

VBO实时绘制轨迹线的问题

[复制链接]

该用户从未签到

发表于 2010-4-22 10:40:15 | 显示全部楼层 |阅读模式
项目里需要根据漫游过程实时绘制运动的轨迹线   所以轨迹线的顶点数组的长度就不停的动态变化
我在UpdateCallback中需要先把Geometry中旧的Line Primitive Set删除  在添加新的顶点之后    建立更新后的Line Primitive Set并添加到Geometry中去
   这样的话设置Geometry使用VBO还有效吗   或者哪位大侠有更好的实现思路 不吝赐教


osg::Vec3Array* vertices=dynamic_cast<osg::Vec3Array*>(geom->getVertexArray());

                if (vertices)
                {
                        osg::Vec3 newPt;
                        newPt.set(intFrameNumber,intFrameNumber,intFrameNumber);
                        vertices->push_back(newPt);
                        geom->setVertexArray(vertices);
                        geom->removePrimitiveSet(0);
                        geom->addPrimitiveSet(new osg:rawArrays(osg::DrawArrays:INE_STRIP,0,vertices->getNumElements()));
                        vertices->dirty();
                        
                }

该用户从未签到

发表于 2010-4-22 10:56:14 | 显示全部楼层
VBO只针对顶点数组进行缓存,因此它当然是有效的;只是您要考虑不停添加顶点的效率和内存占用问题。

setVertexArray也是多余的,因为您的vertices指针已经被Geometry保存了

此外您完全没必要每次都add和remove图元;您完全可以使用getPrimitiveSet()获取图元对象,重设它的参数,并执行primitiveset->dirty();这样效率会更高一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表