#pragma once #include #include "../math/types.hpp" #include "../resources/resource.hpp" #include "../resources/texture.hpp" #include "../resources/shader.hpp" #include "../callback.hpp" namespace hibis { class Renderer { public: Renderer(LoggerCallback logger); // Draw virtual void clearScreen(Color col) = 0; virtual void renderCurrent() = 0; virtual void drawText(Resource* resource, std::string text, IntVec2 pos, Color color) = 0; virtual void drawTexture(Texture* resource, IntRect size) = 0; virtual void useShader(Shader* shader, Point2D points[3]) = 0; virtual void stopUsingShaders() = 0; // Pre and Post draw virtual void preDraw() = 0; virtual void postDraw() = 0; // Update virtual void update() = 0; // Util virtual void compileShader(Shader* shader) = 0; virtual void toggleWireframe() = 0; virtual void setWindowTitle(std::string title) = 0; bool mKeepOpen = true; protected: LoggerCallback mLogger; bool mIsWireframeMode = false; }; }