Add framebuffers with shared renderbufferobject
This commit is contained in:
+30
-11
@@ -14,6 +14,7 @@ import Data.Preload.Render
|
||||
|
||||
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
|
||||
--import Control.Lens
|
||||
import Control.Monad
|
||||
import Foreign
|
||||
|
||||
preloadRender :: IO RenderData
|
||||
@@ -69,6 +70,9 @@ preloadRender = do
|
||||
(fbo,fboTO,fboRBO) <- setupFramebufferWithStencil
|
||||
framebuf2 <- setupFramebufferWithStencil
|
||||
framebuf3 <- setupFramebufferWithStencil
|
||||
|
||||
frameBufs <- setupFramebuffersSharedStencil 6
|
||||
|
||||
-- reset to default framebuffer, ready for drawing direct to screen
|
||||
bindFramebuffer Framebuffer $= defaultFramebufferObject
|
||||
|
||||
@@ -94,6 +98,7 @@ preloadRender = do
|
||||
, _fboRenderbufferObject = fboRBO
|
||||
, _fbo2 = framebuf2
|
||||
, _fbo3 = framebuf3
|
||||
, _fbos = frameBufs
|
||||
, _matUBO = theUBO
|
||||
}
|
||||
cornerList :: [[Float]]
|
||||
@@ -127,17 +132,31 @@ setupFramebufferWithStencil = do
|
||||
|
||||
return (fboName, fboTO, fboRBO)
|
||||
|
||||
setupFramebuffersSharedStencil :: IO
|
||||
( ( (FramebufferObject, TextureObject)
|
||||
, (FramebufferObject, TextureObject)
|
||||
, (FramebufferObject, TextureObject)
|
||||
, (FramebufferObject, TextureObject)
|
||||
, (FramebufferObject, TextureObject)
|
||||
, (FramebufferObject, TextureObject)
|
||||
)
|
||||
, RenderbufferObject
|
||||
)
|
||||
setupFramebuffersSharedStencil = undefined
|
||||
setupFramebuffersSharedStencil :: Int -> IO ( [(FramebufferObject,TextureObject)] , RenderbufferObject)
|
||||
setupFramebuffersSharedStencil n = do
|
||||
rboName <- genObjectName
|
||||
bindRenderbuffer Renderbuffer $= rboName
|
||||
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize 800 600)
|
||||
fbs <- replicateM n (newFramebufferGivenStencil rboName)
|
||||
return (fbs,rboName)
|
||||
|
||||
newFramebufferGivenStencil
|
||||
:: RenderbufferObject
|
||||
-> IO (FramebufferObject, TextureObject)
|
||||
newFramebufferGivenStencil rboName = do
|
||||
fboName <- genObjectName
|
||||
bindFramebuffer Framebuffer $= fboName
|
||||
toName <- genObjectName
|
||||
textureBinding Texture2D $= Just toName
|
||||
texImage2D Texture2D NoProxy 0 RGBA8 (TextureSize2D 800 600) 0 (PixelData RGBA UnsignedByte nullPtr)
|
||||
textureFilter Texture2D $= ((Linear',Just Linear') , Linear')
|
||||
generateMipmap' Texture2D
|
||||
framebufferTexture2D Framebuffer (ColorAttachment 0) Texture2D toName 0
|
||||
framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer rboName
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
print fboStatus
|
||||
return (fboName,toName)
|
||||
|
||||
|
||||
setupFramebuffer :: IO (FramebufferObject, TextureObject)
|
||||
setupFramebuffer = do
|
||||
|
||||
Reference in New Issue
Block a user