﻿#pragma once
#include "render/OpenGlExtensions.h"
#include <memory>

namespace ZL {

    class FrameBuffer {
    private:
        GLuint fbo = 0;
        GLuint textureID = 0;
        int width, height;
        bool useMipmaps; // ���� ������������� ���-�����

    public:
        // ��������� �������� � ����������� �� ��������� false
        FrameBuffer(int w, int h, bool useMipmaps = false);
        ~FrameBuffer();

        FrameBuffer(const FrameBuffer&) = delete;
        FrameBuffer& operator=(const FrameBuffer&) = delete;

        void Bind();
        void Unbind();

        // ����� ��� �������������� ��������� ���-����� ����� �������
        void GenerateMipmaps();

        GLuint getTextureID() const { return textureID; }
        int getWidth() const { return width; }
        int getHeight() const { return height; }
    };

} // namespace ZL