glFlush - force execution of GL commands in finite time
Different GL implementations buffer commands in several different locations,
including network buffers and the graphics accelerator itself. glFlush
empties all of these buffers, causing all issued commands to be executed as
quickly as they are accepted by the actual rendering engine. Though this
execution may not be completed in any particular time period, it does complete
in finite time.
Because any GL program might be executed over a network, or on an
accelerator that buffers commands, all programs should call glFlush
whenever they count on having all of their previously issued commands
completed. For example, call glFlush before waiting for user input
that depends on the generated image.
glFlush can return at any time. It does not wait until the execution of
all previously issued GL commands is complete.
GL_INVALID_OPERATION is generated if glFlush is executed between
the execution of glBegin and the corresponding execution of
glEnd.