summaryrefslogtreecommitdiff
path: root/Lambda2.hs
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-04-08 07:10:24 -0400
committerJoe Crayne <joe@jerkface.net>2019-04-08 07:10:24 -0400
commited50070ff44c18a133143c0c0d9aa386f01e430d (patch)
tree4b92d6e17b3a5a03b1ec5045a47939e97dd560ab /Lambda2.hs
parenta3e6b1b9b9b5a45fee5b71d7a3ef81c7111f8d48 (diff)
it works.
Diffstat (limited to 'Lambda2.hs')
-rw-r--r--Lambda2.hs34
1 files changed, 29 insertions, 5 deletions
diff --git a/Lambda2.hs b/Lambda2.hs
index 9e0be24..7677464 100644
--- a/Lambda2.hs
+++ b/Lambda2.hs
@@ -26,6 +26,9 @@ import Data.Aeson
26import qualified Data.ByteString as SB 26import qualified Data.ByteString as SB
27import Data.Char 27import Data.Char
28import Text.Printf 28import Text.Printf
29import System.IO
30
31import qualified Backend as RF
29 32
30data State = State 33data State = State
31 34
@@ -35,6 +38,12 @@ initState = do
35 38
36render :: State -> GLArea -> GLContext -> IO Bool 39render :: State -> GLArea -> GLContext -> IO Bool
37render st glarea gl = do 40render st glarea gl = do
41 cf <- GL.get GL.cullFace
42 oldvp <- GL.get GL.viewport
43 putStrLn $ "cullface = " ++ show cf
44 putStrLn $ "viewport = " ++ show oldvp
45 GL.cullFace GL.$= Nothing
46
38 Just pipelineDesc <- decodeStrict <$> SB.readFile "hello.json" 47 Just pipelineDesc <- decodeStrict <$> SB.readFile "hello.json"
39 48
40 -- win <- initWindow "LambdaCube 3D DSL Hello World" 640 640 49 -- win <- initWindow "LambdaCube 3D DSL Hello World" 640 640
@@ -72,6 +81,17 @@ render st glarea gl = do
72 ht <- windowGetHeight win 81 ht <- windowGetHeight win
73 print (wd,ht) 82 print (wd,ht)
74 return (wd,ht) 83 return (wd,ht)
84 vp <- GL.get GL.viewport
85 dr <- GL.get GL.depthRange
86 mm <- GL.get GL.matrixMode
87 mat <- GL.get (GL.matrix $ Just mm)
88 cs <- GL.getMatrixComponents GL.RowMajor mat
89 dc <- GL.get GL.depthClamp
90 tms <- mapM (GL.get . GL.textureGenMode) [GL.S, GL.T, GL.R, GL.Q]
91 mx <- GL.get GL.maxViewportDims
92 print (vp,(wd,ht),dr,mm,dc)
93 print (mat :: GL.GLmatrix Double, cs)
94 print (tms,mx)
75 return (wd,ht) >>= \(w,h) -> LambdaCubeGL.setScreenSize storage (fromIntegral w) (fromIntegral h) 95 return (wd,ht) >>= \(w,h) -> LambdaCubeGL.setScreenSize storage (fromIntegral w) (fromIntegral h)
76 LambdaCubeGL.updateUniforms storage $ do 96 LambdaCubeGL.updateUniforms storage $ do
77 "diffuseTexture" @= return textureData 97 "diffuseTexture" @= return textureData
@@ -79,13 +99,16 @@ render st glarea gl = do
79 Just t <- return $ Just (1.0::Double) -- GLFW.getTime 99 Just t <- return $ Just (1.0::Double) -- GLFW.getTime
80 return (realToFrac t :: Float) 100 return (realToFrac t :: Float)
81 -- render 101 -- render
82 GL.clearColor GL.$= GL.Color4 0 255 0 1 102 -- GL.clearColor GL.$= GL.Color4 0 0 0 0
83 GL.clear [GL.ColorBuffer] 103 -- GL.clear [GL.ColorBuffer,GL.DepthBuffer]
84 putStrLn "LambdaCubeGL.renderFrame enter" 104 putStrLn "LambdaCubeGL.renderFrame enter.."
85 LambdaCubeGL.renderFrame renderer 105 -- mapM_ print $ glCommands renderer
86 putStrLn "LambdaCubeGL.renderFrame exit" 106 RF.renderFrame renderer
107 putStrLn "LambdaCubeGL.renderFrame ..exit"
108 -- GL.clear [GL.ColorBuffer,GL.DepthBuffer]
87 -- GLFW.swapBuffers win 109 -- GLFW.swapBuffers win
88 -- GLFW.pollEvents 110 -- GLFW.pollEvents
111 -- GL.flush
89 112
90 let keyIsPressed k = return True -- fmap (==KeyState'Pressed) $ GLFW.getKey win k 113 let keyIsPressed k = return True -- fmap (==KeyState'Pressed) $ GLFW.getKey win k
91 escape <- keyIsPressed () -- Key'Escape 114 escape <- keyIsPressed () -- Key'Escape
@@ -132,6 +155,7 @@ unrealize :: State -> GLArea -> IO ()
132unrealize st glarea = do 155unrealize st glarea = do
133 return () 156 return ()
134 157
158prettyDebug :: GL.DebugMessage -> String
135prettyDebug (GL.DebugMessage src typ (GL.DebugMessageID mid) severity msg) = unwords ws 159prettyDebug (GL.DebugMessage src typ (GL.DebugMessageID mid) severity msg) = unwords ws
136 where 160 where
137 ws = [wsrc,wtyp,wmid,wseverity,msg] 161 ws = [wsrc,wtyp,wmid,wseverity,msg]