#ifndef RENDERER_H #define RENDERER_H #include "pch.hpp" #include "extratools.h" #include "RenderTarget.h" namespace Archimedes { class Renderer { public: int w, h; glm::vec4 clearColor = { 0.0f, 0.0f, 0.0f, 1.0f }; Renderer() : w(0), h(0) {} virtual ~Renderer() {} virtual bool init() = 0; virtual void render() = 0; virtual Shader createShader(const std::string& vs, const std::string& fs, const Shader::LoadType& lt) = 0; virtual void useShader(Shader& shader) = 0; virtual RenderTarget createRenderTarget( VertexBuffer vb, IndexArray ia, VertexLayout layout, Shader& s ) = 0; virtual void useRenderTarget(RenderTarget& rt) = 0; virtual void draw(const RenderTarget&) = 0; virtual Renderer* getRendererImpl() = 0; }; } #endif