#pragma once

/*
	VulkanFramework
	by John Ryland
	Copyright (c) 2023
*/

////////////////////////////////////////////////////////////////////////////////////
//	Vulkan Shader

#include "VulkanDevice.h"
#include <functional>

namespace Vulkan {

class Shader
{
public:
    Shader(Device* device, const char* fileName);
    Shader(Device* device, uint32_t* code, size_t size);
    virtual ~Shader();

    Device*               m_owner;
    VkShaderModule        m_module;

protected:
    virtual void Create(uint32_t* code, size_t size);
    virtual void Destroy();
};

} // Vulkan namespace
