-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.EXT.FramebufferObject (
  -- * Extension Support
    gl_EXT_framebuffer_object

  -- * GL_EXT_framebuffer_object
  , glBindFramebufferEXT
  , glBindRenderbufferEXT
  , glCheckFramebufferStatusEXT
  , glDeleteFramebuffersEXT
  , glDeleteRenderbuffersEXT
  , glFramebufferRenderbufferEXT
  , glFramebufferTexture1DEXT
  , glFramebufferTexture2DEXT
  , glFramebufferTexture3DEXT
  , glGenFramebuffersEXT
  , glGenRenderbuffersEXT
  , glGenerateMipmapEXT
  , glGetFramebufferAttachmentParameterivEXT
  , glGetRenderbufferParameterivEXT
  , glIsFramebufferEXT
  , glIsRenderbufferEXT
  , glRenderbufferStorageEXT
  , pattern GL_COLOR_ATTACHMENT0_EXT
  , pattern GL_COLOR_ATTACHMENT10_EXT
  , pattern GL_COLOR_ATTACHMENT11_EXT
  , pattern GL_COLOR_ATTACHMENT12_EXT
  , pattern GL_COLOR_ATTACHMENT13_EXT
  , pattern GL_COLOR_ATTACHMENT14_EXT
  , pattern GL_COLOR_ATTACHMENT15_EXT
  , pattern GL_COLOR_ATTACHMENT1_EXT
  , pattern GL_COLOR_ATTACHMENT2_EXT
  , pattern GL_COLOR_ATTACHMENT3_EXT
  , pattern GL_COLOR_ATTACHMENT4_EXT
  , pattern GL_COLOR_ATTACHMENT5_EXT
  , pattern GL_COLOR_ATTACHMENT6_EXT
  , pattern GL_COLOR_ATTACHMENT7_EXT
  , pattern GL_COLOR_ATTACHMENT8_EXT
  , pattern GL_COLOR_ATTACHMENT9_EXT
  , pattern GL_DEPTH_ATTACHMENT_EXT
  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT
  , pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT
  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT
  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT
  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT
  , pattern GL_FRAMEBUFFER_BINDING_EXT
  , pattern GL_FRAMEBUFFER_COMPLETE_EXT
  , pattern GL_FRAMEBUFFER_EXT
  , pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT
  , pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
  , pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
  , pattern GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT
  , pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT
  , pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT
  , pattern GL_FRAMEBUFFER_UNSUPPORTED_EXT
  , pattern GL_INVALID_FRAMEBUFFER_OPERATION_EXT
  , pattern GL_MAX_COLOR_ATTACHMENTS_EXT
  , pattern GL_MAX_RENDERBUFFER_SIZE_EXT
  , pattern GL_RENDERBUFFER_ALPHA_SIZE_EXT
  , pattern GL_RENDERBUFFER_BINDING_EXT
  , pattern GL_RENDERBUFFER_BLUE_SIZE_EXT
  , pattern GL_RENDERBUFFER_DEPTH_SIZE_EXT
  , pattern GL_RENDERBUFFER_EXT
  , pattern GL_RENDERBUFFER_GREEN_SIZE_EXT
  , pattern GL_RENDERBUFFER_HEIGHT_EXT
  , pattern GL_RENDERBUFFER_INTERNAL_FORMAT_EXT
  , pattern GL_RENDERBUFFER_RED_SIZE_EXT
  , pattern GL_RENDERBUFFER_STENCIL_SIZE_EXT
  , pattern GL_RENDERBUFFER_WIDTH_EXT
  , pattern GL_STENCIL_ATTACHMENT_EXT
  , pattern GL_STENCIL_INDEX16_EXT
  , pattern GL_STENCIL_INDEX1_EXT
  , pattern GL_STENCIL_INDEX4_EXT
  , pattern GL_STENCIL_INDEX8_EXT
) where

import Control.Monad.IO.Class
import Data.Set
import Foreign.Ptr
import Graphics.GL.Raw.Internal.FFI
import Graphics.GL.Raw.Internal.Proc
import Graphics.GL.Raw.Internal.Shared
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_EXT_framebuffer_object :: Bool
gl_EXT_framebuffer_object = member "GL_EXT_framebuffer_object" extensions

