Merge pull request #902 from mp3butcher/oqn

3.6 OQN API convergence
This commit is contained in:
OpenSceneGraph git repository
2020-01-21 09:32:57 +00:00
committed by GitHub
2 changed files with 141 additions and 72 deletions

View File

@@ -82,9 +82,9 @@ public:
};
/** return a QueryResult for specified Camera, where the QueryResult.valid is true when query results are available, and in which case the QueryResult.numPixels provides the num of pixels in the query result.*/
QueryResult getQueryResult( const osg::Camera* cam );
QueryResult getQueryResult( const osg::Camera* cam ) const;
unsigned int getNumPixels( const osg::Camera* cam );
unsigned int getNumPixels( const osg::Camera* cam ) const;
virtual void releaseGLObjects( osg::State* state = 0 ) const;
@@ -158,8 +158,11 @@ 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();
// Set and get the QueryGeometry object used for the occlusion query.
// By default an axis aligned box is used as the query geometry.
// Resetting to the default query geometry is done by setting it to 0.
// Returns 0 if no QueryGeometry is created.
void setQueryGeometry( osg::QueryGeometry* geom );
const osg::QueryGeometry* getQueryGeometry() const;
// Set and get the StateSet used by the OcclusionQueryNode
@@ -189,17 +192,30 @@ public:
static void discardDeletedQueryObjects( unsigned int contextID );
protected:
enum QueryGeometryState {
INVALID,
VALID,
USER_DEFINED
};
virtual ~OcclusionQueryNode();
virtual void createSupportNodes();
bool isQueryGeometryValid() const { return _queryGeometryState != INVALID; }
void setQueryGeometryInternal( osg::QueryGeometry* queryGeom,
osg::Geometry* debugQueryGeom,
QueryGeometryState state );
void updateDefaultQueryGeometry();
osg::ref_ptr< osg::Geode > _queryGeode;
osg::ref_ptr< osg::Geode > _debugGeode;
bool _enabled;
// If the box of the query geometry is valid.
mutable bool _validQueryGeometry;
mutable QueryGeometryState _queryGeometryState;
// Tracks the last frame number that we performed a query.
// User can set how many times (See setQueryFrameCount).