#pragma once #include #include namespace VkObjects { class DescriptorSetLayout; class RenderPass; class Swapchain; class Device; class Pipeline { VkPipeline pipeline_ = nullptr; VkPipelineLayout pipeline_layout_ = nullptr; const Device& device_; VkShaderModule create_shader_module(const Device& device, const std::string& code) const; public: Pipeline(const Device& device, const Swapchain& swapchain, const RenderPass& render_pass, const DescriptorSetLayout& layout_binding); ~Pipeline(); inline VkPipeline get_native() const { return pipeline_; } inline VkPipelineLayout get_layout() const { return pipeline_layout_; } }; }