diff --git a/source/core/defaults/hud.hpp b/source/core/defaults/hud.hpp index 9b3e608..4ae15e6 100644 --- a/source/core/defaults/hud.hpp +++ b/source/core/defaults/hud.hpp @@ -33,7 +33,9 @@ namespace Defaults::Hud { namespace DebugOverlay { constexpr float X = 30.0F; constexpr float Y_FPS = 24.0F; - constexpr float LINE_HEIGHT = 18.0F; // separació entre línies (scale 0.4 → ~16 px alt) + constexpr float FPS_LINE_HEIGHT = 28.0F; // separació després del FPS (scale 0.7 → ~28 px) + constexpr float LINE_HEIGHT = 18.0F; // separació entre línies (scale 0.4 → ~16 px alt) + constexpr float FPS_SCALE = 0.7F; // FPS més gran que la resta constexpr float TEXT_SCALE = 0.4F; constexpr float TEXT_SPACING = 2.0F; constexpr float BRIGHTNESS = 1.0F; diff --git a/source/core/system/debug_overlay.cpp b/source/core/system/debug_overlay.cpp index 948a5f9..b0347a7 100644 --- a/source/core/system/debug_overlay.cpp +++ b/source/core/system/debug_overlay.cpp @@ -2,20 +2,32 @@ #include "core/system/debug_overlay.hpp" +#include + +#include #include #include "core/defaults.hpp" +#include "core/rendering/gpu/gpu_frame_renderer.hpp" #include "core/types.hpp" namespace System { namespace { namespace Cfg = Defaults::Hud::DebugOverlay; + + auto toUpperAscii(std::string s) -> std::string { + for (char& c : s) { + c = static_cast(std::toupper(static_cast(c))); + } + return s; + } } // namespace DebugOverlay::DebugOverlay(Rendering::Renderer* renderer, const Config::RenderingConfig& rendering_cfg) : text_(renderer), + renderer_(renderer), rendering_cfg_(&rendering_cfg) {} void DebugOverlay::update(float delta_time) { @@ -35,23 +47,43 @@ namespace System { } const std::string FPS_TEXT = "FPS: " + std::to_string(fps_display_); + const std::string RES_TEXT = "RES: " + std::to_string(rendering_cfg_->render_width) + "X" + std::to_string(rendering_cfg_->render_height); + const char* driver_raw = SDL_GetGPUDeviceDriver(renderer_->device().get()); + const std::string DRIVER_TEXT = "DRIVER: " + toUpperAscii(driver_raw != nullptr ? driver_raw : "?"); const std::string VSYNC_TEXT = std::string("VSYNC: ") + (rendering_cfg_->vsync == 1 ? "ON" : "OFF"); const std::string AA_TEXT = std::string("AA: ") + (rendering_cfg_->antialias == 1 ? "ON" : "OFF"); + float y = Cfg::Y_FPS; text_.render(FPS_TEXT, - Vec2{.x = Cfg::X, .y = Cfg::Y_FPS}, + Vec2{.x = Cfg::X, .y = y}, + Cfg::FPS_SCALE, + Cfg::TEXT_SPACING, + Cfg::BRIGHTNESS, + Cfg::COLOR); + y += Cfg::FPS_LINE_HEIGHT; + text_.render(RES_TEXT, + Vec2{.x = Cfg::X, .y = y}, Cfg::TEXT_SCALE, Cfg::TEXT_SPACING, Cfg::BRIGHTNESS, Cfg::COLOR); + y += Cfg::LINE_HEIGHT; + text_.render(DRIVER_TEXT, + Vec2{.x = Cfg::X, .y = y}, + Cfg::TEXT_SCALE, + Cfg::TEXT_SPACING, + Cfg::BRIGHTNESS, + Cfg::COLOR); + y += Cfg::LINE_HEIGHT; text_.render(VSYNC_TEXT, - Vec2{.x = Cfg::X, .y = Cfg::Y_FPS + Cfg::LINE_HEIGHT}, + Vec2{.x = Cfg::X, .y = y}, Cfg::TEXT_SCALE, Cfg::TEXT_SPACING, Cfg::BRIGHTNESS, Cfg::COLOR); + y += Cfg::LINE_HEIGHT; text_.render(AA_TEXT, - Vec2{.x = Cfg::X, .y = Cfg::Y_FPS + (2.0F * Cfg::LINE_HEIGHT)}, + Vec2{.x = Cfg::X, .y = y}, Cfg::TEXT_SCALE, Cfg::TEXT_SPACING, Cfg::BRIGHTNESS, diff --git a/source/core/system/debug_overlay.hpp b/source/core/system/debug_overlay.hpp index 1047907..bccd1bb 100644 --- a/source/core/system/debug_overlay.hpp +++ b/source/core/system/debug_overlay.hpp @@ -31,6 +31,7 @@ namespace System { private: Graphics::VectorText text_; + Rendering::Renderer* renderer_; const Config::RenderingConfig* rendering_cfg_; bool visible_{false};