I\'m having trouble distinguishing the practical difference between calling glFlush()
and glFinish()
.
The docs say that glFlush()
As the other answers have hinted, there really is no good answer as per the spec. The general intent of glFlush()
is that after calling it, the host CPU will have no OpenGL-related work to do -- the commands will have been pushed to the graphics hardware. The general intent of glFinish()
is that after it returns, no remaining work is left, and the results should be available too all appropriate non-OpenGL APIs (e.g. reads from the framebuffer, screenshots, etc...). Whether that is really what happens is driver-dependent. The specification allows a ton of latitude as to what is legal.