#pragma once

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#include <vector>

class VulkanPipeline
{
public:
	void Initialize(VkDevice InDevice);

	void Cleanup();

	VkShaderModule CreateShaderModule(const std::vector<char>& Code);

	void CreateGraphicsPipeline(VkExtent2D SwapChainExtent, VkRenderPass RenderPass, VkDescriptorSetLayout& DescriptorSetLayout);

	VkPipeline		 GetGraphicsPipeline() { return GraphicsPipeline; }
	VkPipelineLayout GetPipelineLayout() { return PipelineLayout; }

private:
	VkDevice Device;

	VkPipelineLayout PipelineLayout;
	VkPipeline		 GraphicsPipeline;
};
