diff --git a/.clang-format b/.clang-format index d3a3cd8..6f1b1fc 100644 --- a/.clang-format +++ b/.clang-format @@ -4,6 +4,7 @@ AlignAfterOpenBracket: AlwaysBreak AlignConsecutiveAssignments: Enabled: true AcrossEmptyLines: true + AlignCompound: true AlignFunctionPointers: true AlignConsecutiveDeclarations: Enabled: true diff --git a/Blaze/Blaze.cpp b/Blaze/Blaze.cpp index 24f30ba..5babe39 100644 --- a/Blaze/Blaze.cpp +++ b/Blaze/Blaze.cpp @@ -117,9 +117,15 @@ SDL_AppResult SDL_AppIterate( void* appstate ) misc.previousCounter = currentCounter; { - double deltaTimeMs = deltaTime * 1000.0; - double fps = 1.0 / deltaTime; - ( void )sprintf_s<256>( appState.sprintfBuffer, "%.2f fps %.2f ms", fps, deltaTimeMs ); + misc.frameTimeSum -= misc.frameTime[misc.frameTimeWriteHead]; + misc.frameTime[misc.frameTimeWriteHead] = deltaTime; + misc.frameTimeSum += deltaTime; + misc.frameTimeWriteHead = ( misc.frameTimeWriteHead + 1 ) % misc.frameTimeEntryCount; + + double avgDeltaTime = ( misc.frameTimeSum / misc.frameTimeEntryCount ); + double fps = 1.0 / avgDeltaTime; + double avgDeltaTimeMs = 1000.0 * avgDeltaTime; + ( void )sprintf_s<256>( appState.sprintfBuffer, "%.2f fps %.2f ms", fps, avgDeltaTimeMs ); SDL_SetWindowTitle( appState.window, appState.sprintfBuffer ); } diff --git a/Blaze/MiscData.cpp b/Blaze/MiscData.cpp index 3bf7473..1177e1a 100644 --- a/Blaze/MiscData.cpp +++ b/Blaze/MiscData.cpp @@ -445,6 +445,12 @@ bool MiscData::init( RenderDevice const& renderDevice ) }; } + // Frame Time + frameTimeEntryCount = 16; + memset( frameTime, 0, frameTimeEntryCount * sizeof( float ) ); + frameTimeSum = 0; + frameTimeWriteHead = 0; + return true; } diff --git a/Blaze/MiscData.h b/Blaze/MiscData.h index 04a5d50..fabd893 100644 --- a/Blaze/MiscData.h +++ b/Blaze/MiscData.h @@ -40,6 +40,11 @@ struct MiscData VkImageMemoryBarrier2 renderToPresentBarrier; VkDependencyInfo renderToPresentDependency; + double frameTime[16]; + double frameTimeSum; + uint8_t frameTimeWriteHead; + uint8_t frameTimeEntryCount; + bool init( RenderDevice const& renderDevice ); void destroy( RenderDevice const& renderDevice ); };