OcclusionQueryNode: add resetting of queries

If there's a big view change then it might not be appropriate to wait
for '_queryFrameCount' till the next query is issued, because then
geometry might pop into the view after '_queryFrameCount'.

This is especially important for applications not having a constant
frame rate, but just issue a new frame on demand.
This commit is contained in:
Daniel Trstenjak 2019-01-23 12:10:00 +01:00 committed by Robert Osfield
parent e2fb88e187
commit c8521068a5
2 changed files with 11 additions and 0 deletions

View File

@ -125,6 +125,11 @@ public:
void setQueryFrameCount( unsigned int frames ) { _queryFrameCount = frames; }
unsigned int getQueryFrameCount() const { return _queryFrameCount; }
// Resets the queries. The next frame will issue a new query.
// This is useful for big view changes, if it shouldn't be waited for
// '_queryFrameCount' till the frame contents change.
void resetQueries();
// Indicate whether or not the bounding box used in the occlusion query test
// should be rendered. Handy for debugging and development.
// Should only be called outside of cull/draw. No thread issues.

View File

@ -588,6 +588,12 @@ void OcclusionQueryNode::setQueriesEnabled( bool enable )
_enabled = enable;
}
void OcclusionQueryNode::resetQueries()
{
OpenThreads::ScopedLock<OpenThreads::Mutex> lock( _frameCountMutex );
_frameCountMap.clear();
}
// Should only be called outside of cull/draw. No thread issues.
void OcclusionQueryNode::setDebugDisplay( bool debug )
{