本文整理汇总了C++中osg::Group::setCullCallback方法的典型用法代码示例。如果您正苦于以下问题:C++ Group::setCullCallback方法的具体用法?C++ Group::setCullCallback怎么用?C++ Group::setCullCallback使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Group
的用法示例。
在下文中一共展示了Group::setCullCallback方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: apply
void AddQueries::apply( osg::Group& node )
{
if( node.getName() == std::string( "__QueryStats" ) )
// This is the QueryStats subtree. Don't instrument it with any OQ stuff.
return;
if( node.getCullCallback() != NULL )
{
traverse( node );
return;
}
// Do not add callbacks to redundant Groups because the parent Group's
// bounding volume (and query geometry) would also be redundant.
// This Group is not redundant if it has no parents, or if its parents
// are all Cameras, or if any one of its non-Camera parents has
// more than one child. Otherwise, it's redundant.
bool redundantGroup( false );
unsigned int parentsWithOneChild( 0 );
const unsigned int numParents( node.getNumParents() );
unsigned int idx;
for( idx=0; idx < numParents; idx++ )
{
osg::Group* parent = node.getParent( idx );
bool parentIsCamera = ( dynamic_cast< osg::Camera* >( parent ) != NULL );
if( parentIsCamera )
continue;
if( parent->getNumChildren() == 1 )
{
parentsWithOneChild++;
// If all parents have one child, then we are redundant.
if( numParents == parentsWithOneChild )
redundantGroup = true;
}
}
if( redundantGroup )
{
if( ( _qs != NULL ) && ( &node == _qs->getNode() ) )
osg::notify( osg::ALWAYS ) << "Debug: Unable to add QueryStats to redundant Group \"" << node.getName() << "\"." << std::endl;
traverse( node );
return;
}
// Create QueryComputation for this node.
// Add a QueryStats only if a) we have one and
// b) the node addresses match.
osgwQuery::QueryStats* debugStats( NULL );
if( ( _qs != NULL ) && ( &node == _qs->getNode() ) )
{
osg::notify( osg::ALWAYS ) << "Debug: Adding QueryStats to node \"" << node.getName() << "\"." << std::endl;
debugStats = _qs;
}
QueryComputation* nd = new QueryComputation( debugStats );
QueryCullCallback* qcc = new QueryCullCallback();
qcc->setName( node.getName() );
qcc->attach( &node, nd );
node.setCullCallback( qcc );
_queryCount++;
traverse( node );
}