#pragma once #include #include #include #include class RenderPipeline { public: RenderPipeline( VkDevice device, VkFormat swapchainImageFormat); ~RenderPipeline(); RenderPipeline(const RenderPipeline&) = delete; RenderPipeline& operator=(const RenderPipeline&) = delete; VkRenderPass renderPass() const { return m_renderPass; } VkPipelineLayout pipelineLayout() const { return m_pipelineLayout; } VkDescriptorSetLayout descriptorSetLayout() const { return m_descriptorSetLayout; } VkPipeline graphicsPipeline() const { return m_graphicsPipeline; } void release(); private: std::vector readFile( const std::string& filename); VkShaderModule createShaderModule( const std::vector& code); VkDevice m_device; VkRenderPass m_renderPass = VK_NULL_HANDLE; VkShaderModule m_vertShaderModule = VK_NULL_HANDLE; VkShaderModule m_fragShaderModule = VK_NULL_HANDLE; VkDescriptorSetLayout m_descriptorSetLayout = VK_NULL_HANDLE; VkPipelineLayout m_pipelineLayout = VK_NULL_HANDLE; VkPipeline m_graphicsPipeline = VK_NULL_HANDLE; };