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{
21 class Renderer final
22 {
23 public:
27 Renderer();
28
32 ~Renderer();
33
37 void prepare();
38
42 void begin_pass(RenderPass& pass);
43
47 void bind_pipeline(RenderPipeline& pipeline);
48
54 void push_cmd(RenderCmd&& cmd);
55
59 void end_pass(Camera& camera);
60
61 private:
66
70 std::vector<RenderCmd> m_commands;
71
76
81
86
88
89 std::vector<RenderData> m_uniform_data;
90 };
91} // namespace galaxy
92
93#endif
Orthographic 2D camera.
Definition Camera.hpp:20
ShaderBuffer m_camera_storage
Definition Renderer.hpp:87
std::vector< RenderCmd > m_commands
RenderCommands.
Definition Renderer.hpp:70
std::vector< RenderData > m_uniform_data
Definition Renderer.hpp:89
void end_pass(Camera &camera)
Definition Renderer.cpp:109
ShaderBuffer m_uniform_storage
Shader uniform data.
Definition Renderer.hpp:85
VertexBatch m_quads
All quads get batched.
Definition Renderer.hpp:65
void push_cmd(RenderCmd &&cmd)
Try not to push too many non-quads, only quads are batched.
Definition Renderer.cpp:84
void bind_pipeline(RenderPipeline &pipeline)
Definition Renderer.cpp:59
RenderPass * m_pass
Definition Renderer.hpp:75
void begin_pass(RenderPass &pass)
Definition Renderer.cpp:46
void prepare()
Called only in the update loop when we need to refresh data to render.
Definition Renderer.cpp:35
RenderPipeline * m_pipeline
Definition Renderer.hpp:80
OpenGL Shader storage buffer.
A group of vertices for multiple renderables batched together.
Animated.cpp galaxy.
Definition Animated.cpp:16
Data required to draw an object.
The configuration for drawing something.
GPU configuration.