Program Listing for File framebuffer.hpp

Return to documentation for file (inexor/vulkan-renderer/wrapper/framebuffer.hpp)

#pragma once

#include <volk.h>

#include <string>
#include <vector>

namespace inexor::vulkan_renderer::wrapper {

// Forward declarations
class Device;
class Swapchain;

class Framebuffer {
    const Device &m_device;
    VkFramebuffer m_framebuffer{VK_NULL_HANDLE};
    std::string m_name;

public:
    Framebuffer(const Device &device, VkRenderPass render_pass, const std::vector<VkImageView> &attachments,
                const Swapchain &swapchain, std::string name);

    Framebuffer(const Framebuffer &) = delete;
    Framebuffer(Framebuffer &&) noexcept;

    ~Framebuffer();

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

    [[nodiscard]] VkFramebuffer get() const {
        return m_framebuffer;
    }
};

} // namespace inexor::vulkan_renderer::wrapper