From f2750b30a837e63acab514d3121fb2ca734d13df Mon Sep 17 00:00:00 2001 From: VegOwOtenks Date: Sun, 2 Mar 2025 09:54:54 +0100 Subject: [PATCH] SDL-FPSCounter as module --- .gitmodules | 3 +++ CMakeLists.txt | 6 +++-- SDL_FPSCounter.c | 51 --------------------------------------- SDL_FPSCounter.h | 19 --------------- main.c | 2 +- submodules/SDL_FPSCounter | 1 + 6 files changed, 9 insertions(+), 73 deletions(-) delete mode 100644 SDL_FPSCounter.c delete mode 100644 SDL_FPSCounter.h create mode 160000 submodules/SDL_FPSCounter diff --git a/.gitmodules b/.gitmodules index c605a7b..c4aa74f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "submodules/utilitiec"] path = submodules/utilitiec url = https://git.jossco.de/VegOwOtenks/utilitiec.git +[submodule "submodules/SDL_FPSCounter"] + path = submodules/SDL_FPSCounter + url = https://git.jossco.de/VegOwOtenks/SDL_FPSCounter.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 52ce37d..0b36b9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,8 +14,10 @@ add_subdirectory(submodules/SDL_ttf EXCLUDE_FROM_ALL) add_subdirectory(submodules/utilitiec EXCLUDE_FROM_ALL) +add_subdirectory(submodules/SDL_FPSCounter EXCLUDE_FROM_ALL) + # Create your game executable target as usual -add_executable(partikle WIN32 main.c SDL_FPSCounter.c) +add_executable(partikle WIN32 main.c) # Link to the actual SDL3 library. -target_link_libraries(partikle PRIVATE SDL3_ttf::SDL3_ttf SDL3::SDL3 QuadTree allocator-interface rand m) +target_link_libraries(partikle PRIVATE SDL3_ttf::SDL3_ttf SDL3::SDL3 QuadTree allocator-interface rand m SDL_FPSCounter) diff --git a/SDL_FPSCounter.c b/SDL_FPSCounter.c deleted file mode 100644 index 7ae04a2..0000000 --- a/SDL_FPSCounter.c +++ /dev/null @@ -1,51 +0,0 @@ -#include "SDL_FPSCounter.h" - -#include -#include - -int SDL_CreateFPSCounter(SDL_FPSCounter* counter, uint32_t window_length) -{ - counter->window = malloc(sizeof(uint64_t) * window_length); - if (counter->window == NULL) { - SDL_OutOfMemory(); - return -1; - } - memset(counter->window, 0, window_length * sizeof(uint64_t)); - counter->frequency = SDL_GetPerformanceFrequency(); - counter->window_index = 0; - counter->window_length = window_length; - - return EXIT_SUCCESS; -} - -void SDL_DestroyFPSCounter(SDL_FPSCounter* counter) -{ - free(counter->window); - memset(counter, 0, sizeof *counter); -} - -int SDL_FPSCounterTick(SDL_FPSCounter* counter) -{ - counter->window[counter->window_index] = SDL_GetPerformanceCounter(); - counter->window_index++; - counter->window_index = counter->window_index % counter->window_length; - - return EXIT_SUCCESS; -} - -uint64_t SDL_FPSCounterFPS(SDL_FPSCounter* counter) -{ - uint64_t last = counter->window[counter->window_index]; - uint64_t current; - uint64_t acc_difference = 0; - - for (uint32_t i = (counter->window_index + 1) % counter->window_length; i != counter->window_index; i = (i + 1) % counter->window_length) { - current = counter->window[i]; - acc_difference += current - last; - - last = current; - } - - uint64_t average_difference = acc_difference / (counter->window_length - 1); - return counter->frequency / average_difference; -} diff --git a/SDL_FPSCounter.h b/SDL_FPSCounter.h deleted file mode 100644 index ca18f95..0000000 --- a/SDL_FPSCounter.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef SDL_FPSCOUNTER_H -#define SDL_FPSCOUNTER_H - -#include - -typedef struct SDL_FPSCounter_s { - uint64_t frequency; - uint32_t window_index; - uint32_t window_length; - uint64_t* window; -} SDL_FPSCounter; - -int SDL_CreateFPSCounter(SDL_FPSCounter* counter, uint32_t window_length); -void SDL_DestroyFPSCounter(SDL_FPSCounter* counter); - -int SDL_FPSCounterTick(SDL_FPSCounter* counter); -uint64_t SDL_FPSCounterFPS(SDL_FPSCounter* counter); - -#endif diff --git a/main.c b/main.c index 9df4683..897c08b 100644 --- a/main.c +++ b/main.c @@ -21,7 +21,7 @@ #include #include -#include "SDL_FPSCounter.h" +#include "submodules/SDL_FPSCounter/src/SDL_FPSCounter.h" #include "submodules/utilitiec/src/QuadTree/QuadTree.h" #include "submodules/utilitiec/src/rand/xoshiro256.h" diff --git a/submodules/SDL_FPSCounter b/submodules/SDL_FPSCounter new file mode 160000 index 0000000..5ff4e4e --- /dev/null +++ b/submodules/SDL_FPSCounter @@ -0,0 +1 @@ +Subproject commit 5ff4e4ebb5e7905a94d35f6679c31162d053a7e4