#include #include #include #define GLFW_EXPOSE_NATIVE_WIN32 #include #include #include #include #include namespace lt { void dxUserInterface::platform_implementation( GLFWwindow *windowHandle, Ref sharedContext ) { auto &io = ImGui::GetIO(); auto context = std::dynamic_pointer_cast(sharedContext); ImGui_ImplWin32_Init(glfwGetWin32Window(windowHandle)); ImGui_ImplDX11_Init(context->get_device().Get(), context->get_device_context().Get()); } dxUserInterface::~dxUserInterface() { // #todo: handle this in a better way auto &io = ImGui::GetIO(); if (io.IniFilename == "default_gui_layout.ini") io.IniFilename = "user_gui_layout.ini"; ImGui_ImplDX11_Shutdown(); ImGui_ImplWin32_Shutdown(); ImGui::DestroyContext(); } void dxUserInterface::begin() { ImGui_ImplDX11_NewFrame(); ImGui_ImplWin32_NewFrame(); ImGui::NewFrame(); } void dxUserInterface::end() { ImGui::Render(); ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); ImGui::UpdatePlatformWindows(); ImGui::RenderPlatformWindowsDefault(); } void dxUserInterface::log_debug_data() { // #todo: improve log_inf("________________________________________"); log_inf("UserInterface::"); log_inf(" API : ImGui"); log_inf(" Version: {}", ImGui::GetVersion()); log_inf(" GraphicsAPI : DirectX"); log_inf("________________________________________"); } } // namespace lt