|
Public Types |
typedef std::vector< osg::Vec3 * > | VertexPointList |
typedef std::vector< osg::ref_ptr<
Prim > > | PrimList |
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 | TesselationType { TESS_TYPE_GEOMETRY,
TESS_TYPE_DRAWABLE,
TESS_TYPE_POLYGONS
} |
| we interpret all contours in the geometry as a single set to be tesselated or each separate drawable's contours needs to be tesselated. More...
|
Public Member Functions |
| Tesselator () |
| ~Tesselator () |
void | setBoundaryOnly (const bool tt) |
| Set and get tesselation request boundary only on/off.
|
const bool | getBoundaryOnly () |
void | setWindingType (const WindingType wt) |
| Set and get tesselation windong rule.
|
const WindingType | getWindingType () |
void | setTesselationType (const TesselationType tt) |
| Set and get tesselation type.
|
const TesselationType | getTesselationType () |
void | retesselatePolygons (osg::Geometry &cxgeom) |
| Change the contours lists of the geometry into tesselated primitives (the list of primitives in the original geometry is stored in the tesselator for possible re-use.
|
void | setTesselationNormal (const osg::Vec3 norm) |
| Define the normal to the tesselated polygon - this provides a hint how to tesselate the contours; see gluTessNormal in red book or man pages.
|
osg::Geometry::PrimitiveSetList | getContours () |
void | beginTesselation () |
void | beginContour () |
void | addVertex (osg::Vec3 *vertex) |
void | endContour () |
void | endTesselation () |
PrimList & | getPrimList () |
void | reset () |
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 retesselating tesselation can introduce extra vertices for concave or crossing boundaries, these will leak memory if not removed when retesselating.
|
void | collectTesselation (osg::Geometry &cxgeom) |
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) |
Static Protected Member Functions |
void CALLBACK | beginCallback (GLenum which, void *userData) |
void CALLBACK | vertexCallback (GLvoid *data, void *userData) |
void CALLBACK | combineCallback (GLdouble coords[3], void *vertex_data[4], GLfloat weight[4], void **outData, void *useData) |
void CALLBACK | endCallback (void *userData) |
void CALLBACK | errorCallback (GLenum errorCode, void *userData) |
Protected Attributes |
GLUtesselator * | _tobj |
PrimList | _primList |
Vec3dList | _coordData |
NewVertexList | _newVertexList |
GLenum | _errorCode |
WindingType | _wtype |
| winding rule, which parts will become solid
|
TesselationType | _ttype |
| tesselation 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 tesselation hint
|
Using old style glu tessellation functions for portability. Upgraded Jan 2004 to use the modern glu tessellation functions.