From Marc Helbling, "please find the mergeTriangleStrip code merged in osgUtil::TriStripVisitor.

I've removed the references to DrawArrays as we should no longer produce any.

Note that:
* as the name suggest, it only works for triangle strips but could probably be easily extended to quads
* the resulting primitive is not highly optimized; we could probably sort the strips in order to minimize the number of primitive restart
* as we may merge DrawElementsUInt and DrawElementUShort, the code will only generate DrawElementsUInt"


git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14602 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
Robert Osfield
2014-12-15 17:15:21 +00:00
parent 811dde86c8
commit 117869d154
2 changed files with 78 additions and 1 deletions

View File

@@ -36,7 +36,8 @@ class OSGUTIL_EXPORT TriStripVisitor : public BaseOptimizerVisitor
BaseOptimizerVisitor( optimizer, Optimizer::TRISTRIP_GEOMETRY),
_cacheSize( 16 ),
_minStripSize( 2 ),
_generateFourPointPrimitivesQuads ( false)
_generateFourPointPrimitivesQuads ( false ),
_mergeTriangleStrips( false )
{}
/** Convert mesh primitives in Geometry into Tri Strips.
@@ -45,6 +46,8 @@ class OSGUTIL_EXPORT TriStripVisitor : public BaseOptimizerVisitor
*/
void stripify(osg::Geometry& drawable);
void mergeTriangleStrips(osg::Geometry::PrimitiveSetList& primitives);
/** Stripify (make into strips of tria or quads) the accumulated list of Geometry drawables.*/
void stripify();
@@ -75,6 +78,8 @@ class OSGUTIL_EXPORT TriStripVisitor : public BaseOptimizerVisitor
void setGenerateFourPointPrimitivesQuads(bool flag) { _generateFourPointPrimitivesQuads = flag; }
bool getGenerateFourPointPrimitivesQuads() const { return _generateFourPointPrimitivesQuads; }
void setMergeTriangleStrips(bool flag) { _mergeTriangleStrips = flag; }
bool getMergeTriangleStrips() const { return _mergeTriangleStrips; }
private:
@@ -84,6 +89,7 @@ class OSGUTIL_EXPORT TriStripVisitor : public BaseOptimizerVisitor
unsigned int _minStripSize;
GeometryList _geometryList;
bool _generateFourPointPrimitivesQuads;
bool _mergeTriangleStrips;
};
}