HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
pipeline_box_device_shared.hpp
1// Copyright Take Vos 2020.
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 "../required.hpp"
8#include "../geometry/rectangle.hpp"
9#include "../vspan.hpp"
10#include "../color/color.hpp"
11#include "../color/quad_color.hpp"
12#include "../geometry/corner_radii.hpp"
13#include <vk_mem_alloc.h>
14#include <vulkan/vulkan.hpp>
15#include <mutex>
16
17namespace hi::inline v1 {
18class gfx_device_vulkan;
19
20namespace pipeline_box {
21struct Image;
22struct vertex;
23
24struct device_shared final {
25 gfx_device_vulkan const &device;
26
27 vk::ShaderModule vertexShaderModule;
28 vk::ShaderModule fragmentShaderModule;
30
31 device_shared(gfx_device_vulkan const &device);
33
34 device_shared(device_shared const &) = delete;
35 device_shared &operator=(device_shared const &) = delete;
36 device_shared(device_shared &&) = delete;
37 device_shared &operator=(device_shared &&) = delete;
38
42 void destroy(gfx_device_vulkan *vulkanDevice);
43
44 void drawInCommandBuffer(vk::CommandBuffer &commandBuffer);
45
46 static void place_vertices(
47 vspan<vertex> &vertices,
48 aarectangle clipping_rectangle,
49 quad box,
50 quad_color fill_colors,
51 quad_color line_colors,
52 float line_width,
54
55private:
56 void buildShaders();
57 void teardownShaders(gfx_device_vulkan *vulkanDevice);
58};
59
60} // namespace pipeline_box
61} // namespace hi::inline v1
This file includes required definitions.
Definition quad_color.hpp:9
Class which represents an axis-aligned rectangle.
Definition axis_aligned_rectangle.hpp:20
Definition corner_radii.hpp:9
Definition quad.hpp:14
Definition gfx_device_vulkan.hpp:20
Definition pipeline_box_device_shared.hpp:24
void destroy(gfx_device_vulkan *vulkanDevice)
Definition vspan.hpp:134