-------------------------------------------------------------------------------- -- | -- Module : Graphics.Rendering.OpenGL.GL.FlushFinish -- Copyright : (c) Sven Panne 2002-2019 -- License : BSD3 -- -- Maintainer : Sven Panne <svenpanne@gmail.com> -- Stability : stable -- Portability : portable -- -- This module corresponds to section 2.3.2 (Flush and Finish) of the OpenGL 4.4 -- specs. -- -------------------------------------------------------------------------------- module Graphics.Rendering.OpenGL.GL.FlushFinish ( flush, finish ) where import Graphics.GL -------------------------------------------------------------------------------- -- | Different GL implementations buffer commands in several different -- locations, including network buffers and the graphics accelerator itself. -- 'flush' 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 'flush' whenever they count -- on having all of their previously issued commands completed. For example, -- call 'flush' before waiting for user input that depends on the generated -- image. -- -- Note that 'flush' can return at any time. It does not wait until the -- execution of all previously issued GL commands is complete. flush :: IO () flush = glFlush -- | 'finish' does not return until the effects of all previously called GL -- commands are complete. Such effects include all changes to GL state, all -- changes to connection state, and all changes to the frame buffer contents. -- -- Note that 'finish' requires a round trip to the server. finish :: IO () finish = glFinish