summaryrefslogtreecommitdiff
path: root/src/LambdaCube/GL/Backend.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/LambdaCube/GL/Backend.hs')
-rw-r--r--src/LambdaCube/GL/Backend.hs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/LambdaCube/GL/Backend.hs b/src/LambdaCube/GL/Backend.hs
index 1cf3f62..c5e3190 100644
--- a/src/LambdaCube/GL/Backend.hs
+++ b/src/LambdaCube/GL/Backend.hs
@@ -220,7 +220,10 @@ clearRenderTarget GLRenderTarget{..} values = do
220 (mask,_) <- foldM setClearValue (0,0) values 220 (mask,_) <- foldM setClearValue (0,0) values
221 glClear $ fromIntegral mask 221 glClear $ fromIntegral mask
222 222
223printGLStatus :: IO ()
223printGLStatus = checkGL >>= print 224printGLStatus = checkGL >>= print
225
226printFBOStatus :: IO ()
224printFBOStatus = checkFBO >>= print 227printFBOStatus = checkFBO >>= print
225 228
226compileProgram :: Program -> IO GLProgram 229compileProgram :: Program -> IO GLProgram
@@ -777,6 +780,8 @@ renderSlot glDrawCallCounterRef glVertexBufferRef glIndexBufferRef cmds = forM_
777 --isOk <- checkGL 780 --isOk <- checkGL
778 --putStrLn $ isOk ++ " - " ++ show cmd 781 --putStrLn $ isOk ++ " - " ++ show cmd
779 782
783setupRenderTarget :: IORef (Maybe InputConnection)
784 -> GLRenderTarget -> IO ()
780setupRenderTarget glInput GLRenderTarget{..} = do 785setupRenderTarget glInput GLRenderTarget{..} = do
781 -- set target viewport 786 -- set target viewport
782 ic' <- readIORef glInput 787 ic' <- readIORef glInput
@@ -792,6 +797,11 @@ setupRenderTarget glInput GLRenderTarget{..} = do
792 Nothing -> return () 797 Nothing -> return ()
793 Just bl -> withArray bl $ glDrawBuffers (fromIntegral $ length bl) 798 Just bl -> withArray bl $ glDrawBuffers (fromIntegral $ length bl)
794 799
800setupDrawContext :: IORef Bool
801 -> IORef GLDrawContext
802 -> IORef (Maybe InputConnection)
803 -> GLDrawContext
804 -> IO ()
795setupDrawContext glForceSetup glDrawContextRef glInput new = do 805setupDrawContext glForceSetup glDrawContextRef glInput new = do
796 old <- readIORef glDrawContextRef 806 old <- readIORef glDrawContextRef
797 writeIORef glDrawContextRef new 807 writeIORef glDrawContextRef new
@@ -878,6 +888,7 @@ data CGState
878 , samplerMapping :: IntMap GLSampler 888 , samplerMapping :: IntMap GLSampler
879 } 889 }
880 890
891initCGState :: CGState
881initCGState = CGState 892initCGState = CGState
882 { drawCommands = mempty 893 { drawCommands = mempty
883 -- draw context data 894 -- draw context data
@@ -895,6 +906,8 @@ type CG a = State CGState a
895emit :: GLCommand -> CG () 906emit :: GLCommand -> CG ()
896emit cmd = modify $ \s -> s {drawCommands = cmd : drawCommands s} 907emit cmd = modify $ \s -> s {drawCommands = cmd : drawCommands s}
897 908
909drawContext :: MonadState CGState m =>
910 Vector GLProgram -> m GLDrawContext
898drawContext programs = do 911drawContext programs = do
899 GLProgram{..} <- (programs !) <$> gets currentProgram 912 GLProgram{..} <- (programs !) <$> gets currentProgram
900 let f = take (Map.size inputTextures) . IntMap.toList 913 let f = take (Map.size inputTextures) . IntMap.toList