aboutsummaryrefslogtreecommitdiff
path: root/src/renderer/Renderer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer/Renderer.hpp')
-rw-r--r--src/renderer/Renderer.hpp37
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;
};