gears: show FPS count (as in glxgears from mesa/demos)
This commit is contained in:
committed by
Kristian Høgsberg
parent
2f9ed71a8f
commit
a1d0cf5d69
@@ -59,6 +59,8 @@ struct gears {
|
||||
|
||||
GLint gear_list[3];
|
||||
int fullscreen;
|
||||
int frames;
|
||||
uint32_t last_fps;
|
||||
};
|
||||
|
||||
struct gear_template {
|
||||
@@ -202,11 +204,34 @@ make_gear(const struct gear_template *t)
|
||||
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
|
||||
frame_callback(void *data, struct wl_callback *callback, uint32_t time)
|
||||
{
|
||||
struct gears *gears = data;
|
||||
|
||||
update_fps(gears, time);
|
||||
|
||||
gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0;
|
||||
|
||||
window_schedule_redraw(gears->window);
|
||||
@@ -368,6 +393,7 @@ gears_create(struct display *display)
|
||||
{
|
||||
const int width = 450, height = 500;
|
||||
struct gears *gears;
|
||||
struct timeval tv;
|
||||
int i;
|
||||
|
||||
gears = malloc(sizeof *gears);
|
||||
@@ -407,6 +433,9 @@ gears_create(struct display *display)
|
||||
gears->view.rotx = 20.0;
|
||||
gears->view.roty = 30.0;
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
gears->last_fps = tv.tv_sec * 1000 + tv.tv_usec / 1000;
|
||||
|
||||
glEnable(GL_NORMALIZE);
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
|
||||
Reference in New Issue
Block a user