source: opengl-game/graphics-pipeline_vulkan.hpp@ 603b5bc

feature/imgui-sdl points-test
Last change on this file since 603b5bc was 603b5bc, checked in by Dmitry Portnoy <dmitry.portnoy@…>, 5 years ago

In vulkangame, add code to create the frame buffers and command buffers

  • Property mode set to 100644
File size: 2.1 KB
Line 
1#ifndef _GRAPHICS_PIPELINE_VULKAN_H
2#define _GRAPHICS_PIPELINE_VULKAN_H
3
4#include "graphics-pipeline.hpp"
5
6#include <vector>
7
8#include <vulkan/vulkan.h>
9
10// TODO: Maybe change the name of this struct so I can call the list something other than descriptorInfoList
11struct DescriptorInfo {
12 VkDescriptorType type;
13 VkShaderStageFlags stageFlags;
14
15 // Only one of the below properties should be set
16 vector<VkDescriptorBufferInfo>* bufferDataList;
17 VkDescriptorImageInfo* imageData;
18};
19
20class GraphicsPipeline_Vulkan : public GraphicsPipeline {
21 public:
22 GraphicsPipeline_Vulkan(VkDevice device, VkRenderPass renderPass, Viewport viewport, int vertexSize);
23 ~GraphicsPipeline_Vulkan();
24
25 // Maybe I should rename these to addVertexAttribute (addVaryingAttribute) and addUniformAttribute
26
27 void addAttribute(VkFormat format, size_t offset);
28
29 void addDescriptorInfo(VkDescriptorType type, VkShaderStageFlags stageFlags, vector<VkDescriptorBufferInfo>* bufferData);
30 void addDescriptorInfo(VkDescriptorType type, VkShaderStageFlags stageFlags, VkDescriptorImageInfo* imageData);
31
32 void createPipeline(string vertShaderFile, string fragShaderFile);
33 void createDescriptorSetLayout();
34 void createDescriptorPool(vector<VkImage>& swapChainImages);
35 void createDescriptorSets(vector<VkImage>& swapChainImages);
36
37 void createRenderCommands(VkCommandBuffer& commandBuffer, uint32_t currentImage);
38
39 void cleanup();
40 void cleanupBuffers();
41
42 private:
43 VkShaderModule createShaderModule(const vector<char>& code);
44 vector<char> readFile(const string& filename);
45
46 VkDevice device;
47 VkRenderPass renderPass;
48
49 VkPipeline pipeline;
50 VkPipelineLayout pipelineLayout;
51
52 VkVertexInputBindingDescription bindingDescription;
53
54 vector<VkVertexInputAttributeDescription> attributeDescriptions;
55 vector<DescriptorInfo> descriptorInfoList;
56
57 VkDescriptorSetLayout descriptorSetLayout;
58 VkDescriptorPool descriptorPool;
59 vector<VkDescriptorSet> descriptorSets;
60};
61
62#endif // _GRAPHICS_PIPELINE_VULKAN_H
Note: See TracBrowser for help on using the repository browser.