Lugdunum  0.1.0
ShaderModule.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <memory>
4 #include <vector>
5 
7 
8 namespace lug {
9 namespace Graphics {
10 namespace Vulkan {
11 namespace API {
12 
13 class Device;
14 
15 namespace Builder {
16 
17 class ShaderModule {
18 public:
19  ShaderModule(const API::Device& device);
20 
21  ShaderModule(const ShaderModule&) = delete;
22  ShaderModule(ShaderModule&&) = delete;
23 
24  ShaderModule& operator=(const ShaderModule&) = delete;
25  ShaderModule& operator=(ShaderModule&&) = delete;
26 
27  ~ShaderModule() = default;
28 
29  bool loadFromFile(const std::string& filename);
30  void loadFromData(const std::vector<uint32_t>& data);
31 
32  // Build methods
33  bool build(API::ShaderModule& instance, VkResult* returnResult = nullptr);
34  std::unique_ptr<API::ShaderModule> build(VkResult* returnResult = nullptr);
35 
36 private:
38 
39  size_t _codeSize{0};
40  std::vector<uint32_t> _data;
41 };
42 
43 } // Builder
44 } // API
45 } // Vulkan
46 } // Graphics
47 } // lug
bool loadFromFile(const std::string &filename)
ShaderModule & operator=(const ShaderModule &)=delete
bool build(API::ShaderModule &instance, VkResult *returnResult=nullptr)
void loadFromData(const std::vector< uint32_t > &data)