glBindFramebufferEXT :: MonadIO m => GLenum -> GLuint -> m ()
glBindFramebufferEXT = ffienumuintIOV glBindFramebufferEXTFunPtr

glBindFramebufferEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindFramebufferEXTFunPtr = unsafePerformIO (getProcAddress "glBindFramebufferEXT")

{-# NOINLINE glBindFramebufferEXTFunPtr #-}

glBindRenderbufferEXT :: MonadIO m => GLenum -> GLuint -> m ()
glBindRenderbufferEXT = ffienumuintIOV glBindRenderbufferEXTFunPtr

glBindRenderbufferEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glBindRenderbufferEXT")

{-# NOINLINE glBindRenderbufferEXTFunPtr #-}

glCheckFramebufferStatusEXT :: MonadIO m => GLenum -> m GLenum
glCheckFramebufferStatusEXT = ffienumIOenum glCheckFramebufferStatusEXTFunPtr

glCheckFramebufferStatusEXTFunPtr :: FunPtr (GLenum -> IO GLenum)
glCheckFramebufferStatusEXTFunPtr = unsafePerformIO (getProcAddress "glCheckFramebufferStatusEXT")

{-# NOINLINE glCheckFramebufferStatusEXTFunPtr #-}

glDeleteFramebuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteFramebuffersEXT = ffisizeiPtruintIOV glDeleteFramebuffersEXTFunPtr

glDeleteFramebuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteFramebuffersEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteFramebuffersEXT")

{-# NOINLINE glDeleteFramebuffersEXTFunPtr #-}

glDeleteRenderbuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteRenderbuffersEXT = ffisizeiPtruintIOV glDeleteRenderbuffersEXTFunPtr

glDeleteRenderbuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteRenderbuffersEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteRenderbuffersEXT")

{-# NOINLINE glDeleteRenderbuffersEXTFunPtr #-}

glFramebufferRenderbufferEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> m ()
glFramebufferRenderbufferEXT = ffienumenumenumuintIOV glFramebufferRenderbufferEXTFunPtr

glFramebufferRenderbufferEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ())
glFramebufferRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferRenderbufferEXT")

{-# NOINLINE glFramebufferRenderbufferEXTFunPtr #-}

glFramebufferTexture1DEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTexture1DEXT = ffienumenumenumuintintIOV glFramebufferTexture1DEXTFunPtr

glFramebufferTexture1DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTexture1DEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture1DEXT")

{-# NOINLINE glFramebufferTexture1DEXTFunPtr #-}

glFramebufferTexture2DEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTexture2DEXT = ffienumenumenumuintintIOV glFramebufferTexture2DEXTFunPtr

glFramebufferTexture2DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTexture2DEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2DEXT")

{-# NOINLINE glFramebufferTexture2DEXTFunPtr #-}

glFramebufferTexture3DEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
glFramebufferTexture3DEXT = ffienumenumenumuintintintIOV glFramebufferTexture3DEXTFunPtr

glFramebufferTexture3DEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glFramebufferTexture3DEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture3DEXT")

{-# NOINLINE glFramebufferTexture3DEXTFunPtr #-}

glGenFramebuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenFramebuffersEXT = ffisizeiPtruintIOV glGenFramebuffersEXTFunPtr

glGenFramebuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenFramebuffersEXTFunPtr = unsafePerformIO (getProcAddress "glGenFramebuffersEXT")

{-# NOINLINE glGenFramebuffersEXTFunPtr #-}

glGenRenderbuffersEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenRenderbuffersEXT = ffisizeiPtruintIOV glGenRenderbuffersEXTFunPtr

glGenRenderbuffersEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenRenderbuffersEXTFunPtr = unsafePerformIO (getProcAddress "glGenRenderbuffersEXT")

{-# NOINLINE glGenRenderbuffersEXTFunPtr #-}

glGenerateMipmapEXT :: MonadIO m => GLenum -> m ()
glGenerateMipmapEXT = ffienumIOV glGenerateMipmapEXTFunPtr

glGenerateMipmapEXTFunPtr :: FunPtr (GLenum -> IO ())
glGenerateMipmapEXTFunPtr = unsafePerformIO (getProcAddress "glGenerateMipmapEXT")

{-# NOINLINE glGenerateMipmapEXTFunPtr #-}

glGetFramebufferAttachmentParameterivEXT :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetFramebufferAttachmentParameterivEXT = ffienumenumenumPtrintIOV glGetFramebufferAttachmentParameterivEXTFunPtr

glGetFramebufferAttachmentParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetFramebufferAttachmentParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferAttachmentParameterivEXT")

{-# NOINLINE glGetFramebufferAttachmentParameterivEXTFunPtr #-}

glGetRenderbufferParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetRenderbufferParameterivEXT = ffienumenumPtrintIOV glGetRenderbufferParameterivEXTFunPtr

glGetRenderbufferParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetRenderbufferParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetRenderbufferParameterivEXT")

{-# NOINLINE glGetRenderbufferParameterivEXTFunPtr #-}

glIsFramebufferEXT :: MonadIO m => GLuint -> m GLboolean
glIsFramebufferEXT = ffiuintIOboolean glIsFramebufferEXTFunPtr

glIsFramebufferEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsFramebufferEXTFunPtr = unsafePerformIO (getProcAddress "glIsFramebufferEXT")

{-# NOINLINE glIsFramebufferEXTFunPtr #-}

glIsRenderbufferEXT :: MonadIO m => GLuint -> m GLboolean
glIsRenderbufferEXT = ffiuintIOboolean glIsRenderbufferEXTFunPtr

glIsRenderbufferEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsRenderbufferEXTFunPtr = unsafePerformIO (getProcAddress "glIsRenderbufferEXT")

{-# NOINLINE glIsRenderbufferEXTFunPtr #-}

glRenderbufferStorageEXT :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
glRenderbufferStorageEXT = ffienumenumsizeisizeiIOV glRenderbufferStorageEXTFunPtr

glRenderbufferStorageEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> IO ())
glRenderbufferStorageEXTFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageEXT")

{-# NOINLINE glRenderbufferStorageEXTFunPtr #-}

pattern GL_DEPTH_ATTACHMENT_EXT = 0x8D00 :: GLenum

pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1 :: GLenum

pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0 :: GLenum

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4 :: GLenum

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3 :: GLenum

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2 :: GLenum

pattern GL_FRAMEBUFFER_BINDING_EXT = 0x8CA6 :: GLenum

pattern GL_FRAMEBUFFER_COMPLETE_EXT = 0x8CD5 :: GLenum

pattern GL_FRAMEBUFFER_EXT = 0x8D40 :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6 :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9 :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7 :: GLenum

pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC :: GLenum

pattern GL_FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD :: GLenum

pattern GL_INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506 :: GLenum

pattern GL_MAX_RENDERBUFFER_SIZE_EXT = 0x84E8 :: GLenum

pattern GL_RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53 :: GLenum

pattern GL_RENDERBUFFER_BINDING_EXT = 0x8CA7 :: GLenum

pattern GL_RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52 :: GLenum

pattern GL_RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54 :: GLenum

pattern GL_RENDERBUFFER_EXT = 0x8D41 :: GLenum

pattern GL_RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51 :: GLenum

pattern GL_RENDERBUFFER_HEIGHT_EXT = 0x8D43 :: GLenum

pattern GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44 :: GLenum

pattern GL_RENDERBUFFER_RED_SIZE_EXT = 0x8D50 :: GLenum

pattern GL_RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55 :: GLenum

pattern GL_RENDERBUFFER_WIDTH_EXT = 0x8D42 :: GLenum

pattern GL_STENCIL_ATTACHMENT_EXT = 0x8D20 :: GLenum

pattern GL_STENCIL_INDEX16_EXT = 0x8D49 :: GLenum

pattern GL_STENCIL_INDEX1_EXT = 0x8D46 :: GLenum

pattern GL_STENCIL_INDEX4_EXT = 0x8D47 :: GLenum

pattern GL_STENCIL_INDEX8_EXT = 0x8D48 :: GLenum