#include "perf_hud.hpp" #include "belge_ciz.hpp" // perfGosterge(), PerfGosterge #include "imgui.h" namespace fiko { void perfHudCiz() { if (!perfGosterge().hudAcik) return; const PerfGosterge& pg = perfGosterge(); const ImGuiIO& pio = ImGui::GetIO(); const ImGuiViewport* mvp = ImGui::GetMainViewport(); ImGui::SetNextWindowPos({mvp->WorkPos.x + mvp->WorkSize.x - 12.0f, mvp->WorkPos.y + 48.0f}, ImGuiCond_Always, {1.0f, 0.0f}); // sağ-üst köşe ImGui::SetNextWindowBgAlpha(0.70f); if (ImGui::Begin("##perfHud", nullptr, ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav | ImGuiWindowFlags_NoMove)) { ImGui::Text("%.0f FPS %.2f ms", pio.Framerate, pio.Framerate > 0.0f ? 1000.0f / pio.Framerate : 0.0f); ImGui::Separator(); ImGui::Text("Draw-call : %u%s", pg.modelDrawCagri, pg.megaIndeks > 0 ? " (toplu)" : ""); ImGui::Text("Model cook: %.1f ms", pg.modelCookMs); ImGui::Text("Kenar cook: %.1f ms", pg.kenarCookMs); if (pg.malzemeTazeleSayac) { // malzeme kullanılıyorsa: kurulum sayacı SABİT kalmalı ImGui::Text("Malzeme : %.2f ms ×%u (%u yüz)", pg.malzemeTazeleMs, pg.malzemeTazeleSayac, pg.malzemeYuzTablo); } if (pg.simAktif) { // CAM sim açıkken gerçek ms (tahmin değil) ImGui::Separator(); ImGui::Text("Sim nokta : %u", pg.simNoktaSayi); ImGui::Text("Sim kur : %.1f ms", pg.simKurMs); ImGui::Text("Sim/kare : %.2f ms", pg.simGuncelleMs); ImGui::Text("Kütük oy : %.2f ms", pg.simKutukMs); ImGui::Text("Kütük mesh: %.2f ms", pg.simKutukMeshMs); } } ImGui::End(); } } // namespace fiko