-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Internal.Shared where

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

-- | Usage: @'glGetUniformi64vNV' program location params@
--
-- The length of @params@ should be @COMPSIZE(program,location)@.


glGetUniformi64vNV :: MonadIO m => GLuint -> GLint -> Ptr GLint64EXT -> m ()
glGetUniformi64vNV = ffiuintintPtrint64EXTIOV glGetUniformi64vNVFunPtr

glGetUniformi64vNVFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLint64EXT -> IO ())
glGetUniformi64vNVFunPtr = unsafePerformIO (getProcAddress "glGetUniformi64vNV")

{-# NOINLINE glGetUniformi64vNVFunPtr #-}

-- | Usage: @'glGetUniformui64vNV' program location params@
--
-- The length of @params@ should be @COMPSIZE(program,location)@.


glGetUniformui64vNV :: MonadIO m => GLuint -> GLint -> Ptr GLuint64EXT -> m ()
glGetUniformui64vNV = ffiuintintPtruint64EXTIOV glGetUniformui64vNVFunPtr

glGetUniformui64vNVFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint64EXT -> IO ())
glGetUniformui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetUniformui64vNV")

{-# NOINLINE glGetUniformui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform1i64NV' program location x@


glProgramUniform1i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> m ()
glProgramUniform1i64NV = ffiuintintint64EXTIOV glProgramUniform1i64NVFunPtr

glProgramUniform1i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> IO ())
glProgramUniform1i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i64NV")

