source: opengl-game/graphics-pipeline_vulkan.hpp@ b794178

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

In vulkangame, add the ability to create vulkan resoirces and descriptor sets for shader uniforms (images and ubos)

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[7d2b0b9]1#ifndef _GRAPHICS_PIPELINE_VULKAN_H
2#define _GRAPHICS_PIPELINE_VULKAN_H
3
4#include "graphics-pipeline.hpp"
5
6#include <vector>
7
[771b33a]8#include <vulkan/vulkan.h>
9
[b794178]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
[7d2b0b9]20class GraphicsPipeline_Vulkan : public GraphicsPipeline {
21 public:
[b794178]22 GraphicsPipeline_Vulkan(VkDevice device, VkRenderPass renderPass, Viewport viewport, int vertexSize);
[7d2b0b9]23 ~GraphicsPipeline_Vulkan();
24
[b794178]25 // Maybe I should rename these to addVertexAttribute (addVaryingAttribute) and addUniformAttribute
26
[771b33a]27 void addAttribute(VkFormat format, size_t offset);
[b794178]28
29 void addDescriptorInfo(VkDescriptorType type, VkShaderStageFlags stageFlags, vector<VkDescriptorBufferInfo>* bufferData);
30 void addDescriptorInfo(VkDescriptorType type, VkShaderStageFlags stageFlags, VkDescriptorImageInfo* imageData);
31
[7d2b0b9]32 void createPipeline(string vertShaderFile, string fragShaderFile);
[b794178]33 void createDescriptorSetLayout();
34 void createDescriptorPool(vector<VkImage>& swapChainImages);
35 void createDescriptorSets(vector<VkImage>& swapChainImages);
36
37 void cleanup();
38 void cleanupBuffers();
[7d2b0b9]39
40 private:
[b794178]41 VkShaderModule createShaderModule(const vector<char>& code);
42 vector<char> readFile(const string& filename);
43
[7d2b0b9]44 VkDevice device;
[b794178]45 VkRenderPass renderPass;
46
47 VkPipeline pipeline;
48 VkPipelineLayout pipelineLayout;
49
[771b33a]50 VkVertexInputBindingDescription bindingDescription;
[b794178]51
[771b33a]52 vector<VkVertexInputAttributeDescription> attributeDescriptions;
[b794178]53 vector<DescriptorInfo> descriptorInfoList;
[7d2b0b9]54
[b794178]55 VkDescriptorSetLayout descriptorSetLayout;
56 VkDescriptorPool descriptorPool;
57 vector<VkDescriptorSet> descriptorSets;
[7d2b0b9]58};
59
60#endif // _GRAPHICS_PIPELINE_VULKAN_H
Note: See TracBrowser for help on using the repository browser.