module Preload.Update ( resizeSpareFBO ) where import Preload.Data import Graphics.Rendering.OpenGL import Foreign import Picture.Preload resizeSpareFBO :: Int -- ^ Width -> Int -- ^ Height -> PreloadData a -> IO (PreloadData a) resizeSpareFBO xsize ysize pdata = do -- I am unsure how much of this needs to be bound... let rdata = _renderData pdata fboName = _spareFBO rdata fboTO = _fboTexture rdata fboRBO = _fboRenderbufferObject rdata xsize' = fromIntegral xsize ysize' = fromIntegral ysize bindFramebuffer Framebuffer $= fboName textureBinding Texture2D $= Just fboTO texImage2D Texture2D NoProxy 0 RGBA8 (TextureSize2D xsize' ysize') 0 (PixelData RGBA UnsignedByte nullPtr) textureFilter Texture2D $= ((Linear',Just Linear') , Nearest) generateMipmap' Texture2D framebufferTexture2D Framebuffer (ColorAttachment 0) Texture2D fboTO 0 bindRenderbuffer Renderbuffer $= fboRBO renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize xsize' ysize') framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer fboRBO fboStatus <- framebufferStatus Framebuffer putStrLn $ "after resize, framebuffer status:" ++ show fboStatus return pdata