Refactor pointers into vaos
This commit is contained in:
+17
-76
@@ -25,29 +25,13 @@ data PreloadData = PreloadData
|
||||
, _arcShader :: Program
|
||||
, _fadeCircleShader :: Program
|
||||
, _triVAO :: VAO
|
||||
, _textVAO' :: VAO
|
||||
, _circVAO' :: VAO
|
||||
, _arcVAO' :: VAO
|
||||
, _basicVAO :: VertexArrayObject
|
||||
, _textVAO :: VertexArrayObject
|
||||
, _circVAO :: VertexArrayObject
|
||||
, _arcVAO :: VertexArrayObject
|
||||
, _lineVAO :: VAO
|
||||
, _textVAO :: VAO
|
||||
, _circVAO :: VAO
|
||||
, _arcVAO :: VAO
|
||||
, _posVBO :: BufferObject
|
||||
, _colVBO :: BufferObject
|
||||
, _texVBO :: BufferObject
|
||||
, _ptrPosVBO :: Ptr Float
|
||||
, _ptrColVBO :: Ptr Float
|
||||
, _ptrCharPos :: Ptr Float
|
||||
, _ptrCharCol :: Ptr Float
|
||||
, _ptrCharTex :: Ptr Float
|
||||
, _ptrCircPos :: Ptr Float
|
||||
, _ptrCircCol :: Ptr Float
|
||||
, _ptrCircSca :: Ptr Float
|
||||
, _ptrArcPos :: Ptr Float
|
||||
, _ptrArcCol :: Ptr Float
|
||||
, _ptrArcSca :: Ptr Float
|
||||
, _ptrLinePos :: Ptr Float
|
||||
, _ptrLineCol :: Ptr Float
|
||||
, _uniWinSize :: UniformLocation
|
||||
, _csZoomUni :: UniformLocation
|
||||
, _asWinUni :: UniformLocation
|
||||
@@ -159,34 +143,10 @@ doPreload' = do
|
||||
textureFilter Texture2D $= ((Linear',Just Linear') , Nearest)
|
||||
|
||||
trivao <- setupVAO' [(posVBO,0,3),(colVBO,1,4)]
|
||||
linevao <- setupVAO' [(posVBO,0,3),(colVBO,1,4)]
|
||||
textvao <- setupVAO' [(posVBO,0,3),(colVBO,1,4),(texVBO,2,2)]
|
||||
circvao <- setupVAO' [(posVBO,0,3),(colVBO,1,4),(texVBO,2,1)]
|
||||
arcvao <- setupVAO' [(posVBO,0,3),(colVBO,1,4),(texVBO,2,4)]
|
||||
-- setup VAOs: basic vao
|
||||
basicVAO <- setupVAO [(posVBO,0,3),(colVBO,1,4)]
|
||||
textVAO <- setupVAO [(posVBO,0,3),(colVBO,1,4),(texVBO,2,2)]
|
||||
circVAO <- setupVAO [(posVBO,0,3),(colVBO,1,4),(texVBO,2,1)]
|
||||
arcVAO <- setupVAO [(posVBO,0,3),(colVBO,1,4),(texVBO,2,4)]
|
||||
|
||||
-- allocate memory for vertex attributes
|
||||
-- for triangles
|
||||
ptrPosVBO <- mallocArray (3*3*20000)
|
||||
ptrColVBO <- mallocArray (3*4*20000)
|
||||
-- for characters
|
||||
ptrCharPos <- mallocArray (3*20000)
|
||||
ptrCharCol <- mallocArray (4*20000)
|
||||
ptrCharTex <- mallocArray (2*20000)
|
||||
-- for circles
|
||||
ptrCircPos <- mallocArray (3*20000)
|
||||
ptrCircCol <- mallocArray (4*20000)
|
||||
ptrCircSca <- mallocArray (2*20000)
|
||||
-- for lines
|
||||
ptrLinePos <- mallocArray (3*20000)
|
||||
ptrLineCol <- mallocArray (4*20000)
|
||||
-- for arcs
|
||||
ptrArcPos <- mallocArray (3*20000)
|
||||
ptrArcCol <- mallocArray (4*20000)
|
||||
ptrArcSca <- mallocArray (4*20000)
|
||||
|
||||
return $ PreloadData
|
||||
{ _charMap = convertRGBA8 cmap
|
||||
@@ -196,45 +156,26 @@ doPreload' = do
|
||||
, _arcShader = as
|
||||
, _fadeCircleShader = fcs
|
||||
, _triVAO = trivao
|
||||
, _textVAO' = textvao
|
||||
, _circVAO' = circvao
|
||||
, _arcVAO' = arcvao
|
||||
, _basicVAO = basicVAO
|
||||
, _textVAO = textVAO
|
||||
, _circVAO = circVAO
|
||||
, _arcVAO = arcVAO
|
||||
, _textVAO = textvao
|
||||
, _circVAO = circvao
|
||||
, _arcVAO = arcvao
|
||||
, _lineVAO = linevao
|
||||
, _posVBO = posVBO
|
||||
, _colVBO = colVBO
|
||||
, _texVBO = texVBO
|
||||
, _ptrPosVBO = ptrPosVBO
|
||||
, _ptrColVBO = ptrColVBO
|
||||
, _ptrCharPos = ptrCharPos
|
||||
, _ptrCharCol = ptrCharCol
|
||||
, _ptrCharTex = ptrCharTex
|
||||
, _ptrCircPos = ptrCircPos
|
||||
, _ptrCircCol = ptrCircCol
|
||||
, _ptrCircSca = ptrCircSca
|
||||
, _ptrArcPos = ptrArcPos
|
||||
, _ptrArcCol = ptrArcCol
|
||||
, _ptrArcSca = ptrArcSca
|
||||
, _ptrLinePos = ptrLinePos
|
||||
, _ptrLineCol = ptrLineCol
|
||||
, _uniWinSize = winSizeUni
|
||||
, _csZoomUni = zoomUni
|
||||
, _asWinUni = asWinSizeUniLoc
|
||||
, _asZoomUni = asZoomUniLoc
|
||||
}
|
||||
|
||||
vaoPointers :: VAO -> [Ptr Float]
|
||||
vaoPointers = (\(_,ps,_) -> ps) . unzip3 . _vaoBufferTargets
|
||||
|
||||
cleanUpPreload :: PreloadData -> IO ()
|
||||
cleanUpPreload pd = do
|
||||
free (_ptrPosVBO pd)
|
||||
free (_ptrColVBO pd)
|
||||
free (_ptrCharPos pd)
|
||||
free (_ptrCharCol pd)
|
||||
free (_ptrCharTex pd)
|
||||
free (_ptrCircPos pd)
|
||||
free (_ptrCircCol pd)
|
||||
free (_ptrCircSca pd)
|
||||
free (_ptrArcPos pd)
|
||||
free (_ptrArcCol pd)
|
||||
free (_ptrArcSca pd)
|
||||
mapM_ free $ vaoPointers $ _triVAO pd
|
||||
mapM_ free $ vaoPointers $ _textVAO pd
|
||||
mapM_ free $ vaoPointers $ _circVAO pd
|
||||
mapM_ free $ vaoPointers $ _arcVAO pd
|
||||
mapM_ free $ vaoPointers $ _lineVAO pd
|
||||
|
||||
Reference in New Issue
Block a user