Remove dummy vbo
This commit is contained in:
+8
-24
@@ -1,5 +1,4 @@
|
|||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
--{-# LANGUAGE Strict #-}
|
|
||||||
module Picture.Preload
|
module Picture.Preload
|
||||||
( RenderData (..)
|
( RenderData (..)
|
||||||
, preloadRender
|
, preloadRender
|
||||||
@@ -26,10 +25,7 @@ data RenderData = RenderData
|
|||||||
, _wallLightShader :: FullShader (Point2,Point2)
|
, _wallLightShader :: FullShader (Point2,Point2)
|
||||||
, _backgroundShader :: FullShader (Point2,Point2,Point2,Point2)
|
, _backgroundShader :: FullShader (Point2,Point2,Point2,Point2)
|
||||||
, _fullscreenShader :: FullShader ()
|
, _fullscreenShader :: FullShader ()
|
||||||
-- , _wallShader :: FullShader (Point3,Point4)
|
|
||||||
, _listShaders :: [FullShader RenderType]
|
, _listShaders :: [FullShader RenderType]
|
||||||
, _dummyVBO :: BufferObject
|
|
||||||
, _dummyPtr :: Ptr Float
|
|
||||||
, _spareFBO :: FramebufferObject
|
, _spareFBO :: FramebufferObject
|
||||||
, _fboTexture :: TextureObject
|
, _fboTexture :: TextureObject
|
||||||
}
|
}
|
||||||
@@ -39,21 +35,16 @@ makeLenses ''RenderData
|
|||||||
preloadRender :: IO RenderData
|
preloadRender :: IO RenderData
|
||||||
preloadRender = do
|
preloadRender = do
|
||||||
-- compile shader programs
|
-- compile shader programs
|
||||||
lsShad <- makeShader "lighting/lightmapCircle" [vert,geom,frag] [(0,4)] Points (return . return . flat4)
|
-- lighting shaders
|
||||||
-- fcs <- makeSourcedShader "lightmapCircle" [VertexShader,GeometryShader,FragmentShader]
|
lsShad <- makeShader "lighting/lightmapCircle" [vert,geom,frag] [(0,4)] Points
|
||||||
|
(return . return . flat4)
|
||||||
bgShad <- makeTextureShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat
|
|
||||||
"data/texture/smudgedDirt.png"
|
|
||||||
|
|
||||||
wsShad <- makeShaderCustomUnis "lighting/wallShadow" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
wsShad <- makeShaderCustomUnis "lighting/wallShadow" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||||
["lightPos","perpMat","facesToDraw"]
|
["lightPos","perpMat","facesToDraw"]
|
||||||
|
|
||||||
wlLightShad
|
wlLightShad
|
||||||
<- makeShaderCustomUnis "lighting/lightmapWall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
<- makeShaderCustomUnis "lighting/lightmapWall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||||
["lightPos","perpMat","radLum"]
|
["lightPos","perpMat","radLum"]
|
||||||
|
|
||||||
-- wlShad <- makeShader "wall" [vert,frag] [(0,3),(1,4)] TriangleStrip pokeWlStrat
|
-- 2D draw shaders
|
||||||
|
|
||||||
bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
|
bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
|
||||||
lslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Lines pokeLineStrat
|
lslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Lines pokeLineStrat
|
||||||
aslist <- makeShader "twoD/arc" [vert,geom,frag] [(0,3),(1,4),(2,4)] Points pokeArcStrat
|
aslist <- makeShader "twoD/arc" [vert,geom,frag] [(0,3),(1,4),(2,4)] Points pokeArcStrat
|
||||||
@@ -64,6 +55,7 @@ preloadRender = do
|
|||||||
[(0,3),(1,4),(2,3)] Points pokeCharStrat
|
[(0,3),(1,4),(2,3)] Points pokeCharStrat
|
||||||
"data/texture/charMap.png"
|
"data/texture/charMap.png"
|
||||||
|
|
||||||
|
-- fullscreen shader
|
||||||
fsShad <- makeShader "fullscreen" [vert,frag] [(0,2),(1,2)] TriangleStrip
|
fsShad <- makeShader "fullscreen" [vert,frag] [(0,2),(1,2)] TriangleStrip
|
||||||
(const [[[-1, 1],[0,1]]
|
(const [[[-1, 1],[0,1]]
|
||||||
,[[ 1, 1],[1,1]]
|
,[[ 1, 1],[1,1]]
|
||||||
@@ -72,15 +64,10 @@ preloadRender = do
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
n <- F.foldM (pokeShader fsShad) [()]
|
n <- F.foldM (pokeShader fsShad) [()]
|
||||||
putStrLn $ show n
|
|
||||||
|
|
||||||
--the following vbo is set up to contain one fixed vertex
|
|
||||||
dummyvbo <- genObjectName
|
|
||||||
dummyptr <- mallocArray numDrawableElements
|
|
||||||
pokeArray dummyptr [0..2000]
|
|
||||||
bindBuffer ArrayBuffer $= Just dummyvbo
|
|
||||||
bufferData ArrayBuffer $= (fromIntegral floatSize, dummyptr, StaticDraw)
|
|
||||||
|
|
||||||
|
-- background shader
|
||||||
|
bgShad <- makeTextureShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat
|
||||||
|
"data/texture/smudgedDirt.png"
|
||||||
-- input a list of (attribute location, attrib length) pairs
|
-- input a list of (attribute location, attrib length) pairs
|
||||||
-- these will have buffers and pointers created
|
-- these will have buffers and pointers created
|
||||||
backgroundvao <- setupVAO [(0,4),(1,2)]
|
backgroundvao <- setupVAO [(0,4),(1,2)]
|
||||||
@@ -91,8 +78,6 @@ preloadRender = do
|
|||||||
|
|
||||||
return $ RenderData
|
return $ RenderData
|
||||||
{ _listShaders = [bslist,lslist,cslist,aslist,eslist,bezierQuadShader]
|
{ _listShaders = [bslist,lslist,cslist,aslist,eslist,bezierQuadShader]
|
||||||
, _dummyVBO = dummyvbo
|
|
||||||
, _dummyPtr = dummyptr
|
|
||||||
, _lightSourceShader = lsShad
|
, _lightSourceShader = lsShad
|
||||||
, _wallShadowShader = wsShad
|
, _wallShadowShader = wsShad
|
||||||
, _wallLightShader = wlLightShad
|
, _wallLightShader = wlLightShad
|
||||||
@@ -134,7 +119,6 @@ cleanUpRenderPreload pd = do
|
|||||||
freeShaderPointers $ _lightSourceShader pd
|
freeShaderPointers $ _lightSourceShader pd
|
||||||
freeShaderPointers $ _wallShadowShader pd
|
freeShaderPointers $ _wallShadowShader pd
|
||||||
freeShaderPointers $ _backgroundShader pd
|
freeShaderPointers $ _backgroundShader pd
|
||||||
free $ _dummyPtr pd
|
|
||||||
|
|
||||||
{-# INLINE pokeBezQStrat #-}
|
{-# INLINE pokeBezQStrat #-}
|
||||||
pokeBezQStrat :: RenderType -> [[[Float]]]
|
pokeBezQStrat :: RenderType -> [[[Float]]]
|
||||||
|
|||||||
Reference in New Issue
Block a user