2023-09-26 17:09:12 -04:00
|
|
|
// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <map>
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
|
2024-04-21 17:35:48 -04:00
|
|
|
class RenderManager;
|
2023-09-26 17:09:12 -04:00
|
|
|
|
|
|
|
class ImGuiPass
|
|
|
|
{
|
|
|
|
public:
|
2024-04-21 17:35:48 -04:00
|
|
|
explicit ImGuiPass(RenderManager &renderer);
|
2023-09-26 17:09:12 -04:00
|
|
|
~ImGuiPass();
|
|
|
|
|
|
|
|
void render(VkCommandBuffer commandBuffer);
|
|
|
|
|
|
|
|
private:
|
|
|
|
void createDescriptorSetLayout();
|
|
|
|
void createPipeline();
|
|
|
|
void createFontImage();
|
|
|
|
void createBuffer(VkBuffer &buffer, VkDeviceMemory &memory, VkDeviceSize size, VkBufferUsageFlagBits bufferUsage);
|
|
|
|
|
|
|
|
VkDescriptorSetLayout setLayout_ = nullptr;
|
|
|
|
|
|
|
|
VkPipelineLayout pipelineLayout_ = nullptr;
|
|
|
|
VkPipeline pipeline_ = nullptr;
|
|
|
|
|
|
|
|
VkImage fontImage_ = nullptr;
|
|
|
|
VkDeviceMemory fontMemory_ = nullptr;
|
|
|
|
VkImageView fontImageView_ = nullptr;
|
|
|
|
VkSampler fontSampler_ = nullptr;
|
|
|
|
|
|
|
|
VkBuffer vertexBuffer = VK_NULL_HANDLE, indexBuffer = VK_NULL_HANDLE;
|
|
|
|
VkDeviceMemory vertexMemory = VK_NULL_HANDLE, indexMemory = VK_NULL_HANDLE;
|
|
|
|
size_t vertexSize = 0, indexSize = 0;
|
|
|
|
|
|
|
|
std::map<VkImageView, VkDescriptorSet> descriptorSets_ = {};
|
|
|
|
|
2024-04-21 17:35:48 -04:00
|
|
|
RenderManager &renderer_;
|
2023-09-26 17:09:12 -04:00
|
|
|
};
|