Visualization Library 2.0.0

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

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vl::EdgeRenderer Class Reference

The EdgeRenderer class implements a special Renderer that automatically extracts and renders the edges of the objects in the scene. More...

#include <EdgeRenderer.hpp>

+ Inheritance diagram for vl::EdgeRenderer:

Public Member Functions

 EdgeRenderer ()
 
const RenderQueuerender (const RenderQueue *in_render_queue, Camera *camera, real frame_clock)
 Takes as input the render queue to render and returns a possibly filtered render queue for further processing. More...
 
WFInfo * declareActor (Actor *act, const fvec4 &color)
 Generates and caches all the information needed to render the edges of the given Actor using the specified color. More...
 
WFInfo * declareActor (Actor *act)
 Generates and caches all the information needed to render the edges of the given Actor. More...
 
void clearCache ()
 Clears the cache containing the Actor and edge information. More...
 
void setActorDirty (Actor *actor)
 Removes all the edge/rendering information relative to the specified Actor from the cache. More...
 
void setShowHiddenLines (bool show)
 If set to true shows also the hidden lines with a dashed pattern. More...
 
bool showHiddenLines () const
 If set to true shows also the hidden lines with a dashed pattern. More...
 
void setShowCreases (bool show)
 If set to true shows not only the edges that define the silhouette of an object but also the crease edges. More...
 
bool showCreases () const
 If set to true shows not only the edges that define the silhouette of an object but also the crease edges. More...
 
void setCreaseAngle (float degrees)
 The minimum angle (in degrees) considered to generate crease-edges (default is 44 degrees). More...
 
float creaseAngle () const
 The minimum angle (in degrees) considered to generate crease-edges (default is 44 degrees). More...
 
void setSmoothLines (bool smooth)
 If set to true the lines will be rendered using antialiasing. More...
 
bool smoothLines () const
 If set to true the lines will be rendered using antialiasing. More...
 
void setLineWidth (float width)
 Defines the width of the rendered edges. More...
 
float lineWidth () const
 Defines the width of the rendered edges. More...
 
void setDefaultLineColor (const fvec4 &c)
 Defines the default color of the rendered edges. You can also define a per-Actor color using the declareActor() method. More...
 
const fvec4defaultLineColor () const
 Defines the default color of the rendered edges. You can also define a per-Actor color using the declareActor() method. More...
 
void setPolygonOffsetFactor (float factor)
 Defines the factor parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information. More...
 
float polygonOffsetFactor () const
 Defines the factor parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information. More...
 
void setPolygonOffsetUnits (float units)
 Defines the units parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information. More...
 
float polygonOffsetUnits () const
 Defines the units parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information. More...
 
- Public Member Functions inherited from vl::Renderer
 Renderer ()
 
virtual ~Renderer ()
 
const RenderQueuerenderRaw (const RenderQueue *in_render_queue, Camera *camera, real frame_clock)
 Used by render() to loop through the render queue. More...
 
void setProjViewTransfCallback (ProjViewTransfCallback *callback)
 
const ProjViewTransfCallbackprojViewTransfCallback () const
 
ProjViewTransfCallbackprojViewTransfCallback ()
 
const std::map< unsigned int, ref< Shader > > & shaderOverrideMask () const
 A bitmask/Shader map used to everride the Shader of those Actors whose enable mask satisfy the following condition: (Actors::enableMask() & bitmask) != 0. More...
 
std::map< unsigned int, ref< Shader > > & shaderOverrideMask ()
 A bitmask/Shader map used to everride the Shader of those Actors whose enable mask satisfy the following condition: (Actors::enableMask() & bitmask) != 0. More...
 
std::vector< RenderStateSlot > & overriddenDefaultRenderStates ()
 Render states that will be used as default by the opengl context by this renderer. More...
 
const std::vector< RenderStateSlot > & overriddenDefaultRenderStates () const
 Render states that will be used as default by the opengl context by this renderer. More...
 
bool isEnabled (unsigned int mask)
 
bool isEnabled (const Actor *actor)
 
void setFramebuffer (Framebuffer *framebuffer)
 The Framebuffer on which the rendering is performed. More...
 
const Framebufferframebuffer () const
 The Framebuffer on which the rendering is performed. More...
 
Framebufferframebuffer ()
 The Framebuffer on which the rendering is performed. More...
 
- Public Member Functions inherited from vl::RendererAbstract
 RendererAbstract ()
 
RendererAbstractoperator= (const RendererAbstract &other)
 
