44 lines
No EOL
1.2 KiB
Haskell
44 lines
No EOL
1.2 KiB
Haskell
module Render ( setup
|
|
, resize
|
|
, render
|
|
) where
|
|
|
|
|
|
import Game
|
|
|
|
import Control.Monad.State
|
|
|
|
import Graphics.Rendering.OpenGL.GL (($=), GLfloat)
|
|
import Graphics.Rendering.OpenGL.GL.BeginEnd (renderPrimitive, PrimitiveMode(..))
|
|
import Graphics.Rendering.OpenGL.GL.CoordTrans (matrixMode, MatrixMode(..), viewport, Position(..), Size(..), loadIdentity, ortho)
|
|
import Graphics.Rendering.OpenGL.GL.Framebuffer (clear, ClearBuffer(..))
|
|
import Graphics.Rendering.OpenGL.GL.VertexSpec
|
|
|
|
|
|
setup :: Int -> Int -> IO ()
|
|
setup = resize
|
|
|
|
resize :: Int -> Int -> IO ()
|
|
resize w h = do
|
|
let wn = fromIntegral w
|
|
hn = fromIntegral h
|
|
aspect = wn/hn
|
|
|
|
matrixMode $= Projection
|
|
loadIdentity
|
|
ortho (-aspect) (aspect) (-1) 1 (-1) 1
|
|
|
|
matrixMode $= Modelview 0
|
|
|
|
viewport $= ((Position 0 0), (Size (fromIntegral w) (fromIntegral h)))
|
|
|
|
|
|
render :: Game ()
|
|
render = liftIO $ do
|
|
clear [ColorBuffer]
|
|
|
|
renderPrimitive Triangles $ do
|
|
vertex $ Vertex2 (-0.5 :: GLfloat) (0.5 :: GLfloat)
|
|
vertex $ Vertex2 (0.5 :: GLfloat) (0.5 :: GLfloat)
|
|
vertex $ Vertex2 (0.5 :: GLfloat) (-0.5 :: GLfloat)
|
|
|