Draw to fullscreen using one triangle
This commit is contained in:
+20
-10
@@ -174,7 +174,8 @@ doDrawing' win pdata u = do
|
|||||||
glEnable GL_BLEND
|
glEnable GL_BLEND
|
||||||
glBlendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
|
glBlendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
|
||||||
glUseProgram (pdata ^. fullscreenShader)
|
glUseProgram (pdata ^. fullscreenShader)
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
-- no longer need lighting texture
|
-- no longer need lighting texture
|
||||||
with GL_COLOR_ATTACHMENT0 $
|
with GL_COLOR_ATTACHMENT0 $
|
||||||
glInvalidateNamedFramebufferData (pdata ^. fboLighting . _1 . unFBO) 1
|
glInvalidateNamedFramebufferData (pdata ^. fboLighting . _1 . unFBO) 1
|
||||||
@@ -217,7 +218,8 @@ doDrawing' win pdata u = do
|
|||||||
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
|
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
|
||||||
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
|
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
|
||||||
glUseProgram (_bloomBlurShader pdata)
|
glUseProgram (_bloomBlurShader pdata)
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
when (cfig ^. gr_bloom) $ do
|
when (cfig ^. gr_bloom) $ do
|
||||||
replicateM_ 1 $
|
replicateM_ 1 $
|
||||||
pingPongBetween
|
pingPongBetween
|
||||||
@@ -270,7 +272,8 @@ doDrawing' win pdata u = do
|
|||||||
glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _2 . unTO)
|
glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _2 . unTO)
|
||||||
glDepthMask GL_FALSE
|
glDepthMask GL_FALSE
|
||||||
glUseProgram (pdata ^. alphaDivideShader)
|
glUseProgram (pdata ^. alphaDivideShader)
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
----draw lightmap for cloud buffer
|
----draw lightmap for cloud buffer
|
||||||
glDepthMask GL_TRUE
|
glDepthMask GL_TRUE
|
||||||
glDepthFunc GL_LESS
|
glDepthFunc GL_LESS
|
||||||
@@ -327,20 +330,24 @@ doDrawing' win pdata u = do
|
|||||||
glEnable GL_BLEND
|
glEnable GL_BLEND
|
||||||
glBlendFuncSeparate GL_ZERO GL_ONE_MINUS_SRC_COLOR GL_ZERO GL_ONE
|
glBlendFuncSeparate GL_ZERO GL_ONE_MINUS_SRC_COLOR GL_ZERO GL_ONE
|
||||||
glUseProgram (pdata ^. fullscreenShader)
|
glUseProgram (pdata ^. fullscreenShader)
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
-- bind base buffer for drawing clouds and bloom
|
-- bind base buffer for drawing clouds and bloom
|
||||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||||
glUseProgram (pdata ^. fullscreenShader)
|
glUseProgram (pdata ^. fullscreenShader)
|
||||||
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _2 . unTO)
|
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _2 . unTO)
|
||||||
glBlendFunc GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
|
glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
|
||||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _1 . unTO)
|
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _1 . unTO)
|
||||||
glBlendFunc GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
|
|
||||||
--Draw blurred bloom onto base buffer
|
--Draw blurred bloom onto base buffer
|
||||||
glEnable GL_BLEND
|
glEnable GL_BLEND
|
||||||
@@ -348,7 +355,8 @@ doDrawing' win pdata u = do
|
|||||||
--glBlendFunc GL_ONE GL_ONE
|
--glBlendFunc GL_ONE GL_ONE
|
||||||
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
||||||
glUseProgram (pdata ^. fullscreenShader)
|
glUseProgram (pdata ^. fullscreenShader)
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
|
|
||||||
--set viewport for radial distortion
|
--set viewport for radial distortion
|
||||||
--setViewportSize (round winx) (round winy)
|
--setViewportSize (round winx) (round winy)
|
||||||
@@ -361,7 +369,8 @@ doDrawing' win pdata u = do
|
|||||||
glBindTextureUnit 0 $ pdata ^. fboBase . _2 . _1 . unTO
|
glBindTextureUnit 0 $ pdata ^. fboBase . _2 . _1 . unTO
|
||||||
glBindFramebuffer GL_FRAMEBUFFER 0
|
glBindFramebuffer GL_FRAMEBUFFER 0
|
||||||
glUseProgram (pdata ^. fullscreenShader)
|
glUseProgram (pdata ^. fullscreenShader)
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
rs' -> do
|
rs' -> do
|
||||||
let rs = take 15 rs'
|
let rs = take 15 rs'
|
||||||
glBindFramebuffer GL_FRAMEBUFFER 0
|
glBindFramebuffer GL_FRAMEBUFFER 0
|
||||||
@@ -371,7 +380,8 @@ doDrawing' win pdata u = do
|
|||||||
glBindTextureUnit 1 $ pdata ^. fboBase . _2 . _1 . unTO
|
glBindTextureUnit 1 $ pdata ^. fboBase . _2 . _1 . unTO
|
||||||
glUseProgram (pdata ^. barrelShader . _1)
|
glUseProgram (pdata ^. barrelShader . _1)
|
||||||
glUniform1i 0 (fromIntegral (length rs))
|
glUniform1i 0 (fromIntegral (length rs))
|
||||||
glDrawArrays GL_TRIANGLES 0 6
|
--glDrawArrays GL_TRIANGLES 0 6
|
||||||
|
glDrawArrays GL_TRIANGLES 0 3
|
||||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
-- draw the overlay
|
-- draw the overlay
|
||||||
glDepthFunc GL_ALWAYS
|
glDepthFunc GL_ALWAYS
|
||||||
|
|||||||
+11
-1
@@ -42,7 +42,8 @@ preloadRender = do
|
|||||||
glBindBufferBase GL_UNIFORM_BUFFER 1 lightubo
|
glBindBufferBase GL_UNIFORM_BUFFER 1 lightubo
|
||||||
|
|
||||||
fulltexbo <- mglCreate glCreateBuffers
|
fulltexbo <- mglCreate glCreateBuffers
|
||||||
let ftsize = fromIntegral $ sizeOf (0::Float) * 6 * 4
|
--let ftsize = fromIntegral $ sizeOf (0::Float) * 6 * 4
|
||||||
|
let ftsize = fromIntegral $ sizeOf (0::Float) * 3 * 4
|
||||||
withArray cornerList $ \ptr ->
|
withArray cornerList $ \ptr ->
|
||||||
glNamedBufferStorage fulltexbo ftsize ptr 0
|
glNamedBufferStorage fulltexbo ftsize ptr 0
|
||||||
glBindBufferBase GL_UNIFORM_BUFFER 2 fulltexbo
|
glBindBufferBase GL_UNIFORM_BUFFER 2 fulltexbo
|
||||||
@@ -226,6 +227,15 @@ preloadRender = do
|
|||||||
--------------------end preloadRender
|
--------------------end preloadRender
|
||||||
cornerList :: [Float]
|
cornerList :: [Float]
|
||||||
cornerList = concat
|
cornerList = concat
|
||||||
|
[ bl, br, tl
|
||||||
|
]
|
||||||
|
where
|
||||||
|
bl = [-1, -1, 0, 0]
|
||||||
|
br = [ 3, -1, 2, 0]
|
||||||
|
tl = [-1, 3, 0, 2]
|
||||||
|
|
||||||
|
cornerList' :: [Float]
|
||||||
|
cornerList' = concat
|
||||||
[ bl, br, tl
|
[ bl, br, tl
|
||||||
, tl, br, tr
|
, tl, br, tr
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user