Afegit comptador de frames per segon a la classe Screen

This commit is contained in:
2024-08-26 10:18:06 +02:00
parent c7cc5df920
commit 65b8988ba2
7 changed files with 154 additions and 0 deletions

View File

@@ -6,6 +6,7 @@
#ifndef NO_SHADERS
#include "jshader.h"
#endif
#include "dbgtxt.h"
// Constructor
Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input *input, options_t *options)
@@ -36,6 +37,9 @@ Screen::Screen(SDL_Window *window, SDL_Renderer *renderer, Asset *asset, Input *
shakeEffect.remaining = 0;
shakeEffect.origin = 0;
attenuateEffect = false;
fpsTicks = 0;
fpsCounter = 0;
fps = 0;
// Crea los objetos
notify = new Notify(renderer, asset->get("notify.png"), asset->get("8bithud.png"), asset->get("8bithud.txt"), asset->get("notify.wav"), options);
@@ -85,6 +89,11 @@ void Screen::blit()
// Pinta las notificaciones
notify->render();
// Pinta el contador de FPS
fpsCounter++;
dbg_print(0, 0, std::to_string(fps).c_str(), 255, 255, 255);
#ifdef NO_SHADERS
// Vuelve a dejar el renderizador en modo normal
SDL_SetRenderTarget(renderer, nullptr);
@@ -305,6 +314,7 @@ void Screen::update()
{
updateShake();
notify->update();
updateFPS();
}
// Comprueba las entradas
@@ -437,4 +447,15 @@ void Screen::showNotification(std::string text1, std::string text2, int icon)
SDL_Renderer *Screen::getRenderer()
{
return renderer;
}
// Calcula los frames por segundo
void Screen::updateFPS()
{
if (SDL_GetTicks() - fpsTicks > 1000)
{
fpsTicks = SDL_GetTicks();
fps = fpsCounter;
fpsCounter = 0;
}
}