14 #ifndef OSGUTIL_SIMPLIFIER
15 #define OSGUTIL_SIMPLIFIER 1
17 #include <osg/NodeVisitor>
19 #include <osg/Geometry>
21 #include <osgUtil/Export>
31 Simplifier(
double sampleRatio=1.0,
double maximumError=FLT_MAX,
double maximumLength=0.0);
35 void setSampleRatio(
float sampleRatio) { _sampleRatio = sampleRatio; }
72 bool continueSimplification(
float nextError,
unsigned int numOriginalPrimitives,
unsigned int numRemainingPrimitives)
const
74 if (_continueSimplificationCallback.valid())
return _continueSimplificationCallback->continueSimplification(*
this, nextError, numOriginalPrimitives, numRemainingPrimitives);
75 else return continueSimplificationImplementation(nextError, numOriginalPrimitives, numRemainingPrimitives);
80 if (getSampleRatio()<1.0)
return ((
float)numRemainingPrimitives > ((
float)numOriginalPrimitives) * getSampleRatio()) && nextError<=getMaximumError();
81 else return ((
float)numRemainingPrimitives < ((
float)numOriginalPrimitives) * getSampleRatio()) && nextError>getMaximumLength();
103 void simplify(
osg::Geometry& geometry,
const IndexList& protectedPoints);
void setMaximumLength(float length)
void setContinueSimplificationCallback(ContinueSimplificationCallback *cb)
float getSampleRatio() const
const ContinueSimplificationCallback * getContinueSimplificationCallback() const
META_NodeVisitor(osgUtil, Simplifier) void setSampleRatio(float sampleRatio)
bool getDoTriStrip() const
virtual bool continueSimplificationImplementation(float nextError, unsigned int numOriginalPrimitives, unsigned int numRemainingPrimitives) const
std::vector< unsigned int > IndexList
ContinueSimplificationCallback * getContinueSimplificationCallback()
typedef void(GL_APIENTRY *GLTexImage3DProc)(GLenum target
void setSmoothing(bool on)
osg::ref_ptr< ContinueSimplificationCallback > _continueSimplificationCallback
virtual ~ContinueSimplificationCallback()
float getMaximumLength() const
virtual bool continueSimplification(const Simplifier &simplifier, float nextError, unsigned int numOriginalPrimitives, unsigned int numRemainingPrimitives) const
virtual void apply(osg::Geode &geode)
virtual Geometry * asGeometry()
Drawable * getDrawable(unsigned int i)
void setDoTriStrip(bool on)
unsigned int getNumDrawables() const
void setMaximumError(float error)
float getMaximumError() const
Shader generator framework.
bool continueSimplification(float nextError, unsigned int numOriginalPrimitives, unsigned int numRemainingPrimitives) const
bool getSmoothing() const