mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 16:36:15 +03:00
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "../../graphics/graphics.h"
|
|
|
|
#include <iconFontcppHeaders/IconsFontAwesome6Brands.h>
|
|
#include <iconFontcppHeaders/IconsFontAwesome6.h>
|
|
|
|
namespace engine
|
|
{
|
|
class ImguiManager
|
|
{
|
|
public:
|
|
void init();
|
|
void release();
|
|
|
|
void render();
|
|
void newFrame();
|
|
void renderFrame(uint32_t backBufferIndex);
|
|
void updateAfterSubmit();
|
|
|
|
bool isMainMinimized();
|
|
|
|
VkCommandBuffer getCommandBuffer(uint32_t index) const { return m_resources.commandBuffers.at(index); }
|
|
|
|
void drawImGuiDemo();
|
|
|
|
private:
|
|
// Delegate handle cache when swapchain rebuild.
|
|
DelegateHandle m_beforeSwapChainRebuildHandle;
|
|
DelegateHandle m_afterSwapChainRebuildHandle;
|
|
|
|
struct ImguiPassGpuResource
|
|
{
|
|
VkDescriptorPool descriptorPool;
|
|
VkRenderPass renderPass = VK_NULL_HANDLE;
|
|
|
|
std::vector<VkFramebuffer> framebuffers;
|
|
std::vector<VkCommandPool> commandPools;
|
|
std::vector<VkCommandBuffer> commandBuffers;
|
|
} m_resources;
|
|
|
|
// UI backbuffer clear value.
|
|
math::vec4 m_clearColor = { 0.45f, 0.55f, 0.60f, 1.00f };
|
|
|
|
// Optional, only create when backbuffer ui format no support alpha blend.
|
|
VkFormat m_drawUIFormat = VK_FORMAT_UNDEFINED;
|
|
std::unique_ptr<VulkanImage> m_drawUIImages;
|
|
|
|
// Imgui render pass.
|
|
void renderpassBuild();
|
|
void renderpassRelease(bool bFullRelease);
|
|
|
|
bool shouldBlitAfterRenderUI() const;
|
|
};
|
|
} |