void dispatchOnRendererStarted ()
 Dispatches the onRendererStarted() event to the registered RenderEventCallback objects. More...
 
void dispatchOnRendererFinished ()
 Dispatches the onRendererFinished() event to the registered RenderEventCallback objects. More...
 
Collection< RenderEventCallback > * onFinishedCallbacks ()
 Returns the list of RenderEventCallback objects registered to onRendererFinished() event notification. More...
 
const Collection< RenderEventCallback > * onFinishedCallbacks () const
 Returns the list of RenderEventCallback objects registered to onRendererFinished() event notification. More...
 
Collection< RenderEventCallback > * onStartedCallbacks ()
 Returns the list of RenderEventCallback objects registered to onRendererStarted() event notification. More...
 
const Collection< RenderEventCallback > * onStartedCallbacks () const
 Returns the list of RenderEventCallback objects registered to onRendererStarted() event notification. More...
 
unsigned long renderTick () const
 The current render tick number, equivalent to the number or calls made to the render() method. More...
 
void incrementRenderTick ()
 Increments the rendering tick count. More...
 
void setClearFlags (EClearFlags clear_flags)
 The clear flags used to clear the viewport. More...
 
EClearFlags clearFlags () const
 The clear flags used to clear the viewport. More...
 
void setEnableMask (unsigned int mask)
 Enable mask used to enable/disable the rendering of matching Actors. More...
 
unsigned int enableMask () const
 Enable mask used to enable/disable the rendering of matching Actors. More...
 
void setFrameClock (real t)
 The current rendring frame time. More...
 
real frameClock () const
 The current rendring frame time. More...
 
- Public Member Functions inherited from vl::Object
 Object ()
 Constructor. More...
 
 Object (const Object &other)
 Copy constructor: copies the name, ref count mutex and user data. More...
 
Objectoperator= (const Object &other)
 Copy operator: copies the object's name, ref count mutex and user data. More...
 
const std::string & objectName () const
 The name of the object, by default set to the object's class name. More...
 
void setObjectName (const char *name)
 The name of the object, by default set to the object's class name in debug builds. More...
 
void setObjectName (const std::string &name)
 The name of the object, by default set to the object's class name in debug builds. More...
 
void setRefCountMutex (IMutex *mutex)
 The mutex used to protect the reference counting of an Object across multiple threads. More...
 
IMutexrefCountMutex ()
 The mutex used to protect the reference counting of an Object across multiple threads. More...
 
const IMutexrefCountMutex () const
 The mutex used to protect the reference counting of an Object across multiple threads. More...
 
int referenceCount () const
 Returns the number of references of an object. More...
 
void incReference () const
 Increments the reference count of an object. More...
 
void decReference ()
 Decrements the reference count of an object and deletes it if both automaticDelete() is true the count reaches 0. More...
 
void setAutomaticDelete (bool autodel_on)
 If set to true the Object is deleted when its reference count reaches 0. More...
 
bool automaticDelete () const
 If set to true the Object is deleted when its reference count reaches 0. More...
 
template<class T >
T * as ()
 Casts an Object to the specified class. More...
 
template<class T >
const T * as () const
 Casts an Object to the specified class. More...
 

Protected Member Functions

void renderSolids (Camera *camera, real frame_clock)
 
void renderLines (Camera *camera)
 
- Protected Member Functions inherited from vl::Object
virtual ~Object ()
 

Protected Attributes

std::map< ref< Actor >, ref< WFInfo > > mActorCache
 
std::map< ref< Actor >, ref< WFInfo > > mVisibleActors
 
fvec4 mDefaultLineColor
 
float mLineWidth
 
float mPolygonOffsetFactor
 
float mPolygonOffsetUnits
 
float mCreaseAngle
 
bool mShowHiddenLines
 
bool mShowCreases
 
bool mSmoothLines
 
- Protected Attributes inherited from vl::Renderer
ref< FramebuffermFramebuffer
 
vl::ref< EnableSetmDummyEnables
 
vl::ref< RenderStateSetmDummyStateSet
 
std::map< unsigned int, ref< Shader > > mShaderOverrideMask
 
std::vector< RenderStateSlotmOverriddenDefaultRenderStates
 
ref< ProjViewTransfCallbackmProjViewTransfCallback
 
- Protected Attributes inherited from vl::RendererAbstract
ref< Collection< RenderEventCallback > > mOnFinishedCallbacks
 
ref< Collection< RenderEventCallback > > mOnStartedCallbacks
 
