6void ven::Gui::init(GLFWwindow* window,
const VkInstance instance,
const Device* device,
const VkRenderPass renderPass)
8 VkDescriptorPool pool =
nullptr;
9 ImGui_ImplVulkan_InitInfo init_info{};
10 ImGui::CreateContext();
11 m_io = &ImGui::GetIO();
12 m_io->IniFilename =
nullptr;
14 constexpr std::array<VkDescriptorPoolSize, 11> pool_sizes = {{
16 { .type=VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, .descriptorCount=
DESCRIPTOR_COUNT },
17 { .type=VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, .descriptorCount=
DESCRIPTOR_COUNT },
18 { .type=VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, .descriptorCount=
DESCRIPTOR_COUNT },
19 { .type=VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, .descriptorCount=
DESCRIPTOR_COUNT },
20 { .type=VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, .descriptorCount=
DESCRIPTOR_COUNT },
21 { .type=VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, .descriptorCount=
DESCRIPTOR_COUNT },
22 { .type=VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, .descriptorCount=
DESCRIPTOR_COUNT },
23 { .type=VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, .descriptorCount=
DESCRIPTOR_COUNT },
24 { .type=VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, .descriptorCount=
DESCRIPTOR_COUNT },
25 { .type=VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, .descriptorCount=
DESCRIPTOR_COUNT }
27 const VkDescriptorPoolCreateInfo pool_info = {
28 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
30 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,
32 std::size(pool_sizes),
36 if (vkCreateDescriptorPool(device->
device(), &pool_info,
nullptr, &pool) != VK_SUCCESS) {
37 throw std::runtime_error(
"Failed to create ImGui descriptor pool");
40 init_info.Instance = instance;
42 init_info.Device = device->
device();
44 init_info.DescriptorPool = pool;
45 init_info.MinImageCount = 3;
46 init_info.ImageCount = 3;
47 init_info.MSAASamples = VK_SAMPLE_COUNT_1_BIT;
49 ImGui_ImplGlfw_InitForVulkan(window,
true);
50 ImGui_ImplVulkan_Init(&init_info, renderPass);
56 ImGuiStyle& style = ImGui::GetStyle();
58 style.WindowRounding = 3;
59 style.GrabRounding = 1;
60 style.GrabMinSize = 20;
61 style.FrameRounding = 3;
63 style.Colors[ImGuiCol_Text] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
64 style.Colors[ImGuiCol_TextDisabled] = ImVec4(0.00F, 0.40F, 0.41F, 1.00F);
65 style.Colors[ImGuiCol_WindowBg] = ImVec4(0.1F, 0.1F, 0.1F, 0.70F);
66 style.Colors[ImGuiCol_Border] = ImVec4(0.00F, 1.00F, 1.00F, 0.35F);
67 style.Colors[ImGuiCol_BorderShadow] = ImVec4(0.00F, 0.00F, 0.00F, 0.00F);
68 style.Colors[ImGuiCol_FrameBg] = ImVec4(0.44F, 0.80F, 0.80F, 0.18F);
69 style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.44F, 0.80F, 0.80F, 0.27F);
70 style.Colors[ImGuiCol_FrameBgActive] = ImVec4(0.44F, 0.81F, 0.86F, 0.66F);
71 style.Colors[ImGuiCol_TitleBg] = ImVec4(0.14F, 0.18F, 0.21F, 0.73F);
72 style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.00F, 0.00F, 0.00F, 0.54F);
73 style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.00F, 1.00F, 1.00F, 0.27F);
74 style.Colors[ImGuiCol_MenuBarBg] = ImVec4(0.00F, 0.00F, 0.00F, 0.20F);
75 style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.22F, 0.29F, 0.30F, 0.71F);
76 style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.00F, 1.00F, 1.00F, 0.44F);
77 style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.00F, 1.00F, 1.00F, 0.74F);
78 style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
79 style.Colors[ImGuiCol_CheckMark] = ImVec4(0.00F, 1.00F, 1.00F, 0.68F);
80 style.Colors[ImGuiCol_SliderGrab] = ImVec4(0.00F, 1.00F, 1.00F, 0.36F);
81 style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.00F, 1.00F, 1.00F, 0.76F);
82 style.Colors[ImGuiCol_Button] = ImVec4(0.00F, 0.65F, 0.65F, 0.46F);
83 style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.01F, 1.00F, 1.00F, 0.43F);
84 style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.00F, 1.00F, 1.00F, 0.62F);
85 style.Colors[ImGuiCol_Header] = ImVec4(0.00F, 1.00F, 1.00F, 0.33F);
86 style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.00F, 1.00F, 1.00F, 0.42F);
87 style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.00F, 1.00F, 1.00F, 0.54F);
88 style.Colors[ImGuiCol_ResizeGrip] = ImVec4(0.00F, 1.00F, 1.00F, 0.54F);
89 style.Colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.00F, 1.00F, 1.00F, 0.74F);
90 style.Colors[ImGuiCol_ResizeGripActive] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
91 style.Colors[ImGuiCol_PlotLines] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
92 style.Colors[ImGuiCol_PlotLinesHovered] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
93 style.Colors[ImGuiCol_PlotHistogram] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
94 style.Colors[ImGuiCol_PlotHistogramHovered] = ImVec4(0.00F, 1.00F, 1.00F, 1.00F);
95 style.Colors[ImGuiCol_TextSelectedBg] = ImVec4(0.00F, 1.00F, 1.00F, 0.22F);