Continue tweaking rendering
This commit is contained in:
+29
-24
@@ -1,3 +1,4 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
module Render
|
||||
where
|
||||
import Shader
|
||||
@@ -159,33 +160,37 @@ pokeBindFoldableLayer
|
||||
-> IO (IM.IntMap [(VShader,Int)])
|
||||
pokeBindFoldableLayer pdata m = do
|
||||
let slist = (,) <$> [0..6] <*> _pictureShaders pdata
|
||||
slist' = IM.fromListWith (++) ((,) <$> [0..6] <*> map ((:[]) . (, 0)) (_pictureShaders pdata))
|
||||
|
||||
is <- F.foldM (traverse pokeShaderLayer slist) m
|
||||
-- is <- F.foldM (traverse pokeShaderLayer slist) m
|
||||
-- bindShaderLayer slist is
|
||||
slist'' <- foldM pokeVX slist' m
|
||||
bindShaderLay slist''
|
||||
--return $ IM.fromListWith (++) $ zipWith (\(i,fs) n -> (i,[(fs,n)])) slist is
|
||||
return slist''
|
||||
|
||||
renderFoldable
|
||||
:: Foldable f
|
||||
=> RenderData
|
||||
-> f Verx
|
||||
-> IO Word32
|
||||
renderFoldable pdata struct = do
|
||||
pokeStartTicks <- SDL.ticks
|
||||
|
||||
let slist = (,) <$> [0..6] <*> _pictureShaders pdata
|
||||
|
||||
-- poke data, returns list buffer sizes for each shader
|
||||
is <- F.foldM (traverse pokeShaderLayer slist) struct
|
||||
|
||||
-- the idea of binding many buffers at once, rather than interweaving with draw
|
||||
-- calls, is to prevent opengl from waiting for a draw call to finish
|
||||
-- before it performs another state change
|
||||
bindShaderLayer slist is
|
||||
return $ IM.fromListWith (++) $ zipWith (\(i,fs) n -> (i,[(fs,n)])) slist is
|
||||
|
||||
--renderFoldable
|
||||
-- :: Foldable f
|
||||
-- => RenderData
|
||||
-- -> f RenderType
|
||||
-- -> IO Word32
|
||||
--renderFoldable pdata struct = do
|
||||
-- pokeStartTicks <- SDL.ticks
|
||||
--
|
||||
-- let slist = _pictureShaders pdata
|
||||
--
|
||||
---- poke data, returns list buffer sizes for each shader
|
||||
-- is <- F.foldM (traverse pokeShader slist) struct
|
||||
--
|
||||
---- the idea of binding many buffers at once, rather than interweaving with draw
|
||||
---- calls, is to prevent opengl from waiting for a draw call to finish
|
||||
---- before it performs another state change
|
||||
-- bindShaderBuffers slist is
|
||||
--
|
||||
-- zipWithM_ drawShader slist is
|
||||
--
|
||||
-- pokeEndTicks <- SDL.ticks
|
||||
-- return $ pokeEndTicks - pokeStartTicks
|
||||
zipWithM_ (uncurry drawShaderLay) slist is
|
||||
|
||||
pokeEndTicks <- SDL.ticks
|
||||
return $ pokeEndTicks - pokeStartTicks
|
||||
------------------------------end renderFoldable
|
||||
|
||||
pokeTwoOff
|
||||
|
||||
Reference in New Issue
Block a user