jGL
Loading...
Searching...
No Matches
pipeline.h
Go to the documentation of this file.
1#ifndef PIPELINE
2#define PIPELINE
3
12
13#include <memory>
14
15namespace jGL::Vulkan
16{
18 {
19
20 /*
21
22 Single "shader" pipeline (vertex, fragment, ++) supporting msaa, dynamic
23 viewport and scissor. As well as given topology, polygonMode, blending
24 and descriptor set layouts at instance
25
26 */
27
28 public:
29
31 (
32 const Device & device,
33 const RenderPass & renderPass,
34 const vkShader & shader,
35 std::vector<std::shared_ptr<VertexBufferObject>> vertexInputs,
36 std::vector<std::shared_ptr<UniformBufferObject>> uniforms,
37 std::vector<std::pair<VkImageView, std::shared_ptr<Sampler> >> & textures,
38 const uint32_t concurrentFrames,
39 const VkPrimitiveTopology & topology,
40 const VkViewport & viewport,
41 const VkRect2D & scissor,
42 const VkPolygonMode & polygonMode,
43 const VkSampleCountFlagBits & msaaSamples,
44 const VkPipelineColorBlendStateCreateInfo & blending
45 );
46
47 const VkPipeline & getVkPipeline() const { return pipeline; }
48 const VkPipelineLayout & getVkPipelineLayout() const { return pipelineLayout; }
49
50 const std::vector<VkDescriptorSet> getVkDescriptorSets(uint32_t currentFrame);
51
53 {
54 vkDestroyDescriptorSetLayout(device.getVkDevice(), uniformDescriptorSetLayout, nullptr);
55 vkDestroyDescriptorSetLayout(device.getVkDevice(), imageDescriptorSetLayout, nullptr);
56 vkDestroyPipelineLayout(device.getVkDevice(), pipelineLayout, nullptr);
57 vkDestroyPipeline(device.getVkDevice(), pipeline, nullptr);
58 }
59
60 private:
61
62 const Device & device;
63
64 DescriptorPool uniformDescriptorPool, imageDescriptorPool;
65 VkDescriptorSetLayout uniformDescriptorSetLayout, imageDescriptorSetLayout;
68
69 VkPipelineLayout pipelineLayout;
70 VkPipeline pipeline;
71
72 void createDescriptorSetLayouts
73 (
74 std::vector<std::shared_ptr<UniformBufferObject>> uniforms,
75 std::vector<std::pair<VkImageView, std::shared_ptr<Sampler> >> & textures,
76 const uint32_t concurrentFrames
77 );
78
79 void createDescriptorSets
80 (
81 std::vector<std::shared_ptr<UniformBufferObject>> uniforms,
82 std::vector<std::pair<VkImageView, std::shared_ptr<Sampler> >> & textures,
83 const uint32_t concurrentFrames
84 );
85 };
86}
87
88#endif /* PIPELINE */
Definition descriptorPool.h:7
Definition descriptorSets.h:11
Definition device.h:10
const VkDevice & getVkDevice() const
Definition device.h:24
Definition pipeline.h:18
~Pipeline()
Definition pipeline.h:52
const VkPipeline & getVkPipeline() const
Definition pipeline.h:47
const std::vector< VkDescriptorSet > getVkDescriptorSets(uint32_t currentFrame)
Definition pipeline.cpp:267
const VkPipelineLayout & getVkPipelineLayout() const
Definition pipeline.h:48
Definition renderPass.h:11
Definition vkShader.h:19
Definition buffer.h:10