light/Engine/src/Platform/GraphicsAPI/OpenGL/glUserInterface.cpp

86 lines
2 KiB
C++
Raw Normal View History

2021-06-01 11:23:41 +04:30
#include "ltpch.h"
2021-05-27 10:41:32 +04:30
#include "glUserInterface.h"
#include <imgui.h>
#include <imgui_impl_glfw.h>
#include <imgui_impl_opengl3.h>
#include <GLFW/glfw3.h>
2021-05-27 10:41:32 +04:30
namespace Light {
glUserInterface::glUserInterface(GLFWwindow* windowHandle)
: m_WindowHandle(windowHandle)
2021-05-27 10:41:32 +04:30
{
// create context
2021-05-27 10:41:32 +04:30
IMGUI_CHECKVERSION();
ImGui::CreateContext();
// configure io
2021-05-27 10:41:32 +04:30
ImGuiIO& io = ImGui::GetIO();
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;
io.ConfigFlags |= ImGuiBackendFlags_PlatformHasViewports;
io.ConfigFlags |= ImGuiBackendFlags_RendererHasViewports;
2021-05-27 10:41:32 +04:30
// #todo: handle this in a better way
if (std::filesystem::exists("user_gui_layout.ini"))
io.IniFilename = "user_gui_layout.ini";
else
io.IniFilename = "default_gui_layout.ini";
// style color
2021-05-27 10:41:32 +04:30
ImGui::StyleColorsDark();
// init
2021-05-27 12:51:39 +04:30
ImGui_ImplGlfw_InitForOpenGL(windowHandle, false);
2021-05-27 10:41:32 +04:30
ImGui_ImplOpenGL3_Init();
}
glUserInterface::~glUserInterface()
{
// #todo: handle this in a better way
ImGuiIO& io = ImGui::GetIO();
if (io.IniFilename == "default_gui_layout.ini")
io.IniFilename = "user_gui_layout.ini";
2021-05-27 10:41:32 +04:30
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
}
void glUserInterface::Begin()
{
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
//** #TEMP_IMGUI_DEMO_TEMP# **//
2021-05-27 10:41:32 +04:30
ImGui::ShowDemoWindow();
}
void glUserInterface::End()
{
ImGui::Render();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
ImGui::UpdatePlatformWindows();
ImGui::RenderPlatformWindowsDefault();
glfwMakeContextCurrent(m_WindowHandle);
2021-05-27 10:41:32 +04:30
}
2021-06-01 11:23:41 +04:30
void glUserInterface::LogDebugData()
{
// #todo: improve
2021-06-01 11:23:41 +04:30
LT_ENGINE_INFO("________________________________________");
LT_ENGINE_INFO("UserInterface::");
LT_ENGINE_INFO(" API : ImGui");
LT_ENGINE_INFO(" Version: {}", ImGui::GetVersion());
LT_ENGINE_INFO(" GraphicsAPI : OpenGL");
2021-06-01 11:23:41 +04:30
LT_ENGINE_INFO("________________________________________");
}
2021-05-27 10:41:32 +04:30
}