You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.2 KiB
53 lines
1.2 KiB
// Copyright 2022 Simon Boyé
|
|
#pragma once
|
|
|
|
#include <vk/forward.h>
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
|
|
namespace vk {
|
|
|
|
|
|
class RenderPass {
|
|
public:
|
|
RenderPass() noexcept;
|
|
RenderPass(Context& context, const VkRenderPassCreateInfo& create_info);
|
|
RenderPass(const RenderPass&) = delete;
|
|
RenderPass(RenderPass&& other) noexcept;
|
|
~RenderPass() noexcept;
|
|
|
|
RenderPass& operator=(const RenderPass&) = delete;
|
|
RenderPass& operator=(RenderPass&& other) noexcept;
|
|
|
|
explicit inline operator bool() const noexcept {
|
|
return !is_null();
|
|
}
|
|
|
|
inline bool is_null() const noexcept {
|
|
return m_render_pass == VK_NULL_HANDLE;
|
|
}
|
|
|
|
inline operator VkRenderPass() noexcept {
|
|
return m_render_pass;
|
|
}
|
|
|
|
inline VkRenderPass render_pass() noexcept {
|
|
return m_render_pass;
|
|
}
|
|
|
|
friend inline void swap(RenderPass& render_pass_0, RenderPass& render_pass_1) noexcept {
|
|
using std::swap;
|
|
swap(render_pass_0.m_context, render_pass_1.m_context);
|
|
swap(render_pass_0.m_render_pass, render_pass_1.m_render_pass);
|
|
}
|
|
|
|
void destroy() noexcept;
|
|
|
|
private:
|
|
Context* m_context = nullptr;
|
|
VkRenderPass m_render_pass = VK_NULL_HANDLE;
|
|
};
|
|
|
|
|
|
}
|
|
|