本文整理汇总了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);
}
示例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);
}
示例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();
}
示例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);
}
}
示例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();
}
}
示例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();
}
示例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();
}
}
示例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);
}
示例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);
}
示例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);
}
}
示例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()));
}
}
}
}
示例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 );
}
示例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;
}
}
示例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 );
}
示例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());
}