Separate sound and render io parameters

This commit is contained in:
jgk
2021-02-23 15:05:48 +01:00
parent 62a1a57913
commit c188512abb
4 changed files with 23 additions and 14 deletions
+7 -7
View File
@@ -16,7 +16,7 @@ import Foreign
import Shaders
data PreloadData = PreloadData
data RenderData = RenderData
{ --_charMap :: Image PixelRGBA8
_textures :: [TextureObject]
, _basicShader :: Program
@@ -52,7 +52,7 @@ data VAO = VAO
, _vaoBufferTargets :: [(BufferObject,Ptr Float,Int)]
}
makeLenses ''PreloadData
makeLenses ''RenderData
makeLenses ''VAO
floatSize = sizeOf (0.5 :: GLfloat)
@@ -100,8 +100,8 @@ loadTextures = do
bufferOffset :: Integral a => a -> Ptr b
bufferOffset = plusPtr nullPtr . fromIntegral
doPreload' :: IO PreloadData
doPreload' = do
preloadRender :: IO RenderData
preloadRender = do
-- compile shader programs
bs <- makeBasicShader
ts <- makeTextureShader
@@ -172,7 +172,7 @@ doPreload' = do
wallvao <- setupVAO [(posVBO,0,4),(colVBO,1,4)]
fadecircvao <- setupVAO [(posVBO,0,4)]
return $ PreloadData
return $ RenderData
{ -- _charMap = convertRGBA8 cmap
_textures = [chartex,dirttex]
,_basicShader = bs
@@ -207,8 +207,8 @@ doPreload' = do
vaoPointers :: VAO -> [Ptr Float]
vaoPointers = (\(_,ps,_) -> ps) . unzip3 . _vaoBufferTargets
cleanUpPreload :: PreloadData -> IO ()
cleanUpPreload pd = do
cleanUpRenderPreload :: RenderData -> IO ()
cleanUpRenderPreload pd = do
mapM_ free $ vaoPointers $ _triVAO pd
mapM_ free $ vaoPointers $ _textVAO pd
mapM_ free $ vaoPointers $ _circVAO pd
+2 -2
View File
@@ -247,7 +247,7 @@ threePtrsVAO :: VAO -> (Ptr Float, Ptr Float,Ptr Float)
threePtrsVAO vao = case (\(_,ps,_) -> ps) $ unzip3 $ _vaoBufferTargets vao of
(a:b:c:_) -> (a,b,c)
renderPicture' :: PreloadData -> Float -> Float -> (Float,Float) -> (Float,Float) ->
renderPicture' :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) ->
[(Point2,Point2,Point2,Point2)] -> [Point4] -> Picture -> IO ()
renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints pic = do
depthFunc $= Just Lequal
@@ -349,7 +349,7 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints p
bufferOffset :: Integral a => a -> Ptr b
bufferOffset = plusPtr nullPtr . fromIntegral
renderPicture :: PreloadData -> Float -> Float -> (Float,Float) -> (Float,Float) -> Picture -> IO ()
renderPicture :: RenderData -> Float -> Float -> (Float,Float) -> (Float,Float) -> Picture -> IO ()
renderPicture pdata rot zoom (tranx,trany) (winx,winy) pic = do
let firstIndex = 0
+7 -1
View File
@@ -4,4 +4,10 @@ import qualified SDL.Mixer as Mix
import qualified Data.IntMap as IM
type LoadedSounds = IM.IntMap Mix.Chunk
type SoundData = IM.IntMap Mix.Chunk
preloadSound :: IO SoundData
preloadSound = return IM.empty
cleanUpSoundPreload :: SoundData -> IO ()
cleanUpSoundPreload sd = return ()