34 lines
842 B
C++
34 lines
842 B
C++
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <volk.h>
|
||
|
|
#include <vector>
|
||
|
|
#include "Gpu.hpp"
|
||
|
|
|
||
|
|
struct Framebuffer {
|
||
|
|
VkFramebuffer framebuffer;
|
||
|
|
|
||
|
|
Framebuffer(VkFramebuffer fb);
|
||
|
|
|
||
|
|
Framebuffer(const Gpu* gpu, const VkRenderPass renderpass, const VkExtent2D extent,
|
||
|
|
const std::vector<VkImageView>& attachments);
|
||
|
|
};
|
||
|
|
|
||
|
|
class FramebufferBuilder {
|
||
|
|
private:
|
||
|
|
VkRenderPass m_renderpass;
|
||
|
|
VkExtent2D m_extent;
|
||
|
|
|
||
|
|
std::vector<ImageView> m_attachments;
|
||
|
|
|
||
|
|
public:
|
||
|
|
FramebufferBuilder(VkRenderPass renderpass, VkExtent2D extent);
|
||
|
|
|
||
|
|
FramebufferBuilder(VkRenderPass renderpass, VkExtent2D extent, uint32_t numAttachments);
|
||
|
|
|
||
|
|
FramebufferBuilder(VkRenderPass renderpass, VkExtent2D extent, std::vector<ImageView> attachments);
|
||
|
|
|
||
|
|
FramebufferBuilder& set_attachment(uint32_t index, VkImageView view);
|
||
|
|
|
||
|
|
Framebuffer build(const Gpu* gpu);
|
||
|
|
};
|