Lugdunum  0.1.0
Technique.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 
7 namespace lug {
8 namespace Graphics {
9 
10 namespace Render {
11 class Queue;
12 } // Render
13 
14 namespace Vulkan {
15 
16 namespace API {
17 class DescriptorPool;
18 class Semaphore;
19 } // API
20 
21 class Renderer;
22 
23 namespace Render {
24 
25 class View;
26 
27 namespace Technique {
28 
30 public:
31  Technique(Renderer& renderer, const View& renderView);
32 
33  Technique(const Technique&) = delete;
34  Technique(Technique&&) = delete;
35 
36  Technique& operator=(const Technique&) = delete;
37  Technique& operator=(Technique&&) = delete;
38 
39  virtual ~Technique() = default;
40 
41  virtual bool render(
42  const Render::Queue& renderQueue,
43  const API::Semaphore& imageReadySemaphore,
44  const API::Semaphore& drawCompleteSemaphore,
45  uint32_t currentImageIndex
46  ) = 0;
47 
48  virtual bool init(const std::vector<API::ImageView>& imageViews) = 0;
49  virtual void destroy() = 0;
50 
51  virtual bool initDepthBuffers(const std::vector<API::ImageView>& imageViews) = 0;
52  virtual bool initFramebuffers(const std::vector<API::ImageView>& imageViews) = 0;
53 
54 protected:
56  const View& _renderView;
57 };
58 
59 } // Technique
60 } // Render
61 } // Vulkan
62 } // Graphics
63 } // lug
#define LUG_GRAPHICS_API
Definition: Export.hpp:11