#pragma once #include #include class RSoftwareBackend { public: struct Canvas { uint32_t rshift; uint32_t gshift; uint32_t bshift; uint32_t ashift; int32_t w; int32_t h; uint32_t* pixels; }; public: RSoftwareBackend(SDL_Window* window, Renderer& renderer); void Draw(); private: void ResizeCanvas(int32_t w, int32_t h); void SortRenderEntities(); void DrawRectangle(REntity_Rectangle& entity); void DrawAlphaBitmap(REntity_AlphaBitmap& entity); private: SDL_Window* m_window{}; Renderer& m_renderer; uint32_t m_gltexture_id{}; Canvas m_canvas; };