本文整理汇总了C++中osg::Node::setStateSet方法的典型用法代码示例。如果您正苦于以下问题:C++ Node::setStateSet方法的具体用法?C++ Node::setStateSet怎么用?C++ Node::setStateSet使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Node
的用法示例。
在下文中一共展示了Node::setStateSet方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: traverse
void
ShaderGenerator::apply( osg::Node& node )
{
if ( !_active ) return;
osg::ref_ptr<osg::StateSet> ss = node.getStateSet();
if ( ss.valid() )
{
_state->pushStateSet( ss.get() );
osg::ref_ptr<osg::StateSet> replacement;
if ( processGeometry(ss.get(), replacement) )
{
// optimize state set sharing
if ( _stateSetCache.valid() )
_stateSetCache->share(replacement, replacement);
_state->popStateSet();
node.setStateSet( replacement.get() );
_state->pushStateSet( replacement.get() );
}
}
traverse(node);
if ( ss.get() )
{
_state->popStateSet();
}
}
示例2: apply
virtual void apply(osg::Node& node)
{
if (node.getStateSet())
{
node.setStateSet(0);
++_numStateSetRemoved;
}
traverse(node);
}
示例3: traverse
void
CountStateSets::apply( osg::Node& node )
{
if( !processStateSet( node.getStateSet() ) && _removeEmptyStateSets )
{
node.setStateSet( NULL );
_removedStateSets++;
}
traverse( node );
}
示例4: traverse
void
ShaderGenerator::apply( osg::Node& node )
{
osg::ref_ptr<osg::StateSet> ss = node.getStateSet();
if ( ss.valid() )
{
_state->pushStateSet( ss.get() );
osg::ref_ptr<osg::StateSet> replacement;
if ( processGeometry(ss.get(), replacement) )
{
_state->popStateSet();
node.setStateSet( replacement.get() );
_state->pushStateSet( replacement.get() );
}
}
traverse(node);
if ( ss.get() )
{
_state->popStateSet();
}
}