1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-23 20:47:45 +00:00
novus/renderer/src/imguipass.h
Joshua Goins e34daadbcd Split up Renderer's source files and a lot of refactoring
This now splits up the rendering system into sensible parts, and makes
it easier to switch between the simple renderer and the new experimental
one. Lots of refactors I needed to do for a while are now done, too.
2024-04-21 17:35:51 -04:00

42 lines
1.1 KiB
C++

// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <map>
#include <vulkan/vulkan.h>
class RenderManager;
class ImGuiPass
{
public:
explicit ImGuiPass(RenderManager &renderer);
~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_ = {};
RenderManager &renderer_;
};