# class glw::FrameBuffer

## Overview

Class used to store buffers for internal rendering. More…

    #include <FrameBuffer.h>

    class FrameBuffer {
    public:
        // enums

        enum DepthBufferType;

        // structs

        struct Settings;

        // construction

        FrameBuffer(const FrameBuffer::Settings& settings);
        ~FrameBuffer();

        // methods

        static PFrameBuffer Create(const FrameBuffer::Settings& settings);
        static bool TestMaxColorAttachments(int32_t color_att_count);
        static bool TestOpenGLVersion();
        bool IsGood() const;
        const FrameBuffer::Settings& GetSettings() const;
        void Bind() const;
        void Unbind() const;
        size_t GetTextureCount() const;
        PTexture GetTexture(size_t texture_id = 0) const;
        PTexture2D GetTexture2D(size_t texture_id = 0) const;
        PTexture GetDepthTexture() const;
        PTexture2D GetDepthTexture2D() const;
        void BindTextures() const;
        glm::uvec2 GetResolution() const;
        uint32_t GetWidth() const;
        uint32_t GetHeight() const;
        gl::GLuint GetId() const;
        bool CopyTo(const PFrameBuffer& dest) const;
        PFrameBuffer Clone() const;
    };

## Detailed Documentation

Class used to store buffers for internal rendering.

### Construction

    FrameBuffer(const FrameBuffer::Settings& settings)

Creates object. Needs to be initialized before use.

    ~FrameBuffer()

Destroys object and allocated resources.

### Methods

    static PFrameBuffer Create(const FrameBuffer::Settings& settings)

Creates initialized FrameBuffer object. Returns nullptr when OpenGL version is not sufficient.

Parameters:

settings | Settings used for FrameBuffer initialization.

    static bool TestMaxColorAttachments(int32_t color_att_count)

Test whether number of color attachments satisfies the system limit.

    static bool TestOpenGLVersion()

Test whether system OpenGL version is sufficient for FrameBuffer usage.

    void Bind() const

Binds this FrameBuffer object.

    void Unbind() const

Binds default FrameBuffer.

    size_t GetTextureCount() const

Returns number of color attachments.

    PTexture GetTexture(size_t texture_id = 0) const

Returns color attachment texture object.

    PTexture2D GetTexture2D(size_t texture_id = 0) const

Returns 2D color attachment texture object. If initialized to use multiple samples, returns nullptr.

    PTexture GetDepthTexture() const

Return depth attachment texture object.

    PTexture2D GetDepthTexture2D() const

Return 2D depth attachment texture object.

    void BindTextures() const

Binds all attached textures to different texture units in order.

    glm::uvec2 GetResolution() const

Returns resolution frame buffer. Samples are not included.

    uint32_t GetWidth() const

Returns horizontal resolution of frame buffer. Samples are not included.

    uint32_t GetHeight() const

Returns vertical resolution of frame buffer. Samples are not included.

    gl::GLuint GetId() const

Returns OpenGL name of frame buffer.

    bool CopyTo(const PFrameBuffer& dest) const

Copies data from this FrameBuffer to the passed. Returns true if copy was successful.

    PFrameBuffer Clone() const

Copies data from this FrameBuffer to the passed. Returns true if copy was successful.