HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
pipeline_image.hpp
1// Copyright Take Vos 2019, 2021.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "pipeline_vulkan.hpp"
8#include "pipeline_image_push_constants.hpp"
9#include "pipeline_image_vertex.hpp"
10#include "../vector_span.hpp"
11#include <vma/vk_mem_alloc.h>
12
13namespace hi::inline v1::pipeline_image {
14
19public:
20 std::span<vertex> vertexBufferData;
21
22 pipeline_image(gfx_surface const &surface);
24
25 pipeline_image(const pipeline_image &) = delete;
26 pipeline_image &operator=(const pipeline_image &) = delete;
27 pipeline_image(pipeline_image &&) = delete;
28 pipeline_image &operator=(pipeline_image &&) = delete;
29
30 void draw_in_command_buffer(vk::CommandBuffer commandBuffer, gfx_draw_context const& context) override;
31
32protected:
33 push_constants pushConstants;
34 int numberOfAtlasImagesInDescriptor = 0;
35
36 vk::Buffer vertexBuffer;
37 VmaAllocation vertexBufferAllocation;
38
39 [[nodiscard]] std::vector<vk::PipelineShaderStageCreateInfo> createShaderStages() const override;
40 [[nodiscard]] std::vector<vk::DescriptorSetLayoutBinding> createDescriptorSetLayoutBindings() const override;
41 [[nodiscard]] std::vector<vk::WriteDescriptorSet> createWriteDescriptorSet() const override;
42 [[nodiscard]] ssize_t getDescriptorSetVersion() const override;
43 [[nodiscard]] std::vector<vk::PushConstantRange> createPushConstantRanges() const override;
44 [[nodiscard]] vk::VertexInputBindingDescription createVertexInputBindingDescription() const override;
45 [[nodiscard]] std::vector<vk::VertexInputAttributeDescription> createVertexInputAttributeDescriptions() const override;
46
47private:
48 void build_vertex_buffers() override;
49 void teardown_vertex_buffers() override;
50};
51
52} // namespace hi::inline v1::pipeline_image
DOXYGEN BUG.
Definition algorithm.hpp:13
Definition gfx_surface.hpp:16
Definition pipeline_alpha_push_constants.hpp:12
Definition pipeline_image.hpp:18
Definition pipeline_vulkan.hpp:16