Program Listing for File GUI.ixx

Program Listing for File GUI.ixx#

Return to documentation for file (Src/GraphicsEngineVulkan/gui/GUI.ixx)

module;

#include <memory>
#include <vulkan/vulkan.hpp>

export module kataglyphis.vulkan.gui;

import kataglyphis.vulkan.command_buffer_manager;
import kataglyphis.vulkan.device;
import kataglyphis.vulkan.gui_renderer_shared_vars;
import kataglyphis.vulkan.gui_scene_shared_vars;
import kataglyphis.vulkan.window;

export namespace Kataglyphis::Frontend {
class GUI
{
  public:
    GUI(Window *window);

    void initializeVulkanContext(VulkanDevice *device,
      const vk::Instance &instance,
      const vk::RenderPass &post_render_pass,
      const vk::CommandPool &graphics_command_pool,
      uint32_t image_count);

    GUISceneSharedVars getGuiSceneSharedVars() { return guiSceneSharedVars; };
    Kataglyphis::VulkanRendererInternals::FrontendShared::GUIRendererSharedVars &getGuiRendererSharedVars()
    {
        return guiRendererSharedVars;
    };

    void setUserSelectionForRRT(bool rrtCapabilitiesAvailable);

    void render();

    void cleanUp();

    ~GUI();

  private:
    void create_gui_context(Window *window,
      const vk::Instance &instance,
      const vk::RenderPass &post_render_pass,
      uint32_t image_count);

    VulkanDevice *device{ nullptr };
    Window *window{ nullptr };
    vk::DescriptorPool gui_descriptor_pool{};
    Kataglyphis::VulkanRendererInternals::CommandBufferManager commandBufferManager;

    GUISceneSharedVars guiSceneSharedVars;
    Kataglyphis::VulkanRendererInternals::FrontendShared::GUIRendererSharedVars guiRendererSharedVars;

    bool renderUserSelectionForRRT = true;
};

}// namespace Kataglyphis::Frontend