nngn
Loading...
Searching...
No Matches
render.h
Go to the documentation of this file.
1
5#ifndef NNGN_RENDER_RENDER_H
6#define NNGN_RENDER_RENDER_H
7
8#include <vector>
9
10#include "lua/table.h"
11#include "utils/flags.h"
12
13#include "renderers.h"
14
15namespace nngn {
16
17struct Graphics;
18class Textures;
19
30class Renderers {
31public:
33 enum Debug : u8 {
34 DEBUG_RENDERERS = 1u << 0,
35 DEBUG_ALL = (1u << 1) - 1,
36 };
37 // Initialization
39 void init(Textures *t);
40 // Configuration
41 auto debug(void) const { return *this->m_debug; }
42 bool perspective(void) const;
43 auto max_sprites(void) const { return this->sprites.capacity(); }
45 std::size_t n(void) const;
47 std::size_t n_sprites(void) const { return this->sprites.size(); }
48 void set_debug(Debug d);
49 void set_perspective(bool p);
50 bool set_max_sprites(std::size_t n);
57 bool set_graphics(Graphics *g);
58 // Operations
62 void remove(Renderer *p);
64 bool update(void);
65private:
66 bool update_renderers(bool sprites_updated);
67 bool update_debug(bool sprites_updated);
68 enum Flag : u8 {
69 SPRITES_UPDATED = 1u << 0,
70 DEBUG_UPDATED = 1u << 1,
71 PERSPECTIVE = 1u << 2,
72 };
75 Textures *textures = nullptr;
76 Graphics *graphics = nullptr;
77 std::vector<SpriteRenderer> sprites = {};
78 u32
81};
82
83inline bool Renderers::perspective(void) const {
84 return this->flags.is_set(Flag::PERSPECTIVE);
85}
86
87}
88
89#endif
Rendering subsystem.
Definition: render.h:30
void init(Textures *t)
Partially initializes this system.
Definition: render.cpp:67
bool update_renderers(bool sprites_updated)
Definition: render.cpp:250
u32 sprite_vbo
Definition: render.h:79
bool set_max_sprites(std::size_t n)
Definition: render.cpp:75
Debug
Enabled debugging features.
Definition: render.h:33
@ DEBUG_RENDERERS
Definition: render.h:34
@ DEBUG_ALL
Definition: render.h:35
Flags< Debug > m_debug
Definition: render.h:74
void remove(Renderer *p)
Removes a renderer.
Definition: render.cpp:218
std::size_t n(void) const
Total number of active renderers.
Definition: render.cpp:71
auto debug(void) const
Definition: render.h:41
u32 sprite_debug_ebo
Definition: render.h:80
std::vector< SpriteRenderer > sprites
Definition: render.h:77
Textures * textures
Definition: render.h:75
auto max_sprites(void) const
Definition: render.h:43
void set_debug(Debug d)
Definition: render.cpp:82
Flags< Flag > flags
Definition: render.h:73
bool update(void)
Processes changed renderers/configuration and updates graphics.
Definition: render.cpp:237
bool perspective(void) const
Definition: render.h:83
Flag
Definition: render.h:68
@ DEBUG_UPDATED
Definition: render.h:70
@ SPRITES_UPDATED
Definition: render.h:69
@ PERSPECTIVE
Definition: render.h:71
u32 sprite_ebo
Definition: render.h:79
bool update_debug(bool sprites_updated)
Definition: render.cpp:265
bool set_graphics(Graphics *g)
Associates this system with a graphics back end.
Definition: render.cpp:97
std::size_t n_sprites(void) const
Number of active sprite renderers.
Definition: render.h:47
Graphics * graphics
Definition: render.h:76
u32 sprite_debug_vbo
Definition: render.h:80
Texture manager, loads and caches image data from files/buffers.
Definition: texture.h:34
Definition: debug.h:45
std::uint8_t u8
Definition: def.h:12
std::uint32_t u32
Definition: def.h:14
set_perspective
Definition: camera.lua:41
load
Definition: entity.lua:5
Wrapper for a small unsigned integral representing flags.
Definition: flags.h:18
constexpr bool is_set(AT a) const
Definition: flags.h:45
Definition: graphics.h:99
Definition: renderers.h:15
Non-owning reference to a table on the stack.
Definition: table.h:166
Operations on table values.