65 lines
2.2 KiB
C++
65 lines
2.2 KiB
C++
#include <string>
|
|
#include <imgui/imgui_impl_glfw.h>
|
|
#include <imgui/imgui_impl_opengl3.h>
|
|
#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<s32>(ImGui::GetWindowPos().x))+ "/" + std::to_string(static_cast<s32>(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();
|
|
}
|