module RunBound (runBound) where import Graphics.Rendering.OpenGL import Graphics.UI.GLUT import Data.IORef import DisplayState import Display import States import KeyboardMouseC import MouseMoveC import Texture import ProgInit import TextureObjects runBound :: IO () runBound = do (progname,_) <- getArgsAndInitialize initialDisplayMode $= [DoubleBuffered] createWindow "Hello World" let wWidth = 700 ::GLint wHeight = 500 ::GLint wWH = ((realToFrac wHeight):: GLfloat) / ((realToFrac wWidth) :: GLfloat) windowSize $= (Size wWidth wHeight) texOGrp <- newIORef ([[]] ::TexObjsGroup) textureSet texOGrp dState <- newIORef $ DState setInitObj kState <- newIORef $ KState False cState <- newIORef $ (CState Nothing 0) wState <- newIORef $ (WState wWidth wHeight wWH) keyboardMouseCallback $= Just (keyboardMouse kState dState) passiveMotionCallback $= Just (mouseMove cState) idleCallback $= Just (idle dState kState cState wState) displayCallback $= (display dState wState texOGrp) mainLoop