diff options
author | Joe Crayne <joe@jerkface.net> | 2019-04-08 07:10:24 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-04-08 07:10:24 -0400 |
commit | ed50070ff44c18a133143c0c0d9aa386f01e430d (patch) | |
tree | 4b92d6e17b3a5a03b1ec5045a47939e97dd560ab /Lambda2.hs | |
parent | a3e6b1b9b9b5a45fee5b71d7a3ef81c7111f8d48 (diff) |
it works.
Diffstat (limited to 'Lambda2.hs')
-rw-r--r-- | Lambda2.hs | 34 |
1 files changed, 29 insertions, 5 deletions
@@ -26,6 +26,9 @@ import Data.Aeson | |||
26 | import qualified Data.ByteString as SB | 26 | import qualified Data.ByteString as SB |
27 | import Data.Char | 27 | import Data.Char |
28 | import Text.Printf | 28 | import Text.Printf |
29 | import System.IO | ||
30 | |||
31 | import qualified Backend as RF | ||
29 | 32 | ||
30 | data State = State | 33 | data State = State |
31 | 34 | ||
@@ -35,6 +38,12 @@ initState = do | |||
35 | 38 | ||
36 | render :: State -> GLArea -> GLContext -> IO Bool | 39 | render :: State -> GLArea -> GLContext -> IO Bool |
37 | render st glarea gl = do | 40 | render 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 () | |||
132 | unrealize st glarea = do | 155 | unrealize st glarea = do |
133 | return () | 156 | return () |
134 | 157 | ||
158 | prettyDebug :: GL.DebugMessage -> String | ||
135 | prettyDebug (GL.DebugMessage src typ (GL.DebugMessageID mid) severity msg) = unwords ws | 159 | prettyDebug (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] |