---
name: fps_overlay
kind: component
lang: cpp
domain: core
version: "1.0.0"
purity: pure
signature: "void fps_overlay()"
description: "Renderiza un overlay de FPS y frametime en la esquina superior derecha, con soporte opcional de Tracy"
tags: [imgui, fps, overlay, profiling, debug, pendiente-usar]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: [imgui]
tested: false
tests: []
test_file_path: ""
file_path: "cpp/functions/core/fps_overlay.cpp"
framework: imgui
params: []
output: "Renderiza el overlay de FPS en el frame ImGui actual"
notes: "consumido por cpp/framework/app_base.cpp"
---

# fps_overlay

Muestra FPS y frametime (ms) en una ventana semi-transparente en la esquina superior derecha.

Si se compila con `TRACY_ENABLE`, incluye un `ZoneScoped` para profiling con Tracy.

## Notas — Auto-render via app_settings (sesion 2026-04-25)

A partir de la integracion del sistema `app_settings`, las apps NO deben llamar `fps_overlay()` directamente. `fn::run_app` consulta `fn_ui::settings().show_fps` cada frame, y si esta activo invoca `fps_overlay()` automaticamente despues del `render_fn` de la app. El usuario controla el toggle desde `Settings... → Display → Show FPS overlay`, persistido en `app_settings.ini` junto al exe.

Anti-patron eliminado:

```cpp
// ❌ Hardcoded — ignora el toggle de Settings, siempre se ve
static void render() {
    fps_overlay();
    // ...
}

// ✅ No hace falta llamarla. fn::run_app la dispara segun settings.
```

Si una app no usa `fn::run_app` (raro), debe llamar manualmente `fps_overlay()` segun su criterio.
