gloss-rendering-1.9.1.1: Graphics/Gloss/Render.hs
module Graphics.Gloss.Render
( render
, renderAction
, renderPicture
, RS.stateInit)
where
import qualified Graphics.Rendering.OpenGL as GL
import Graphics.Gloss.Internals.Render.Common
import Graphics.Gloss.Internals.Render.Picture
import Graphics.Gloss.Internals.Color
import Graphics.Gloss.Data.Color
import Graphics.Gloss.Data.Picture
import Graphics.Gloss.Data.ViewPort
import qualified Graphics.Gloss.Internals.Render.State as RS
import System.Mem (performGC)
-- | Clear the current OpenGL context and draw the given picture into it. The
-- mutable state holds references to the textures currently loaded into the
-- context, and may have new ones added to it when drawing the picture.
render :: RS.State -- ^ Current rendering state.
-> (Int, Int) -- ^ Window width and height.
-> Color -- ^ Color to clear the window with.
-> Picture -- ^ Picture to draw.
-> IO ()
render renderS windowSize clearColor picture
= do
let viewPort = viewPortInit
-- initialization (done every time in this case)
-- we don't need the depth buffer for 2d.
GL.depthFunc GL.$= Just GL.Always
-- always clear the buffer to white
GL.clearColor GL.$= glColor4OfColor clearColor
-- on every loop
GL.clear [GL.ColorBuffer, GL.DepthBuffer]
GL.color $ GL.Color4 0 0 0 (1 :: GL.GLfloat)
renderAction
windowSize
(renderPicture renderS viewPort picture)
performGC