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.
 
 
 

58 lines
1.2 KiB

// Copyright 2022 Simon Boyé
#pragma once
#include <vk/forward.h>
#include <vk/Wrapper.h>
#include <vulkan/vulkan.h>
namespace vk {
class Pipeline: public Wrapper {
public:
Pipeline() noexcept;
Pipeline(Context& context, VkPipeline pipeline);
Pipeline(Context& context, VkGraphicsPipelineCreateInfo create_info);
Pipeline(const Pipeline&) = default;
Pipeline(Pipeline&& other) noexcept;
~Pipeline() noexcept;
Pipeline& operator=(const Pipeline&) = default;
Pipeline& operator=(Pipeline&& other) noexcept;
explicit inline operator bool() const noexcept {
return !is_null();
}
inline bool is_null() const noexcept {
return m_pipeline == VK_NULL_HANDLE;
}
inline operator VkPipeline() noexcept {
return m_pipeline;
}
inline VkPipeline pipeline() noexcept {
return m_pipeline;
}
inline void swap(Pipeline& other) noexcept {
using std::swap;
Wrapper::swap(other);
swap(m_pipeline, other.m_pipeline);
}
friend inline void swap(Pipeline& pipeline_0, Pipeline& pipeline_1) noexcept {
pipeline_0.swap(pipeline_1);
}
void destroy() noexcept;
private:
VkPipeline m_pipeline = VK_NULL_HANDLE;
};
}