//
// Created by sfd on 25-4-22.
//

#ifndef RENDERERAPI_H
#define RENDERERAPI_H

#include <memory>

#include "VertexArray.h"
#include "glm/vec4.hpp"


namespace Hazel
{
    class HAZEL_API RendererAPI
    {
    public:
        enum class API
        {
            NONE   = 0,
            OPENGL = 1
        };

    public:
        virtual ~RendererAPI() = default;
        virtual void Init() = 0;
        virtual void SetClearColor(const glm::vec4& color) = 0;
        virtual void SetViewPort(uint32_t x, uint32_t y, uint32_t width, uint32_t height) = 0;
        virtual void Clear() = 0;

        virtual void DrawIndexed(const  std::shared_ptr<VertexArray>& vertexArray, uint32_t indexCount = 0) = 0;

        inline static API GetAPI() {return s_API; }

        private:
        static API s_API;
    };
}

#endif //RENDERERAPI_H
