From 63628ce099791b3fa06b6dc7a11956fff90d0e2c Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 15 Apr 2003 09:33:11 +0000 Subject: [PATCH] From Romano, extra methods/variables for controlling tesselation. --- include/osgUtil/TriStripVisitor | 45 +++++++++++++++++++++++++++++---- src/osgUtil/TriStripVisitor.cpp | 7 ++--- 2 files changed, 42 insertions(+), 10 deletions(-) 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);