Module reorganisation
This commit is contained in:
+7
-11
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user