1 #pragma once 2 3 #include "Stream.h" 4 #include "Device.h" 5 6 namespace Framework 7 { 8 namespace Vulkan 9 { 10 class CShaderModule 11 { 12 public: 13 CShaderModule() = default; 14 CShaderModule(CDevice&, Framework::CStream&); 15 CShaderModule(const CShaderModule&) = delete; 16 CShaderModule(CShaderModule&&); 17 virtual ~CShaderModule(); 18 19 bool IsEmpty() const; 20 void Reset(); 21 22 CShaderModule& operator =(const CShaderModule&) = delete; 23 CShaderModule& operator =(CShaderModule&&); 24 operator VkShaderModule() const; 25 26 private: 27 void Create(Framework::CStream&); 28 void MoveFrom(CShaderModule&&); 29 30 const CDevice* m_device = nullptr; 31 VkShaderModule m_handle = VK_NULL_HANDLE; 32 }; 33 } 34 } 35