CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::RendererRenderableManager Class Referencefinal

A manager that controls all renderables currently registered with the renderer. More...

#include <CeresEngine/Renderer/RendererRenderable.hpp>

Inheritance diagram for CeresEngine::RendererRenderableManager:
CeresEngine::TRendererSceneObjectManager< RendererRenderableManager, RendererRenderable > CeresEngine::TRendererObjectManager< SelfType, ObjectType, BaseType > CeresEngine::RendererObjectManager

Public Member Functions

 RendererRenderableManager (Renderer &renderer)
 Creates a new instance of the RendererRenderableManager.
 
 ~RendererRenderableManager () noexcept final
 Destroys the RendererRenderableManager and releases all renderables objects managed by it.
 
Async prepare (RendererContext &context)
 Prepares the renderables for the rendering of the current frame.
 
- Public Member Functions inherited from CeresEngine::TRendererObjectManager< SelfType, ObjectType, BaseType >
template<typename... Args>
 TRendererObjectManager (Vector< UPtr< ObjectType > > &objects, Args &&... args)
 Creates a new TRendererObjectManager instance.
 
template<typename... Args>
ObjectTypecreate (Args &&... args)
 Creates a new renderer object by calling it's constructor.
 
void destroy (ObjectType &object)
 Destroys an existing renderer object by calling it's destructor and releasing it's memory.
 
- Public Member Functions inherited from CeresEngine::RendererObjectManager
 RendererObjectManager (Renderer &renderer) noexcept
 Creates a new RendererObjectManager instance.
 
virtual ~RendererObjectManager () noexcept=default
 Destroys an existing instance of RendererObjectManager.
 
RenderergetRenderer () const noexcept
 The renderer that owns this manager instance.
 

Private Types

using super = TRendererSceneObjectManager< RendererRenderableManager, RendererRenderable >
 
using UniformBufferType = GPUDynamicStridedBindlessBufferArray< RendererRenderableParams >
 The type used to store uniform buffers.
 

Private Member Functions

void markAsDirty (RendererRenderable *const renderable)
 Marks the given renderable as dirty.
 

Private Attributes

Vector< UPtr< RendererRenderable > > mRenderables
 A vector of all registered renderables.
 
HashSet< RendererRenderable * > mDirtyRenderables
 A set of dirty renderables that need to be updated on the next frame.
 
UniformBufferType mUniformBuffer
 The uniform buffer that holds GPU parameters for all renderables.
 

Friends

class RendererRenderable
 

Additional Inherited Members

- Protected Member Functions inherited from CeresEngine::RendererObjectManager
void notifyChangeID (RendererObject &object, const RendererObjectID newID) noexcept
 Method called whenever the RendererObject ID changes.
 
- Protected Attributes inherited from CeresEngine::RendererObjectManager
RenderermRenderer
 The renderer that owns this manager instance.
 

Detailed Description

A manager that controls all renderables currently registered with the renderer.

Member Typedef Documentation

◆ super

◆ UniformBufferType

Constructor & Destructor Documentation

◆ RendererRenderableManager()

CeresEngine::RendererRenderableManager::RendererRenderableManager ( Renderer renderer)
explicit

Creates a new instance of the RendererRenderableManager.

◆ ~RendererRenderableManager()

CeresEngine::RendererRenderableManager::~RendererRenderableManager ( )
finalnoexcept

Destroys the RendererRenderableManager and releases all renderables objects managed by it.

Member Function Documentation

◆ markAsDirty()

void CeresEngine::RendererRenderableManager::markAsDirty ( RendererRenderable *const  renderable)
private

Marks the given renderable as dirty.

It will be updated on the next frame.

◆ prepare()

Async CeresEngine::RendererRenderableManager::prepare ( RendererContext context)

Prepares the renderables for the rendering of the current frame.

This will update uniform buffers and perform any other necessary operations necessary for rendering.

Parameters
contextA context struct that contains parameters given by the renderer.

Friends And Related Symbol Documentation

◆ RendererRenderable

Member Data Documentation

◆ mDirtyRenderables

HashSet<RendererRenderable*> CeresEngine::RendererRenderableManager::mDirtyRenderables
private

A set of dirty renderables that need to be updated on the next frame.

◆ mRenderables

Vector<UPtr<RendererRenderable> > CeresEngine::RendererRenderableManager::mRenderables
private

A vector of all registered renderables.

Indices in this vector represent the renderer ID of the object.

◆ mUniformBuffer

UniformBufferType CeresEngine::RendererRenderableManager::mUniformBuffer
private

The uniform buffer that holds GPU parameters for all renderables.

Meant to be used by bindless render passes.


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