From Romano, extra methods/variables for controlling tesselation.

This commit is contained in:
Robert Osfield
2003-04-15 09:33:11 +00:00
parent 0036018507
commit 63628ce099
2 changed files with 42 additions and 10 deletions

View File

@@ -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;
};
}

View File

@@ -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);