gears: show FPS count (as in glxgears from mesa/demos)

dev
Olivier Blin 13 years ago committed by Kristian Høgsberg
parent 2f9ed71a8f
commit a1d0cf5d69
  1. 29
      clients/gears.c

@ -59,6 +59,8 @@ struct gears {
GLint gear_list[3]; GLint gear_list[3];
int fullscreen; int fullscreen;
int frames;
uint32_t last_fps;
}; };
struct gear_template { struct gear_template {
@ -202,11 +204,34 @@ make_gear(const struct gear_template *t)
glEnd(); glEnd();
} }
static void
update_fps(struct gears *gears, uint32_t time)
{
long diff_ms;
gears->frames++;
diff_ms = time - gears->last_fps;
if (diff_ms > 5000) {
float seconds = diff_ms / 1000.0;
float fps = gears->frames / seconds;
printf("%d frames in %6.3f seconds = %6.3f FPS\n", gears->frames, seconds, fps);
fflush(stdout);
gears->frames = 0;
gears->last_fps = time;
}
}
static void static void
frame_callback(void *data, struct wl_callback *callback, uint32_t time) frame_callback(void *data, struct wl_callback *callback, uint32_t time)
{ {
struct gears *gears = data; struct gears *gears = data;
update_fps(gears, time);
gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0; gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0;
window_schedule_redraw(gears->window); window_schedule_redraw(gears->window);
@ -368,6 +393,7 @@ gears_create(struct display *display)
{ {
const int width = 450, height = 500; const int width = 450, height = 500;
struct gears *gears; struct gears *gears;
struct timeval tv;
int i; int i;
gears = malloc(sizeof *gears); gears = malloc(sizeof *gears);
@ -407,6 +433,9 @@ gears_create(struct display *display)
gears->view.rotx = 20.0; gears->view.rotx = 20.0;
gears->view.roty = 30.0; gears->view.roty = 30.0;
gettimeofday(&tv, NULL);
gears->last_fps = tv.tv_sec * 1000 + tv.tv_usec / 1000;
glEnable(GL_NORMALIZE); glEnable(GL_NORMALIZE);
glMatrixMode(GL_PROJECTION); glMatrixMode(GL_PROJECTION);

Loading…
Cancel
Save