#include #include #include #include "user_interface.h" bool init_user_interface(User_Interface *user_interface, Render_Data *render_data) { IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGui_ImplGlfw_InitForOpenGL(render_data->glfw_window, true); const char* glsl_version = "#version 460 core"; ImGui_ImplOpenGL3_Init(glsl_version); return true; } void create_user_interface_frame(User_Interface *user_interface, Render_Data *render_data) { ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); ImGuiWindowFlags imgui_window_flags = 0; ImGui::SetNextWindowBgAlpha(0.8f); ImGui::Begin("Control", nullptr, imgui_window_flags); static f32 new_fps = 0.0f; if (render_data->frame_time > 0.0) { new_fps = 1.0f / render_data->frame_time; } user_interface->frames_per_second = (user_interface->averaging_alpha * user_interface->frames_per_second) + (1.0f - user_interface->averaging_alpha) * new_fps; ImGui::Text("FPS:"); ImGui::SameLine(); ImGui::Text(std::to_string(user_interface->frames_per_second).c_str()); ImGui::Separator(); ImGui::Text("UI generation time:"); ImGui::SameLine(); ImGui::Text(std::to_string(render_data->user_interface_generate_time).c_str()); ImGui::SameLine(); ImGui::Text("ms"); ImGui::Separator(); ImGui::Text("Triangles:"); ImGui::SameLine(); ImGui::Text(std::to_string(render_data->triangle_count).c_str()); string window_dims = std::to_string(render_data->width) + "x" + std::to_string(render_data->height); ImGui::Text("Window dimensions:"); ImGui::SameLine(); ImGui::Text(window_dims.c_str()); string img_window_position = std::to_string(static_cast(ImGui::GetWindowPos().x))+ "/" + std::to_string(static_cast(ImGui::GetWindowPos().y)); ImGui::Text("ImGui Window Position:"); ImGui::SameLine(); ImGui::Text(img_window_position.c_str()); ImGui::End(); } void render_user_interface(User_Interface *user_interface) { ImGui::Render(); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); } void cleanup_user_interface(User_Interface *user_interface) { ImGui_ImplOpenGL3_Shutdown(); ImGui_ImplGlfw_Shutdown(); ImGui::DestroyContext(); }