12#ifndef FRAMERENDERERHELPER_H_6014714286
13#define FRAMERENDERERHELPER_H_6014714286
15#include <Carna/Carna.h>
77template<
typename RenderStageOrder >
83 std::set< base::RenderStage*, RenderStageOrder > stages;
117 void commit(
bool clear =
true );
122template<
typename RenderStageOrder >
124 : renderer( renderer )
129template<
typename RenderStageOrder >
136template<
typename RenderStageOrder >
139 std::for_each( stages.begin(), stages.end(), std::default_delete< base::RenderStage >() );
144template<
typename RenderStageOrder >
149 renderer.clearStages();
153 unsigned int registeredMeshColorCodingStages = 0;
154 unsigned int enabledOccludedStages = 0;
155 for(
auto stageItr = stages.begin(); stageItr != stages.end(); ++stageItr )
158 renderer.appendStage( rs );
160 if( mccs ==
nullptr )
164 if( occluded ==
nullptr )
170 if( meshRenderer !=
nullptr && mccs !=
nullptr )
174 ++registeredMeshColorCodingStages;
176 if( meshRenderer !=
nullptr && occluded !=
nullptr )
179 ++enabledOccludedStages;
183 ,
"FrameRendererHelper registered "
184 + base::text::lexical_cast< std::string >( registeredMeshColorCodingStages )
185 +
" stage(s) for color coding." );
187 ,
"FrameRendererHelper enabled "
188 + base::text::lexical_cast< std::string >( enabledOccludedStages )
189 +
" stage(s) for occluded rendering." );
194template<
typename RenderStageOrder >
Defines Carna::base::GLContext.
Defines Carna::base::Log.
Defines Carna::presets::MeshColorCodingStage.
Defines Carna::base::MeshRenderingStage.
Defines Carna::presets::OccludedRenderingStage.
Defines Carna::base::RenderStageSequence.
Defines Carna::base::RenderStage.
@ debug
Indicates messages that might be of interest when searching bugs.
Defines MeshRenderingStage class template instance invariants.
static const unsigned int ROLE_DEFAULT_MESH
Identifies the Mesh object that MeshRenderingStage uses for rendering.
const unsigned int geometryType
Holds the geometry type rendered by this MeshRenderingStage.
static const unsigned int ROLE_DEFAULT_MATERIAL
Identifies the Material 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(base::RenderStageSequence &renderer)
Instantiates helper for renderer.
~FrameRendererHelper()
Deletes.
FrameRendererHelper< RenderStageOrder > & operator<<(base::RenderStage *rs)
Takes possession of rs and adds it to the renderer when commit is invoked.
void commit(bool clear=true)
Commits recorded changes to the associated renderer. Removes all previosly committed stages if clear ...
base::RenderStageSequence & renderer
References the configured renderer.
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
Features class it is placed in as non-copyable.
Defines Carna::base::text.