unsigned long mRenderTick
 
unsigned int mEnableMask
 
EClearFlags mClearFlags
 
real mFrameClock
 
- Protected Attributes inherited from vl::Object
std::string mObjectName
 
IMutexmRefCountMutex
 
int mReferenceCount
 
bool mAutomaticDelete
 

Detailed Description

The EdgeRenderer class implements a special Renderer that automatically extracts and renders the edges of the objects in the scene.

In order to efficiently and transparently render the edges of the objects present in the scene the EdgeRenderer class keeps an internal cache of Geometry and Actor objects that contain the extracted edges. For this reason if the Geometry of an Actor changes or if an Actor is removed from the scene you should call the setActorDirty() method. This way the cached information relative to that Actor will be removed and will be recreated only if/when such Actor becomes visible again. Call the clearCache() method to invalidate the whole cache. In order to minimized the amount of memory used by the cache it is important to keep the cache as clean and up to date as possible. The color used to render the edges can be set globally using the setDefaultLineColor() method or by Actor using the declareActor() method.

See also

Definition at line 55 of file EdgeRenderer.hpp.

Constructor & Destructor Documentation

◆ EdgeRenderer()

vl::EdgeRenderer::EdgeRenderer ( )
inline

Definition at line 69 of file EdgeRenderer.hpp.

Member Function Documentation

◆ clearCache()

void vl::EdgeRenderer::clearCache ( )
inline

Clears the cache containing the Actor and edge information.

Call this function when a significant part of the scene changed or was removed. The cache will be automatically rebuild at the next rendering frames.

Definition at line 84 of file EdgeRenderer.hpp.

◆ creaseAngle()

float vl::EdgeRenderer::creaseAngle ( ) const
inline

The minimum angle (in degrees) considered to generate crease-edges (default is 44 degrees).

Definition at line 104 of file EdgeRenderer.hpp.

Referenced by declareActor().

◆ declareActor() [1/2]

EdgeRenderer::WFInfo * EdgeRenderer::declareActor ( Actor act,
const fvec4 color 
)

Generates and caches all the information needed to render the edges of the given Actor using the specified color.

Definition at line 244 of file EdgeRenderer.cpp.

References creaseAngle(), vl::EdgeExtractor::edges(), vl::EdgeExtractor::extractEdges(), vl::EdgeExtractor::generateEdgeGeometry(), vl::ref< T >::get(), mActorCache, NULL, and vl::EdgeExtractor::setCreaseAngle().

Referenced by render().

◆ declareActor() [2/2]

EdgeRenderer::WFInfo * EdgeRenderer::declareActor ( Actor act)

◆ defaultLineColor()

const fvec4& vl::EdgeRenderer::defaultLineColor ( ) const
inline

Defines the default color of the rendered edges. You can also define a per-Actor color using the declareActor() method.

Definition at line 119 of file EdgeRenderer.hpp.

◆ lineWidth()

float vl::EdgeRenderer::lineWidth ( ) const
inline

Defines the width of the rendered edges.

Definition at line 114 of file EdgeRenderer.hpp.

◆ polygonOffsetFactor()

float vl::EdgeRenderer::polygonOffsetFactor ( ) const
inline

Defines the factor parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information.

Definition at line 124 of file EdgeRenderer.hpp.

Referenced by render().

◆ polygonOffsetUnits()

float vl::EdgeRenderer::polygonOffsetUnits ( ) const
inline

Defines the units parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information.

Definition at line 128 of file EdgeRenderer.hpp.

Referenced by render().

◆ render()

const RenderQueue * EdgeRenderer::render ( const RenderQueue in_render_queue,
Camera camera,
real  frame_clock 
)
virtual

◆ renderLines()

void EdgeRenderer::renderLines ( Camera camera)
protected

◆ renderSolids()

void EdgeRenderer::renderSolids ( Camera camera,
real  frame_clock 
)
protected

◆ setActorDirty()

void vl::EdgeRenderer::setActorDirty ( Actor actor)
inline

Removes all the edge/rendering information relative to the specified Actor from the cache.

Call this function when an Actor's Geometry changed or when you know that an Actor that was previously visible won't be visible anymore, for example because it has been removed from the scene. Note that if the Actor becomes visible at any point later the cache will be automatically rebuilt.

Definition at line 89 of file EdgeRenderer.hpp.

◆ setCreaseAngle()

void vl::EdgeRenderer::setCreaseAngle ( float  degrees)
inline

