{-

HOpenGL Tutorial - Andre W B Furtado - 2001
www.cin.ufpe.br/~haskell/hopengl/
awbf@cin.ufpe.br

** More On Colors: Smooth Coloring **

-}

import GLUT
import GL

myInit :: IO () 
myInit = do
	clearColor (Color4 0.0 0.0 0.0 0.0)
	matrixMode Projection
	loadIdentity
	ortho 0.0 1.0 0.0 1.0 (-1.0) 1.0
	shadeModel GL.Smooth

triangle :: IO ()
triangle = do
	beginEnd Triangles $ do
		color (Color3 1.0 0.0 0.0 :: Color3 GLfloat)
		vertex (Vertex3 0.20 0.20 (0.0 :: GLfloat))
		color (Color3 0.0 1.0 0.0 :: Color3 GLfloat)
		vertex (Vertex3 0.80 0.20 (0.0 :: GLfloat))
		color (Color3 0.0 0.0 1.0 :: Color3 GLfloat)
		vertex (Vertex3 0.50 0.80 (0.0 :: GLfloat))
		
display :: DisplayAction
display = do 
	clear [ColorBufferBit]
	triangle
	flush

main :: IO ()
main = do
	GLUT.init Nothing
	createWindow "Smooth" (return ()) [ Single, GLUT.Rgb ]
			(Just (WindowPosition 100 100))
			(Just (WindowSize     250 250))
	myInit
	displayFunc (display)
	mainLoop