查看: 1362|回复: 4

如何在显示上万个同样的3ds模型时提高效率

[复制链接]

该用户从未签到

发表于 2013-3-1 14:05:17 | 显示全部楼层 |阅读模式
        osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("d:/3ds/model.3ds");

        for(int i=0; i<20000; i+=200)
        {
                for(int j=0; j<20000; j+=200)
                {
                        osg::ref_ptr<osg::PositionAttitudeTransform> pat = new osg::PositionAttitudeTransform();
                        pat->setPosition(osg::Vec3f(i,j,0.0));
                        pat->addChild(model);
                        root->addChild(pat);
                }
        }
我写的上面这段代码,效率低下,才1万个,就慢的不行了,求教高效率的方法

谢谢啦

该用户从未签到

发表于 2013-3-1 16:10:06 | 显示全部楼层

该用户从未签到

发表于 2013-3-4 10:53:17 | 显示全部楼层
使用osg::CopyOp

rootnode->clone(osg::CopyOp:EEP_COPY_ALL));
参见osgcopy例子

该用户从未签到

发表于 2013-3-4 14:43:16 | 显示全部楼层
效率的优化是需要考虑很多手段的,比如建立LOD使得远处的模型只显示一个粗糙的形状;建立场景空间索引结构来保证场景裁减更有效率;使用纹理共享等方法,等等

该用户从未签到

 楼主| 发表于 2013-3-5 10:31:50 | 显示全部楼层
3楼,4楼,多谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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