RendererBackend

OpenGL Renderer backend implementation.

Overview

Typical use cases:

  • Defining OpenGL-specific renderer backend implementations

TODO:

  • Optimize dynamic instance data management to reduce memory usage and improve performance. (Map/Unmap or Persistent Mapping)

  • Implement frustum culling to avoid rendering objects outside the view.

  • Implement MSAA or FXAA for better visual quality.

  • Add support for more complex shapes and 3D graphics.

  • Implement a more advanced shader system to support various effects and materials.

  • Implement a profiler to identify and address performance bottlenecks.

  • Make texture atlas support different filtering modes (nearest, linear, mipmaps).

  • Make the masking faster and more efficient by optimizing the shader and reducing overdraw.

  • Maybe one day remove this abomination: “&shader == &this->maskShader” UPDATE : did it :)

  • Add batch break indices.

Header

<RaeptorCogs/GAPI/GL/RendererBackend.hpp>

Metadata

Author

Estorc

Version

v1.0

Copyright

Copyright (c) 2025 Estorc MIT License.

Classes

Classes

Class

Description

RaeptorCogs::GAPI::GL::RendererBackend

OpenGL Renderer backend implementation.

class RendererBackend : public RaeptorCogs::GAPI::Common::RendererBackend

OpenGL Renderer backend implementation.

Provides OpenGL-specific implementations for the renderer backend interface.

Note

This class inherits from the common RendererBackend interface.

Public Functions

inline RendererBackend()

Constructor for RendererBackend.

virtual ~RendererBackend() override

Destructor for RendererBackend.

Cleans up resources used by the RendererBackend.

virtual void initialize() override

virtual bool isInitialized() const override

inline virtual GraphicsBackend getBackendType() const override

inline virtual std::shared_ptr<Common::ObjectData> Create(std::type_index type) override

virtual void render(Window *window, int x, int y, int width, int height) override

virtual void render(Texture &texture, int x, int y, int width, int height) override

virtual Common::WindowContext *createWindowContext() override

inline virtual ImGuiModule &getImGuiModule() override

inline virtual GraphicCore &getGraphicCore() override

inline virtual RenderPipeline &getRenderPipeline() override

Private Members

ImGuiModule imGui

ImGui implementation instance.

Holds the OpenGL-specific ImGui implementation.

GraphicCore graphicCore

Graphic core implementation.

Manages OpenGL core functionalities.

RenderPipeline renderPipeline

Render pipeline implementation.

Manages the OpenGL rendering pipeline.