OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TriStripVisitor.h
Go to the documentation of this file.
1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2  *
3  * This library is open source and may be redistributed and/or modified under
4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5  * (at your option) any later version. The full license is in LICENSE file
6  * included with this distribution, and on the openscenegraph.org website.
7  *
8  * This library is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * OpenSceneGraph Public License for more details.
12 */
13 
14 #ifndef OSGUTIL_TRISTRIPVISITOR
15 #define OSGUTIL_TRISTRIPVISITOR 1
16 
17 #include <osg/NodeVisitor>
18 #include <osg/Geode>
19 #include <osg/Geometry>
20 
21 #include <osgUtil/Optimizer>
22 
23 #include <set>
24 
25 namespace osgUtil {
26 
31 {
32  public:
33 
35  TriStripVisitor(Optimizer* optimizer=0) :
36  BaseOptimizerVisitor( optimizer, Optimizer::TRISTRIP_GEOMETRY),
37  _cacheSize( 16 ),
38  _minStripSize( 2 ),
39  _generateFourPointPrimitivesQuads ( false ),
40  _mergeTriangleStrips( false )
41  {}
42 
47  void stripify(osg::Geometry& drawable);
48 
49  void mergeTriangleStrips(osg::Geometry::PrimitiveSetList& primitives);
50 
52  void stripify();
53 
55  virtual void apply(osg::Geode& geode);
56 
57  inline void setCacheSize( unsigned int size )
58  {
59  _cacheSize = size;
60  }
61 
62  inline unsigned int getCacheSize() const
63  {
64  return _cacheSize;
65  }
66 
67  inline void setMinStripSize( unsigned int size )
68  {
69  _minStripSize = size;
70  }
71 
72  inline unsigned int getMinStripSize() const
73  {
74  return _minStripSize;
75  }
76 
77 
78  void setGenerateFourPointPrimitivesQuads(bool flag) { _generateFourPointPrimitivesQuads = flag; }
79  bool getGenerateFourPointPrimitivesQuads() const { return _generateFourPointPrimitivesQuads; }
80 
81  void setMergeTriangleStrips(bool flag) { _mergeTriangleStrips = flag; }
82  bool getMergeTriangleStrips() const { return _mergeTriangleStrips; }
83 
84  private:
85 
86  typedef std::set<osg::Geometry*> GeometryList;
87 
88  unsigned int _cacheSize;
89  unsigned int _minStripSize;
90  GeometryList _geometryList;
91  bool _generateFourPointPrimitivesQuads;
92  bool _mergeTriangleStrips;
93 };
94 
95 }
96 
97 #endif
std::vector< ref_ptr< PrimitiveSet > > PrimitiveSetList
Definition: Geometry.h:102
unsigned int getMinStripSize() const
TriStripVisitor(Optimizer *optimizer=0)
default to traversing all children.
void setMinStripSize(unsigned int size)
bool getMergeTriangleStrips() const
void setMergeTriangleStrips(bool flag)
unsigned int getCacheSize() const
void setCacheSize(unsigned int size)
bool getGenerateFourPointPrimitivesQuads() const
#define OSGUTIL_EXPORT
Definition: Export.h:40
void setGenerateFourPointPrimitivesQuads(bool flag)
Shader generator framework.
Definition: RenderInfo.h:20