HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
PipelineImage.hpp
1// Copyright 2019 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "TTauri/GUI/Pipeline_vulkan.hpp"
7#include "TTauri/GUI/PipelineImage_PushConstants.hpp"
8#include "TTauri/GUI/PipelineImage_Vertex.hpp"
9#include "TTauri/GUI/globals.hpp"
10#include "TTauri/GUI/GUIDevice_forward.hpp"
11#include "TTauri/Foundation/vspan.hpp"
12#include <vma/vk_mem_alloc.h>
13
14namespace tt::PipelineImage {
15
20public:
21 vspan<Vertex> vertexBufferData;
22
23 PipelineImage(Window const &window);
24 ~PipelineImage() {};
25
26 PipelineImage(const PipelineImage &) = delete;
27 PipelineImage &operator=(const PipelineImage &) = delete;
28 PipelineImage(PipelineImage &&) = delete;
29 PipelineImage &operator=(PipelineImage &&) = delete;
30
31 void drawInCommandBuffer(vk::CommandBuffer commandBuffer) override;
32
33protected:
34 PushConstants pushConstants;
35 int numberOfAtlasImagesInDescriptor = 0;
36
37 vk::Buffer vertexBuffer;
38 VmaAllocation vertexBufferAllocation;
39
40 std::vector<vk::PipelineShaderStageCreateInfo> createShaderStages() const override;
41 std::vector<vk::DescriptorSetLayoutBinding> createDescriptorSetLayoutBindings() const override;
42 std::vector<vk::WriteDescriptorSet> createWriteDescriptorSet() const override;
43 virtual ssize_t getDescriptorSetVersion() const override;
44 std::vector<vk::PushConstantRange> createPushConstantRanges() const override;
45 vk::VertexInputBindingDescription createVertexInputBindingDescription() const override;
46 std::vector<vk::VertexInputAttributeDescription> createVertexInputAttributeDescriptions() const override;
47
48private:
49 void buildVertexBuffers() override;
50 void teardownVertexBuffers() override;
51};
52
53}
Definition vspan.hpp:72
Definition Pipeline_vulkan.hpp:13
Definition PipelineImage.hpp:19
Definition PipelineImage_PushConstants.hpp:11
Definition Window_vulkan_win32.hpp:15