Lugdunum  0.1.0
ShaderModule.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 
6 namespace lug {
7 namespace Graphics {
8 namespace Vulkan {
9 namespace API {
10 
11 namespace Builder {
12 class ShaderModule;
13 } // Builder
14 
15 class Device;
16 
18  friend class Builder::ShaderModule;
19 
20 public:
21  ShaderModule() = default;
22 
23  ShaderModule(const ShaderModule&) = delete;
24  ShaderModule(ShaderModule&& shaderModule);
25 
26  ShaderModule& operator=(const ShaderModule&) = delete;
27  ShaderModule& operator=(ShaderModule&& shaderModule);
28 
29  ~ShaderModule();
30 
31  explicit operator VkShaderModule() const {
32  return _shaderModule;
33  }
34 
35  void destroy();
36 
37 private:
38  explicit ShaderModule(VkShaderModule shaderModule, const Device* device);
39 
40 private:
41  VkShaderModule _shaderModule{VK_NULL_HANDLE};
42  const Device* _device{nullptr};
43 };
44 
45 } // API
46 } // Vulkan
47 } // Graphics
48 } // lug
#define LUG_GRAPHICS_API
Definition: Export.hpp:11