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

  -- * GL_EXT_texture_object
  , glAreTexturesResidentEXT
  , glBindTextureEXT
  , glDeleteTexturesEXT
  , glGenTexturesEXT
  , glIsTextureEXT
  , glPrioritizeTexturesEXT
  , pattern GL_TEXTURE_1D_BINDING_EXT
  , pattern GL_TEXTURE_2D_BINDING_EXT
  , pattern GL_TEXTURE_3D_BINDING_EXT
  , pattern GL_TEXTURE_PRIORITY_EXT
  , pattern GL_TEXTURE_RESIDENT_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.Types
import System.IO.Unsafe

gl_EXT_texture_object :: Bool
gl_EXT_texture_object = member "GL_EXT_texture_object" extensions

glAreTexturesResidentEXT :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLboolean -> m GLboolean
glAreTexturesResidentEXT = ffisizeiPtruintPtrbooleanIOboolean glAreTexturesResidentEXTFunPtr

glAreTexturesResidentEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean)
glAreTexturesResidentEXTFunPtr = unsafePerformIO (getProcAddress "glAreTexturesResidentEXT")

{-# NOINLINE glAreTexturesResidentEXTFunPtr #-}

glBindTextureEXT :: MonadIO m => GLenum -> GLuint -> m ()
glBindTextureEXT = ffienumuintIOV glBindTextureEXTFunPtr

glBindTextureEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindTextureEXTFunPtr = unsafePerformIO (getProcAddress "glBindTextureEXT")

{-# NOINLINE glBindTextureEXTFunPtr #-}

glDeleteTexturesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteTexturesEXT = ffisizeiPtruintIOV glDeleteTexturesEXTFunPtr

glDeleteTexturesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteTexturesEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteTexturesEXT")

{-# NOINLINE glDeleteTexturesEXTFunPtr #-}

glGenTexturesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenTexturesEXT = ffisizeiPtruintIOV glGenTexturesEXTFunPtr

glGenTexturesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenTexturesEXTFunPtr = unsafePerformIO (getProcAddress "glGenTexturesEXT")

{-# NOINLINE glGenTexturesEXTFunPtr #-}

glIsTextureEXT :: MonadIO m => GLuint -> m GLboolean
glIsTextureEXT = ffiuintIOboolean glIsTextureEXTFunPtr

glIsTextureEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsTextureEXTFunPtr = unsafePerformIO (getProcAddress "glIsTextureEXT")

{-# NOINLINE glIsTextureEXTFunPtr #-}

glPrioritizeTexturesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLclampf -> m ()
glPrioritizeTexturesEXT = ffisizeiPtruintPtrclampfIOV glPrioritizeTexturesEXTFunPtr

glPrioritizeTexturesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLclampf -> IO ())
glPrioritizeTexturesEXTFunPtr = unsafePerformIO (getProcAddress "glPrioritizeTexturesEXT")

{-# NOINLINE glPrioritizeTexturesEXTFunPtr #-}

pattern GL_TEXTURE_1D_BINDING_EXT = 0x8068

pattern GL_TEXTURE_2D_BINDING_EXT = 0x8069

pattern GL_TEXTURE_3D_BINDING_EXT = 0x806A

pattern GL_TEXTURE_PRIORITY_EXT = 0x8066

pattern GL_TEXTURE_RESIDENT_EXT = 0x8067