moved delta time computation to the HAL

This commit is contained in:
2026-08-09 11:32:06 -04:00
parent d52c77a017
commit ae790f5a9e
5 changed files with 50 additions and 22 deletions
+3
View File
@@ -34,6 +34,9 @@ namespace Juliet
namespace Time
{
uint64 Timestamp();
void ComputeDeltaTime();
float GetDeltaTime();
uint64 GetFrameNumber();
} // namespace Time
namespace Debug
+22
View File
@@ -23,10 +23,32 @@ namespace Juliet
namespace Time
{
namespace
{
float DeltaTime = 0.0f;
uint64 Frame = 0;
} // namespace
uint64 Timestamp()
{
return Internal::OS_Timestamp();
}
void ComputeDeltaTime()
{
DeltaTime = Internal::OS_ComputeDeltaTime();
++Frame;
}
float GetDeltaTime()
{
return DeltaTime;
}
uint64 GetFrameNumber()
{
return Frame;
}
} // namespace Time
namespace Debug
+2 -1
View File
@@ -17,7 +17,8 @@ namespace Juliet
namespace Time::Internal
{
uint64 OS_Timestamp();
}
float OS_ComputeDeltaTime();
} // namespace Time::Internal
namespace Internal
{
+20
View File
@@ -54,6 +54,26 @@ namespace Juliet
return (static_cast<uint64>(ft.dwHighDateTime) << 32) + ft.dwLowDateTime;
}
float OS_ComputeDeltaTime()
{
static LARGE_INTEGER frequency = {};
static LARGE_INTEGER lastTime = {};
if (frequency.QuadPart == 0)
{
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&lastTime);
}
LARGE_INTEGER currentTime;
QueryPerformanceCounter(&currentTime);
const float deltaTime =
static_cast<float>(currentTime.QuadPart - lastTime.QuadPart) / static_cast<float>(frequency.QuadPart);
lastTime = currentTime;
return deltaTime;
}
} // namespace Time::Internal
namespace Debug::Internal
+3 -21
View File
@@ -3,6 +3,7 @@
#include <Core/Common/CoreUtils.h>
#include <Core/HAL/Event/SystemEvent.h>
#include <Core/HAL/Filesystem/Filesystem_Private.h>
#include <Core/HAL/OS/OS.h>
#include <Core/JulietInit.h>
#include <Core/Logging/LogManager.h>
#include <Core/Memory/MemoryArena.h>
@@ -19,14 +20,6 @@
#include <imgui.h>
#endif
// TODO Move to os hal for query perf
#ifdef _WIN32
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <Windows.h>
#endif
namespace Juliet
{
#if JULIET_DEBUG
@@ -219,20 +212,9 @@ namespace Juliet
ImGuiRenderer_NewFrame();
#endif
// TODO : Move to os side as it is win32 only
static LARGE_INTEGER frequency = {};
static LARGE_INTEGER lastTime = {};
if (frequency.QuadPart == 0)
{
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&lastTime);
}
Time::ComputeDeltaTime();
LARGE_INTEGER currentTime;
QueryPerformanceCounter(&currentTime);
float deltaTime =
static_cast<float>(currentTime.QuadPart - lastTime.QuadPart) / static_cast<float>(frequency.QuadPart);
lastTime = currentTime;
const float deltaTime = Time::GetDeltaTime();
Events_NewFrame(deltaTime);