当前位置: 首页>>代码示例>>C++>>正文


C++ Geode::getStateSet方法代码示例

本文整理汇总了C++中osg::Geode::getStateSet方法的典型用法代码示例。如果您正苦于以下问题:C++ Geode::getStateSet方法的具体用法?C++ Geode::getStateSet怎么用?C++ Geode::getStateSet使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在osg::Geode的用法示例。


在下文中一共展示了Geode::getStateSet方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: apply

void WriterNodeVisitor::apply( osg::Geode &node )
{
    pushStateSet(node.getStateSet());
    //_nameStack.push_back(node.getName());
    unsigned int count = node.getNumDrawables();
    ListTriangle listTriangles;
    bool texcoords = false;
    for ( unsigned int i = 0; i < count; i++ )
    {
        osg::Geometry *g = node.getDrawable( i )->asGeometry();
        if ( g != NULL )
        {
            pushStateSet(g->getStateSet());
            createListTriangle(g, listTriangles, texcoords, i);        // May set _succeded to false
            popStateSet(g->getStateSet());
            if (!succeeded()) break;
        }
    }
    if (succeeded() && count > 0)
    {
#if DISABLE_3DS_ANIMATION
        osg::Matrix mat( osg::computeLocalToWorld(getNodePath()) );
        buildFaces(node, mat, listTriangles, texcoords);        // May set _succeded to false
#else
        buildFaces(node, osg::Matrix(), listTriangles, texcoords);        // May set _succeded to false
#endif
    }
    popStateSet(node.getStateSet());
    //_nameStack.pop_back();
    if (succeeded())
        traverse(node);
}
开发者ID:artoolkit,项目名称:osg,代码行数:32,代码来源:WriterNodeVisitor.cpp

示例2: apply

    virtual void apply(osg::Geode& node)
    {
        if (node.getStateSet()) isTransparent(*node.getStateSet());

        for(unsigned int i=0;i<node.getNumDrawables();++i)
        {
            osg::Drawable* drawable = node.getDrawable(i);
            if (drawable && drawable->getStateSet()) isTransparent(*drawable->getStateSet());
        }

        traverse(node);
    }
开发者ID:3dcl,项目名称:osg,代码行数:12,代码来源:osgconv.cpp

示例3: apply

void OBJWriterNodeVisitor::apply( osg::Geode &node )
{
    pushStateSet(node.getStateSet());
    _nameStack.push_back(node.getName());
    unsigned int count = node.getNumDrawables();
    for ( unsigned int i = 0; i < count; i++ )
    {
        node.getDrawable( i )->accept(*this);
    }

    popStateSet(node.getStateSet());
    _nameStack.pop_back();
}
开发者ID:aitormoreno,项目名称:OpenSceneGraph,代码行数:13,代码来源:OBJWriterNodeVisitor.cpp

示例4: apply

        void apply(osg::Geode& geode)
        {
            if (_visited.count(&geode)!=0) return;
            _visited.insert(&geode);

            if (geode.getStateSet()) apply(*(geode.getStateSet()));

            for(unsigned int i=0; i<geode.getNumDrawables(); ++i)
            {
                if (geode.getDrawable(i)->getStateSet()) apply(*(geode.getDrawable(i)->getStateSet()));

                osg::Geometry* geom = geode.getDrawable(i)->asGeometry();
                if (geom) apply(*geom);
            }
        }
开发者ID:3dcl,项目名称:osg,代码行数:15,代码来源:osgvertexattributes.cpp

示例5: apply

void 
ShaderGenerator::apply( osg::Geode& geode )
{
    osg::ref_ptr<osg::StateSet> ss = geode.getStateSet();
    if ( ss.valid() )
    {
        _state->pushStateSet( ss.get() );

        osg::ref_ptr<osg::StateSet> replacement;
        if ( processGeometry(ss.get(), replacement) )
        {
            _state->popStateSet();
            geode.setStateSet( replacement.get() );
            _state->pushStateSet( replacement.get() );
        }
    }

    for( unsigned d = 0; d < geode.getNumDrawables(); ++d )
    {
        apply( geode.getDrawable(d) );
    }

    if ( ss.valid() )
    {
        _state->popStateSet();
    }
}
开发者ID:ReWeb3D,项目名称:osgearth,代码行数:27,代码来源:ShaderGenerator.cpp

示例6: apply

void 
ShaderGenerator::apply( osg::Geode& geode )
{
    if ( !_active ) return;

    if ( geode.getStateSet() )
        _state->pushStateSet( geode.getStateSet() );

    for( unsigned d = 0; d < geode.getNumDrawables(); ++d )
    {
        apply( geode.getDrawable(d) );
    }

    if ( geode.getStateSet() )
        _state->popStateSet();
}
开发者ID:flybpc,项目名称:osgearth,代码行数:16,代码来源:ShaderGenerator.cpp

示例7: apply

