From 816fdc27b107438d2a2a02f815bfbccf8939349c Mon Sep 17 00:00:00 2001 From: Patedam Date: Sun, 22 Feb 2026 12:22:06 -0500 Subject: [PATCH] Fixed the weird stutter and added fps in title bar --- Juliet/include/Core/HAL/Display/Display.h | 2 ++ Juliet/src/Core/HAL/Display/Display.cpp | 5 +++++ Juliet/src/Core/HAL/Display/DisplayDevice.h | 1 + .../HAL/Display/Win32/Win32DisplayDevice.cpp | 1 + .../Core/HAL/Display/Win32/Win32Window.cpp | 9 +++++++++ .../src/Core/HAL/Display/Win32/Win32Window.h | 1 + JulietApp/main.cpp | 20 +++++++++++++++++-- 7 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Juliet/include/Core/HAL/Display/Display.h b/Juliet/include/Core/HAL/Display/Display.h index 2f6f543..ded2705 100644 --- a/Juliet/include/Core/HAL/Display/Display.h +++ b/Juliet/include/Core/HAL/Display/Display.h @@ -2,6 +2,7 @@ #include #include +#include #include namespace Juliet @@ -16,4 +17,5 @@ namespace Juliet extern JULIET_API void HideWindow(NonNullPtr window); extern JULIET_API WindowID GetWindowID(NonNullPtr window); + extern JULIET_API void SetWindowTitle(NonNullPtr window, String title); } // namespace Juliet diff --git a/Juliet/src/Core/HAL/Display/Display.cpp b/Juliet/src/Core/HAL/Display/Display.cpp index c81287d..c09b42b 100644 --- a/Juliet/src/Core/HAL/Display/Display.cpp +++ b/Juliet/src/Core/HAL/Display/Display.cpp @@ -149,6 +149,11 @@ namespace Juliet return window->ID; } + void SetWindowTitle(NonNullPtr window, String title) + { + g_CurrentDisplayDevice->SetWindowTitle(g_CurrentDisplayDevice, window, title); + } + // Display Device Utils. Not exposed in the API DisplayDevice* GetDisplayDevice() { diff --git a/Juliet/src/Core/HAL/Display/DisplayDevice.h b/Juliet/src/Core/HAL/Display/DisplayDevice.h index 7d9cd63..4a4c6fe 100644 --- a/Juliet/src/Core/HAL/Display/DisplayDevice.h +++ b/Juliet/src/Core/HAL/Display/DisplayDevice.h @@ -25,6 +25,7 @@ namespace Juliet void (*DestroyPlatformWindow)(NonNullPtr self, NonNullPtr window); void (*ShowWindow)(NonNullPtr self, NonNullPtr window); void (*HideWindow)(NonNullPtr self, NonNullPtr window); + void (*SetWindowTitle)(NonNullPtr self, NonNullPtr window, String title); // Events void (*PumpEvents)(NonNullPtr self); diff --git a/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp b/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp index a493d4b..8f00302 100644 --- a/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp +++ b/Juliet/src/Core/HAL/Display/Win32/Win32DisplayDevice.cpp @@ -33,6 +33,7 @@ namespace Juliet::Win32 device->DestroyPlatformWindow = DestroyPlatformWindow; device->ShowWindow = ShowWindow; device->HideWindow = HideWindow; + device->SetWindowTitle = SetWindowTitle; device->PumpEvents = PumpEvents; diff --git a/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp b/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp index 1ba3b9a..d4d39f3 100644 --- a/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp +++ b/Juliet/src/Core/HAL/Display/Win32/Win32Window.cpp @@ -92,4 +92,13 @@ namespace Juliet::Win32 auto& win32State = static_cast(*window->State); ::ShowWindow(win32State.Handle, SW_HIDE); } + + void SetWindowTitle(NonNullPtr /*self*/, NonNullPtr window, String title) + { + Assert(window); + Assert(window->State); + + auto& win32State = static_cast(*window->State); + SetWindowTextA(win32State.Handle, CStr(title)); + } } // namespace Juliet::Win32 diff --git a/Juliet/src/Core/HAL/Display/Win32/Win32Window.h b/Juliet/src/Core/HAL/Display/Win32/Win32Window.h index 7d19ba6..807d334 100644 --- a/Juliet/src/Core/HAL/Display/Win32/Win32Window.h +++ b/Juliet/src/Core/HAL/Display/Win32/Win32Window.h @@ -25,4 +25,5 @@ namespace Juliet::Win32 extern void DestroyPlatformWindow(NonNullPtr self, NonNullPtr window); extern void ShowWindow(NonNullPtr self, NonNullPtr window); extern void HideWindow(NonNullPtr self, NonNullPtr window); + extern void SetWindowTitle(NonNullPtr self, NonNullPtr window, String title); } // namespace Juliet::Win32 diff --git a/JulietApp/main.cpp b/JulietApp/main.cpp index 33aa40d..6706ca6 100644 --- a/JulietApp/main.cpp +++ b/JulietApp/main.cpp @@ -209,6 +209,22 @@ void JulietApplication::Update() lastTime = currentTime; CameraTime += deltaTime; + + static float fpsTimer = 0.0f; + static int fpsFrames = 0; + fpsTimer += deltaTime; + fpsFrames++; + if (fpsTimer >= 0.5f) + { + float fps = static_cast(fpsFrames) / fpsTimer; + float ms = (fpsTimer / static_cast(fpsFrames)) * 1000.0f; + char title[64]; + snprintf(title, sizeof(title), "Juliet | %.1f FPS | %.2f ms", static_cast(fps), static_cast(ms)); + SetWindowTitle(MainWindow, WrapString(title)); + fpsTimer = 0.0f; + fpsFrames = 0; + } + bool reloadShaders = false; static bool reloadShadersDebounce = false; @@ -339,8 +355,8 @@ Camera JulietApplication::GetDebugCamera() float radius = baseRadius; //* Uncomment for active zoom - float zoomAmplitude = 10.0f; // Oscillate between 1.5m and 3.5m away - float zoomSpeed = 0.8f; + float zoomAmplitude = 15.0f; + float zoomSpeed = 0.5f; radius = baseRadius + (sinf(time * zoomSpeed) * zoomAmplitude); //*/ float zHeight = radius * 0.5f; // Keep a nice downward viewing angle