Use immutable storage for fullscreen vbo
This commit is contained in:
+22
-11
@@ -136,18 +136,28 @@ preloadRender = do
|
||||
-- this should really be a 2d texture array
|
||||
basicTweakZShad <- makeShader "dualTwoD/basicTweakZ" [vert, frag] [4, 4] ETriangles
|
||||
-- texture shaders, no textures attached
|
||||
fsShad <- makeShaderSized "texture/simple" [vert, frag] [2, 2] 4 ETriangleStrip
|
||||
-- note we directly poke the shader vertex data here
|
||||
-- could possibly use an indirect draw call
|
||||
pokeArray (shadVBOptr fsShad) $ concat cornerList
|
||||
|
||||
let fsshadvao = fsShad ^. _1 . shadVAO
|
||||
screentexturevbo <- mglCreate glCreateBuffers
|
||||
withArray (concat cornerList) $ \ptr ->
|
||||
glNamedBufferStorage
|
||||
screentexturevbo
|
||||
(fromIntegral $ floatSize * length (concat cornerList))
|
||||
ptr
|
||||
0
|
||||
screentexturevao <- setupVAOvbo' [2,2] 4 screentexturevbo
|
||||
|
||||
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] ETriangleStrip fsshadvao
|
||||
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] ETriangleStrip fsshadvao
|
||||
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] ETriangleStrip fsshadvao
|
||||
-- fsShad <- makeShaderSized "texture/simple" [vert, frag] [2, 2] 4 ETriangleStrip
|
||||
-- -- note we directly poke the shader vertex data here
|
||||
-- -- could possibly use an indirect draw call
|
||||
-- pokeArray (shadVBOptr fsShad) $ concat cornerList
|
||||
|
||||
fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] ETriangleStrip screentexturevao
|
||||
|
||||
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] ETriangleStrip screentexturevao
|
||||
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] ETriangleStrip screentexturevao
|
||||
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] ETriangleStrip screentexturevao
|
||||
lightingTextureShad <-
|
||||
makeShaderUsingVAO "lighting/texture" [vert, frag] ETriangleStrip fsshadvao
|
||||
makeShaderUsingVAO "lighting/texture" [vert, frag] ETriangleStrip screentexturevao
|
||||
barrelShad <- makeShader "texture/barrel" [vert, geom, frag] [2, 2, 2, 1] EPoints
|
||||
-- blank wallShader
|
||||
wallBlankShad <- makeShaderUsingVAO "wall/blank" [vert, geom, frag] EPoints wpColVAO
|
||||
@@ -168,8 +178,8 @@ preloadRender = do
|
||||
(cloudshader, cloudebo)
|
||||
<- makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes (sum cloudverxsizes)
|
||||
GL_TRIANGLES cloudvbo
|
||||
-- bind fixed vertex data
|
||||
bufferPokedVBO (snd fsShad) 4
|
||||
-- -- bind fixed vertex data
|
||||
-- bufferPokedVBO (snd fsShad) 4
|
||||
framebuf2 <- setupTextureFramebuffer 800 600
|
||||
framebuf3 <- setupTextureFramebuffer 800 600
|
||||
|
||||
@@ -259,6 +269,7 @@ preloadRender = do
|
||||
, _cloudVBO = cloudvbo
|
||||
, _cloudShader = cloudshader
|
||||
, _cloudEBO = cloudebo
|
||||
, _screenTextureVAO = screentexturevao
|
||||
}
|
||||
|
||||
--------------------end preloadRender
|
||||
|
||||
@@ -52,5 +52,5 @@ renderDataResizeUpdate xsize ysize xfull yfull rdata = do
|
||||
"bloomBlur"
|
||||
[(vert, bbVert), (frag, bbFrag')]
|
||||
ETriangleStrip
|
||||
(rdata ^. fullscreenShader . _1 . shadVAO)
|
||||
(rdata ^. screenTextureVAO)
|
||||
return (rdata'{_bloomBlurShader = bbShad})
|
||||
|
||||
Reference in New Issue
Block a user