Visualization Library v1.0.3

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes

vl::Tessellator Class Reference

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>

Inheritance diagram for vl::Tessellator:
vl::Object

List of all members.

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 fvec3tessNormal () 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< GeometrytessellateGeometry (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< dvec3mContourVerts
std::vector< fvec3mTessellatedTris
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

Detailed Description

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.


Constructor & Destructor Documentation

Tessellator::Tessellator (  )
Tessellator::~Tessellator (  )

Destructor.

Definition at line 47 of file Tessellator.cpp.

References freeCombinedVertices().


Member Function Documentation

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 )
ref< Geometry > Tessellator::tessellateGeometry ( bool  append_tessellated_tris = false )

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]
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().


Member Data Documentation

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().

Definition at line 143 of file Tessellator.hpp.

Referenced by Tessellator().

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().

Definition at line 149 of file Tessellator.hpp.

Referenced by Tessellator().

Definition at line 151 of file Tessellator.hpp.

Referenced by Tessellator().


The documentation for this class was generated from the following files:

Visualization Library v1.0.3 Reference Documentation
Copyright Michele Bosi. All rights reserved.
Updated on Tue Feb 7 2017 00:55:12.
Permission is granted to use this page to write and publish articles regarding Visualization Library.