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.
 
 
 

63 lines
1017 B

// Copyright 2022 Simon Boyé
#include <vk/RenderPass.h>
#include <vk/Context.h>
#include <cassert>
namespace vk {
RenderPass::RenderPass() noexcept {
}
RenderPass::RenderPass(Context& context, const VkRenderPassCreateInfo& create_info)
: Wrapper(context)
{
assert(m_context);
if(vkCreateRenderPass(
context.device(),
&create_info,
nullptr,
&m_render_pass
) != VK_SUCCESS)
throw std::runtime_error("failed to create render pass");
}
RenderPass::RenderPass(RenderPass&& other) noexcept
{
swap(other);
}
RenderPass::~RenderPass() noexcept {
if(!is_null())
destroy();
}
RenderPass& RenderPass::operator=(RenderPass&& other) noexcept {
swap(other);
if(other)
other.destroy();
return *this;
}
void RenderPass::destroy() noexcept {
assert(!is_null());
assert(m_context);
vkDestroyRenderPass(
m_context->device(),
m_render_pass,
nullptr
);
m_render_pass = nullptr;
}
}