#ifndef OGL4_FBO
#define OGL4_FBO

#include "ogl4.h"
#include "../fbo.h"

namespace sleek
{
    namespace driver
    {
        template<bool dsa>
        class ogl4_fbo : public fbo
        {
            public:
                ogl4_fbo(const math::vec2i &size, const std::vector<TextureFormat> &) noexcept;
                virtual ~ogl4_fbo() noexcept;

                virtual void* getHardwareTarget() const noexcept { return (void*)GL_FRAMEBUFFER; }
                virtual void* getHardwareLink() const noexcept;

                virtual void resize(const math::vec2i &size) noexcept;

                virtual void update() noexcept;
                virtual void bind() noexcept;
                virtual void bind(int) noexcept;
                virtual void unbind() noexcept;
            protected:
                GLenum status;
                GLuint framebuffer;
                GLuint depthbuffer;
            private:
        };
    }
}

#endif