Added Simplifier::requiresDownSampling()/requiresDownSamplingImplementation() to make it possible for the

Simplfifer::ContinueSimplificationCallback to be able to decide whether up or downsampling is required,
removing the previous hardwards reliance on getSampleRatio<1.0.
This commit is contained in:
Robert Osfield
2016-01-18 11:50:07 +00:00
parent e9179aaa4b
commit 7409820a8f
2 changed files with 20 additions and 2 deletions

View File

@@ -59,6 +59,11 @@ class OSGUTIL_EXPORT Simplifier : public osg::NodeVisitor
{
return simplifier.continueSimplificationImplementation(nextError, numOriginalPrimitives, numRemainingPrimitives);
}
virtual bool requiresDownSampling(const Simplifier& simplifier) const
{
return simplifier.requiresDownSamplingImplementation();
}
protected:
virtual ~ContinueSimplificationCallback() {}
@@ -80,7 +85,17 @@ class OSGUTIL_EXPORT Simplifier : public osg::NodeVisitor
if (getSampleRatio()<1.0) return ((float)numRemainingPrimitives > ((float)numOriginalPrimitives) * getSampleRatio()) && nextError<=getMaximumError();
else return ((float)numRemainingPrimitives < ((float)numOriginalPrimitives) * getSampleRatio()) && nextError>getMaximumLength();
}
bool requiresDownSampling() const
{
if (_continueSimplificationCallback.valid()) return _continueSimplificationCallback->requiresDownSampling(*this);
else return requiresDownSamplingImplementation();
}
virtual bool requiresDownSamplingImplementation() const
{
return getSampleRatio()<1.0;
}
virtual void apply(osg::Geode& geode)
{