-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.ARB.TextureBufferObject (
  -- * Extension Support
    gl_ARB_texture_buffer_object

  -- * GL_ARB_texture_buffer_object
  , glTexBufferARB
  , pattern GL_MAX_TEXTURE_BUFFER_SIZE_ARB
  , pattern GL_TEXTURE_BINDING_BUFFER_ARB
  , pattern GL_TEXTURE_BUFFER_ARB
  , pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB
  , pattern GL_TEXTURE_BUFFER_FORMAT_ARB
) 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.Types
import System.IO.Unsafe

gl_ARB_texture_buffer_object :: Bool
gl_ARB_texture_buffer_object = member "GL_ARB_texture_buffer_object" extensions

glTexBufferARB :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glTexBufferARB = ffienumenumuintIOV glTexBufferARBFunPtr

glTexBufferARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glTexBufferARBFunPtr = unsafePerformIO (getProcAddress "glTexBufferARB")

{-# NOINLINE glTexBufferARBFunPtr #-}

pattern GL_MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B :: GLenum

pattern GL_TEXTURE_BINDING_BUFFER_ARB = 0x8C2C :: GLenum

pattern GL_TEXTURE_BUFFER_ARB = 0x8C2A :: GLenum

pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D :: GLenum

pattern GL_TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E :: GLenum