Fixed the weird stutter and added fps in title bar

This commit is contained in:
2026-02-22 12:22:06 -05:00
parent b38cc5e3d5
commit 816fdc27b1
7 changed files with 37 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
#include <Core/Common/CoreTypes.h>
#include <Core/Common/NonNullPtr.h>
#include <Core/Common/String.h>
#include <Juliet.h>
namespace Juliet
@@ -16,4 +17,5 @@ namespace Juliet
extern JULIET_API void HideWindow(NonNullPtr<Window> window);
extern JULIET_API WindowID GetWindowID(NonNullPtr<Window> window);
extern JULIET_API void SetWindowTitle(NonNullPtr<Window> window, String title);
} // namespace Juliet

View File

@@ -149,6 +149,11 @@ namespace Juliet
return window->ID;
}
void SetWindowTitle(NonNullPtr<Window> window, String title)
{
g_CurrentDisplayDevice->SetWindowTitle(g_CurrentDisplayDevice, window, title);
}
// Display Device Utils. Not exposed in the API
DisplayDevice* GetDisplayDevice()
{

View File

@@ -25,6 +25,7 @@ namespace Juliet
void (*DestroyPlatformWindow)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
void (*ShowWindow)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
void (*HideWindow)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
void (*SetWindowTitle)(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window, String title);
// Events
void (*PumpEvents)(NonNullPtr<DisplayDevice> self);

View File

@@ -33,6 +33,7 @@ namespace Juliet::Win32
device->DestroyPlatformWindow = DestroyPlatformWindow;
device->ShowWindow = ShowWindow;
device->HideWindow = HideWindow;
device->SetWindowTitle = SetWindowTitle;
device->PumpEvents = PumpEvents;

View File

@@ -92,4 +92,13 @@ namespace Juliet::Win32
auto& win32State = static_cast<Window32State&>(*window->State);
::ShowWindow(win32State.Handle, SW_HIDE);
}
void SetWindowTitle(NonNullPtr<DisplayDevice> /*self*/, NonNullPtr<Window> window, String title)
{
Assert(window);
Assert(window->State);
auto& win32State = static_cast<Window32State&>(*window->State);
SetWindowTextA(win32State.Handle, CStr(title));
}
} // namespace Juliet::Win32

View File

@@ -25,4 +25,5 @@ namespace Juliet::Win32
extern void DestroyPlatformWindow(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
extern void ShowWindow(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
extern void HideWindow(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window);
extern void SetWindowTitle(NonNullPtr<DisplayDevice> self, NonNullPtr<Window> window, String title);
} // namespace Juliet::Win32

View File

@@ -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<float>(fpsFrames) / fpsTimer;
float ms = (fpsTimer / static_cast<float>(fpsFrames)) * 1000.0f;
char title[64];
snprintf(title, sizeof(title), "Juliet | %.1f FPS | %.2f ms", static_cast<double>(fps), static_cast<double>(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