Added mfb_get_target_fps

This commit is contained in:
Carlos Aragones 2021-04-28 12:36:40 +02:00
parent cc79a85e3d
commit fb35e988ad
3 changed files with 17 additions and 4 deletions

View File

@ -136,10 +136,11 @@ double mfb_timer_get_frequency();
double mfb_timer_get_resolution(); double mfb_timer_get_resolution();
``` ```
Furthermore you can set a target fps for the application. The default is 60 frames per second. Furthermore you can set (and get) a target fps for the application. The default is 60 frames per second.
```c ```c
void mfb_set_target_fps(uint32_t fps); void mfb_set_target_fps(uint32_t fps);
unsigned mfb_get_target_fps();
``` ```
This avoid the problem of update too fast the window collapsing the redrawing in fast processors. This avoid the problem of update too fast the window collapsing the redrawing in fast processors.

View File

@ -68,6 +68,7 @@ const uint8_t * mfb_get_key_buffer(struct mfb_window *window); // O
// FPS // FPS
void mfb_set_target_fps(uint32_t fps); void mfb_set_target_fps(uint32_t fps);
unsigned mfb_get_target_fps();
bool mfb_wait_sync(struct mfb_window *window); bool mfb_wait_sync(struct mfb_window *window);
// Timer // Timer

View File

@ -22,6 +22,17 @@ mfb_set_target_fps(uint32_t fps) {
} }
} }
//-------------------------------------
unsigned
mfb_get_target_fps() {
if (g_time_for_frame == 0) {
return 0;
}
else {
return 1.0 / g_time_for_frame;
}
}
//------------------------------------- //-------------------------------------
struct mfb_timer * struct mfb_timer *
mfb_timer_create() { mfb_timer_create() {
@ -50,7 +61,7 @@ mfb_timer_destroy(struct mfb_timer *tmr) {
//------------------------------------- //-------------------------------------
void void
mfb_timer_reset(struct mfb_timer *tmr) { mfb_timer_reset(struct mfb_timer *tmr) {
if(tmr == 0x0) if(tmr == 0x0)
return; return;
tmr->start_time = mfb_timer_tick(); tmr->start_time = mfb_timer_tick();
@ -63,7 +74,7 @@ double
mfb_timer_now(struct mfb_timer *tmr) { mfb_timer_now(struct mfb_timer *tmr) {
uint64_t counter; uint64_t counter;
if(tmr == 0x0) if(tmr == 0x0)
return 0.0; return 0.0;
counter = mfb_timer_tick(); counter = mfb_timer_tick();
@ -79,7 +90,7 @@ mfb_timer_delta(struct mfb_timer *tmr) {
int64_t counter; int64_t counter;
uint64_t delta; uint64_t delta;
if(tmr == 0x0) if(tmr == 0x0)
return 0.0; return 0.0;
counter = mfb_timer_tick(); counter = mfb_timer_tick();