The minimum angle (in degrees) considered to generate crease-edges (default is 44 degrees).

Definition at line 102 of file EdgeRenderer.hpp.

References vl::degrees().

◆ setDefaultLineColor()

void vl::EdgeRenderer::setDefaultLineColor ( const fvec4 c)
inline

Defines the default color of the rendered edges. You can also define a per-Actor color using the declareActor() method.

Definition at line 117 of file EdgeRenderer.hpp.

◆ setLineWidth()

void vl::EdgeRenderer::setLineWidth ( float  width)
inline

Defines the width of the rendered edges.

Definition at line 112 of file EdgeRenderer.hpp.

◆ setPolygonOffsetFactor()

void vl::EdgeRenderer::setPolygonOffsetFactor ( float  factor)
inline

Defines the factor parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information.

Definition at line 122 of file EdgeRenderer.hpp.

◆ setPolygonOffsetUnits()

void vl::EdgeRenderer::setPolygonOffsetUnits ( float  units)
inline

Defines the units parameter used to render the lines over the polygons. See also http://www.opengl.org/sdk/docs/man/xhtml/glPolygonOffset.xml for more information.

Definition at line 126 of file EdgeRenderer.hpp.

◆ setShowCreases()

void vl::EdgeRenderer::setShowCreases ( bool  show)
inline

If set to true shows not only the edges that define the silhouette of an object but also the crease edges.

Definition at line 97 of file EdgeRenderer.hpp.

◆ setShowHiddenLines()

void vl::EdgeRenderer::setShowHiddenLines ( bool  show)
inline

If set to true shows also the hidden lines with a dashed pattern.

Definition at line 92 of file EdgeRenderer.hpp.

◆ setSmoothLines()

void vl::EdgeRenderer::setSmoothLines ( bool  smooth)
inline

If set to true the lines will be rendered using antialiasing.

Definition at line 107 of file EdgeRenderer.hpp.

◆ showCreases()

bool vl::EdgeRenderer::showCreases ( ) const
inline

If set to true shows not only the edges that define the silhouette of an object but also the crease edges.

Definition at line 99 of file EdgeRenderer.hpp.

Referenced by renderSolids().

◆ showHiddenLines()

bool vl::EdgeRenderer::showHiddenLines ( ) const
inline

If set to true shows also the hidden lines with a dashed pattern.

Definition at line 94 of file EdgeRenderer.hpp.

Referenced by render().

◆ smoothLines()

bool vl::EdgeRenderer::smoothLines ( ) const
inline

If set to true the lines will be rendered using antialiasing.

Definition at line 109 of file EdgeRenderer.hpp.

Referenced by render().

Member Data Documentation

◆ mActorCache

std::map< ref<Actor>, ref<WFInfo> > vl::EdgeRenderer::mActorCache
protected

Definition at line 135 of file EdgeRenderer.hpp.

Referenced by declareActor().

◆ mCreaseAngle

float vl::EdgeRenderer::mCreaseAngle
protected

Definition at line 141 of file EdgeRenderer.hpp.

◆ mDefaultLineColor

fvec4 vl::EdgeRenderer::mDefaultLineColor
protected

Definition at line 137 of file EdgeRenderer.hpp.

Referenced by declareActor().

◆ mLineWidth

float vl::EdgeRenderer::mLineWidth
protected

Definition at line 138 of file EdgeRenderer.hpp.

Referenced by render().

◆ mPolygonOffsetFactor

float vl::EdgeRenderer::mPolygonOffsetFactor
protected

Definition at line 139 of file EdgeRenderer.hpp.

◆ mPolygonOffsetUnits

float vl::EdgeRenderer::mPolygonOffsetUnits
protected

Definition at line 140 of file EdgeRenderer.hpp.

◆ mShowCreases

bool vl::EdgeRenderer::mShowCreases
protected

Definition at line 143 of file EdgeRenderer.hpp.

◆ mShowHiddenLines

bool vl::EdgeRenderer::mShowHiddenLines
protected

Definition at line 142 of file EdgeRenderer.hpp.

◆ mSmoothLines

bool vl::EdgeRenderer::mSmoothLines
protected

Definition at line 144 of file EdgeRenderer.hpp.

◆ mVisibleActors

std::map< ref<Actor>, ref<WFInfo> > vl::EdgeRenderer::mVisibleActors
protected

Definition at line 136 of file EdgeRenderer.hpp.

Referenced by render(), renderLines(), and renderSolids().


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