MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
VKFramebuffer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vulkan/vulkan.hpp>
4
5namespace MayaFlux::Core {
6/**
7 * @class VKFramebuffer
8 * @brief Wrapper for Vulkan framebuffer
9 *
10 * Framebuffer connects render pass attachments to actual image views.
11 * Typically one framebuffer per swapchain image for presentation.
12 */
14public:
15 VKFramebuffer() = default;
16 ~VKFramebuffer() = default;
17
18 VKFramebuffer(const VKFramebuffer&) = delete;
20
21 VKFramebuffer(VKFramebuffer&&) noexcept = default;
22 VKFramebuffer& operator=(VKFramebuffer&&) noexcept = default;
23
24 /**
25 * @brief Create framebuffer
26 * @param device Logical device
27 * @param render_pass Render pass this framebuffer is compatible with
28 * @param attachments Image views to use as attachments (must match render pass)
29 * @param width Framebuffer width
30 * @param height Framebuffer height
31 * @param layers Number of layers (1 for standard 2D rendering)
32 * @return True if creation succeeded
33 */
34 bool create(vk::Device device,
35 vk::RenderPass render_pass,
36 const std::vector<vk::ImageView>& attachments,
37 uint32_t width,
38 uint32_t height,
39 uint32_t layers = 1);
40
41 /**
42 * @brief Cleanup framebuffer
43 */
44 void cleanup(vk::Device device);
45
46 /**
47 * @brief Get the framebuffer handle
48 */
49 [[nodiscard]] vk::Framebuffer get() const { return m_framebuffer; }
50
51 /**
52 * @brief Check if framebuffer is valid
53 */
54 [[nodiscard]] bool is_valid() const { return m_framebuffer != nullptr; }
55
56 /**
57 * @brief Get framebuffer dimensions
58 */
59 [[nodiscard]] uint32_t get_width() const { return m_width; }
60 [[nodiscard]] uint32_t get_height() const { return m_height; }
61 [[nodiscard]] uint32_t get_layers() const { return m_layers; }
62
63private:
64 vk::Framebuffer m_framebuffer;
65 uint32_t m_width = 0;
66 uint32_t m_height = 0;
67 uint32_t m_layers = 1;
68};
69}
VKFramebuffer(const VKFramebuffer &)=delete
VKFramebuffer & operator=(const VKFramebuffer &)=delete
VKFramebuffer(VKFramebuffer &&) noexcept=default
uint32_t get_width() const
Get framebuffer dimensions.
vk::Framebuffer get() const
Get the framebuffer handle.
bool is_valid() const
Check if framebuffer is valid.
void cleanup(vk::Device device)
Cleanup framebuffer.
bool create(vk::Device device, vk::RenderPass render_pass, const std::vector< vk::ImageView > &attachments, uint32_t width, uint32_t height, uint32_t layers=1)
Create framebuffer.
Wrapper for Vulkan framebuffer.