#pragma once #include #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: Renderer(SDL_Window *window); bool Init(); void ResizeCanvas(int32_t w, int32_t h); void Draw(RenderGroup &render_group); 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; };