Giovanni's Diary > Subjects > Programming > Gists >

C / delta_time.c

Calculate the frame delta time and render a certain number of times per seconds in C99.

// SPDX-License-Identifier: MIT
// Author: Giovanni Santini
// Github: @San7o

#include <time.h>
#include <assert.h>
#include <stdio.h>

int main(void)
{
  double delta_time = 0;
  double fps = 30;
  struct timespec frame_start, frame_end; 
  while (1) {
    clock_gettime(CLOCK_MONOTONIC, &frame_start);

    // Input...
    // Calculate...
    if (delta_time > 1 / fps)
    {
      delta_time = 0;

      printf("Drawing!\n");
      // Draw...
    }

    clock_gettime(CLOCK_MONOTONIC, &frame_end);
    double diff = (frame_end.tv_sec - frame_start.tv_sec)
      + (frame_end.tv_nsec - frame_start.tv_nsec) / 1e9;
    delta_time += diff;
  }
  return 0;
}

Travel: Gists, Index