diff options
Diffstat (limited to 'src/renderer/Renderer.hpp')
| -rw-r--r-- | src/renderer/Renderer.hpp | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/src/renderer/Renderer.hpp b/src/renderer/Renderer.hpp index a3e0f98..24d4b71 100644 --- a/src/renderer/Renderer.hpp +++ b/src/renderer/Renderer.hpp @@ -5,22 +5,37 @@ #include <SDL3/SDL.h> #include <SDL3/SDL_video.h> -#include <memory> +struct RCanvas { + uint32_t rshift; + uint32_t gshift; + uint32_t bshift; + uint32_t ashift; + int32_t w; + int32_t h; + uint32_t *pixels; +}; + class Renderer { public: - enum Api { - API_OPENGL - }; + Renderer(SDL_Window *window); - Renderer() = default; - static std::unique_ptr<Renderer> Select(Api api, SDL_Window *window); + bool Init(); + void ResizeCanvas(int32_t w, int32_t h); + void Draw(RenderGroup &render_group); -public: - virtual ~Renderer() = 0; - virtual bool Init() = 0; - virtual void Draw(RenderGroup &render_group) = 0; - virtual void Present() = 0; +private: + void DrawRectangle(RenderGroup& rgroup, REntity_Rectangle& rect); + void DrawMonoBitmap(REntity_Bitmap& bitmap, Color color); + + int32_t WorldXToScreenX(RenderGroup& rgroup, float x); + int32_t WorldYToScreenY(RenderGroup& rgroup, float y); + + +private: + SDL_Window *m_Window; + uint32_t m_GlTexId; + RCanvas m_Canvas; }; |
