Refactor poking slightly
This commit is contained in:
+3
-41
@@ -1,8 +1,5 @@
|
||||
module Shader
|
||||
( pokeShaders
|
||||
, pokeArrayOff
|
||||
, pokeShader'
|
||||
, bindArrayBuffers'
|
||||
( bindArrayBuffers'
|
||||
, bindShaderBuffers
|
||||
, drawShader
|
||||
, drawShaders
|
||||
@@ -11,18 +8,14 @@ module Shader
|
||||
, extractProgAndUnis
|
||||
, freeShaderPointers
|
||||
, setPerpMatUniform
|
||||
, module Shader.Data
|
||||
)
|
||||
where
|
||||
import Geometry
|
||||
) where
|
||||
import Geometry.Data
|
||||
import Shader.Data
|
||||
import Shader.Parameters
|
||||
import MatrixHelper
|
||||
import Picture.Data
|
||||
|
||||
import Foreign
|
||||
import Control.Monad
|
||||
import qualified Control.Foldl as F
|
||||
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
|
||||
--import Text.RawString.QQ
|
||||
import Linear.Matrix
|
||||
@@ -31,37 +24,6 @@ import Linear.V4
|
||||
extractProgAndUnis :: FullShader -> (Program,UniformLocation)
|
||||
extractProgAndUnis s = (_shaderProgram s, _shaderMatrixUniform s)
|
||||
|
||||
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
|
||||
where
|
||||
theVBO = _vaoVBO $ _shaderVAO fs
|
||||
ptr = _vboPointer theVBO
|
||||
stride = sum $ _vboAttribSizes theVBO
|
||||
fls = _shaderPokeStrategy fs
|
||||
|
||||
pokeRender'
|
||||
:: (RenderType -> [[Float]])
|
||||
-> Ptr Float
|
||||
-> Int -- ^ stride
|
||||
-> Int
|
||||
-> RenderType
|
||||
-> IO Int
|
||||
pokeRender' toFs ptr stride n rt = pokeList' ptr stride n (toFs rt)
|
||||
|
||||
pokeList' :: Ptr Float -> Int -> Int -> [[Float]] -> IO Int
|
||||
pokeList' ptr stride = foldM (pokePtrs' ptr stride)
|
||||
|
||||
pokePtrs' :: Ptr Float -> Int -> Int -> [Float] -> IO Int
|
||||
pokePtrs' ptr stride n fs = do
|
||||
pokeArrayOff ptr (stride * n) fs
|
||||
return $ n + 1
|
||||
|
||||
pokeArrayOff :: Storable a => Ptr a -> Int -> [a] -> IO ()
|
||||
pokeArrayOff ptr i = zipWithM_ (pokeElemOff ptr) [i..]
|
||||
|
||||
bindArrayBuffers' :: Int -> VBO -> IO ()
|
||||
bindArrayBuffers' numVs theVBO = do
|
||||
bindBuffer ArrayBuffer $= Just (_vbo theVBO)
|
||||
|
||||
Reference in New Issue
Block a user