{-# NOINLINE glProgramUniform1i64NVFunPtr #-}

-- | Usage: @'glProgramUniform1i64vNV' program location count value@
--
-- The length of @value@ should be @count@.


glProgramUniform1i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform1i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform1i64vNVFunPtr

glProgramUniform1i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform1i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i64vNV")

{-# NOINLINE glProgramUniform1i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform1ui64NV' program location x@


glProgramUniform1ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> m ()
glProgramUniform1ui64NV = ffiuintintuint64EXTIOV glProgramUniform1ui64NVFunPtr

glProgramUniform1ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ())
glProgramUniform1ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui64NV")

{-# NOINLINE glProgramUniform1ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform1ui64vNV' program location count value@
--
-- The length of @value@ should be @count@.


glProgramUniform1ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform1ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform1ui64vNVFunPtr

glProgramUniform1ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform1ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui64vNV")

{-# NOINLINE glProgramUniform1ui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform2i64NV' program location x y@


glProgramUniform2i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> GLint64EXT -> m ()
glProgramUniform2i64NV = ffiuintintint64EXTint64EXTIOV glProgramUniform2i64NVFunPtr

glProgramUniform2i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> IO ())
glProgramUniform2i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i64NV")

{-# NOINLINE glProgramUniform2i64NVFunPtr #-}

-- | Usage: @'glProgramUniform2i64vNV' program location count value@
--
-- The length of @value@ should be @count*2@.


glProgramUniform2i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform2i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform2i64vNVFunPtr

glProgramUniform2i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform2i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i64vNV")

{-# NOINLINE glProgramUniform2i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform2ui64NV' program location x y@


glProgramUniform2ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> m ()
glProgramUniform2ui64NV = ffiuintintuint64EXTuint64EXTIOV glProgramUniform2ui64NVFunPtr

glProgramUniform2ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ())
glProgramUniform2ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui64NV")

{-# NOINLINE glProgramUniform2ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform2ui64vNV' program location count value@
--
-- The length of @value@ should be @count*2@.


glProgramUniform2ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform2ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform2ui64vNVFunPtr

glProgramUniform2ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform2ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui64vNV")

{-# NOINLINE glProgramUniform2ui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform3i64NV' program location x y z@


glProgramUniform3i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glProgramUniform3i64NV = ffiuintintint64EXTint64EXTint64EXTIOV glProgramUniform3i64NVFunPtr

glProgramUniform3i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glProgramUniform3i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i64NV")

{-# NOINLINE glProgramUniform3i64NVFunPtr #-}

-- | Usage: @'glProgramUniform3i64vNV' program location count value@
--
-- The length of @value@ should be @count*3@.


glProgramUniform3i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform3i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform3i64vNVFunPtr

glProgramUniform3i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform3i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i64vNV")

{-# NOINLINE glProgramUniform3i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform3ui64NV' program location x y z@


glProgramUniform3ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glProgramUniform3ui64NV = ffiuintintuint64EXTuint64EXTuint64EXTIOV glProgramUniform3ui64NVFunPtr

glProgramUniform3ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glProgramUniform3ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui64NV")

{-# NOINLINE glProgramUniform3ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform3ui64vNV' program location count value@
--
-- The length of @value@ should be @count*3@.


glProgramUniform3ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform3ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform3ui64vNVFunPtr

glProgramUniform3ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform3ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui64vNV")

{-# NOINLINE glProgramUniform3ui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform4i64NV' program location x y z w@


glProgramUniform4i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glProgramUniform4i64NV = ffiuintintint64EXTint64EXTint64EXTint64EXTIOV glProgramUniform4i64NVFunPtr

glProgramUniform4i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glProgramUniform4i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i64NV")

{-# NOINLINE glProgramUniform4i64NVFunPtr #-}

-- | Usage: @'glProgramUniform4i64vNV' program location count value@
--
-- The length of @value@ should be @count*4@.


glProgramUniform4i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform4i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform4i64vNVFunPtr

glProgramUniform4i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform4i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i64vNV")

{-# NOINLINE glProgramUniform4i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform4ui64NV' program location x y z w@


glProgramUniform4ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glProgramUniform4ui64NV = ffiuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV glProgramUniform4ui64NVFunPtr

glProgramUniform4ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glProgramUniform4ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui64NV")

{-# NOINLINE glProgramUniform4ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform4ui64vNV' program location count value@
--
-- The length of @value@ should be @count*4@.


glProgramUniform4ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform4ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform4ui64vNVFunPtr

glProgramUniform4ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform4ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui64vNV")

{-# NOINLINE glProgramUniform4ui64vNVFunPtr #-}

-- | Usage: @'glUniform1i64NV' location x@


glUniform1i64NV :: MonadIO m => GLint -> GLint64EXT -> m ()
glUniform1i64NV = ffiintint64EXTIOV glUniform1i64NVFunPtr

glUniform1i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> IO ())
glUniform1i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform1i64NV")

{-# NOINLINE glUniform1i64NVFunPtr #-}

-- | Usage: @'glUniform1i64vNV' location count value@
--
-- The length of @value@ should be @count*1@.


glUniform1i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform1i64vNV = ffiintsizeiPtrint64EXTIOV glUniform1i64vNVFunPtr

glUniform1i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform1i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform1i64vNV")

{-# NOINLINE glUniform1i64vNVFunPtr #-}

-- | Usage: @'glUniform1ui64NV' location x@


glUniform1ui64NV :: MonadIO m => GLint -> GLuint64EXT -> m ()
glUniform1ui64NV = ffiintuint64EXTIOV glUniform1ui64NVFunPtr

glUniform1ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> IO ())
glUniform1ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform1ui64NV")

{-# NOINLINE glUniform1ui64NVFunPtr #-}

-- | Usage: @'glUniform1ui64vNV' location count value@
--
-- The length of @value@ should be @count*1@.


glUniform1ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform1ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform1ui64vNVFunPtr

glUniform1ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform1ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform1ui64vNV")

{-# NOINLINE glUniform1ui64vNVFunPtr #-}

-- | Usage: @'glUniform2i64NV' location x y@


glUniform2i64NV :: MonadIO m => GLint -> GLint64EXT -> GLint64EXT -> m ()
glUniform2i64NV = ffiintint64EXTint64EXTIOV glUniform2i64NVFunPtr

glUniform2i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> IO ())
glUniform2i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform2i64NV")

{-# NOINLINE glUniform2i64NVFunPtr #-}

-- | Usage: @'glUniform2i64vNV' location count value@
--
-- The length of @value@ should be @count*2@.


glUniform2i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform2i64vNV = ffiintsizeiPtrint64EXTIOV glUniform2i64vNVFunPtr

glUniform2i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform2i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform2i64vNV")

{-# NOINLINE glUniform2i64vNVFunPtr #-}

-- | Usage: @'glUniform2ui64NV' location x y@


glUniform2ui64NV :: MonadIO m => GLint -> GLuint64EXT -> GLuint64EXT -> m ()
glUniform2ui64NV = ffiintuint64EXTuint64EXTIOV glUniform2ui64NVFunPtr

glUniform2ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> IO ())
glUniform2ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform2ui64NV")

{-# NOINLINE glUniform2ui64NVFunPtr #-}

-- | Usage: @'glUniform2ui64vNV' location count value@
--
-- The length of @value@ should be @count*2@.


glUniform2ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform2ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform2ui64vNVFunPtr

glUniform2ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform2ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform2ui64vNV")

{-# NOINLINE glUniform2ui64vNVFunPtr #-}

-- | Usage: @'glUniform3i64NV' location x y z@


glUniform3i64NV :: MonadIO m => GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glUniform3i64NV = ffiintint64EXTint64EXTint64EXTIOV glUniform3i64NVFunPtr

glUniform3i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glUniform3i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform3i64NV")

{-# NOINLINE glUniform3i64NVFunPtr #-}

-- | Usage: @'glUniform3i64vNV' location count value@
--
-- The length of @value@ should be @count*3@.


glUniform3i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform3i64vNV = ffiintsizeiPtrint64EXTIOV glUniform3i64vNVFunPtr

glUniform3i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform3i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform3i64vNV")

{-# NOINLINE glUniform3i64vNVFunPtr #-}

-- | Usage: @'glUniform3ui64NV' location x y z@


glUniform3ui64NV :: MonadIO m => GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glUniform3ui64NV = ffiintuint64EXTuint64EXTuint64EXTIOV glUniform3ui64NVFunPtr

glUniform3ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glUniform3ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform3ui64NV")

{-# NOINLINE glUniform3ui64NVFunPtr #-}

-- | Usage: @'glUniform3ui64vNV' location count value@
--
-- The length of @value@ should be @count*3@.


glUniform3ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform3ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform3ui64vNVFunPtr

glUniform3ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform3ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform3ui64vNV")

{-# NOINLINE glUniform3ui64vNVFunPtr #-}

-- | Usage: @'glUniform4i64NV' location x y z w@


glUniform4i64NV :: MonadIO m => GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glUniform4i64NV = ffiintint64EXTint64EXTint64EXTint64EXTIOV glUniform4i64NVFunPtr

glUniform4i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glUniform4i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform4i64NV")

{-# NOINLINE glUniform4i64NVFunPtr #-}

-- | Usage: @'glUniform4i64vNV' location count value@
--
-- The length of @value@ should be @count*4@.


glUniform4i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform4i64vNV = ffiintsizeiPtrint64EXTIOV glUniform4i64vNVFunPtr

glUniform4i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform4i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform4i64vNV")

{-# NOINLINE glUniform4i64vNVFunPtr #-}

-- | Usage: @'glUniform4ui64NV' location x y z w@


glUniform4ui64NV :: MonadIO m => GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glUniform4ui64NV = ffiintuint64EXTuint64EXTuint64EXTuint64EXTIOV glUniform4ui64NVFunPtr

glUniform4ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glUniform4ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform4ui64NV")

{-# NOINLINE glUniform4ui64NVFunPtr #-}

-- | Usage: @'glUniform4ui64vNV' location count value@
--
-- The length of @value@ should be @count*4@.


glUniform4ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform4ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform4ui64vNVFunPtr

glUniform4ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform4ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform4ui64vNV")

{-# NOINLINE glUniform4ui64vNVFunPtr #-}

pattern GL_FLOAT16_NV = 0x8FF8

pattern GL_FLOAT16_VEC2_NV = 0x8FF9

pattern GL_FLOAT16_VEC3_NV = 0x8FFA

pattern GL_FLOAT16_VEC4_NV = 0x8FFB

pattern GL_INT16_NV = 0x8FE4

pattern GL_INT16_VEC2_NV = 0x8FE5

pattern GL_INT16_VEC3_NV = 0x8FE6

pattern GL_INT16_VEC4_NV = 0x8FE7

pattern GL_INT64_NV = 0x140E

pattern GL_INT64_VEC2_NV = 0x8FE9

pattern GL_INT64_VEC3_NV = 0x8FEA

pattern GL_INT64_VEC4_NV = 0x8FEB

pattern GL_INT8_NV = 0x8FE0

pattern GL_INT8_VEC2_NV = 0x8FE1

pattern GL_INT8_VEC3_NV = 0x8FE2

pattern GL_INT8_VEC4_NV = 0x8FE3

pattern GL_UNSIGNED_INT16_NV = 0x8FF0

pattern GL_UNSIGNED_INT16_VEC2_NV = 0x8FF1

pattern GL_UNSIGNED_INT16_VEC3_NV = 0x8FF2

pattern GL_UNSIGNED_INT16_VEC4_NV = 0x8FF3

pattern GL_UNSIGNED_INT64_NV = 0x140F

pattern GL_UNSIGNED_INT64_VEC2_NV = 0x8FF5

pattern GL_UNSIGNED_INT64_VEC3_NV = 0x8FF6

pattern GL_UNSIGNED_INT64_VEC4_NV = 0x8FF7

pattern GL_UNSIGNED_INT8_NV = 0x8FEC

pattern GL_UNSIGNED_INT8_VEC2_NV = 0x8FED

pattern GL_UNSIGNED_INT8_VEC3_NV = 0x8FEE

pattern GL_UNSIGNED_INT8_VEC4_NV = 0x8FEF

pattern GL_ALPHA = 0x1906

pattern GL_BLUE = 0x1905

pattern GL_GREEN = 0x1904

pattern GL_RED = 0x1903

pattern GL_RG16UI = 0x823A

pattern GL_RG8UI = 0x8238

pattern GL_RGBA8UI = 0x8D7C

pattern GL_TEXTURE_CUBE_MAP_SEAMLESS = 0x884F

pattern GL_DEPTH24_STENCIL8_OES = 0x88F0

pattern GL_DEPTH_COMPONENT = 0x1902

pattern GL_DEPTH_COMPONENT16 = 0x81A5

pattern GL_DEPTH_COMPONENT32_OES = 0x81A7

pattern GL_DEPTH_STENCIL_OES = 0x84F9

pattern GL_UNSIGNED_INT = 0x1405

pattern GL_UNSIGNED_INT_24_8_OES = 0x84FA

pattern GL_UNSIGNED_SHORT = 0x1403

pattern GL_UNSIGNED_SHORT_8_8_APPLE = 0x85BA

pattern GL_UNSIGNED_SHORT_8_8_REV_APPLE = 0x85BB

pattern GL_BGRA8_EXT = 0x93A1

pattern GL_BGRA_EXT = 0x80E1

pattern GL_STORAGE_CACHED_APPLE = 0x85BE

pattern GL_STORAGE_SHARED_APPLE = 0x85BF

-- | Usage: @'glDrawArraysInstancedBaseInstance' mode first count instancecount baseinstance@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawArraysInstancedBaseInstance.xhtml>


glDrawArraysInstancedBaseInstance :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> GLuint -> m ()
glDrawArraysInstancedBaseInstance = ffienumintsizeisizeiuintIOV glDrawArraysInstancedBaseInstanceFunPtr

glDrawArraysInstancedBaseInstanceFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> GLuint -> IO ())
glDrawArraysInstancedBaseInstanceFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstancedBaseInstance")

{-# NOINLINE glDrawArraysInstancedBaseInstanceFunPtr #-}

-- | Usage: @'glDrawElementsInstancedBaseInstance' mode count type indices instancecount baseinstance@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- The length of @indices@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawElementsInstancedBaseInstance.xhtml>


glDrawElementsInstancedBaseInstance :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLuint -> m ()
glDrawElementsInstancedBaseInstance = ffienumsizeienumPtrVsizeiuintIOV glDrawElementsInstancedBaseInstanceFunPtr

glDrawElementsInstancedBaseInstanceFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLuint -> IO ())
glDrawElementsInstancedBaseInstanceFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedBaseInstance")

{-# NOINLINE glDrawElementsInstancedBaseInstanceFunPtr #-}

-- | Usage: @'glDrawElementsInstancedBaseVertexBaseInstance' mode count type indices instancecount basevertex baseinstance@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- The length of @indices@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>


glDrawElementsInstancedBaseVertexBaseInstance :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> GLuint -> m ()
glDrawElementsInstancedBaseVertexBaseInstance = ffienumsizeienumPtrVsizeiintuintIOV glDrawElementsInstancedBaseVertexBaseInstanceFunPtr

glDrawElementsInstancedBaseVertexBaseInstanceFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> GLuint -> IO ())
glDrawElementsInstancedBaseVertexBaseInstanceFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedBaseVertexBaseInstance")

{-# NOINLINE glDrawElementsInstancedBaseVertexBaseInstanceFunPtr #-}

-- | Usage: @'glBindFragDataLocationIndexed' program colorNumber index name@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindFragDataLocationIndexed.xhtml>


glBindFragDataLocationIndexed :: MonadIO m => GLuint -> GLuint -> GLuint -> Ptr GLchar -> m ()
glBindFragDataLocationIndexed = ffiuintuintuintPtrcharIOV glBindFragDataLocationIndexedFunPtr

glBindFragDataLocationIndexedFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindFragDataLocationIndexedFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationIndexed")

{-# NOINLINE glBindFragDataLocationIndexedFunPtr #-}

-- | Usage: @'glGetFragDataIndex' program name@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetFragDataIndex.xhtml>


glGetFragDataIndex :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetFragDataIndex = ffiuintPtrcharIOint glGetFragDataIndexFunPtr

glGetFragDataIndexFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetFragDataIndexFunPtr = unsafePerformIO (getProcAddress "glGetFragDataIndex")

{-# NOINLINE glGetFragDataIndexFunPtr #-}

pattern GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC

pattern GL_ONE_MINUS_SRC1_ALPHA = 0x88FB

pattern GL_ONE_MINUS_SRC1_COLOR = 0x88FA

pattern GL_SRC1_ALPHA = 0x8589

pattern GL_SRC1_COLOR = 0x88F9

-- | Usage: @'glBufferStorage' target size data flags@
--
-- The length of @data@ should be @size@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBufferStorage.xhtml>


glBufferStorage :: MonadIO m => GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
glBufferStorage = ffienumsizeiptrPtrVbitfieldIOV glBufferStorageFunPtr

glBufferStorageFunPtr :: FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ())
glBufferStorageFunPtr = unsafePerformIO (getProcAddress "glBufferStorage")

{-# NOINLINE glBufferStorageFunPtr #-}

pattern GL_BUFFER_IMMUTABLE_STORAGE = 0x821F

pattern GL_BUFFER_STORAGE_FLAGS = 0x8220

pattern GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000

pattern GL_CLIENT_STORAGE_BIT = 0x0200

pattern GL_DYNAMIC_STORAGE_BIT = 0x0100

pattern GL_MAP_COHERENT_BIT = 0x0080

pattern GL_MAP_PERSISTENT_BIT = 0x0040

pattern GL_MAP_READ_BIT = 0x0001

pattern GL_MAP_WRITE_BIT = 0x0002

-- | Usage: @'glClearBufferData' target internalformat format type data@
--
-- The length of @data@ should be @COMPSIZE(format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClearBufferData.xhtml>


glClearBufferData :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
glClearBufferData = ffienumenumenumenumPtrVIOV glClearBufferDataFunPtr

glClearBufferDataFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
glClearBufferDataFunPtr = unsafePerformIO (getProcAddress "glClearBufferData")

{-# NOINLINE glClearBufferDataFunPtr #-}

-- | Usage: @'glClearBufferSubData' target internalformat offset size format type data@
--
-- The parameter @offset@ is a @BufferOffset@.
--
-- The parameter @size@ is a @BufferSize@.
--
-- The length of @data@ should be @COMPSIZE(format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClearBufferSubData.xhtml>


glClearBufferSubData :: MonadIO m => GLenum -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
glClearBufferSubData = ffienumenumintptrsizeiptrenumenumPtrVIOV glClearBufferSubDataFunPtr

glClearBufferSubDataFunPtr :: FunPtr (GLenum -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ())
glClearBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glClearBufferSubData")

{-# NOINLINE glClearBufferSubDataFunPtr #-}

-- | Usage: @'glClearTexImage' texture level format type data@
--
-- The length of @data@ should be @COMPSIZE(format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClearTexImage.xhtml>


glClearTexImage :: MonadIO m => GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
glClearTexImage = ffiuintintenumenumPtrVIOV glClearTexImageFunPtr

glClearTexImageFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
glClearTexImageFunPtr = unsafePerformIO (getProcAddress "glClearTexImage")

{-# NOINLINE glClearTexImageFunPtr #-}

-- | Usage: @'glClearTexSubImage' texture level xoffset yoffset zoffset width height depth format type data@
--
-- The length of @data@ should be @COMPSIZE(format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClearTexSubImage.xhtml>


glClearTexSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glClearTexSubImage = ffiuintintintintintsizeisizeisizeienumenumPtrVIOV glClearTexSubImageFunPtr

glClearTexSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glClearTexSubImageFunPtr = unsafePerformIO (getProcAddress "glClearTexSubImage")

{-# NOINLINE glClearTexSubImageFunPtr #-}

pattern GL_CLEAR_TEXTURE = 0x9365

-- | Usage: @'glClipControl' origin depth@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClipControl.xhtml>


glClipControl :: MonadIO m => GLenum -> GLenum -> m ()
glClipControl = ffienumenumIOV glClipControlFunPtr

glClipControlFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glClipControlFunPtr = unsafePerformIO (getProcAddress "glClipControl")

{-# NOINLINE glClipControlFunPtr #-}

pattern GL_CLIP_DEPTH_MODE = 0x935D

pattern GL_CLIP_ORIGIN = 0x935C

pattern GL_LOWER_LEFT = 0x8CA1

pattern GL_NEGATIVE_ONE_TO_ONE = 0x935E

pattern GL_UPPER_LEFT = 0x8CA2

pattern GL_ZERO_TO_ONE = 0x935F

pattern GL_PACK_COMPRESSED_BLOCK_DEPTH = 0x912D

pattern GL_PACK_COMPRESSED_BLOCK_HEIGHT = 0x912C

pattern GL_PACK_COMPRESSED_BLOCK_SIZE = 0x912E

pattern GL_PACK_COMPRESSED_BLOCK_WIDTH = 0x912B

pattern GL_UNPACK_COMPRESSED_BLOCK_DEPTH = 0x9129

pattern GL_UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x9128

pattern GL_UNPACK_COMPRESSED_BLOCK_SIZE = 0x912A

pattern GL_UNPACK_COMPRESSED_BLOCK_WIDTH = 0x9127

-- | Usage: @'glDispatchCompute' num_groups_x num_groups_y num_groups_z@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDispatchCompute.xhtml>


glDispatchCompute :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glDispatchCompute = ffiuintuintuintIOV glDispatchComputeFunPtr

glDispatchComputeFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glDispatchComputeFunPtr = unsafePerformIO (getProcAddress "glDispatchCompute")

{-# NOINLINE glDispatchComputeFunPtr #-}

-- | Usage: @'glDispatchComputeIndirect' indirect@
--
-- The parameter @indirect@ is a @BufferOffset@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDispatchComputeIndirect.xhtml>


glDispatchComputeIndirect :: MonadIO m => GLintptr -> m ()
glDispatchComputeIndirect = ffiintptrIOV glDispatchComputeIndirectFunPtr

glDispatchComputeIndirectFunPtr :: FunPtr (GLintptr -> IO ())
glDispatchComputeIndirectFunPtr = unsafePerformIO (getProcAddress "glDispatchComputeIndirect")

{-# NOINLINE glDispatchComputeIndirectFunPtr #-}

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED

pattern GL_COMPUTE_SHADER = 0x91B9

pattern GL_COMPUTE_SHADER_BIT = 0x00000020

pattern GL_COMPUTE_WORK_GROUP_SIZE = 0x8267

pattern GL_DISPATCH_INDIRECT_BUFFER = 0x90EE

pattern GL_DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF

pattern GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266

pattern GL_MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265

pattern GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264

pattern GL_MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD

pattern GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262

pattern GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC

pattern GL_MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB

pattern GL_MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263

pattern GL_MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE

pattern GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB

pattern GL_MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC

pattern GL_QUERY_BY_REGION_NO_WAIT_INVERTED = 0x8E1A

pattern GL_QUERY_BY_REGION_WAIT_INVERTED = 0x8E19

pattern GL_QUERY_NO_WAIT_INVERTED = 0x8E18

pattern GL_QUERY_WAIT_INVERTED = 0x8E17

-- | Usage: @'glCopyBufferSubData' readTarget writeTarget readOffset writeOffset size@
--
-- The parameter @readOffset@ is a @BufferOffset@.
--
-- The parameter @writeOffset@ is a @BufferOffset@.
--
-- The parameter @size@ is a @BufferSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyBufferSubData.xhtml>


glCopyBufferSubData :: MonadIO m => GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
glCopyBufferSubData = ffienumenumintptrintptrsizeiptrIOV glCopyBufferSubDataFunPtr

glCopyBufferSubDataFunPtr :: FunPtr (GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
glCopyBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glCopyBufferSubData")

{-# NOINLINE glCopyBufferSubDataFunPtr #-}

pattern GL_COPY_READ_BUFFER = 0x8F36

pattern GL_COPY_WRITE_BUFFER = 0x8F37

-- | Usage: @'glCopyImageSubData' srcName srcTarget srcLevel srcX srcY srcZ dstName dstTarget dstLevel dstX dstY dstZ srcWidth srcHeight srcDepth@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyImageSubData.xhtml>


glCopyImageSubData :: MonadIO m => GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> m ()
glCopyImageSubData = ffiuintenumintintintintuintenumintintintintsizeisizeisizeiIOV glCopyImageSubDataFunPtr

glCopyImageSubDataFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLuint -> GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ())
glCopyImageSubDataFunPtr = unsafePerformIO (getProcAddress "glCopyImageSubData")

{-# NOINLINE glCopyImageSubDataFunPtr #-}

pattern GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA

pattern GL_MAX_CULL_DISTANCES = 0x82F9

pattern GL_DEPTH32F_STENCIL8 = 0x8CAD

pattern GL_DEPTH_COMPONENT32F = 0x8CAC

pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD

pattern GL_DEPTH_CLAMP = 0x864F

-- | Usage: @'glBindTextureUnit' unit texture@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindTextureUnit.xhtml>


glBindTextureUnit :: MonadIO m => GLuint -> GLuint -> m ()
glBindTextureUnit = ffiuintuintIOV glBindTextureUnitFunPtr

glBindTextureUnitFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glBindTextureUnitFunPtr = unsafePerformIO (getProcAddress "glBindTextureUnit")

{-# NOINLINE glBindTextureUnitFunPtr #-}

-- | Usage: @'glBlitNamedFramebuffer' readFramebuffer drawFramebuffer srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1 dstY1 mask filter@


glBlitNamedFramebuffer :: MonadIO m => GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
glBlitNamedFramebuffer = ffiuintuintintintintintintintintintbitfieldenumIOV glBlitNamedFramebufferFunPtr

glBlitNamedFramebufferFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ())
glBlitNamedFramebufferFunPtr = unsafePerformIO (getProcAddress "glBlitNamedFramebuffer")

{-# NOINLINE glBlitNamedFramebufferFunPtr #-}

-- | Usage: @'glCheckNamedFramebufferStatus' framebuffer target@


glCheckNamedFramebufferStatus :: MonadIO m => GLuint -> GLenum -> m GLenum
glCheckNamedFramebufferStatus = ffiuintenumIOenum glCheckNamedFramebufferStatusFunPtr

glCheckNamedFramebufferStatusFunPtr :: FunPtr (GLuint -> GLenum -> IO GLenum)
glCheckNamedFramebufferStatusFunPtr = unsafePerformIO (getProcAddress "glCheckNamedFramebufferStatus")

{-# NOINLINE glCheckNamedFramebufferStatusFunPtr #-}

-- | Usage: @'glClearNamedBufferData' buffer internalformat format type data@


glClearNamedBufferData :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
glClearNamedBufferData = ffiuintenumenumenumPtrVIOV glClearNamedBufferDataFunPtr

glClearNamedBufferDataFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
glClearNamedBufferDataFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferData")

{-# NOINLINE glClearNamedBufferDataFunPtr #-}

-- | Usage: @'glClearNamedBufferSubData' buffer internalformat offset size format type data@


glClearNamedBufferSubData :: MonadIO m => GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glClearNamedBufferSubData = ffiuintenumintptrsizeienumenumPtrVIOV glClearNamedBufferSubDataFunPtr

glClearNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glClearNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferSubData")

{-# NOINLINE glClearNamedBufferSubDataFunPtr #-}

-- | Usage: @'glClearNamedFramebufferfi' framebuffer buffer depth stencil@


glClearNamedFramebufferfi :: MonadIO m => GLuint -> GLenum -> GLfloat -> GLint -> m ()
glClearNamedFramebufferfi = ffiuintenumfloatintIOV glClearNamedFramebufferfiFunPtr

glClearNamedFramebufferfiFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> GLint -> IO ())
glClearNamedFramebufferfiFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferfi")

{-# NOINLINE glClearNamedFramebufferfiFunPtr #-}

-- | Usage: @'glClearNamedFramebufferfv' framebuffer buffer drawbuffer value@


glClearNamedFramebufferfv :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr GLfloat -> m ()
glClearNamedFramebufferfv = ffiuintenumintPtrfloatIOV glClearNamedFramebufferfvFunPtr

glClearNamedFramebufferfvFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ())
glClearNamedFramebufferfvFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferfv")

{-# NOINLINE glClearNamedFramebufferfvFunPtr #-}

-- | Usage: @'glClearNamedFramebufferiv' framebuffer buffer drawbuffer value@


glClearNamedFramebufferiv :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr GLint -> m ()
glClearNamedFramebufferiv = ffiuintenumintPtrintIOV glClearNamedFramebufferivFunPtr

glClearNamedFramebufferivFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLint -> IO ())
glClearNamedFramebufferivFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferiv")

{-# NOINLINE glClearNamedFramebufferivFunPtr #-}

-- | Usage: @'glClearNamedFramebufferuiv' framebuffer buffer drawbuffer value@


glClearNamedFramebufferuiv :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr GLuint -> m ()
glClearNamedFramebufferuiv = ffiuintenumintPtruintIOV glClearNamedFramebufferuivFunPtr

glClearNamedFramebufferuivFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLuint -> IO ())
glClearNamedFramebufferuivFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferuiv")

{-# NOINLINE glClearNamedFramebufferuivFunPtr #-}

-- | Usage: @'glCompressedTextureSubImage1D' texture level xoffset width format imageSize data@


glCompressedTextureSubImage1D :: MonadIO m => GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTextureSubImage1D = ffiuintintintsizeienumsizeiPtrVIOV glCompressedTextureSubImage1DFunPtr

glCompressedTextureSubImage1DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTextureSubImage1DFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage1D")

{-# NOINLINE glCompressedTextureSubImage1DFunPtr #-}

-- | Usage: @'glCompressedTextureSubImage2D' texture level xoffset yoffset width height format imageSize data@


glCompressedTextureSubImage2D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTextureSubImage2D = ffiuintintintintsizeisizeienumsizeiPtrVIOV glCompressedTextureSubImage2DFunPtr

glCompressedTextureSubImage2DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTextureSubImage2DFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage2D")

{-# NOINLINE glCompressedTextureSubImage2DFunPtr #-}

-- | Usage: @'glCompressedTextureSubImage3D' texture level xoffset yoffset zoffset width height depth format imageSize data@


glCompressedTextureSubImage3D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTextureSubImage3D = ffiuintintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedTextureSubImage3DFunPtr

glCompressedTextureSubImage3DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTextureSubImage3DFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage3D")

{-# NOINLINE glCompressedTextureSubImage3DFunPtr #-}

-- | Usage: @'glCopyNamedBufferSubData' readBuffer writeBuffer readOffset writeOffset size@


glCopyNamedBufferSubData :: MonadIO m => GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> m ()
glCopyNamedBufferSubData = ffiuintuintintptrintptrsizeiIOV glCopyNamedBufferSubDataFunPtr

glCopyNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizei -> IO ())
glCopyNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glCopyNamedBufferSubData")

{-# NOINLINE glCopyNamedBufferSubDataFunPtr #-}

-- | Usage: @'glCopyTextureSubImage1D' texture level xoffset x y width@


glCopyTextureSubImage1D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
glCopyTextureSubImage1D = ffiuintintintintintsizeiIOV glCopyTextureSubImage1DFunPtr

glCopyTextureSubImage1DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
glCopyTextureSubImage1DFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage1D")

{-# NOINLINE glCopyTextureSubImage1DFunPtr #-}

-- | Usage: @'glCopyTextureSubImage2D' texture level xoffset yoffset x y width height@


glCopyTextureSubImage2D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glCopyTextureSubImage2D = ffiuintintintintintintsizeisizeiIOV glCopyTextureSubImage2DFunPtr

glCopyTextureSubImage2DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glCopyTextureSubImage2DFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage2D")

{-# NOINLINE glCopyTextureSubImage2DFunPtr #-}

-- | Usage: @'glCopyTextureSubImage3D' texture level xoffset yoffset zoffset x y width height@


glCopyTextureSubImage3D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glCopyTextureSubImage3D = ffiuintintintintintintintsizeisizeiIOV glCopyTextureSubImage3DFunPtr

glCopyTextureSubImage3DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glCopyTextureSubImage3DFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage3D")

{-# NOINLINE glCopyTextureSubImage3DFunPtr #-}

-- | Usage: @'glCreateBuffers' n buffers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateBuffers.xhtml>


glCreateBuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateBuffers = ffisizeiPtruintIOV glCreateBuffersFunPtr

glCreateBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateBuffersFunPtr = unsafePerformIO (getProcAddress "glCreateBuffers")

{-# NOINLINE glCreateBuffersFunPtr #-}

-- | Usage: @'glCreateFramebuffers' n framebuffers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateFramebuffers.xhtml>


glCreateFramebuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateFramebuffers = ffisizeiPtruintIOV glCreateFramebuffersFunPtr

glCreateFramebuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateFramebuffersFunPtr = unsafePerformIO (getProcAddress "glCreateFramebuffers")

{-# NOINLINE glCreateFramebuffersFunPtr #-}

-- | Usage: @'glCreateProgramPipelines' n pipelines@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateProgramPipelines.xhtml>


glCreateProgramPipelines :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateProgramPipelines = ffisizeiPtruintIOV glCreateProgramPipelinesFunPtr

glCreateProgramPipelinesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateProgramPipelinesFunPtr = unsafePerformIO (getProcAddress "glCreateProgramPipelines")

{-# NOINLINE glCreateProgramPipelinesFunPtr #-}

-- | Usage: @'glCreateQueries' target n ids@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateQueries.xhtml>


glCreateQueries :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glCreateQueries = ffienumsizeiPtruintIOV glCreateQueriesFunPtr

glCreateQueriesFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glCreateQueriesFunPtr = unsafePerformIO (getProcAddress "glCreateQueries")

{-# NOINLINE glCreateQueriesFunPtr #-}

-- | Usage: @'glCreateRenderbuffers' n renderbuffers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateRenderbuffers.xhtml>


glCreateRenderbuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateRenderbuffers = ffisizeiPtruintIOV glCreateRenderbuffersFunPtr

glCreateRenderbuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateRenderbuffersFunPtr = unsafePerformIO (getProcAddress "glCreateRenderbuffers")

{-# NOINLINE glCreateRenderbuffersFunPtr #-}

-- | Usage: @'glCreateSamplers' n samplers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateSamplers.xhtml>


glCreateSamplers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateSamplers = ffisizeiPtruintIOV glCreateSamplersFunPtr

glCreateSamplersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateSamplersFunPtr = unsafePerformIO (getProcAddress "glCreateSamplers")

{-# NOINLINE glCreateSamplersFunPtr #-}

-- | Usage: @'glCreateTextures' target n textures@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateTextures.xhtml>


glCreateTextures :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glCreateTextures = ffienumsizeiPtruintIOV glCreateTexturesFunPtr

glCreateTexturesFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glCreateTexturesFunPtr = unsafePerformIO (getProcAddress "glCreateTextures")

{-# NOINLINE glCreateTexturesFunPtr #-}

-- | Usage: @'glCreateTransformFeedbacks' n ids@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateTransformFeedbacks.xhtml>


glCreateTransformFeedbacks :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateTransformFeedbacks = ffisizeiPtruintIOV glCreateTransformFeedbacksFunPtr

glCreateTransformFeedbacksFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateTransformFeedbacksFunPtr = unsafePerformIO (getProcAddress "glCreateTransformFeedbacks")

{-# NOINLINE glCreateTransformFeedbacksFunPtr #-}

-- | Usage: @'glCreateVertexArrays' n arrays@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateVertexArrays.xhtml>


glCreateVertexArrays :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateVertexArrays = ffisizeiPtruintIOV glCreateVertexArraysFunPtr

glCreateVertexArraysFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateVertexArraysFunPtr = unsafePerformIO (getProcAddress "glCreateVertexArrays")

{-# NOINLINE glCreateVertexArraysFunPtr #-}

-- | Usage: @'glDisableVertexArrayAttrib' vaobj index@


glDisableVertexArrayAttrib :: MonadIO m => GLuint -> GLuint -> m ()
glDisableVertexArrayAttrib = ffiuintuintIOV glDisableVertexArrayAttribFunPtr

glDisableVertexArrayAttribFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glDisableVertexArrayAttribFunPtr = unsafePerformIO (getProcAddress "glDisableVertexArrayAttrib")

{-# NOINLINE glDisableVertexArrayAttribFunPtr #-}

-- | Usage: @'glEnableVertexArrayAttrib' vaobj index@


glEnableVertexArrayAttrib :: MonadIO m => GLuint -> GLuint -> m ()
glEnableVertexArrayAttrib = ffiuintuintIOV glEnableVertexArrayAttribFunPtr

glEnableVertexArrayAttribFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glEnableVertexArrayAttribFunPtr = unsafePerformIO (getProcAddress "glEnableVertexArrayAttrib")

{-# NOINLINE glEnableVertexArrayAttribFunPtr #-}

-- | Usage: @'glFlushMappedNamedBufferRange' buffer offset length@


glFlushMappedNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizei -> m ()
glFlushMappedNamedBufferRange = ffiuintintptrsizeiIOV glFlushMappedNamedBufferRangeFunPtr

glFlushMappedNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> IO ())
glFlushMappedNamedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glFlushMappedNamedBufferRange")

{-# NOINLINE glFlushMappedNamedBufferRangeFunPtr #-}

-- | Usage: @'glGenerateTextureMipmap' texture@


glGenerateTextureMipmap :: MonadIO m => GLuint -> m ()
glGenerateTextureMipmap = ffiuintIOV glGenerateTextureMipmapFunPtr

glGenerateTextureMipmapFunPtr :: FunPtr (GLuint -> IO ())
glGenerateTextureMipmapFunPtr = unsafePerformIO (getProcAddress "glGenerateTextureMipmap")

{-# NOINLINE glGenerateTextureMipmapFunPtr #-}

-- | Usage: @'glGetCompressedTextureImage' texture level bufSize pixels@


glGetCompressedTextureImage :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr () -> m ()
glGetCompressedTextureImage = ffiuintintsizeiPtrVIOV glGetCompressedTextureImageFunPtr

glGetCompressedTextureImageFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr () -> IO ())
glGetCompressedTextureImageFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTextureImage")

{-# NOINLINE glGetCompressedTextureImageFunPtr #-}

-- | Usage: @'glGetNamedBufferParameteri64v' buffer pname params@


glGetNamedBufferParameteri64v :: MonadIO m => GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetNamedBufferParameteri64v = ffiuintenumPtrint64IOV glGetNamedBufferParameteri64vFunPtr

glGetNamedBufferParameteri64vFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetNamedBufferParameteri64vFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameteri64v")

{-# NOINLINE glGetNamedBufferParameteri64vFunPtr #-}

-- | Usage: @'glGetNamedBufferParameteriv' buffer pname params@


glGetNamedBufferParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetNamedBufferParameteriv = ffiuintenumPtrintIOV glGetNamedBufferParameterivFunPtr

glGetNamedBufferParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetNamedBufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameteriv")

{-# NOINLINE glGetNamedBufferParameterivFunPtr #-}

-- | Usage: @'glGetNamedBufferPointerv' buffer pname params@


glGetNamedBufferPointerv :: MonadIO m => GLuint -> GLenum -> Ptr (Ptr ()) -> m ()
glGetNamedBufferPointerv = ffiuintenumPtrPtrVIOV glGetNamedBufferPointervFunPtr

glGetNamedBufferPointervFunPtr :: FunPtr (GLuint -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetNamedBufferPointervFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferPointerv")

{-# NOINLINE glGetNamedBufferPointervFunPtr #-}

-- | Usage: @'glGetNamedBufferSubData' buffer offset size data@


glGetNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizei -> Ptr () -> m ()
glGetNamedBufferSubData = ffiuintintptrsizeiPtrVIOV glGetNamedBufferSubDataFunPtr

glGetNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ())
glGetNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferSubData")

{-# NOINLINE glGetNamedBufferSubDataFunPtr #-}

-- | Usage: @'glGetNamedFramebufferAttachmentParameteriv' framebuffer attachment pname params@


glGetNamedFramebufferAttachmentParameteriv :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetNamedFramebufferAttachmentParameteriv = ffiuintenumenumPtrintIOV glGetNamedFramebufferAttachmentParameterivFunPtr

glGetNamedFramebufferAttachmentParameterivFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetNamedFramebufferAttachmentParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferAttachmentParameteriv")

{-# NOINLINE glGetNamedFramebufferAttachmentParameterivFunPtr #-}

-- | Usage: @'glGetNamedFramebufferParameteriv' framebuffer pname param@


glGetNamedFramebufferParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetNamedFramebufferParameteriv = ffiuintenumPtrintIOV glGetNamedFramebufferParameterivFunPtr

glGetNamedFramebufferParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetNamedFramebufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferParameteriv")

{-# NOINLINE glGetNamedFramebufferParameterivFunPtr #-}

-- | Usage: @'glGetNamedRenderbufferParameteriv' renderbuffer pname params@


glGetNamedRenderbufferParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetNamedRenderbufferParameteriv = ffiuintenumPtrintIOV glGetNamedRenderbufferParameterivFunPtr

glGetNamedRenderbufferParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetNamedRenderbufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedRenderbufferParameteriv")

{-# NOINLINE glGetNamedRenderbufferParameterivFunPtr #-}

-- | Usage: @'glGetQueryBufferObjecti64v' id buffer pname offset@


glGetQueryBufferObjecti64v :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjecti64v = ffiuintuintenumintptrIOV glGetQueryBufferObjecti64vFunPtr

glGetQueryBufferObjecti64vFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjecti64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjecti64v")

{-# NOINLINE glGetQueryBufferObjecti64vFunPtr #-}

-- | Usage: @'glGetQueryBufferObjectiv' id buffer pname offset@


glGetQueryBufferObjectiv :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjectiv = ffiuintuintenumintptrIOV glGetQueryBufferObjectivFunPtr

glGetQueryBufferObjectivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjectivFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjectiv")

{-# NOINLINE glGetQueryBufferObjectivFunPtr #-}

-- | Usage: @'glGetQueryBufferObjectui64v' id buffer pname offset@


glGetQueryBufferObjectui64v :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjectui64v = ffiuintuintenumintptrIOV glGetQueryBufferObjectui64vFunPtr

glGetQueryBufferObjectui64vFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjectui64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjectui64v")

{-# NOINLINE glGetQueryBufferObjectui64vFunPtr #-}

-- | Usage: @'glGetQueryBufferObjectuiv' id buffer pname offset@


glGetQueryBufferObjectuiv :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjectuiv = ffiuintuintenumintptrIOV glGetQueryBufferObjectuivFunPtr

glGetQueryBufferObjectuivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjectuivFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjectuiv")

{-# NOINLINE glGetQueryBufferObjectuivFunPtr #-}

-- | Usage: @'glGetTextureImage' texture level format type bufSize pixels@


glGetTextureImage :: MonadIO m => GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glGetTextureImage = ffiuintintenumenumsizeiPtrVIOV glGetTextureImageFunPtr

glGetTextureImageFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glGetTextureImageFunPtr = unsafePerformIO (getProcAddress "glGetTextureImage")

{-# NOINLINE glGetTextureImageFunPtr #-}

-- | Usage: @'glGetTextureLevelParameterfv' texture level pname params@


glGetTextureLevelParameterfv :: MonadIO m => GLuint -> GLint -> GLenum -> Ptr GLfloat -> m ()
glGetTextureLevelParameterfv = ffiuintintenumPtrfloatIOV glGetTextureLevelParameterfvFunPtr

glGetTextureLevelParameterfvFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> Ptr GLfloat -> IO ())
glGetTextureLevelParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTextureLevelParameterfv")

{-# NOINLINE glGetTextureLevelParameterfvFunPtr #-}

-- | Usage: @'glGetTextureLevelParameteriv' texture level pname params@


glGetTextureLevelParameteriv :: MonadIO m => GLuint -> GLint -> GLenum -> Ptr GLint -> m ()
glGetTextureLevelParameteriv = ffiuintintenumPtrintIOV glGetTextureLevelParameterivFunPtr

glGetTextureLevelParameterivFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> Ptr GLint -> IO ())
glGetTextureLevelParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTextureLevelParameteriv")

{-# NOINLINE glGetTextureLevelParameterivFunPtr #-}

-- | Usage: @'glGetTextureParameterIiv' texture pname params@


glGetTextureParameterIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetTextureParameterIiv = ffiuintenumPtrintIOV glGetTextureParameterIivFunPtr

glGetTextureParameterIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetTextureParameterIivFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterIiv")

{-# NOINLINE glGetTextureParameterIivFunPtr #-}

-- | Usage: @'glGetTextureParameterIuiv' texture pname params@


glGetTextureParameterIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetTextureParameterIuiv = ffiuintenumPtruintIOV glGetTextureParameterIuivFunPtr

glGetTextureParameterIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetTextureParameterIuivFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterIuiv")

{-# NOINLINE glGetTextureParameterIuivFunPtr #-}

-- | Usage: @'glGetTextureParameterfv' texture pname params@


glGetTextureParameterfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetTextureParameterfv = ffiuintenumPtrfloatIOV glGetTextureParameterfvFunPtr

glGetTextureParameterfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetTextureParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterfv")

{-# NOINLINE glGetTextureParameterfvFunPtr #-}

-- | Usage: @'glGetTextureParameteriv' texture pname params@


glGetTextureParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetTextureParameteriv = ffiuintenumPtrintIOV glGetTextureParameterivFunPtr

glGetTextureParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetTextureParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameteriv")

{-# NOINLINE glGetTextureParameterivFunPtr #-}

-- | Usage: @'glGetTransformFeedbacki64_v' xfb pname index param@


glGetTransformFeedbacki64_v :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLint64 -> m ()
glGetTransformFeedbacki64_v = ffiuintenumuintPtrint64IOV glGetTransformFeedbacki64_vFunPtr

glGetTransformFeedbacki64_vFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint64 -> IO ())
glGetTransformFeedbacki64_vFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbacki64_v")

{-# NOINLINE glGetTransformFeedbacki64_vFunPtr #-}

-- | Usage: @'glGetTransformFeedbacki_v' xfb pname index param@


glGetTransformFeedbacki_v :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLint -> m ()
glGetTransformFeedbacki_v = ffiuintenumuintPtrintIOV glGetTransformFeedbacki_vFunPtr

glGetTransformFeedbacki_vFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ())
glGetTransformFeedbacki_vFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbacki_v")

{-# NOINLINE glGetTransformFeedbacki_vFunPtr #-}

-- | Usage: @'glGetTransformFeedbackiv' xfb pname param@


glGetTransformFeedbackiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetTransformFeedbackiv = ffiuintenumPtrintIOV glGetTransformFeedbackivFunPtr

glGetTransformFeedbackivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetTransformFeedbackivFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbackiv")

{-# NOINLINE glGetTransformFeedbackivFunPtr #-}

-- | Usage: @'glGetVertexArrayIndexed64iv' vaobj index pname param@


glGetVertexArrayIndexed64iv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetVertexArrayIndexed64iv = ffiuintuintenumPtrint64IOV glGetVertexArrayIndexed64ivFunPtr

glGetVertexArrayIndexed64ivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetVertexArrayIndexed64ivFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayIndexed64iv")

{-# NOINLINE glGetVertexArrayIndexed64ivFunPtr #-}

-- | Usage: @'glGetVertexArrayIndexediv' vaobj index pname param@


glGetVertexArrayIndexediv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexArrayIndexediv = ffiuintuintenumPtrintIOV glGetVertexArrayIndexedivFunPtr

glGetVertexArrayIndexedivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexArrayIndexedivFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayIndexediv")

{-# NOINLINE glGetVertexArrayIndexedivFunPtr #-}

-- | Usage: @'glGetVertexArrayiv' vaobj pname param@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetVertexArrayiv.xhtml>


glGetVertexArrayiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexArrayiv = ffiuintenumPtrintIOV glGetVertexArrayivFunPtr

glGetVertexArrayivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexArrayivFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayiv")

{-# NOINLINE glGetVertexArrayivFunPtr #-}

-- | Usage: @'glInvalidateNamedFramebufferData' framebuffer numAttachments attachments@


glInvalidateNamedFramebufferData :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> m ()
glInvalidateNamedFramebufferData = ffiuintsizeiPtrenumIOV glInvalidateNamedFramebufferDataFunPtr

glInvalidateNamedFramebufferDataFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ())
glInvalidateNamedFramebufferDataFunPtr = unsafePerformIO (getProcAddress "glInvalidateNamedFramebufferData")

{-# NOINLINE glInvalidateNamedFramebufferDataFunPtr #-}

-- | Usage: @'glInvalidateNamedFramebufferSubData' framebuffer numAttachments attachments x y width height@


glInvalidateNamedFramebufferSubData :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glInvalidateNamedFramebufferSubData = ffiuintsizeiPtrenumintintsizeisizeiIOV glInvalidateNamedFramebufferSubDataFunPtr

glInvalidateNamedFramebufferSubDataFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glInvalidateNamedFramebufferSubDataFunPtr = unsafePerformIO (getProcAddress "glInvalidateNamedFramebufferSubData")

{-# NOINLINE glInvalidateNamedFramebufferSubDataFunPtr #-}

-- | Usage: @'glMapNamedBuffer' buffer access@


glMapNamedBuffer :: MonadIO m => GLuint -> GLenum -> m (Ptr ())
glMapNamedBuffer = ffiuintenumIOPtrV glMapNamedBufferFunPtr

glMapNamedBufferFunPtr :: FunPtr (GLuint -> GLenum -> IO (Ptr ()))
glMapNamedBufferFunPtr = unsafePerformIO (getProcAddress "glMapNamedBuffer")

{-# NOINLINE glMapNamedBufferFunPtr #-}

-- | Usage: @'glMapNamedBufferRange' buffer offset length access@


glMapNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizei -> GLbitfield -> m (Ptr ())
glMapNamedBufferRange = ffiuintintptrsizeibitfieldIOPtrV glMapNamedBufferRangeFunPtr

glMapNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> GLbitfield -> IO (Ptr ()))
glMapNamedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glMapNamedBufferRange")

{-# NOINLINE glMapNamedBufferRangeFunPtr #-}

-- | Usage: @'glNamedBufferData' buffer size data usage@


glNamedBufferData :: MonadIO m => GLuint -> GLsizei -> Ptr () -> GLenum -> m ()
glNamedBufferData = ffiuintsizeiPtrVenumIOV glNamedBufferDataFunPtr

glNamedBufferDataFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLenum -> IO ())
glNamedBufferDataFunPtr = unsafePerformIO (getProcAddress "glNamedBufferData")

{-# NOINLINE glNamedBufferDataFunPtr #-}

-- | Usage: @'glNamedBufferStorage' buffer size data flags@


glNamedBufferStorage :: MonadIO m => GLuint -> GLsizei -> Ptr () -> GLbitfield -> m ()
glNamedBufferStorage = ffiuintsizeiPtrVbitfieldIOV glNamedBufferStorageFunPtr

glNamedBufferStorageFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr () -> GLbitfield -> IO ())
glNamedBufferStorageFunPtr = unsafePerformIO (getProcAddress "glNamedBufferStorage")

{-# NOINLINE glNamedBufferStorageFunPtr #-}

-- | Usage: @'glNamedBufferSubData' buffer offset size data@


glNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizei -> Ptr () -> m ()
glNamedBufferSubData = ffiuintintptrsizeiPtrVIOV glNamedBufferSubDataFunPtr

glNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizei -> Ptr () -> IO ())
glNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glNamedBufferSubData")

{-# NOINLINE glNamedBufferSubDataFunPtr #-}

-- | Usage: @'glNamedFramebufferDrawBuffer' framebuffer buf@


glNamedFramebufferDrawBuffer :: MonadIO m => GLuint -> GLenum -> m ()
glNamedFramebufferDrawBuffer = ffiuintenumIOV glNamedFramebufferDrawBufferFunPtr

glNamedFramebufferDrawBufferFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glNamedFramebufferDrawBufferFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferDrawBuffer")

{-# NOINLINE glNamedFramebufferDrawBufferFunPtr #-}

-- | Usage: @'glNamedFramebufferDrawBuffers' framebuffer n bufs@


glNamedFramebufferDrawBuffers :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> m ()
glNamedFramebufferDrawBuffers = ffiuintsizeiPtrenumIOV glNamedFramebufferDrawBuffersFunPtr

glNamedFramebufferDrawBuffersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ())
glNamedFramebufferDrawBuffersFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferDrawBuffers")

{-# NOINLINE glNamedFramebufferDrawBuffersFunPtr #-}

-- | Usage: @'glNamedFramebufferParameteri' framebuffer pname param@


glNamedFramebufferParameteri :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glNamedFramebufferParameteri = ffiuintenumintIOV glNamedFramebufferParameteriFunPtr

glNamedFramebufferParameteriFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glNamedFramebufferParameteriFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferParameteri")

{-# NOINLINE glNamedFramebufferParameteriFunPtr #-}

-- | Usage: @'glNamedFramebufferReadBuffer' framebuffer src@


glNamedFramebufferReadBuffer :: MonadIO m => GLuint -> GLenum -> m ()
glNamedFramebufferReadBuffer = ffiuintenumIOV glNamedFramebufferReadBufferFunPtr

glNamedFramebufferReadBufferFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glNamedFramebufferReadBufferFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferReadBuffer")

{-# NOINLINE glNamedFramebufferReadBufferFunPtr #-}

-- | Usage: @'glNamedFramebufferRenderbuffer' framebuffer attachment renderbuffertarget renderbuffer@


glNamedFramebufferRenderbuffer :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> m ()
glNamedFramebufferRenderbuffer = ffiuintenumenumuintIOV glNamedFramebufferRenderbufferFunPtr

glNamedFramebufferRenderbufferFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ())
glNamedFramebufferRenderbufferFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferRenderbuffer")

{-# NOINLINE glNamedFramebufferRenderbufferFunPtr #-}

-- | Usage: @'glNamedFramebufferTexture' framebuffer attachment texture level@


glNamedFramebufferTexture :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> m ()
glNamedFramebufferTexture = ffiuintenumuintintIOV glNamedFramebufferTextureFunPtr

glNamedFramebufferTextureFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> IO ())
glNamedFramebufferTextureFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTexture")

{-# NOINLINE glNamedFramebufferTextureFunPtr #-}

-- | Usage: @'glNamedFramebufferTextureLayer' framebuffer attachment texture level layer@


glNamedFramebufferTextureLayer :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> GLint -> m ()
glNamedFramebufferTextureLayer = ffiuintenumuintintintIOV glNamedFramebufferTextureLayerFunPtr

glNamedFramebufferTextureLayerFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glNamedFramebufferTextureLayerFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTextureLayer")

{-# NOINLINE glNamedFramebufferTextureLayerFunPtr #-}

-- | Usage: @'glNamedRenderbufferStorage' renderbuffer internalformat width height@


glNamedRenderbufferStorage :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLsizei -> m ()
glNamedRenderbufferStorage = ffiuintenumsizeisizeiIOV glNamedRenderbufferStorageFunPtr

glNamedRenderbufferStorageFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> IO ())
glNamedRenderbufferStorageFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorage")

{-# NOINLINE glNamedRenderbufferStorageFunPtr #-}

-- | Usage: @'glNamedRenderbufferStorageMultisample' renderbuffer samples internalformat width height@


glNamedRenderbufferStorageMultisample :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glNamedRenderbufferStorageMultisample = ffiuintsizeienumsizeisizeiIOV glNamedRenderbufferStorageMultisampleFunPtr

glNamedRenderbufferStorageMultisampleFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glNamedRenderbufferStorageMultisampleFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorageMultisample")

{-# NOINLINE glNamedRenderbufferStorageMultisampleFunPtr #-}

-- | Usage: @'glTextureBuffer' texture internalformat buffer@


glTextureBuffer :: MonadIO m => GLuint -> GLenum -> GLuint -> m ()
glTextureBuffer = ffiuintenumuintIOV glTextureBufferFunPtr

glTextureBufferFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> IO ())
glTextureBufferFunPtr = unsafePerformIO (getProcAddress "glTextureBuffer")

{-# NOINLINE glTextureBufferFunPtr #-}

-- | Usage: @'glTextureBufferRange' texture internalformat buffer offset size@


glTextureBufferRange :: MonadIO m => GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> m ()
glTextureBufferRange = ffiuintenumuintintptrsizeiIOV glTextureBufferRangeFunPtr

glTextureBufferRangeFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizei -> IO ())
glTextureBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTextureBufferRange")

{-# NOINLINE glTextureBufferRangeFunPtr #-}

-- | Usage: @'glTextureParameterIiv' texture pname params@


glTextureParameterIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glTextureParameterIiv = ffiuintenumPtrintIOV glTextureParameterIivFunPtr

glTextureParameterIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glTextureParameterIivFunPtr = unsafePerformIO (getProcAddress "glTextureParameterIiv")

{-# NOINLINE glTextureParameterIivFunPtr #-}

-- | Usage: @'glTextureParameterIuiv' texture pname params@


glTextureParameterIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glTextureParameterIuiv = ffiuintenumPtruintIOV glTextureParameterIuivFunPtr

glTextureParameterIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glTextureParameterIuivFunPtr = unsafePerformIO (getProcAddress "glTextureParameterIuiv")

{-# NOINLINE glTextureParameterIuivFunPtr #-}

-- | Usage: @'glTextureParameterf' texture pname param@


glTextureParameterf :: MonadIO m => GLuint -> GLenum -> GLfloat -> m ()
glTextureParameterf = ffiuintenumfloatIOV glTextureParameterfFunPtr

glTextureParameterfFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> IO ())
glTextureParameterfFunPtr = unsafePerformIO (getProcAddress "glTextureParameterf")

{-# NOINLINE glTextureParameterfFunPtr #-}

-- | Usage: @'glTextureParameterfv' texture pname param@


glTextureParameterfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glTextureParameterfv = ffiuintenumPtrfloatIOV glTextureParameterfvFunPtr

glTextureParameterfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glTextureParameterfvFunPtr = unsafePerformIO (getProcAddress "glTextureParameterfv")

{-# NOINLINE glTextureParameterfvFunPtr #-}

-- | Usage: @'glTextureParameteri' texture pname param@


glTextureParameteri :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glTextureParameteri = ffiuintenumintIOV glTextureParameteriFunPtr

glTextureParameteriFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glTextureParameteriFunPtr = unsafePerformIO (getProcAddress "glTextureParameteri")

{-# NOINLINE glTextureParameteriFunPtr #-}

-- | Usage: @'glTextureParameteriv' texture pname param@


glTextureParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glTextureParameteriv = ffiuintenumPtrintIOV glTextureParameterivFunPtr

glTextureParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glTextureParameterivFunPtr = unsafePerformIO (getProcAddress "glTextureParameteriv")

{-# NOINLINE glTextureParameterivFunPtr #-}

-- | Usage: @'glTextureStorage1D' texture levels internalformat width@


glTextureStorage1D :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> m ()
glTextureStorage1D = ffiuintsizeienumsizeiIOV glTextureStorage1DFunPtr

glTextureStorage1DFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> IO ())
glTextureStorage1DFunPtr = unsafePerformIO (getProcAddress "glTextureStorage1D")

{-# NOINLINE glTextureStorage1DFunPtr #-}

-- | Usage: @'glTextureStorage2D' texture levels internalformat width height@


glTextureStorage2D :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTextureStorage2D = ffiuintsizeienumsizeisizeiIOV glTextureStorage2DFunPtr

glTextureStorage2DFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTextureStorage2DFunPtr = unsafePerformIO (getProcAddress "glTextureStorage2D")

{-# NOINLINE glTextureStorage2DFunPtr #-}

-- | Usage: @'glTextureStorage2DMultisample' texture samples internalformat width height fixedsamplelocations@


glTextureStorage2DMultisample :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
glTextureStorage2DMultisample = ffiuintsizeienumsizeisizeibooleanIOV glTextureStorage2DMultisampleFunPtr

glTextureStorage2DMultisampleFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTextureStorage2DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTextureStorage2DMultisample")

{-# NOINLINE glTextureStorage2DMultisampleFunPtr #-}

-- | Usage: @'glTextureStorage3D' texture levels internalformat width height depth@


glTextureStorage3D :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTextureStorage3D = ffiuintsizeienumsizeisizeisizeiIOV glTextureStorage3DFunPtr

glTextureStorage3DFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTextureStorage3DFunPtr = unsafePerformIO (getProcAddress "glTextureStorage3D")

{-# NOINLINE glTextureStorage3DFunPtr #-}

-- | Usage: @'glTextureStorage3DMultisample' texture samples internalformat width height depth fixedsamplelocations@


glTextureStorage3DMultisample :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
glTextureStorage3DMultisample = ffiuintsizeienumsizeisizeisizeibooleanIOV glTextureStorage3DMultisampleFunPtr

glTextureStorage3DMultisampleFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTextureStorage3DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTextureStorage3DMultisample")

{-# NOINLINE glTextureStorage3DMultisampleFunPtr #-}

-- | Usage: @'glTextureSubImage1D' texture level xoffset width format type pixels@


glTextureSubImage1D :: MonadIO m => GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTextureSubImage1D = ffiuintintintsizeienumenumPtrVIOV glTextureSubImage1DFunPtr

glTextureSubImage1DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTextureSubImage1DFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage1D")

{-# NOINLINE glTextureSubImage1DFunPtr #-}

-- | Usage: @'glTextureSubImage2D' texture level xoffset yoffset width height format type pixels@


glTextureSubImage2D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTextureSubImage2D = ffiuintintintintsizeisizeienumenumPtrVIOV glTextureSubImage2DFunPtr

glTextureSubImage2DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTextureSubImage2DFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage2D")

{-# NOINLINE glTextureSubImage2DFunPtr #-}

-- | Usage: @'glTextureSubImage3D' texture level xoffset yoffset zoffset width height depth format type pixels@


glTextureSubImage3D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTextureSubImage3D = ffiuintintintintintsizeisizeisizeienumenumPtrVIOV glTextureSubImage3DFunPtr

glTextureSubImage3DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTextureSubImage3DFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage3D")

{-# NOINLINE glTextureSubImage3DFunPtr #-}

-- | Usage: @'glTransformFeedbackBufferBase' xfb index buffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTransformFeedbackBufferBase.xhtml>


glTransformFeedbackBufferBase :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glTransformFeedbackBufferBase = ffiuintuintuintIOV glTransformFeedbackBufferBaseFunPtr

glTransformFeedbackBufferBaseFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glTransformFeedbackBufferBaseFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackBufferBase")

{-# NOINLINE glTransformFeedbackBufferBaseFunPtr #-}

-- | Usage: @'glTransformFeedbackBufferRange' xfb index buffer offset size@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTransformFeedbackBufferRange.xhtml>


glTransformFeedbackBufferRange :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
glTransformFeedbackBufferRange = ffiuintuintuintintptrsizeiIOV glTransformFeedbackBufferRangeFunPtr

glTransformFeedbackBufferRangeFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ())
glTransformFeedbackBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackBufferRange")

{-# NOINLINE glTransformFeedbackBufferRangeFunPtr #-}

-- | Usage: @'glUnmapNamedBuffer' buffer@


glUnmapNamedBuffer :: MonadIO m => GLuint -> m GLboolean
glUnmapNamedBuffer = ffiuintIOboolean glUnmapNamedBufferFunPtr

glUnmapNamedBufferFunPtr :: FunPtr (GLuint -> IO GLboolean)
glUnmapNamedBufferFunPtr = unsafePerformIO (getProcAddress "glUnmapNamedBuffer")

{-# NOINLINE glUnmapNamedBufferFunPtr #-}

-- | Usage: @'glVertexArrayAttribBinding' vaobj attribindex bindingindex@


glVertexArrayAttribBinding :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexArrayAttribBinding = ffiuintuintuintIOV glVertexArrayAttribBindingFunPtr

glVertexArrayAttribBindingFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexArrayAttribBindingFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribBinding")

{-# NOINLINE glVertexArrayAttribBindingFunPtr #-}

-- | Usage: @'glVertexArrayAttribFormat' vaobj attribindex size type normalized relativeoffset@


glVertexArrayAttribFormat :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexArrayAttribFormat = ffiuintuintintenumbooleanuintIOV glVertexArrayAttribFormatFunPtr

glVertexArrayAttribFormatFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexArrayAttribFormatFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribFormat")

{-# NOINLINE glVertexArrayAttribFormatFunPtr #-}

-- | Usage: @'glVertexArrayAttribIFormat' vaobj attribindex size type relativeoffset@


glVertexArrayAttribIFormat :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
glVertexArrayAttribIFormat = ffiuintuintintenumuintIOV glVertexArrayAttribIFormatFunPtr

glVertexArrayAttribIFormatFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ())
glVertexArrayAttribIFormatFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribIFormat")

{-# NOINLINE glVertexArrayAttribIFormatFunPtr #-}

-- | Usage: @'glVertexArrayAttribLFormat' vaobj attribindex size type relativeoffset@


glVertexArrayAttribLFormat :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
glVertexArrayAttribLFormat = ffiuintuintintenumuintIOV glVertexArrayAttribLFormatFunPtr

glVertexArrayAttribLFormatFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ())
glVertexArrayAttribLFormatFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribLFormat")

{-# NOINLINE glVertexArrayAttribLFormatFunPtr #-}

-- | Usage: @'glVertexArrayBindingDivisor' vaobj bindingindex divisor@


glVertexArrayBindingDivisor :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexArrayBindingDivisor = ffiuintuintuintIOV glVertexArrayBindingDivisorFunPtr

glVertexArrayBindingDivisorFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexArrayBindingDivisorFunPtr = unsafePerformIO (getProcAddress "glVertexArrayBindingDivisor")

{-# NOINLINE glVertexArrayBindingDivisorFunPtr #-}

-- | Usage: @'glVertexArrayElementBuffer' vaobj buffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glVertexArrayElementBuffer.xhtml>


glVertexArrayElementBuffer :: MonadIO m => GLuint -> GLuint -> m ()
glVertexArrayElementBuffer = ffiuintuintIOV glVertexArrayElementBufferFunPtr

glVertexArrayElementBufferFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexArrayElementBufferFunPtr = unsafePerformIO (getProcAddress "glVertexArrayElementBuffer")

{-# NOINLINE glVertexArrayElementBufferFunPtr #-}

-- | Usage: @'glVertexArrayVertexBuffer' vaobj bindingindex buffer offset stride@


glVertexArrayVertexBuffer :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
glVertexArrayVertexBuffer = ffiuintuintuintintptrsizeiIOV glVertexArrayVertexBufferFunPtr

glVertexArrayVertexBufferFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ())
glVertexArrayVertexBufferFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexBuffer")

{-# NOINLINE glVertexArrayVertexBufferFunPtr #-}

-- | Usage: @'glVertexArrayVertexBuffers' vaobj first count buffers offsets strides@


glVertexArrayVertexBuffers :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> m ()
glVertexArrayVertexBuffers = ffiuintuintsizeiPtruintPtrintptrPtrsizeiIOV glVertexArrayVertexBuffersFunPtr

glVertexArrayVertexBuffersFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ())
glVertexArrayVertexBuffersFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexBuffers")

{-# NOINLINE glVertexArrayVertexBuffersFunPtr #-}

pattern GL_QUERY_TARGET = 0x82EA

pattern GL_TEXTURE_BINDING = 0x82EB

pattern GL_TEXTURE_BINDING_1D = 0x8068

pattern GL_TEXTURE_BINDING_1D_ARRAY = 0x8C1C

pattern GL_TEXTURE_BINDING_2D = 0x8069

pattern GL_TEXTURE_BINDING_2D_ARRAY = 0x8C1D

pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104

pattern GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105

pattern GL_TEXTURE_BINDING_3D = 0x806A

pattern GL_TEXTURE_BINDING_BUFFER = 0x8C2C

pattern GL_TEXTURE_BINDING_CUBE_MAP = 0x8514

pattern GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A

pattern GL_TEXTURE_BINDING_RECTANGLE = 0x84F6

pattern GL_TEXTURE_TARGET = 0x1006

-- | Usage: @'glDrawElementsBaseVertex' mode count type indices basevertex@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- The parameter @type@ is a @DrawElementsType@.
--
-- The length of @indices@ should be @COMPSIZE(count,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawElementsBaseVertex.xhtml>


glDrawElementsBaseVertex :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLint -> m ()
glDrawElementsBaseVertex = ffienumsizeienumPtrVintIOV glDrawElementsBaseVertexFunPtr

glDrawElementsBaseVertexFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ())
glDrawElementsBaseVertexFunPtr = unsafePerformIO (getProcAddress "glDrawElementsBaseVertex")

{-# NOINLINE glDrawElementsBaseVertexFunPtr #-}

-- | Usage: @'glDrawElementsInstancedBaseVertex' mode count type indices instancecount basevertex@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- The parameter @type@ is a @DrawElementsType@.
--
-- The length of @indices@ should be @COMPSIZE(count,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawElementsInstancedBaseVertex.xhtml>


glDrawElementsInstancedBaseVertex :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> m ()
glDrawElementsInstancedBaseVertex = ffienumsizeienumPtrVsizeiintIOV glDrawElementsInstancedBaseVertexFunPtr

glDrawElementsInstancedBaseVertexFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> GLint -> IO ())
glDrawElementsInstancedBaseVertexFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedBaseVertex")

{-# NOINLINE glDrawElementsInstancedBaseVertexFunPtr #-}

-- | Usage: @'glDrawRangeElementsBaseVertex' mode start end count type indices basevertex@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- The parameter @type@ is a @DrawElementsType@.
--
-- The length of @indices@ should be @COMPSIZE(count,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawRangeElementsBaseVertex.xhtml>


glDrawRangeElementsBaseVertex :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GLint -> m ()
glDrawRangeElementsBaseVertex = ffienumuintuintsizeienumPtrVintIOV glDrawRangeElementsBaseVertexFunPtr

glDrawRangeElementsBaseVertexFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> GLint -> IO ())
glDrawRangeElementsBaseVertexFunPtr = unsafePerformIO (getProcAddress "glDrawRangeElementsBaseVertex")

{-# NOINLINE glDrawRangeElementsBaseVertexFunPtr #-}

-- | Usage: @'glMultiDrawElementsBaseVertex' mode count type indices drawcount basevertex@
--
-- The parameter @type@ is a @DrawElementsType@.
--
-- The length of @count@ should be @COMPSIZE(drawcount)@.
--
-- The length of @indices@ should be @COMPSIZE(drawcount)@.
--
-- The length of @basevertex@ should be @COMPSIZE(drawcount)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMultiDrawElementsBaseVertex.xhtml>


glMultiDrawElementsBaseVertex :: MonadIO m => GLenum -> Ptr GLsizei -> GLenum -> Ptr (Ptr ()) -> GLsizei -> Ptr GLint -> m ()
glMultiDrawElementsBaseVertex = ffienumPtrsizeienumPtrPtrVsizeiPtrintIOV glMultiDrawElementsBaseVertexFunPtr

glMultiDrawElementsBaseVertexFunPtr :: FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr (Ptr ()) -> GLsizei -> Ptr GLint -> IO ())
glMultiDrawElementsBaseVertexFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsBaseVertex")

{-# NOINLINE glMultiDrawElementsBaseVertexFunPtr #-}

-- | Usage: @'glDrawArraysIndirect' mode indirect@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawArraysIndirect.xhtml>


glDrawArraysIndirect :: MonadIO m => GLenum -> Ptr () -> m ()
glDrawArraysIndirect = ffienumPtrVIOV glDrawArraysIndirectFunPtr

glDrawArraysIndirectFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
glDrawArraysIndirectFunPtr = unsafePerformIO (getProcAddress "glDrawArraysIndirect")

{-# NOINLINE glDrawArraysIndirectFunPtr #-}

-- | Usage: @'glDrawElementsIndirect' mode type indirect@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_LINES', 'Graphics.GL.Raw.Profile.Core32.GL_LINES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_PATCHES', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_POINTS', 'Graphics.GL.Raw.Internal.Shared.GL_POLYGON', 'Graphics.GL.Raw.Internal.Shared.GL_QUADS', 'Graphics.GL.Raw.Extension.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Raw.Profile.Core32.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Raw.Extension.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Raw.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawElementsIndirect.xhtml>


glDrawElementsIndirect :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
glDrawElementsIndirect = ffienumenumPtrVIOV glDrawElementsIndirectFunPtr

glDrawElementsIndirectFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
glDrawElementsIndirectFunPtr = unsafePerformIO (getProcAddress "glDrawElementsIndirect")

{-# NOINLINE glDrawElementsIndirectFunPtr #-}

pattern GL_DRAW_INDIRECT_BUFFER = 0x8F3F

pattern GL_DRAW_INDIRECT_BUFFER_BINDING = 0x8F43

-- | Usage: @'glClearDepthf' d@


glClearDepthf :: MonadIO m => GLfloat -> m ()
glClearDepthf = ffifloatIOV glClearDepthfFunPtr

glClearDepthfFunPtr :: FunPtr (GLfloat -> IO ())
glClearDepthfFunPtr = unsafePerformIO (getProcAddress "glClearDepthf")

{-# NOINLINE glClearDepthfFunPtr #-}

-- | Usage: @'glDepthRangef' n f@


glDepthRangef :: MonadIO m => GLfloat -> GLfloat -> m ()
glDepthRangef = ffifloatfloatIOV glDepthRangefFunPtr

glDepthRangefFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glDepthRangefFunPtr = unsafePerformIO (getProcAddress "glDepthRangef")

{-# NOINLINE glDepthRangefFunPtr #-}

-- | Usage: @'glGetShaderPrecisionFormat' shadertype precisiontype range precision@
--
-- The length of @range@ should be @2@.
--
-- The length of @precision@ should be @2@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetShaderPrecisionFormat.xhtml>


glGetShaderPrecisionFormat :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> m ()
glGetShaderPrecisionFormat = ffienumenumPtrintPtrintIOV glGetShaderPrecisionFormatFunPtr

glGetShaderPrecisionFormatFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> Ptr GLint -> IO ())
glGetShaderPrecisionFormatFunPtr = unsafePerformIO (getProcAddress "glGetShaderPrecisionFormat")

{-# NOINLINE glGetShaderPrecisionFormatFunPtr #-}

-- | Usage: @'glReleaseShaderCompiler'@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glReleaseShaderCompiler.xhtml>


glReleaseShaderCompiler :: MonadIO m => m ()
glReleaseShaderCompiler = ffiIOV glReleaseShaderCompilerFunPtr

glReleaseShaderCompilerFunPtr :: FunPtr (IO ())
glReleaseShaderCompilerFunPtr = unsafePerformIO (getProcAddress "glReleaseShaderCompiler")

{-# NOINLINE glReleaseShaderCompilerFunPtr #-}

-- | Usage: @'glShaderBinary' count shaders binaryformat binary length@
--
-- The length of @shaders@ should be @count@.
--
-- The length of @binary@ should be @length@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glShaderBinary.xhtml>


glShaderBinary :: MonadIO m => GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> m ()
glShaderBinary = ffisizeiPtruintenumPtrVsizeiIOV glShaderBinaryFunPtr

glShaderBinaryFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> GLenum -> Ptr () -> GLsizei -> IO ())
glShaderBinaryFunPtr = unsafePerformIO (getProcAddress "glShaderBinary")

{-# NOINLINE glShaderBinaryFunPtr #-}

pattern GL_FIXED = 0x140C

pattern GL_HIGH_FLOAT = 0x8DF2

pattern GL_HIGH_INT = 0x8DF5

pattern GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B

pattern GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A

pattern GL_LOW_FLOAT = 0x8DF0

pattern GL_LOW_INT = 0x8DF3

pattern GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD

pattern GL_MAX_VARYING_VECTORS = 0x8DFC

pattern GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB

pattern GL_MEDIUM_FLOAT = 0x8DF1

pattern GL_MEDIUM_INT = 0x8DF4

pattern GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9

pattern GL_RGB565 = 0x8D62

pattern GL_SHADER_BINARY_FORMATS = 0x8DF8

pattern GL_SHADER_COMPILER = 0x8DFA

-- | Usage: @'glMemoryBarrierByRegion' barriers@


glMemoryBarrierByRegion :: MonadIO m => GLbitfield -> m ()
glMemoryBarrierByRegion = ffibitfieldIOV glMemoryBarrierByRegionFunPtr

glMemoryBarrierByRegionFunPtr :: FunPtr (GLbitfield -> IO ())
glMemoryBarrierByRegionFunPtr = unsafePerformIO (getProcAddress "glMemoryBarrierByRegion")

{-# NOINLINE glMemoryBarrierByRegionFunPtr #-}

pattern GL_BACK = 0x0405

pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A

pattern GL_COMPRESSED_R11_EAC = 0x9270

pattern GL_COMPRESSED_RG11_EAC = 0x9272

pattern GL_COMPRESSED_RGB8_ETC2 = 0x9274

pattern GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276

pattern GL_COMPRESSED_RGBA8_ETC2_EAC = 0x9278

pattern GL_COMPRESSED_SIGNED_R11_EAC = 0x9271

pattern GL_COMPRESSED_SIGNED_RG11_EAC = 0x9273

pattern GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279

pattern GL_COMPRESSED_SRGB8_ETC2 = 0x9275

pattern GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277

pattern GL_MAX_ELEMENT_INDEX = 0x8D6B

pattern GL_PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69

pattern GL_LOCATION_COMPONENT = 0x934A

pattern GL_TRANSFORM_FEEDBACK_BUFFER = 0x8C8E

pattern GL_TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B

pattern GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C

pattern GL_MAX_UNIFORM_LOCATIONS = 0x826E

-- | Usage: @'glBindProgramARB' target program@
--
-- The parameter @target@ is a @ProgramTargetARB@.


glBindProgramARB :: MonadIO m => GLenum -> GLuint -> m ()
glBindProgramARB = ffienumuintIOV glBindProgramARBFunPtr

glBindProgramARBFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindProgramARBFunPtr = unsafePerformIO (getProcAddress "glBindProgramARB")

{-# NOINLINE glBindProgramARBFunPtr #-}

-- | Usage: @'glDeleteProgramsARB' n programs@
--
-- The length of @programs@ should be @n@.


glDeleteProgramsARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteProgramsARB = ffisizeiPtruintIOV glDeleteProgramsARBFunPtr

glDeleteProgramsARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteProgramsARBFunPtr = unsafePerformIO (getProcAddress "glDeleteProgramsARB")

{-# NOINLINE glDeleteProgramsARBFunPtr #-}

-- | Usage: @'glGenProgramsARB' n programs@
--
-- The length of @programs@ should be @n@.


glGenProgramsARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenProgramsARB = ffisizeiPtruintIOV glGenProgramsARBFunPtr

glGenProgramsARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramsARBFunPtr = unsafePerformIO (getProcAddress "glGenProgramsARB")

{-# NOINLINE glGenProgramsARBFunPtr #-}

-- | Usage: @'glGetProgramEnvParameterdvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramEnvParameterdvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glGetProgramEnvParameterdvARB = ffienumuintPtrdoubleIOV glGetProgramEnvParameterdvARBFunPtr

glGetProgramEnvParameterdvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glGetProgramEnvParameterdvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramEnvParameterdvARB")

{-# NOINLINE glGetProgramEnvParameterdvARBFunPtr #-}

-- | Usage: @'glGetProgramEnvParameterfvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramEnvParameterfvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetProgramEnvParameterfvARB = ffienumuintPtrfloatIOV glGetProgramEnvParameterfvARBFunPtr

glGetProgramEnvParameterfvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetProgramEnvParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramEnvParameterfvARB")

{-# NOINLINE glGetProgramEnvParameterfvARBFunPtr #-}

-- | Usage: @'glGetProgramLocalParameterdvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramLocalParameterdvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glGetProgramLocalParameterdvARB = ffienumuintPtrdoubleIOV glGetProgramLocalParameterdvARBFunPtr

glGetProgramLocalParameterdvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glGetProgramLocalParameterdvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramLocalParameterdvARB")

{-# NOINLINE glGetProgramLocalParameterdvARBFunPtr #-}

-- | Usage: @'glGetProgramLocalParameterfvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramLocalParameterfvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetProgramLocalParameterfvARB = ffienumuintPtrfloatIOV glGetProgramLocalParameterfvARBFunPtr

glGetProgramLocalParameterfvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetProgramLocalParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramLocalParameterfvARB")

{-# NOINLINE glGetProgramLocalParameterfvARBFunPtr #-}

-- | Usage: @'glGetProgramStringARB' target pname string@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The parameter @pname@ is a @ProgramStringPropertyARB@.
--
-- The length of @string@ should be @COMPSIZE(target,pname)@.


glGetProgramStringARB :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
glGetProgramStringARB = ffienumenumPtrVIOV glGetProgramStringARBFunPtr

glGetProgramStringARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
glGetProgramStringARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramStringARB")

{-# NOINLINE glGetProgramStringARBFunPtr #-}

-- | Usage: @'glGetProgramivARB' target pname params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The parameter @pname@ is a @ProgramPropertyARB@.
--
-- The length of @params@ should be @1@.


glGetProgramivARB :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetProgramivARB = ffienumenumPtrintIOV glGetProgramivARBFunPtr

glGetProgramivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetProgramivARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramivARB")

{-# NOINLINE glGetProgramivARBFunPtr #-}

-- | Usage: @'glIsProgramARB' program@


glIsProgramARB :: MonadIO m => GLuint -> m GLboolean
glIsProgramARB = ffiuintIOboolean glIsProgramARBFunPtr

glIsProgramARBFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramARBFunPtr = unsafePerformIO (getProcAddress "glIsProgramARB")

{-# NOINLINE glIsProgramARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4dARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Raw.Internal.Shared.glProgramEnvParameter4dvARB'.


glProgramEnvParameter4dARB :: MonadIO m => GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramEnvParameter4dARB = ffienumuintdoubledoubledoubledoubleIOV glProgramEnvParameter4dARBFunPtr

glProgramEnvParameter4dARBFunPtr :: FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramEnvParameter4dARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4dARB")

{-# NOINLINE glProgramEnvParameter4dARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4dvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramEnvParameter4dvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glProgramEnvParameter4dvARB = ffienumuintPtrdoubleIOV glProgramEnvParameter4dvARBFunPtr

glProgramEnvParameter4dvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glProgramEnvParameter4dvARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4dvARB")

{-# NOINLINE glProgramEnvParameter4dvARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4fARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Raw.Internal.Shared.glProgramEnvParameter4fvARB'.


glProgramEnvParameter4fARB :: MonadIO m => GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramEnvParameter4fARB = ffienumuintfloatfloatfloatfloatIOV glProgramEnvParameter4fARBFunPtr

glProgramEnvParameter4fARBFunPtr :: FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramEnvParameter4fARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4fARB")

{-# NOINLINE glProgramEnvParameter4fARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4fvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramEnvParameter4fvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glProgramEnvParameter4fvARB = ffienumuintPtrfloatIOV glProgramEnvParameter4fvARBFunPtr

glProgramEnvParameter4fvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glProgramEnvParameter4fvARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4fvARB")

{-# NOINLINE glProgramEnvParameter4fvARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4dARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Raw.Internal.Shared.glProgramLocalParameter4dvARB'.


glProgramLocalParameter4dARB :: MonadIO m => GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramLocalParameter4dARB = ffienumuintdoubledoubledoubledoubleIOV glProgramLocalParameter4dARBFunPtr

glProgramLocalParameter4dARBFunPtr :: FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramLocalParameter4dARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4dARB")

{-# NOINLINE glProgramLocalParameter4dARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4dvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramLocalParameter4dvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glProgramLocalParameter4dvARB = ffienumuintPtrdoubleIOV glProgramLocalParameter4dvARBFunPtr

glProgramLocalParameter4dvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glProgramLocalParameter4dvARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4dvARB")

{-# NOINLINE glProgramLocalParameter4dvARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4fARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Raw.Internal.Shared.glProgramLocalParameter4fvARB'.


glProgramLocalParameter4fARB :: MonadIO m => GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramLocalParameter4fARB = ffienumuintfloatfloatfloatfloatIOV glProgramLocalParameter4fARBFunPtr

glProgramLocalParameter4fARBFunPtr :: FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramLocalParameter4fARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4fARB")

{-# NOINLINE glProgramLocalParameter4fARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4fvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramLocalParameter4fvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glProgramLocalParameter4fvARB = ffienumuintPtrfloatIOV glProgramLocalParameter4fvARBFunPtr

glProgramLocalParameter4fvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glProgramLocalParameter4fvARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4fvARB")

{-# NOINLINE glProgramLocalParameter4fvARBFunPtr #-}

-- | Usage: @'glProgramStringARB' target format len string@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The parameter @format@ is a @ProgramFormatARB@.
--
-- The length of @string@ should be @len@.


glProgramStringARB :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glProgramStringARB = ffienumenumsizeiPtrVIOV glProgramStringARBFunPtr

glProgramStringARBFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glProgramStringARBFunPtr = unsafePerformIO (getProcAddress "glProgramStringARB")

{-# NOINLINE glProgramStringARBFunPtr #-}

pattern GL_CURRENT_MATRIX_ARB = 0x8641

pattern GL_CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640

pattern GL_MATRIX0_ARB = 0x88C0

pattern GL_MATRIX10_ARB = 0x88CA

pattern GL_MATRIX11_ARB = 0x88CB

pattern GL_MATRIX12_ARB = 0x88CC

pattern GL_MATRIX13_ARB = 0x88CD

pattern GL_MATRIX14_ARB = 0x88CE

pattern GL_MATRIX15_ARB = 0x88CF

pattern GL_MATRIX16_ARB = 0x88D0

pattern GL_MATRIX17_ARB = 0x88D1

pattern GL_MATRIX18_ARB = 0x88D2

pattern GL_MATRIX19_ARB = 0x88D3

pattern GL_MATRIX1_ARB = 0x88C1

pattern GL_MATRIX20_ARB = 0x88D4

pattern GL_MATRIX21_ARB = 0x88D5

pattern GL_MATRIX22_ARB = 0x88D6

pattern GL_MATRIX23_ARB = 0x88D7

pattern GL_MATRIX24_ARB = 0x88D8

pattern GL_MATRIX25_ARB = 0x88D9

pattern GL_MATRIX26_ARB = 0x88DA

pattern GL_MATRIX27_ARB = 0x88DB

pattern GL_MATRIX28_ARB = 0x88DC

pattern GL_MATRIX29_ARB = 0x88DD

pattern GL_MATRIX2_ARB = 0x88C2

pattern GL_MATRIX30_ARB = 0x88DE

pattern GL_MATRIX31_ARB = 0x88DF

pattern GL_MATRIX3_ARB = 0x88C3

pattern GL_MATRIX4_ARB = 0x88C4

pattern GL_MATRIX5_ARB = 0x88C5

pattern GL_MATRIX6_ARB = 0x88C6

pattern GL_MATRIX7_ARB = 0x88C7

pattern GL_MATRIX8_ARB = 0x88C8

pattern GL_MATRIX9_ARB = 0x88C9

pattern GL_MAX_PROGRAM_ATTRIBS_ARB = 0x88AD

pattern GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5

pattern GL_MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1

pattern GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4

pattern GL_MAX_PROGRAM_MATRICES_ARB = 0x862F

pattern GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E

pattern GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF

pattern GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3

pattern GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB

pattern GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7

pattern GL_MAX_PROGRAM_PARAMETERS_ARB = 0x88A9

pattern GL_MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5

pattern GL_MAX_TEXTURE_COORDS_ARB = 0x8871

pattern GL_MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872

pattern GL_PROGRAM_ATTRIBS_ARB = 0x88AC

pattern GL_PROGRAM_BINDING_ARB = 0x8677

pattern GL_PROGRAM_ERROR_POSITION_ARB = 0x864B

pattern GL_PROGRAM_ERROR_STRING_ARB = 0x8874

pattern GL_PROGRAM_FORMAT_ARB = 0x8876

pattern GL_PROGRAM_FORMAT_ASCII_ARB = 0x8875

pattern GL_PROGRAM_INSTRUCTIONS_ARB = 0x88A0

pattern GL_PROGRAM_LENGTH_ARB = 0x8627

pattern GL_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE

pattern GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2

pattern GL_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA

pattern GL_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6

pattern GL_PROGRAM_PARAMETERS_ARB = 0x88A8

pattern GL_PROGRAM_STRING_ARB = 0x8628

pattern GL_PROGRAM_TEMPORARIES_ARB = 0x88A4

pattern GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6

pattern GL_TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7

-- | Usage: @'glFramebufferParameteri' target pname param@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFramebufferParameteri.xhtml>


glFramebufferParameteri :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glFramebufferParameteri = ffienumenumintIOV glFramebufferParameteriFunPtr

glFramebufferParameteriFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glFramebufferParameteriFunPtr = unsafePerformIO (getProcAddress "glFramebufferParameteri")

{-# NOINLINE glFramebufferParameteriFunPtr #-}

-- | Usage: @'glGetFramebufferParameteriv' target pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetFramebufferParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetFramebufferParameteriv = ffienumenumPtrintIOV glGetFramebufferParameterivFunPtr

glGetFramebufferParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetFramebufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferParameteriv")

{-# NOINLINE glGetFramebufferParameterivFunPtr #-}

pattern GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314

pattern GL_FRAMEBUFFER_DEFAULT_HEIGHT = 0x9311

pattern GL_FRAMEBUFFER_DEFAULT_LAYERS = 0x9312

pattern GL_FRAMEBUFFER_DEFAULT_SAMPLES = 0x9313

pattern GL_FRAMEBUFFER_DEFAULT_WIDTH = 0x9310

pattern GL_MAX_FRAMEBUFFER_HEIGHT = 0x9316

pattern GL_MAX_FRAMEBUFFER_LAYERS = 0x9317

pattern GL_MAX_FRAMEBUFFER_SAMPLES = 0x9318

pattern GL_MAX_FRAMEBUFFER_WIDTH = 0x9315

-- | Usage: @'glBindFramebuffer' target framebuffer@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindFramebuffer.xhtml>


glBindFramebuffer :: MonadIO m => GLenum -> GLuint -> m ()
glBindFramebuffer = ffienumuintIOV glBindFramebufferFunPtr

glBindFramebufferFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindFramebufferFunPtr = unsafePerformIO (getProcAddress "glBindFramebuffer")

{-# NOINLINE glBindFramebufferFunPtr #-}

-- | Usage: @'glBindRenderbuffer' target renderbuffer@
--
-- The parameter @target@ is a @RenderbufferTarget@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindRenderbuffer.xhtml>


glBindRenderbuffer :: MonadIO m => GLenum -> GLuint -> m ()
glBindRenderbuffer = ffienumuintIOV glBindRenderbufferFunPtr

glBindRenderbufferFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindRenderbufferFunPtr = unsafePerformIO (getProcAddress "glBindRenderbuffer")

{-# NOINLINE glBindRenderbufferFunPtr #-}

-- | Usage: @'glBlitFramebuffer' srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1 dstY1 mask filter@
--
-- The parameter @mask@ is a @ClearBufferMask@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_ACCUM_BUFFER_BIT', 'Graphics.GL.Raw.Internal.Shared.GL_COLOR_BUFFER_BIT', 'Graphics.GL.Raw.Extension.NV.CoverageSample.GL_COVERAGE_BUFFER_BIT_NV', 'Graphics.GL.Raw.Internal.Shared.GL_DEPTH_BUFFER_BIT', 'Graphics.GL.Raw.Internal.Shared.GL_STENCIL_BUFFER_BIT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBlitFramebuffer.xhtml>


glBlitFramebuffer :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
glBlitFramebuffer = ffiintintintintintintintintbitfieldenumIOV glBlitFramebufferFunPtr

glBlitFramebufferFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ())
glBlitFramebufferFunPtr = unsafePerformIO (getProcAddress "glBlitFramebuffer")

{-# NOINLINE glBlitFramebufferFunPtr #-}

-- | Usage: @'glCheckFramebufferStatus' target@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCheckFramebufferStatus.xhtml>


glCheckFramebufferStatus :: MonadIO m => GLenum -> m GLenum
glCheckFramebufferStatus = ffienumIOenum glCheckFramebufferStatusFunPtr

glCheckFramebufferStatusFunPtr :: FunPtr (GLenum -> IO GLenum)
glCheckFramebufferStatusFunPtr = unsafePerformIO (getProcAddress "glCheckFramebufferStatus")

{-# NOINLINE glCheckFramebufferStatusFunPtr #-}

-- | Usage: @'glDeleteFramebuffers' n framebuffers@
--
-- The length of @framebuffers@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDeleteFramebuffers.xhtml>


glDeleteFramebuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteFramebuffers = ffisizeiPtruintIOV glDeleteFramebuffersFunPtr

glDeleteFramebuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteFramebuffersFunPtr = unsafePerformIO (getProcAddress "glDeleteFramebuffers")

{-# NOINLINE glDeleteFramebuffersFunPtr #-}

-- | Usage: @'glDeleteRenderbuffers' n renderbuffers@
--
-- The length of @renderbuffers@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDeleteRenderbuffers.xhtml>


glDeleteRenderbuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteRenderbuffers = ffisizeiPtruintIOV glDeleteRenderbuffersFunPtr

glDeleteRenderbuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteRenderbuffersFunPtr = unsafePerformIO (getProcAddress "glDeleteRenderbuffers")

{-# NOINLINE glDeleteRenderbuffersFunPtr #-}

-- | Usage: @'glFramebufferRenderbuffer' target attachment renderbuffertarget renderbuffer@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @renderbuffertarget@ is a @RenderbufferTarget@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFramebufferRenderbuffer.xhtml>


glFramebufferRenderbuffer :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> m ()
glFramebufferRenderbuffer = ffienumenumenumuintIOV glFramebufferRenderbufferFunPtr

glFramebufferRenderbufferFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> IO ())
glFramebufferRenderbufferFunPtr = unsafePerformIO (getProcAddress "glFramebufferRenderbuffer")

{-# NOINLINE glFramebufferRenderbufferFunPtr #-}

-- | Usage: @'glFramebufferTexture1D' target attachment textarget texture level@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.


glFramebufferTexture1D :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTexture1D = ffienumenumenumuintintIOV glFramebufferTexture1DFunPtr

glFramebufferTexture1DFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTexture1DFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture1D")

{-# NOINLINE glFramebufferTexture1DFunPtr #-}

-- | Usage: @'glFramebufferTexture2D' target attachment textarget texture level@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.


glFramebufferTexture2D :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTexture2D = ffienumenumenumuintintIOV glFramebufferTexture2DFunPtr

glFramebufferTexture2DFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTexture2DFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture2D")

{-# NOINLINE glFramebufferTexture2DFunPtr #-}

-- | Usage: @'glFramebufferTexture3D' target attachment textarget texture level zoffset@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.


glFramebufferTexture3D :: MonadIO m => GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
glFramebufferTexture3D = ffienumenumenumuintintintIOV glFramebufferTexture3DFunPtr

glFramebufferTexture3DFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glFramebufferTexture3DFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture3D")

{-# NOINLINE glFramebufferTexture3DFunPtr #-}

-- | Usage: @'glFramebufferTextureLayer' target attachment texture level layer@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @texture@ is a @Texture@.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @layer@ is a @CheckedInt32@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFramebufferTextureLayer.xhtml>


glFramebufferTextureLayer :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
glFramebufferTextureLayer = ffienumenumuintintintIOV glFramebufferTextureLayerFunPtr

glFramebufferTextureLayerFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glFramebufferTextureLayerFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureLayer")

{-# NOINLINE glFramebufferTextureLayerFunPtr #-}

-- | Usage: @'glGenFramebuffers' n framebuffers@
--
-- The length of @framebuffers@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGenFramebuffers.xhtml>


glGenFramebuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenFramebuffers = ffisizeiPtruintIOV glGenFramebuffersFunPtr

glGenFramebuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenFramebuffersFunPtr = unsafePerformIO (getProcAddress "glGenFramebuffers")

{-# NOINLINE glGenFramebuffersFunPtr #-}

-- | Usage: @'glGenRenderbuffers' n renderbuffers@
--
-- The length of @renderbuffers@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGenRenderbuffers.xhtml>


glGenRenderbuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenRenderbuffers = ffisizeiPtruintIOV glGenRenderbuffersFunPtr

glGenRenderbuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenRenderbuffersFunPtr = unsafePerformIO (getProcAddress "glGenRenderbuffers")

{-# NOINLINE glGenRenderbuffersFunPtr #-}

-- | Usage: @'glGenerateMipmap' target@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGenerateMipmap.xhtml>


glGenerateMipmap :: MonadIO m => GLenum -> m ()
glGenerateMipmap = ffienumIOV glGenerateMipmapFunPtr

glGenerateMipmapFunPtr :: FunPtr (GLenum -> IO ())
glGenerateMipmapFunPtr = unsafePerformIO (getProcAddress "glGenerateMipmap")

{-# NOINLINE glGenerateMipmapFunPtr #-}

-- | Usage: @'glGetFramebufferAttachmentParameteriv' target attachment pname params@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetFramebufferAttachmentParameteriv :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetFramebufferAttachmentParameteriv = ffienumenumenumPtrintIOV glGetFramebufferAttachmentParameterivFunPtr

glGetFramebufferAttachmentParameterivFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetFramebufferAttachmentParameterivFunPtr = unsafePerformIO (getProcAddress "glGetFramebufferAttachmentParameteriv")

{-# NOINLINE glGetFramebufferAttachmentParameterivFunPtr #-}

-- | Usage: @'glGetRenderbufferParameteriv' target pname params@
--
-- The parameter @target@ is a @RenderbufferTarget@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetRenderbufferParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetRenderbufferParameteriv = ffienumenumPtrintIOV glGetRenderbufferParameterivFunPtr

glGetRenderbufferParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetRenderbufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetRenderbufferParameteriv")

{-# NOINLINE glGetRenderbufferParameterivFunPtr #-}

-- | Usage: @'glIsFramebuffer' framebuffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glIsFramebuffer.xhtml>


glIsFramebuffer :: MonadIO m => GLuint -> m GLboolean
glIsFramebuffer = ffiuintIOboolean glIsFramebufferFunPtr

glIsFramebufferFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsFramebufferFunPtr = unsafePerformIO (getProcAddress "glIsFramebuffer")

{-# NOINLINE glIsFramebufferFunPtr #-}

-- | Usage: @'glIsRenderbuffer' renderbuffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glIsRenderbuffer.xhtml>


glIsRenderbuffer :: MonadIO m => GLuint -> m GLboolean
glIsRenderbuffer = ffiuintIOboolean glIsRenderbufferFunPtr

glIsRenderbufferFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsRenderbufferFunPtr = unsafePerformIO (getProcAddress "glIsRenderbuffer")

{-# NOINLINE glIsRenderbufferFunPtr #-}

-- | Usage: @'glRenderbufferStorage' target internalformat width height@
--
-- The parameter @target@ is a @RenderbufferTarget@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glRenderbufferStorage.xhtml>


glRenderbufferStorage :: MonadIO m => GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
glRenderbufferStorage = ffienumenumsizeisizeiIOV glRenderbufferStorageFunPtr

glRenderbufferStorageFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> GLsizei -> IO ())
glRenderbufferStorageFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorage")

{-# NOINLINE glRenderbufferStorageFunPtr #-}

-- | Usage: @'glRenderbufferStorageMultisample' target samples internalformat width height@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glRenderbufferStorageMultisample.xhtml>


glRenderbufferStorageMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glRenderbufferStorageMultisample = ffienumsizeienumsizeisizeiIOV glRenderbufferStorageMultisampleFunPtr

glRenderbufferStorageMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glRenderbufferStorageMultisampleFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisample")

{-# NOINLINE glRenderbufferStorageMultisampleFunPtr #-}

pattern GL_COLOR_ATTACHMENT0 = 0x8CE0

pattern GL_COLOR_ATTACHMENT1 = 0x8CE1

pattern GL_COLOR_ATTACHMENT10 = 0x8CEA

pattern GL_COLOR_ATTACHMENT11 = 0x8CEB

pattern GL_COLOR_ATTACHMENT12 = 0x8CEC

pattern GL_COLOR_ATTACHMENT13 = 0x8CED

pattern GL_COLOR_ATTACHMENT14 = 0x8CEE

pattern GL_COLOR_ATTACHMENT15 = 0x8CEF

pattern GL_COLOR_ATTACHMENT2 = 0x8CE2

pattern GL_COLOR_ATTACHMENT3 = 0x8CE3

pattern GL_COLOR_ATTACHMENT4 = 0x8CE4

pattern GL_COLOR_ATTACHMENT5 = 0x8CE5

pattern GL_COLOR_ATTACHMENT6 = 0x8CE6

pattern GL_COLOR_ATTACHMENT7 = 0x8CE7

pattern GL_COLOR_ATTACHMENT8 = 0x8CE8

pattern GL_COLOR_ATTACHMENT9 = 0x8CE9

pattern GL_DEPTH24_STENCIL8 = 0x88F0

pattern GL_DEPTH_ATTACHMENT = 0x8D00

pattern GL_DEPTH_STENCIL = 0x84F9

pattern GL_DEPTH_STENCIL_ATTACHMENT = 0x821A

pattern GL_DRAW_FRAMEBUFFER = 0x8CA9

pattern GL_DRAW_FRAMEBUFFER_BINDING = 0x8CA6

pattern GL_FRAMEBUFFER = 0x8D40

pattern GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215

pattern GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214

pattern GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210

pattern GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211

pattern GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216

pattern GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213

pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1

pattern GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0

pattern GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212

pattern GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2

pattern GL_FRAMEBUFFER_BINDING = 0x8CA6

pattern GL_FRAMEBUFFER_COMPLETE = 0x8CD5

pattern GL_FRAMEBUFFER_DEFAULT = 0x8218

pattern GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6

pattern GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB

pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7

pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56

pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC

pattern GL_FRAMEBUFFER_UNDEFINED = 0x8219

pattern GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD

pattern GL_INDEX = 0x8222

pattern GL_INVALID_FRAMEBUFFER_OPERATION = 0x0506

pattern GL_MAX_COLOR_ATTACHMENTS = 0x8CDF

pattern GL_MAX_RENDERBUFFER_SIZE = 0x84E8

pattern GL_MAX_SAMPLES = 0x8D57

pattern GL_READ_FRAMEBUFFER = 0x8CA8

pattern GL_READ_FRAMEBUFFER_BINDING = 0x8CAA

pattern GL_RENDERBUFFER = 0x8D41

pattern GL_RENDERBUFFER_ALPHA_SIZE = 0x8D53

pattern GL_RENDERBUFFER_BINDING = 0x8CA7

pattern GL_RENDERBUFFER_BLUE_SIZE = 0x8D52

pattern GL_RENDERBUFFER_DEPTH_SIZE = 0x8D54

pattern GL_RENDERBUFFER_GREEN_SIZE = 0x8D51

pattern GL_RENDERBUFFER_HEIGHT = 0x8D43

pattern GL_RENDERBUFFER_INTERNAL_FORMAT = 0x8D44

pattern GL_RENDERBUFFER_RED_SIZE = 0x8D50

pattern GL_RENDERBUFFER_SAMPLES = 0x8CAB

pattern GL_RENDERBUFFER_STENCIL_SIZE = 0x8D55

pattern GL_RENDERBUFFER_WIDTH = 0x8D42

pattern GL_STENCIL_ATTACHMENT = 0x8D20

pattern GL_STENCIL_INDEX1 = 0x8D46

pattern GL_STENCIL_INDEX16 = 0x8D49

pattern GL_STENCIL_INDEX4 = 0x8D47

pattern GL_STENCIL_INDEX8 = 0x8D48

pattern GL_TEXTURE_STENCIL_SIZE = 0x88F1

pattern GL_UNSIGNED_INT_24_8 = 0x84FA

pattern GL_UNSIGNED_NORMALIZED = 0x8C17

pattern GL_FRAMEBUFFER_SRGB = 0x8DB9

pattern GL_MAX_VARYING_COMPONENTS = 0x8B4B

-- | Usage: @'glGetProgramBinary' program bufSize length binaryFormat binary@
--
-- The length of @length@ should be @1@.
--
-- The length of @binaryFormat@ should be @1@.
--
-- The length of @binary@ should be @bufSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetProgramBinary.xhtml>


glGetProgramBinary :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> m ()
glGetProgramBinary = ffiuintsizeiPtrsizeiPtrenumPtrVIOV glGetProgramBinaryFunPtr

glGetProgramBinaryFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr () -> IO ())
glGetProgramBinaryFunPtr = unsafePerformIO (getProcAddress "glGetProgramBinary")

{-# NOINLINE glGetProgramBinaryFunPtr #-}

-- | Usage: @'glProgramBinary' program binaryFormat binary length@
--
-- The length of @binary@ should be @length@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glProgramBinary.xhtml>


glProgramBinary :: MonadIO m => GLuint -> GLenum -> Ptr () -> GLsizei -> m ()
glProgramBinary = ffiuintenumPtrVsizeiIOV glProgramBinaryFunPtr

glProgramBinaryFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> GLsizei -> IO ())
glProgramBinaryFunPtr = unsafePerformIO (getProcAddress "glProgramBinary")

{-# NOINLINE glProgramBinaryFunPtr #-}

-- | Usage: @'glProgramParameteri' program pname value@
--
-- The parameter @pname@ is a @ProgramParameterPName@.


glProgramParameteri :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glProgramParameteri = ffiuintenumintIOV glProgramParameteriFunPtr

glProgramParameteriFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glProgramParameteriFunPtr = unsafePerformIO (getProcAddress "glProgramParameteri")

{-# NOINLINE glProgramParameteriFunPtr #-}

pattern GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE

pattern GL_PROGRAM_BINARY_FORMATS = 0x87FF

pattern GL_PROGRAM_BINARY_LENGTH = 0x8741

pattern GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257

-- | Usage: @'glGetCompressedTextureSubImage' texture level xoffset yoffset zoffset width height depth bufSize pixels@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetCompressedTextureSubImage.xhtml>


glGetCompressedTextureSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> m ()
glGetCompressedTextureSubImage = ffiuintintintintintsizeisizeisizeisizeiPtrVIOV glGetCompressedTextureSubImageFunPtr

glGetCompressedTextureSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> IO ())
glGetCompressedTextureSubImageFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTextureSubImage")

{-# NOINLINE glGetCompressedTextureSubImageFunPtr #-}

-- | Usage: @'glGetTextureSubImage' texture level xoffset yoffset zoffset width height depth format type bufSize pixels@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetTextureSubImage.xhtml>


glGetTextureSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glGetTextureSubImage = ffiuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV glGetTextureSubImageFunPtr

glGetTextureSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glGetTextureSubImageFunPtr = unsafePerformIO (getProcAddress "glGetTextureSubImage")

{-# NOINLINE glGetTextureSubImageFunPtr #-}

pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D

pattern GL_GEOMETRY_SHADER_INVOCATIONS = 0x887F

pattern GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C

pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A

pattern GL_MAX_VERTEX_STREAMS = 0x8E71

pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B

-- | Usage: @'glGetUniformdv' program location params@
--
-- The length of @params@ should be @COMPSIZE(program,location)@.


glGetUniformdv :: MonadIO m => GLuint -> GLint -> Ptr GLdouble -> m ()
glGetUniformdv = ffiuintintPtrdoubleIOV glGetUniformdvFunPtr

glGetUniformdvFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLdouble -> IO ())
glGetUniformdvFunPtr = unsafePerformIO (getProcAddress "glGetUniformdv")

{-# NOINLINE glGetUniformdvFunPtr #-}

-- | Usage: @'glUniform1d' location x@


glUniform1d :: MonadIO m => GLint -> GLdouble -> m ()
glUniform1d = ffiintdoubleIOV glUniform1dFunPtr

glUniform1dFunPtr :: FunPtr (GLint -> GLdouble -> IO ())
glUniform1dFunPtr = unsafePerformIO (getProcAddress "glUniform1d")

{-# NOINLINE glUniform1dFunPtr #-}

-- | Usage: @'glUniform1dv' location count value@
--
-- The length of @value@ should be @count*1@.


glUniform1dv :: MonadIO m => GLint -> GLsizei -> Ptr GLdouble -> m ()
glUniform1dv = ffiintsizeiPtrdoubleIOV glUniform1dvFunPtr

glUniform1dvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLdouble -> IO ())
glUniform1dvFunPtr = unsafePerformIO (getProcAddress "glUniform1dv")

{-# NOINLINE glUniform1dvFunPtr #-}

-- | Usage: @'glUniform2d' location x y@


glUniform2d :: MonadIO m => GLint -> GLdouble -> GLdouble -> m ()
glUniform2d = ffiintdoubledoubleIOV glUniform2dFunPtr

glUniform2dFunPtr :: FunPtr (GLint -> GLdouble -> GLdouble -> IO ())
glUniform2dFunPtr = unsafePerformIO (getProcAddress "glUniform2d")

{-# NOINLINE glUniform2dFunPtr #-}

-- | Usage: @'glUniform2dv' location count value@
--
-- The length of @value@ should be @count*2@.


glUniform2dv :: MonadIO m => GLint -> GLsizei -> Ptr GLdouble -> m ()
glUniform2dv = ffiintsizeiPtrdoubleIOV glUniform2dvFunPtr

glUniform2dvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLdouble -> IO ())
glUniform2dvFunPtr = unsafePerformIO (getProcAddress "glUniform2dv")

{-# NOINLINE glUniform2dvFunPtr #-}

-- | Usage: @'glUniform3d' location x y z@


glUniform3d :: MonadIO m => GLint -> GLdouble -> GLdouble -> GLdouble -> m ()
glUniform3d = ffiintdoubledoubledoubleIOV glUniform3dFunPtr

glUniform3dFunPtr :: FunPtr (GLint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glUniform3dFunPtr = unsafePerformIO (getProcAddress "glUniform3d")

{-# NOINLINE glUniform3dFunPtr #-}

-- | Usage: @'glUniform3dv' location count value@
--
-- The length of @value@ should be @count*3@.


glUniform3dv :: MonadIO m => GLint -> GLsizei -> Ptr GLdouble -> m ()
glUniform3dv = ffiintsizeiPtrdoubleIOV glUniform3dvFunPtr

glUniform3dvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLdouble -> IO ())
glUniform3dvFunPtr = unsafePerformIO (getProcAddress "glUniform3dv")

{-# NOINLINE glUniform3dvFunPtr #-}

-- | Usage: @'glUniform4d' location x y z w@


glUniform4d :: MonadIO m => GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glUniform4d = ffiintdoubledoubledoubledoubleIOV glUniform4dFunPtr

glUniform4dFunPtr :: FunPtr (GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glUniform4dFunPtr = unsafePerformIO (getProcAddress "glUniform4d")

{-# NOINLINE glUniform4dFunPtr #-}

-- | Usage: @'glUniform4dv' location count value@
--
-- The length of @value@ should be @count*4@.


glUniform4dv :: MonadIO m => GLint -> GLsizei -> Ptr GLdouble -> m ()
glUniform4dv = ffiintsizeiPtrdoubleIOV glUniform4dvFunPtr

glUniform4dvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLdouble -> IO ())
glUniform4dvFunPtr = unsafePerformIO (getProcAddress "glUniform4dv")

{-# NOINLINE glUniform4dvFunPtr #-}

-- | Usage: @'glUniformMatrix2dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*4@.


glUniformMatrix2dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix2dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix2dvFunPtr

glUniformMatrix2dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix2dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2dv")

{-# NOINLINE glUniformMatrix2dvFunPtr #-}

-- | Usage: @'glUniformMatrix2x3dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*6@.


glUniformMatrix2x3dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix2x3dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix2x3dvFunPtr

glUniformMatrix2x3dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix2x3dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2x3dv")

{-# NOINLINE glUniformMatrix2x3dvFunPtr #-}

-- | Usage: @'glUniformMatrix2x4dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*8@.


glUniformMatrix2x4dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix2x4dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix2x4dvFunPtr

glUniformMatrix2x4dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix2x4dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2x4dv")

{-# NOINLINE glUniformMatrix2x4dvFunPtr #-}

-- | Usage: @'glUniformMatrix3dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*9@.


glUniformMatrix3dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix3dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix3dvFunPtr

glUniformMatrix3dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix3dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3dv")

{-# NOINLINE glUniformMatrix3dvFunPtr #-}

-- | Usage: @'glUniformMatrix3x2dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*6@.


glUniformMatrix3x2dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix3x2dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix3x2dvFunPtr

glUniformMatrix3x2dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix3x2dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3x2dv")

{-# NOINLINE glUniformMatrix3x2dvFunPtr #-}

-- | Usage: @'glUniformMatrix3x4dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*12@.


glUniformMatrix3x4dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix3x4dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix3x4dvFunPtr

glUniformMatrix3x4dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix3x4dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3x4dv")

{-# NOINLINE glUniformMatrix3x4dvFunPtr #-}

-- | Usage: @'glUniformMatrix4dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*16@.


glUniformMatrix4dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix4dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix4dvFunPtr

glUniformMatrix4dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix4dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4dv")

{-# NOINLINE glUniformMatrix4dvFunPtr #-}

-- | Usage: @'glUniformMatrix4x2dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*8@.


glUniformMatrix4x2dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix4x2dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix4x2dvFunPtr

glUniformMatrix4x2dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix4x2dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4x2dv")

{-# NOINLINE glUniformMatrix4x2dvFunPtr #-}

-- | Usage: @'glUniformMatrix4x3dv' location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*12@.


glUniformMatrix4x3dv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glUniformMatrix4x3dv = ffiintsizeibooleanPtrdoubleIOV glUniformMatrix4x3dvFunPtr

glUniformMatrix4x3dvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glUniformMatrix4x3dvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4x3dv")

{-# NOINLINE glUniformMatrix4x3dvFunPtr #-}

pattern GL_DOUBLE = 0x140A

pattern GL_DOUBLE_MAT2 = 0x8F46

pattern GL_DOUBLE_MAT2x3 = 0x8F49

pattern GL_DOUBLE_MAT2x4 = 0x8F4A

pattern GL_DOUBLE_MAT3 = 0x8F47

pattern GL_DOUBLE_MAT3x2 = 0x8F4B

pattern GL_DOUBLE_MAT3x4 = 0x8F4C

pattern GL_DOUBLE_MAT4 = 0x8F48

pattern GL_DOUBLE_MAT4x2 = 0x8F4D

pattern GL_DOUBLE_MAT4x3 = 0x8F4E

pattern GL_DOUBLE_VEC2 = 0x8FFC

pattern GL_DOUBLE_VEC3 = 0x8FFD

pattern GL_DOUBLE_VEC4 = 0x8FFE

pattern GL_HALF_FLOAT = 0x140B

-- | Usage: @'glBlendColor' red green blue alpha@
--
-- The parameter @red@ is a @ColorF@.
--
-- The parameter @green@ is a @ColorF@.
--
-- The parameter @blue@ is a @ColorF@.
--
-- The parameter @alpha@ is a @ColorF@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBlendColor.xhtml>


glBlendColor :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glBlendColor = ffifloatfloatfloatfloatIOV glBlendColorFunPtr

glBlendColorFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glBlendColorFunPtr = unsafePerformIO (getProcAddress "glBlendColor")

{-# NOINLINE glBlendColorFunPtr #-}

-- | Usage: @'glBlendEquation' mode@
--
-- The parameter @mode@ is a @BlendEquationMode@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBlendEquation.xhtml>


glBlendEquation :: MonadIO m => GLenum -> m ()
glBlendEquation = ffienumIOV glBlendEquationFunPtr

glBlendEquationFunPtr :: FunPtr (GLenum -> IO ())
glBlendEquationFunPtr = unsafePerformIO (getProcAddress "glBlendEquation")

{-# NOINLINE glBlendEquationFunPtr #-}

pattern GL_BLEND_COLOR = 0x8005

pattern GL_BLEND_EQUATION = 0x8009

pattern GL_CONSTANT_ALPHA = 0x8003

pattern GL_CONSTANT_COLOR = 0x8001

pattern GL_FUNC_ADD = 0x8006

pattern GL_FUNC_REVERSE_SUBTRACT = 0x800B

pattern GL_FUNC_SUBTRACT = 0x800A

pattern GL_MAX = 0x8008

pattern GL_MIN = 0x8007

pattern GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004

pattern GL_ONE_MINUS_CONSTANT_COLOR = 0x8002

-- | Usage: @'glGetInternalformativ' target internalformat pname bufSize params@
--
-- The length of @params@ should be @bufSize@.


glGetInternalformativ :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> m ()
glGetInternalformativ = ffienumenumenumsizeiPtrintIOV glGetInternalformativFunPtr

glGetInternalformativFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint -> IO ())
glGetInternalformativFunPtr = unsafePerformIO (getProcAddress "glGetInternalformativ")

{-# NOINLINE glGetInternalformativFunPtr #-}

pattern GL_NUM_SAMPLE_COUNTS = 0x9380

-- | Usage: @'glGetInternalformati64v' target internalformat pname bufSize params@
--
-- The length of @params@ should be @bufSize@.


glGetInternalformati64v :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint64 -> m ()
glGetInternalformati64v = ffienumenumenumsizeiPtrint64IOV glGetInternalformati64vFunPtr

glGetInternalformati64vFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLint64 -> IO ())
glGetInternalformati64vFunPtr = unsafePerformIO (getProcAddress "glGetInternalformati64v")

{-# NOINLINE glGetInternalformati64vFunPtr #-}

pattern GL_AUTO_GENERATE_MIPMAP = 0x8295

pattern GL_CAVEAT_SUPPORT = 0x82B8

pattern GL_CLEAR_BUFFER = 0x82B4

pattern GL_COLOR_COMPONENTS = 0x8283

pattern GL_COLOR_ENCODING = 0x8296

pattern GL_COLOR_RENDERABLE = 0x8286

pattern GL_COMPUTE_TEXTURE = 0x82A0

pattern GL_DEPTH_COMPONENTS = 0x8284

pattern GL_DEPTH_RENDERABLE = 0x8287

pattern GL_FILTER = 0x829A

pattern GL_FRAGMENT_TEXTURE = 0x829F

pattern GL_FRAMEBUFFER_BLEND = 0x828B

pattern GL_FRAMEBUFFER_RENDERABLE = 0x8289

pattern GL_FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A

pattern GL_FULL_SUPPORT = 0x82B7

pattern GL_GEOMETRY_TEXTURE = 0x829E

pattern GL_GET_TEXTURE_IMAGE_FORMAT = 0x8291

pattern GL_GET_TEXTURE_IMAGE_TYPE = 0x8292

pattern GL_IMAGE_CLASS_10_10_10_2 = 0x82C3

pattern GL_IMAGE_CLASS_11_11_10 = 0x82C2

pattern GL_IMAGE_CLASS_1_X_16 = 0x82BE

pattern GL_IMAGE_CLASS_1_X_32 = 0x82BB

pattern GL_IMAGE_CLASS_1_X_8 = 0x82C1

pattern GL_IMAGE_CLASS_2_X_16 = 0x82BD

pattern GL_IMAGE_CLASS_2_X_32 = 0x82BA

pattern GL_IMAGE_CLASS_2_X_8 = 0x82C0

pattern GL_IMAGE_CLASS_4_X_16 = 0x82BC

pattern GL_IMAGE_CLASS_4_X_32 = 0x82B9

pattern GL_IMAGE_CLASS_4_X_8 = 0x82BF

pattern GL_IMAGE_COMPATIBILITY_CLASS = 0x82A8

pattern GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7

pattern GL_IMAGE_PIXEL_FORMAT = 0x82A9

pattern GL_IMAGE_PIXEL_TYPE = 0x82AA

pattern GL_IMAGE_TEXEL_SIZE = 0x82A7

pattern GL_INTERNALFORMAT_ALPHA_SIZE = 0x8274

pattern GL_INTERNALFORMAT_ALPHA_TYPE = 0x827B

pattern GL_INTERNALFORMAT_BLUE_SIZE = 0x8273

pattern GL_INTERNALFORMAT_BLUE_TYPE = 0x827A

pattern GL_INTERNALFORMAT_DEPTH_SIZE = 0x8275

pattern GL_INTERNALFORMAT_DEPTH_TYPE = 0x827C

pattern GL_INTERNALFORMAT_GREEN_SIZE = 0x8272

pattern GL_INTERNALFORMAT_GREEN_TYPE = 0x8279

pattern GL_INTERNALFORMAT_PREFERRED = 0x8270

pattern GL_INTERNALFORMAT_RED_SIZE = 0x8271

pattern GL_INTERNALFORMAT_RED_TYPE = 0x8278

pattern GL_INTERNALFORMAT_SHARED_SIZE = 0x8277

pattern GL_INTERNALFORMAT_STENCIL_SIZE = 0x8276

pattern GL_INTERNALFORMAT_STENCIL_TYPE = 0x827D

pattern GL_INTERNALFORMAT_SUPPORTED = 0x826F

pattern GL_MANUAL_GENERATE_MIPMAP = 0x8294

pattern GL_MAX_COMBINED_DIMENSIONS = 0x8282

pattern GL_MAX_DEPTH = 0x8280

pattern GL_MAX_HEIGHT = 0x827F

pattern GL_MAX_LAYERS = 0x8281

pattern GL_MAX_WIDTH = 0x827E

pattern GL_MIPMAP = 0x8293

pattern GL_READ_PIXELS = 0x828C

pattern GL_READ_PIXELS_FORMAT = 0x828D

pattern GL_READ_PIXELS_TYPE = 0x828E

pattern GL_SAMPLES = 0x80A9

pattern GL_SHADER_IMAGE_ATOMIC = 0x82A6

pattern GL_SHADER_IMAGE_LOAD = 0x82A4

pattern GL_SHADER_IMAGE_STORE = 0x82A5

pattern GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC

pattern GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE

pattern GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD

pattern GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF

pattern GL_SRGB_READ = 0x8297

pattern GL_SRGB_WRITE = 0x8298

pattern GL_STENCIL_COMPONENTS = 0x8285

pattern GL_STENCIL_RENDERABLE = 0x8288

pattern GL_TESS_CONTROL_TEXTURE = 0x829C

pattern GL_TESS_EVALUATION_TEXTURE = 0x829D

pattern GL_TEXTURE_1D = 0x0DE0

pattern GL_TEXTURE_1D_ARRAY = 0x8C18

pattern GL_TEXTURE_2D = 0x0DE1

pattern GL_TEXTURE_2D_ARRAY = 0x8C1A

pattern GL_TEXTURE_2D_MULTISAMPLE = 0x9100

pattern GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102

pattern GL_TEXTURE_3D = 0x806F

pattern GL_TEXTURE_BUFFER = 0x8C2A

pattern GL_TEXTURE_COMPRESSED = 0x86A1

pattern GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2

pattern GL_TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3

pattern GL_TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1

pattern GL_TEXTURE_CUBE_MAP = 0x8513

pattern GL_TEXTURE_CUBE_MAP_ARRAY = 0x9009

pattern GL_TEXTURE_GATHER = 0x82A2

pattern GL_TEXTURE_GATHER_SHADOW = 0x82A3

pattern GL_TEXTURE_IMAGE_FORMAT = 0x828F

pattern GL_TEXTURE_IMAGE_TYPE = 0x8290

pattern GL_TEXTURE_RECTANGLE = 0x84F5

pattern GL_TEXTURE_SHADOW = 0x82A1

pattern GL_TEXTURE_VIEW = 0x82B5

pattern GL_VERTEX_TEXTURE = 0x829B

pattern GL_VIEW_CLASS_128_BITS = 0x82C4

pattern GL_VIEW_CLASS_16_BITS = 0x82CA

pattern GL_VIEW_CLASS_24_BITS = 0x82C9

pattern GL_VIEW_CLASS_32_BITS = 0x82C8

pattern GL_VIEW_CLASS_48_BITS = 0x82C7

pattern GL_VIEW_CLASS_64_BITS = 0x82C6

pattern GL_VIEW_CLASS_8_BITS = 0x82CB

pattern GL_VIEW_CLASS_96_BITS = 0x82C5

pattern GL_VIEW_CLASS_BPTC_FLOAT = 0x82D3

pattern GL_VIEW_CLASS_BPTC_UNORM = 0x82D2

pattern GL_VIEW_CLASS_RGTC1_RED = 0x82D0

pattern GL_VIEW_CLASS_RGTC2_RG = 0x82D1

pattern GL_VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC

pattern GL_VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD

pattern GL_VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE

pattern GL_VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF

pattern GL_VIEW_COMPATIBILITY_CLASS = 0x82B6

-- | Usage: @'glInvalidateBufferData' buffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glInvalidateBufferData.xhtml>


glInvalidateBufferData :: MonadIO m => GLuint -> m ()
glInvalidateBufferData = ffiuintIOV glInvalidateBufferDataFunPtr

glInvalidateBufferDataFunPtr :: FunPtr (GLuint -> IO ())
glInvalidateBufferDataFunPtr = unsafePerformIO (getProcAddress "glInvalidateBufferData")

{-# NOINLINE glInvalidateBufferDataFunPtr #-}

-- | Usage: @'glInvalidateBufferSubData' buffer offset length@
--
-- The parameter @offset@ is a @BufferOffset@.
--
-- The parameter @length@ is a @BufferSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glInvalidateBufferSubData.xhtml>


glInvalidateBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> m ()
glInvalidateBufferSubData = ffiuintintptrsizeiptrIOV glInvalidateBufferSubDataFunPtr

glInvalidateBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ())
glInvalidateBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glInvalidateBufferSubData")

{-# NOINLINE glInvalidateBufferSubDataFunPtr #-}

-- | Usage: @'glInvalidateFramebuffer' target numAttachments attachments@
--
-- The length of @attachments@ should be @numAttachments@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glInvalidateFramebuffer.xhtml>


glInvalidateFramebuffer :: MonadIO m => GLenum -> GLsizei -> Ptr GLenum -> m ()
glInvalidateFramebuffer = ffienumsizeiPtrenumIOV glInvalidateFramebufferFunPtr

glInvalidateFramebufferFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLenum -> IO ())
glInvalidateFramebufferFunPtr = unsafePerformIO (getProcAddress "glInvalidateFramebuffer")

{-# NOINLINE glInvalidateFramebufferFunPtr #-}

-- | Usage: @'glInvalidateSubFramebuffer' target numAttachments attachments x y width height@
--
-- The length of @attachments@ should be @numAttachments@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glInvalidateSubFramebuffer.xhtml>


glInvalidateSubFramebuffer :: MonadIO m => GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glInvalidateSubFramebuffer = ffienumsizeiPtrenumintintsizeisizeiIOV glInvalidateSubFramebufferFunPtr

glInvalidateSubFramebufferFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glInvalidateSubFramebufferFunPtr = unsafePerformIO (getProcAddress "glInvalidateSubFramebuffer")

{-# NOINLINE glInvalidateSubFramebufferFunPtr #-}

-- | Usage: @'glInvalidateTexImage' texture level@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glInvalidateTexImage.xhtml>


glInvalidateTexImage :: MonadIO m => GLuint -> GLint -> m ()
glInvalidateTexImage = ffiuintintIOV glInvalidateTexImageFunPtr

glInvalidateTexImageFunPtr :: FunPtr (GLuint -> GLint -> IO ())
glInvalidateTexImageFunPtr = unsafePerformIO (getProcAddress "glInvalidateTexImage")

{-# NOINLINE glInvalidateTexImageFunPtr #-}

-- | Usage: @'glInvalidateTexSubImage' texture level xoffset yoffset zoffset width height depth@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glInvalidateTexSubImage.xhtml>


glInvalidateTexSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> m ()
glInvalidateTexSubImage = ffiuintintintintintsizeisizeisizeiIOV glInvalidateTexSubImageFunPtr

glInvalidateTexSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> IO ())
glInvalidateTexSubImageFunPtr = unsafePerformIO (getProcAddress "glInvalidateTexSubImage")

{-# NOINLINE glInvalidateTexSubImageFunPtr #-}

pattern GL_MIN_MAP_BUFFER_ALIGNMENT = 0x90BC

-- | Usage: @'glFlushMappedBufferRange' target offset length@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @offset@ is a @BufferOffset@.
--
-- The parameter @length@ is a @BufferSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFlushMappedBufferRange.xhtml>


glFlushMappedBufferRange :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> m ()
glFlushMappedBufferRange = ffienumintptrsizeiptrIOV glFlushMappedBufferRangeFunPtr

glFlushMappedBufferRangeFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> IO ())
glFlushMappedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glFlushMappedBufferRange")

{-# NOINLINE glFlushMappedBufferRangeFunPtr #-}

-- | Usage: @'glMapBufferRange' target offset length access@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @offset@ is a @BufferOffset@.
--
-- The parameter @length@ is a @BufferSize@.
--
-- The parameter @access@ is a @BufferAccessMask@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMapBufferRange.xhtml>


glMapBufferRange :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
glMapBufferRange = ffienumintptrsizeiptrbitfieldIOPtrV glMapBufferRangeFunPtr

glMapBufferRangeFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ()))
glMapBufferRangeFunPtr = unsafePerformIO (getProcAddress "glMapBufferRange")

{-# NOINLINE glMapBufferRangeFunPtr #-}

pattern GL_MAP_FLUSH_EXPLICIT_BIT = 0x0010

pattern GL_MAP_INVALIDATE_BUFFER_BIT = 0x0008

pattern GL_MAP_INVALIDATE_RANGE_BIT = 0x0004

pattern GL_MAP_UNSYNCHRONIZED_BIT = 0x0020

-- | Usage: @'glBindBuffersBase' target first count buffers@
--
-- The length of @buffers@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindBuffersBase.xhtml>


glBindBuffersBase :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindBuffersBase = ffienumuintsizeiPtruintIOV glBindBuffersBaseFunPtr

glBindBuffersBaseFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindBuffersBaseFunPtr = unsafePerformIO (getProcAddress "glBindBuffersBase")

{-# NOINLINE glBindBuffersBaseFunPtr #-}

-- | Usage: @'glBindBuffersRange' target first count buffers offsets sizes@
--
-- The length of @buffers@ should be @count@.
--
-- The length of @offsets@ should be @count@.
--
-- The length of @sizes@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindBuffersRange.xhtml>


glBindBuffersRange :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> m ()
glBindBuffersRange = ffienumuintsizeiPtruintPtrintptrPtrsizeiptrIOV glBindBuffersRangeFunPtr

glBindBuffersRangeFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> IO ())
glBindBuffersRangeFunPtr = unsafePerformIO (getProcAddress "glBindBuffersRange")

{-# NOINLINE glBindBuffersRangeFunPtr #-}

-- | Usage: @'glBindImageTextures' first count textures@
--
-- The length of @textures@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindImageTextures.xhtml>


glBindImageTextures :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindImageTextures = ffiuintsizeiPtruintIOV glBindImageTexturesFunPtr

glBindImageTexturesFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindImageTexturesFunPtr = unsafePerformIO (getProcAddress "glBindImageTextures")

{-# NOINLINE glBindImageTexturesFunPtr #-}

-- | Usage: @'glBindSamplers' first count samplers@
--
-- The length of @samplers@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindSamplers.xhtml>


glBindSamplers :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindSamplers = ffiuintsizeiPtruintIOV glBindSamplersFunPtr

glBindSamplersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindSamplersFunPtr = unsafePerformIO (getProcAddress "glBindSamplers")

{-# NOINLINE glBindSamplersFunPtr #-}

-- | Usage: @'glBindTextures' first count textures@
--
-- The length of @textures@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindTextures.xhtml>


glBindTextures :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindTextures = ffiuintsizeiPtruintIOV glBindTexturesFunPtr

glBindTexturesFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindTexturesFunPtr = unsafePerformIO (getProcAddress "glBindTextures")

{-# NOINLINE glBindTexturesFunPtr #-}

-- | Usage: @'glBindVertexBuffers' first count buffers offsets strides@
--
-- The length of @buffers@ should be @count@.
--
-- The length of @offsets@ should be @count@.
--
-- The length of @strides@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindVertexBuffers.xhtml>


glBindVertexBuffers :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> m ()
glBindVertexBuffers = ffiuintsizeiPtruintPtrintptrPtrsizeiIOV glBindVertexBuffersFunPtr

glBindVertexBuffersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ())
glBindVertexBuffersFunPtr = unsafePerformIO (getProcAddress "glBindVertexBuffers")

{-# NOINLINE glBindVertexBuffersFunPtr #-}

-- | Usage: @'glMultiDrawArraysIndirect' mode indirect drawcount stride@
--
-- The length of @indirect@ should be @COMPSIZE(drawcount,stride)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMultiDrawArraysIndirect.xhtml>


glMultiDrawArraysIndirect :: MonadIO m => GLenum -> Ptr () -> GLsizei -> GLsizei -> m ()
glMultiDrawArraysIndirect = ffienumPtrVsizeisizeiIOV glMultiDrawArraysIndirectFunPtr

glMultiDrawArraysIndirectFunPtr :: FunPtr (GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ())
glMultiDrawArraysIndirectFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArraysIndirect")

{-# NOINLINE glMultiDrawArraysIndirectFunPtr #-}

-- | Usage: @'glMultiDrawElementsIndirect' mode type indirect drawcount stride@
--
-- The length of @indirect@ should be @COMPSIZE(drawcount,stride)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMultiDrawElementsIndirect.xhtml>


glMultiDrawElementsIndirect :: MonadIO m => GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> m ()
glMultiDrawElementsIndirect = ffienumenumPtrVsizeisizeiIOV glMultiDrawElementsIndirectFunPtr

glMultiDrawElementsIndirectFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> GLsizei -> GLsizei -> IO ())
glMultiDrawElementsIndirectFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementsIndirect")

{-# NOINLINE glMultiDrawElementsIndirectFunPtr #-}

pattern GL_SAMPLES_ARB = 0x80A9

pattern GL_TEXTURE0_ARB = 0x84C0

pattern GL_TEXTURE1_ARB = 0x84C1

pattern GL_ANY_SAMPLES_PASSED = 0x8C2F

-- | Usage: @'glGetProgramInterfaceiv' program programInterface pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetProgramInterfaceiv :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetProgramInterfaceiv = ffiuintenumenumPtrintIOV glGetProgramInterfaceivFunPtr

glGetProgramInterfaceivFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetProgramInterfaceivFunPtr = unsafePerformIO (getProcAddress "glGetProgramInterfaceiv")

{-# NOINLINE glGetProgramInterfaceivFunPtr #-}

-- | Usage: @'glGetProgramResourceIndex' program programInterface name@
--
-- The length of @name@ should be @COMPSIZE(name)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetProgramResourceIndex.xhtml>


glGetProgramResourceIndex :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLuint
glGetProgramResourceIndex = ffiuintenumPtrcharIOuint glGetProgramResourceIndexFunPtr

glGetProgramResourceIndexFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLuint)
glGetProgramResourceIndexFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourceIndex")

{-# NOINLINE glGetProgramResourceIndexFunPtr #-}

-- | Usage: @'glGetProgramResourceLocation' program programInterface name@
--
-- The length of @name@ should be @COMPSIZE(name)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetProgramResourceLocation.xhtml>


glGetProgramResourceLocation :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLint
glGetProgramResourceLocation = ffiuintenumPtrcharIOint glGetProgramResourceLocationFunPtr

glGetProgramResourceLocationFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLint)
glGetProgramResourceLocationFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourceLocation")

{-# NOINLINE glGetProgramResourceLocationFunPtr #-}

-- | Usage: @'glGetProgramResourceLocationIndex' program programInterface name@
--
-- The length of @name@ should be @COMPSIZE(name)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetProgramResourceLocationIndex.xhtml>


glGetProgramResourceLocationIndex :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLint
glGetProgramResourceLocationIndex = ffiuintenumPtrcharIOint glGetProgramResourceLocationIndexFunPtr

glGetProgramResourceLocationIndexFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLint)
glGetProgramResourceLocationIndexFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourceLocationIndex")

{-# NOINLINE glGetProgramResourceLocationIndexFunPtr #-}

-- | Usage: @'glGetProgramResourceName' program programInterface index bufSize length name@
--
-- The length of @length@ should be @1@.
--
-- The length of @name@ should be @bufSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetProgramResourceName.xhtml>


glGetProgramResourceName :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetProgramResourceName = ffiuintenumuintsizeiPtrsizeiPtrcharIOV glGetProgramResourceNameFunPtr

glGetProgramResourceNameFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramResourceNameFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourceName")

{-# NOINLINE glGetProgramResourceNameFunPtr #-}

-- | Usage: @'glGetProgramResourceiv' program programInterface index propCount props bufSize length params@
--
-- The length of @props@ should be @propCount@.
--
-- The length of @length@ should be @1@.
--
-- The length of @params@ should be @bufSize@.


glGetProgramResourceiv :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
glGetProgramResourceiv = ffiuintenumuintsizeiPtrenumsizeiPtrsizeiPtrintIOV glGetProgramResourceivFunPtr

glGetProgramResourceivFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
glGetProgramResourceivFunPtr = unsafePerformIO (getProcAddress "glGetProgramResourceiv")

{-# NOINLINE glGetProgramResourceivFunPtr #-}

pattern GL_ACTIVE_RESOURCES = 0x92F5

pattern GL_ACTIVE_VARIABLES = 0x9305

pattern GL_ARRAY_SIZE = 0x92FB

pattern GL_ARRAY_STRIDE = 0x92FE

pattern GL_ATOMIC_COUNTER_BUFFER = 0x92C0

pattern GL_ATOMIC_COUNTER_BUFFER_INDEX = 0x9301

pattern GL_BLOCK_INDEX = 0x92FD

pattern GL_BUFFER_BINDING = 0x9302

pattern GL_BUFFER_DATA_SIZE = 0x9303

pattern GL_BUFFER_VARIABLE = 0x92E5

pattern GL_COMPATIBLE_SUBROUTINES = 0x8E4B

pattern GL_COMPUTE_SUBROUTINE = 0x92ED

pattern GL_COMPUTE_SUBROUTINE_UNIFORM = 0x92F3

pattern GL_FRAGMENT_SUBROUTINE = 0x92EC

pattern GL_FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2

pattern GL_GEOMETRY_SUBROUTINE = 0x92EB

pattern GL_GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1

pattern GL_IS_PER_PATCH = 0x92E7

pattern GL_IS_ROW_MAJOR = 0x9300

pattern GL_LOCATION = 0x930E

pattern GL_LOCATION_INDEX = 0x930F

pattern GL_MATRIX_STRIDE = 0x92FF

pattern GL_MAX_NAME_LENGTH = 0x92F6

pattern GL_MAX_NUM_ACTIVE_VARIABLES = 0x92F7

pattern GL_MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8

pattern GL_NAME_LENGTH = 0x92F9

pattern GL_NUM_ACTIVE_VARIABLES = 0x9304

pattern GL_NUM_COMPATIBLE_SUBROUTINES = 0x8E4A

pattern GL_OFFSET = 0x92FC

pattern GL_PROGRAM_INPUT = 0x92E3

pattern GL_PROGRAM_OUTPUT = 0x92E4

pattern GL_REFERENCED_BY_COMPUTE_SHADER = 0x930B

pattern GL_REFERENCED_BY_FRAGMENT_SHADER = 0x930A

pattern GL_REFERENCED_BY_GEOMETRY_SHADER = 0x9309

pattern GL_REFERENCED_BY_TESS_CONTROL_SHADER = 0x9307

pattern GL_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308

pattern GL_REFERENCED_BY_VERTEX_SHADER = 0x9306

pattern GL_SHADER_STORAGE_BLOCK = 0x92E6

pattern GL_TESS_CONTROL_SUBROUTINE = 0x92E9

pattern GL_TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF

pattern GL_TESS_EVALUATION_SUBROUTINE = 0x92EA

pattern GL_TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0

pattern GL_TOP_LEVEL_ARRAY_SIZE = 0x930C

pattern GL_TOP_LEVEL_ARRAY_STRIDE = 0x930D

pattern GL_TRANSFORM_FEEDBACK_VARYING = 0x92F4

pattern GL_TYPE = 0x92FA

pattern GL_UNIFORM = 0x92E1

pattern GL_UNIFORM_BLOCK = 0x92E2

pattern GL_VERTEX_SUBROUTINE = 0x92E8

pattern GL_VERTEX_SUBROUTINE_UNIFORM = 0x92EE

-- | Usage: @'glProvokingVertex' mode@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glProvokingVertex.xhtml>


glProvokingVertex :: MonadIO m => GLenum -> m ()
glProvokingVertex = ffienumIOV glProvokingVertexFunPtr

glProvokingVertexFunPtr :: FunPtr (GLenum -> IO ())
glProvokingVertexFunPtr = unsafePerformIO (getProcAddress "glProvokingVertex")

{-# NOINLINE glProvokingVertexFunPtr #-}

pattern GL_FIRST_VERTEX_CONVENTION = 0x8E4D

pattern GL_LAST_VERTEX_CONVENTION = 0x8E4E

pattern GL_PROVOKING_VERTEX = 0x8E4F

pattern GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C

pattern GL_QUERY_BUFFER = 0x9192

pattern GL_QUERY_BUFFER_BARRIER_BIT = 0x00008000

pattern GL_QUERY_BUFFER_BINDING = 0x9193

pattern GL_QUERY_RESULT_NO_WAIT = 0x9194

pattern GL_NO_ERROR = 0

-- | Usage: @'glBindSampler' unit sampler@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindSampler.xhtml>


glBindSampler :: MonadIO m => GLuint -> GLuint -> m ()
glBindSampler = ffiuintuintIOV glBindSamplerFunPtr

glBindSamplerFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glBindSamplerFunPtr = unsafePerformIO (getProcAddress "glBindSampler")

{-# NOINLINE glBindSamplerFunPtr #-}

-- | Usage: @'glDeleteSamplers' count samplers@
--
-- The length of @samplers@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDeleteSamplers.xhtml>


glDeleteSamplers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteSamplers = ffisizeiPtruintIOV glDeleteSamplersFunPtr

glDeleteSamplersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteSamplersFunPtr = unsafePerformIO (getProcAddress "glDeleteSamplers")

{-# NOINLINE glDeleteSamplersFunPtr #-}

-- | Usage: @'glGenSamplers' count samplers@
--
-- The length of @samplers@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGenSamplers.xhtml>


glGenSamplers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenSamplers = ffisizeiPtruintIOV glGenSamplersFunPtr

glGenSamplersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenSamplersFunPtr = unsafePerformIO (getProcAddress "glGenSamplers")

{-# NOINLINE glGenSamplersFunPtr #-}

-- | Usage: @'glGetSamplerParameterIiv' sampler pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetSamplerParameterIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetSamplerParameterIiv = ffiuintenumPtrintIOV glGetSamplerParameterIivFunPtr

glGetSamplerParameterIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetSamplerParameterIivFunPtr = unsafePerformIO (getProcAddress "glGetSamplerParameterIiv")

{-# NOINLINE glGetSamplerParameterIivFunPtr #-}

-- | Usage: @'glGetSamplerParameterIuiv' sampler pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetSamplerParameterIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetSamplerParameterIuiv = ffiuintenumPtruintIOV glGetSamplerParameterIuivFunPtr

glGetSamplerParameterIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetSamplerParameterIuivFunPtr = unsafePerformIO (getProcAddress "glGetSamplerParameterIuiv")

{-# NOINLINE glGetSamplerParameterIuivFunPtr #-}

-- | Usage: @'glGetSamplerParameterfv' sampler pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetSamplerParameterfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetSamplerParameterfv = ffiuintenumPtrfloatIOV glGetSamplerParameterfvFunPtr

glGetSamplerParameterfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetSamplerParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetSamplerParameterfv")

{-# NOINLINE glGetSamplerParameterfvFunPtr #-}

-- | Usage: @'glGetSamplerParameteriv' sampler pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetSamplerParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetSamplerParameteriv = ffiuintenumPtrintIOV glGetSamplerParameterivFunPtr

glGetSamplerParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetSamplerParameterivFunPtr = unsafePerformIO (getProcAddress "glGetSamplerParameteriv")

{-# NOINLINE glGetSamplerParameterivFunPtr #-}

-- | Usage: @'glIsSampler' sampler@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glIsSampler.xhtml>


glIsSampler :: MonadIO m => GLuint -> m GLboolean
glIsSampler = ffiuintIOboolean glIsSamplerFunPtr

glIsSamplerFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsSamplerFunPtr = unsafePerformIO (getProcAddress "glIsSampler")

{-# NOINLINE glIsSamplerFunPtr #-}

-- | Usage: @'glSamplerParameterIiv' sampler pname param@
--
-- The length of @param@ should be @COMPSIZE(pname)@.


glSamplerParameterIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glSamplerParameterIiv = ffiuintenumPtrintIOV glSamplerParameterIivFunPtr

glSamplerParameterIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glSamplerParameterIivFunPtr = unsafePerformIO (getProcAddress "glSamplerParameterIiv")

{-# NOINLINE glSamplerParameterIivFunPtr #-}

-- | Usage: @'glSamplerParameterIuiv' sampler pname param@
--
-- The length of @param@ should be @COMPSIZE(pname)@.


glSamplerParameterIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glSamplerParameterIuiv = ffiuintenumPtruintIOV glSamplerParameterIuivFunPtr

glSamplerParameterIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glSamplerParameterIuivFunPtr = unsafePerformIO (getProcAddress "glSamplerParameterIuiv")

{-# NOINLINE glSamplerParameterIuivFunPtr #-}

-- | Usage: @'glSamplerParameterf' sampler pname param@


glSamplerParameterf :: MonadIO m => GLuint -> GLenum -> GLfloat -> m ()
glSamplerParameterf = ffiuintenumfloatIOV glSamplerParameterfFunPtr

glSamplerParameterfFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> IO ())
glSamplerParameterfFunPtr = unsafePerformIO (getProcAddress "glSamplerParameterf")

{-# NOINLINE glSamplerParameterfFunPtr #-}

-- | Usage: @'glSamplerParameterfv' sampler pname param@
--
-- The length of @param@ should be @COMPSIZE(pname)@.


glSamplerParameterfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glSamplerParameterfv = ffiuintenumPtrfloatIOV glSamplerParameterfvFunPtr

glSamplerParameterfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glSamplerParameterfvFunPtr = unsafePerformIO (getProcAddress "glSamplerParameterfv")

{-# NOINLINE glSamplerParameterfvFunPtr #-}

-- | Usage: @'glSamplerParameteri' sampler pname param@


glSamplerParameteri :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glSamplerParameteri = ffiuintenumintIOV glSamplerParameteriFunPtr

glSamplerParameteriFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glSamplerParameteriFunPtr = unsafePerformIO (getProcAddress "glSamplerParameteri")

{-# NOINLINE glSamplerParameteriFunPtr #-}

-- | Usage: @'glSamplerParameteriv' sampler pname param@
--
-- The length of @param@ should be @COMPSIZE(pname)@.


glSamplerParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glSamplerParameteriv = ffiuintenumPtrintIOV glSamplerParameterivFunPtr

glSamplerParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glSamplerParameterivFunPtr = unsafePerformIO (getProcAddress "glSamplerParameteriv")

{-# NOINLINE glSamplerParameterivFunPtr #-}

pattern GL_SAMPLER_BINDING = 0x8919

-- | Usage: @'glActiveShaderProgram' pipeline program@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glActiveShaderProgram.xhtml>


glActiveShaderProgram :: MonadIO m => GLuint -> GLuint -> m ()
glActiveShaderProgram = ffiuintuintIOV glActiveShaderProgramFunPtr

glActiveShaderProgramFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glActiveShaderProgramFunPtr = unsafePerformIO (getProcAddress "glActiveShaderProgram")

{-# NOINLINE glActiveShaderProgramFunPtr #-}

-- | Usage: @'glBindProgramPipeline' pipeline@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindProgramPipeline.xhtml>


glBindProgramPipeline :: MonadIO m => GLuint -> m ()
glBindProgramPipeline = ffiuintIOV glBindProgramPipelineFunPtr

glBindProgramPipelineFunPtr :: FunPtr (GLuint -> IO ())
glBindProgramPipelineFunPtr = unsafePerformIO (getProcAddress "glBindProgramPipeline")

{-# NOINLINE glBindProgramPipelineFunPtr #-}

-- | Usage: @'glCreateShaderProgramv' type count strings@
--
-- The length of @strings@ should be @count@.


glCreateShaderProgramv :: MonadIO m => GLenum -> GLsizei -> Ptr (Ptr GLchar) -> m GLuint
glCreateShaderProgramv = ffienumsizeiPtrPtrcharIOuint glCreateShaderProgramvFunPtr

glCreateShaderProgramvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr (Ptr GLchar) -> IO GLuint)
glCreateShaderProgramvFunPtr = unsafePerformIO (getProcAddress "glCreateShaderProgramv")

{-# NOINLINE glCreateShaderProgramvFunPtr #-}

-- | Usage: @'glDeleteProgramPipelines' n pipelines@
--
-- The length of @pipelines@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDeleteProgramPipelines.xhtml>


glDeleteProgramPipelines :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteProgramPipelines = ffisizeiPtruintIOV glDeleteProgramPipelinesFunPtr

glDeleteProgramPipelinesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteProgramPipelinesFunPtr = unsafePerformIO (getProcAddress "glDeleteProgramPipelines")

{-# NOINLINE glDeleteProgramPipelinesFunPtr #-}

-- | Usage: @'glGenProgramPipelines' n pipelines@
--
-- The length of @pipelines@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGenProgramPipelines.xhtml>


glGenProgramPipelines :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenProgramPipelines = ffisizeiPtruintIOV glGenProgramPipelinesFunPtr

glGenProgramPipelinesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramPipelinesFunPtr = unsafePerformIO (getProcAddress "glGenProgramPipelines")

{-# NOINLINE glGenProgramPipelinesFunPtr #-}

-- | Usage: @'glGetProgramPipelineInfoLog' pipeline bufSize length infoLog@
--
-- The length of @length@ should be @1@.
--
-- The length of @infoLog@ should be @bufSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetProgramPipelineInfoLog.xhtml>


glGetProgramPipelineInfoLog :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetProgramPipelineInfoLog = ffiuintsizeiPtrsizeiPtrcharIOV glGetProgramPipelineInfoLogFunPtr

glGetProgramPipelineInfoLogFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramPipelineInfoLogFunPtr = unsafePerformIO (getProcAddress "glGetProgramPipelineInfoLog")

{-# NOINLINE glGetProgramPipelineInfoLogFunPtr #-}

-- | Usage: @'glGetProgramPipelineiv' pipeline pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetProgramPipelineiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetProgramPipelineiv = ffiuintenumPtrintIOV glGetProgramPipelineivFunPtr

glGetProgramPipelineivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetProgramPipelineivFunPtr = unsafePerformIO (getProcAddress "glGetProgramPipelineiv")

{-# NOINLINE glGetProgramPipelineivFunPtr #-}

-- | Usage: @'glIsProgramPipeline' pipeline@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glIsProgramPipeline.xhtml>


glIsProgramPipeline :: MonadIO m => GLuint -> m GLboolean
glIsProgramPipeline = ffiuintIOboolean glIsProgramPipelineFunPtr

glIsProgramPipelineFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramPipelineFunPtr = unsafePerformIO (getProcAddress "glIsProgramPipeline")

{-# NOINLINE glIsProgramPipelineFunPtr #-}

-- | Usage: @'glProgramUniform1d' program location v0@


glProgramUniform1d :: MonadIO m => GLuint -> GLint -> GLdouble -> m ()
glProgramUniform1d = ffiuintintdoubleIOV glProgramUniform1dFunPtr

glProgramUniform1dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> IO ())
glProgramUniform1dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1d")

{-# NOINLINE glProgramUniform1dFunPtr #-}

-- | Usage: @'glProgramUniform1dv' program location count value@
--
-- The length of @value@ should be @1@.


glProgramUniform1dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform1dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform1dvFunPtr

glProgramUniform1dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform1dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1dv")

{-# NOINLINE glProgramUniform1dvFunPtr #-}

-- | Usage: @'glProgramUniform1f' program location v0@


glProgramUniform1f :: MonadIO m => GLuint -> GLint -> GLfloat -> m ()
glProgramUniform1f = ffiuintintfloatIOV glProgramUniform1fFunPtr

glProgramUniform1fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> IO ())
glProgramUniform1fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1f")

{-# NOINLINE glProgramUniform1fFunPtr #-}

-- | Usage: @'glProgramUniform1fv' program location count value@
--
-- The length of @value@ should be @1@.


glProgramUniform1fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform1fv = ffiuintintsizeiPtrfloatIOV glProgramUniform1fvFunPtr

glProgramUniform1fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform1fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1fv")

{-# NOINLINE glProgramUniform1fvFunPtr #-}

-- | Usage: @'glProgramUniform1i' program location v0@


glProgramUniform1i :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glProgramUniform1i = ffiuintintintIOV glProgramUniform1iFunPtr

glProgramUniform1iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glProgramUniform1iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i")

{-# NOINLINE glProgramUniform1iFunPtr #-}

-- | Usage: @'glProgramUniform1iv' program location count value@
--
-- The length of @value@ should be @1@.


glProgramUniform1iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform1iv = ffiuintintsizeiPtrintIOV glProgramUniform1ivFunPtr

glProgramUniform1ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform1ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1iv")

{-# NOINLINE glProgramUniform1ivFunPtr #-}

-- | Usage: @'glProgramUniform1ui' program location v0@


glProgramUniform1ui :: MonadIO m => GLuint -> GLint -> GLuint -> m ()
glProgramUniform1ui = ffiuintintuintIOV glProgramUniform1uiFunPtr

glProgramUniform1uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> IO ())
glProgramUniform1uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui")

{-# NOINLINE glProgramUniform1uiFunPtr #-}

-- | Usage: @'glProgramUniform1uiv' program location count value@
--
-- The length of @value@ should be @1@.


glProgramUniform1uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform1uiv = ffiuintintsizeiPtruintIOV glProgramUniform1uivFunPtr

glProgramUniform1uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform1uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1uiv")

{-# NOINLINE glProgramUniform1uivFunPtr #-}

-- | Usage: @'glProgramUniform2d' program location v0 v1@


glProgramUniform2d :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> m ()
glProgramUniform2d = ffiuintintdoubledoubleIOV glProgramUniform2dFunPtr

glProgramUniform2dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> IO ())
glProgramUniform2dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2d")

{-# NOINLINE glProgramUniform2dFunPtr #-}

-- | Usage: @'glProgramUniform2dv' program location count value@
--
-- The length of @value@ should be @2@.


glProgramUniform2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform2dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform2dvFunPtr

glProgramUniform2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2dv")

{-# NOINLINE glProgramUniform2dvFunPtr #-}

-- | Usage: @'glProgramUniform2f' program location v0 v1@


glProgramUniform2f :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> m ()
glProgramUniform2f = ffiuintintfloatfloatIOV glProgramUniform2fFunPtr

glProgramUniform2fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> IO ())
glProgramUniform2fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2f")

{-# NOINLINE glProgramUniform2fFunPtr #-}

-- | Usage: @'glProgramUniform2fv' program location count value@
--
-- The length of @value@ should be @2@.


glProgramUniform2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform2fv = ffiuintintsizeiPtrfloatIOV glProgramUniform2fvFunPtr

glProgramUniform2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2fv")

{-# NOINLINE glProgramUniform2fvFunPtr #-}

-- | Usage: @'glProgramUniform2i' program location v0 v1@


glProgramUniform2i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glProgramUniform2i = ffiuintintintintIOV glProgramUniform2iFunPtr

glProgramUniform2iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform2iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i")

{-# NOINLINE glProgramUniform2iFunPtr #-}

-- | Usage: @'glProgramUniform2iv' program location count value@
--
-- The length of @value@ should be @2@.


glProgramUniform2iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform2iv = ffiuintintsizeiPtrintIOV glProgramUniform2ivFunPtr

glProgramUniform2ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform2ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2iv")

{-# NOINLINE glProgramUniform2ivFunPtr #-}

-- | Usage: @'glProgramUniform2ui' program location v0 v1@


glProgramUniform2ui :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> m ()
glProgramUniform2ui = ffiuintintuintuintIOV glProgramUniform2uiFunPtr

glProgramUniform2uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> IO ())
glProgramUniform2uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui")

{-# NOINLINE glProgramUniform2uiFunPtr #-}

-- | Usage: @'glProgramUniform2uiv' program location count value@
--
-- The length of @value@ should be @2@.


glProgramUniform2uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform2uiv = ffiuintintsizeiPtruintIOV glProgramUniform2uivFunPtr

glProgramUniform2uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform2uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2uiv")

{-# NOINLINE glProgramUniform2uivFunPtr #-}

-- | Usage: @'glProgramUniform3d' program location v0 v1 v2@


glProgramUniform3d :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramUniform3d = ffiuintintdoubledoubledoubleIOV glProgramUniform3dFunPtr

glProgramUniform3dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramUniform3dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3d")

{-# NOINLINE glProgramUniform3dFunPtr #-}

-- | Usage: @'glProgramUniform3dv' program location count value@
--
-- The length of @value@ should be @3@.


glProgramUniform3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform3dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform3dvFunPtr

glProgramUniform3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3dv")

{-# NOINLINE glProgramUniform3dvFunPtr #-}

-- | Usage: @'glProgramUniform3f' program location v0 v1 v2@


glProgramUniform3f :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramUniform3f = ffiuintintfloatfloatfloatIOV glProgramUniform3fFunPtr

glProgramUniform3fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramUniform3fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3f")

{-# NOINLINE glProgramUniform3fFunPtr #-}

-- | Usage: @'glProgramUniform3fv' program location count value@
--
-- The length of @value@ should be @3@.


glProgramUniform3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform3fv = ffiuintintsizeiPtrfloatIOV glProgramUniform3fvFunPtr

glProgramUniform3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3fv")

{-# NOINLINE glProgramUniform3fvFunPtr #-}

-- | Usage: @'glProgramUniform3i' program location v0 v1 v2@


glProgramUniform3i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
glProgramUniform3i = ffiuintintintintintIOV glProgramUniform3iFunPtr

glProgramUniform3iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform3iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i")

{-# NOINLINE glProgramUniform3iFunPtr #-}

-- | Usage: @'glProgramUniform3iv' program location count value@
--
-- The length of @value@ should be @3@.


glProgramUniform3iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform3iv = ffiuintintsizeiPtrintIOV glProgramUniform3ivFunPtr

glProgramUniform3ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform3ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3iv")

{-# NOINLINE glProgramUniform3ivFunPtr #-}

-- | Usage: @'glProgramUniform3ui' program location v0 v1 v2@


glProgramUniform3ui :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> GLuint -> m ()
glProgramUniform3ui = ffiuintintuintuintuintIOV glProgramUniform3uiFunPtr

glProgramUniform3uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ())
glProgramUniform3uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui")

{-# NOINLINE glProgramUniform3uiFunPtr #-}

-- | Usage: @'glProgramUniform3uiv' program location count value@
--
-- The length of @value@ should be @3@.


glProgramUniform3uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform3uiv = ffiuintintsizeiPtruintIOV glProgramUniform3uivFunPtr

glProgramUniform3uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform3uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3uiv")

{-# NOINLINE glProgramUniform3uivFunPtr #-}

-- | Usage: @'glProgramUniform4d' program location v0 v1 v2 v3@


glProgramUniform4d :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramUniform4d = ffiuintintdoubledoubledoubledoubleIOV glProgramUniform4dFunPtr

glProgramUniform4dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramUniform4dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4d")

{-# NOINLINE glProgramUniform4dFunPtr #-}

-- | Usage: @'glProgramUniform4dv' program location count value@
--
-- The length of @value@ should be @4@.


glProgramUniform4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform4dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform4dvFunPtr

glProgramUniform4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4dv")

{-# NOINLINE glProgramUniform4dvFunPtr #-}

-- | Usage: @'glProgramUniform4f' program location v0 v1 v2 v3@


glProgramUniform4f :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramUniform4f = ffiuintintfloatfloatfloatfloatIOV glProgramUniform4fFunPtr

glProgramUniform4fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramUniform4fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4f")

{-# NOINLINE glProgramUniform4fFunPtr #-}

-- | Usage: @'glProgramUniform4fv' program location count value@
--
-- The length of @value@ should be @4@.


glProgramUniform4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform4fv = ffiuintintsizeiPtrfloatIOV glProgramUniform4fvFunPtr

glProgramUniform4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4fv")

{-# NOINLINE glProgramUniform4fvFunPtr #-}

-- | Usage: @'glProgramUniform4i' program location v0 v1 v2 v3@


glProgramUniform4i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> m ()
glProgramUniform4i = ffiuintintintintintintIOV glProgramUniform4iFunPtr

glProgramUniform4iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform4iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i")

{-# NOINLINE glProgramUniform4iFunPtr #-}

-- | Usage: @'glProgramUniform4iv' program location count value@
--
-- The length of @value@ should be @4@.


glProgramUniform4iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform4iv = ffiuintintsizeiPtrintIOV glProgramUniform4ivFunPtr

glProgramUniform4ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform4ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4iv")

{-# NOINLINE glProgramUniform4ivFunPtr #-}

-- | Usage: @'glProgramUniform4ui' program location v0 v1 v2 v3@


glProgramUniform4ui :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glProgramUniform4ui = ffiuintintuintuintuintuintIOV glProgramUniform4uiFunPtr

glProgramUniform4uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glProgramUniform4uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui")

{-# NOINLINE glProgramUniform4uiFunPtr #-}

-- | Usage: @'glProgramUniform4uiv' program location count value@
--
-- The length of @value@ should be @4@.


glProgramUniform4uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform4uiv = ffiuintintsizeiPtruintIOV glProgramUniform4uivFunPtr

glProgramUniform4uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform4uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4uiv")

{-# NOINLINE glProgramUniform4uivFunPtr #-}

-- | Usage: @'glProgramUniformMatrix2dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @2@.


glProgramUniformMatrix2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix2dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2dvFunPtr

glProgramUniformMatrix2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2dv")

{-# NOINLINE glProgramUniformMatrix2dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix2fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @2@.


glProgramUniformMatrix2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2fvFunPtr

glProgramUniformMatrix2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2fv")

{-# NOINLINE glProgramUniformMatrix2fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix2x3dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix2x3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix2x3dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2x3dvFunPtr

glProgramUniformMatrix2x3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix2x3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x3dv")

{-# NOINLINE glProgramUniformMatrix2x3dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix2x3fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix2x3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2x3fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2x3fvFunPtr

glProgramUniformMatrix2x3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2x3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x3fv")

{-# NOINLINE glProgramUniformMatrix2x3fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix2x4dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix2x4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix2x4dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2x4dvFunPtr

glProgramUniformMatrix2x4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix2x4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x4dv")

{-# NOINLINE glProgramUniformMatrix2x4dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix2x4fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix2x4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2x4fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2x4fvFunPtr

glProgramUniformMatrix2x4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2x4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x4fv")

{-# NOINLINE glProgramUniformMatrix2x4fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix3dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @3@.


glProgramUniformMatrix3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix3dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3dvFunPtr

glProgramUniformMatrix3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3dv")

{-# NOINLINE glProgramUniformMatrix3dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix3fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @3@.


glProgramUniformMatrix3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3fvFunPtr

glProgramUniformMatrix3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3fv")

{-# NOINLINE glProgramUniformMatrix3fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix3x2dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix3x2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix3x2dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3x2dvFunPtr

glProgramUniformMatrix3x2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix3x2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x2dv")

{-# NOINLINE glProgramUniformMatrix3x2dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix3x2fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix3x2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3x2fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3x2fvFunPtr

glProgramUniformMatrix3x2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3x2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x2fv")

{-# NOINLINE glProgramUniformMatrix3x2fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix3x4dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix3x4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix3x4dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3x4dvFunPtr

glProgramUniformMatrix3x4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix3x4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x4dv")

{-# NOINLINE glProgramUniformMatrix3x4dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix3x4fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix3x4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3x4fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3x4fvFunPtr

glProgramUniformMatrix3x4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3x4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x4fv")

{-# NOINLINE glProgramUniformMatrix3x4fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix4dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @4@.


glProgramUniformMatrix4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix4dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4dvFunPtr

glProgramUniformMatrix4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4dv")

{-# NOINLINE glProgramUniformMatrix4dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix4fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @4@.


glProgramUniformMatrix4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4fvFunPtr

glProgramUniformMatrix4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4fv")

{-# NOINLINE glProgramUniformMatrix4fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix4x2dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix4x2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix4x2dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4x2dvFunPtr

glProgramUniformMatrix4x2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix4x2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x2dv")

{-# NOINLINE glProgramUniformMatrix4x2dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix4x2fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix4x2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4x2fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4x2fvFunPtr

glProgramUniformMatrix4x2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4x2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x2fv")

{-# NOINLINE glProgramUniformMatrix4x2fvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix4x3dv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix4x3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix4x3dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4x3dvFunPtr

glProgramUniformMatrix4x3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix4x3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x3dv")

{-# NOINLINE glProgramUniformMatrix4x3dvFunPtr #-}

-- | Usage: @'glProgramUniformMatrix4x3fv' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count@.


glProgramUniformMatrix4x3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4x3fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4x3fvFunPtr

glProgramUniformMatrix4x3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4x3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x3fv")

{-# NOINLINE glProgramUniformMatrix4x3fvFunPtr #-}

-- | Usage: @'glUseProgramStages' pipeline stages program@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glUseProgramStages.xhtml>


glUseProgramStages :: MonadIO m => GLuint -> GLbitfield -> GLuint -> m ()
glUseProgramStages = ffiuintbitfielduintIOV glUseProgramStagesFunPtr

glUseProgramStagesFunPtr :: FunPtr (GLuint -> GLbitfield -> GLuint -> IO ())
glUseProgramStagesFunPtr = unsafePerformIO (getProcAddress "glUseProgramStages")

{-# NOINLINE glUseProgramStagesFunPtr #-}

-- | Usage: @'glValidateProgramPipeline' pipeline@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glValidateProgramPipeline.xhtml>


glValidateProgramPipeline :: MonadIO m => GLuint -> m ()
glValidateProgramPipeline = ffiuintIOV glValidateProgramPipelineFunPtr

glValidateProgramPipelineFunPtr :: FunPtr (GLuint -> IO ())
glValidateProgramPipelineFunPtr = unsafePerformIO (getProcAddress "glValidateProgramPipeline")

{-# NOINLINE glValidateProgramPipelineFunPtr #-}

pattern GL_ACTIVE_PROGRAM = 0x8259

pattern GL_ALL_SHADER_BITS = 0xFFFFFFFF

pattern GL_FRAGMENT_SHADER_BIT = 0x00000002

pattern GL_GEOMETRY_SHADER_BIT = 0x00000004

pattern GL_PROGRAM_PIPELINE_BINDING = 0x825A

pattern GL_PROGRAM_SEPARABLE = 0x8258

pattern GL_TESS_CONTROL_SHADER_BIT = 0x00000008

pattern GL_TESS_EVALUATION_SHADER_BIT = 0x00000010

pattern GL_VERTEX_SHADER_BIT = 0x00000001

-- | Usage: @'glGetActiveAtomicCounterBufferiv' program bufferIndex pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetActiveAtomicCounterBufferiv.xhtml>


glGetActiveAtomicCounterBufferiv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetActiveAtomicCounterBufferiv = ffiuintuintenumPtrintIOV glGetActiveAtomicCounterBufferivFunPtr

glGetActiveAtomicCounterBufferivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetActiveAtomicCounterBufferivFunPtr = unsafePerformIO (getProcAddress "glGetActiveAtomicCounterBufferiv")

{-# NOINLINE glGetActiveAtomicCounterBufferivFunPtr #-}

pattern GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9

pattern GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x92C5

pattern GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x92C6

pattern GL_ATOMIC_COUNTER_BUFFER_BINDING = 0x92C1

pattern GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x92C4

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x92CB

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x92CA

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x92C8

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x92C7

pattern GL_ATOMIC_COUNTER_BUFFER_SIZE = 0x92C3

pattern GL_ATOMIC_COUNTER_BUFFER_START = 0x92C2

pattern GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x92DC

pattern GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x92D8

pattern GL_MAX_COMBINED_ATOMIC_COUNTERS = 0x92D7

pattern GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x92D1

pattern GL_MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6

pattern GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0

pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5

pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF

pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3

pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD

pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4

pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE

pattern GL_MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2

pattern GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC

pattern GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA

pattern GL_UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB

-- | Usage: @'glBindImageTexture' unit texture level layered layer access format@
--
-- The parameter @layered@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindImageTexture.xhtml>


glBindImageTexture :: MonadIO m => GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> m ()
glBindImageTexture = ffiuintuintintbooleanintenumenumIOV glBindImageTextureFunPtr

glBindImageTextureFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> IO ())
glBindImageTextureFunPtr = unsafePerformIO (getProcAddress "glBindImageTexture")

{-# NOINLINE glBindImageTextureFunPtr #-}

-- | Usage: @'glMemoryBarrier' barriers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glMemoryBarrier.xhtml>


glMemoryBarrier :: MonadIO m => GLbitfield -> m ()
glMemoryBarrier = ffibitfieldIOV glMemoryBarrierFunPtr

glMemoryBarrierFunPtr :: FunPtr (GLbitfield -> IO ())
glMemoryBarrierFunPtr = unsafePerformIO (getProcAddress "glMemoryBarrier")

{-# NOINLINE glMemoryBarrierFunPtr #-}

pattern GL_ALL_BARRIER_BITS = 0xFFFFFFFF

pattern GL_ATOMIC_COUNTER_BARRIER_BIT = 0x00001000

pattern GL_BUFFER_UPDATE_BARRIER_BIT = 0x00000200

pattern GL_COMMAND_BARRIER_BIT = 0x00000040

pattern GL_ELEMENT_ARRAY_BARRIER_BIT = 0x00000002

pattern GL_FRAMEBUFFER_BARRIER_BIT = 0x00000400

pattern GL_IMAGE_1D = 0x904C

pattern GL_IMAGE_1D_ARRAY = 0x9052

pattern GL_IMAGE_2D = 0x904D

pattern GL_IMAGE_2D_ARRAY = 0x9053

pattern GL_IMAGE_2D_MULTISAMPLE = 0x9055

pattern GL_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9056

pattern GL_IMAGE_2D_RECT = 0x904F

pattern GL_IMAGE_3D = 0x904E

pattern GL_IMAGE_BINDING_ACCESS = 0x8F3E

pattern GL_IMAGE_BINDING_FORMAT = 0x906E

pattern GL_IMAGE_BINDING_LAYER = 0x8F3D

pattern GL_IMAGE_BINDING_LAYERED = 0x8F3C

pattern GL_IMAGE_BINDING_LEVEL = 0x8F3B

pattern GL_IMAGE_BINDING_NAME = 0x8F3A

pattern GL_IMAGE_BUFFER = 0x9051

pattern GL_IMAGE_CUBE = 0x9050

pattern GL_IMAGE_CUBE_MAP_ARRAY = 0x9054

pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x90C9

pattern GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x90C8

pattern GL_INT_IMAGE_1D = 0x9057

pattern GL_INT_IMAGE_1D_ARRAY = 0x905D

pattern GL_INT_IMAGE_2D = 0x9058

pattern GL_INT_IMAGE_2D_ARRAY = 0x905E

pattern GL_INT_IMAGE_2D_MULTISAMPLE = 0x9060

pattern GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9061

pattern GL_INT_IMAGE_2D_RECT = 0x905A

pattern GL_INT_IMAGE_3D = 0x9059

pattern GL_INT_IMAGE_BUFFER = 0x905C

pattern GL_INT_IMAGE_CUBE = 0x905B

pattern GL_INT_IMAGE_CUBE_MAP_ARRAY = 0x905F

pattern GL_MAX_COMBINED_IMAGE_UNIFORMS = 0x90CF

pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39

pattern GL_MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE

pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD

pattern GL_MAX_IMAGE_SAMPLES = 0x906D

pattern GL_MAX_IMAGE_UNITS = 0x8F38

pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB

pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC

pattern GL_MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA

pattern GL_PIXEL_BUFFER_BARRIER_BIT = 0x00000080

pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020

pattern GL_TEXTURE_FETCH_BARRIER_BIT = 0x00000008

pattern GL_TEXTURE_UPDATE_BARRIER_BIT = 0x00000100

pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800

pattern GL_UNIFORM_BARRIER_BIT = 0x00000004

pattern GL_UNSIGNED_INT_IMAGE_1D = 0x9062

pattern GL_UNSIGNED_INT_IMAGE_1D_ARRAY = 0x9068

pattern GL_UNSIGNED_INT_IMAGE_2D = 0x9063

pattern GL_UNSIGNED_INT_IMAGE_2D_ARRAY = 0x9069

pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x906B

pattern GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x906C

pattern GL_UNSIGNED_INT_IMAGE_2D_RECT = 0x9065

pattern GL_UNSIGNED_INT_IMAGE_3D = 0x9064

pattern GL_UNSIGNED_INT_IMAGE_BUFFER = 0x9067

pattern GL_UNSIGNED_INT_IMAGE_CUBE = 0x9066

pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x906A

pattern GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001

pattern GL_FLOAT_MAT2_ARB = 0x8B5A

pattern GL_FLOAT_MAT3_ARB = 0x8B5B

pattern GL_FLOAT_MAT4_ARB = 0x8B5C

pattern GL_FLOAT_VEC2_ARB = 0x8B50

pattern GL_FLOAT_VEC3_ARB = 0x8B51

pattern GL_FLOAT_VEC4_ARB = 0x8B52

-- | Usage: @'glShaderStorageBlockBinding' program storageBlockIndex storageBlockBinding@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glShaderStorageBlockBinding.xhtml>


glShaderStorageBlockBinding :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glShaderStorageBlockBinding = ffiuintuintuintIOV glShaderStorageBlockBindingFunPtr

glShaderStorageBlockBindingFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glShaderStorageBlockBindingFunPtr = unsafePerformIO (getProcAddress "glShaderStorageBlockBinding")

{-# NOINLINE glShaderStorageBlockBindingFunPtr #-}

pattern GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39

pattern GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC

pattern GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB

pattern GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA

pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7

pattern GL_MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE

pattern GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD

pattern GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8

pattern GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9

pattern GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6

pattern GL_SHADER_STORAGE_BARRIER_BIT = 0x00002000

pattern GL_SHADER_STORAGE_BUFFER = 0x90D2

pattern GL_SHADER_STORAGE_BUFFER_BINDING = 0x90D3

pattern GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF

pattern GL_SHADER_STORAGE_BUFFER_SIZE = 0x90D5

pattern GL_SHADER_STORAGE_BUFFER_START = 0x90D4

-- | Usage: @'glGetActiveSubroutineName' program shadertype index bufsize length name@
--
-- The length of @length@ should be @1@.
--
-- The length of @name@ should be @bufsize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetActiveSubroutineName.xhtml>


glGetActiveSubroutineName :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetActiveSubroutineName = ffiuintenumuintsizeiPtrsizeiPtrcharIOV glGetActiveSubroutineNameFunPtr

glGetActiveSubroutineNameFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetActiveSubroutineNameFunPtr = unsafePerformIO (getProcAddress "glGetActiveSubroutineName")

{-# NOINLINE glGetActiveSubroutineNameFunPtr #-}

-- | Usage: @'glGetActiveSubroutineUniformName' program shadertype index bufsize length name@
--
-- The length of @length@ should be @1@.
--
-- The length of @name@ should be @bufsize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetActiveSubroutineUniformName.xhtml>


glGetActiveSubroutineUniformName :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetActiveSubroutineUniformName = ffiuintenumuintsizeiPtrsizeiPtrcharIOV glGetActiveSubroutineUniformNameFunPtr

glGetActiveSubroutineUniformNameFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetActiveSubroutineUniformNameFunPtr = unsafePerformIO (getProcAddress "glGetActiveSubroutineUniformName")

{-# NOINLINE glGetActiveSubroutineUniformNameFunPtr #-}

-- | Usage: @'glGetActiveSubroutineUniformiv' program shadertype index pname values@
--
-- The length of @values@ should be @COMPSIZE(pname)@.


glGetActiveSubroutineUniformiv :: MonadIO m => GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetActiveSubroutineUniformiv = ffiuintenumuintenumPtrintIOV glGetActiveSubroutineUniformivFunPtr

glGetActiveSubroutineUniformivFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetActiveSubroutineUniformivFunPtr = unsafePerformIO (getProcAddress "glGetActiveSubroutineUniformiv")

{-# NOINLINE glGetActiveSubroutineUniformivFunPtr #-}

-- | Usage: @'glGetProgramStageiv' program shadertype pname values@
--
-- The length of @values@ should be @1@.


glGetProgramStageiv :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetProgramStageiv = ffiuintenumenumPtrintIOV glGetProgramStageivFunPtr

glGetProgramStageivFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetProgramStageivFunPtr = unsafePerformIO (getProcAddress "glGetProgramStageiv")

{-# NOINLINE glGetProgramStageivFunPtr #-}

-- | Usage: @'glGetSubroutineIndex' program shadertype name@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetSubroutineIndex.xhtml>


glGetSubroutineIndex :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLuint
glGetSubroutineIndex = ffiuintenumPtrcharIOuint glGetSubroutineIndexFunPtr

glGetSubroutineIndexFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLuint)
glGetSubroutineIndexFunPtr = unsafePerformIO (getProcAddress "glGetSubroutineIndex")

{-# NOINLINE glGetSubroutineIndexFunPtr #-}

-- | Usage: @'glGetSubroutineUniformLocation' program shadertype name@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetSubroutineUniformLocation.xhtml>


glGetSubroutineUniformLocation :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLint
glGetSubroutineUniformLocation = ffiuintenumPtrcharIOint glGetSubroutineUniformLocationFunPtr

glGetSubroutineUniformLocationFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLint)
glGetSubroutineUniformLocationFunPtr = unsafePerformIO (getProcAddress "glGetSubroutineUniformLocation")

{-# NOINLINE glGetSubroutineUniformLocationFunPtr #-}

-- | Usage: @'glGetUniformSubroutineuiv' shadertype location params@
--
-- The length of @params@ should be @1@.


glGetUniformSubroutineuiv :: MonadIO m => GLenum -> GLint -> Ptr GLuint -> m ()
glGetUniformSubroutineuiv = ffienumintPtruintIOV glGetUniformSubroutineuivFunPtr

glGetUniformSubroutineuivFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLuint -> IO ())
glGetUniformSubroutineuivFunPtr = unsafePerformIO (getProcAddress "glGetUniformSubroutineuiv")

{-# NOINLINE glGetUniformSubroutineuivFunPtr #-}

-- | Usage: @'glUniformSubroutinesuiv' shadertype count indices@
--
-- The length of @indices@ should be @count@.


glUniformSubroutinesuiv :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glUniformSubroutinesuiv = ffienumsizeiPtruintIOV glUniformSubroutinesuivFunPtr

glUniformSubroutinesuivFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glUniformSubroutinesuivFunPtr = unsafePerformIO (getProcAddress "glUniformSubroutinesuiv")

{-# NOINLINE glUniformSubroutinesuivFunPtr #-}

pattern GL_ACTIVE_SUBROUTINES = 0x8DE5

pattern GL_ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48

pattern GL_ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6

pattern GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47

pattern GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49

pattern GL_MAX_SUBROUTINES = 0x8DE7

pattern GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8

pattern GL_UNIFORM_NAME_LENGTH = 0x8A39

pattern GL_UNIFORM_SIZE = 0x8A38

pattern GL_DEPTH_STENCIL_TEXTURE_MODE = 0x90EA

-- | Usage: @'glClientWaitSync' sync flags timeout@
--
-- The parameter @sync@ is a @sync@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClientWaitSync.xhtml>


glClientWaitSync :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m GLenum
glClientWaitSync = ffisyncbitfielduint64IOenum glClientWaitSyncFunPtr

glClientWaitSyncFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLenum)
glClientWaitSyncFunPtr = unsafePerformIO (getProcAddress "glClientWaitSync")

{-# NOINLINE glClientWaitSyncFunPtr #-}

-- | Usage: @'glDeleteSync' sync@
--
-- The parameter @sync@ is a @sync@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDeleteSync.xhtml>


glDeleteSync :: MonadIO m => GLsync -> m ()
glDeleteSync = ffisyncIOV glDeleteSyncFunPtr

glDeleteSyncFunPtr :: FunPtr (GLsync -> IO ())
glDeleteSyncFunPtr = unsafePerformIO (getProcAddress "glDeleteSync")

{-# NOINLINE glDeleteSyncFunPtr #-}

-- | Usage: @'glFenceSync' condition flags@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFenceSync.xhtml>


glFenceSync :: MonadIO m => GLenum -> GLbitfield -> m GLsync
glFenceSync = ffienumbitfieldIOsync glFenceSyncFunPtr

glFenceSyncFunPtr :: FunPtr (GLenum -> GLbitfield -> IO GLsync)
glFenceSyncFunPtr = unsafePerformIO (getProcAddress "glFenceSync")

{-# NOINLINE glFenceSyncFunPtr #-}

-- | Usage: @'glGetInteger64v' pname data@
--
-- The length of @data@ should be @COMPSIZE(pname)@.


glGetInteger64v :: MonadIO m => GLenum -> Ptr GLint64 -> m ()
glGetInteger64v = ffienumPtrint64IOV glGetInteger64vFunPtr

glGetInteger64vFunPtr :: FunPtr (GLenum -> Ptr GLint64 -> IO ())
glGetInteger64vFunPtr = unsafePerformIO (getProcAddress "glGetInteger64v")

{-# NOINLINE glGetInteger64vFunPtr #-}

-- | Usage: @'glGetSynciv' sync pname bufSize length values@
--
-- The parameter @sync@ is a @sync@.
--
-- The length of @length@ should be @1@.
--
-- The length of @values@ should be @bufSize@.


glGetSynciv :: MonadIO m => GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
glGetSynciv = ffisyncenumsizeiPtrsizeiPtrintIOV glGetSyncivFunPtr

glGetSyncivFunPtr :: FunPtr (GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
glGetSyncivFunPtr = unsafePerformIO (getProcAddress "glGetSynciv")

{-# NOINLINE glGetSyncivFunPtr #-}

-- | Usage: @'glIsSync' sync@
--
-- The parameter @sync@ is a @sync@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glIsSync.xhtml>


glIsSync :: MonadIO m => GLsync -> m GLboolean
glIsSync = ffisyncIOboolean glIsSyncFunPtr

glIsSyncFunPtr :: FunPtr (GLsync -> IO GLboolean)
glIsSyncFunPtr = unsafePerformIO (getProcAddress "glIsSync")

{-# NOINLINE glIsSyncFunPtr #-}

-- | Usage: @'glWaitSync' sync flags timeout@
--
-- The parameter @sync@ is a @sync@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glWaitSync.xhtml>


glWaitSync :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m ()
glWaitSync = ffisyncbitfielduint64IOV glWaitSyncFunPtr

glWaitSyncFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
glWaitSyncFunPtr = unsafePerformIO (getProcAddress "glWaitSync")

{-# NOINLINE glWaitSyncFunPtr #-}

pattern GL_ALREADY_SIGNALED = 0x911A

pattern GL_CONDITION_SATISFIED = 0x911C

pattern GL_MAX_SERVER_WAIT_TIMEOUT = 0x9111

pattern GL_OBJECT_TYPE = 0x9112

pattern GL_SIGNALED = 0x9119

pattern GL_SYNC_CONDITION = 0x9113

pattern GL_SYNC_FENCE = 0x9116

pattern GL_SYNC_FLAGS = 0x9115

pattern GL_SYNC_FLUSH_COMMANDS_BIT = 0x00000001

pattern GL_SYNC_GPU_COMMANDS_COMPLETE = 0x9117

pattern GL_SYNC_STATUS = 0x9114

pattern GL_TIMEOUT_EXPIRED = 0x911B

pattern GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF

pattern GL_UNSIGNALED = 0x9118

pattern GL_WAIT_FAILED = 0x911D

-- | Usage: @'glPatchParameterfv' pname values@
--
-- The length of @values@ should be @COMPSIZE(pname)@.


glPatchParameterfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glPatchParameterfv = ffienumPtrfloatIOV glPatchParameterfvFunPtr

glPatchParameterfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glPatchParameterfvFunPtr = unsafePerformIO (getProcAddress "glPatchParameterfv")

{-# NOINLINE glPatchParameterfvFunPtr #-}

-- | Usage: @'glPatchParameteri' pname value@


glPatchParameteri :: MonadIO m => GLenum -> GLint -> m ()
glPatchParameteri = ffienumintIOV glPatchParameteriFunPtr

glPatchParameteriFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPatchParameteriFunPtr = unsafePerformIO (getProcAddress "glPatchParameteri")

{-# NOINLINE glPatchParameteriFunPtr #-}

pattern GL_CCW = 0x0901

pattern GL_CW = 0x0900

pattern GL_EQUAL = 0x0202

pattern GL_FRACTIONAL_EVEN = 0x8E7C

pattern GL_FRACTIONAL_ODD = 0x8E7B

pattern GL_ISOLINES = 0x8E7A

pattern GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E

pattern GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F

pattern GL_MAX_PATCH_VERTICES = 0x8E7D

pattern GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C

pattern GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83

pattern GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81

pattern GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85

pattern GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89

pattern GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F

pattern GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D

pattern GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86

pattern GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82

pattern GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A

pattern GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80

pattern GL_MAX_TESS_GEN_LEVEL = 0x8E7E

pattern GL_MAX_TESS_PATCH_COMPONENTS = 0x8E84

pattern GL_PATCHES = 0x000E

pattern GL_PATCH_DEFAULT_INNER_LEVEL = 0x8E73

pattern GL_PATCH_DEFAULT_OUTER_LEVEL = 0x8E74

pattern GL_PATCH_VERTICES = 0x8E72

pattern GL_QUADS = 0x0007

pattern GL_TESS_CONTROL_OUTPUT_VERTICES = 0x8E75

pattern GL_TESS_CONTROL_SHADER = 0x8E88

pattern GL_TESS_EVALUATION_SHADER = 0x8E87

pattern GL_TESS_GEN_MODE = 0x8E76

pattern GL_TESS_GEN_POINT_MODE = 0x8E79

pattern GL_TESS_GEN_SPACING = 0x8E77

pattern GL_TESS_GEN_VERTEX_ORDER = 0x8E78

pattern GL_TRIANGLES = 0x0004

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1

-- | Usage: @'glTextureBarrier'@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTextureBarrier.xhtml>


glTextureBarrier :: MonadIO m => m ()
glTextureBarrier = ffiIOV glTextureBarrierFunPtr

glTextureBarrierFunPtr :: FunPtr (IO ())
glTextureBarrierFunPtr = unsafePerformIO (getProcAddress "glTextureBarrier")

{-# NOINLINE glTextureBarrierFunPtr #-}

pattern GL_RGB32F = 0x8815

pattern GL_RGB32I = 0x8D83

pattern GL_RGB32UI = 0x8D71

-- | Usage: @'glTexBufferRange' target internalformat buffer offset size@
--
-- The parameter @offset@ is a @BufferOffset@.
--
-- The parameter @size@ is a @BufferSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexBufferRange.xhtml>


glTexBufferRange :: MonadIO m => GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
glTexBufferRange = ffienumenumuintintptrsizeiptrIOV glTexBufferRangeFunPtr

glTexBufferRangeFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
glTexBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTexBufferRange")

{-# NOINLINE glTexBufferRangeFunPtr #-}

pattern GL_TEXTURE_BUFFER_OFFSET = 0x919D

pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F

pattern GL_TEXTURE_BUFFER_SIZE = 0x919E

pattern GL_COMPRESSED_RED_RGTC1 = 0x8DBB

pattern GL_COMPRESSED_RG_RGTC2 = 0x8DBD

pattern GL_COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC

pattern GL_COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE

pattern GL_MIRROR_CLAMP_TO_EDGE = 0x8743

-- | Usage: @'glGetMultisamplefv' pname index val@
--
-- The length of @val@ should be @COMPSIZE(pname)@.


glGetMultisamplefv :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetMultisamplefv = ffienumuintPtrfloatIOV glGetMultisamplefvFunPtr

glGetMultisamplefvFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetMultisamplefvFunPtr = unsafePerformIO (getProcAddress "glGetMultisamplefv")

{-# NOINLINE glGetMultisamplefvFunPtr #-}

-- | Usage: @'glSampleMaski' maskNumber mask@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glSampleMaski.xhtml>


glSampleMaski :: MonadIO m => GLuint -> GLbitfield -> m ()
glSampleMaski = ffiuintbitfieldIOV glSampleMaskiFunPtr

glSampleMaskiFunPtr :: FunPtr (GLuint -> GLbitfield -> IO ())
glSampleMaskiFunPtr = unsafePerformIO (getProcAddress "glSampleMaski")

{-# NOINLINE glSampleMaskiFunPtr #-}

-- | Usage: @'glTexImage2DMultisample' target samples internalformat width height fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage2DMultisample.xhtml>


glTexImage2DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexImage2DMultisample = ffienumsizeienumsizeisizeibooleanIOV glTexImage2DMultisampleFunPtr

glTexImage2DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexImage2DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexImage2DMultisample")

{-# NOINLINE glTexImage2DMultisampleFunPtr #-}

-- | Usage: @'glTexImage3DMultisample' target samples internalformat width height depth fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage3DMultisample.xhtml>


glTexImage3DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexImage3DMultisample = ffienumsizeienumsizeisizeisizeibooleanIOV glTexImage3DMultisampleFunPtr

glTexImage3DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexImage3DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexImage3DMultisample")

{-# NOINLINE glTexImage3DMultisampleFunPtr #-}

pattern GL_INT_SAMPLER_2D_MULTISAMPLE = 0x9109

pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C

pattern GL_MAX_COLOR_TEXTURE_SAMPLES = 0x910E

pattern GL_MAX_DEPTH_TEXTURE_SAMPLES = 0x910F

pattern GL_MAX_INTEGER_SAMPLES = 0x9110

pattern GL_MAX_SAMPLE_MASK_WORDS = 0x8E59

pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101

pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103

pattern GL_SAMPLER_2D_MULTISAMPLE = 0x9108

pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B

pattern GL_SAMPLE_MASK = 0x8E51

pattern GL_SAMPLE_MASK_VALUE = 0x8E52

pattern GL_SAMPLE_POSITION = 0x8E50

pattern GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107

pattern GL_TEXTURE_SAMPLES = 0x9106

pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A

pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D

pattern GL_R16 = 0x822A

pattern GL_R16F = 0x822D

pattern GL_R16I = 0x8233

pattern GL_R16UI = 0x8234

pattern GL_R32F = 0x822E

pattern GL_R32I = 0x8235

pattern GL_R32UI = 0x8236

pattern GL_R8 = 0x8229

pattern GL_R8I = 0x8231

pattern GL_R8UI = 0x8232

pattern GL_RG = 0x8227

pattern GL_RG16 = 0x822C

pattern GL_RG16F = 0x822F

pattern GL_RG16I = 0x8239

pattern GL_RG32F = 0x8230

pattern GL_RG32I = 0x823B

pattern GL_RG32UI = 0x823C

pattern GL_RG8 = 0x822B

pattern GL_RG8I = 0x8237

pattern GL_RG_INTEGER = 0x8228

pattern GL_RGB10_A2UI = 0x906F

pattern GL_STENCIL_INDEX = 0x1901

-- | Usage: @'glTexStorage1D' target levels internalformat width@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage1D.xhtml>


glTexStorage1D :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
glTexStorage1D = ffienumsizeienumsizeiIOV glTexStorage1DFunPtr

glTexStorage1DFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTexStorage1DFunPtr = unsafePerformIO (getProcAddress "glTexStorage1D")

{-# NOINLINE glTexStorage1DFunPtr #-}

-- | Usage: @'glTexStorage2D' target levels internalformat width height@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage2D.xhtml>


glTexStorage2D :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTexStorage2D = ffienumsizeienumsizeisizeiIOV glTexStorage2DFunPtr

glTexStorage2DFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTexStorage2DFunPtr = unsafePerformIO (getProcAddress "glTexStorage2D")

{-# NOINLINE glTexStorage2DFunPtr #-}

-- | Usage: @'glTexStorage3D' target levels internalformat width height depth@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage3D.xhtml>


glTexStorage3D :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTexStorage3D = ffienumsizeienumsizeisizeisizeiIOV glTexStorage3DFunPtr

glTexStorage3DFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTexStorage3DFunPtr = unsafePerformIO (getProcAddress "glTexStorage3D")

{-# NOINLINE glTexStorage3DFunPtr #-}

pattern GL_TEXTURE_IMMUTABLE_FORMAT = 0x912F

-- | Usage: @'glTexStorage2DMultisample' target samples internalformat width height fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage2DMultisample.xhtml>


glTexStorage2DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexStorage2DMultisample = ffienumsizeienumsizeisizeibooleanIOV glTexStorage2DMultisampleFunPtr

glTexStorage2DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexStorage2DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexStorage2DMultisample")

{-# NOINLINE glTexStorage2DMultisampleFunPtr #-}

-- | Usage: @'glTexStorage3DMultisample' target samples internalformat width height depth fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Raw.Internal.Shared.GL_FALSE', 'Graphics.GL.Raw.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage3DMultisample.xhtml>


glTexStorage3DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexStorage3DMultisample = ffienumsizeienumsizeisizeisizeibooleanIOV glTexStorage3DMultisampleFunPtr

glTexStorage3DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexStorage3DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexStorage3DMultisample")

{-# NOINLINE glTexStorage3DMultisampleFunPtr #-}

pattern GL_TEXTURE_SWIZZLE_A = 0x8E45

pattern GL_TEXTURE_SWIZZLE_B = 0x8E44

pattern GL_TEXTURE_SWIZZLE_G = 0x8E43

pattern GL_TEXTURE_SWIZZLE_R = 0x8E42

pattern GL_TEXTURE_SWIZZLE_RGBA = 0x8E46

-- | Usage: @'glTextureView' texture target origtexture internalformat minlevel numlevels minlayer numlayers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTextureView.xhtml>


glTextureView :: MonadIO m => GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glTextureView = ffiuintenumuintenumuintuintuintuintIOV glTextureViewFunPtr

glTextureViewFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glTextureViewFunPtr = unsafePerformIO (getProcAddress "glTextureView")

{-# NOINLINE glTextureViewFunPtr #-}

pattern GL_TEXTURE_IMMUTABLE_LEVELS = 0x82DF

pattern GL_TEXTURE_VIEW_MIN_LAYER = 0x82DD

pattern GL_TEXTURE_VIEW_MIN_LEVEL = 0x82DB

pattern GL_TEXTURE_VIEW_NUM_LAYERS = 0x82DE

pattern GL_TEXTURE_VIEW_NUM_LEVELS = 0x82DC

-- | Usage: @'glGetQueryObjecti64v' id pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetQueryObjecti64v :: MonadIO m => GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetQueryObjecti64v = ffiuintenumPtrint64IOV glGetQueryObjecti64vFunPtr

glGetQueryObjecti64vFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetQueryObjecti64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjecti64v")

{-# NOINLINE glGetQueryObjecti64vFunPtr #-}

-- | Usage: @'glGetQueryObjectui64v' id pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.