14 #ifndef OSGUTIL_STATISTICS
15 #define OSGUTIL_STATISTICS 1
17 #include <osgUtil/Export>
19 #include <osg/PrimitiveSet>
20 #include <osg/Drawable>
21 #include <osg/NodeVisitor>
25 #include <osg/Geometry>
26 #include <osg/Transform>
81 virtual void drawArrays(GLenum mode,GLint,GLsizei count);
82 virtual void drawElements(GLenum mode,GLsizei count,
const GLubyte*);
83 virtual void drawElements(GLenum mode,GLsizei count,
const GLushort*);
84 virtual void drawElements(GLenum mode,GLsizei count,
const GLuint*);
86 virtual void begin(GLenum mode);
90 PrimitivePair& prim = _primitiveCount[_currentPrimitiveFunctorMode];
92 _number_of_vertexes++;
147 PrimitiveCountMap _primitives_count;
149 unsigned int _total_primitives_count;
150 unsigned int _number_of_vertexes;
152 inline unsigned int _calculate_primitives_number_by_mode(GLenum, GLsizei);
155 inline unsigned int Statistics::_calculate_primitives_number_by_mode(GLenum mode, GLsizei count)
161 case GL_POLYGON:
return count;
162 case GL_LINES:
return count / 2;
163 case GL_LINE_STRIP:
return count - 1;
164 case GL_TRIANGLES:
return count / 3;
165 case GL_TRIANGLE_STRIP:
166 case GL_TRIANGLE_FAN:
return count - 2;
167 case GL_QUADS:
return count / 4;
168 case GL_QUAD_STRIP:
return count / 2 - 1;
186 virtual
void reset();
188 virtual
void apply(
osg::Node& node);
189 virtual
void apply(
osg::Group& node);
190 virtual
void apply(
osg::Transform& node);
191 virtual
void apply(
osg::LOD& node);
192 virtual
void apply(
osg::Switch& node);
193 virtual
void apply(
osg::Geode& node);
194 virtual
void apply(
osg::Drawable& drawable);
195 virtual
void apply(
osg::StateSet& ss);
197 virtual
void totalUpStats();
199 virtual
void print(std::ostream& out);
201 unsigned int _numInstancedGroup;
202 unsigned int _numInstancedSwitch;
203 unsigned int _numInstancedLOD;
204 unsigned int _numInstancedTransform;
205 unsigned int _numInstancedGeode;
206 unsigned int _numInstancedDrawable;
207 unsigned int _numInstancedGeometry;
208 unsigned int _numInstancedFastGeometry;
209 unsigned int _numInstancedStateSet;
212 NodeSet _transformSet;
216 DrawableSet _drawableSet;
217 DrawableSet _geometrySet;
218 DrawableSet _fastGeometrySet;
219 StateSetSet _statesetSet;
PrimitiveCountMap::iterator GetPrimitivesEnd()
deprecated
std::set< osg::Node * > NodeSet
virtual void setVertexArray(unsigned int count, const osg::Vec4d *)
std::set< osg::Drawable * > DrawableSet
std::set< osg::StateSet * > StateSetSet
virtual void vertex(const osg::Vec3 &)
Mimics the OpenGL glVertex() "family of functions".
std::map< GLenum, PrimitivePair > PrimitiveValueMap
virtual void vertex(const osg::Vec4 &)
Mimics the OpenGL glVertex() "family of functions".
unsigned int _vertexCount
GLint GLenum GLsizei GLsizei GLsizei depth
PrimitiveCountMap & getPrimitiveCountMap()
const PrimitiveCountMap & getPrimitiveCountMap() const
std::pair< unsigned int, unsigned int > PrimitivePair
virtual void vertex(float, float)
Mimics the OpenGL glVertex() "family of functions".
void setType(StatsType t)
std::map< GLenum, unsigned int > PrimitiveCountMap
virtual void setVertexArray(unsigned int count, const osg::Vec2 *)
virtual void vertex(float, float, float)
Mimics the OpenGL glVertex() "family of functions".
virtual void vertex(float, float, float, float)
Mimics the OpenGL glVertex() "family of functions".
virtual void setVertexArray(unsigned int count, const osg::Vec2d *)
PrimitiveValueMap & getPrimitiveValueMap()
#define META_NodeVisitor(library, name)
virtual void setVertexArray(unsigned int count, const osg::Vec3d *)
void addOrderedLeaves(int n)
PrimitiveCountMap::iterator GetPrimitivesBegin()
deprecated
virtual void vertex(const osg::Vec2 &)
Mimics the OpenGL glVertex() "family of functions".
virtual void setVertexArray(unsigned int count, const osg::Vec4 *)
virtual void setVertexArray(unsigned int count, const osg::Vec3 *)
GLenum _currentPrimitiveFunctorMode
void addStateGraphs(int n)
const PrimitiveValueMap & getPrimitiveValueMap() const
Shader generator framework.
PrimitiveValueMap _primitiveCount