|
OpenSceneGraph
3.0.1
|
Originally a simple class for tessellating a single polygon boundary. More...

Classes | |
| struct | NewVertex |
| struct | Prim |
| struct | Vec3d |
Public Types | |
| enum | WindingType { TESS_WINDING_ODD = GLU_TESS_WINDING_ODD, TESS_WINDING_NONZERO = GLU_TESS_WINDING_NONZERO, TESS_WINDING_POSITIVE = GLU_TESS_WINDING_POSITIVE, TESS_WINDING_NEGATIVE = GLU_TESS_WINDING_NEGATIVE, TESS_WINDING_ABS_GEQ_TWO = GLU_TESS_WINDING_ABS_GEQ_TWO } |
| The winding rule, see red book ch 11. More... | |
| enum | TessellationType { TESS_TYPE_GEOMETRY, TESS_TYPE_DRAWABLE, TESS_TYPE_POLYGONS } |
| we interpret all contours in the geometry as a single set to be tessellated or each separate drawable's contours needs to be tessellated. More... | |
| typedef std::vector< osg::Vec3 * > | VertexPointList |
| typedef std::vector < osg::ref_ptr< Prim > > | PrimList |
Public Member Functions | |
| Tessellator () | |
| ~Tessellator () | |
| void | setBoundaryOnly (const bool tt) |
| Set and get tessellation request boundary only on/off. | |
| bool | getBoundaryOnly () |
| void | setWindingType (const WindingType wt) |
| Set and get tessellation windong rule. | |
| WindingType | getWindingType () |
| void | setTessellationType (const TessellationType tt) |
| Set and get tessellation type. | |
| TessellationType | getTessellationType () |
| void | retessellatePolygons (osg::Geometry &cxgeom) |
| Change the contours lists of the geometry into tessellated primitives (the list of primitives in the original geometry is stored in the Tessellator for possible re-use. | |
| void | setTessellationNormal (const osg::Vec3 norm) |
| Define the normal to the tessellated polygon - this provides a hint how to tessellate the contours; see gluTessNormal in red book or man pages. | |
| osg::Geometry::PrimitiveSetList | getContours () |
| void | beginTessellation () |
| void | beginContour () |
| void | addVertex (osg::Vec3 *vertex) |
| void | endContour () |
| void | endTessellation () |
| PrimList & | getPrimList () |
| void | reset () |
Public Member Functions inherited from osg::Referenced | |
| Referenced () | |
| Referenced (bool threadSafeRefUnref) | |
| Referenced (const Referenced &) | |
| Referenced & | operator= (const Referenced &) |
| virtual void | setThreadSafeRefUnref (bool threadSafe) |
| Set whether to use a mutex to ensure ref() and unref() are thread safe. | |
| bool | getThreadSafeRefUnref () const |
| Get whether a mutex is used to ensure ref() and unref() are thread safe. | |
| OpenThreads::Mutex * | getRefMutex () const |
| Get the mutex used to ensure thread safety of ref()/unref(). | |
| int | ref () const |
| Increment the reference count by one, indicating that this object has another pointer which is referencing it. | |
| int | unref () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
| int | unref_nodelete () const |
| Decrement the reference count by one, indicating that a pointer to this object is referencing it. | |
| int | referenceCount () const |
| Return the number of pointers currently referencing this object. | |
| ObserverSet * | getObserverSet () const |
| Get the ObserverSet if one is attached, otherwise return NULL. | |
| ObserverSet * | getOrCreateObserverSet () const |
| Get the ObserverSet if one is attached, otherwise create an ObserverSet, attach it, then return this newly created ObserverSet. | |
| void | addObserver (Observer *observer) const |
| Add a Observer that is observing this object, notify the Observer when this object gets deleted. | |
| void | removeObserver (Observer *observer) const |
| Remove Observer that is observing this object. | |
Protected Types | |
| typedef std::map< osg::Vec3 *, unsigned int > | VertexPtrToIndexMap |
| typedef std::vector< NewVertex > | NewVertexList |
| typedef std::vector< Vec3d * > | Vec3dList |
Protected Member Functions | |
| void | reduceArray (osg::Array *cold, const unsigned int nnu) |
| remove unused parts of the array, eg for wehn retessellating tessellation can introduce extra vertices for concave or crossing boundaries, these will leak memory if not removed when retessellating. | |
| void | collectTessellation (osg::Geometry &cxgeom, unsigned int originalIndex) |
| void | addContour (GLenum mode, unsigned int first, unsigned int last, osg::Vec3Array *vertices) |
| void | addContour (osg::PrimitiveSet *primitive, osg::Vec3Array *vertices) |
| void | handleNewVertices (osg::Geometry &geom, VertexPtrToIndexMap &vertexPtrToIndexMap) |
| void | begin (GLenum mode) |
| void | vertex (osg::Vec3 *vertex) |
| void | combine (osg::Vec3 *vertex, void *vertex_data[4], GLfloat weight[4]) |
| void | end () |
| void | error (GLenum errorCode) |
Protected Member Functions inherited from osg::Referenced | |
| virtual | ~Referenced () |
| void | signalObserversAndDelete (bool signalDelete, bool doDelete) const |
| void | deleteUsingDeleteHandler () const |
Static Protected Member Functions | |
| static void CALLBACK | beginCallback (GLenum which, void *userData) |
| static void CALLBACK | vertexCallback (GLvoid *data, void *userData) |
| static void CALLBACK | combineCallback (GLdouble coords[3], void *vertex_data[4], GLfloat weight[4], void **outData, void *useData) |
| static void CALLBACK | endCallback (void *userData) |
| static void CALLBACK | errorCallback (GLenum errorCode, void *userData) |
Protected Attributes | |
| osg::GLUtesselator * | _tobj |
| PrimList | _primList |
| Vec3dList | _coordData |
| NewVertexList | _newVertexList |
| GLenum | _errorCode |
| WindingType | _wtype |
| winding rule, which parts will become solid | |
| TessellationType | _ttype |
| tessellation rule, which parts will become solid | |
| bool | _boundaryOnly |
| unsigned int | _numberVerts |
| number of vertices that are part of the 'original' set of contours | |
| osg::Geometry::PrimitiveSetList | _Contours |
| List of primitives that define the contours. | |
| unsigned int | _index |
| count number of primitives in a geometry to get right no. | |
| osg::Vec3 | tessNormal |
| the gluTessNormal for tessellation hint | |
| unsigned int | _extraPrimitives |
| count of number of extra primitives added | |
Protected Attributes inherited from osg::Referenced | |
| OpenThreads::AtomicPtr | _observerSet |
| OpenThreads::Atomic | _refCount |
Additional Inherited Members | |
Static Public Member Functions inherited from osg::Referenced | |
| static OpenThreads::Mutex * | getGlobalReferencedMutex () |
| Get the optional global Referenced mutex, this can be shared between all osg::Referenced. | |
| static void | setThreadSafeReferenceCounting (bool enableThreadSafeReferenceCounting) |
| Set whether reference counting should use a mutex for thread safe reference counting. | |
| static bool | getThreadSafeReferenceCounting () |
| Get whether reference counting is active. | |
| static void | setDeleteHandler (DeleteHandler *handler) |
| Set a DeleteHandler to which deletion of all referenced counted objects will be delegated. | |
| static DeleteHandler * | getDeleteHandler () |
| Get a DeleteHandler. | |
Originally a simple class for tessellating a single polygon boundary.
Using old style glu tessellation functions for portability. Upgraded Jan 2004 to use the modern glu tessellation functions.
|
protected |
| typedef std::vector< osg::ref_ptr<Prim> > osgUtil::Tessellator::PrimList |
|
protected |
| typedef std::vector<osg::Vec3*> osgUtil::Tessellator::VertexPointList |
|
protected |
| osgUtil::Tessellator::Tessellator | ( | ) |
| osgUtil::Tessellator::~Tessellator | ( | ) |
|
protected |
|
protected |
| void osgUtil::Tessellator::addVertex | ( | osg::Vec3 * | vertex | ) |
|
protected |
|
staticprotected |
| void osgUtil::Tessellator::beginContour | ( | ) |
| void osgUtil::Tessellator::beginTessellation | ( | ) |
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
staticprotected |
| void osgUtil::Tessellator::endContour | ( | ) |
| void osgUtil::Tessellator::endTessellation | ( | ) |
|
protected |
|
staticprotected |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
protected |
|
protected |
remove unused parts of the array, eg for wehn retessellating tessellation can introduce extra vertices for concave or crossing boundaries, these will leak memory if not removed when retessellating.
| void osgUtil::Tessellator::reset | ( | ) |
| void osgUtil::Tessellator::retessellatePolygons | ( | osg::Geometry & | cxgeom | ) |
Change the contours lists of the geometry into tessellated primitives (the list of primitives in the original geometry is stored in the Tessellator for possible re-use.
The name remains retessellatePolygons although it now handles trifans, strips, quads etc. as well as Polygons so as to not break old codes relying on this function name.
|
inline |
Set and get tessellation request boundary only on/off.
|
inline |
Define the normal to the tessellated polygon - this provides a hint how to tessellate the contours; see gluTessNormal in red book or man pages.
GWM July 2005. Can improve teselation "For example, if you know that all polygons lie in the x-y plane, call gluTessNormal(tess, 0.0, 0.0, 1.0) before rendering any polygons."
|
inline |
Set and get tessellation type.
|
inline |
Set and get tessellation windong rule.
|
protected |
|
staticprotected |
|
protected |
|
protected |
List of primitives that define the contours.
|
protected |
|
protected |
|
protected |
count of number of extra primitives added
|
protected |
count number of primitives in a geometry to get right no.
of norms/colurs etc for per_primitive attributes.
|
protected |
|
protected |
number of vertices that are part of the 'original' set of contours
|
protected |
|
protected |
|
protected |
tessellation rule, which parts will become solid
|
protected |
winding rule, which parts will become solid
|
protected |
the gluTessNormal for tessellation hint
| Generated at Fri Sep 7 2012 17:48:27 for the OpenSceneGraph by doxygen 1.8.1.2. |