Cleanup window buffers
This commit is contained in:
@@ -42,20 +42,17 @@ data RenderData = RenderData
|
|||||||
, _fboLighting :: (FBO, TO)
|
, _fboLighting :: (FBO, TO)
|
||||||
, _rboBaseBloom :: GLuint -- RenderbufferObject id
|
, _rboBaseBloom :: GLuint -- RenderbufferObject id
|
||||||
, _matUBO :: GLuint -- BufferObject id
|
, _matUBO :: GLuint -- BufferObject id
|
||||||
, _winSSBO :: GLuint
|
-- , _winSSBO :: GLuint
|
||||||
, _wallSSBO :: GLuint
|
-- , _wallSSBO :: GLuint
|
||||||
, _shapeSSBO :: GLuint
|
, _shapeSSBO :: GLuint
|
||||||
, _ishapeSSBO :: GLuint
|
, _ishapeSSBO :: GLuint
|
||||||
-- , _ieshapeSSBO :: GLuint
|
|
||||||
-- , _lightsUBO :: GLuint -- BufferObject id
|
|
||||||
, _vboWindows :: VBO
|
|
||||||
, _vboShapes :: VBO
|
, _vboShapes :: VBO
|
||||||
, _floorVBO :: VBO
|
, _floorVBO :: VBO
|
||||||
, _floorShader :: Shader
|
, _floorShader :: Shader
|
||||||
, _chasmVBO :: VBO
|
, _chasmVBO :: VBO
|
||||||
, _chasmShader :: Shader
|
, _chasmShader :: Shader
|
||||||
|
, _winVBO :: VBO
|
||||||
, _wallVBO :: VBO
|
, _wallVBO :: VBO
|
||||||
-- , _wallShader :: Shader
|
|
||||||
, _cloudVBO :: VBO
|
, _cloudVBO :: VBO
|
||||||
, _cloudShader :: Shader
|
, _cloudShader :: Shader
|
||||||
, _cloudEBO :: UintBO
|
, _cloudEBO :: UintBO
|
||||||
|
|||||||
+5
-7
@@ -69,7 +69,7 @@ doDrawing' win pdata u = do
|
|||||||
wp
|
wp
|
||||||
)
|
)
|
||||||
( pokeWallsWindows
|
( pokeWallsWindows
|
||||||
(pdata ^. vboWindows . vboPtr)
|
(pdata ^. winVBO . vboPtr)
|
||||||
(pdata ^. wallVBO . vboPtr)
|
(pdata ^. wallVBO . vboPtr)
|
||||||
windowPoints
|
windowPoints
|
||||||
wallsToPoke
|
wallsToPoke
|
||||||
@@ -107,10 +107,11 @@ doDrawing' win pdata u = do
|
|||||||
]
|
]
|
||||||
-- set the coordinate uniform ready for drawing elements using world coordinates
|
-- set the coordinate uniform ready for drawing elements using world coordinates
|
||||||
bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO)
|
bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO)
|
||||||
glNamedBufferSubData (pdata ^. winSSBO) 0
|
glNamedBufferSubData (pdata ^. winVBO . vboName) 0
|
||||||
(fromIntegral $ nWins * sizeOf (0::Float) * 8)
|
(fromIntegral $ nWins * sizeOf (0::Float) * 8)
|
||||||
(pdata ^. vboWindows . vboPtr)
|
(pdata ^. winVBO . vboPtr)
|
||||||
glNamedBufferSubData (pdata ^. wallSSBO) 0
|
-- bufferFloatBO function
|
||||||
|
glNamedBufferSubData (pdata ^. wallVBO . vboName) 0
|
||||||
(fromIntegral $ trueNWalls * sizeOf (0::Float) * 8)
|
(fromIntegral $ trueNWalls * sizeOf (0::Float) * 8)
|
||||||
(pdata ^. wallVBO . vboPtr)
|
(pdata ^. wallVBO . vboPtr)
|
||||||
glNamedBufferSubData (pdata ^. shapeSSBO) 0
|
glNamedBufferSubData (pdata ^. shapeSSBO) 0
|
||||||
@@ -120,9 +121,6 @@ doDrawing' win pdata u = do
|
|||||||
(fromIntegral $ nIndices * (sizeOf (0::GLuint)))
|
(fromIntegral $ nIndices * (sizeOf (0::GLuint)))
|
||||||
(pdata ^. shapeEBO . uiboPtr)
|
(pdata ^. shapeEBO . uiboPtr)
|
||||||
bufferEBO (pdata ^. silhouetteEBO) nSilIndices
|
bufferEBO (pdata ^. silhouetteEBO) nSilIndices
|
||||||
-- glNamedBufferSubData (pdata ^. ieshapeSSBO) 0
|
|
||||||
-- (fromIntegral $ nSilIndices * (sizeOf (0::GLuint)))
|
|
||||||
-- (pdata ^. silhouetteEBO . uiboPtr)
|
|
||||||
setViewport _gr_world_res cfig
|
setViewport _gr_world_res cfig
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||||
glDepthMask GL_TRUE
|
glDepthMask GL_TRUE
|
||||||
|
|||||||
+12
-19
@@ -43,16 +43,22 @@ preloadRender = do
|
|||||||
let winssbosize = sizeOf (0::Float) * 8 * 1024
|
let winssbosize = sizeOf (0::Float) * 8 * 1024
|
||||||
glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 1 winssbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 1 winssbo
|
||||||
|
winptr <- mallocBytes winssbosize
|
||||||
|
let winvbo = VBO winssbo winptr 8
|
||||||
|
|
||||||
|
let wallsn = 4096
|
||||||
wallssbo <- mglCreate glCreateBuffers
|
wallssbo <- mglCreate glCreateBuffers
|
||||||
let wallssbosize = sizeOf (0::Float) * 8 * 2048
|
let wallssbosize = sizeOf (0::Float) * 8 * wallsn
|
||||||
glNamedBufferStorage wallssbo (fromIntegral wallssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage wallssbo (fromIntegral wallssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 2 wallssbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 2 wallssbo
|
||||||
|
wallssboptr <- mallocBytes wallssbosize
|
||||||
|
let wallvbo = VBO wallssbo wallssboptr 8
|
||||||
|
|
||||||
shapessbo <- mglCreate glCreateBuffers
|
shapessbo <- mglCreate glCreateBuffers
|
||||||
let shapessbosize = fromIntegral (sizeOf (0::Float) * 12) * 65536
|
let shapessbosize = fromIntegral (sizeOf (0::Float) * 12) * 65536
|
||||||
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
|
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
|
||||||
|
|
||||||
ishapessbo <- mglCreate glCreateBuffers
|
ishapessbo <- mglCreate glCreateBuffers
|
||||||
let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
|
let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
|
||||||
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
|
||||||
@@ -70,7 +76,6 @@ preloadRender = do
|
|||||||
|
|
||||||
wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao)
|
wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao)
|
||||||
|
|
||||||
-- setup shape geometry/cap VBO and two VAOs
|
|
||||||
putStrLn "Setup shape VBO, VAO, EBO"
|
putStrLn "Setup shape VBO, VAO, EBO"
|
||||||
shVBO <- setupVBO shapeVerxSize
|
shVBO <- setupVBO shapeVerxSize
|
||||||
shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
|
shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
|
||||||
@@ -86,30 +91,17 @@ preloadRender = do
|
|||||||
shVBO
|
shVBO
|
||||||
glVertexArrayElementBuffer (shapeshader ^. shaderVAO . vaoName) (shEBO ^. uiboName)
|
glVertexArrayElementBuffer (shapeshader ^. shaderVAO . vaoName) (shEBO ^. uiboName)
|
||||||
|
|
||||||
--setup silhouette edge VAO
|
|
||||||
-- putStrLn "Setup silhouette VAO, EBO"
|
|
||||||
-- shedgevao <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
|
|
||||||
-- shedgeebo <- setupEBO shedgevao
|
|
||||||
|
|
||||||
putStrLn "Setup wall/windows VBO, VAO, EBO, shader"
|
putStrLn "Setup wall/windows VBO, VAO, EBO, shader"
|
||||||
let wallverxstrd = 8
|
-- winvbo <- setupVBO (floatSize * 8)
|
||||||
wallvbo <- setupVBO (floatSize * wallverxstrd)
|
|
||||||
winvbo <- setupVBO (floatSize * 8)
|
|
||||||
-- wallshader <- makeShaderUsingVBO "wall/basic" [vert, geom, frag] (toFloatVAs [4, 4]) pmPoints wallvbo
|
|
||||||
putStrLn "Setup lighting shaders"
|
putStrLn "Setup lighting shaders"
|
||||||
lightingWallShadShad <-
|
lightingWallShadShad <-
|
||||||
--makeShaderUsingVBO "lighting/wallShadow" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo
|
|
||||||
makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao)
|
makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao)
|
||||||
lightingCapShad <-
|
lightingCapShad <-
|
||||||
--makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
|
|
||||||
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
|
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
|
||||||
lightingLineShadowShad <-
|
lightingLineShadowShad <-
|
||||||
--makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shedgevao
|
|
||||||
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
|
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
|
||||||
|
|
||||||
ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles
|
ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles
|
||||||
(VAO dummyvao)
|
(VAO dummyvao)
|
||||||
-- makeShaderUsingVBO "ceiling/stencil" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo
|
|
||||||
|
|
||||||
putStrLn "Setup 2D shaders"
|
putStrLn "Setup 2D shaders"
|
||||||
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
||||||
@@ -229,19 +221,20 @@ preloadRender = do
|
|||||||
, _fboPos = fboPosName
|
, _fboPos = fboPosName
|
||||||
, _rboBaseBloom = rboBaseBloomName
|
, _rboBaseBloom = rboBaseBloomName
|
||||||
, _matUBO = theUBO
|
, _matUBO = theUBO
|
||||||
, _winSSBO = winssbo
|
-- , _winSSBO = winssbo
|
||||||
, _wallSSBO = wallssbo
|
-- , _wallSSBO = wallssbo
|
||||||
, _shapeSSBO = shapessbo
|
, _shapeSSBO = shapessbo
|
||||||
, _ishapeSSBO = ishapessbo
|
, _ishapeSSBO = ishapessbo
|
||||||
-- , _ieshapeSSBO = ieshapessbo
|
-- , _ieshapeSSBO = ieshapessbo
|
||||||
-- , _lightsUBO = lightsubo
|
-- , _lightsUBO = lightsubo
|
||||||
, _vboWindows = winvbo
|
-- , _vboWindows = winvbo
|
||||||
, _vboShapes = shVBO
|
, _vboShapes = shVBO
|
||||||
, _floorVBO = floorvbo
|
, _floorVBO = floorvbo
|
||||||
, _floorShader = floorshader
|
, _floorShader = floorshader
|
||||||
, _chasmVBO = chasmvbo
|
, _chasmVBO = chasmvbo
|
||||||
, _chasmShader = chasmshader
|
, _chasmShader = chasmshader
|
||||||
, _wallVBO = wallvbo
|
, _wallVBO = wallvbo
|
||||||
|
, _winVBO = winvbo
|
||||||
-- , _wallShader = wallshader
|
-- , _wallShader = wallshader
|
||||||
, _cloudVBO = cloudvbo
|
, _cloudVBO = cloudvbo
|
||||||
, _cloudShader = cloudshader
|
, _cloudShader = cloudshader
|
||||||
|
|||||||
+6
-6
@@ -26,12 +26,12 @@ bufferPokedVBO theVBO numVs =
|
|||||||
(_vboPtr theVBO)
|
(_vboPtr theVBO)
|
||||||
|
|
||||||
bufferEBO :: UintBO -> Int -> IO ()
|
bufferEBO :: UintBO -> Int -> IO ()
|
||||||
bufferEBO ebo numis =
|
bufferEBO x i =
|
||||||
glNamedBufferSubData
|
glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr)
|
||||||
(ebo ^. uiboName)
|
|
||||||
0
|
--bufferFloatBO :: VBO -> Int -> IO ()
|
||||||
(fromIntegral $ gluintSize * numis)
|
--bufferFloatBO x i = undefined
|
||||||
(ebo ^. uiboPtr)
|
-- glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr)
|
||||||
|
|
||||||
bufferShaderLayers :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> IO ()
|
bufferShaderLayers :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> IO ()
|
||||||
bufferShaderLayers shads counts = MV.imapM_ f shads
|
bufferShaderLayers shads counts = MV.imapM_ f shads
|
||||||
|
|||||||
Reference in New Issue
Block a user