%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} module Main() where \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} import Control.Monad( unless ) import Data.StateVar( get ) import qualified Graphics.UI.GLFW as GLFW ( WindowMode(..), DisplayBits(..), KeyButtonState(..), SpecialKey(..) , WindowParam(..) , initialize, openWindow, closeWindow, terminate, windowTitle, windowParam , swapBuffers, getKey, sleep ) import Graphics.Rendering.OpenGL( ($=) ) import qualified Graphics.Rendering.OpenGL as GL ( Size(..) ) import Paths_hdemo( version ) \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} versionString :: String versionString = show version \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} main :: IO() main = do GLFW.initialize GLFW.openWindow (GL.Size 640 480) [GLFW.DisplayAlphaBits 8] GLFW.Window GLFW.windowTitle $= "HDemo Engine " ++ versionString mainLoop GLFW.sleep 5 GLFW.closeWindow GLFW.terminate \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{code} mainLoop :: IO () mainLoop = do GLFW.swapBuffers p <- GLFW.getKey GLFW.ESC unless (p == GLFW.Press) $ do --GLFW.sleep 0.001 windowStatus <- get $ GLFW.windowParam GLFW.Opened unless (windowStatus == 0) mainLoop \end{code} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%