KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
KarmaGuiRenderer.h
Go to the documentation of this file.
1
10
11#pragma once
12
13#include "imgui_impl_glfw.h"
14
17
18namespace Karma
19{
20 class AStaticMeshActor;
21
31 {
32 KGTextureID GetTextureIDAtIndex(uint32_t index);
33 uint32_t GetTextureWidthAtIndex(uint32_t index);
34
35 uint32_t GetTextureHeightAtIndex(uint32_t index);
36 };
37
44 {
45 public:
51 static void SetUpKarmaGuiRenderer(GLFWwindow* window);
52 static void OnKarmaGuiLayerDetach();
53 static void OnKarmaGuiLayerBegin();
54 static void OnKarmaGuiLayerEnd();
55
56 static void OnAdditionOfStaticMesh(AStaticMeshActor* smActor);
57
66 static void AddImageTexture(char const* fileName, const std::string& label);
67
69
76 static void CreateDescriptorPool(VkDevice VulkanDevice);
77
83 static void GracefulVulkanShutDown();
84
90 static void CleanUpVulkanAndWindowData();
91 static void GiveLoopBeginControlToVulkan();
92 static void GiveLoopEndControlToVulkan();
93
103 static void FrameRender(KarmaGui_ImplVulkanH_Window* windowData, KGDrawData* drawData);
104
112 static void FramePresent(KarmaGui_ImplVulkanH_Window* windowData);
113
115
126 static KGTextureID Add3DSceneFor2DRendering(std::shared_ptr<Scene> scene, KGVec2 dimensions);
127
131 static const KarmaGui_ImplVulkanH_Window& GetWindowData() { return m_VulkanWindowData; }
132
133 private:
134
135 static GLFWwindow* m_GLFWwindow;
136 static void* m_BackendRenderer;
137
138 // Vulkan specific members
139 static VkDescriptorPool m_KarmaGuiDescriptorPool;
140 static KarmaGui_ImplVulkanH_Window m_VulkanWindowData;
141
142 static uint32_t m_SMCounter;
143
144 static bool m_SwapChainRebuild;
145 };
146}
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
This file contains KarmaGuiOpenGLHandler class and relevant data structures.
This file contains KarmaGuiVulkanHandler class and relevant data structures.
An actor that contains a static mesh component, allowing the mesh to be rendered in the game world.
Definition StaticMeshActor.h:25
Renderer for the KarmaGui.
Definition KarmaGuiRenderer.h:44
static const KarmaGui_ImplVulkanH_Window & GetWindowData()
Getter for m_VulkanWindowData.
Definition KarmaGuiRenderer.h:131
static void GracefulVulkanShutDown()
Calls CleanUpVulkanAndWindowData() and does the shutting of GLFW and KarmaGui (KarmaGui::DestroyConte...
Definition KarmaGuiRenderer.cpp:374
static KarmaGuiBackendRendererUserData * GetBackendRendererUserData()
Acessor function for KarmaGui's renderer backend (BackendRendererUserData).
Definition KarmaGuiRenderer.cpp:368
static void SetUpKarmaGuiRenderer(GLFWwindow *window)
Sets the renderer for KarmaGui based on programmer's choice.
Definition KarmaGuiRenderer.cpp:27
static void FrameRender(KarmaGui_ImplVulkanH_Window *windowData, KGDrawData *drawData)
Commandbuffer recording for KarmaGui primitives along with additional 2D render targets in KarmaGui_I...
Definition KarmaGuiRenderer.cpp:431
static void CleanUpVulkanAndWindowData()
Cleaning up vulkan allocated resources.
Definition KarmaGuiRenderer.cpp:390
static void KarmaGui_ImplVulkan_Init(KarmaGui_ImplVulkan_InitInfo *initInfo)
Initialize Vulkan backend renderer.
Definition KarmaGuiRenderer.cpp:253
static void FramePresent(KarmaGui_ImplVulkanH_Window *windowData)
Issues vkQueuePresentKHR to present graphics on screen.
Definition KarmaGuiRenderer.cpp:590
static KGTextureID Add3DSceneFor2DRendering(std::shared_ptr< Scene > scene, KGVec2 dimensions)
Creates the vulkan resources for 2D texture (render target) from 3D meshes or scene.
Definition KarmaGuiRenderer.cpp:626
This file contains GLFW renderer backend.
Definition KarmaGui.h:2707
Definition KarmaGui.h:153
KarmaGui_ImplOpenGL3_Data()
A constructor.
Definition KarmaGuiOpenGLHandler.h:214
Backend data containing stuff for Vulkan renderer for KarmaGui.
Definition KarmaGuiVulkanHandler.h:881
A data structure for Vulkan's initialization done in KarmaGuiRenderer::KarmaGui_ImplVulkan_Init().
Definition KarmaGuiVulkanHandler.h:57
Helper structure to hold the data needed by entire KarmaGui primitive rendering including commandpool...
Definition KarmaGuiVulkanHandler.h:326
A multiply inherited class for supporting both OpenGL and Vulkan API's.
Definition KarmaGuiRenderer.h:31