void 
ShaderGenerator::apply( osg::Geode& geode )
{
    if ( !_active ) return;

    osg::ref_ptr<osg::StateSet> ss = geode.getStateSet();
    if ( ss.valid() )
    {
        _state->pushStateSet( ss.get() );

        osg::ref_ptr<osg::StateSet> replacement;
        if ( processGeometry(ss.get(), replacement) )
        {
            _state->popStateSet();
            
            // optimize state set sharing
            if ( _stateSetCache.valid() )
                _stateSetCache->share(replacement, replacement);

            geode.setStateSet( replacement.get() );

            _state->pushStateSet( replacement.get() );
        }
    }

    for( unsigned d = 0; d < geode.getNumDrawables(); ++d )
    {
        apply( geode.getDrawable(d) );
    }

    if ( ss.valid() )
    {
        _state->popStateSet();
    }
}
开发者ID:myemail2235,项目名称:osgearth,代码行数:35,代码来源:ShaderGenerator.cpp

示例8: apply

void StatsVisitor::apply(osg::Geode& node)
{
    if (node.getStateSet())
    {
        apply(*node.getStateSet());
    }

    ++_numInstancedGeode;
    _geodeSet.insert(&node);

    for(unsigned int i=0; i<node.getNumDrawables();++i)
    {
        apply(*node.getDrawable(i));
    }

    traverse(node);
}
开发者ID:AndreyIstomin,项目名称:osg,代码行数:17,代码来源:Statistics.cpp

示例9: apply

 virtual void apply(osg::Geode& geode)
 {
     replaceTexure(geode.getStateSet());
     for (unsigned int i = 0; i < geode.getNumDrawables(); ++i)
     {
         replaceTexure(geode.getDrawable(i)->getStateSet());
     }
     traverse(geode);
 }
开发者ID:ghub,项目名称:osg3bg,代码行数:9,代码来源:ch7_6.cpp

示例10: apply

 virtual void apply(osg::Geode& geode)
 {
     apply(geode.getStateSet());
     for(unsigned int i=0; i<geode.getNumDrawables(); ++i)
     {
         apply(geode.getDrawable(i)->getStateSet());
         osg::Geometry* geometry = geode.getDrawable(i)->asGeometry();
         if (geometry) apply(geometry);
     }
 }
开发者ID:151706061,项目名称:OpenSceneGraph,代码行数:10,代码来源:GraphicsCostEstimator.cpp

示例11: apply

void GLObjectsVisitor::apply(osg::Geode& node)
{
    if (node.getStateSet())
    {
        apply(*(node.getStateSet()));
    }

    for(unsigned int i=0;i<node.getNumDrawables();++i)
    {
        osg::Drawable* drawable = node.getDrawable(i);
        if (drawable)
        {
            apply(*drawable);
            if (drawable->getStateSet())
            {
                apply(*(drawable->getStateSet()));
            }
        }
    }
}
开发者ID:AndreyIstomin,项目名称:osg,代码行数:20,代码来源:GLObjectsVisitor.cpp

示例12: apply

void ProtectTransparencyVisitor::apply( osg::Geode& geode )
{
    protectTransparent( geode.getStateSet() );

    unsigned int idx;
    for( idx=0; idx<geode.getNumDrawables(); idx++ )
    {
        protectTransparent( geode.getDrawable( idx )->getStateSet() );
    }

    traverse( geode );
}
开发者ID:NaohiroHayashi,项目名称:bulletsim,代码行数:12,代码来源:TransparencyUtils.cpp

示例13: apply

void GLObjectsVisitor::apply(osg::Geode& node)
{
    bool programSetBefore = _lastCompiledProgram.valid();

    if (node.getStateSet())
    {
        apply(*(node.getStateSet()));
    }

    traverse(node);

    bool programSetAfter = _lastCompiledProgram.valid();
    if (!programSetBefore && programSetAfter)
    {
        osg::State* state = _renderInfo.getState();
        osg::GLExtensions* extensions = state->get<osg::GLExtensions>();
        extensions->glUseProgram(0);
        state->setLastAppliedProgramObject(0);
        _lastCompiledProgram = 0;
    }
}
开发者ID:aoighost,项目名称:osg,代码行数:21,代码来源:GLObjectsVisitor.cpp

示例14: apply

 void                            apply( osg::Geode& node )
                                 {
                                     node.compileDrawables( *_p_state );
                                     osg::Geode::DrawableList drawableList = node.getDrawableList();
                                     int listsize = drawableList.size();
                                     for ( int cnt = 0; cnt < listsize; ++cnt )
                                     {
                                         ++_numVisited;
                                         compileResource( node.getStateSet() );
                                     }
                                     traverse( node );
                                 }
开发者ID:BackupTheBerlios,项目名称:yag2002-svn,代码行数:12,代码来源:levelmanager.cpp

示例15: apply

void DXFWriterNodeVisitor::apply( osg::Geode &node )
{

    pushStateSet(node.getStateSet());
    osg::Matrix m = osg::computeLocalToWorld(getNodePath());
    unsigned int count = node.getNumDrawables();

    for ( unsigned int i = 0; i < count; i++ )
    {
        osg::Geometry *g = node.getDrawable( i )->asGeometry();
        if ( g != NULL )
        {
            pushStateSet(g->getStateSet());
            processGeometry(g,m);
            popStateSet(g->getStateSet());
        }
    }


    popStateSet(node.getStateSet());
}
开发者ID:Kurdakov,项目名称:emscripten_OSG,代码行数:21,代码来源:DXFWriterNodeVisitor.cpp


注:本文中的osg::Geode::getStateSet方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。