#pragma once #undef min #undef max #include #include #include #include #include "Materials.hpp" #include using namespace Magnum; namespace ee_magnum { class MagnumRenderer : public ee_engine::IRenderer { public: MagnumRenderer(GLFWwindow *window); ~MagnumRenderer(); void Init() override; void Shutdown() override; protected: void Clear() override; void DrawMap() override; void DrawUI() override; void ApplyCamera() override; private: Platform::GLContext context; std::vector provinceMeshes; GL::Buffer provinceSSBO; ProvinceMaterial *provinceMaterial; void ValidateSupport(); void LoadShaders(); void LoadProvinces(); void ApplyMapMVP(); }; }