diff --git a/include/osgUtil/TriStripVisitor b/include/osgUtil/TriStripVisitor index 36fd04a39..41c511bfb 100644 --- a/include/osgUtil/TriStripVisitor +++ b/include/osgUtil/TriStripVisitor @@ -30,20 +30,55 @@ class OSGUTIL_EXPORT TriStripVisitor : public osg::NodeVisitor public: /// default to traversing all children. - TriStripVisitor() - { - setTraversalMode(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN); - } + TriStripVisitor() : + osg::NodeVisitor( osg::NodeVisitor::TRAVERSE_ALL_CHILDREN ), + _cacheSize( 24 ), + _minStripSize( 0 ) + {} /** convert mesh primitives in Geometry into Tri Strips using * NvTriStrip. Converts all primitive types except points * and lines, linestrips which it leaves unchanged. */ - static void stripify(osg::Geometry& drawable); + void stripify(osg::Geometry& drawable); /// apply stripify method to all geode geometry. virtual void apply(osg::Geode& geode); + inline void setCacheSize( unsigned int size ) + { + _cacheSize = size; + } + + inline unsigned int getCacheSize() + { + return _cacheSize; + } + + inline const unsigned int getCacheSize() const + { + return _cacheSize; + } + + inline void setMinStripSize( unsigned int size ) + { + _minStripSize = size; + } + + inline unsigned int getMinStripSize() + { + return _minStripSize; + } + + inline const unsigned int getMinStripSize() const + { + return _minStripSize; + } + + private: + + unsigned int _cacheSize; + unsigned int _minStripSize; }; } diff --git a/src/osgUtil/TriStripVisitor.cpp b/src/osgUtil/TriStripVisitor.cpp index 3b3706c2e..233d071bc 100644 --- a/src/osgUtil/TriStripVisitor.cpp +++ b/src/osgUtil/TriStripVisitor.cpp @@ -130,12 +130,9 @@ void TriStripVisitor::stripify(Geometry& geom) // so increment to give to the corrent number of verticies. ++in_numVertices; - int in_cacheSize = 16; - int in_minStripLength = 2; - triangle_stripper::tri_stripper stripifier(taf.in_indices); - stripifier.SetCacheSize(in_cacheSize); - stripifier.SetMinStripSize(in_minStripLength); + stripifier.SetCacheSize(_cacheSize); + stripifier.SetMinStripSize(_minStripSize); triangle_stripper::tri_stripper::primitives_vector outPrimitives; stripifier.Strip(&outPrimitives);