15#ifndef FRAMERENDERERHELPER_H_6014714286
16#define FRAMERENDERERHELPER_H_6014714286
79template<
typename RenderStageOrder >
85 std::set< base::RenderStage*, RenderStageOrder > stages;
119 void commit(
bool clear =
true );
124template<
typename RenderStageOrder >
126 : renderer( renderer )
131template<
typename RenderStageOrder >
138template<
typename RenderStageOrder >
141 std::for_each( stages.begin(), stages.end(), std::default_delete< base::RenderStage >() );
146template<
typename RenderStageOrder >
151 renderer.clearStages();
155 unsigned int registeredMeshColorCodingStages = 0;
156 unsigned int enabledOccludedStages = 0;
157 for(
auto stageItr = stages.begin(); stageItr != stages.end(); ++stageItr )
160 renderer.appendStage( rs );
162 if( mccs ==
nullptr )
166 if( occluded ==
nullptr )
172 if( meshRenderer !=
nullptr && mccs !=
nullptr )
176 ++registeredMeshColorCodingStages;
178 if( meshRenderer !=
nullptr && occluded !=
nullptr )
181 ++enabledOccludedStages;
185 ,
"FrameRendererHelper registered "
186 + base::text::lexical_cast< std::string >( registeredMeshColorCodingStages )
187 +
" stage(s) for color coding." );
189 ,
"FrameRendererHelper enabled "
190 + base::text::lexical_cast< std::string >( enabledOccludedStages )
191 +
" stage(s) for occluded rendering." );
196template<
typename RenderStageOrder >
Defines LibCarna::base::GLContext.
Contains forward-declarations.
Defines LibCarna::base::Log.
Defines LibCarna::presets::MeshColorCodingStage.
Defines LibCarna::base::MeshRenderingStage.
Defines LibCarna::presets::OccludedRenderingStage.
Defines LibCarna::base::RenderStageSequence.
Defines LibCarna::base::RenderStage.
@ debug
Indicates messages that might be of interest when searching bugs.
Defines MeshRenderingStage class template instance invariants.
static const unsigned int DEFAULT_ROLE_MATERIAL
Identifies the Material object that MeshRenderingStage uses for rendering.
const unsigned int geometryType
Holds the geometry type rendered by this MeshRenderingStage.
static const unsigned int DEFAULT_ROLE_MESH
Identifies the Mesh object that MeshRenderingStage uses for rendering.
Represents a rendering stages sequence.
Base abstract class of each rendering stage. Refer to the documentation of the rendering process.
static Log & instance()
Returns the only instance from class InstanceType.
Defines default rendering stages order used by FrameRendererHelper.
bool operator()(const base::RenderStage *x, const base::RenderStage *y) const
Compares x to y.
Adds rendering stages to a base::FrameRenderer object according to RenderStageOrder.
FrameRendererHelper< RenderStageOrder > & operator<<(base::RenderStage *rs)
Takes possession of rs and adds it to the renderer when commit is invoked.
base::RenderStageSequence & renderer
References the configured renderer.
~FrameRendererHelper()
Deletes.
FrameRendererHelper(base::RenderStageSequence &renderer)
Instantiates helper for renderer.
void commit(bool clear=true)
Commits recorded changes to the associated renderer. Removes all previosly committed stages if clear ...
void reset()
Resets changes that have been made since the last invocation of commit.
Implements a simple interface for mapping frame coordinates to base::Mesh objects.
void enableMaterials(unsigned int geometryType, unsigned int materialRole)
Enables support for materials if geometryType has been activated or will be activated later....
void putGeometryType(unsigned int geometryType, unsigned int meshRole)
Activates geometryType. Meshes with meshRole attached to geometry nodes with geometryType will be pro...
Renders geometry that is actually depth-occluded. The occluded geometry is rendered with reduced opac...
void enableStage(const base::RenderStage &rs)
Enables rs in .
#define NON_COPYABLE
Marks the class that it is placed in as non-copyable.
Defines LibCarna::base::text.