#ifndef RENDERER_API_HPP
#define RENDERER_API_HPP

#include "open_engine/renderer/vertex_array.hpp"

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

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

            virtual void Init() = 0;
            virtual ~RendererAPI() = default;

            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 Ref<VertexArray>& vertex_array, uint32_t count = 0) = 0;

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

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

#endif // RENDERER_API_HPP
