free display lists and destroy window upon exit

This commit is contained in:
Brian Paul
2005-08-09 15:13:32 +00:00
parent ecde87054c
commit a1a6fa2fa1

View File

@@ -26,6 +26,7 @@
static GLint T0 = 0; static GLint T0 = 0;
static GLint Frames = 0; static GLint Frames = 0;
static GLint autoexit = 0; static GLint autoexit = 0;
static GLint win = 0;
/** /**
@@ -163,6 +164,15 @@ static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
static GLint gear1, gear2, gear3; static GLint gear1, gear2, gear3;
static GLfloat angle = 0.0; static GLfloat angle = 0.0;
static void
cleanup(void)
{
glDeleteLists(gear1, 1);
glDeleteLists(gear2, 1);
glDeleteLists(gear3, 1);
glutDestroyWindow(win);
}
static void static void
draw(void) draw(void)
{ {
@@ -198,16 +208,18 @@ draw(void)
Frames++; Frames++;
{ {
GLint t = glutGet(GLUT_ELAPSED_TIME); GLint t = glutGet(GLUT_ELAPSED_TIME);
if (t - T0 >= 5000) { if (t - T0 >= 5000) {
GLfloat seconds = (t - T0) / 1000.0; GLfloat seconds = (t - T0) / 1000.0;
GLfloat fps = Frames / seconds; GLfloat fps = Frames / seconds;
printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps); printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
T0 = t; T0 = t;
Frames = 0; Frames = 0;
if ((t >= 999.0 * autoexit) && (autoexit)) if ((t >= 999.0 * autoexit) && (autoexit)) {
exit(0); cleanup();
} exit(0);
}
}
} }
} }
@@ -239,6 +251,7 @@ key(unsigned char k, int x, int y)
view_rotz -= 5.0; view_rotz -= 5.0;
break; break;
case 27: /* Escape */ case 27: /* Escape */
cleanup();
exit(0); exit(0);
break; break;
default: default:
@@ -352,7 +365,7 @@ int main(int argc, char *argv[])
glutInitWindowPosition(0, 0); glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300); glutInitWindowSize(300, 300);
glutCreateWindow("Gears"); win = glutCreateWindow("Gears");
init(argc, argv); init(argc, argv);
glutDisplayFunc(draw); glutDisplayFunc(draw);