packages feed

GLFW-b-demo-0.0.2: src/Cube.hs

module Cube
  ( draw
  ) where

import qualified Graphics.Rendering.OpenGL as GL

draw :: GL.GLfloat -> IO ()
draw s = do
    GL.scale s s s
    GL.renderPrimitive GL.Quads $ do
        -- front
        GL.color red
        GL.normal (GL.Normal3 z  z  p1)
        GL.vertex (GL.Vertex3 n1 n1 p1)
        GL.vertex (GL.Vertex3 p1 n1 p1)
        GL.vertex (GL.Vertex3 p1 p1 p1)
        GL.vertex (GL.Vertex3 n1 p1 p1)
        -- back
        GL.color red
        GL.normal (GL.Normal3  z  z n1)
        GL.vertex (GL.Vertex3 n1 n1 n1)
        GL.vertex (GL.Vertex3 n1 p1 n1)
        GL.vertex (GL.Vertex3 p1 p1 n1)
        GL.vertex (GL.Vertex3 p1 n1 n1)
        -- top
        GL.color green
        GL.normal (GL.Normal3 z  p1  z)
        GL.vertex (GL.Vertex3 n1 p1 n1)
        GL.vertex (GL.Vertex3 n1 p1 p1)
        GL.vertex (GL.Vertex3 p1 p1 p1)
        GL.vertex (GL.Vertex3 p1 p1 n1)
        -- bottom
        GL.color green
        GL.normal (GL.Normal3  z n1  z)
        GL.vertex (GL.Vertex3 n1 n1 n1)
        GL.vertex (GL.Vertex3 p1 n1 n1)
        GL.vertex (GL.Vertex3 p1 n1 p1)
        GL.vertex (GL.Vertex3 n1 n1 p1)
        -- right
        GL.color blue
        GL.normal (GL.Normal3 p1  z  z)
        GL.vertex (GL.Vertex3 p1 n1 n1)
        GL.vertex (GL.Vertex3 p1 p1 n1)
        GL.vertex (GL.Vertex3 p1 p1 p1)
        GL.vertex (GL.Vertex3 p1 n1 p1)
        -- left
        GL.color blue
        GL.normal (GL.Normal3 n1  z  z)
        GL.vertex (GL.Vertex3 n1 n1 n1)
        GL.vertex (GL.Vertex3 n1 n1 p1)
        GL.vertex (GL.Vertex3 n1 p1 p1)
        GL.vertex (GL.Vertex3 n1 p1 n1)

red, green, blue :: GL.Color4 GL.GLfloat
red   = GL.Color4 1 0 0 1
green = GL.Color4 0 1 0 1
blue  = GL.Color4 0 0 1 1

z, n1, p1 :: GL.GLfloat
z  =  0
n1 = -1
p1 =  1