查看: 1937|回复: 3

osgGA::GUIEventAdapter::MOVE中绘制多边形时//使用osgUtil::Tessellator程序会卡死?

[复制链接]

该用户从未签到

发表于 2014-5-20 12:06:42 | 显示全部楼层 |阅读模式
本帖最后由 oirrm 于 2014-6-2 19:47 编辑

void DrawAreaWithType(int RectangleMode,osg::ref_ptr<osg::Geometry> RectangleGeometry,osg::ref_ptr<osg::StateSet> RectangleStateset,bool IsMove)
{
        RectangleStateset->setMode(GL_BLEND,osg::StateAttribute::ON);
        RectangleStateset->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);
        RectangleStateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF|osg::StateAttribute:ROTECTED);
       
        osg::ref_ptr <osg:ineWidth> LineSize = new osg::LineWidth;
        LineSize ->setWidth(2.0) ;      
        RectangleStateset->setAttributeAndModes(LineSize.get(),osg::StateAttribute::ON);
        RectangleGeometry->setVertexArray(m_VertexV3a);
        RectangleGeometry->addPrimitiveSet(new osg:rawArrays(RectangleMode,0,m_VertexV3a->size()));
       
        osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array;  
        osg::Vec4 color(1,0,1,0.5);
        colors->push_back(color);
        RectangleGeometry->setColorArray(colors);  
        RectangleGeometry->setColorBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET);  

        osg::ref_ptr<osg::Vec3Array> normals = new osg::Vec3Array;
        osg::Vec3 normal = osg::Z_AXIS;  
        normals->push_back(normal);  
        RectangleGeometry->setNormalArray(normals.get());  
        RectangleGeometry->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET);

        RectangleGeometry->setStateSet(RectangleStateset);

        if(IsMove)
        {
                if(m_VertexV3a->size() < 4)
                {
                        return;
                }       
                osg::ref_ptr<osgUtil::Tessellator> tes = new osgUtil::Tessellator();  
                tes->setBoundaryOnly(false);  
                tes->setWindingType(osgUtil::Tessellator::TESS_WINDING_POSITIVE );  
                tes->setTessellationType(osgUtil::Tessellator::TESS_TYPE_GEOMETRY);  
                tes->retessellatePolygons(*RectangleGeometry);
        }
}

该用户从未签到

 楼主| 发表于 2014-6-1 00:15:56 | 显示全部楼层
局部函数使用智能指针的问题?????????????????????

该用户从未签到

发表于 2014-6-25 16:44:58 | 显示全部楼层
osgUtil::Tessellator不是一个可以实时持续使用的方法,细分计算是需要时间的,并且如果您这个函数是在MOVE当中一直执行的话,那么显然这么多的内存分配过程是欠妥当的

该用户从未签到

 楼主| 发表于 2014-6-27 23:21:21 | 显示全部楼层
array 发表于 2014-6-25 16:44
osgUtil::Tessellator不是一个可以实时持续使用的方法,细分计算是需要时间的,并且如果您这个函数是在MOVE ...

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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