Visualization Library v1.0.3A lightweight C++ OpenGL middleware for 2D/3D graphics |
[Download] [Tutorials] [All Classes] [Grouped Classes] |
Tessellates a complex polygon defined by a set of outlines into a set of triangles that can be rendered by Visualization Library. More...
#include <Tessellator.hpp>
Public Member Functions | |
Tessellator () | |
Constructor. | |
~Tessellator () | |
Destructor. | |
const std::vector< dvec3 > & | contourVerts () const |
The contours that specify the complex polygon to be tessellated. | |
std::vector< dvec3 > & | contourVerts () |
The contours that specify the complex polygon to be tessellated. | |
const std::vector< int > & | contours () const |
The contours that specify the complex polygon to be tessellated. | |
std::vector< int > & | contours () |
The contours that specify the complex polygon to be tessellated. | |
const std::vector< fvec3 > & | tessellatedTris () const |
A set of triangles representing the tessellated polygon. | |
std::vector< fvec3 > & | tessellatedTris () |
A set of triangles representing the tessellated polygon. | |
void | setTessNormal (const fvec3 &normal) |
See gluTessNormal documentation. | |
const fvec3 & | tessNormal () const |
See gluTessNormal documentation. | |
void | setBoundaryOnly (bool on) |
See gluTessProperty documentation (GLU_TESS_BOUNDARY_ONLY) | |
bool | boundaryOnly () const |
See gluTessProperty documentation (GLU_TESS_BOUNDARY_ONLY) | |
double | tolerance () const |
See gluTessProperty documentation (GLU_TESS_TOLERANCE) | |
void | setTolerance (double tolerance) |
See gluTessProperty documentation (GLU_TESS_TOLERANCE) | |
ETessellationWinding | windingRule () const |
See gluTessProperty documentation (GLU_TESS_WINDING_RULE) | |
void | setWindingRule (ETessellationWinding rule) |
See gluTessProperty documentation (GLU_TESS_WINDING_RULE) | |
bool | tessellate (bool append_tessellated_tris=false) |
ref< Geometry > | tessellateGeometry (bool append_tessellated_tris=false) |
Utility function that calls tessellate() and creates a Geometry with the tessellated triangles. | |
void | setTessellateIntoSinglePolygon (bool on) |
bool | tessellateIntoSinglePolygon () const |
Protected Member Functions | |
void | freeCombinedVertices () |
Static Protected Member Functions | |
static void CALLBACK | tessBeginData (GLenum type, Tessellator *tessellator) |
static void CALLBACK | tessVertexData (dvec3 *vec, Tessellator *tessellator) |
static void CALLBACK | tessCombineData (GLdouble coords[3], dvec3 *d[4], GLfloat w[4], dvec3 **dataOut, Tessellator *tessellator) |
static void CALLBACK | tessEnd (void) |
static void CALLBACK | tessError (GLenum errno) |
Protected Attributes | |
std::vector< int > | mContours |
std::vector< dvec3 > | mContourVerts |
std::vector< fvec3 > | mTessellatedTris |
std::vector< std::vector< fvec3 > > | mFans |
std::vector< std::vector< fvec3 > > | mTriStrips |
std::vector< std::vector< fvec3 > > | mLineLoops |
std::vector< dvec3 * > | mCombinedVertices |
GLenum | mPrimitiveType |
fvec3 | mTessNormal |
bool | mBoundaryOnly |
double | mTolerance |
ETessellationWinding | mWindingRule |
bool | mTessellateIntoSinglePolygon |
Tessellates a complex polygon defined by a set of outlines into a set of triangles that can be rendered by Visualization Library.
For more information see the OpenGL Programmer's Guide chapter #11 "Tessellators and Quadrics".
Definition at line 50 of file Tessellator.hpp.
Tessellator::Tessellator | ( | ) |
Constructor.
Definition at line 37 of file Tessellator.cpp.
References mBoundaryOnly, mTessellateIntoSinglePolygon, mTessNormal, mTolerance, mWindingRule, vl::TW_TESS_WINDING_ODD, and VL_DEBUG_SET_OBJECT_NAME.
Tessellator::~Tessellator | ( | ) |
const std::vector<dvec3>& vl::Tessellator::contourVerts | ( | ) | const [inline] |
The contours that specify the complex polygon to be tessellated.
Definition at line 64 of file Tessellator.hpp.
Referenced by vl::Extrusion::extrude().
std::vector<dvec3>& vl::Tessellator::contourVerts | ( | ) | [inline] |
The contours that specify the complex polygon to be tessellated.
Definition at line 67 of file Tessellator.hpp.
const std::vector<int>& vl::Tessellator::contours | ( | ) | const [inline] |
The contours that specify the complex polygon to be tessellated.
Definition at line 70 of file Tessellator.hpp.
Referenced by vl::Extrusion::extrude().
std::vector<int>& vl::Tessellator::contours | ( | ) | [inline] |
The contours that specify the complex polygon to be tessellated.
Definition at line 73 of file Tessellator.hpp.
const std::vector<fvec3>& vl::Tessellator::tessellatedTris | ( | ) | const [inline] |
A set of triangles representing the tessellated polygon.
Definition at line 76 of file Tessellator.hpp.
Referenced by vl::Extrusion::extrude(), and tessellate().
std::vector<fvec3>& vl::Tessellator::tessellatedTris | ( | ) | [inline] |
A set of triangles representing the tessellated polygon.
Definition at line 79 of file Tessellator.hpp.
void vl::Tessellator::setTessNormal | ( | const fvec3 & | normal ) | [inline] |
See gluTessNormal documentation.
Definition at line 82 of file Tessellator.hpp.
const fvec3& vl::Tessellator::tessNormal | ( | ) | const [inline] |
See gluTessNormal documentation.
Definition at line 85 of file Tessellator.hpp.
Referenced by tessellate().
void vl::Tessellator::setBoundaryOnly | ( | bool | on ) | [inline] |
See gluTessProperty documentation (GLU_TESS_BOUNDARY_ONLY)
Definition at line 88 of file Tessellator.hpp.
bool vl::Tessellator::boundaryOnly | ( | ) | const [inline] |
See gluTessProperty documentation (GLU_TESS_BOUNDARY_ONLY)
Definition at line 91 of file Tessellator.hpp.
Referenced by tessellate().
double vl::Tessellator::tolerance | ( | ) | const [inline] |
See gluTessProperty documentation (GLU_TESS_TOLERANCE)
Definition at line 94 of file Tessellator.hpp.
Referenced by tessellate().
void vl::Tessellator::setTolerance | ( | double | tolerance ) | [inline] |
See gluTessProperty documentation (GLU_TESS_TOLERANCE)
Definition at line 97 of file Tessellator.hpp.
ETessellationWinding vl::Tessellator::windingRule | ( | ) | const [inline] |
See gluTessProperty documentation (GLU_TESS_WINDING_RULE)
Definition at line 100 of file Tessellator.hpp.
Referenced by tessellate().
void vl::Tessellator::setWindingRule | ( | ETessellationWinding | rule ) | [inline] |
See gluTessProperty documentation (GLU_TESS_WINDING_RULE)
Definition at line 103 of file Tessellator.hpp.
Referenced by vl::Extrusion::extrude().
bool Tessellator::tessellate | ( | bool | append_tessellated_tris = false ) |
Definition at line 52 of file Tessellator.cpp.
References boundaryOnly(), vl::Log::error(), freeCombinedVertices(), mContours, mContourVerts, mFans, mLineLoops, mPrimitiveType, mTessellatedTris, mTriStrips, tessBeginData(), tessCombineData(), tessellatedTris(), tessellateIntoSinglePolygon(), tessEnd(), tessError(), tessNormal(), tessVertexData(), tolerance(), vl::Log::warning(), and windingRule().
Referenced by vl::Extrusion::extrude(), and tessellateGeometry().
Utility function that calls tessellate() and creates a Geometry with the tessellated triangles.
Definition at line 155 of file Tessellator.cpp.
References vl::ref< T >::get(), mTessellatedTris, NULL, vl::PT_TRIANGLES, and tessellate().
void vl::Tessellator::setTessellateIntoSinglePolygon | ( | bool | on ) | [inline] |
Definition at line 118 of file Tessellator.hpp.
bool vl::Tessellator::tessellateIntoSinglePolygon | ( | ) | const [inline] |
Definition at line 120 of file Tessellator.hpp.
Referenced by tessellate().
void CALLBACK Tessellator::tessBeginData | ( | GLenum | type, |
Tessellator * | tessellator | ||
) | [static, protected] |
Definition at line 175 of file Tessellator.cpp.
References vl::Log::error(), mFans, mLineLoops, mPrimitiveType, and mTriStrips.
Referenced by tessellate().
void CALLBACK Tessellator::tessVertexData | ( | dvec3 * | vec, |
Tessellator * | tessellator | ||
) | [static, protected] |
Definition at line 197 of file Tessellator.cpp.
References vl::Log::error(), mFans, mLineLoops, mPrimitiveType, mTessellatedTris, and mTriStrips.
Referenced by tessellate().
void CALLBACK Tessellator::tessCombineData | ( | GLdouble | coords[3], |
dvec3 * | d[4], | ||
GLfloat | w[4], | ||
dvec3 ** | dataOut, | ||
Tessellator * | tessellator | ||
) | [static, protected] |
Definition at line 216 of file Tessellator.cpp.
References mCombinedVertices, vl::Vector3< T_Scalar >::x(), vl::Vector3< T_Scalar >::y(), and vl::Vector3< T_Scalar >::z().
Referenced by tessellate().
void CALLBACK Tessellator::tessEnd | ( | void | ) | [static, protected] |
Definition at line 226 of file Tessellator.cpp.
Referenced by tessellate().
void CALLBACK Tessellator::tessError | ( | GLenum | errno ) | [static, protected] |
Definition at line 230 of file Tessellator.cpp.
References vl::Log::error().
Referenced by tessellate().
void Tessellator::freeCombinedVertices | ( | ) | [protected] |
Definition at line 148 of file Tessellator.cpp.
References mCombinedVertices.
Referenced by tessellate(), and ~Tessellator().
std::vector<int> vl::Tessellator::mContours [protected] |
Definition at line 132 of file Tessellator.hpp.
Referenced by tessellate().
std::vector<dvec3> vl::Tessellator::mContourVerts [protected] |
Definition at line 133 of file Tessellator.hpp.
Referenced by tessellate().
std::vector<fvec3> vl::Tessellator::mTessellatedTris [protected] |
Definition at line 135 of file Tessellator.hpp.
Referenced by tessellate(), tessellateGeometry(), and tessVertexData().
std::vector< std::vector<fvec3> > vl::Tessellator::mFans [protected] |
Definition at line 137 of file Tessellator.hpp.
Referenced by tessBeginData(), tessellate(), and tessVertexData().
std::vector< std::vector<fvec3> > vl::Tessellator::mTriStrips [protected] |
Definition at line 138 of file Tessellator.hpp.
Referenced by tessBeginData(), tessellate(), and tessVertexData().
std::vector< std::vector<fvec3> > vl::Tessellator::mLineLoops [protected] |
Definition at line 139 of file Tessellator.hpp.
Referenced by tessBeginData(), tessellate(), and tessVertexData().
std::vector< dvec3* > vl::Tessellator::mCombinedVertices [protected] |
Definition at line 140 of file Tessellator.hpp.
Referenced by freeCombinedVertices(), and tessCombineData().
GLenum vl::Tessellator::mPrimitiveType [protected] |
Definition at line 141 of file Tessellator.hpp.
Referenced by tessBeginData(), tessellate(), and tessVertexData().
fvec3 vl::Tessellator::mTessNormal [protected] |
Definition at line 143 of file Tessellator.hpp.
Referenced by Tessellator().
bool vl::Tessellator::mBoundaryOnly [protected] |
Definition at line 145 of file Tessellator.hpp.
Referenced by Tessellator().
double vl::Tessellator::mTolerance [protected] |
Definition at line 147 of file Tessellator.hpp.
Referenced by Tessellator().
ETessellationWinding vl::Tessellator::mWindingRule [protected] |
Definition at line 149 of file Tessellator.hpp.
Referenced by Tessellator().
bool vl::Tessellator::mTessellateIntoSinglePolygon [protected] |
Definition at line 151 of file Tessellator.hpp.
Referenced by Tessellator().