galaxy 1.0.0
Real-Time C++23 Game Programming Framework. Built on data-driven design principles and agile software engineering.
Loading...
Searching...
No Matches
Renderer.hpp
Go to the documentation of this file.
1
7
8#ifndef GALAXY_GRAPHICS_RENDERER_HPP_
9#define GALAXY_GRAPHICS_RENDERER_HPP_
10
11#include <ankerl/unordered_dense.h>
12
18
19namespace galaxy
20{
24 class Renderer final
25 {
26 public:
30 Renderer();
31
35 ~Renderer();
36
40 void prepare();
41
49 void begin_pass(RenderPass& pass);
50
58 void bind_pipeline(RenderPipeline& pipeline);
59
67 void push_cmd(RenderCmd& cmd) noexcept;
68
74 void end_pass(Camera& camera);
75
76 private:
81
85 std::vector<RenderCmd> m_commands;
86
91
96
101
106
110 std::vector<RenderData> m_uniform_data;
111
116 };
117} // namespace galaxy
118
119#endif
Orthographic 2D camera.
Definition Camera.hpp:20
OpenGL 4.6 Renderer that tries to mimic vulkan pipeline.
Definition Renderer.hpp:25
ShaderBuffer m_camera_storage
Camera buffer.
Definition Renderer.hpp:105
~Renderer()
Destructor.
Definition Renderer.cpp:36
unsigned int m_uniform_data_index
Uniform data current max index.
Definition Renderer.hpp:115
std::vector< RenderCmd > m_commands
RenderCmd storage.
Definition Renderer.hpp:85
std::vector< RenderData > m_uniform_data
Renderable uniform data storage.
Definition Renderer.hpp:110
void end_pass(Camera &camera)
Renders everything configured in this pass.
Definition Renderer.cpp:116
ShaderBuffer m_uniform_storage
Renderable uniforms buffer.
Definition Renderer.hpp:100
Renderer()
Constructor.
Definition Renderer.cpp:20
VertexBatch m_quads
Quad vertex batch.
Definition Renderer.hpp:80
void push_cmd(RenderCmd &cmd) noexcept
Push a renderable object.
Definition Renderer.cpp:91
void bind_pipeline(RenderPipeline &pipeline)
Binds the GPU state specified in pipeline.
Definition Renderer.cpp:66
RenderPass * m_pass
Currently active pass.
Definition Renderer.hpp:90
void begin_pass(RenderPass &pass)
Binds framebuffer, viewport, sissor region and clears buffers.
Definition Renderer.cpp:53
void prepare()
Called only in the update loop when we need to refresh data to render.
Definition Renderer.cpp:42
RenderPipeline * m_pipeline
Currently active pipeline.
Definition Renderer.hpp:95
OpenGL Shader storage buffer.
A group of vertices for multiple renderables batched together.
Application.hpp galaxy.
Data required to draw an object.
The configuration for drawing something.
GPU configuration.