void Sim::run() { running = true; float t0 = 0, t1 = 0, dt = 0; float ft = 0, f = 0, fps = 0; clock_t start_time = raw_time(); while (running) { t1 = (float) (raw_time() - start_time) * 1e-9; dt = t1 - t0; t0 = t1; if (f > 60) { fps = f / (t1 - ft); printf("%.1lf fps\n", fps); ft = t0; f = 0; } f++; keyboard_clear(); glutMainLoopEvent(); look(); if (callback) callback(dt, cb_data); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); list<Geometry*>::iterator g, end = geoms.end(); for(g = geoms.begin(); g != end; g++) { (*g)->draw(dt); } glutSwapBuffers(); } }
static void test_keyboard_clear() { unsigned char expected_keyports[8] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; keyboard_init(); keyboard_keypress(AceKey_3); keyboard_keypress(AceKey_7); keyboard_keypress(AceKey_u); keyboard_keypress(AceKey_e); keyboard_keypress(AceKey_f); keyboard_keypress(AceKey_l); keyboard_keypress(AceKey_n); keyboard_keypress(AceKey_z); keyboard_clear(); check_keyports(expected_keyports); }