2025-07-10 13:29:03 +03:30
|
|
|
#include <input/key_codes.hpp>
|
|
|
|
#include <renderer/dx/shared_context.hpp>
|
|
|
|
#include <renderer/dx/user_interface.hpp>
|
2021-08-01 16:43:59 +04:30
|
|
|
|
2021-06-02 17:20:15 +04:30
|
|
|
#define GLFW_EXPOSE_NATIVE_WIN32
|
2022-03-07 21:57:00 +03:30
|
|
|
#include <backends/imgui_impl_dx11.h>
|
|
|
|
#include <backends/imgui_impl_win32.h>
|
2021-06-02 17:20:15 +04:30
|
|
|
#include <glfw/glfw3.h>
|
|
|
|
#include <glfw/glfw3native.h>
|
2021-07-29 17:12:13 +04:30
|
|
|
#include <imgui.h>
|
|
|
|
|
2021-06-02 17:20:15 +04:30
|
|
|
namespace Light {
|
|
|
|
|
2025-07-05 15:36:53 +03:30
|
|
|
void dxUserInterface::platform_implementation(
|
2025-07-05 13:28:41 +03:30
|
|
|
GLFWwindow *windowHandle,
|
|
|
|
Ref<SharedContext> sharedContext
|
|
|
|
)
|
2022-03-07 21:57:00 +03:30
|
|
|
{
|
2025-07-06 14:02:50 +03:30
|
|
|
auto &io = ImGui::GetIO();
|
|
|
|
auto context = std::dynamic_pointer_cast<dxSharedContext>(sharedContext);
|
2021-07-16 19:59:14 +04:30
|
|
|
|
2022-03-07 21:57:00 +03:30
|
|
|
ImGui_ImplWin32_Init(glfwGetWin32Window(windowHandle));
|
2025-07-05 15:36:53 +03:30
|
|
|
ImGui_ImplDX11_Init(context->get_device().Get(), context->get_device_context().Get());
|
2022-03-07 21:57:00 +03:30
|
|
|
}
|
2021-06-02 17:20:15 +04:30
|
|
|
|
2022-03-07 21:57:00 +03:30
|
|
|
dxUserInterface::~dxUserInterface()
|
|
|
|
{
|
|
|
|
// #todo: handle this in a better way
|
2025-07-06 14:02:50 +03:30
|
|
|
auto &io = ImGui::GetIO();
|
2021-07-23 10:11:20 +04:30
|
|
|
|
2022-03-07 21:57:00 +03:30
|
|
|
if (io.IniFilename == "default_gui_layout.ini")
|
|
|
|
io.IniFilename = "user_gui_layout.ini";
|
2021-07-23 10:11:20 +04:30
|
|
|
|
2022-03-07 21:57:00 +03:30
|
|
|
ImGui_ImplDX11_Shutdown();
|
|
|
|
ImGui_ImplWin32_Shutdown();
|
|
|
|
ImGui::DestroyContext();
|
|
|
|
}
|
2021-06-02 17:20:15 +04:30
|
|
|
|
2025-07-05 15:36:53 +03:30
|
|
|
void dxUserInterface::begin()
|
2022-03-07 21:57:00 +03:30
|
|
|
{
|
|
|
|
ImGui_ImplDX11_NewFrame();
|
|
|
|
ImGui_ImplWin32_NewFrame();
|
|
|
|
ImGui::NewFrame();
|
|
|
|
}
|
2021-06-02 17:20:15 +04:30
|
|
|
|
2025-07-05 15:36:53 +03:30
|
|
|
void dxUserInterface::end()
|
2022-03-07 21:57:00 +03:30
|
|
|
{
|
|
|
|
ImGui::Render();
|
|
|
|
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
|
2021-07-16 19:59:14 +04:30
|
|
|
|
2022-03-07 21:57:00 +03:30
|
|
|
ImGui::UpdatePlatformWindows();
|
|
|
|
ImGui::RenderPlatformWindowsDefault();
|
|
|
|
}
|
2021-06-02 17:20:15 +04:30
|
|
|
|
2025-07-05 15:36:53 +03:30
|
|
|
void dxUserInterface::log_debug_data()
|
2022-03-07 21:57:00 +03:30
|
|
|
{
|
|
|
|
// #todo: improve
|
2025-07-06 16:30:38 +03:30
|
|
|
log_inf("________________________________________");
|
|
|
|
log_inf("UserInterface::");
|
|
|
|
log_inf(" API : ImGui");
|
|
|
|
log_inf(" Version: {}", ImGui::GetVersion());
|
|
|
|
log_inf(" GraphicsAPI : DirectX");
|
|
|
|
log_inf("________________________________________");
|
2022-03-07 21:57:00 +03:30
|
|
|
}
|
2021-06-02 17:20:15 +04:30
|
|
|
|
2022-03-07 21:57:00 +03:30
|
|
|
} // namespace Light
|