Experimentation using Vulkan.
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

// 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;
};
}