OcclusionQueryNode: reset the test result of the invalid geometry
There're cases that the occlusion test result has been retrieved after the query geometry has been changed, it's the result of the geometry before the change.
This commit is contained in:
parent
3ef5d2b331
commit
8fb5ba4a3f
@ -483,8 +483,15 @@ bool OcclusionQueryNode::getPassed( const Camera* camera, NodeVisitor& nv )
|
|||||||
return _passed;
|
return _passed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryGeometry* qg = static_cast< QueryGeometry* >( _queryGeode->getDrawable( 0 ) );
|
||||||
|
|
||||||
if ( !_validQueryGeometry )
|
if ( !_validQueryGeometry )
|
||||||
{
|
{
|
||||||
|
// There're cases that the occlusion test result has been retrieved
|
||||||
|
// after the query geometry has been changed, it's the result of the
|
||||||
|
// geometry before the change.
|
||||||
|
qg->reset();
|
||||||
|
|
||||||
// The box of the query geometry is invalid, return false to not traverse
|
// The box of the query geometry is invalid, return false to not traverse
|
||||||
// the subgraphs.
|
// the subgraphs.
|
||||||
_passed = false;
|
_passed = false;
|
||||||
@ -513,7 +520,6 @@ bool OcclusionQueryNode::getPassed( const Camera* camera, NodeVisitor& nv )
|
|||||||
_passed = true;
|
_passed = true;
|
||||||
return _passed;
|
return _passed;
|
||||||
}
|
}
|
||||||
QueryGeometry* qg = static_cast< QueryGeometry* >( _queryGeode->getDrawable( 0 ) );
|
|
||||||
|
|
||||||
// Get the near plane for the upcoming distance calculation.
|
// Get the near plane for the upcoming distance calculation.
|
||||||
osg::Matrix::value_type nearPlane;
|
osg::Matrix::value_type nearPlane;
|
||||||
|
Loading…
Reference in New Issue
Block a user