/* The current point */
float current_x = 0.0, current_y = 0.0 ;
+/* Signals when a glClear is needed */
+static GLboolean needClear = GL_TRUE;
+
static void draw_level ( int num, double m00, double m01, double m10, double m11, double n0, double n1 )
{
/* Draw a fractal transformed by "M", "N" as passed in */
static void
Display(void)
{
+ if (needClear) {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ needClear = GL_FALSE;
+ }
+
/* the curve */
glPushMatrix();
glScalef(2.5, 2.5, 2.5);
glPopMatrix();
- // glutSwapBuffers(); /* Should NOT be here... This is a Single-Buffered Program! */
+ glFlush();
glutPostRedisplay(); /* Needed so that this function will be called again */
}
xwin = -1.0 ;
ywin = 0.0 ;
glTranslatef(xwin, ywin, -5.0);
+ needClear = GL_TRUE;
}
static void
break ;
}
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ needClear = GL_TRUE;
glutPostRedisplay();
}
break ;
}
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ needClear = GL_TRUE;
glutPostRedisplay();
}
/* Read the window title */
fgets ( inputline, 256, fptr ) ;
+ /* We assume here that this line will not exceed 79 characters plus a
+ newline (window_title is 80 characters long). That'll cause a buffer
+ overflow. For a simple program like this, though, we're letting it
+ slide!
+ */
sscanf ( inputline, "%[a-zA-Z0-9!@#$%^&*()+=/\\_-\" ]", window_title ) ;
/* Read a comment line */
glClearColor(1.0, 1.0, 1.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
glutReshapeFunc(Reshape);
glutKeyboardFunc(Key);
glutSpecialFunc(Special);