Move texture objects to openglraw
This commit is contained in:
+30
-22
@@ -6,6 +6,7 @@ module Framebuffer.Setup (
|
||||
setupShadowFramebuffer,
|
||||
) where
|
||||
|
||||
import Unsafe.Coerce
|
||||
import Data.Preload.Render
|
||||
import GLHelp
|
||||
import Graphics.GL.Core45
|
||||
@@ -14,68 +15,75 @@ import Graphics.Rendering.OpenGL hiding (Point, imageHeight, scale, translate)
|
||||
setupTextureFramebuffer ::
|
||||
GLsizei ->
|
||||
GLsizei ->
|
||||
IO (FBO, TextureObject)
|
||||
IO (FBO, TO)
|
||||
{-# INLINE setupTextureFramebuffer #-}
|
||||
setupTextureFramebuffer x y = do
|
||||
--fboName <- genObjectName
|
||||
--bindFramebuffer Framebuffer $= fboName
|
||||
fboName <- mglCreateSingle glCreateFramebuffers
|
||||
fboTO <- genObjectName
|
||||
textureBinding Texture2D $= Just fboTO
|
||||
glTexStorage2D GL_TEXTURE_2D 1 GL_RGBA8 x y
|
||||
textureFilter Texture2D $= minMagFilter
|
||||
fboName <- mglCreate glCreateFramebuffers
|
||||
--fboTO <- genObjectName
|
||||
to <- mglCreate (glCreateTextures GL_TEXTURE_2D)
|
||||
--textureBinding Texture2D $= Just fboTO
|
||||
--glTexStorage2D GL_TEXTURE_2D 1 GL_RGBA8 x y
|
||||
glTextureStorage2D to 1 GL_RGBA8 x y
|
||||
glTextureParameteri to GL_TEXTURE_MIN_FILTER (unsafeCoerce GL_NEAREST)
|
||||
glTextureParameteri to GL_TEXTURE_MAG_FILTER (unsafeCoerce GL_NEAREST)
|
||||
--textureFilter Texture2D $= minMagFilter
|
||||
--framebufferTexture2D Framebuffer (ColorAttachment 0) Texture2D fboTO 0
|
||||
glNamedFramebufferTexture fboName GL_COLOR_ATTACHMENT0 (unTexture fboTO) 0
|
||||
glNamedFramebufferTexture fboName GL_COLOR_ATTACHMENT0 to 0
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
case fboStatus of
|
||||
Complete -> return ()
|
||||
_ -> putStrLn $ "Texture framebuffer status: " ++ show fboStatus
|
||||
return (FBO fboName, fboTO)
|
||||
return (FBO fboName, TO to)
|
||||
|
||||
setupShadowFramebuffer :: IO (FBO, (TextureObject, TextureObject))
|
||||
setupShadowFramebuffer :: IO (FBO, (TO, TO))
|
||||
setupShadowFramebuffer = do
|
||||
--fboName <- genObjectName
|
||||
--bindFramebuffer Framebuffer $= fboName
|
||||
fboName <- mglCreateSingle glCreateFramebuffers
|
||||
toName <- genObjectName
|
||||
toName2 <- genObjectName
|
||||
fboName <- mglCreate glCreateFramebuffers
|
||||
to1 <- mglCreate (glCreateTextures GL_TEXTURE_2D_ARRAY)
|
||||
to2 <- mglCreate (glCreateTextures GL_TEXTURE_2D_ARRAY)
|
||||
--textureBinding Texture2DArray $= Just toName
|
||||
--framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer rboName
|
||||
return (FBO fboName, (toName, toName2))
|
||||
return (FBO fboName, (TO to1,TO to2))
|
||||
|
||||
setupFramebufferGivenStencil ::
|
||||
GLuint -> -- RenderbufferObject
|
||||
IO (FBO, TextureObject)
|
||||
IO (FBO, TO)
|
||||
{-# INLINE setupFramebufferGivenStencil #-}
|
||||
setupFramebufferGivenStencil rboName = do
|
||||
--fboName <- genObjectName
|
||||
--bindFramebuffer Framebuffer $= fboName
|
||||
fboName <- mglCreateSingle glCreateFramebuffers
|
||||
toName <- genObjectName
|
||||
fboName <- mglCreate glCreateFramebuffers
|
||||
--toName <- genObjectName
|
||||
to1 <- mglCreate (glCreateTextures GL_TEXTURE_2D)
|
||||
--framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer rboName
|
||||
glNamedFramebufferRenderbuffer fboName GL_DEPTH_STENCIL_ATTACHMENT GL_RENDERBUFFER rboName
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
case fboStatus of
|
||||
Complete -> return ()
|
||||
_ -> putStrLn $ "Framebuffer with given stencil status: " ++ show fboStatus
|
||||
return (FBO fboName, toName)
|
||||
return (FBO fboName, TO to1)
|
||||
|
||||
setupFramebuffer2GivenStencil ::
|
||||
GLuint -> -- RenderbufferObject
|
||||
IO (FBO, (TextureObject, TextureObject))
|
||||
IO (FBO, (TO, TO))
|
||||
setupFramebuffer2GivenStencil rboName = do
|
||||
--fboName <- genObjectName
|
||||
--bindFramebuffer Framebuffer $= fboName
|
||||
fboName <- mglCreateSingle glCreateFramebuffers
|
||||
toName <- genObjectName
|
||||
toName2 <- genObjectName
|
||||
fboName <- mglCreate glCreateFramebuffers
|
||||
-- toName <- genObjectName
|
||||
-- toName2 <- genObjectName
|
||||
to1 <- mglCreate (glCreateTextures GL_TEXTURE_2D)
|
||||
to2 <- mglCreate (glCreateTextures GL_TEXTURE_2D)
|
||||
--framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer rboName
|
||||
glNamedFramebufferRenderbuffer fboName GL_DEPTH_STENCIL_ATTACHMENT GL_RENDERBUFFER rboName
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
case fboStatus of
|
||||
Complete -> return ()
|
||||
_ -> putStrLn $ "Framebuffer with given stencil and two texture objects status: " ++ show fboStatus
|
||||
return (FBO fboName, (toName, toName2))
|
||||
return (FBO fboName, (TO to1, TO to2))
|
||||
|
||||
minMagFilter :: ((TextureFilter, Maybe TextureFilter), TextureFilter)
|
||||
minMagFilter = ((Nearest, Nothing), Nearest)
|
||||
|
||||
Reference in New Issue
Block a user