Files
Seele/src/Engine/Graphics/Vulkan/Framebuffer.h
T
2025-05-16 13:04:43 +02:00

37 lines
1.1 KiB
C++

#pragma once
#include "Enums.h"
#include "Graphics.h"
#include "Graphics/RenderTarget.h"
namespace Seele {
namespace Vulkan {
DECLARE_REF(RenderPass)
struct FramebufferDescription {
StaticArray<VkImageView, 16> inputAttachments;
StaticArray<VkImageView, 16> colorAttachments;
StaticArray<VkImageView, 16> resolveAttachments;
VkImageView depthAttachment = VK_NULL_HANDLE;
VkImageView depthResolveAttachment = VK_NULL_HANDLE;
uint32 numInputAttachments = 0;
uint32 numColorAttachments = 0;
uint32 numResolveAttachments = 0;
};
class Framebuffer {
public:
Framebuffer(PGraphics graphics, PRenderPass renderpass, Gfx::RenderTargetLayout renderTargetLayout);
virtual ~Framebuffer();
constexpr VkFramebuffer getHandle() const { return handle; }
constexpr uint32 getHash() const { return hash; }
constexpr VkRect2D getRenderArea() const { return renderArea; }
private:
uint32 hash;
VkRect2D renderArea;
PGraphics graphics;
VkFramebuffer handle;
Gfx::RenderTargetLayout layout;
PRenderPass renderPass;
};
DEFINE_REF(Framebuffer)
} // namespace Vulkan
} // namespace Seele