libdonut  2.3.2
Application framework for cross-platform game development in C++20
Renderer.hpp
Go to the documentation of this file.
1 #ifndef DONUT_GRAPHICS_RENDERER_HPP
2 #define DONUT_GRAPHICS_RENDERER_HPP
3 
10 #include <donut/graphics/Text.hpp>
14 #include <donut/shapes.hpp>
15 
16 #include <optional> // std::optional
17 #include <vector> // std::vector
18 
19 namespace donut::graphics {
20 
24 struct RendererOptions {};
25 
38 class Renderer {
39 public:
51  explicit Renderer(const RendererOptions& options = {});
52 
55 
57  Renderer(const Renderer&) = delete;
58 
60  Renderer(Renderer&&) = delete;
61 
63  Renderer& operator=(const Renderer&) = delete;
64 
67 
76  void clearFramebufferDepth(Framebuffer& framebuffer);
77 
87  void clearFramebufferColor(Framebuffer& framebuffer, Color color);
88 
98  void clearFramebufferColorAndDepth(Framebuffer& framebuffer, Color color);
99 
114  void render(Framebuffer& framebuffer, const RenderPass& renderPass, const Viewport& viewport, const Camera& camera, std::optional<Rectangle<int>> scissor = {});
115 
116 private:
117  TexturedQuad texturedQuad{};
118  std::vector<Model::Object::Instance> modelInstances{};
119  std::vector<TexturedQuad::Instance> texturedQuadInstances{};
120  Text text{};
121 };
122 
123 } // namespace donut::graphics
124 
125 #endif
Normalized floating-point RGBA color type with 32 bits per component.
Definition: Color.hpp:11
Combined view-projection matrix, defining the perspective for a Renderer to render from.
Definition: Camera.hpp:53
Unique resource handle with exclusive ownership of a GPU framebuffer.
Definition: Framebuffer.hpp:15
Graphics drawing queue for batch rendering using a Renderer.
Definition: RenderPass.hpp:718
Persistent system for rendering the batched draw commands of a RenderPass onto a Framebuffer,...
Definition: Renderer.hpp:38
void clearFramebufferColorAndDepth(Framebuffer &framebuffer, Color color)
Clear the color and depth buffer contents of a Framebuffer.
Renderer(const Renderer &)=delete
Copying a renderer is not allowed, since it manages global state.
void render(Framebuffer &framebuffer, const RenderPass &renderPass, const Viewport &viewport, const Camera &camera, std::optional< Rectangle< int >> scissor={})
Render the contents of a RenderPass to a Framebuffer.
Renderer operator=(Renderer &&)=delete
Moving a renderer is not allowed, since it manages global state.
Renderer(Renderer &&)=delete
Moving a renderer is not allowed, since it manages global state.
Renderer & operator=(const Renderer &)=delete
Copying a renderer is not allowed, since it manages global state.
void clearFramebufferDepth(Framebuffer &framebuffer)
Clear the depth buffer contents of a Framebuffer.
void clearFramebufferColor(Framebuffer &framebuffer, Color color)
Clear the color contents of a Framebuffer.
Renderer(const RendererOptions &options={})
Construct a renderer.
Definition: Buffer.hpp:7
Flat 2D axis-aligned rectangle shape with a position and size.
Definition: shapes.hpp:128
Configuration options for a Renderer.
Definition: Renderer.hpp:24
Square 2D mesh for textured rendering.
Definition: TexturedQuad.hpp:18
Rectangular region of a framebuffer.
Definition: Viewport.hpp:13