Module reorganisation

This commit is contained in:
jgk
2021-06-12 12:21:42 +02:00
parent 11bd97335d
commit f09fe8798e
12 changed files with 56 additions and 54 deletions
+7 -11
View File
@@ -1,6 +1,5 @@
module Shader.Poke
( pokeShaders
, pokeArrayOff
( pokeArrayOff
, pokeShader
) where
import Shader.Data
@@ -10,28 +9,25 @@ import Foreign
import Control.Monad
import qualified Control.Foldl as F
pokeShaders :: [FullShader] -> F.FoldM IO RenderType [Int]
pokeShaders = traverse pokeShader
pokeShader :: FullShader -> F.FoldM IO RenderType Int
pokeShader fs = F.FoldM (pokeRender fls ptr stride) (return 0) return
pokeShader fs = F.FoldM (pokeVertices fls ptr stride) (return 0) return
where
theVBO = _vaoVBO $ _shaderVAO fs
ptr = _vboPointer theVBO
stride = sum $ _vboAttribSizes theVBO
fls = _shaderPokeStrategy fs
pokeRender
pokeVertices
:: (RenderType -> [[Float]])
-> Ptr Float
-> Int -- ^ stride
-> Int
-> Int -- ^ number of vertices already poked
-> RenderType
-> IO Int
pokeRender toFs ptr stride n rt = foldM (pokePtrs ptr stride) n (toFs rt)
pokeVertices toFs ptr stride n rt = foldM (pokeVertex ptr stride) n (toFs rt)
pokePtrs :: Ptr Float -> Int -> Int -> [Float] -> IO Int
pokePtrs ptr stride n fs = do
pokeVertex :: Ptr Float -> Int -> Int -> [Float] -> IO Int
pokeVertex ptr stride n fs = do
pokeArrayOff ptr (stride * n) fs
return $ n + 1