//
// Created by sfd on 25-5-25.
//

#ifndef FRAMEBUFFER_H
#define FRAMEBUFFER_H
#include <Hazel/Core/Core.h>

#include "glm/vec2.hpp"


namespace Hazel
{
    struct FrameBufferSpecification
    {
        uint32_t Width, Height;
        uint32_t Samples;

        bool SwapChainTarget = false;
    };


    class HAZEL_API FrameBuffer
    {
    public:
        virtual ~FrameBuffer() = default;
        // virtual FrameBufferSpecification& GetSpecification() = 0;
        virtual const FrameBufferSpecification& GetSpecification() const = 0;
        virtual uint32_t GetColorAttachmentID() const = 0;

        virtual void Bind() = 0;
        virtual void UnBind() = 0;

        virtual void Resize(uint32_t width, uint32_t height) = 0;

        static Ref<FrameBuffer> Create(const FrameBufferSpecification& spec);
    };
}


#endif //FRAMEBUFFER_H
