#ifndef RENDERER_API_HPP
#define RENDERER_API_HPP

#include "../renderer/vertex_array.hpp"

#include <glm/glm.hpp>
#include <memory>

namespace OpenEngine {
    class RendererAPI
    {
        public:
            enum class API {
                None,
                OpenGL
            };

            virtual void Init() = 0;

            virtual void SetViewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) = 0;

            virtual void SetClearColor(const glm::vec4& color) = 0;
            virtual void Clear() = 0;

            virtual void DrawIndexed(const std::shared_ptr<VertexArray>& vertex_array) = 0;

            static inline API GetAPI() { return api; }; 

        private:
            static inline API api = RendererAPI::API::OpenGL;
    };
}

#endif // RENDERER_API_HPP
