summaryrefslogtreecommitdiff
path: root/Lambda2.hs
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-04-08 01:44:41 -0400
committerJoe Crayne <joe@jerkface.net>2019-04-08 01:44:41 -0400
commitb52fd6c61ec7bec3ff4eea80e7a24bff53a30425 (patch)
tree54719d043a77e725131b0b94ab17c9b76e037394 /Lambda2.hs
parent72da18a55e7fdda733c8306398920277ad5b7985 (diff)
Debug info for gtk Lambda2 experiment.
Diffstat (limited to 'Lambda2.hs')
-rw-r--r--Lambda2.hs39
1 files changed, 38 insertions, 1 deletions
diff --git a/Lambda2.hs b/Lambda2.hs
index bedf18c..9e0be24 100644
--- a/Lambda2.hs
+++ b/Lambda2.hs
@@ -2,6 +2,8 @@
2{-# LANGUAGE OverloadedStrings #-} 2{-# LANGUAGE OverloadedStrings #-}
3module Lambda2 where 3module Lambda2 where
4 4
5import qualified Graphics.Rendering.OpenGL as GL
6
5import GI.Gtk.Objects (GLArea,gLAreaGetContext,widgetGetWindow) 7import GI.Gtk.Objects (GLArea,gLAreaGetContext,widgetGetWindow)
6import GI.Gdk.Objects.GLContext (GLContext, gLContextGetDebugEnabled, 8import GI.Gdk.Objects.GLContext (GLContext, gLContextGetDebugEnabled,
7 gLContextGetForwardCompatible, 9 gLContextGetForwardCompatible,
@@ -10,7 +12,8 @@ import GI.Gdk.Objects.GLContext (GLContext, gLContextGetDebugEnabled,
10 gLContextGetRequiredVersion, 12 gLContextGetRequiredVersion,
11 gLContextSetRequiredVersion, 13 gLContextSetRequiredVersion,
12 gLContextGetUseEs, 14 gLContextGetUseEs,
13 getGLContextWindow) 15 getGLContextWindow,
16 gLContextMakeCurrent)
14import GI.Gdk.Objects.Window (windowCreateGlContext,windowGetWidth,windowGetHeight) 17import GI.Gdk.Objects.Window (windowCreateGlContext,windowGetWidth,windowGetHeight)
15 18
16import qualified Data.Map as Map 19import qualified Data.Map as Map
@@ -21,6 +24,8 @@ import LambdaCube.GL.Mesh as LambdaCubeGL
21import Codec.Picture as Juicy 24import Codec.Picture as Juicy
22import Data.Aeson 25import Data.Aeson
23import qualified Data.ByteString as SB 26import qualified Data.ByteString as SB
27import Data.Char
28import Text.Printf
24 29
25data State = State 30data State = State
26 31
@@ -74,6 +79,8 @@ render st glarea gl = do
74 Just t <- return $ Just (1.0::Double) -- GLFW.getTime 79 Just t <- return $ Just (1.0::Double) -- GLFW.getTime
75 return (realToFrac t :: Float) 80 return (realToFrac t :: Float)
76 -- render 81 -- render
82 GL.clearColor GL.$= GL.Color4 0 255 0 1
83 GL.clear [GL.ColorBuffer]
77 putStrLn "LambdaCubeGL.renderFrame enter" 84 putStrLn "LambdaCubeGL.renderFrame enter"
78 LambdaCubeGL.renderFrame renderer 85 LambdaCubeGL.renderFrame renderer
79 putStrLn "LambdaCubeGL.renderFrame exit" 86 putStrLn "LambdaCubeGL.renderFrame exit"
@@ -112,12 +119,28 @@ triangleB = Mesh
112realize :: State -> GLArea -> IO () 119realize :: State -> GLArea -> IO ()
113realize st glarea = do 120realize st glarea = do
114 putStrLn "realize!" 121 putStrLn "realize!"
122 {-
123 GL.debugMessageInsert (GL.DebugMessage GL.DebugSourceApplication
124 GL.DebugTypeOther
125 (GL.DebugMessageID 0)
126 GL.DebugSeverityHigh
127 "Hello2 world!")
128 -}
115 return () 129 return ()
116 130
117unrealize :: State -> GLArea -> IO () 131unrealize :: State -> GLArea -> IO ()
118unrealize st glarea = do 132unrealize st glarea = do
119 return () 133 return ()
120 134
135prettyDebug (GL.DebugMessage src typ (GL.DebugMessageID mid) severity msg) = unwords ws
136 where
137 ws = [wsrc,wtyp,wmid,wseverity,msg]
138 -- DebugSourceShaderCompiler DebugTypeOther 1 DebugSeverityNotification
139 wsrc = filter isUpper $ drop 11 $ show src
140 wtyp = take 2 $ drop 9 $ show typ
141 wmid = printf "%03i" mid
142 wseverity = drop 13 $ show severity
143
121createContext :: State -> GLArea -> IO GLContext 144createContext :: State -> GLArea -> IO GLContext
122createContext st glarea = do 145createContext st glarea = do
123 putStrLn "createContext!" 146 putStrLn "createContext!"
@@ -147,4 +170,18 @@ createContext st glarea = do
147 , "fw:",show v_fw 170 , "fw:",show v_fw
148 , "ver:", show (maj,min) 171 , "ver:", show (maj,min)
149 ] 172 ]
173 let pdebug m@(GL.DebugMessage src typ mid severity msg) = do
174 putStrLn (">> " ++ prettyDebug m)
175 gLContextMakeCurrent gl
176 GL.debugOutput GL.$= GL.Enabled
177 GL.debugOutputSynchronous GL.$= GL.Enabled
178 GL.debugMessageControl (GL.MessageGroup Nothing Nothing Nothing) GL.$= GL.Enabled
179 GL.debugMessageCallback GL.$= Just pdebug
180 {-
181 GL.debugMessageInsert (GL.DebugMessage GL.DebugSourceApplication
182 GL.DebugTypeOther
183 (GL.DebugMessageID 0)
184 GL.DebugSeverityHigh
185 "Hello world!")
186 -}
150 return gl 187 return gl