diff options
author | Joe Crayne <joe@jerkface.net> | 2019-04-08 01:44:41 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-04-08 01:44:41 -0400 |
commit | b52fd6c61ec7bec3ff4eea80e7a24bff53a30425 (patch) | |
tree | 54719d043a77e725131b0b94ab17c9b76e037394 /Lambda2.hs | |
parent | 72da18a55e7fdda733c8306398920277ad5b7985 (diff) |
Debug info for gtk Lambda2 experiment.
Diffstat (limited to 'Lambda2.hs')
-rw-r--r-- | Lambda2.hs | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -2,6 +2,8 @@ | |||
2 | {-# LANGUAGE OverloadedStrings #-} | 2 | {-# LANGUAGE OverloadedStrings #-} |
3 | module Lambda2 where | 3 | module Lambda2 where |
4 | 4 | ||
5 | import qualified Graphics.Rendering.OpenGL as GL | ||
6 | |||
5 | import GI.Gtk.Objects (GLArea,gLAreaGetContext,widgetGetWindow) | 7 | import GI.Gtk.Objects (GLArea,gLAreaGetContext,widgetGetWindow) |
6 | import GI.Gdk.Objects.GLContext (GLContext, gLContextGetDebugEnabled, | 8 | import 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) | ||
14 | import GI.Gdk.Objects.Window (windowCreateGlContext,windowGetWidth,windowGetHeight) | 17 | import GI.Gdk.Objects.Window (windowCreateGlContext,windowGetWidth,windowGetHeight) |
15 | 18 | ||
16 | import qualified Data.Map as Map | 19 | import qualified Data.Map as Map |
@@ -21,6 +24,8 @@ import LambdaCube.GL.Mesh as LambdaCubeGL | |||
21 | import Codec.Picture as Juicy | 24 | import Codec.Picture as Juicy |
22 | import Data.Aeson | 25 | import Data.Aeson |
23 | import qualified Data.ByteString as SB | 26 | import qualified Data.ByteString as SB |
27 | import Data.Char | ||
28 | import Text.Printf | ||
24 | 29 | ||
25 | data State = State | 30 | data 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 | |||
112 | realize :: State -> GLArea -> IO () | 119 | realize :: State -> GLArea -> IO () |
113 | realize st glarea = do | 120 | realize 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 | ||
117 | unrealize :: State -> GLArea -> IO () | 131 | unrealize :: State -> GLArea -> IO () |
118 | unrealize st glarea = do | 132 | unrealize st glarea = do |
119 | return () | 133 | return () |
120 | 134 | ||
135 | prettyDebug (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 | |||
121 | createContext :: State -> GLArea -> IO GLContext | 144 | createContext :: State -> GLArea -> IO GLContext |
122 | createContext st glarea = do | 145 | createContext 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 |