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