diff --git a/include/osg/OcclusionQueryNode b/include/osg/OcclusionQueryNode index b45cf3e78..9090d459a 100644 --- a/include/osg/OcclusionQueryNode +++ b/include/osg/OcclusionQueryNode @@ -60,7 +60,7 @@ public: // QueryGeometry -- A Drawable that performs an occlusion query, // using its geometric data as the query geometry. -class QueryGeometry : public osg::Geometry +class OSG_EXPORT QueryGeometry : public osg::Geometry { public: QueryGeometry( const std::string& oqnName=std::string("") ); @@ -141,6 +141,10 @@ public: osg::StateSet* getQueryStateSet(); const osg::StateSet* getQueryStateSet() const; + // Get the QueryGeometry object used for occlusion query. Returns 0 if no QueryGeometry is created. + osg::QueryGeometry* getQueryGeometry(); + const osg::QueryGeometry* getQueryGeometry() const; + // Set and get the StateSet used by the OcclusionQueryNode // when rendering the debug query geometry (see setDebugDisplay). void setDebugStateSet( osg::StateSet* ss ); diff --git a/src/osg/OcclusionQueryNode.cpp b/src/osg/OcclusionQueryNode.cpp index a701d85a1..5df6f6a69 100644 --- a/src/osg/OcclusionQueryNode.cpp +++ b/src/osg/OcclusionQueryNode.cpp @@ -754,5 +754,25 @@ void OcclusionQueryNode::discardDeletedQueryObjects( unsigned int contextID ) QueryGeometry::discardDeletedQueryObjects( contextID ); } +osg::QueryGeometry* OcclusionQueryNode::getQueryGeometry() +{ + if (_queryGeode && _queryGeode->getDrawable( 0 )) + { + QueryGeometry* qg = static_cast< QueryGeometry* >( _queryGeode->getDrawable( 0 ) ); + return qg; + } + return 0; +} + +const osg::QueryGeometry* OcclusionQueryNode::getQueryGeometry() const +{ + if (_queryGeode && _queryGeode->getDrawable( 0 )) + { + QueryGeometry* qg = static_cast< QueryGeometry* >( _queryGeode->getDrawable( 0 ) ); + return qg; + } + return 0; +} + }