From f28e9c3e03a9f94764b3811f7c4aa01991943fc7 Mon Sep 17 00:00:00 2001 From: fschildt Date: Wed, 17 Sep 2025 15:30:21 +0200 Subject: switch to software renderer --- src/renderer/Renderer.hpp | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'src/renderer/Renderer.hpp') 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 #include -#include +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 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; }; -- cgit v1.2.3