-- 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

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

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

{-# NOINLINE glGetUniformi64vNVFunPtr #-}

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

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

{-# NOINLINE glGetUniformui64vNVFunPtr #-}

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

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

{-# NOINLINE glProgramUniform1i64NVFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramUniform1ui64NVFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramUniform2i64NVFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramUniform2ui64NVFunPtr #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glUniform1i64NVFunPtr #-}

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

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

{-# NOINLINE glUniform1i64vNVFunPtr #-}

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

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

{-# NOINLINE glUniform1ui64NVFunPtr #-}

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

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

{-# NOINLINE glUniform1ui64vNVFunPtr #-}

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

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

{-# NOINLINE glUniform2i64NVFunPtr #-}

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

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

{-# NOINLINE glUniform2i64vNVFunPtr #-}

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

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

{-# NOINLINE glUniform2ui64NVFunPtr #-}

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

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

{-# NOINLINE glUniform2ui64vNVFunPtr #-}

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

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

{-# NOINLINE glUniform3i64NVFunPtr #-}

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

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

{-# NOINLINE glUniform3i64vNVFunPtr #-}

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

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

{-# NOINLINE glUniform3ui64NVFunPtr #-}

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

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

{-# NOINLINE glUniform3ui64vNVFunPtr #-}

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 #-}

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

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

{-# NOINLINE glUniform4i64vNVFunPtr #-}

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 #-}

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

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 #-}

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 #-}

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 #-}

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 #-}

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

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

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 #-}

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 #-}

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 #-}

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

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

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

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

{-# NOINLINE glDispatchComputeFunPtr #-}

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

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

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

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

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

{-# NOINLINE glBindTextureUnitFunPtr #-}

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 #-}

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

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

{-# NOINLINE glCheckNamedFramebufferStatusFunPtr #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glClearNamedFramebufferfiFunPtr #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glCreateBuffersFunPtr #-}

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

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

{-# NOINLINE glCreateFramebuffersFunPtr #-}

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

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

{-# NOINLINE glCreateProgramPipelinesFunPtr #-}

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

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

{-# NOINLINE glCreateQueriesFunPtr #-}

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

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

{-# NOINLINE glCreateRenderbuffersFunPtr #-}

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

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

{-# NOINLINE glCreateSamplersFunPtr #-}

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

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

{-# NOINLINE glCreateTexturesFunPtr #-}

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

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

{-# NOINLINE glCreateTransformFeedbacksFunPtr #-}

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

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

{-# NOINLINE glCreateVertexArraysFunPtr #-}

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

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

{-# NOINLINE glDisableVertexArrayAttribFunPtr #-}

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

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

{-# NOINLINE glEnableVertexArrayAttribFunPtr #-}

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

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

{-# NOINLINE glFlushMappedNamedBufferRangeFunPtr #-}

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

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

{-# NOINLINE glGenerateTextureMipmapFunPtr #-}

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

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

{-# NOINLINE glGetCompressedTextureImageFunPtr #-}

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

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

{-# NOINLINE glGetNamedBufferParameteri64vFunPtr #-}

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

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

{-# NOINLINE glGetNamedBufferParameterivFunPtr #-}

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

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

{-# NOINLINE glGetNamedBufferPointervFunPtr #-}

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

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

{-# NOINLINE glGetNamedBufferSubDataFunPtr #-}

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 #-}

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

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

{-# NOINLINE glGetNamedFramebufferParameterivFunPtr #-}

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

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

{-# NOINLINE glGetNamedRenderbufferParameterivFunPtr #-}

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

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

{-# NOINLINE glGetQueryBufferObjecti64vFunPtr #-}

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

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

{-# NOINLINE glGetQueryBufferObjectivFunPtr #-}

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

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

{-# NOINLINE glGetQueryBufferObjectui64vFunPtr #-}

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

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

{-# NOINLINE glGetQueryBufferObjectuivFunPtr #-}

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glGetTextureParameterIivFunPtr #-}

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

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

{-# NOINLINE glGetTextureParameterIuivFunPtr #-}

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

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

{-# NOINLINE glGetTextureParameterfvFunPtr #-}

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

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

{-# NOINLINE glGetTextureParameterivFunPtr #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glGetTransformFeedbackivFunPtr #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glGetVertexArrayivFunPtr #-}

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

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

{-# NOINLINE glInvalidateNamedFramebufferDataFunPtr #-}

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 #-}

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

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

{-# NOINLINE glMapNamedBufferFunPtr #-}

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 #-}

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

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

{-# NOINLINE glNamedBufferDataFunPtr #-}

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

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

{-# NOINLINE glNamedBufferStorageFunPtr #-}

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

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

{-# NOINLINE glNamedBufferSubDataFunPtr #-}

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

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

{-# NOINLINE glNamedFramebufferDrawBufferFunPtr #-}

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

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

{-# NOINLINE glNamedFramebufferDrawBuffersFunPtr #-}

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

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

{-# NOINLINE glNamedFramebufferParameteriFunPtr #-}

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

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

{-# NOINLINE glNamedFramebufferReadBufferFunPtr #-}

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

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

{-# NOINLINE glNamedFramebufferRenderbufferFunPtr #-}

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

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

{-# NOINLINE glNamedFramebufferTextureFunPtr #-}

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 #-}

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

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

{-# NOINLINE glNamedRenderbufferStorageFunPtr #-}

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 #-}

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

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

{-# NOINLINE glTextureBufferFunPtr #-}

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 #-}

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

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

{-# NOINLINE glTextureParameterIivFunPtr #-}

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

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

{-# NOINLINE glTextureParameterIuivFunPtr #-}

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

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

{-# NOINLINE glTextureParameterfFunPtr #-}

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

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

{-# NOINLINE glTextureParameterfvFunPtr #-}

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

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

{-# NOINLINE glTextureParameteriFunPtr #-}

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

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

{-# NOINLINE glTextureParameterivFunPtr #-}

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

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

{-# NOINLINE glTextureStorage1DFunPtr #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glTransformFeedbackBufferBaseFunPtr #-}

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 #-}

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

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

{-# NOINLINE glUnmapNamedBufferFunPtr #-}

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

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

{-# NOINLINE glVertexArrayAttribBindingFunPtr #-}

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glVertexArrayBindingDivisorFunPtr #-}

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

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

{-# NOINLINE glVertexArrayElementBufferFunPtr #-}

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 #-}

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

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glMultiDrawElementsBaseVertexFunPtr #-}

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

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

{-# NOINLINE glDrawArraysIndirectFunPtr #-}

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

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

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

{-# NOINLINE glClearDepthfFunPtr #-}

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

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

{-# NOINLINE glDepthRangefFunPtr #-}

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 #-}

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

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

{-# NOINLINE glReleaseShaderCompilerFunPtr #-}

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

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

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

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

{-# NOINLINE glBindProgramARBFunPtr #-}

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

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

{-# NOINLINE glDeleteProgramsARBFunPtr #-}

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

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

{-# NOINLINE glGenProgramsARBFunPtr #-}

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

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

{-# NOINLINE glGetProgramEnvParameterdvARBFunPtr #-}

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

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

{-# NOINLINE glGetProgramEnvParameterfvARBFunPtr #-}

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

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

{-# NOINLINE glGetProgramLocalParameterdvARBFunPtr #-}

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

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

{-# NOINLINE glGetProgramLocalParameterfvARBFunPtr #-}

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

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

{-# NOINLINE glGetProgramStringARBFunPtr #-}

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

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

{-# NOINLINE glGetProgramivARBFunPtr #-}

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

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

{-# NOINLINE glIsProgramARBFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramEnvParameter4dvARBFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramEnvParameter4fvARBFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramLocalParameter4dvARBFunPtr #-}

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 #-}

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

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

{-# NOINLINE glProgramLocalParameter4fvARBFunPtr #-}

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

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

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

{-# NOINLINE glFramebufferParameteriFunPtr #-}

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

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

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

{-# NOINLINE glBindFramebufferFunPtr #-}

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

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

{-# NOINLINE glBindRenderbufferFunPtr #-}

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 #-}

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

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

{-# NOINLINE glCheckFramebufferStatusFunPtr #-}

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

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

{-# NOINLINE glDeleteFramebuffersFunPtr #-}

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

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

{-# NOINLINE glDeleteRenderbuffersFunPtr #-}

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

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

{-# NOINLINE glFramebufferRenderbufferFunPtr #-}

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 #-}

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 #-}

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 #-}

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 #-}

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

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

{-# NOINLINE glGenFramebuffersFunPtr #-}

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

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

{-# NOINLINE glGenRenderbuffersFunPtr #-}

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

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

{-# NOINLINE glGenerateMipmapFunPtr #-}

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 #-}

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

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

{-# NOINLINE glGetRenderbufferParameterivFunPtr #-}

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

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

{-# NOINLINE glIsFramebufferFunPtr #-}

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

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

{-# NOINLINE glIsRenderbufferFunPtr #-}

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

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

{-# NOINLINE glRenderbufferStorageFunPtr #-}

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

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 #-}

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

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

{-# NOINLINE glProgramBinaryFunPtr #-}

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

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 #-}

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

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

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

{-# NOINLINE glGetUniformdvFunPtr #-}

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

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

{-# NOINLINE glUniform1dFunPtr #-}

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

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

{-# NOINLINE glUniform1dvFunPtr #-}

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

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

{-# NOINLINE glUniform2dFunPtr #-}

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

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

{-# NOINLINE glUniform2dvFunPtr #-}

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

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

{-# NOINLINE glUniform3dFunPtr #-}

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

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

{-# NOINLINE glUniform3dvFunPtr #-}

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 #-}

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

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

{-# NOINLINE glUniform4dvFunPtr #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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

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

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

{-# NOINLINE glBlendColorFunPtr #-}

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

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

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

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

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

{-# NOINLINE glInvalidateBufferDataFunPtr #-}

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

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

{-# NOINLINE glInvalidateBufferSubDataFunPtr #-}

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

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

{-# NOINLINE glInvalidateFramebufferFunPtr #-}

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 #-}

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

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

{-# NOINLINE glInvalidateTexImageFunPtr #-}

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

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

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

{-# NOINLINE glFlushMappedBufferRangeFunPtr #-}

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

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 #-}

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 #-}

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

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

{-# NOINLINE glBindImageTexturesFunPtr #-}

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

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

{-# NOINLINE glBindSamplersFunPtr #-}

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

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

{-# NOINLINE glBindTexturesFunPtr #-}

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 #-}

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

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

{-# NOINLINE glMultiDrawArraysIndirectFunPtr #-}

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

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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

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

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

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

{-# NOINLINE glBindSamplerFunPtr #-}

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

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

{-# NOINLINE glDeleteSamplersFunPtr #-}

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

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

{-# NOINLINE glGenSamplersFunPtr #-}

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

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

{-# NOINLINE glGetSamplerParameterIivFunPtr #-}

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

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

{-# NOINLINE glGetSamplerParameterIuivFunPtr #-}

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

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

{-# NOINLINE glGetSamplerParameterfvFunPtr #-}

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

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

{-# NOINLINE glGetSamplerParameterivFunPtr #-}

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

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

{-# NOINLINE glIsSamplerFunPtr #-}

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

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

{-# NOINLINE glSamplerParameterIivFunPtr #-}

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

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

{-# NOINLINE glSamplerParameterIuivFunPtr #-}

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

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

{-# NOINLINE glSamplerParameterfFunPtr #-}

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

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

{-# NOINLINE glSamplerParameterfvFunPtr #-}

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

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

{-# NOINLINE glSamplerParameteriFunPtr #-}

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

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

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

{-# NOINLINE glActiveShaderProgramFunPtr #-}

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

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

{-# NOINLINE glBindProgramPipelineFunPtr #-}

glCreateShaderProgramv :: MonadIO m => GLenum -> GLsizei -> Ptr GLchar -> m GLuint
glCreateShaderProgramv = ffienumsizeiPtrcharIOuint glCreateShaderProgramvFunPtr

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

{-# NOINLINE glCreateShaderProgramvFunPtr #-}

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

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

{-# NOINLINE glDeleteProgramPipelinesFunPtr #-}

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

glGenProgramPipelinesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramPipelinesFunPtr = unsafePerformIO (getProcAddress "glGenProgramPipelines")

{-# NOINLINE glGenProgramPipelinesFunPtr #-}

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 #-}

glGetProgramPipelineiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetProgramPipelineiv = ffiuintenumPtrintIOV glGetProgramPipelineivFunPtr

glGetProgramPipelineivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetProgramPipelineivFunPtr = unsafePerformIO (getProcAddress "glGetProgramPipelineiv")

{-# NOINLINE glGetProgramPipelineivFunPtr #-}

glIsProgramPipeline :: MonadIO m => GLuint -> m GLboolean
glIsProgramPipeline = ffiuintIOboolean glIsProgramPipelineFunPtr

glIsProgramPipelineFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramPipelineFunPtr = unsafePerformIO (getProcAddress "glIsProgramPipeline")

{-# NOINLINE glIsProgramPipelineFunPtr #-}

glProgramUniform1d :: MonadIO m => GLuint -> GLint -> GLdouble -> m ()
glProgramUniform1d = ffiuintintdoubleIOV glProgramUniform1dFunPtr

glProgramUniform1dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> IO ())
glProgramUniform1dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1d")

{-# NOINLINE glProgramUniform1dFunPtr #-}

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 #-}

glProgramUniform1f :: MonadIO m => GLuint -> GLint -> GLfloat -> m ()
glProgramUniform1f = ffiuintintfloatIOV glProgramUniform1fFunPtr

glProgramUniform1fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> IO ())
glProgramUniform1fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1f")

{-# NOINLINE glProgramUniform1fFunPtr #-}

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 #-}

glProgramUniform1i :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glProgramUniform1i = ffiuintintintIOV glProgramUniform1iFunPtr

glProgramUniform1iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glProgramUniform1iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i")

{-# NOINLINE glProgramUniform1iFunPtr #-}

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 #-}

glProgramUniform1ui :: MonadIO m => GLuint -> GLint -> GLuint -> m ()
glProgramUniform1ui = ffiuintintuintIOV glProgramUniform1uiFunPtr

glProgramUniform1uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> IO ())
glProgramUniform1uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui")

{-# NOINLINE glProgramUniform1uiFunPtr #-}

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 #-}

glProgramUniform2d :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> m ()
glProgramUniform2d = ffiuintintdoubledoubleIOV glProgramUniform2dFunPtr

glProgramUniform2dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> IO ())
glProgramUniform2dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2d")

{-# NOINLINE glProgramUniform2dFunPtr #-}

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 #-}

glProgramUniform2f :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> m ()
glProgramUniform2f = ffiuintintfloatfloatIOV glProgramUniform2fFunPtr

glProgramUniform2fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> IO ())
glProgramUniform2fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2f")

{-# NOINLINE glProgramUniform2fFunPtr #-}

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 #-}

glProgramUniform2i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glProgramUniform2i = ffiuintintintintIOV glProgramUniform2iFunPtr

glProgramUniform2iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform2iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i")

{-# NOINLINE glProgramUniform2iFunPtr #-}

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 #-}

glProgramUniform2ui :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> m ()
glProgramUniform2ui = ffiuintintuintuintIOV glProgramUniform2uiFunPtr

glProgramUniform2uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> IO ())
glProgramUniform2uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui")

{-# NOINLINE glProgramUniform2uiFunPtr #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

glUseProgramStages :: MonadIO m => GLuint -> GLbitfield -> GLuint -> m ()
glUseProgramStages = ffiuintbitfielduintIOV glUseProgramStagesFunPtr

glUseProgramStagesFunPtr :: FunPtr (GLuint -> GLbitfield -> GLuint -> IO ())
glUseProgramStagesFunPtr = unsafePerformIO (getProcAddress "glUseProgramStages")

{-# NOINLINE glUseProgramStagesFunPtr #-}

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

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

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 #-}

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

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

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

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 #-}

glGetUniformSubroutineuiv :: MonadIO m => GLenum -> GLint -> Ptr GLuint -> m ()
glGetUniformSubroutineuiv = ffienumintPtruintIOV glGetUniformSubroutineuivFunPtr

glGetUniformSubroutineuivFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLuint -> IO ())
glGetUniformSubroutineuivFunPtr = unsafePerformIO (getProcAddress "glGetUniformSubroutineuiv")

{-# NOINLINE glGetUniformSubroutineuivFunPtr #-}

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

glClientWaitSync :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m GLenum
glClientWaitSync = ffisyncbitfielduint64IOenum glClientWaitSyncFunPtr

glClientWaitSyncFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO GLenum)
glClientWaitSyncFunPtr = unsafePerformIO (getProcAddress "glClientWaitSync")

{-# NOINLINE glClientWaitSyncFunPtr #-}

glDeleteSync :: MonadIO m => GLsync -> m ()
glDeleteSync = ffisyncIOV glDeleteSyncFunPtr

glDeleteSyncFunPtr :: FunPtr (GLsync -> IO ())
glDeleteSyncFunPtr = unsafePerformIO (getProcAddress "glDeleteSync")

{-# NOINLINE glDeleteSyncFunPtr #-}

glFenceSync :: MonadIO m => GLenum -> GLbitfield -> m GLsync
glFenceSync = ffienumbitfieldIOsync glFenceSyncFunPtr

glFenceSyncFunPtr :: FunPtr (GLenum -> GLbitfield -> IO GLsync)
glFenceSyncFunPtr = unsafePerformIO (getProcAddress "glFenceSync")

{-# NOINLINE glFenceSyncFunPtr #-}

glGetInteger64v :: MonadIO m => GLenum -> Ptr GLint64 -> m ()
glGetInteger64v = ffienumPtrint64IOV glGetInteger64vFunPtr

glGetInteger64vFunPtr :: FunPtr (GLenum -> Ptr GLint64 -> IO ())
glGetInteger64vFunPtr = unsafePerformIO (getProcAddress "glGetInteger64v")

{-# NOINLINE glGetInteger64vFunPtr #-}

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 #-}

glIsSync :: MonadIO m => GLsync -> m GLboolean
glIsSync = ffisyncIOboolean glIsSyncFunPtr

glIsSyncFunPtr :: FunPtr (GLsync -> IO GLboolean)
glIsSyncFunPtr = unsafePerformIO (getProcAddress "glIsSync")

{-# NOINLINE glIsSyncFunPtr #-}

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

glPatchParameterfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glPatchParameterfv = ffienumPtrfloatIOV glPatchParameterfvFunPtr

glPatchParameterfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glPatchParameterfvFunPtr = unsafePerformIO (getProcAddress "glPatchParameterfv")

{-# NOINLINE glPatchParameterfvFunPtr #-}

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

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

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

glGetMultisamplefv :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetMultisamplefv = ffienumuintPtrfloatIOV glGetMultisamplefvFunPtr

glGetMultisamplefvFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetMultisamplefvFunPtr = unsafePerformIO (getProcAddress "glGetMultisamplefv")

{-# NOINLINE glGetMultisamplefvFunPtr #-}

glSampleMaski :: MonadIO m => GLuint -> GLbitfield -> m ()
glSampleMaski = ffiuintbitfieldIOV glSampleMaskiFunPtr

glSampleMaskiFunPtr :: FunPtr (GLuint -> GLbitfield -> IO ())
glSampleMaskiFunPtr = unsafePerformIO (getProcAddress "glSampleMaski")

{-# NOINLINE glSampleMaskiFunPtr #-}

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 #-}

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

glTexStorage1D :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
glTexStorage1D = ffienumsizeienumsizeiIOV glTexStorage1DFunPtr

glTexStorage1DFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTexStorage1DFunPtr = unsafePerformIO (getProcAddress "glTexStorage1D")

{-# NOINLINE glTexStorage1DFunPtr #-}

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 #-}

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

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 #-}

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

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

glGetQueryObjecti64v :: MonadIO m => GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetQueryObjecti64v = ffiuintenumPtrint64IOV glGetQueryObjecti64vFunPtr

glGetQueryObjecti64vFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetQueryObjecti64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjecti64v")

{-# NOINLINE glGetQueryObjecti64vFunPtr #-}

glGetQueryObjectui64v :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64 -> m ()
glGetQueryObjectui64v = ffiuintenumPtruint64IOV glGetQueryObjectui64vFunPtr

glGetQueryObjectui64vFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64 -> IO ())
glGetQueryObjectui64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectui64v")

{-# NOINLINE glGetQueryObjectui64vFunPtr #-}

glQueryCounter :: MonadIO m => GLuint -> GLenum -> m ()
glQueryCounter = ffiuintenumIOV glQueryCounterFunPtr

glQueryCounterFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glQueryCounterFunPtr = unsafePerformIO (getProcAddress "glQueryCounter")

{-# NOINLINE glQueryCounterFunPtr #-}

pattern GL_TIMESTAMP = 0x8E28

pattern GL_TIME_ELAPSED = 0x88BF

glBindTransformFeedback :: MonadIO m => GLenum -> GLuint -> m ()
glBindTransformFeedback = ffienumuintIOV glBindTransformFeedbackFunPtr

glBindTransformFeedbackFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glBindTransformFeedback")

{-# NOINLINE glBindTransformFeedbackFunPtr #-}

glDeleteTransformFeedbacks :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteTransformFeedbacks = ffisizeiPtruintIOV glDeleteTransformFeedbacksFunPtr

glDeleteTransformFeedbacksFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteTransformFeedbacksFunPtr = unsafePerformIO (getProcAddress "glDeleteTransformFeedbacks")

{-# NOINLINE glDeleteTransformFeedbacksFunPtr #-}

glDrawTransformFeedback :: MonadIO m => GLenum -> GLuint -> m ()
glDrawTransformFeedback = ffienumuintIOV glDrawTransformFeedbackFunPtr

glDrawTransformFeedbackFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDrawTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedback")

{-# NOINLINE glDrawTransformFeedbackFunPtr #-}

glGenTransformFeedbacks :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenTransformFeedbacks = ffisizeiPtruintIOV glGenTransformFeedbacksFunPtr

glGenTransformFeedbacksFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenTransformFeedbacksFunPtr = unsafePerformIO (getProcAddress "glGenTransformFeedbacks")

{-# NOINLINE glGenTransformFeedbacksFunPtr #-}

glIsTransformFeedback :: MonadIO m => GLuint -> m GLboolean
glIsTransformFeedback = ffiuintIOboolean glIsTransformFeedbackFunPtr

glIsTransformFeedbackFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glIsTransformFeedback")

{-# NOINLINE glIsTransformFeedbackFunPtr #-}

glPauseTransformFeedback :: MonadIO m => m ()
glPauseTransformFeedback = ffiIOV glPauseTransformFeedbackFunPtr

glPauseTransformFeedbackFunPtr :: FunPtr (IO ())
glPauseTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glPauseTransformFeedback")

{-# NOINLINE glPauseTransformFeedbackFunPtr #-}

glResumeTransformFeedback :: MonadIO m => m ()
glResumeTransformFeedback = ffiIOV glResumeTransformFeedbackFunPtr

glResumeTransformFeedbackFunPtr :: FunPtr (IO ())
glResumeTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glResumeTransformFeedback")

{-# NOINLINE glResumeTransformFeedbackFunPtr #-}

pattern GL_TRANSFORM_FEEDBACK = 0x8E22

pattern GL_TRANSFORM_FEEDBACK_BINDING = 0x8E25

pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24

pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23

glBeginQueryIndexed :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
glBeginQueryIndexed = ffienumuintuintIOV glBeginQueryIndexedFunPtr

glBeginQueryIndexedFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
glBeginQueryIndexedFunPtr = unsafePerformIO (getProcAddress "glBeginQueryIndexed")

{-# NOINLINE glBeginQueryIndexedFunPtr #-}

glDrawTransformFeedbackStream :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
glDrawTransformFeedbackStream = ffienumuintuintIOV glDrawTransformFeedbackStreamFunPtr

glDrawTransformFeedbackStreamFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
glDrawTransformFeedbackStreamFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackStream")

{-# NOINLINE glDrawTransformFeedbackStreamFunPtr #-}

glEndQueryIndexed :: MonadIO m => GLenum -> GLuint -> m ()
glEndQueryIndexed = ffienumuintIOV glEndQueryIndexedFunPtr

glEndQueryIndexedFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEndQueryIndexedFunPtr = unsafePerformIO (getProcAddress "glEndQueryIndexed")

{-# NOINLINE glEndQueryIndexedFunPtr #-}

glGetQueryIndexediv :: MonadIO m => GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetQueryIndexediv = ffienumuintenumPtrintIOV glGetQueryIndexedivFunPtr

glGetQueryIndexedivFunPtr :: FunPtr (GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetQueryIndexedivFunPtr = unsafePerformIO (getProcAddress "glGetQueryIndexediv")

{-# NOINLINE glGetQueryIndexedivFunPtr #-}

pattern GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70

glDrawTransformFeedbackInstanced :: MonadIO m => GLenum -> GLuint -> GLsizei -> m ()
glDrawTransformFeedbackInstanced = ffienumuintsizeiIOV glDrawTransformFeedbackInstancedFunPtr

glDrawTransformFeedbackInstancedFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> IO ())
glDrawTransformFeedbackInstancedFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackInstanced")

{-# NOINLINE glDrawTransformFeedbackInstancedFunPtr #-}

glDrawTransformFeedbackStreamInstanced :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> m ()
glDrawTransformFeedbackStreamInstanced = ffienumuintuintsizeiIOV glDrawTransformFeedbackStreamInstancedFunPtr

glDrawTransformFeedbackStreamInstancedFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> IO ())
glDrawTransformFeedbackStreamInstancedFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackStreamInstanced")

{-# NOINLINE glDrawTransformFeedbackStreamInstancedFunPtr #-}

glGetActiveUniformBlockName :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetActiveUniformBlockName = ffiuintuintsizeiPtrsizeiPtrcharIOV glGetActiveUniformBlockNameFunPtr

glGetActiveUniformBlockNameFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetActiveUniformBlockNameFunPtr = unsafePerformIO (getProcAddress "glGetActiveUniformBlockName")

{-# NOINLINE glGetActiveUniformBlockNameFunPtr #-}

glGetActiveUniformBlockiv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetActiveUniformBlockiv = ffiuintuintenumPtrintIOV glGetActiveUniformBlockivFunPtr

glGetActiveUniformBlockivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetActiveUniformBlockivFunPtr = unsafePerformIO (getProcAddress "glGetActiveUniformBlockiv")

{-# NOINLINE glGetActiveUniformBlockivFunPtr #-}

glGetActiveUniformName :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetActiveUniformName = ffiuintuintsizeiPtrsizeiPtrcharIOV glGetActiveUniformNameFunPtr

glGetActiveUniformNameFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetActiveUniformNameFunPtr = unsafePerformIO (getProcAddress "glGetActiveUniformName")

{-# NOINLINE glGetActiveUniformNameFunPtr #-}

glGetActiveUniformsiv :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> GLenum -> Ptr GLint -> m ()
glGetActiveUniformsiv = ffiuintsizeiPtruintenumPtrintIOV glGetActiveUniformsivFunPtr

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

{-# NOINLINE glGetActiveUniformsivFunPtr #-}

glGetUniformBlockIndex :: MonadIO m => GLuint -> Ptr GLchar -> m GLuint
glGetUniformBlockIndex = ffiuintPtrcharIOuint glGetUniformBlockIndexFunPtr

glGetUniformBlockIndexFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLuint)
glGetUniformBlockIndexFunPtr = unsafePerformIO (getProcAddress "glGetUniformBlockIndex")

{-# NOINLINE glGetUniformBlockIndexFunPtr #-}

glGetUniformIndices :: MonadIO m => GLuint -> GLsizei -> Ptr GLchar -> Ptr GLuint -> m ()
glGetUniformIndices = ffiuintsizeiPtrcharPtruintIOV glGetUniformIndicesFunPtr

glGetUniformIndicesFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLuint -> IO ())
glGetUniformIndicesFunPtr = unsafePerformIO (getProcAddress "glGetUniformIndices")

{-# NOINLINE glGetUniformIndicesFunPtr #-}

glUniformBlockBinding :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glUniformBlockBinding = ffiuintuintuintIOV glUniformBlockBindingFunPtr

glUniformBlockBindingFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glUniformBlockBindingFunPtr = unsafePerformIO (getProcAddress "glUniformBlockBinding")

{-# NOINLINE glUniformBlockBindingFunPtr #-}

pattern GL_ACTIVE_UNIFORM_BLOCKS = 0x8A36

pattern GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35

pattern GL_INVALID_INDEX = 0xFFFFFFFF

pattern GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33

pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32

pattern GL_MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E

pattern GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31

pattern GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D

pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C

pattern GL_MAX_UNIFORM_BLOCK_SIZE = 0x8A30

pattern GL_MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F

pattern GL_MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B

pattern GL_UNIFORM_ARRAY_STRIDE = 0x8A3C

pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42

pattern GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43

pattern GL_UNIFORM_BLOCK_BINDING = 0x8A3F

pattern GL_UNIFORM_BLOCK_DATA_SIZE = 0x8A40

pattern GL_UNIFORM_BLOCK_INDEX = 0x8A3A

pattern GL_UNIFORM_BLOCK_NAME_LENGTH = 0x8A41

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44

pattern GL_UNIFORM_BUFFER = 0x8A11

pattern GL_UNIFORM_BUFFER_BINDING = 0x8A28

pattern GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34

pattern GL_UNIFORM_BUFFER_SIZE = 0x8A2A

pattern GL_UNIFORM_BUFFER_START = 0x8A29

pattern GL_UNIFORM_IS_ROW_MAJOR = 0x8A3E

pattern GL_UNIFORM_MATRIX_STRIDE = 0x8A3D

pattern GL_UNIFORM_OFFSET = 0x8A3B

pattern GL_UNIFORM_TYPE = 0x8A37

pattern GL_BGRA = 0x80E1

glBindVertexArray :: MonadIO m => GLuint -> m ()
glBindVertexArray = ffiuintIOV glBindVertexArrayFunPtr

glBindVertexArrayFunPtr :: FunPtr (GLuint -> IO ())
glBindVertexArrayFunPtr = unsafePerformIO (getProcAddress "glBindVertexArray")

{-# NOINLINE glBindVertexArrayFunPtr #-}

glDeleteVertexArrays :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteVertexArrays = ffisizeiPtruintIOV glDeleteVertexArraysFunPtr

glDeleteVertexArraysFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteVertexArraysFunPtr = unsafePerformIO (getProcAddress "glDeleteVertexArrays")

{-# NOINLINE glDeleteVertexArraysFunPtr #-}

glGenVertexArrays :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenVertexArrays = ffisizeiPtruintIOV glGenVertexArraysFunPtr

glGenVertexArraysFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenVertexArraysFunPtr = unsafePerformIO (getProcAddress "glGenVertexArrays")

{-# NOINLINE glGenVertexArraysFunPtr #-}

glIsVertexArray :: MonadIO m => GLuint -> m GLboolean
glIsVertexArray = ffiuintIOboolean glIsVertexArrayFunPtr

glIsVertexArrayFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsVertexArrayFunPtr = unsafePerformIO (getProcAddress "glIsVertexArray")

{-# NOINLINE glIsVertexArrayFunPtr #-}

pattern GL_VERTEX_ARRAY_BINDING = 0x85B5

glGetVertexAttribLdv :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
glGetVertexAttribLdv = ffiuintenumPtrdoubleIOV glGetVertexAttribLdvFunPtr

glGetVertexAttribLdvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
glGetVertexAttribLdvFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribLdv")

{-# NOINLINE glGetVertexAttribLdvFunPtr #-}

glVertexAttribL1d :: MonadIO m => GLuint -> GLdouble -> m ()
glVertexAttribL1d = ffiuintdoubleIOV glVertexAttribL1dFunPtr

glVertexAttribL1dFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttribL1dFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1d")

{-# NOINLINE glVertexAttribL1dFunPtr #-}

glVertexAttribL1dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL1dv = ffiuintPtrdoubleIOV glVertexAttribL1dvFunPtr

glVertexAttribL1dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL1dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL1dv")

{-# NOINLINE glVertexAttribL1dvFunPtr #-}

glVertexAttribL2d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttribL2d = ffiuintdoubledoubleIOV glVertexAttribL2dFunPtr

glVertexAttribL2dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttribL2dFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2d")

{-# NOINLINE glVertexAttribL2dFunPtr #-}

glVertexAttribL2dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL2dv = ffiuintPtrdoubleIOV glVertexAttribL2dvFunPtr

glVertexAttribL2dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL2dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL2dv")

{-# NOINLINE glVertexAttribL2dvFunPtr #-}

glVertexAttribL3d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttribL3d = ffiuintdoubledoubledoubleIOV glVertexAttribL3dFunPtr

glVertexAttribL3dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL3dFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3d")

{-# NOINLINE glVertexAttribL3dFunPtr #-}

glVertexAttribL3dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL3dv = ffiuintPtrdoubleIOV glVertexAttribL3dvFunPtr

glVertexAttribL3dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL3dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL3dv")

{-# NOINLINE glVertexAttribL3dvFunPtr #-}

glVertexAttribL4d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttribL4d = ffiuintdoubledoubledoubledoubleIOV glVertexAttribL4dFunPtr

glVertexAttribL4dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL4dFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4d")

{-# NOINLINE glVertexAttribL4dFunPtr #-}

glVertexAttribL4dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL4dv = ffiuintPtrdoubleIOV glVertexAttribL4dvFunPtr

glVertexAttribL4dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL4dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribL4dv")

{-# NOINLINE glVertexAttribL4dvFunPtr #-}

glVertexAttribLPointer :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glVertexAttribLPointer = ffiuintintenumsizeiPtrVIOV glVertexAttribLPointerFunPtr

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

{-# NOINLINE glVertexAttribLPointerFunPtr #-}

glBindVertexBuffer :: MonadIO m => GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
glBindVertexBuffer = ffiuintuintintptrsizeiIOV glBindVertexBufferFunPtr

glBindVertexBufferFunPtr :: FunPtr (GLuint -> GLuint -> GLintptr -> GLsizei -> IO ())
glBindVertexBufferFunPtr = unsafePerformIO (getProcAddress "glBindVertexBuffer")

{-# NOINLINE glBindVertexBufferFunPtr #-}

glVertexAttribBinding :: MonadIO m => GLuint -> GLuint -> m ()
glVertexAttribBinding = ffiuintuintIOV glVertexAttribBindingFunPtr

glVertexAttribBindingFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexAttribBindingFunPtr = unsafePerformIO (getProcAddress "glVertexAttribBinding")

{-# NOINLINE glVertexAttribBindingFunPtr #-}

glVertexAttribFormat :: MonadIO m => GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexAttribFormat = ffiuintintenumbooleanuintIOV glVertexAttribFormatFunPtr

glVertexAttribFormatFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexAttribFormatFunPtr = unsafePerformIO (getProcAddress "glVertexAttribFormat")

{-# NOINLINE glVertexAttribFormatFunPtr #-}

glVertexAttribIFormat :: MonadIO m => GLuint -> GLint -> GLenum -> GLuint -> m ()
glVertexAttribIFormat = ffiuintintenumuintIOV glVertexAttribIFormatFunPtr

glVertexAttribIFormatFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLuint -> IO ())
glVertexAttribIFormatFunPtr = unsafePerformIO (getProcAddress "glVertexAttribIFormat")

{-# NOINLINE glVertexAttribIFormatFunPtr #-}

glVertexAttribLFormat :: MonadIO m => GLuint -> GLint -> GLenum -> GLuint -> m ()
glVertexAttribLFormat = ffiuintintenumuintIOV glVertexAttribLFormatFunPtr

glVertexAttribLFormatFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLuint -> IO ())
glVertexAttribLFormatFunPtr = unsafePerformIO (getProcAddress "glVertexAttribLFormat")

{-# NOINLINE glVertexAttribLFormatFunPtr #-}

glVertexBindingDivisor :: MonadIO m => GLuint -> GLuint -> m ()
glVertexBindingDivisor = ffiuintuintIOV glVertexBindingDivisorFunPtr

glVertexBindingDivisorFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexBindingDivisorFunPtr = unsafePerformIO (getProcAddress "glVertexBindingDivisor")

{-# NOINLINE glVertexBindingDivisorFunPtr #-}

pattern GL_MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA

pattern GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9

pattern GL_VERTEX_ATTRIB_BINDING = 0x82D4

pattern GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5

pattern GL_VERTEX_BINDING_DIVISOR = 0x82D6

pattern GL_VERTEX_BINDING_OFFSET = 0x82D7

pattern GL_VERTEX_BINDING_STRIDE = 0x82D8

glDisableVertexAttribArrayARB :: MonadIO m => GLuint -> m ()
glDisableVertexAttribArrayARB = ffiuintIOV glDisableVertexAttribArrayARBFunPtr

glDisableVertexAttribArrayARBFunPtr :: FunPtr (GLuint -> IO ())
glDisableVertexAttribArrayARBFunPtr = unsafePerformIO (getProcAddress "glDisableVertexAttribArrayARB")

{-# NOINLINE glDisableVertexAttribArrayARBFunPtr #-}

glEnableVertexAttribArrayARB :: MonadIO m => GLuint -> m ()
glEnableVertexAttribArrayARB = ffiuintIOV glEnableVertexAttribArrayARBFunPtr

glEnableVertexAttribArrayARBFunPtr :: FunPtr (GLuint -> IO ())
glEnableVertexAttribArrayARBFunPtr = unsafePerformIO (getProcAddress "glEnableVertexAttribArrayARB")

{-# NOINLINE glEnableVertexAttribArrayARBFunPtr #-}

glGetVertexAttribPointervARB :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
glGetVertexAttribPointervARB = ffiuintenumPtrVIOV glGetVertexAttribPointervARBFunPtr

glGetVertexAttribPointervARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
glGetVertexAttribPointervARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribPointervARB")

{-# NOINLINE glGetVertexAttribPointervARBFunPtr #-}

glGetVertexAttribdvARB :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
glGetVertexAttribdvARB = ffiuintenumPtrdoubleIOV glGetVertexAttribdvARBFunPtr

glGetVertexAttribdvARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
glGetVertexAttribdvARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribdvARB")

{-# NOINLINE glGetVertexAttribdvARBFunPtr #-}

glGetVertexAttribfvARB :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetVertexAttribfvARB = ffiuintenumPtrfloatIOV glGetVertexAttribfvARBFunPtr

glGetVertexAttribfvARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetVertexAttribfvARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribfvARB")

{-# NOINLINE glGetVertexAttribfvARBFunPtr #-}

glGetVertexAttribivARB :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribivARB = ffiuintenumPtrintIOV glGetVertexAttribivARBFunPtr

glGetVertexAttribivARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribivARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribivARB")

{-# NOINLINE glGetVertexAttribivARBFunPtr #-}

glVertexAttrib1dARB :: MonadIO m => GLuint -> GLdouble -> m ()
glVertexAttrib1dARB = ffiuintdoubleIOV glVertexAttrib1dARBFunPtr

glVertexAttrib1dARBFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttrib1dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dARB")

{-# NOINLINE glVertexAttrib1dARBFunPtr #-}

glVertexAttrib1dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib1dvARB = ffiuintPtrdoubleIOV glVertexAttrib1dvARBFunPtr

glVertexAttrib1dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib1dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dvARB")

{-# NOINLINE glVertexAttrib1dvARBFunPtr #-}

glVertexAttrib1fARB :: MonadIO m => GLuint -> GLfloat -> m ()
glVertexAttrib1fARB = ffiuintfloatIOV glVertexAttrib1fARBFunPtr

glVertexAttrib1fARBFunPtr :: FunPtr (GLuint -> GLfloat -> IO ())
glVertexAttrib1fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fARB")

{-# NOINLINE glVertexAttrib1fARBFunPtr #-}

glVertexAttrib1fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib1fvARB = ffiuintPtrfloatIOV glVertexAttrib1fvARBFunPtr

glVertexAttrib1fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib1fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fvARB")

{-# NOINLINE glVertexAttrib1fvARBFunPtr #-}

glVertexAttrib1sARB :: MonadIO m => GLuint -> GLshort -> m ()
glVertexAttrib1sARB = ffiuintshortIOV glVertexAttrib1sARBFunPtr

glVertexAttrib1sARBFunPtr :: FunPtr (GLuint -> GLshort -> IO ())
glVertexAttrib1sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1sARB")

{-# NOINLINE glVertexAttrib1sARBFunPtr #-}

glVertexAttrib1svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib1svARB = ffiuintPtrshortIOV glVertexAttrib1svARBFunPtr

glVertexAttrib1svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib1svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1svARB")

{-# NOINLINE glVertexAttrib1svARBFunPtr #-}

glVertexAttrib2dARB :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttrib2dARB = ffiuintdoubledoubleIOV glVertexAttrib2dARBFunPtr

glVertexAttrib2dARBFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttrib2dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dARB")

{-# NOINLINE glVertexAttrib2dARBFunPtr #-}

glVertexAttrib2dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib2dvARB = ffiuintPtrdoubleIOV glVertexAttrib2dvARBFunPtr

glVertexAttrib2dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib2dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dvARB")

{-# NOINLINE glVertexAttrib2dvARBFunPtr #-}

glVertexAttrib2fARB :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
glVertexAttrib2fARB = ffiuintfloatfloatIOV glVertexAttrib2fARBFunPtr

glVertexAttrib2fARBFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
glVertexAttrib2fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fARB")

{-# NOINLINE glVertexAttrib2fARBFunPtr #-}

glVertexAttrib2fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib2fvARB = ffiuintPtrfloatIOV glVertexAttrib2fvARBFunPtr

glVertexAttrib2fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib2fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fvARB")

{-# NOINLINE glVertexAttrib2fvARBFunPtr #-}

glVertexAttrib2sARB :: MonadIO m => GLuint -> GLshort -> GLshort -> m ()
glVertexAttrib2sARB = ffiuintshortshortIOV glVertexAttrib2sARBFunPtr

glVertexAttrib2sARBFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> IO ())
glVertexAttrib2sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2sARB")

{-# NOINLINE glVertexAttrib2sARBFunPtr #-}

glVertexAttrib2svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib2svARB = ffiuintPtrshortIOV glVertexAttrib2svARBFunPtr

glVertexAttrib2svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib2svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2svARB")

{-# NOINLINE glVertexAttrib2svARBFunPtr #-}

glVertexAttrib3dARB :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttrib3dARB = ffiuintdoubledoubledoubleIOV glVertexAttrib3dARBFunPtr

glVertexAttrib3dARBFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttrib3dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dARB")

{-# NOINLINE glVertexAttrib3dARBFunPtr #-}

glVertexAttrib3dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib3dvARB = ffiuintPtrdoubleIOV glVertexAttrib3dvARBFunPtr

glVertexAttrib3dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib3dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dvARB")

{-# NOINLINE glVertexAttrib3dvARBFunPtr #-}

glVertexAttrib3fARB :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertexAttrib3fARB = ffiuintfloatfloatfloatIOV glVertexAttrib3fARBFunPtr

glVertexAttrib3fARBFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertexAttrib3fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fARB")

{-# NOINLINE glVertexAttrib3fARBFunPtr #-}

glVertexAttrib3fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib3fvARB = ffiuintPtrfloatIOV glVertexAttrib3fvARBFunPtr

glVertexAttrib3fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib3fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fvARB")

{-# NOINLINE glVertexAttrib3fvARBFunPtr #-}

glVertexAttrib3sARB :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> m ()
glVertexAttrib3sARB = ffiuintshortshortshortIOV glVertexAttrib3sARBFunPtr

glVertexAttrib3sARBFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ())
glVertexAttrib3sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3sARB")

{-# NOINLINE glVertexAttrib3sARBFunPtr #-}

glVertexAttrib3svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib3svARB = ffiuintPtrshortIOV glVertexAttrib3svARBFunPtr

glVertexAttrib3svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib3svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3svARB")

{-# NOINLINE glVertexAttrib3svARBFunPtr #-}

glVertexAttrib4NbvARB :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4NbvARB = ffiuintPtrbyteIOV glVertexAttrib4NbvARBFunPtr

glVertexAttrib4NbvARBFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4NbvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NbvARB")

{-# NOINLINE glVertexAttrib4NbvARBFunPtr #-}

glVertexAttrib4NivARB :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4NivARB = ffiuintPtrintIOV glVertexAttrib4NivARBFunPtr

glVertexAttrib4NivARBFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4NivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NivARB")

{-# NOINLINE glVertexAttrib4NivARBFunPtr #-}

glVertexAttrib4NsvARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4NsvARB = ffiuintPtrshortIOV glVertexAttrib4NsvARBFunPtr

glVertexAttrib4NsvARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4NsvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NsvARB")

{-# NOINLINE glVertexAttrib4NsvARBFunPtr #-}

glVertexAttrib4NubARB :: MonadIO m => GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
glVertexAttrib4NubARB = ffiuintubyteubyteubyteubyteIOV glVertexAttrib4NubARBFunPtr

glVertexAttrib4NubARBFunPtr :: FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ())
glVertexAttrib4NubARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NubARB")

{-# NOINLINE glVertexAttrib4NubARBFunPtr #-}

glVertexAttrib4NubvARB :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4NubvARB = ffiuintPtrubyteIOV glVertexAttrib4NubvARBFunPtr

glVertexAttrib4NubvARBFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4NubvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NubvARB")

{-# NOINLINE glVertexAttrib4NubvARBFunPtr #-}

glVertexAttrib4NuivARB :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4NuivARB = ffiuintPtruintIOV glVertexAttrib4NuivARBFunPtr

glVertexAttrib4NuivARBFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4NuivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NuivARB")

{-# NOINLINE glVertexAttrib4NuivARBFunPtr #-}

glVertexAttrib4NusvARB :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4NusvARB = ffiuintPtrushortIOV glVertexAttrib4NusvARBFunPtr

glVertexAttrib4NusvARBFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4NusvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NusvARB")

{-# NOINLINE glVertexAttrib4NusvARBFunPtr #-}

glVertexAttrib4bvARB :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4bvARB = ffiuintPtrbyteIOV glVertexAttrib4bvARBFunPtr

glVertexAttrib4bvARBFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4bvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4bvARB")

{-# NOINLINE glVertexAttrib4bvARBFunPtr #-}

glVertexAttrib4dARB :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttrib4dARB = ffiuintdoubledoubledoubledoubleIOV glVertexAttrib4dARBFunPtr

glVertexAttrib4dARBFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttrib4dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dARB")

{-# NOINLINE glVertexAttrib4dARBFunPtr #-}

glVertexAttrib4dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib4dvARB = ffiuintPtrdoubleIOV glVertexAttrib4dvARBFunPtr

glVertexAttrib4dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib4dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dvARB")

{-# NOINLINE glVertexAttrib4dvARBFunPtr #-}

glVertexAttrib4fARB :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertexAttrib4fARB = ffiuintfloatfloatfloatfloatIOV glVertexAttrib4fARBFunPtr

glVertexAttrib4fARBFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertexAttrib4fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fARB")

{-# NOINLINE glVertexAttrib4fARBFunPtr #-}

glVertexAttrib4fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib4fvARB = ffiuintPtrfloatIOV glVertexAttrib4fvARBFunPtr

glVertexAttrib4fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib4fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fvARB")

{-# NOINLINE glVertexAttrib4fvARBFunPtr #-}

glVertexAttrib4ivARB :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4ivARB = ffiuintPtrintIOV glVertexAttrib4ivARBFunPtr

glVertexAttrib4ivARBFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4ivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ivARB")

{-# NOINLINE glVertexAttrib4ivARBFunPtr #-}

glVertexAttrib4sARB :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
glVertexAttrib4sARB = ffiuintshortshortshortshortIOV glVertexAttrib4sARBFunPtr

glVertexAttrib4sARBFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glVertexAttrib4sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4sARB")

{-# NOINLINE glVertexAttrib4sARBFunPtr #-}

glVertexAttrib4svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4svARB = ffiuintPtrshortIOV glVertexAttrib4svARBFunPtr

glVertexAttrib4svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4svARB")

{-# NOINLINE glVertexAttrib4svARBFunPtr #-}

glVertexAttrib4ubvARB :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4ubvARB = ffiuintPtrubyteIOV glVertexAttrib4ubvARBFunPtr

glVertexAttrib4ubvARBFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4ubvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ubvARB")

{-# NOINLINE glVertexAttrib4ubvARBFunPtr #-}

glVertexAttrib4uivARB :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4uivARB = ffiuintPtruintIOV glVertexAttrib4uivARBFunPtr

glVertexAttrib4uivARBFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4uivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4uivARB")

{-# NOINLINE glVertexAttrib4uivARBFunPtr #-}

glVertexAttrib4usvARB :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4usvARB = ffiuintPtrushortIOV glVertexAttrib4usvARBFunPtr

glVertexAttrib4usvARBFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4usvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4usvARB")

{-# NOINLINE glVertexAttrib4usvARBFunPtr #-}

glVertexAttribPointerARB :: MonadIO m => GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> m ()
glVertexAttribPointerARB = ffiuintintenumbooleansizeiPtrVIOV glVertexAttribPointerARBFunPtr

glVertexAttribPointerARBFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> IO ())
glVertexAttribPointerARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttribPointerARB")

{-# NOINLINE glVertexAttribPointerARBFunPtr #-}

pattern GL_CURRENT_VERTEX_ATTRIB_ARB = 0x8626

pattern GL_MAX_VERTEX_ATTRIBS_ARB = 0x8869

pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x8622

pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x886A

pattern GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x8645

pattern GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x8623

pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x8624

pattern GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x8625

pattern GL_VERTEX_PROGRAM_POINT_SIZE_ARB = 0x8642

pattern GL_VERTEX_PROGRAM_TWO_SIDE_ARB = 0x8643

pattern GL_FLOAT = 0x1406

pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C

pattern GL_UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B

glColorP3ui :: MonadIO m => GLenum -> GLuint -> m ()
glColorP3ui = ffienumuintIOV glColorP3uiFunPtr

glColorP3uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glColorP3uiFunPtr = unsafePerformIO (getProcAddress "glColorP3ui")

{-# NOINLINE glColorP3uiFunPtr #-}

glColorP3uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glColorP3uiv = ffienumPtruintIOV glColorP3uivFunPtr

glColorP3uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glColorP3uivFunPtr = unsafePerformIO (getProcAddress "glColorP3uiv")

{-# NOINLINE glColorP3uivFunPtr #-}

glColorP4ui :: MonadIO m => GLenum -> GLuint -> m ()
glColorP4ui = ffienumuintIOV glColorP4uiFunPtr

glColorP4uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glColorP4uiFunPtr = unsafePerformIO (getProcAddress "glColorP4ui")

{-# NOINLINE glColorP4uiFunPtr #-}

glColorP4uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glColorP4uiv = ffienumPtruintIOV glColorP4uivFunPtr

glColorP4uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glColorP4uivFunPtr = unsafePerformIO (getProcAddress "glColorP4uiv")

{-# NOINLINE glColorP4uivFunPtr #-}

glMultiTexCoordP1ui :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glMultiTexCoordP1ui = ffienumenumuintIOV glMultiTexCoordP1uiFunPtr

glMultiTexCoordP1uiFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glMultiTexCoordP1uiFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP1ui")

{-# NOINLINE glMultiTexCoordP1uiFunPtr #-}

glMultiTexCoordP1uiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glMultiTexCoordP1uiv = ffienumenumPtruintIOV glMultiTexCoordP1uivFunPtr

glMultiTexCoordP1uivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glMultiTexCoordP1uivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP1uiv")

{-# NOINLINE glMultiTexCoordP1uivFunPtr #-}

glMultiTexCoordP2ui :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glMultiTexCoordP2ui = ffienumenumuintIOV glMultiTexCoordP2uiFunPtr

glMultiTexCoordP2uiFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glMultiTexCoordP2uiFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP2ui")

{-# NOINLINE glMultiTexCoordP2uiFunPtr #-}

glMultiTexCoordP2uiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glMultiTexCoordP2uiv = ffienumenumPtruintIOV glMultiTexCoordP2uivFunPtr

glMultiTexCoordP2uivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glMultiTexCoordP2uivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP2uiv")

{-# NOINLINE glMultiTexCoordP2uivFunPtr #-}

glMultiTexCoordP3ui :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glMultiTexCoordP3ui = ffienumenumuintIOV glMultiTexCoordP3uiFunPtr

glMultiTexCoordP3uiFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glMultiTexCoordP3uiFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP3ui")

{-# NOINLINE glMultiTexCoordP3uiFunPtr #-}

glMultiTexCoordP3uiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glMultiTexCoordP3uiv = ffienumenumPtruintIOV glMultiTexCoordP3uivFunPtr

glMultiTexCoordP3uivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glMultiTexCoordP3uivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP3uiv")

{-# NOINLINE glMultiTexCoordP3uivFunPtr #-}

glMultiTexCoordP4ui :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glMultiTexCoordP4ui = ffienumenumuintIOV glMultiTexCoordP4uiFunPtr

glMultiTexCoordP4uiFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glMultiTexCoordP4uiFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP4ui")

{-# NOINLINE glMultiTexCoordP4uiFunPtr #-}

glMultiTexCoordP4uiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glMultiTexCoordP4uiv = ffienumenumPtruintIOV glMultiTexCoordP4uivFunPtr

glMultiTexCoordP4uivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glMultiTexCoordP4uivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoordP4uiv")

{-# NOINLINE glMultiTexCoordP4uivFunPtr #-}

glNormalP3ui :: MonadIO m => GLenum -> GLuint -> m ()
glNormalP3ui = ffienumuintIOV glNormalP3uiFunPtr

glNormalP3uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glNormalP3uiFunPtr = unsafePerformIO (getProcAddress "glNormalP3ui")

{-# NOINLINE glNormalP3uiFunPtr #-}

glNormalP3uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glNormalP3uiv = ffienumPtruintIOV glNormalP3uivFunPtr

glNormalP3uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glNormalP3uivFunPtr = unsafePerformIO (getProcAddress "glNormalP3uiv")

{-# NOINLINE glNormalP3uivFunPtr #-}

glSecondaryColorP3ui :: MonadIO m => GLenum -> GLuint -> m ()
glSecondaryColorP3ui = ffienumuintIOV glSecondaryColorP3uiFunPtr

glSecondaryColorP3uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glSecondaryColorP3uiFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorP3ui")

{-# NOINLINE glSecondaryColorP3uiFunPtr #-}

glSecondaryColorP3uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glSecondaryColorP3uiv = ffienumPtruintIOV glSecondaryColorP3uivFunPtr

glSecondaryColorP3uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glSecondaryColorP3uivFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorP3uiv")

{-# NOINLINE glSecondaryColorP3uivFunPtr #-}

glTexCoordP1ui :: MonadIO m => GLenum -> GLuint -> m ()
glTexCoordP1ui = ffienumuintIOV glTexCoordP1uiFunPtr

glTexCoordP1uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glTexCoordP1uiFunPtr = unsafePerformIO (getProcAddress "glTexCoordP1ui")

{-# NOINLINE glTexCoordP1uiFunPtr #-}

glTexCoordP1uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glTexCoordP1uiv = ffienumPtruintIOV glTexCoordP1uivFunPtr

glTexCoordP1uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glTexCoordP1uivFunPtr = unsafePerformIO (getProcAddress "glTexCoordP1uiv")

{-# NOINLINE glTexCoordP1uivFunPtr #-}

glTexCoordP2ui :: MonadIO m => GLenum -> GLuint -> m ()
glTexCoordP2ui = ffienumuintIOV glTexCoordP2uiFunPtr

glTexCoordP2uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glTexCoordP2uiFunPtr = unsafePerformIO (getProcAddress "glTexCoordP2ui")

{-# NOINLINE glTexCoordP2uiFunPtr #-}

glTexCoordP2uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glTexCoordP2uiv = ffienumPtruintIOV glTexCoordP2uivFunPtr

glTexCoordP2uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glTexCoordP2uivFunPtr = unsafePerformIO (getProcAddress "glTexCoordP2uiv")

{-# NOINLINE glTexCoordP2uivFunPtr #-}

glTexCoordP3ui :: MonadIO m => GLenum -> GLuint -> m ()
glTexCoordP3ui = ffienumuintIOV glTexCoordP3uiFunPtr

glTexCoordP3uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glTexCoordP3uiFunPtr = unsafePerformIO (getProcAddress "glTexCoordP3ui")

{-# NOINLINE glTexCoordP3uiFunPtr #-}

glTexCoordP3uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glTexCoordP3uiv = ffienumPtruintIOV glTexCoordP3uivFunPtr

glTexCoordP3uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glTexCoordP3uivFunPtr = unsafePerformIO (getProcAddress "glTexCoordP3uiv")

{-# NOINLINE glTexCoordP3uivFunPtr #-}

glTexCoordP4ui :: MonadIO m => GLenum -> GLuint -> m ()
glTexCoordP4ui = ffienumuintIOV glTexCoordP4uiFunPtr

glTexCoordP4uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glTexCoordP4uiFunPtr = unsafePerformIO (getProcAddress "glTexCoordP4ui")

{-# NOINLINE glTexCoordP4uiFunPtr #-}

glTexCoordP4uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glTexCoordP4uiv = ffienumPtruintIOV glTexCoordP4uivFunPtr

glTexCoordP4uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glTexCoordP4uivFunPtr = unsafePerformIO (getProcAddress "glTexCoordP4uiv")

{-# NOINLINE glTexCoordP4uivFunPtr #-}

glVertexAttribP1ui :: MonadIO m => GLuint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexAttribP1ui = ffiuintenumbooleanuintIOV glVertexAttribP1uiFunPtr

glVertexAttribP1uiFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexAttribP1uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP1ui")

{-# NOINLINE glVertexAttribP1uiFunPtr #-}

glVertexAttribP1uiv :: MonadIO m => GLuint -> GLenum -> GLboolean -> Ptr GLuint -> m ()
glVertexAttribP1uiv = ffiuintenumbooleanPtruintIOV glVertexAttribP1uivFunPtr

glVertexAttribP1uivFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ())
glVertexAttribP1uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP1uiv")

{-# NOINLINE glVertexAttribP1uivFunPtr #-}

glVertexAttribP2ui :: MonadIO m => GLuint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexAttribP2ui = ffiuintenumbooleanuintIOV glVertexAttribP2uiFunPtr

glVertexAttribP2uiFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexAttribP2uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP2ui")

{-# NOINLINE glVertexAttribP2uiFunPtr #-}

glVertexAttribP2uiv :: MonadIO m => GLuint -> GLenum -> GLboolean -> Ptr GLuint -> m ()
glVertexAttribP2uiv = ffiuintenumbooleanPtruintIOV glVertexAttribP2uivFunPtr

glVertexAttribP2uivFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ())
glVertexAttribP2uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP2uiv")

{-# NOINLINE glVertexAttribP2uivFunPtr #-}

glVertexAttribP3ui :: MonadIO m => GLuint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexAttribP3ui = ffiuintenumbooleanuintIOV glVertexAttribP3uiFunPtr

glVertexAttribP3uiFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexAttribP3uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP3ui")

{-# NOINLINE glVertexAttribP3uiFunPtr #-}

glVertexAttribP3uiv :: MonadIO m => GLuint -> GLenum -> GLboolean -> Ptr GLuint -> m ()
glVertexAttribP3uiv = ffiuintenumbooleanPtruintIOV glVertexAttribP3uivFunPtr

glVertexAttribP3uivFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ())
glVertexAttribP3uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP3uiv")

{-# NOINLINE glVertexAttribP3uivFunPtr #-}

glVertexAttribP4ui :: MonadIO m => GLuint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexAttribP4ui = ffiuintenumbooleanuintIOV glVertexAttribP4uiFunPtr

glVertexAttribP4uiFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexAttribP4uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP4ui")

{-# NOINLINE glVertexAttribP4uiFunPtr #-}

glVertexAttribP4uiv :: MonadIO m => GLuint -> GLenum -> GLboolean -> Ptr GLuint -> m ()
glVertexAttribP4uiv = ffiuintenumbooleanPtruintIOV glVertexAttribP4uivFunPtr

glVertexAttribP4uivFunPtr :: FunPtr (GLuint -> GLenum -> GLboolean -> Ptr GLuint -> IO ())
glVertexAttribP4uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribP4uiv")

{-# NOINLINE glVertexAttribP4uivFunPtr #-}

glVertexP2ui :: MonadIO m => GLenum -> GLuint -> m ()
glVertexP2ui = ffienumuintIOV glVertexP2uiFunPtr

glVertexP2uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glVertexP2uiFunPtr = unsafePerformIO (getProcAddress "glVertexP2ui")

{-# NOINLINE glVertexP2uiFunPtr #-}

glVertexP2uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glVertexP2uiv = ffienumPtruintIOV glVertexP2uivFunPtr

glVertexP2uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glVertexP2uivFunPtr = unsafePerformIO (getProcAddress "glVertexP2uiv")

{-# NOINLINE glVertexP2uivFunPtr #-}

glVertexP3ui :: MonadIO m => GLenum -> GLuint -> m ()
glVertexP3ui = ffienumuintIOV glVertexP3uiFunPtr

glVertexP3uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glVertexP3uiFunPtr = unsafePerformIO (getProcAddress "glVertexP3ui")

{-# NOINLINE glVertexP3uiFunPtr #-}

glVertexP3uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glVertexP3uiv = ffienumPtruintIOV glVertexP3uivFunPtr

glVertexP3uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glVertexP3uivFunPtr = unsafePerformIO (getProcAddress "glVertexP3uiv")

{-# NOINLINE glVertexP3uivFunPtr #-}

glVertexP4ui :: MonadIO m => GLenum -> GLuint -> m ()
glVertexP4ui = ffienumuintIOV glVertexP4uiFunPtr

glVertexP4uiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glVertexP4uiFunPtr = unsafePerformIO (getProcAddress "glVertexP4ui")

{-# NOINLINE glVertexP4uiFunPtr #-}

glVertexP4uiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glVertexP4uiv = ffienumPtruintIOV glVertexP4uivFunPtr

glVertexP4uivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glVertexP4uivFunPtr = unsafePerformIO (getProcAddress "glVertexP4uiv")

{-# NOINLINE glVertexP4uivFunPtr #-}

pattern GL_INT_2_10_10_10_REV = 0x8D9F

pattern GL_UNSIGNED_INT_2_10_10_10_REV = 0x8368

glDepthRangeArrayv :: MonadIO m => GLuint -> GLsizei -> Ptr GLdouble -> m ()
glDepthRangeArrayv = ffiuintsizeiPtrdoubleIOV glDepthRangeArrayvFunPtr

glDepthRangeArrayvFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLdouble -> IO ())
glDepthRangeArrayvFunPtr = unsafePerformIO (getProcAddress "glDepthRangeArrayv")

{-# NOINLINE glDepthRangeArrayvFunPtr #-}

glDepthRangeIndexed :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glDepthRangeIndexed = ffiuintdoubledoubleIOV glDepthRangeIndexedFunPtr

glDepthRangeIndexedFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glDepthRangeIndexedFunPtr = unsafePerformIO (getProcAddress "glDepthRangeIndexed")

{-# NOINLINE glDepthRangeIndexedFunPtr #-}

glGetDoublei_v :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glGetDoublei_v = ffienumuintPtrdoubleIOV glGetDoublei_vFunPtr

glGetDoublei_vFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glGetDoublei_vFunPtr = unsafePerformIO (getProcAddress "glGetDoublei_v")

{-# NOINLINE glGetDoublei_vFunPtr #-}

glGetFloati_v :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetFloati_v = ffienumuintPtrfloatIOV glGetFloati_vFunPtr

glGetFloati_vFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetFloati_vFunPtr = unsafePerformIO (getProcAddress "glGetFloati_v")

{-# NOINLINE glGetFloati_vFunPtr #-}

glScissorArrayv :: MonadIO m => GLuint -> GLsizei -> Ptr GLint -> m ()
glScissorArrayv = ffiuintsizeiPtrintIOV glScissorArrayvFunPtr

glScissorArrayvFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLint -> IO ())
glScissorArrayvFunPtr = unsafePerformIO (getProcAddress "glScissorArrayv")

{-# NOINLINE glScissorArrayvFunPtr #-}

glScissorIndexed :: MonadIO m => GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glScissorIndexed = ffiuintintintsizeisizeiIOV glScissorIndexedFunPtr

glScissorIndexedFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glScissorIndexedFunPtr = unsafePerformIO (getProcAddress "glScissorIndexed")

{-# NOINLINE glScissorIndexedFunPtr #-}

glScissorIndexedv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glScissorIndexedv = ffiuintPtrintIOV glScissorIndexedvFunPtr

glScissorIndexedvFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glScissorIndexedvFunPtr = unsafePerformIO (getProcAddress "glScissorIndexedv")

{-# NOINLINE glScissorIndexedvFunPtr #-}

glViewportArrayv :: MonadIO m => GLuint -> GLsizei -> Ptr GLfloat -> m ()
glViewportArrayv = ffiuintsizeiPtrfloatIOV glViewportArrayvFunPtr

glViewportArrayvFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLfloat -> IO ())
glViewportArrayvFunPtr = unsafePerformIO (getProcAddress "glViewportArrayv")

{-# NOINLINE glViewportArrayvFunPtr #-}

glViewportIndexedf :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glViewportIndexedf = ffiuintfloatfloatfloatfloatIOV glViewportIndexedfFunPtr

glViewportIndexedfFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glViewportIndexedfFunPtr = unsafePerformIO (getProcAddress "glViewportIndexedf")

{-# NOINLINE glViewportIndexedfFunPtr #-}

glViewportIndexedfv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glViewportIndexedfv = ffiuintPtrfloatIOV glViewportIndexedfvFunPtr

glViewportIndexedfvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glViewportIndexedfvFunPtr = unsafePerformIO (getProcAddress "glViewportIndexedfv")

{-# NOINLINE glViewportIndexedfvFunPtr #-}

pattern GL_DEPTH_RANGE = 0x0B70

pattern GL_LAYER_PROVOKING_VERTEX = 0x825E

pattern GL_MAX_VIEWPORTS = 0x825B

pattern GL_SCISSOR_BOX = 0x0C10

pattern GL_SCISSOR_TEST = 0x0C11

pattern GL_UNDEFINED_VERTEX = 0x8260

pattern GL_VIEWPORT = 0x0BA2

pattern GL_VIEWPORT_BOUNDS_RANGE = 0x825D

pattern GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F

pattern GL_VIEWPORT_SUBPIXEL_BITS = 0x825C

pattern GL_R16F_EXT = 0x822D

pattern GL_RG16F_EXT = 0x822F

pattern GL_RGB16F_EXT = 0x881B

pattern GL_RGBA16F_EXT = 0x881A

pattern GL_SAMPLER = 0x82E6

glDisableIndexedEXT :: MonadIO m => GLenum -> GLuint -> m ()
glDisableIndexedEXT = ffienumuintIOV glDisableIndexedEXTFunPtr

glDisableIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDisableIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glDisableIndexedEXT")

{-# NOINLINE glDisableIndexedEXTFunPtr #-}

glEnableIndexedEXT :: MonadIO m => GLenum -> GLuint -> m ()
glEnableIndexedEXT = ffienumuintIOV glEnableIndexedEXTFunPtr

glEnableIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEnableIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glEnableIndexedEXT")

{-# NOINLINE glEnableIndexedEXTFunPtr #-}

glGetBooleanIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLboolean -> m ()
glGetBooleanIndexedvEXT = ffienumuintPtrbooleanIOV glGetBooleanIndexedvEXTFunPtr

glGetBooleanIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLboolean -> IO ())
glGetBooleanIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetBooleanIndexedvEXT")

{-# NOINLINE glGetBooleanIndexedvEXTFunPtr #-}

glGetIntegerIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
glGetIntegerIndexedvEXT = ffienumuintPtrintIOV glGetIntegerIndexedvEXTFunPtr

glGetIntegerIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
glGetIntegerIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetIntegerIndexedvEXT")

{-# NOINLINE glGetIntegerIndexedvEXTFunPtr #-}

glIsEnabledIndexedEXT :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsEnabledIndexedEXT = ffienumuintIOboolean glIsEnabledIndexedEXTFunPtr

glIsEnabledIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsEnabledIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glIsEnabledIndexedEXT")

{-# NOINLINE glIsEnabledIndexedEXTFunPtr #-}

glProgramUniform1fEXT :: MonadIO m => GLuint -> GLint -> GLfloat -> m ()
glProgramUniform1fEXT = ffiuintintfloatIOV glProgramUniform1fEXTFunPtr

glProgramUniform1fEXTFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> IO ())
glProgramUniform1fEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1fEXT")

{-# NOINLINE glProgramUniform1fEXTFunPtr #-}

glProgramUniform1fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform1fvEXT = ffiuintintsizeiPtrfloatIOV glProgramUniform1fvEXTFunPtr

glProgramUniform1fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform1fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1fvEXT")

{-# NOINLINE glProgramUniform1fvEXTFunPtr #-}

glProgramUniform1iEXT :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glProgramUniform1iEXT = ffiuintintintIOV glProgramUniform1iEXTFunPtr

glProgramUniform1iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glProgramUniform1iEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1iEXT")

{-# NOINLINE glProgramUniform1iEXTFunPtr #-}

glProgramUniform1ivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform1ivEXT = ffiuintintsizeiPtrintIOV glProgramUniform1ivEXTFunPtr

glProgramUniform1ivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform1ivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ivEXT")

{-# NOINLINE glProgramUniform1ivEXTFunPtr #-}

glProgramUniform1uiEXT :: MonadIO m => GLuint -> GLint -> GLuint -> m ()
glProgramUniform1uiEXT = ffiuintintuintIOV glProgramUniform1uiEXTFunPtr

glProgramUniform1uiEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> IO ())
glProgramUniform1uiEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1uiEXT")

{-# NOINLINE glProgramUniform1uiEXTFunPtr #-}

glProgramUniform1uivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform1uivEXT = ffiuintintsizeiPtruintIOV glProgramUniform1uivEXTFunPtr

glProgramUniform1uivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform1uivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1uivEXT")

{-# NOINLINE glProgramUniform1uivEXTFunPtr #-}

glProgramUniform2fEXT :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> m ()
glProgramUniform2fEXT = ffiuintintfloatfloatIOV glProgramUniform2fEXTFunPtr

glProgramUniform2fEXTFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> IO ())
glProgramUniform2fEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2fEXT")

{-# NOINLINE glProgramUniform2fEXTFunPtr #-}

glProgramUniform2fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform2fvEXT = ffiuintintsizeiPtrfloatIOV glProgramUniform2fvEXTFunPtr

glProgramUniform2fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform2fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2fvEXT")

{-# NOINLINE glProgramUniform2fvEXTFunPtr #-}

glProgramUniform2iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glProgramUniform2iEXT = ffiuintintintintIOV glProgramUniform2iEXTFunPtr

glProgramUniform2iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform2iEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2iEXT")

{-# NOINLINE glProgramUniform2iEXTFunPtr #-}

glProgramUniform2ivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform2ivEXT = ffiuintintsizeiPtrintIOV glProgramUniform2ivEXTFunPtr

glProgramUniform2ivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform2ivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ivEXT")

{-# NOINLINE glProgramUniform2ivEXTFunPtr #-}

glProgramUniform2uiEXT :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> m ()
glProgramUniform2uiEXT = ffiuintintuintuintIOV glProgramUniform2uiEXTFunPtr

glProgramUniform2uiEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> IO ())
glProgramUniform2uiEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2uiEXT")

{-# NOINLINE glProgramUniform2uiEXTFunPtr #-}

glProgramUniform2uivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform2uivEXT = ffiuintintsizeiPtruintIOV glProgramUniform2uivEXTFunPtr

glProgramUniform2uivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform2uivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2uivEXT")

{-# NOINLINE glProgramUniform2uivEXTFunPtr #-}

glProgramUniform3fEXT :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramUniform3fEXT = ffiuintintfloatfloatfloatIOV glProgramUniform3fEXTFunPtr

glProgramUniform3fEXTFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramUniform3fEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3fEXT")

{-# NOINLINE glProgramUniform3fEXTFunPtr #-}

glProgramUniform3fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform3fvEXT = ffiuintintsizeiPtrfloatIOV glProgramUniform3fvEXTFunPtr

glProgramUniform3fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform3fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3fvEXT")

{-# NOINLINE glProgramUniform3fvEXTFunPtr #-}

glProgramUniform3iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
glProgramUniform3iEXT = ffiuintintintintintIOV glProgramUniform3iEXTFunPtr

glProgramUniform3iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform3iEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3iEXT")

{-# NOINLINE glProgramUniform3iEXTFunPtr #-}

glProgramUniform3ivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform3ivEXT = ffiuintintsizeiPtrintIOV glProgramUniform3ivEXTFunPtr

glProgramUniform3ivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform3ivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ivEXT")

{-# NOINLINE glProgramUniform3ivEXTFunPtr #-}

glProgramUniform3uiEXT :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> GLuint -> m ()
glProgramUniform3uiEXT = ffiuintintuintuintuintIOV glProgramUniform3uiEXTFunPtr

glProgramUniform3uiEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ())
glProgramUniform3uiEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3uiEXT")

{-# NOINLINE glProgramUniform3uiEXTFunPtr #-}

glProgramUniform3uivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform3uivEXT = ffiuintintsizeiPtruintIOV glProgramUniform3uivEXTFunPtr

glProgramUniform3uivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform3uivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3uivEXT")

{-# NOINLINE glProgramUniform3uivEXTFunPtr #-}

glProgramUniform4fEXT :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramUniform4fEXT = ffiuintintfloatfloatfloatfloatIOV glProgramUniform4fEXTFunPtr

glProgramUniform4fEXTFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramUniform4fEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4fEXT")

{-# NOINLINE glProgramUniform4fEXTFunPtr #-}

glProgramUniform4fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform4fvEXT = ffiuintintsizeiPtrfloatIOV glProgramUniform4fvEXTFunPtr

glProgramUniform4fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glProgramUniform4fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4fvEXT")

{-# NOINLINE glProgramUniform4fvEXTFunPtr #-}

glProgramUniform4iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> m ()
glProgramUniform4iEXT = ffiuintintintintintintIOV glProgramUniform4iEXTFunPtr

glProgramUniform4iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform4iEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4iEXT")

{-# NOINLINE glProgramUniform4iEXTFunPtr #-}

glProgramUniform4ivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform4ivEXT = ffiuintintsizeiPtrintIOV glProgramUniform4ivEXTFunPtr

glProgramUniform4ivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform4ivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ivEXT")

{-# NOINLINE glProgramUniform4ivEXTFunPtr #-}

glProgramUniform4uiEXT :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glProgramUniform4uiEXT = ffiuintintuintuintuintuintIOV glProgramUniform4uiEXTFunPtr

glProgramUniform4uiEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glProgramUniform4uiEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4uiEXT")

{-# NOINLINE glProgramUniform4uiEXTFunPtr #-}

glProgramUniform4uivEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform4uivEXT = ffiuintintsizeiPtruintIOV glProgramUniform4uivEXTFunPtr

glProgramUniform4uivEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform4uivEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4uivEXT")

{-# NOINLINE glProgramUniform4uivEXTFunPtr #-}

glProgramUniformMatrix2fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2fvEXTFunPtr

glProgramUniformMatrix2fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2fvEXT")

{-# NOINLINE glProgramUniformMatrix2fvEXTFunPtr #-}

glProgramUniformMatrix2x3fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2x3fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2x3fvEXTFunPtr

glProgramUniformMatrix2x3fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2x3fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x3fvEXT")

{-# NOINLINE glProgramUniformMatrix2x3fvEXTFunPtr #-}

glProgramUniformMatrix2x4fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2x4fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2x4fvEXTFunPtr

glProgramUniformMatrix2x4fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2x4fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x4fvEXT")

{-# NOINLINE glProgramUniformMatrix2x4fvEXTFunPtr #-}

glProgramUniformMatrix3fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3fvEXTFunPtr

glProgramUniformMatrix3fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3fvEXT")

{-# NOINLINE glProgramUniformMatrix3fvEXTFunPtr #-}

glProgramUniformMatrix3x2fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3x2fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3x2fvEXTFunPtr

glProgramUniformMatrix3x2fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3x2fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x2fvEXT")

{-# NOINLINE glProgramUniformMatrix3x2fvEXTFunPtr #-}

glProgramUniformMatrix3x4fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3x4fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3x4fvEXTFunPtr

glProgramUniformMatrix3x4fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3x4fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x4fvEXT")

{-# NOINLINE glProgramUniformMatrix3x4fvEXTFunPtr #-}

glProgramUniformMatrix4fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4fvEXTFunPtr

glProgramUniformMatrix4fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4fvEXT")

{-# NOINLINE glProgramUniformMatrix4fvEXTFunPtr #-}

glProgramUniformMatrix4x2fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4x2fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4x2fvEXTFunPtr

glProgramUniformMatrix4x2fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4x2fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x2fvEXT")

{-# NOINLINE glProgramUniformMatrix4x2fvEXTFunPtr #-}

glProgramUniformMatrix4x3fvEXT :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4x3fvEXT = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4x3fvEXTFunPtr

glProgramUniformMatrix4x3fvEXTFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4x3fvEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x3fvEXT")

{-# NOINLINE glProgramUniformMatrix4x3fvEXTFunPtr #-}

glTextureStorage1DEXT :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> m ()
glTextureStorage1DEXT = ffiuintenumsizeienumsizeiIOV glTextureStorage1DEXTFunPtr

glTextureStorage1DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> IO ())
glTextureStorage1DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureStorage1DEXT")

{-# NOINLINE glTextureStorage1DEXTFunPtr #-}

glTextureStorage2DEXT :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTextureStorage2DEXT = ffiuintenumsizeienumsizeisizeiIOV glTextureStorage2DEXTFunPtr

glTextureStorage2DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTextureStorage2DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureStorage2DEXT")

{-# NOINLINE glTextureStorage2DEXTFunPtr #-}

glTextureStorage3DEXT :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTextureStorage3DEXT = ffiuintenumsizeienumsizeisizeisizeiIOV glTextureStorage3DEXTFunPtr

glTextureStorage3DEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTextureStorage3DEXTFunPtr = unsafePerformIO (getProcAddress "glTextureStorage3DEXT")

{-# NOINLINE glTextureStorage3DEXTFunPtr #-}

glBeginQueryEXT :: MonadIO m => GLenum -> GLuint -> m ()
glBeginQueryEXT = ffienumuintIOV glBeginQueryEXTFunPtr

glBeginQueryEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBeginQueryEXTFunPtr = unsafePerformIO (getProcAddress "glBeginQueryEXT")

{-# NOINLINE glBeginQueryEXTFunPtr #-}

glDeleteQueriesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteQueriesEXT = ffisizeiPtruintIOV glDeleteQueriesEXTFunPtr

glDeleteQueriesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteQueriesEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteQueriesEXT")

{-# NOINLINE glDeleteQueriesEXTFunPtr #-}

glEndQueryEXT :: MonadIO m => GLenum -> m ()
glEndQueryEXT = ffienumIOV glEndQueryEXTFunPtr

glEndQueryEXTFunPtr :: FunPtr (GLenum -> IO ())
glEndQueryEXTFunPtr = unsafePerformIO (getProcAddress "glEndQueryEXT")

{-# NOINLINE glEndQueryEXTFunPtr #-}

glGenQueriesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenQueriesEXT = ffisizeiPtruintIOV glGenQueriesEXTFunPtr

glGenQueriesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenQueriesEXTFunPtr = unsafePerformIO (getProcAddress "glGenQueriesEXT")

{-# NOINLINE glGenQueriesEXTFunPtr #-}

glGetQueryObjecti64vEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetQueryObjecti64vEXT = ffiuintenumPtrint64IOV glGetQueryObjecti64vEXTFunPtr

glGetQueryObjecti64vEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetQueryObjecti64vEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjecti64vEXT")

{-# NOINLINE glGetQueryObjecti64vEXTFunPtr #-}

glGetQueryObjectui64vEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64 -> m ()
glGetQueryObjectui64vEXT = ffiuintenumPtruint64IOV glGetQueryObjectui64vEXTFunPtr

glGetQueryObjectui64vEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64 -> IO ())
glGetQueryObjectui64vEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectui64vEXT")

{-# NOINLINE glGetQueryObjectui64vEXTFunPtr #-}

glGetQueryObjectuivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetQueryObjectuivEXT = ffiuintenumPtruintIOV glGetQueryObjectuivEXTFunPtr

glGetQueryObjectuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetQueryObjectuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectuivEXT")

{-# NOINLINE glGetQueryObjectuivEXTFunPtr #-}

glGetQueryivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetQueryivEXT = ffienumenumPtrintIOV glGetQueryivEXTFunPtr

glGetQueryivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetQueryivEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryivEXT")

{-# NOINLINE glGetQueryivEXTFunPtr #-}

glIsQueryEXT :: MonadIO m => GLuint -> m GLboolean
glIsQueryEXT = ffiuintIOboolean glIsQueryEXTFunPtr

glIsQueryEXTFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsQueryEXTFunPtr = unsafePerformIO (getProcAddress "glIsQueryEXT")

{-# NOINLINE glIsQueryEXTFunPtr #-}

pattern GL_CURRENT_QUERY_EXT = 0x8865

pattern GL_QUERY_RESULT_AVAILABLE_EXT = 0x8867

pattern GL_QUERY_RESULT_EXT = 0x8866

pattern GL_TIME_ELAPSED_EXT = 0x88BF

pattern GL_COLOR_ATTACHMENT0_EXT = 0x8CE0

pattern GL_COLOR_ATTACHMENT10_EXT = 0x8CEA

pattern GL_COLOR_ATTACHMENT11_EXT = 0x8CEB

pattern GL_COLOR_ATTACHMENT12_EXT = 0x8CEC

pattern GL_COLOR_ATTACHMENT13_EXT = 0x8CED

pattern GL_COLOR_ATTACHMENT14_EXT = 0x8CEE

pattern GL_COLOR_ATTACHMENT15_EXT = 0x8CEF

pattern GL_COLOR_ATTACHMENT1_EXT = 0x8CE1

pattern GL_COLOR_ATTACHMENT2_EXT = 0x8CE2

pattern GL_COLOR_ATTACHMENT3_EXT = 0x8CE3

pattern GL_COLOR_ATTACHMENT4_EXT = 0x8CE4

pattern GL_COLOR_ATTACHMENT5_EXT = 0x8CE5

pattern GL_COLOR_ATTACHMENT6_EXT = 0x8CE6

pattern GL_COLOR_ATTACHMENT7_EXT = 0x8CE7

pattern GL_COLOR_ATTACHMENT8_EXT = 0x8CE8

pattern GL_COLOR_ATTACHMENT9_EXT = 0x8CE9

pattern GL_MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF

pattern GL_BLEND = 0x0BE2

pattern GL_BLEND_DST_ALPHA = 0x80CA

pattern GL_BLEND_DST_RGB = 0x80C8

pattern GL_BLEND_EQUATION_ALPHA = 0x883D

pattern GL_BLEND_EQUATION_RGB = 0x8009

pattern GL_BLEND_SRC_ALPHA = 0x80CB

pattern GL_BLEND_SRC_RGB = 0x80C9

pattern GL_COLOR_WRITEMASK = 0x0C23

pattern GL_DST_ALPHA = 0x0304

pattern GL_DST_COLOR = 0x0306

pattern GL_ONE = 1

pattern GL_ONE_MINUS_DST_ALPHA = 0x0305

pattern GL_ONE_MINUS_DST_COLOR = 0x0307

pattern GL_ONE_MINUS_SRC_ALPHA = 0x0303

pattern GL_ONE_MINUS_SRC_COLOR = 0x0301

pattern GL_SRC_ALPHA = 0x0302

pattern GL_SRC_ALPHA_SATURATE = 0x0308

pattern GL_SRC_COLOR = 0x0300

pattern GL_ZERO = 0

glDrawArraysInstancedEXT :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
glDrawArraysInstancedEXT = ffienumintsizeisizeiIOV glDrawArraysInstancedEXTFunPtr

glDrawArraysInstancedEXTFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
glDrawArraysInstancedEXTFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstancedEXT")

{-# NOINLINE glDrawArraysInstancedEXTFunPtr #-}

glDrawElementsInstancedEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
glDrawElementsInstancedEXT = ffienumsizeienumPtrVsizeiIOV glDrawElementsInstancedEXTFunPtr

glDrawElementsInstancedEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
glDrawElementsInstancedEXTFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstancedEXT")

{-# NOINLINE glDrawElementsInstancedEXTFunPtr #-}

pattern GL_FRAGMENT_DEPTH_EXT = 0x8452

glRenderbufferStorageMultisampleEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glRenderbufferStorageMultisampleEXT = ffienumsizeienumsizeisizeiIOV glRenderbufferStorageMultisampleEXTFunPtr

glRenderbufferStorageMultisampleEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glRenderbufferStorageMultisampleEXTFunPtr = unsafePerformIO (getProcAddress "glRenderbufferStorageMultisampleEXT")

{-# NOINLINE glRenderbufferStorageMultisampleEXTFunPtr #-}

pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56

pattern GL_MAX_SAMPLES_EXT = 0x8D57

pattern GL_RENDERBUFFER_SAMPLES_EXT = 0x8CAB

pattern GL_FRAMEBUFFER_SRGB_EXT = 0x8DB9

glFramebufferTextureEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTextureEXT = ffienumenumuintintIOV glFramebufferTextureEXTFunPtr

glFramebufferTextureEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTextureEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureEXT")

{-# NOINLINE glFramebufferTextureEXTFunPtr #-}

pattern GL_FIRST_VERTEX_CONVENTION_EXT = 0x8E4D

pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x8DA7

pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x8DA8

pattern GL_GEOMETRY_SHADER_EXT = 0x8DD9

pattern GL_LAST_VERTEX_CONVENTION_EXT = 0x8E4E

pattern GL_LINES_ADJACENCY_EXT = 0x000A

pattern GL_LINE_STRIP_ADJACENCY_EXT = 0x000B

pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x8DE0

pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x8C29

pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8DE1

pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8DDF

pattern GL_PRIMITIVES_GENERATED_EXT = 0x8C87

pattern GL_TRIANGLES_ADJACENCY_EXT = 0x000C

pattern GL_TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D

glProgramParameteriEXT :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glProgramParameteriEXT = ffiuintenumintIOV glProgramParameteriEXTFunPtr

glProgramParameteriEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glProgramParameteriEXTFunPtr = unsafePerformIO (getProcAddress "glProgramParameteriEXT")

{-# NOINLINE glProgramParameteriEXTFunPtr #-}

pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x8CD4

pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x8DA9

pattern GL_GEOMETRY_INPUT_TYPE_EXT = 0x8DDB

pattern GL_GEOMETRY_OUTPUT_TYPE_EXT = 0x8DDC

pattern GL_GEOMETRY_VERTICES_OUT_EXT = 0x8DDA

pattern GL_PROGRAM_POINT_SIZE_EXT = 0x8642

pattern GL_INT_SAMPLER_BUFFER_EXT = 0x8DD0

pattern GL_SAMPLER_BUFFER_EXT = 0x8DC2

pattern GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8

glRasterSamplesEXT :: MonadIO m => GLuint -> GLboolean -> m ()
glRasterSamplesEXT = ffiuintbooleanIOV glRasterSamplesEXTFunPtr

glRasterSamplesEXTFunPtr :: FunPtr (GLuint -> GLboolean -> IO ())
glRasterSamplesEXTFunPtr = unsafePerformIO (getProcAddress "glRasterSamplesEXT")

{-# NOINLINE glRasterSamplesEXTFunPtr #-}

pattern GL_EFFECTIVE_RASTER_SAMPLES_EXT = 0x932C

pattern GL_MAX_RASTER_SAMPLES_EXT = 0x9329

pattern GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x932B

pattern GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x932A

pattern GL_RASTER_MULTISAMPLE_EXT = 0x9327

pattern GL_RASTER_SAMPLES_EXT = 0x9328

pattern GL_SRGB8_ALPHA8_EXT = 0x8C43

pattern GL_SRGB_ALPHA_EXT = 0x8C42

pattern GL_SRGB_EXT = 0x8C40

pattern GL_IMAGE_BUFFER_EXT = 0x9051

pattern GL_IMAGE_CUBE_MAP_ARRAY_EXT = 0x9054

pattern GL_INT_IMAGE_BUFFER_EXT = 0x905C

pattern GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x905F

pattern GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = 0x9067

pattern GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x906A

pattern GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221

pattern GL_ALPHA8_EXT = 0x803C

pattern GL_LUMINANCE8_ALPHA8_EXT = 0x8045

pattern GL_LUMINANCE8_EXT = 0x8040

pattern GL_RGB10_A2_EXT = 0x8059

pattern GL_RGB10_EXT = 0x8052

glFramebufferTextureLayerEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
glFramebufferTextureLayerEXT = ffienumenumuintintintIOV glFramebufferTextureLayerEXTFunPtr

glFramebufferTextureLayerEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glFramebufferTextureLayerEXTFunPtr = unsafePerformIO (getProcAddress "glFramebufferTextureLayerEXT")

{-# NOINLINE glFramebufferTextureLayerEXTFunPtr #-}

glGetTexParameterIivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexParameterIivEXT = ffienumenumPtrintIOV glGetTexParameterIivEXTFunPtr

glGetTexParameterIivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIivEXT")

{-# NOINLINE glGetTexParameterIivEXTFunPtr #-}

glGetTexParameterIuivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glGetTexParameterIuivEXT = ffienumenumPtruintIOV glGetTexParameterIuivEXTFunPtr

glGetTexParameterIuivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glGetTexParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIuivEXT")

{-# NOINLINE glGetTexParameterIuivEXTFunPtr #-}

glTexParameterIivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexParameterIivEXT = ffienumenumPtrintIOV glTexParameterIivEXTFunPtr

glTexParameterIivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glTexParameterIivEXT")

{-# NOINLINE glTexParameterIivEXTFunPtr #-}

glTexParameterIuivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glTexParameterIuivEXT = ffienumenumPtruintIOV glTexParameterIuivEXTFunPtr

glTexParameterIuivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glTexParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glTexParameterIuivEXT")

{-# NOINLINE glTexParameterIuivEXTFunPtr #-}

glTexBufferEXT :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glTexBufferEXT = ffienumenumuintIOV glTexBufferEXTFunPtr

glTexBufferEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glTexBufferEXTFunPtr = unsafePerformIO (getProcAddress "glTexBufferEXT")

{-# NOINLINE glTexBufferEXTFunPtr #-}

pattern GL_MAX_TEXTURE_BUFFER_SIZE_EXT = 0x8C2B

pattern GL_TEXTURE_BINDING_BUFFER_EXT = 0x8C2C

pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x8C2D

pattern GL_TEXTURE_BUFFER_EXT = 0x8C2A

pattern GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1

pattern GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0

pattern GL_R8_EXT = 0x8229

pattern GL_RG8_EXT = 0x822B

pattern GL_R16_SNORM = 0x8F98

pattern GL_R8_SNORM = 0x8F94

pattern GL_RG16_SNORM = 0x8F99

pattern GL_RG8_SNORM = 0x8F95

pattern GL_RGB16_SNORM = 0x8F9A

pattern GL_RGB8_SNORM = 0x8F96

pattern GL_RGBA16_SNORM = 0x8F9B

pattern GL_RGBA8_SNORM = 0x8F97

pattern GL_SIGNED_NORMALIZED = 0x8F9C

pattern GL_CONTEXT_RELEASE_BEHAVIOR = 0x82FB

pattern GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC

pattern GL_NONE = 0

glDebugMessageCallback :: MonadIO m => GLDEBUGPROC -> Ptr () -> m ()
glDebugMessageCallback = ffiDEBUGPROCPtrVIOV glDebugMessageCallbackFunPtr

glDebugMessageCallbackFunPtr :: FunPtr (GLDEBUGPROC -> Ptr () -> IO ())
glDebugMessageCallbackFunPtr = unsafePerformIO (getProcAddress "glDebugMessageCallback")

{-# NOINLINE glDebugMessageCallbackFunPtr #-}

glDebugMessageControl :: MonadIO m => GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> m ()
glDebugMessageControl = ffienumenumenumsizeiPtruintbooleanIOV glDebugMessageControlFunPtr

glDebugMessageControlFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLsizei -> Ptr GLuint -> GLboolean -> IO ())
glDebugMessageControlFunPtr = unsafePerformIO (getProcAddress "glDebugMessageControl")

{-# NOINLINE glDebugMessageControlFunPtr #-}

glDebugMessageInsert :: MonadIO m => GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> m ()
glDebugMessageInsert = ffienumenumuintenumsizeiPtrcharIOV glDebugMessageInsertFunPtr

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

{-# NOINLINE glDebugMessageInsertFunPtr #-}

glGetDebugMessageLog :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> Ptr GLenum -> Ptr GLuint -> Ptr GLenum -> Ptr GLsizei -> Ptr GLchar -> m GLuint
glGetDebugMessageLog = ffiuintsizeiPtrenumPtrenumPtruintPtrenumPtrsizeiPtrcharIOuint glGetDebugMessageLogFunPtr

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

{-# NOINLINE glGetDebugMessageLogFunPtr #-}

glGetObjectLabel :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetObjectLabel = ffienumuintsizeiPtrsizeiPtrcharIOV glGetObjectLabelFunPtr

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

{-# NOINLINE glGetObjectLabelFunPtr #-}

glGetObjectPtrLabel :: MonadIO m => Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetObjectPtrLabel = ffiPtrVsizeiPtrsizeiPtrcharIOV glGetObjectPtrLabelFunPtr

glGetObjectPtrLabelFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetObjectPtrLabelFunPtr = unsafePerformIO (getProcAddress "glGetObjectPtrLabel")

{-# NOINLINE glGetObjectPtrLabelFunPtr #-}

glGetPointerv :: MonadIO m => GLenum -> Ptr () -> m ()
glGetPointerv = ffienumPtrVIOV glGetPointervFunPtr

glGetPointervFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
glGetPointervFunPtr = unsafePerformIO (getProcAddress "glGetPointerv")

{-# NOINLINE glGetPointervFunPtr #-}

glObjectLabel :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
glObjectLabel = ffienumuintsizeiPtrcharIOV glObjectLabelFunPtr

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

{-# NOINLINE glObjectLabelFunPtr #-}

glObjectPtrLabel :: MonadIO m => Ptr () -> GLsizei -> Ptr GLchar -> m ()
glObjectPtrLabel = ffiPtrVsizeiPtrcharIOV glObjectPtrLabelFunPtr

glObjectPtrLabelFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLchar -> IO ())
glObjectPtrLabelFunPtr = unsafePerformIO (getProcAddress "glObjectPtrLabel")

{-# NOINLINE glObjectPtrLabelFunPtr #-}

glPopDebugGroup :: MonadIO m => m ()
glPopDebugGroup = ffiIOV glPopDebugGroupFunPtr

glPopDebugGroupFunPtr :: FunPtr (IO ())
glPopDebugGroupFunPtr = unsafePerformIO (getProcAddress "glPopDebugGroup")

{-# NOINLINE glPopDebugGroupFunPtr #-}

glPushDebugGroup :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLchar -> m ()
glPushDebugGroup = ffienumuintsizeiPtrcharIOV glPushDebugGroupFunPtr

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

{-# NOINLINE glPushDebugGroupFunPtr #-}

pattern GL_BUFFER = 0x82E0

pattern GL_CONTEXT_FLAG_DEBUG_BIT = 0x00000002

pattern GL_DEBUG_CALLBACK_FUNCTION = 0x8244

pattern GL_DEBUG_CALLBACK_USER_PARAM = 0x8245

pattern GL_DEBUG_GROUP_STACK_DEPTH = 0x826D

pattern GL_DEBUG_LOGGED_MESSAGES = 0x9145

pattern GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243

pattern GL_DEBUG_OUTPUT = 0x92E0

pattern GL_DEBUG_OUTPUT_SYNCHRONOUS = 0x8242

pattern GL_DEBUG_SEVERITY_HIGH = 0x9146

pattern GL_DEBUG_SEVERITY_LOW = 0x9148

pattern GL_DEBUG_SEVERITY_MEDIUM = 0x9147

pattern GL_DEBUG_SEVERITY_NOTIFICATION = 0x826B

pattern GL_DEBUG_SOURCE_API = 0x8246

pattern GL_DEBUG_SOURCE_APPLICATION = 0x824A

pattern GL_DEBUG_SOURCE_OTHER = 0x824B

pattern GL_DEBUG_SOURCE_SHADER_COMPILER = 0x8248

pattern GL_DEBUG_SOURCE_THIRD_PARTY = 0x8249

pattern GL_DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247

pattern GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D

pattern GL_DEBUG_TYPE_ERROR = 0x824C

pattern GL_DEBUG_TYPE_MARKER = 0x8268

pattern GL_DEBUG_TYPE_OTHER = 0x8251

pattern GL_DEBUG_TYPE_PERFORMANCE = 0x8250

pattern GL_DEBUG_TYPE_POP_GROUP = 0x826A

pattern GL_DEBUG_TYPE_PORTABILITY = 0x824F

pattern GL_DEBUG_TYPE_PUSH_GROUP = 0x8269

pattern GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824E

pattern GL_DISPLAY_LIST = 0x82E7

pattern GL_MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C

pattern GL_MAX_DEBUG_LOGGED_MESSAGES = 0x9144

pattern GL_MAX_DEBUG_MESSAGE_LENGTH = 0x9143

pattern GL_MAX_LABEL_LENGTH = 0x82E8

pattern GL_PROGRAM = 0x82E2

pattern GL_PROGRAM_PIPELINE = 0x82E4

pattern GL_QUERY = 0x82E3

pattern GL_SHADER = 0x82E1

pattern GL_STACK_OVERFLOW = 0x0503

pattern GL_STACK_UNDERFLOW = 0x0504

pattern GL_VERTEX_ARRAY = 0x8074

glGetGraphicsResetStatus :: MonadIO m => m GLenum
glGetGraphicsResetStatus = ffiIOenum glGetGraphicsResetStatusFunPtr

glGetGraphicsResetStatusFunPtr :: FunPtr (IO GLenum)
glGetGraphicsResetStatusFunPtr = unsafePerformIO (getProcAddress "glGetGraphicsResetStatus")

{-# NOINLINE glGetGraphicsResetStatusFunPtr #-}

glGetnUniformfv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glGetnUniformfv = ffiuintintsizeiPtrfloatIOV glGetnUniformfvFunPtr

glGetnUniformfvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLfloat -> IO ())
glGetnUniformfvFunPtr = unsafePerformIO (getProcAddress "glGetnUniformfv")

{-# NOINLINE glGetnUniformfvFunPtr #-}

glGetnUniformiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glGetnUniformiv = ffiuintintsizeiPtrintIOV glGetnUniformivFunPtr

glGetnUniformivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glGetnUniformivFunPtr = unsafePerformIO (getProcAddress "glGetnUniformiv")

{-# NOINLINE glGetnUniformivFunPtr #-}

glGetnUniformuiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glGetnUniformuiv = ffiuintintsizeiPtruintIOV glGetnUniformuivFunPtr

glGetnUniformuivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glGetnUniformuivFunPtr = unsafePerformIO (getProcAddress "glGetnUniformuiv")

{-# NOINLINE glGetnUniformuivFunPtr #-}

glReadnPixels :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glReadnPixels = ffiintintsizeisizeienumenumsizeiPtrVIOV glReadnPixelsFunPtr

glReadnPixelsFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glReadnPixelsFunPtr = unsafePerformIO (getProcAddress "glReadnPixels")

{-# NOINLINE glReadnPixelsFunPtr #-}

pattern GL_CONTEXT_LOST = 0x0507

pattern GL_GUILTY_CONTEXT_RESET = 0x8253

pattern GL_INNOCENT_CONTEXT_RESET = 0x8254

pattern GL_LOSE_CONTEXT_ON_RESET = 0x8252

pattern GL_NO_RESET_NOTIFICATION = 0x8261

pattern GL_RESET_NOTIFICATION_STRATEGY = 0x8256

pattern GL_UNKNOWN_CONTEXT_RESET = 0x8255

pattern GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB

pattern GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8

pattern GL_COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9

pattern GL_COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA

pattern GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC

pattern GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD

pattern GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0

pattern GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1

pattern GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2

pattern GL_COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3

pattern GL_COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4

pattern GL_COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5

pattern GL_COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6

pattern GL_COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6

pattern GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7

pattern GL_INVERT = 0x150A

pattern GL_COLOR_ATTACHMENT0_NV = 0x8CE0

pattern GL_COLOR_ATTACHMENT10_NV = 0x8CEA

pattern GL_COLOR_ATTACHMENT11_NV = 0x8CEB

pattern GL_COLOR_ATTACHMENT12_NV = 0x8CEC

pattern GL_COLOR_ATTACHMENT13_NV = 0x8CED

pattern GL_COLOR_ATTACHMENT14_NV = 0x8CEE

pattern GL_COLOR_ATTACHMENT15_NV = 0x8CEF

pattern GL_COLOR_ATTACHMENT1_NV = 0x8CE1

pattern GL_COLOR_ATTACHMENT2_NV = 0x8CE2

pattern GL_COLOR_ATTACHMENT3_NV = 0x8CE3

pattern GL_COLOR_ATTACHMENT4_NV = 0x8CE4

pattern GL_COLOR_ATTACHMENT5_NV = 0x8CE5

pattern GL_COLOR_ATTACHMENT6_NV = 0x8CE6

pattern GL_COLOR_ATTACHMENT7_NV = 0x8CE7

pattern GL_COLOR_ATTACHMENT8_NV = 0x8CE8

pattern GL_COLOR_ATTACHMENT9_NV = 0x8CE9

pattern GL_EYE_PLANE = 0x2502

pattern GL_MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5

pattern GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4

pattern GL_COLOR_SAMPLES_NV = 0x8E20

pattern GL_PRIMARY_COLOR = 0x8577

pattern GL_PRIMARY_COLOR_NV = 0x852C

pattern GL_SECONDARY_COLOR_NV = 0x852D

pattern GL_FOG = 0x0B60

pattern GL_READ_WRITE = 0x88BA

pattern GL_WRITE_ONLY = 0x88B9

pattern GL_BYTE = 0x1400

pattern GL_DEPTH_COMPONENT24_OES = 0x81A6

glGetTexGenxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
glGetTexGenxvOES = ffienumenumPtrfixedIOV glGetTexGenxvOESFunPtr

glGetTexGenxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
glGetTexGenxvOESFunPtr = unsafePerformIO (getProcAddress "glGetTexGenxvOES")

{-# NOINLINE glGetTexGenxvOESFunPtr #-}

glTexGenxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
glTexGenxOES = ffienumenumfixedIOV glTexGenxOESFunPtr

glTexGenxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
glTexGenxOESFunPtr = unsafePerformIO (getProcAddress "glTexGenxOES")

{-# NOINLINE glTexGenxOESFunPtr #-}

glTexGenxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
glTexGenxvOES = ffienumenumPtrfixedIOV glTexGenxvOESFunPtr

glTexGenxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
glTexGenxvOESFunPtr = unsafePerformIO (getProcAddress "glTexGenxvOES")

{-# NOINLINE glTexGenxvOESFunPtr #-}

pattern GL_DEPTH_COMPONENT16_OES = 0x81A5

pattern GL_RGB565_OES = 0x8D62

pattern GL_RGB5_A1_OES = 0x8057

pattern GL_RGBA4_OES = 0x8056

pattern GL_RGB8_OES = 0x8051

pattern GL_RGBA8_OES = 0x8058

pattern GL_STENCIL_INDEX8_OES = 0x8D48

pattern GL_HALF_FLOAT_OES = 0x8D61

glAccum :: MonadIO m => GLenum -> GLfloat -> m ()
glAccum = ffienumfloatIOV glAccumFunPtr

glAccumFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glAccumFunPtr = unsafePerformIO (getProcAddress "glAccum")

{-# NOINLINE glAccumFunPtr #-}

glAlphaFunc :: MonadIO m => GLenum -> GLfloat -> m ()
glAlphaFunc = ffienumfloatIOV glAlphaFuncFunPtr

glAlphaFuncFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glAlphaFuncFunPtr = unsafePerformIO (getProcAddress "glAlphaFunc")

{-# NOINLINE glAlphaFuncFunPtr #-}

glAreTexturesResident :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLboolean -> m GLboolean
glAreTexturesResident = ffisizeiPtruintPtrbooleanIOboolean glAreTexturesResidentFunPtr

glAreTexturesResidentFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLboolean -> IO GLboolean)
glAreTexturesResidentFunPtr = unsafePerformIO (getProcAddress "glAreTexturesResident")

{-# NOINLINE glAreTexturesResidentFunPtr #-}

glArrayElement :: MonadIO m => GLint -> m ()
glArrayElement = ffiintIOV glArrayElementFunPtr

glArrayElementFunPtr :: FunPtr (GLint -> IO ())
glArrayElementFunPtr = unsafePerformIO (getProcAddress "glArrayElement")

{-# NOINLINE glArrayElementFunPtr #-}

glBegin :: MonadIO m => GLenum -> m ()
glBegin = ffienumIOV glBeginFunPtr

glBeginFunPtr :: FunPtr (GLenum -> IO ())
glBeginFunPtr = unsafePerformIO (getProcAddress "glBegin")

{-# NOINLINE glBeginFunPtr #-}

glBitmap :: MonadIO m => GLsizei -> GLsizei -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Ptr GLubyte -> m ()
glBitmap = ffisizeisizeifloatfloatfloatfloatPtrubyteIOV glBitmapFunPtr

glBitmapFunPtr :: FunPtr (GLsizei -> GLsizei -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> Ptr GLubyte -> IO ())
glBitmapFunPtr = unsafePerformIO (getProcAddress "glBitmap")

{-# NOINLINE glBitmapFunPtr #-}

glCallList :: MonadIO m => GLuint -> m ()
glCallList = ffiuintIOV glCallListFunPtr

glCallListFunPtr :: FunPtr (GLuint -> IO ())
glCallListFunPtr = unsafePerformIO (getProcAddress "glCallList")

{-# NOINLINE glCallListFunPtr #-}

glCallLists :: MonadIO m => GLsizei -> GLenum -> Ptr () -> m ()
glCallLists = ffisizeienumPtrVIOV glCallListsFunPtr

glCallListsFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> IO ())
glCallListsFunPtr = unsafePerformIO (getProcAddress "glCallLists")

{-# NOINLINE glCallListsFunPtr #-}

glClearAccum :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glClearAccum = ffifloatfloatfloatfloatIOV glClearAccumFunPtr

glClearAccumFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glClearAccumFunPtr = unsafePerformIO (getProcAddress "glClearAccum")

{-# NOINLINE glClearAccumFunPtr #-}

glClearIndex :: MonadIO m => GLfloat -> m ()
glClearIndex = ffifloatIOV glClearIndexFunPtr

glClearIndexFunPtr :: FunPtr (GLfloat -> IO ())
glClearIndexFunPtr = unsafePerformIO (getProcAddress "glClearIndex")

{-# NOINLINE glClearIndexFunPtr #-}

glClientActiveTexture :: MonadIO m => GLenum -> m ()
glClientActiveTexture = ffienumIOV glClientActiveTextureFunPtr

glClientActiveTextureFunPtr :: FunPtr (GLenum -> IO ())
glClientActiveTextureFunPtr = unsafePerformIO (getProcAddress "glClientActiveTexture")

{-# NOINLINE glClientActiveTextureFunPtr #-}

glClipPlane :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glClipPlane = ffienumPtrdoubleIOV glClipPlaneFunPtr

glClipPlaneFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glClipPlaneFunPtr = unsafePerformIO (getProcAddress "glClipPlane")

{-# NOINLINE glClipPlaneFunPtr #-}

glColor3b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glColor3b = ffibytebytebyteIOV glColor3bFunPtr

glColor3bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glColor3bFunPtr = unsafePerformIO (getProcAddress "glColor3b")

{-# NOINLINE glColor3bFunPtr #-}

glColor3bv :: MonadIO m => Ptr GLbyte -> m ()
glColor3bv = ffiPtrbyteIOV glColor3bvFunPtr

glColor3bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glColor3bvFunPtr = unsafePerformIO (getProcAddress "glColor3bv")

{-# NOINLINE glColor3bvFunPtr #-}

glColor3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glColor3d = ffidoubledoubledoubleIOV glColor3dFunPtr

glColor3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glColor3dFunPtr = unsafePerformIO (getProcAddress "glColor3d")

{-# NOINLINE glColor3dFunPtr #-}

glColor3dv :: MonadIO m => Ptr GLdouble -> m ()
glColor3dv = ffiPtrdoubleIOV glColor3dvFunPtr

glColor3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glColor3dvFunPtr = unsafePerformIO (getProcAddress "glColor3dv")

{-# NOINLINE glColor3dvFunPtr #-}

glColor3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glColor3f = ffifloatfloatfloatIOV glColor3fFunPtr

glColor3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glColor3fFunPtr = unsafePerformIO (getProcAddress "glColor3f")

{-# NOINLINE glColor3fFunPtr #-}

glColor3fv :: MonadIO m => Ptr GLfloat -> m ()
glColor3fv = ffiPtrfloatIOV glColor3fvFunPtr

glColor3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glColor3fvFunPtr = unsafePerformIO (getProcAddress "glColor3fv")

{-# NOINLINE glColor3fvFunPtr #-}

glColor3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glColor3i = ffiintintintIOV glColor3iFunPtr

glColor3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glColor3iFunPtr = unsafePerformIO (getProcAddress "glColor3i")

{-# NOINLINE glColor3iFunPtr #-}

glColor3iv :: MonadIO m => Ptr GLint -> m ()
glColor3iv = ffiPtrintIOV glColor3ivFunPtr

glColor3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glColor3ivFunPtr = unsafePerformIO (getProcAddress "glColor3iv")

{-# NOINLINE glColor3ivFunPtr #-}

glColor3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glColor3s = ffishortshortshortIOV glColor3sFunPtr

glColor3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glColor3sFunPtr = unsafePerformIO (getProcAddress "glColor3s")

{-# NOINLINE glColor3sFunPtr #-}

glColor3sv :: MonadIO m => Ptr GLshort -> m ()
glColor3sv = ffiPtrshortIOV glColor3svFunPtr

glColor3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glColor3svFunPtr = unsafePerformIO (getProcAddress "glColor3sv")

{-# NOINLINE glColor3svFunPtr #-}

glColor3ub :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> m ()
glColor3ub = ffiubyteubyteubyteIOV glColor3ubFunPtr

glColor3ubFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ())
glColor3ubFunPtr = unsafePerformIO (getProcAddress "glColor3ub")

{-# NOINLINE glColor3ubFunPtr #-}

glColor3ubv :: MonadIO m => Ptr GLubyte -> m ()
glColor3ubv = ffiPtrubyteIOV glColor3ubvFunPtr

glColor3ubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glColor3ubvFunPtr = unsafePerformIO (getProcAddress "glColor3ubv")

{-# NOINLINE glColor3ubvFunPtr #-}

glColor3ui :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glColor3ui = ffiuintuintuintIOV glColor3uiFunPtr

glColor3uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glColor3uiFunPtr = unsafePerformIO (getProcAddress "glColor3ui")

{-# NOINLINE glColor3uiFunPtr #-}

glColor3uiv :: MonadIO m => Ptr GLuint -> m ()
glColor3uiv = ffiPtruintIOV glColor3uivFunPtr

glColor3uivFunPtr :: FunPtr (Ptr GLuint -> IO ())
glColor3uivFunPtr = unsafePerformIO (getProcAddress "glColor3uiv")

{-# NOINLINE glColor3uivFunPtr #-}

glColor3us :: MonadIO m => GLushort -> GLushort -> GLushort -> m ()
glColor3us = ffiushortushortushortIOV glColor3usFunPtr

glColor3usFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> IO ())
glColor3usFunPtr = unsafePerformIO (getProcAddress "glColor3us")

{-# NOINLINE glColor3usFunPtr #-}

glColor3usv :: MonadIO m => Ptr GLushort -> m ()
glColor3usv = ffiPtrushortIOV glColor3usvFunPtr

glColor3usvFunPtr :: FunPtr (Ptr GLushort -> IO ())
glColor3usvFunPtr = unsafePerformIO (getProcAddress "glColor3usv")

{-# NOINLINE glColor3usvFunPtr #-}

glColor4b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
glColor4b = ffibytebytebytebyteIOV glColor4bFunPtr

glColor4bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ())
glColor4bFunPtr = unsafePerformIO (getProcAddress "glColor4b")

{-# NOINLINE glColor4bFunPtr #-}

glColor4bv :: MonadIO m => Ptr GLbyte -> m ()
glColor4bv = ffiPtrbyteIOV glColor4bvFunPtr

glColor4bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glColor4bvFunPtr = unsafePerformIO (getProcAddress "glColor4bv")

{-# NOINLINE glColor4bvFunPtr #-}

glColor4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glColor4d = ffidoubledoubledoubledoubleIOV glColor4dFunPtr

glColor4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glColor4dFunPtr = unsafePerformIO (getProcAddress "glColor4d")

{-# NOINLINE glColor4dFunPtr #-}

glColor4dv :: MonadIO m => Ptr GLdouble -> m ()
glColor4dv = ffiPtrdoubleIOV glColor4dvFunPtr

glColor4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glColor4dvFunPtr = unsafePerformIO (getProcAddress "glColor4dv")

{-# NOINLINE glColor4dvFunPtr #-}

glColor4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glColor4f = ffifloatfloatfloatfloatIOV glColor4fFunPtr

glColor4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glColor4fFunPtr = unsafePerformIO (getProcAddress "glColor4f")

{-# NOINLINE glColor4fFunPtr #-}

glColor4fv :: MonadIO m => Ptr GLfloat -> m ()
glColor4fv = ffiPtrfloatIOV glColor4fvFunPtr

glColor4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glColor4fvFunPtr = unsafePerformIO (getProcAddress "glColor4fv")

{-# NOINLINE glColor4fvFunPtr #-}

glColor4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glColor4i = ffiintintintintIOV glColor4iFunPtr

glColor4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glColor4iFunPtr = unsafePerformIO (getProcAddress "glColor4i")

{-# NOINLINE glColor4iFunPtr #-}

glColor4iv :: MonadIO m => Ptr GLint -> m ()
glColor4iv = ffiPtrintIOV glColor4ivFunPtr

glColor4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glColor4ivFunPtr = unsafePerformIO (getProcAddress "glColor4iv")

{-# NOINLINE glColor4ivFunPtr #-}

glColor4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glColor4s = ffishortshortshortshortIOV glColor4sFunPtr

glColor4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glColor4sFunPtr = unsafePerformIO (getProcAddress "glColor4s")

{-# NOINLINE glColor4sFunPtr #-}

glColor4sv :: MonadIO m => Ptr GLshort -> m ()
glColor4sv = ffiPtrshortIOV glColor4svFunPtr

glColor4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glColor4svFunPtr = unsafePerformIO (getProcAddress "glColor4sv")

{-# NOINLINE glColor4svFunPtr #-}

glColor4ub :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
glColor4ub = ffiubyteubyteubyteubyteIOV glColor4ubFunPtr

glColor4ubFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ())
glColor4ubFunPtr = unsafePerformIO (getProcAddress "glColor4ub")

{-# NOINLINE glColor4ubFunPtr #-}

glColor4ubv :: MonadIO m => Ptr GLubyte -> m ()
glColor4ubv = ffiPtrubyteIOV glColor4ubvFunPtr

glColor4ubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glColor4ubvFunPtr = unsafePerformIO (getProcAddress "glColor4ubv")

{-# NOINLINE glColor4ubvFunPtr #-}

glColor4ui :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
glColor4ui = ffiuintuintuintuintIOV glColor4uiFunPtr

glColor4uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glColor4uiFunPtr = unsafePerformIO (getProcAddress "glColor4ui")

{-# NOINLINE glColor4uiFunPtr #-}

glColor4uiv :: MonadIO m => Ptr GLuint -> m ()
glColor4uiv = ffiPtruintIOV glColor4uivFunPtr

glColor4uivFunPtr :: FunPtr (Ptr GLuint -> IO ())
glColor4uivFunPtr = unsafePerformIO (getProcAddress "glColor4uiv")

{-# NOINLINE glColor4uivFunPtr #-}

glColor4us :: MonadIO m => GLushort -> GLushort -> GLushort -> GLushort -> m ()
glColor4us = ffiushortushortushortushortIOV glColor4usFunPtr

glColor4usFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> GLushort -> IO ())
glColor4usFunPtr = unsafePerformIO (getProcAddress "glColor4us")

{-# NOINLINE glColor4usFunPtr #-}

glColor4usv :: MonadIO m => Ptr GLushort -> m ()
glColor4usv = ffiPtrushortIOV glColor4usvFunPtr

glColor4usvFunPtr :: FunPtr (Ptr GLushort -> IO ())
glColor4usvFunPtr = unsafePerformIO (getProcAddress "glColor4usv")

{-# NOINLINE glColor4usvFunPtr #-}

glColorMaterial :: MonadIO m => GLenum -> GLenum -> m ()
glColorMaterial = ffienumenumIOV glColorMaterialFunPtr

glColorMaterialFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glColorMaterialFunPtr = unsafePerformIO (getProcAddress "glColorMaterial")

{-# NOINLINE glColorMaterialFunPtr #-}

glColorPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glColorPointer = ffiintenumsizeiPtrVIOV glColorPointerFunPtr

glColorPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glColorPointerFunPtr = unsafePerformIO (getProcAddress "glColorPointer")

{-# NOINLINE glColorPointerFunPtr #-}

glCopyPixels :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> m ()
glCopyPixels = ffiintintsizeisizeienumIOV glCopyPixelsFunPtr

glCopyPixelsFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> IO ())
glCopyPixelsFunPtr = unsafePerformIO (getProcAddress "glCopyPixels")

{-# NOINLINE glCopyPixelsFunPtr #-}

glDeleteLists :: MonadIO m => GLuint -> GLsizei -> m ()
glDeleteLists = ffiuintsizeiIOV glDeleteListsFunPtr

glDeleteListsFunPtr :: FunPtr (GLuint -> GLsizei -> IO ())
glDeleteListsFunPtr = unsafePerformIO (getProcAddress "glDeleteLists")

{-# NOINLINE glDeleteListsFunPtr #-}

glDisableClientState :: MonadIO m => GLenum -> m ()
glDisableClientState = ffienumIOV glDisableClientStateFunPtr

glDisableClientStateFunPtr :: FunPtr (GLenum -> IO ())
glDisableClientStateFunPtr = unsafePerformIO (getProcAddress "glDisableClientState")

{-# NOINLINE glDisableClientStateFunPtr #-}

glDrawPixels :: MonadIO m => GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glDrawPixels = ffisizeisizeienumenumPtrVIOV glDrawPixelsFunPtr

glDrawPixelsFunPtr :: FunPtr (GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glDrawPixelsFunPtr = unsafePerformIO (getProcAddress "glDrawPixels")

{-# NOINLINE glDrawPixelsFunPtr #-}

glEdgeFlag :: MonadIO m => GLboolean -> m ()
glEdgeFlag = ffibooleanIOV glEdgeFlagFunPtr

glEdgeFlagFunPtr :: FunPtr (GLboolean -> IO ())
glEdgeFlagFunPtr = unsafePerformIO (getProcAddress "glEdgeFlag")

{-# NOINLINE glEdgeFlagFunPtr #-}

glEdgeFlagPointer :: MonadIO m => GLsizei -> Ptr () -> m ()
glEdgeFlagPointer = ffisizeiPtrVIOV glEdgeFlagPointerFunPtr

glEdgeFlagPointerFunPtr :: FunPtr (GLsizei -> Ptr () -> IO ())
glEdgeFlagPointerFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagPointer")

{-# NOINLINE glEdgeFlagPointerFunPtr #-}

glEdgeFlagv :: MonadIO m => Ptr GLboolean -> m ()
glEdgeFlagv = ffiPtrbooleanIOV glEdgeFlagvFunPtr

glEdgeFlagvFunPtr :: FunPtr (Ptr GLboolean -> IO ())
glEdgeFlagvFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagv")

{-# NOINLINE glEdgeFlagvFunPtr #-}

glEnableClientState :: MonadIO m => GLenum -> m ()
glEnableClientState = ffienumIOV glEnableClientStateFunPtr

glEnableClientStateFunPtr :: FunPtr (GLenum -> IO ())
glEnableClientStateFunPtr = unsafePerformIO (getProcAddress "glEnableClientState")

{-# NOINLINE glEnableClientStateFunPtr #-}

glEnd :: MonadIO m => m ()
glEnd = ffiIOV glEndFunPtr

glEndFunPtr :: FunPtr (IO ())
glEndFunPtr = unsafePerformIO (getProcAddress "glEnd")

{-# NOINLINE glEndFunPtr #-}

glEndList :: MonadIO m => m ()
glEndList = ffiIOV glEndListFunPtr

glEndListFunPtr :: FunPtr (IO ())
glEndListFunPtr = unsafePerformIO (getProcAddress "glEndList")

{-# NOINLINE glEndListFunPtr #-}

glEvalCoord1d :: MonadIO m => GLdouble -> m ()
glEvalCoord1d = ffidoubleIOV glEvalCoord1dFunPtr

glEvalCoord1dFunPtr :: FunPtr (GLdouble -> IO ())
glEvalCoord1dFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1d")

{-# NOINLINE glEvalCoord1dFunPtr #-}

glEvalCoord1dv :: MonadIO m => Ptr GLdouble -> m ()
glEvalCoord1dv = ffiPtrdoubleIOV glEvalCoord1dvFunPtr

glEvalCoord1dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glEvalCoord1dvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1dv")

{-# NOINLINE glEvalCoord1dvFunPtr #-}

glEvalCoord1f :: MonadIO m => GLfloat -> m ()
glEvalCoord1f = ffifloatIOV glEvalCoord1fFunPtr

glEvalCoord1fFunPtr :: FunPtr (GLfloat -> IO ())
glEvalCoord1fFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1f")

{-# NOINLINE glEvalCoord1fFunPtr #-}

glEvalCoord1fv :: MonadIO m => Ptr GLfloat -> m ()
glEvalCoord1fv = ffiPtrfloatIOV glEvalCoord1fvFunPtr

glEvalCoord1fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glEvalCoord1fvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1fv")

{-# NOINLINE glEvalCoord1fvFunPtr #-}

glEvalCoord2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glEvalCoord2d = ffidoubledoubleIOV glEvalCoord2dFunPtr

glEvalCoord2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glEvalCoord2dFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2d")

{-# NOINLINE glEvalCoord2dFunPtr #-}

glEvalCoord2dv :: MonadIO m => Ptr GLdouble -> m ()
glEvalCoord2dv = ffiPtrdoubleIOV glEvalCoord2dvFunPtr

glEvalCoord2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glEvalCoord2dvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2dv")

{-# NOINLINE glEvalCoord2dvFunPtr #-}

glEvalCoord2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glEvalCoord2f = ffifloatfloatIOV glEvalCoord2fFunPtr

glEvalCoord2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glEvalCoord2fFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2f")

{-# NOINLINE glEvalCoord2fFunPtr #-}

glEvalCoord2fv :: MonadIO m => Ptr GLfloat -> m ()
glEvalCoord2fv = ffiPtrfloatIOV glEvalCoord2fvFunPtr

glEvalCoord2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glEvalCoord2fvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2fv")

{-# NOINLINE glEvalCoord2fvFunPtr #-}

glEvalMesh1 :: MonadIO m => GLenum -> GLint -> GLint -> m ()
glEvalMesh1 = ffienumintintIOV glEvalMesh1FunPtr

glEvalMesh1FunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
glEvalMesh1FunPtr = unsafePerformIO (getProcAddress "glEvalMesh1")

{-# NOINLINE glEvalMesh1FunPtr #-}

glEvalMesh2 :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> m ()
glEvalMesh2 = ffienumintintintintIOV glEvalMesh2FunPtr

glEvalMesh2FunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ())
glEvalMesh2FunPtr = unsafePerformIO (getProcAddress "glEvalMesh2")

{-# NOINLINE glEvalMesh2FunPtr #-}

glEvalPoint1 :: MonadIO m => GLint -> m ()
glEvalPoint1 = ffiintIOV glEvalPoint1FunPtr

glEvalPoint1FunPtr :: FunPtr (GLint -> IO ())
glEvalPoint1FunPtr = unsafePerformIO (getProcAddress "glEvalPoint1")

{-# NOINLINE glEvalPoint1FunPtr #-}

glEvalPoint2 :: MonadIO m => GLint -> GLint -> m ()
glEvalPoint2 = ffiintintIOV glEvalPoint2FunPtr

glEvalPoint2FunPtr :: FunPtr (GLint -> GLint -> IO ())
glEvalPoint2FunPtr = unsafePerformIO (getProcAddress "glEvalPoint2")

{-# NOINLINE glEvalPoint2FunPtr #-}

glFeedbackBuffer :: MonadIO m => GLsizei -> GLenum -> Ptr GLfloat -> m ()
glFeedbackBuffer = ffisizeienumPtrfloatIOV glFeedbackBufferFunPtr

glFeedbackBufferFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr GLfloat -> IO ())
glFeedbackBufferFunPtr = unsafePerformIO (getProcAddress "glFeedbackBuffer")

{-# NOINLINE glFeedbackBufferFunPtr #-}

glFogCoordPointer :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glFogCoordPointer = ffienumsizeiPtrVIOV glFogCoordPointerFunPtr

glFogCoordPointerFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glFogCoordPointerFunPtr = unsafePerformIO (getProcAddress "glFogCoordPointer")

{-# NOINLINE glFogCoordPointerFunPtr #-}

glFogCoordd :: MonadIO m => GLdouble -> m ()
glFogCoordd = ffidoubleIOV glFogCoorddFunPtr

glFogCoorddFunPtr :: FunPtr (GLdouble -> IO ())
glFogCoorddFunPtr = unsafePerformIO (getProcAddress "glFogCoordd")

{-# NOINLINE glFogCoorddFunPtr #-}

glFogCoorddv :: MonadIO m => Ptr GLdouble -> m ()
glFogCoorddv = ffiPtrdoubleIOV glFogCoorddvFunPtr

glFogCoorddvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glFogCoorddvFunPtr = unsafePerformIO (getProcAddress "glFogCoorddv")

{-# NOINLINE glFogCoorddvFunPtr #-}

glFogCoordf :: MonadIO m => GLfloat -> m ()
glFogCoordf = ffifloatIOV glFogCoordfFunPtr

glFogCoordfFunPtr :: FunPtr (GLfloat -> IO ())
glFogCoordfFunPtr = unsafePerformIO (getProcAddress "glFogCoordf")

{-# NOINLINE glFogCoordfFunPtr #-}

glFogCoordfv :: MonadIO m => Ptr GLfloat -> m ()
glFogCoordfv = ffiPtrfloatIOV glFogCoordfvFunPtr

glFogCoordfvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glFogCoordfvFunPtr = unsafePerformIO (getProcAddress "glFogCoordfv")

{-# NOINLINE glFogCoordfvFunPtr #-}

glFogf :: MonadIO m => GLenum -> GLfloat -> m ()
glFogf = ffienumfloatIOV glFogfFunPtr

glFogfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glFogfFunPtr = unsafePerformIO (getProcAddress "glFogf")

{-# NOINLINE glFogfFunPtr #-}

glFogfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glFogfv = ffienumPtrfloatIOV glFogfvFunPtr

glFogfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glFogfvFunPtr = unsafePerformIO (getProcAddress "glFogfv")

{-# NOINLINE glFogfvFunPtr #-}

glFogi :: MonadIO m => GLenum -> GLint -> m ()
glFogi = ffienumintIOV glFogiFunPtr

glFogiFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glFogiFunPtr = unsafePerformIO (getProcAddress "glFogi")

{-# NOINLINE glFogiFunPtr #-}

glFogiv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glFogiv = ffienumPtrintIOV glFogivFunPtr

glFogivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glFogivFunPtr = unsafePerformIO (getProcAddress "glFogiv")

{-# NOINLINE glFogivFunPtr #-}

glFrustum :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glFrustum = ffidoubledoubledoubledoubledoubledoubleIOV glFrustumFunPtr

glFrustumFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glFrustumFunPtr = unsafePerformIO (getProcAddress "glFrustum")

{-# NOINLINE glFrustumFunPtr #-}

glGenLists :: MonadIO m => GLsizei -> m GLuint
glGenLists = ffisizeiIOuint glGenListsFunPtr

glGenListsFunPtr :: FunPtr (GLsizei -> IO GLuint)
glGenListsFunPtr = unsafePerformIO (getProcAddress "glGenLists")

{-# NOINLINE glGenListsFunPtr #-}

glGetClipPlane :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glGetClipPlane = ffienumPtrdoubleIOV glGetClipPlaneFunPtr

glGetClipPlaneFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glGetClipPlaneFunPtr = unsafePerformIO (getProcAddress "glGetClipPlane")

{-# NOINLINE glGetClipPlaneFunPtr #-}

glGetLightfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetLightfv = ffienumenumPtrfloatIOV glGetLightfvFunPtr

glGetLightfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetLightfvFunPtr = unsafePerformIO (getProcAddress "glGetLightfv")

{-# NOINLINE glGetLightfvFunPtr #-}

glGetLightiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetLightiv = ffienumenumPtrintIOV glGetLightivFunPtr

glGetLightivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetLightivFunPtr = unsafePerformIO (getProcAddress "glGetLightiv")

{-# NOINLINE glGetLightivFunPtr #-}

glGetMapdv :: MonadIO m => GLenum -> GLenum -> Ptr GLdouble -> m ()
glGetMapdv = ffienumenumPtrdoubleIOV glGetMapdvFunPtr

glGetMapdvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ())
glGetMapdvFunPtr = unsafePerformIO (getProcAddress "glGetMapdv")

{-# NOINLINE glGetMapdvFunPtr #-}

glGetMapfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetMapfv = ffienumenumPtrfloatIOV glGetMapfvFunPtr

glGetMapfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetMapfvFunPtr = unsafePerformIO (getProcAddress "glGetMapfv")

{-# NOINLINE glGetMapfvFunPtr #-}

glGetMapiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetMapiv = ffienumenumPtrintIOV glGetMapivFunPtr

glGetMapivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetMapivFunPtr = unsafePerformIO (getProcAddress "glGetMapiv")

{-# NOINLINE glGetMapivFunPtr #-}

glGetMaterialfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetMaterialfv = ffienumenumPtrfloatIOV glGetMaterialfvFunPtr

glGetMaterialfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetMaterialfvFunPtr = unsafePerformIO (getProcAddress "glGetMaterialfv")

{-# NOINLINE glGetMaterialfvFunPtr #-}

glGetMaterialiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetMaterialiv = ffienumenumPtrintIOV glGetMaterialivFunPtr

glGetMaterialivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetMaterialivFunPtr = unsafePerformIO (getProcAddress "glGetMaterialiv")

{-# NOINLINE glGetMaterialivFunPtr #-}

glGetPixelMapfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glGetPixelMapfv = ffienumPtrfloatIOV glGetPixelMapfvFunPtr

glGetPixelMapfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glGetPixelMapfvFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapfv")

{-# NOINLINE glGetPixelMapfvFunPtr #-}

glGetPixelMapuiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glGetPixelMapuiv = ffienumPtruintIOV glGetPixelMapuivFunPtr

glGetPixelMapuivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glGetPixelMapuivFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapuiv")

{-# NOINLINE glGetPixelMapuivFunPtr #-}

glGetPixelMapusv :: MonadIO m => GLenum -> Ptr GLushort -> m ()
glGetPixelMapusv = ffienumPtrushortIOV glGetPixelMapusvFunPtr

glGetPixelMapusvFunPtr :: FunPtr (GLenum -> Ptr GLushort -> IO ())
glGetPixelMapusvFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapusv")

{-# NOINLINE glGetPixelMapusvFunPtr #-}

glGetPolygonStipple :: MonadIO m => Ptr GLubyte -> m ()
glGetPolygonStipple = ffiPtrubyteIOV glGetPolygonStippleFunPtr

glGetPolygonStippleFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glGetPolygonStippleFunPtr = unsafePerformIO (getProcAddress "glGetPolygonStipple")

{-# NOINLINE glGetPolygonStippleFunPtr #-}

glGetTexEnvfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetTexEnvfv = ffienumenumPtrfloatIOV glGetTexEnvfvFunPtr

glGetTexEnvfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetTexEnvfvFunPtr = unsafePerformIO (getProcAddress "glGetTexEnvfv")

{-# NOINLINE glGetTexEnvfvFunPtr #-}

glGetTexEnviv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexEnviv = ffienumenumPtrintIOV glGetTexEnvivFunPtr

glGetTexEnvivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexEnvivFunPtr = unsafePerformIO (getProcAddress "glGetTexEnviv")

{-# NOINLINE glGetTexEnvivFunPtr #-}

glGetTexGendv :: MonadIO m => GLenum -> GLenum -> Ptr GLdouble -> m ()
glGetTexGendv = ffienumenumPtrdoubleIOV glGetTexGendvFunPtr

glGetTexGendvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ())
glGetTexGendvFunPtr = unsafePerformIO (getProcAddress "glGetTexGendv")

{-# NOINLINE glGetTexGendvFunPtr #-}

glGetTexGenfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetTexGenfv = ffienumenumPtrfloatIOV glGetTexGenfvFunPtr

glGetTexGenfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetTexGenfvFunPtr = unsafePerformIO (getProcAddress "glGetTexGenfv")

{-# NOINLINE glGetTexGenfvFunPtr #-}

glGetTexGeniv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexGeniv = ffienumenumPtrintIOV glGetTexGenivFunPtr

glGetTexGenivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexGenivFunPtr = unsafePerformIO (getProcAddress "glGetTexGeniv")

{-# NOINLINE glGetTexGenivFunPtr #-}

glIndexMask :: MonadIO m => GLuint -> m ()
glIndexMask = ffiuintIOV glIndexMaskFunPtr

glIndexMaskFunPtr :: FunPtr (GLuint -> IO ())
glIndexMaskFunPtr = unsafePerformIO (getProcAddress "glIndexMask")

{-# NOINLINE glIndexMaskFunPtr #-}

glIndexPointer :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glIndexPointer = ffienumsizeiPtrVIOV glIndexPointerFunPtr

glIndexPointerFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glIndexPointerFunPtr = unsafePerformIO (getProcAddress "glIndexPointer")

{-# NOINLINE glIndexPointerFunPtr #-}

glIndexd :: MonadIO m => GLdouble -> m ()
glIndexd = ffidoubleIOV glIndexdFunPtr

glIndexdFunPtr :: FunPtr (GLdouble -> IO ())
glIndexdFunPtr = unsafePerformIO (getProcAddress "glIndexd")

{-# NOINLINE glIndexdFunPtr #-}

glIndexdv :: MonadIO m => Ptr GLdouble -> m ()
glIndexdv = ffiPtrdoubleIOV glIndexdvFunPtr

glIndexdvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glIndexdvFunPtr = unsafePerformIO (getProcAddress "glIndexdv")

{-# NOINLINE glIndexdvFunPtr #-}

glIndexf :: MonadIO m => GLfloat -> m ()
glIndexf = ffifloatIOV glIndexfFunPtr

glIndexfFunPtr :: FunPtr (GLfloat -> IO ())
glIndexfFunPtr = unsafePerformIO (getProcAddress "glIndexf")

{-# NOINLINE glIndexfFunPtr #-}

glIndexfv :: MonadIO m => Ptr GLfloat -> m ()
glIndexfv = ffiPtrfloatIOV glIndexfvFunPtr

glIndexfvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glIndexfvFunPtr = unsafePerformIO (getProcAddress "glIndexfv")

{-# NOINLINE glIndexfvFunPtr #-}

glIndexi :: MonadIO m => GLint -> m ()
glIndexi = ffiintIOV glIndexiFunPtr

glIndexiFunPtr :: FunPtr (GLint -> IO ())
glIndexiFunPtr = unsafePerformIO (getProcAddress "glIndexi")

{-# NOINLINE glIndexiFunPtr #-}

glIndexiv :: MonadIO m => Ptr GLint -> m ()
glIndexiv = ffiPtrintIOV glIndexivFunPtr

glIndexivFunPtr :: FunPtr (Ptr GLint -> IO ())
glIndexivFunPtr = unsafePerformIO (getProcAddress "glIndexiv")

{-# NOINLINE glIndexivFunPtr #-}

glIndexs :: MonadIO m => GLshort -> m ()
glIndexs = ffishortIOV glIndexsFunPtr

glIndexsFunPtr :: FunPtr (GLshort -> IO ())
glIndexsFunPtr = unsafePerformIO (getProcAddress "glIndexs")

{-# NOINLINE glIndexsFunPtr #-}

glIndexsv :: MonadIO m => Ptr GLshort -> m ()
glIndexsv = ffiPtrshortIOV glIndexsvFunPtr

glIndexsvFunPtr :: FunPtr (Ptr GLshort -> IO ())
glIndexsvFunPtr = unsafePerformIO (getProcAddress "glIndexsv")

{-# NOINLINE glIndexsvFunPtr #-}

glIndexub :: MonadIO m => GLubyte -> m ()
glIndexub = ffiubyteIOV glIndexubFunPtr

glIndexubFunPtr :: FunPtr (GLubyte -> IO ())
glIndexubFunPtr = unsafePerformIO (getProcAddress "glIndexub")

{-# NOINLINE glIndexubFunPtr #-}

glIndexubv :: MonadIO m => Ptr GLubyte -> m ()
glIndexubv = ffiPtrubyteIOV glIndexubvFunPtr

glIndexubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glIndexubvFunPtr = unsafePerformIO (getProcAddress "glIndexubv")

{-# NOINLINE glIndexubvFunPtr #-}

glInitNames :: MonadIO m => m ()
glInitNames = ffiIOV glInitNamesFunPtr

glInitNamesFunPtr :: FunPtr (IO ())
glInitNamesFunPtr = unsafePerformIO (getProcAddress "glInitNames")

{-# NOINLINE glInitNamesFunPtr #-}

glInterleavedArrays :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glInterleavedArrays = ffienumsizeiPtrVIOV glInterleavedArraysFunPtr

glInterleavedArraysFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glInterleavedArraysFunPtr = unsafePerformIO (getProcAddress "glInterleavedArrays")

{-# NOINLINE glInterleavedArraysFunPtr #-}

glIsList :: MonadIO m => GLuint -> m GLboolean
glIsList = ffiuintIOboolean glIsListFunPtr

glIsListFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsListFunPtr = unsafePerformIO (getProcAddress "glIsList")

{-# NOINLINE glIsListFunPtr #-}

glLightModelf :: MonadIO m => GLenum -> GLfloat -> m ()
glLightModelf = ffienumfloatIOV glLightModelfFunPtr

glLightModelfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glLightModelfFunPtr = unsafePerformIO (getProcAddress "glLightModelf")

{-# NOINLINE glLightModelfFunPtr #-}

glLightModelfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glLightModelfv = ffienumPtrfloatIOV glLightModelfvFunPtr

glLightModelfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glLightModelfvFunPtr = unsafePerformIO (getProcAddress "glLightModelfv")

{-# NOINLINE glLightModelfvFunPtr #-}

glLightModeli :: MonadIO m => GLenum -> GLint -> m ()
glLightModeli = ffienumintIOV glLightModeliFunPtr

glLightModeliFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glLightModeliFunPtr = unsafePerformIO (getProcAddress "glLightModeli")

{-# NOINLINE glLightModeliFunPtr #-}

glLightModeliv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glLightModeliv = ffienumPtrintIOV glLightModelivFunPtr

glLightModelivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glLightModelivFunPtr = unsafePerformIO (getProcAddress "glLightModeliv")

{-# NOINLINE glLightModelivFunPtr #-}

glLightf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glLightf = ffienumenumfloatIOV glLightfFunPtr

glLightfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glLightfFunPtr = unsafePerformIO (getProcAddress "glLightf")

{-# NOINLINE glLightfFunPtr #-}

glLightfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glLightfv = ffienumenumPtrfloatIOV glLightfvFunPtr

glLightfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glLightfvFunPtr = unsafePerformIO (getProcAddress "glLightfv")

{-# NOINLINE glLightfvFunPtr #-}

glLighti :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glLighti = ffienumenumintIOV glLightiFunPtr

glLightiFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glLightiFunPtr = unsafePerformIO (getProcAddress "glLighti")

{-# NOINLINE glLightiFunPtr #-}

glLightiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glLightiv = ffienumenumPtrintIOV glLightivFunPtr

glLightivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glLightivFunPtr = unsafePerformIO (getProcAddress "glLightiv")

{-# NOINLINE glLightivFunPtr #-}

glLineStipple :: MonadIO m => GLint -> GLushort -> m ()
glLineStipple = ffiintushortIOV glLineStippleFunPtr

glLineStippleFunPtr :: FunPtr (GLint -> GLushort -> IO ())
glLineStippleFunPtr = unsafePerformIO (getProcAddress "glLineStipple")

{-# NOINLINE glLineStippleFunPtr #-}

glListBase :: MonadIO m => GLuint -> m ()
glListBase = ffiuintIOV glListBaseFunPtr

glListBaseFunPtr :: FunPtr (GLuint -> IO ())
glListBaseFunPtr = unsafePerformIO (getProcAddress "glListBase")

{-# NOINLINE glListBaseFunPtr #-}

glLoadIdentity :: MonadIO m => m ()
glLoadIdentity = ffiIOV glLoadIdentityFunPtr

glLoadIdentityFunPtr :: FunPtr (IO ())
glLoadIdentityFunPtr = unsafePerformIO (getProcAddress "glLoadIdentity")

{-# NOINLINE glLoadIdentityFunPtr #-}

glLoadMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glLoadMatrixd = ffiPtrdoubleIOV glLoadMatrixdFunPtr

glLoadMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadMatrixdFunPtr = unsafePerformIO (getProcAddress "glLoadMatrixd")

{-# NOINLINE glLoadMatrixdFunPtr #-}

glLoadMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glLoadMatrixf = ffiPtrfloatIOV glLoadMatrixfFunPtr

glLoadMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadMatrixfFunPtr = unsafePerformIO (getProcAddress "glLoadMatrixf")

{-# NOINLINE glLoadMatrixfFunPtr #-}

glLoadName :: MonadIO m => GLuint -> m ()
glLoadName = ffiuintIOV glLoadNameFunPtr

glLoadNameFunPtr :: FunPtr (GLuint -> IO ())
glLoadNameFunPtr = unsafePerformIO (getProcAddress "glLoadName")

{-# NOINLINE glLoadNameFunPtr #-}

glLoadTransposeMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glLoadTransposeMatrixd = ffiPtrdoubleIOV glLoadTransposeMatrixdFunPtr

glLoadTransposeMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadTransposeMatrixdFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixd")

{-# NOINLINE glLoadTransposeMatrixdFunPtr #-}

glLoadTransposeMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glLoadTransposeMatrixf = ffiPtrfloatIOV glLoadTransposeMatrixfFunPtr

glLoadTransposeMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadTransposeMatrixfFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixf")

{-# NOINLINE glLoadTransposeMatrixfFunPtr #-}

glMap1d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
glMap1d = ffienumdoubledoubleintintPtrdoubleIOV glMap1dFunPtr

glMap1dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
glMap1dFunPtr = unsafePerformIO (getProcAddress "glMap1d")

{-# NOINLINE glMap1dFunPtr #-}

glMap1f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
glMap1f = ffienumfloatfloatintintPtrfloatIOV glMap1fFunPtr

glMap1fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
glMap1fFunPtr = unsafePerformIO (getProcAddress "glMap1f")

{-# NOINLINE glMap1fFunPtr #-}

glMap2d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
glMap2d = ffienumdoubledoubleintintdoubledoubleintintPtrdoubleIOV glMap2dFunPtr

glMap2dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
glMap2dFunPtr = unsafePerformIO (getProcAddress "glMap2d")

{-# NOINLINE glMap2dFunPtr #-}

glMap2f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
glMap2f = ffienumfloatfloatintintfloatfloatintintPtrfloatIOV glMap2fFunPtr

glMap2fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
glMap2fFunPtr = unsafePerformIO (getProcAddress "glMap2f")

{-# NOINLINE glMap2fFunPtr #-}

glMapGrid1d :: MonadIO m => GLint -> GLdouble -> GLdouble -> m ()
glMapGrid1d = ffiintdoubledoubleIOV glMapGrid1dFunPtr

glMapGrid1dFunPtr :: FunPtr (GLint -> GLdouble -> GLdouble -> IO ())
glMapGrid1dFunPtr = unsafePerformIO (getProcAddress "glMapGrid1d")

{-# NOINLINE glMapGrid1dFunPtr #-}

glMapGrid1f :: MonadIO m => GLint -> GLfloat -> GLfloat -> m ()
glMapGrid1f = ffiintfloatfloatIOV glMapGrid1fFunPtr

glMapGrid1fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ())
glMapGrid1fFunPtr = unsafePerformIO (getProcAddress "glMapGrid1f")

{-# NOINLINE glMapGrid1fFunPtr #-}

glMapGrid2d :: MonadIO m => GLint -> GLdouble -> GLdouble -> GLint -> GLdouble -> GLdouble -> m ()
glMapGrid2d = ffiintdoubledoubleintdoubledoubleIOV glMapGrid2dFunPtr

glMapGrid2dFunPtr :: FunPtr (GLint -> GLdouble -> GLdouble -> GLint -> GLdouble -> GLdouble -> IO ())
glMapGrid2dFunPtr = unsafePerformIO (getProcAddress "glMapGrid2d")

{-# NOINLINE glMapGrid2dFunPtr #-}

glMapGrid2f :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLint -> GLfloat -> GLfloat -> m ()
glMapGrid2f = ffiintfloatfloatintfloatfloatIOV glMapGrid2fFunPtr

glMapGrid2fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLint -> GLfloat -> GLfloat -> IO ())
glMapGrid2fFunPtr = unsafePerformIO (getProcAddress "glMapGrid2f")

{-# NOINLINE glMapGrid2fFunPtr #-}

glMaterialf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glMaterialf = ffienumenumfloatIOV glMaterialfFunPtr

glMaterialfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glMaterialfFunPtr = unsafePerformIO (getProcAddress "glMaterialf")

{-# NOINLINE glMaterialfFunPtr #-}

glMaterialfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glMaterialfv = ffienumenumPtrfloatIOV glMaterialfvFunPtr

glMaterialfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glMaterialfvFunPtr = unsafePerformIO (getProcAddress "glMaterialfv")

{-# NOINLINE glMaterialfvFunPtr #-}

glMateriali :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glMateriali = ffienumenumintIOV glMaterialiFunPtr

glMaterialiFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glMaterialiFunPtr = unsafePerformIO (getProcAddress "glMateriali")

{-# NOINLINE glMaterialiFunPtr #-}

glMaterialiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glMaterialiv = ffienumenumPtrintIOV glMaterialivFunPtr

glMaterialivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glMaterialivFunPtr = unsafePerformIO (getProcAddress "glMaterialiv")

{-# NOINLINE glMaterialivFunPtr #-}

glMatrixMode :: MonadIO m => GLenum -> m ()
glMatrixMode = ffienumIOV glMatrixModeFunPtr

glMatrixModeFunPtr :: FunPtr (GLenum -> IO ())
glMatrixModeFunPtr = unsafePerformIO (getProcAddress "glMatrixMode")

{-# NOINLINE glMatrixModeFunPtr #-}

glMultMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glMultMatrixd = ffiPtrdoubleIOV glMultMatrixdFunPtr

glMultMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultMatrixdFunPtr = unsafePerformIO (getProcAddress "glMultMatrixd")

{-# NOINLINE glMultMatrixdFunPtr #-}

glMultMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glMultMatrixf = ffiPtrfloatIOV glMultMatrixfFunPtr

glMultMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultMatrixfFunPtr = unsafePerformIO (getProcAddress "glMultMatrixf")

{-# NOINLINE glMultMatrixfFunPtr #-}

glMultTransposeMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glMultTransposeMatrixd = ffiPtrdoubleIOV glMultTransposeMatrixdFunPtr

glMultTransposeMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultTransposeMatrixdFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixd")

{-# NOINLINE glMultTransposeMatrixdFunPtr #-}

glMultTransposeMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glMultTransposeMatrixf = ffiPtrfloatIOV glMultTransposeMatrixfFunPtr

glMultTransposeMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultTransposeMatrixfFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixf")

{-# NOINLINE glMultTransposeMatrixfFunPtr #-}

glMultiTexCoord1d :: MonadIO m => GLenum -> GLdouble -> m ()
glMultiTexCoord1d = ffienumdoubleIOV glMultiTexCoord1dFunPtr

glMultiTexCoord1dFunPtr :: FunPtr (GLenum -> GLdouble -> IO ())
glMultiTexCoord1dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1d")

{-# NOINLINE glMultiTexCoord1dFunPtr #-}

glMultiTexCoord1dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord1dv = ffienumPtrdoubleIOV glMultiTexCoord1dvFunPtr

glMultiTexCoord1dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord1dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1dv")

{-# NOINLINE glMultiTexCoord1dvFunPtr #-}

glMultiTexCoord1f :: MonadIO m => GLenum -> GLfloat -> m ()
glMultiTexCoord1f = ffienumfloatIOV glMultiTexCoord1fFunPtr

glMultiTexCoord1fFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glMultiTexCoord1fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1f")

{-# NOINLINE glMultiTexCoord1fFunPtr #-}

glMultiTexCoord1fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord1fv = ffienumPtrfloatIOV glMultiTexCoord1fvFunPtr

glMultiTexCoord1fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord1fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1fv")

{-# NOINLINE glMultiTexCoord1fvFunPtr #-}

glMultiTexCoord1i :: MonadIO m => GLenum -> GLint -> m ()
glMultiTexCoord1i = ffienumintIOV glMultiTexCoord1iFunPtr

glMultiTexCoord1iFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glMultiTexCoord1iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1i")

{-# NOINLINE glMultiTexCoord1iFunPtr #-}

glMultiTexCoord1iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord1iv = ffienumPtrintIOV glMultiTexCoord1ivFunPtr

glMultiTexCoord1ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord1ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1iv")

{-# NOINLINE glMultiTexCoord1ivFunPtr #-}

glMultiTexCoord1s :: MonadIO m => GLenum -> GLshort -> m ()
glMultiTexCoord1s = ffienumshortIOV glMultiTexCoord1sFunPtr

glMultiTexCoord1sFunPtr :: FunPtr (GLenum -> GLshort -> IO ())
glMultiTexCoord1sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1s")

{-# NOINLINE glMultiTexCoord1sFunPtr #-}

glMultiTexCoord1sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord1sv = ffienumPtrshortIOV glMultiTexCoord1svFunPtr

glMultiTexCoord1svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord1svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1sv")

{-# NOINLINE glMultiTexCoord1svFunPtr #-}

glMultiTexCoord2d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> m ()
glMultiTexCoord2d = ffienumdoubledoubleIOV glMultiTexCoord2dFunPtr

glMultiTexCoord2dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord2dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2d")

{-# NOINLINE glMultiTexCoord2dFunPtr #-}

glMultiTexCoord2dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord2dv = ffienumPtrdoubleIOV glMultiTexCoord2dvFunPtr

glMultiTexCoord2dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord2dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2dv")

{-# NOINLINE glMultiTexCoord2dvFunPtr #-}

glMultiTexCoord2f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> m ()
glMultiTexCoord2f = ffienumfloatfloatIOV glMultiTexCoord2fFunPtr

glMultiTexCoord2fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord2fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2f")

{-# NOINLINE glMultiTexCoord2fFunPtr #-}

glMultiTexCoord2fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord2fv = ffienumPtrfloatIOV glMultiTexCoord2fvFunPtr

glMultiTexCoord2fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord2fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2fv")

{-# NOINLINE glMultiTexCoord2fvFunPtr #-}

glMultiTexCoord2i :: MonadIO m => GLenum -> GLint -> GLint -> m ()
glMultiTexCoord2i = ffienumintintIOV glMultiTexCoord2iFunPtr

glMultiTexCoord2iFunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
glMultiTexCoord2iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2i")

{-# NOINLINE glMultiTexCoord2iFunPtr #-}

glMultiTexCoord2iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord2iv = ffienumPtrintIOV glMultiTexCoord2ivFunPtr

glMultiTexCoord2ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord2ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2iv")

{-# NOINLINE glMultiTexCoord2ivFunPtr #-}

glMultiTexCoord2s :: MonadIO m => GLenum -> GLshort -> GLshort -> m ()
glMultiTexCoord2s = ffienumshortshortIOV glMultiTexCoord2sFunPtr

glMultiTexCoord2sFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> IO ())
glMultiTexCoord2sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2s")

{-# NOINLINE glMultiTexCoord2sFunPtr #-}

glMultiTexCoord2sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord2sv = ffienumPtrshortIOV glMultiTexCoord2svFunPtr

glMultiTexCoord2svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord2svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2sv")

{-# NOINLINE glMultiTexCoord2svFunPtr #-}

glMultiTexCoord3d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
glMultiTexCoord3d = ffienumdoubledoubledoubleIOV glMultiTexCoord3dFunPtr

glMultiTexCoord3dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord3dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3d")

{-# NOINLINE glMultiTexCoord3dFunPtr #-}

glMultiTexCoord3dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord3dv = ffienumPtrdoubleIOV glMultiTexCoord3dvFunPtr

glMultiTexCoord3dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord3dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3dv")

{-# NOINLINE glMultiTexCoord3dvFunPtr #-}

glMultiTexCoord3f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
glMultiTexCoord3f = ffienumfloatfloatfloatIOV glMultiTexCoord3fFunPtr

glMultiTexCoord3fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord3fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3f")

{-# NOINLINE glMultiTexCoord3fFunPtr #-}

glMultiTexCoord3fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord3fv = ffienumPtrfloatIOV glMultiTexCoord3fvFunPtr

glMultiTexCoord3fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord3fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3fv")

{-# NOINLINE glMultiTexCoord3fvFunPtr #-}

glMultiTexCoord3i :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> m ()
glMultiTexCoord3i = ffienumintintintIOV glMultiTexCoord3iFunPtr

glMultiTexCoord3iFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ())
glMultiTexCoord3iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3i")

{-# NOINLINE glMultiTexCoord3iFunPtr #-}

glMultiTexCoord3iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord3iv = ffienumPtrintIOV glMultiTexCoord3ivFunPtr

glMultiTexCoord3ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord3ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3iv")

{-# NOINLINE glMultiTexCoord3ivFunPtr #-}

glMultiTexCoord3s :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> m ()
glMultiTexCoord3s = ffienumshortshortshortIOV glMultiTexCoord3sFunPtr

glMultiTexCoord3sFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ())
glMultiTexCoord3sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3s")

{-# NOINLINE glMultiTexCoord3sFunPtr #-}

glMultiTexCoord3sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord3sv = ffienumPtrshortIOV glMultiTexCoord3svFunPtr

glMultiTexCoord3svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord3svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3sv")

{-# NOINLINE glMultiTexCoord3svFunPtr #-}

glMultiTexCoord4d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glMultiTexCoord4d = ffienumdoubledoubledoubledoubleIOV glMultiTexCoord4dFunPtr

glMultiTexCoord4dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord4dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4d")

{-# NOINLINE glMultiTexCoord4dFunPtr #-}

glMultiTexCoord4dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord4dv = ffienumPtrdoubleIOV glMultiTexCoord4dvFunPtr

glMultiTexCoord4dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord4dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4dv")

{-# NOINLINE glMultiTexCoord4dvFunPtr #-}

glMultiTexCoord4f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glMultiTexCoord4f = ffienumfloatfloatfloatfloatIOV glMultiTexCoord4fFunPtr

glMultiTexCoord4fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord4fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4f")

{-# NOINLINE glMultiTexCoord4fFunPtr #-}

glMultiTexCoord4fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord4fv = ffienumPtrfloatIOV glMultiTexCoord4fvFunPtr

glMultiTexCoord4fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord4fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4fv")

{-# NOINLINE glMultiTexCoord4fvFunPtr #-}

glMultiTexCoord4i :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> m ()
glMultiTexCoord4i = ffienumintintintintIOV glMultiTexCoord4iFunPtr

glMultiTexCoord4iFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ())
glMultiTexCoord4iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4i")

{-# NOINLINE glMultiTexCoord4iFunPtr #-}

glMultiTexCoord4iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord4iv = ffienumPtrintIOV glMultiTexCoord4ivFunPtr

glMultiTexCoord4ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord4ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4iv")

{-# NOINLINE glMultiTexCoord4ivFunPtr #-}

glMultiTexCoord4s :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
glMultiTexCoord4s = ffienumshortshortshortshortIOV glMultiTexCoord4sFunPtr

glMultiTexCoord4sFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glMultiTexCoord4sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4s")

{-# NOINLINE glMultiTexCoord4sFunPtr #-}

glMultiTexCoord4sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord4sv = ffienumPtrshortIOV glMultiTexCoord4svFunPtr

glMultiTexCoord4svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord4svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4sv")

{-# NOINLINE glMultiTexCoord4svFunPtr #-}

glNewList :: MonadIO m => GLuint -> GLenum -> m ()
glNewList = ffiuintenumIOV glNewListFunPtr

glNewListFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glNewListFunPtr = unsafePerformIO (getProcAddress "glNewList")

{-# NOINLINE glNewListFunPtr #-}

glNormal3b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glNormal3b = ffibytebytebyteIOV glNormal3bFunPtr

glNormal3bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glNormal3bFunPtr = unsafePerformIO (getProcAddress "glNormal3b")

{-# NOINLINE glNormal3bFunPtr #-}

glNormal3bv :: MonadIO m => Ptr GLbyte -> m ()
glNormal3bv = ffiPtrbyteIOV glNormal3bvFunPtr

glNormal3bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glNormal3bvFunPtr = unsafePerformIO (getProcAddress "glNormal3bv")

{-# NOINLINE glNormal3bvFunPtr #-}

glNormal3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glNormal3d = ffidoubledoubledoubleIOV glNormal3dFunPtr

glNormal3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glNormal3dFunPtr = unsafePerformIO (getProcAddress "glNormal3d")

{-# NOINLINE glNormal3dFunPtr #-}

glNormal3dv :: MonadIO m => Ptr GLdouble -> m ()
glNormal3dv = ffiPtrdoubleIOV glNormal3dvFunPtr

glNormal3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glNormal3dvFunPtr = unsafePerformIO (getProcAddress "glNormal3dv")

{-# NOINLINE glNormal3dvFunPtr #-}

glNormal3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glNormal3f = ffifloatfloatfloatIOV glNormal3fFunPtr

glNormal3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glNormal3fFunPtr = unsafePerformIO (getProcAddress "glNormal3f")

{-# NOINLINE glNormal3fFunPtr #-}

glNormal3fv :: MonadIO m => Ptr GLfloat -> m ()
glNormal3fv = ffiPtrfloatIOV glNormal3fvFunPtr

glNormal3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glNormal3fvFunPtr = unsafePerformIO (getProcAddress "glNormal3fv")

{-# NOINLINE glNormal3fvFunPtr #-}

glNormal3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glNormal3i = ffiintintintIOV glNormal3iFunPtr

glNormal3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glNormal3iFunPtr = unsafePerformIO (getProcAddress "glNormal3i")

{-# NOINLINE glNormal3iFunPtr #-}

glNormal3iv :: MonadIO m => Ptr GLint -> m ()
glNormal3iv = ffiPtrintIOV glNormal3ivFunPtr

glNormal3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glNormal3ivFunPtr = unsafePerformIO (getProcAddress "glNormal3iv")

{-# NOINLINE glNormal3ivFunPtr #-}

glNormal3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glNormal3s = ffishortshortshortIOV glNormal3sFunPtr

glNormal3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glNormal3sFunPtr = unsafePerformIO (getProcAddress "glNormal3s")

{-# NOINLINE glNormal3sFunPtr #-}

glNormal3sv :: MonadIO m => Ptr GLshort -> m ()
glNormal3sv = ffiPtrshortIOV glNormal3svFunPtr

glNormal3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glNormal3svFunPtr = unsafePerformIO (getProcAddress "glNormal3sv")

{-# NOINLINE glNormal3svFunPtr #-}

glNormalPointer :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glNormalPointer = ffienumsizeiPtrVIOV glNormalPointerFunPtr

glNormalPointerFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glNormalPointerFunPtr = unsafePerformIO (getProcAddress "glNormalPointer")

{-# NOINLINE glNormalPointerFunPtr #-}

glOrtho :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glOrtho = ffidoubledoubledoubledoubledoubledoubleIOV glOrthoFunPtr

glOrthoFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glOrthoFunPtr = unsafePerformIO (getProcAddress "glOrtho")

{-# NOINLINE glOrthoFunPtr #-}

glPassThrough :: MonadIO m => GLfloat -> m ()
glPassThrough = ffifloatIOV glPassThroughFunPtr

glPassThroughFunPtr :: FunPtr (GLfloat -> IO ())
glPassThroughFunPtr = unsafePerformIO (getProcAddress "glPassThrough")

{-# NOINLINE glPassThroughFunPtr #-}

glPixelMapfv :: MonadIO m => GLenum -> GLsizei -> Ptr GLfloat -> m ()
glPixelMapfv = ffienumsizeiPtrfloatIOV glPixelMapfvFunPtr

glPixelMapfvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ())
glPixelMapfvFunPtr = unsafePerformIO (getProcAddress "glPixelMapfv")

{-# NOINLINE glPixelMapfvFunPtr #-}

glPixelMapuiv :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glPixelMapuiv = ffienumsizeiPtruintIOV glPixelMapuivFunPtr

glPixelMapuivFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glPixelMapuivFunPtr = unsafePerformIO (getProcAddress "glPixelMapuiv")

{-# NOINLINE glPixelMapuivFunPtr #-}

glPixelMapusv :: MonadIO m => GLenum -> GLsizei -> Ptr GLushort -> m ()
glPixelMapusv = ffienumsizeiPtrushortIOV glPixelMapusvFunPtr

glPixelMapusvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLushort -> IO ())
glPixelMapusvFunPtr = unsafePerformIO (getProcAddress "glPixelMapusv")

{-# NOINLINE glPixelMapusvFunPtr #-}

glPixelTransferf :: MonadIO m => GLenum -> GLfloat -> m ()
glPixelTransferf = ffienumfloatIOV glPixelTransferfFunPtr

glPixelTransferfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glPixelTransferfFunPtr = unsafePerformIO (getProcAddress "glPixelTransferf")

{-# NOINLINE glPixelTransferfFunPtr #-}

glPixelTransferi :: MonadIO m => GLenum -> GLint -> m ()
glPixelTransferi = ffienumintIOV glPixelTransferiFunPtr

glPixelTransferiFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPixelTransferiFunPtr = unsafePerformIO (getProcAddress "glPixelTransferi")

{-# NOINLINE glPixelTransferiFunPtr #-}

glPixelZoom :: MonadIO m => GLfloat -> GLfloat -> m ()
glPixelZoom = ffifloatfloatIOV glPixelZoomFunPtr

glPixelZoomFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glPixelZoomFunPtr = unsafePerformIO (getProcAddress "glPixelZoom")

{-# NOINLINE glPixelZoomFunPtr #-}

glPolygonStipple :: MonadIO m => Ptr GLubyte -> m ()
glPolygonStipple = ffiPtrubyteIOV glPolygonStippleFunPtr

glPolygonStippleFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glPolygonStippleFunPtr = unsafePerformIO (getProcAddress "glPolygonStipple")

{-# NOINLINE glPolygonStippleFunPtr #-}

glPopAttrib :: MonadIO m => m ()
glPopAttrib = ffiIOV glPopAttribFunPtr

glPopAttribFunPtr :: FunPtr (IO ())
glPopAttribFunPtr = unsafePerformIO (getProcAddress "glPopAttrib")

{-# NOINLINE glPopAttribFunPtr #-}

glPopClientAttrib :: MonadIO m => m ()
glPopClientAttrib = ffiIOV glPopClientAttribFunPtr

glPopClientAttribFunPtr :: FunPtr (IO ())
glPopClientAttribFunPtr = unsafePerformIO (getProcAddress "glPopClientAttrib")

{-# NOINLINE glPopClientAttribFunPtr #-}

glPopMatrix :: MonadIO m => m ()
glPopMatrix = ffiIOV glPopMatrixFunPtr

glPopMatrixFunPtr :: FunPtr (IO ())
glPopMatrixFunPtr = unsafePerformIO (getProcAddress "glPopMatrix")

{-# NOINLINE glPopMatrixFunPtr #-}

glPopName :: MonadIO m => m ()
glPopName = ffiIOV glPopNameFunPtr

glPopNameFunPtr :: FunPtr (IO ())
glPopNameFunPtr = unsafePerformIO (getProcAddress "glPopName")

{-# NOINLINE glPopNameFunPtr #-}

glPrioritizeTextures :: MonadIO m => GLsizei -> Ptr GLuint -> Ptr GLfloat -> m ()
glPrioritizeTextures = ffisizeiPtruintPtrfloatIOV glPrioritizeTexturesFunPtr

glPrioritizeTexturesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> Ptr GLfloat -> IO ())
glPrioritizeTexturesFunPtr = unsafePerformIO (getProcAddress "glPrioritizeTextures")

{-# NOINLINE glPrioritizeTexturesFunPtr #-}

glPushAttrib :: MonadIO m => GLbitfield -> m ()
glPushAttrib = ffibitfieldIOV glPushAttribFunPtr

glPushAttribFunPtr :: FunPtr (GLbitfield -> IO ())
glPushAttribFunPtr = unsafePerformIO (getProcAddress "glPushAttrib")

{-# NOINLINE glPushAttribFunPtr #-}

glPushClientAttrib :: MonadIO m => GLbitfield -> m ()
glPushClientAttrib = ffibitfieldIOV glPushClientAttribFunPtr

glPushClientAttribFunPtr :: FunPtr (GLbitfield -> IO ())
glPushClientAttribFunPtr = unsafePerformIO (getProcAddress "glPushClientAttrib")

{-# NOINLINE glPushClientAttribFunPtr #-}

glPushMatrix :: MonadIO m => m ()
glPushMatrix = ffiIOV glPushMatrixFunPtr

glPushMatrixFunPtr :: FunPtr (IO ())
glPushMatrixFunPtr = unsafePerformIO (getProcAddress "glPushMatrix")

{-# NOINLINE glPushMatrixFunPtr #-}

glPushName :: MonadIO m => GLuint -> m ()
glPushName = ffiuintIOV glPushNameFunPtr

glPushNameFunPtr :: FunPtr (GLuint -> IO ())
glPushNameFunPtr = unsafePerformIO (getProcAddress "glPushName")

{-# NOINLINE glPushNameFunPtr #-}

glRasterPos2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glRasterPos2d = ffidoubledoubleIOV glRasterPos2dFunPtr

glRasterPos2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glRasterPos2dFunPtr = unsafePerformIO (getProcAddress "glRasterPos2d")

{-# NOINLINE glRasterPos2dFunPtr #-}

glRasterPos2dv :: MonadIO m => Ptr GLdouble -> m ()
glRasterPos2dv = ffiPtrdoubleIOV glRasterPos2dvFunPtr

glRasterPos2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glRasterPos2dvFunPtr = unsafePerformIO (getProcAddress "glRasterPos2dv")

{-# NOINLINE glRasterPos2dvFunPtr #-}

glRasterPos2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glRasterPos2f = ffifloatfloatIOV glRasterPos2fFunPtr

glRasterPos2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glRasterPos2fFunPtr = unsafePerformIO (getProcAddress "glRasterPos2f")

{-# NOINLINE glRasterPos2fFunPtr #-}

glRasterPos2fv :: MonadIO m => Ptr GLfloat -> m ()
glRasterPos2fv = ffiPtrfloatIOV glRasterPos2fvFunPtr

glRasterPos2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glRasterPos2fvFunPtr = unsafePerformIO (getProcAddress "glRasterPos2fv")

{-# NOINLINE glRasterPos2fvFunPtr #-}

glRasterPos2i :: MonadIO m => GLint -> GLint -> m ()
glRasterPos2i = ffiintintIOV glRasterPos2iFunPtr

glRasterPos2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glRasterPos2iFunPtr = unsafePerformIO (getProcAddress "glRasterPos2i")

{-# NOINLINE glRasterPos2iFunPtr #-}

glRasterPos2iv :: MonadIO m => Ptr GLint -> m ()
glRasterPos2iv = ffiPtrintIOV glRasterPos2ivFunPtr

glRasterPos2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glRasterPos2ivFunPtr = unsafePerformIO (getProcAddress "glRasterPos2iv")

{-# NOINLINE glRasterPos2ivFunPtr #-}

glRasterPos2s :: MonadIO m => GLshort -> GLshort -> m ()
glRasterPos2s = ffishortshortIOV glRasterPos2sFunPtr

glRasterPos2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glRasterPos2sFunPtr = unsafePerformIO (getProcAddress "glRasterPos2s")

{-# NOINLINE glRasterPos2sFunPtr #-}

glRasterPos2sv :: MonadIO m => Ptr GLshort -> m ()
glRasterPos2sv = ffiPtrshortIOV glRasterPos2svFunPtr

glRasterPos2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glRasterPos2svFunPtr = unsafePerformIO (getProcAddress "glRasterPos2sv")

{-# NOINLINE glRasterPos2svFunPtr #-}

glRasterPos3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glRasterPos3d = ffidoubledoubledoubleIOV glRasterPos3dFunPtr

glRasterPos3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glRasterPos3dFunPtr = unsafePerformIO (getProcAddress "glRasterPos3d")

{-# NOINLINE glRasterPos3dFunPtr #-}

glRasterPos3dv :: MonadIO m => Ptr GLdouble -> m ()
glRasterPos3dv = ffiPtrdoubleIOV glRasterPos3dvFunPtr

glRasterPos3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glRasterPos3dvFunPtr = unsafePerformIO (getProcAddress "glRasterPos3dv")

{-# NOINLINE glRasterPos3dvFunPtr #-}

glRasterPos3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glRasterPos3f = ffifloatfloatfloatIOV glRasterPos3fFunPtr

glRasterPos3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glRasterPos3fFunPtr = unsafePerformIO (getProcAddress "glRasterPos3f")

{-# NOINLINE glRasterPos3fFunPtr #-}

glRasterPos3fv :: MonadIO m => Ptr GLfloat -> m ()
glRasterPos3fv = ffiPtrfloatIOV glRasterPos3fvFunPtr

glRasterPos3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glRasterPos3fvFunPtr = unsafePerformIO (getProcAddress "glRasterPos3fv")

{-# NOINLINE glRasterPos3fvFunPtr #-}

glRasterPos3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glRasterPos3i = ffiintintintIOV glRasterPos3iFunPtr

glRasterPos3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glRasterPos3iFunPtr = unsafePerformIO (getProcAddress "glRasterPos3i")

{-# NOINLINE glRasterPos3iFunPtr #-}

glRasterPos3iv :: MonadIO m => Ptr GLint -> m ()
glRasterPos3iv = ffiPtrintIOV glRasterPos3ivFunPtr

glRasterPos3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glRasterPos3ivFunPtr = unsafePerformIO (getProcAddress "glRasterPos3iv")

{-# NOINLINE glRasterPos3ivFunPtr #-}

glRasterPos3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glRasterPos3s = ffishortshortshortIOV glRasterPos3sFunPtr

glRasterPos3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glRasterPos3sFunPtr = unsafePerformIO (getProcAddress "glRasterPos3s")

{-# NOINLINE glRasterPos3sFunPtr #-}

glRasterPos3sv :: MonadIO m => Ptr GLshort -> m ()
glRasterPos3sv = ffiPtrshortIOV glRasterPos3svFunPtr

glRasterPos3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glRasterPos3svFunPtr = unsafePerformIO (getProcAddress "glRasterPos3sv")

{-# NOINLINE glRasterPos3svFunPtr #-}

glRasterPos4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glRasterPos4d = ffidoubledoubledoubledoubleIOV glRasterPos4dFunPtr

glRasterPos4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glRasterPos4dFunPtr = unsafePerformIO (getProcAddress "glRasterPos4d")

{-# NOINLINE glRasterPos4dFunPtr #-}

glRasterPos4dv :: MonadIO m => Ptr GLdouble -> m ()
glRasterPos4dv = ffiPtrdoubleIOV glRasterPos4dvFunPtr

glRasterPos4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glRasterPos4dvFunPtr = unsafePerformIO (getProcAddress "glRasterPos4dv")

{-# NOINLINE glRasterPos4dvFunPtr #-}

glRasterPos4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glRasterPos4f = ffifloatfloatfloatfloatIOV glRasterPos4fFunPtr

glRasterPos4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glRasterPos4fFunPtr = unsafePerformIO (getProcAddress "glRasterPos4f")

{-# NOINLINE glRasterPos4fFunPtr #-}

glRasterPos4fv :: MonadIO m => Ptr GLfloat -> m ()
glRasterPos4fv = ffiPtrfloatIOV glRasterPos4fvFunPtr

glRasterPos4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glRasterPos4fvFunPtr = unsafePerformIO (getProcAddress "glRasterPos4fv")

{-# NOINLINE glRasterPos4fvFunPtr #-}

glRasterPos4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glRasterPos4i = ffiintintintintIOV glRasterPos4iFunPtr

glRasterPos4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glRasterPos4iFunPtr = unsafePerformIO (getProcAddress "glRasterPos4i")

{-# NOINLINE glRasterPos4iFunPtr #-}

glRasterPos4iv :: MonadIO m => Ptr GLint -> m ()
glRasterPos4iv = ffiPtrintIOV glRasterPos4ivFunPtr

glRasterPos4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glRasterPos4ivFunPtr = unsafePerformIO (getProcAddress "glRasterPos4iv")

{-# NOINLINE glRasterPos4ivFunPtr #-}

glRasterPos4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glRasterPos4s = ffishortshortshortshortIOV glRasterPos4sFunPtr

glRasterPos4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glRasterPos4sFunPtr = unsafePerformIO (getProcAddress "glRasterPos4s")

{-# NOINLINE glRasterPos4sFunPtr #-}

glRasterPos4sv :: MonadIO m => Ptr GLshort -> m ()
glRasterPos4sv = ffiPtrshortIOV glRasterPos4svFunPtr

glRasterPos4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glRasterPos4svFunPtr = unsafePerformIO (getProcAddress "glRasterPos4sv")

{-# NOINLINE glRasterPos4svFunPtr #-}

glRectd :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glRectd = ffidoubledoubledoubledoubleIOV glRectdFunPtr

glRectdFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glRectdFunPtr = unsafePerformIO (getProcAddress "glRectd")

{-# NOINLINE glRectdFunPtr #-}

glRectdv :: MonadIO m => Ptr GLdouble -> Ptr GLdouble -> m ()
glRectdv = ffiPtrdoublePtrdoubleIOV glRectdvFunPtr

glRectdvFunPtr :: FunPtr (Ptr GLdouble -> Ptr GLdouble -> IO ())
glRectdvFunPtr = unsafePerformIO (getProcAddress "glRectdv")

{-# NOINLINE glRectdvFunPtr #-}

glRectf :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glRectf = ffifloatfloatfloatfloatIOV glRectfFunPtr

glRectfFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glRectfFunPtr = unsafePerformIO (getProcAddress "glRectf")

{-# NOINLINE glRectfFunPtr #-}

glRectfv :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> m ()
glRectfv = ffiPtrfloatPtrfloatIOV glRectfvFunPtr

glRectfvFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ())
glRectfvFunPtr = unsafePerformIO (getProcAddress "glRectfv")

{-# NOINLINE glRectfvFunPtr #-}

glRecti :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glRecti = ffiintintintintIOV glRectiFunPtr

glRectiFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glRectiFunPtr = unsafePerformIO (getProcAddress "glRecti")

{-# NOINLINE glRectiFunPtr #-}

glRectiv :: MonadIO m => Ptr GLint -> Ptr GLint -> m ()
glRectiv = ffiPtrintPtrintIOV glRectivFunPtr

glRectivFunPtr :: FunPtr (Ptr GLint -> Ptr GLint -> IO ())
glRectivFunPtr = unsafePerformIO (getProcAddress "glRectiv")

{-# NOINLINE glRectivFunPtr #-}

glRects :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glRects = ffishortshortshortshortIOV glRectsFunPtr

glRectsFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glRectsFunPtr = unsafePerformIO (getProcAddress "glRects")

{-# NOINLINE glRectsFunPtr #-}

glRectsv :: MonadIO m => Ptr GLshort -> Ptr GLshort -> m ()
glRectsv = ffiPtrshortPtrshortIOV glRectsvFunPtr

glRectsvFunPtr :: FunPtr (Ptr GLshort -> Ptr GLshort -> IO ())
glRectsvFunPtr = unsafePerformIO (getProcAddress "glRectsv")

{-# NOINLINE glRectsvFunPtr #-}

glRenderMode :: MonadIO m => GLenum -> m GLint
glRenderMode = ffienumIOint glRenderModeFunPtr

glRenderModeFunPtr :: FunPtr (GLenum -> IO GLint)
glRenderModeFunPtr = unsafePerformIO (getProcAddress "glRenderMode")

{-# NOINLINE glRenderModeFunPtr #-}

glRotated :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glRotated = ffidoubledoubledoubledoubleIOV glRotatedFunPtr

glRotatedFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glRotatedFunPtr = unsafePerformIO (getProcAddress "glRotated")

{-# NOINLINE glRotatedFunPtr #-}

glRotatef :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glRotatef = ffifloatfloatfloatfloatIOV glRotatefFunPtr

glRotatefFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glRotatefFunPtr = unsafePerformIO (getProcAddress "glRotatef")

{-# NOINLINE glRotatefFunPtr #-}

glScaled :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glScaled = ffidoubledoubledoubleIOV glScaledFunPtr

glScaledFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glScaledFunPtr = unsafePerformIO (getProcAddress "glScaled")

{-# NOINLINE glScaledFunPtr #-}

glScalef :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glScalef = ffifloatfloatfloatIOV glScalefFunPtr

glScalefFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glScalefFunPtr = unsafePerformIO (getProcAddress "glScalef")

{-# NOINLINE glScalefFunPtr #-}

glSecondaryColor3b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glSecondaryColor3b = ffibytebytebyteIOV glSecondaryColor3bFunPtr

glSecondaryColor3bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glSecondaryColor3bFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3b")

{-# NOINLINE glSecondaryColor3bFunPtr #-}

glSecondaryColor3bv :: MonadIO m => Ptr GLbyte -> m ()
glSecondaryColor3bv = ffiPtrbyteIOV glSecondaryColor3bvFunPtr

glSecondaryColor3bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glSecondaryColor3bvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3bv")

{-# NOINLINE glSecondaryColor3bvFunPtr #-}

glSecondaryColor3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glSecondaryColor3d = ffidoubledoubledoubleIOV glSecondaryColor3dFunPtr

glSecondaryColor3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glSecondaryColor3dFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3d")

{-# NOINLINE glSecondaryColor3dFunPtr #-}

glSecondaryColor3dv :: MonadIO m => Ptr GLdouble -> m ()
glSecondaryColor3dv = ffiPtrdoubleIOV glSecondaryColor3dvFunPtr

glSecondaryColor3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glSecondaryColor3dvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3dv")

{-# NOINLINE glSecondaryColor3dvFunPtr #-}

glSecondaryColor3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glSecondaryColor3f = ffifloatfloatfloatIOV glSecondaryColor3fFunPtr

glSecondaryColor3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glSecondaryColor3fFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3f")

{-# NOINLINE glSecondaryColor3fFunPtr #-}

glSecondaryColor3fv :: MonadIO m => Ptr GLfloat -> m ()
glSecondaryColor3fv = ffiPtrfloatIOV glSecondaryColor3fvFunPtr

glSecondaryColor3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glSecondaryColor3fvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3fv")

{-# NOINLINE glSecondaryColor3fvFunPtr #-}

glSecondaryColor3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glSecondaryColor3i = ffiintintintIOV glSecondaryColor3iFunPtr

glSecondaryColor3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glSecondaryColor3iFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3i")

{-# NOINLINE glSecondaryColor3iFunPtr #-}

glSecondaryColor3iv :: MonadIO m => Ptr GLint -> m ()
glSecondaryColor3iv = ffiPtrintIOV glSecondaryColor3ivFunPtr

glSecondaryColor3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glSecondaryColor3ivFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3iv")

{-# NOINLINE glSecondaryColor3ivFunPtr #-}

glSecondaryColor3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glSecondaryColor3s = ffishortshortshortIOV glSecondaryColor3sFunPtr

glSecondaryColor3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glSecondaryColor3sFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3s")

{-# NOINLINE glSecondaryColor3sFunPtr #-}

glSecondaryColor3sv :: MonadIO m => Ptr GLshort -> m ()
glSecondaryColor3sv = ffiPtrshortIOV glSecondaryColor3svFunPtr

glSecondaryColor3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glSecondaryColor3svFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3sv")

{-# NOINLINE glSecondaryColor3svFunPtr #-}

glSecondaryColor3ub :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> m ()
glSecondaryColor3ub = ffiubyteubyteubyteIOV glSecondaryColor3ubFunPtr

glSecondaryColor3ubFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ())
glSecondaryColor3ubFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ub")

{-# NOINLINE glSecondaryColor3ubFunPtr #-}

glSecondaryColor3ubv :: MonadIO m => Ptr GLubyte -> m ()
glSecondaryColor3ubv = ffiPtrubyteIOV glSecondaryColor3ubvFunPtr

glSecondaryColor3ubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glSecondaryColor3ubvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ubv")

{-# NOINLINE glSecondaryColor3ubvFunPtr #-}

glSecondaryColor3ui :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glSecondaryColor3ui = ffiuintuintuintIOV glSecondaryColor3uiFunPtr

glSecondaryColor3uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glSecondaryColor3uiFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ui")

{-# NOINLINE glSecondaryColor3uiFunPtr #-}

glSecondaryColor3uiv :: MonadIO m => Ptr GLuint -> m ()
glSecondaryColor3uiv = ffiPtruintIOV glSecondaryColor3uivFunPtr

glSecondaryColor3uivFunPtr :: FunPtr (Ptr GLuint -> IO ())
glSecondaryColor3uivFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3uiv")

{-# NOINLINE glSecondaryColor3uivFunPtr #-}

glSecondaryColor3us :: MonadIO m => GLushort -> GLushort -> GLushort -> m ()
glSecondaryColor3us = ffiushortushortushortIOV glSecondaryColor3usFunPtr

glSecondaryColor3usFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> IO ())
glSecondaryColor3usFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3us")

{-# NOINLINE glSecondaryColor3usFunPtr #-}

glSecondaryColor3usv :: MonadIO m => Ptr GLushort -> m ()
glSecondaryColor3usv = ffiPtrushortIOV glSecondaryColor3usvFunPtr

glSecondaryColor3usvFunPtr :: FunPtr (Ptr GLushort -> IO ())
glSecondaryColor3usvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3usv")

{-# NOINLINE glSecondaryColor3usvFunPtr #-}

glSecondaryColorPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glSecondaryColorPointer = ffiintenumsizeiPtrVIOV glSecondaryColorPointerFunPtr

glSecondaryColorPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glSecondaryColorPointerFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorPointer")

{-# NOINLINE glSecondaryColorPointerFunPtr #-}

glSelectBuffer :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glSelectBuffer = ffisizeiPtruintIOV glSelectBufferFunPtr

glSelectBufferFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glSelectBufferFunPtr = unsafePerformIO (getProcAddress "glSelectBuffer")

{-# NOINLINE glSelectBufferFunPtr #-}

glShadeModel :: MonadIO m => GLenum -> m ()
glShadeModel = ffienumIOV glShadeModelFunPtr

glShadeModelFunPtr :: FunPtr (GLenum -> IO ())
glShadeModelFunPtr = unsafePerformIO (getProcAddress "glShadeModel")

{-# NOINLINE glShadeModelFunPtr #-}

glTexCoord1d :: MonadIO m => GLdouble -> m ()
glTexCoord1d = ffidoubleIOV glTexCoord1dFunPtr

glTexCoord1dFunPtr :: FunPtr (GLdouble -> IO ())
glTexCoord1dFunPtr = unsafePerformIO (getProcAddress "glTexCoord1d")

{-# NOINLINE glTexCoord1dFunPtr #-}

glTexCoord1dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord1dv = ffiPtrdoubleIOV glTexCoord1dvFunPtr

glTexCoord1dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord1dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord1dv")

{-# NOINLINE glTexCoord1dvFunPtr #-}

glTexCoord1f :: MonadIO m => GLfloat -> m ()
glTexCoord1f = ffifloatIOV glTexCoord1fFunPtr

glTexCoord1fFunPtr :: FunPtr (GLfloat -> IO ())
glTexCoord1fFunPtr = unsafePerformIO (getProcAddress "glTexCoord1f")

{-# NOINLINE glTexCoord1fFunPtr #-}

glTexCoord1fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord1fv = ffiPtrfloatIOV glTexCoord1fvFunPtr

glTexCoord1fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord1fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord1fv")

{-# NOINLINE glTexCoord1fvFunPtr #-}

glTexCoord1i :: MonadIO m => GLint -> m ()
glTexCoord1i = ffiintIOV glTexCoord1iFunPtr

glTexCoord1iFunPtr :: FunPtr (GLint -> IO ())
glTexCoord1iFunPtr = unsafePerformIO (getProcAddress "glTexCoord1i")

{-# NOINLINE glTexCoord1iFunPtr #-}

glTexCoord1iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord1iv = ffiPtrintIOV glTexCoord1ivFunPtr

glTexCoord1ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord1ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord1iv")

{-# NOINLINE glTexCoord1ivFunPtr #-}

glTexCoord1s :: MonadIO m => GLshort -> m ()
glTexCoord1s = ffishortIOV glTexCoord1sFunPtr

glTexCoord1sFunPtr :: FunPtr (GLshort -> IO ())
glTexCoord1sFunPtr = unsafePerformIO (getProcAddress "glTexCoord1s")

{-# NOINLINE glTexCoord1sFunPtr #-}

glTexCoord1sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord1sv = ffiPtrshortIOV glTexCoord1svFunPtr

glTexCoord1svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord1svFunPtr = unsafePerformIO (getProcAddress "glTexCoord1sv")

{-# NOINLINE glTexCoord1svFunPtr #-}

glTexCoord2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glTexCoord2d = ffidoubledoubleIOV glTexCoord2dFunPtr

glTexCoord2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glTexCoord2dFunPtr = unsafePerformIO (getProcAddress "glTexCoord2d")

{-# NOINLINE glTexCoord2dFunPtr #-}

glTexCoord2dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord2dv = ffiPtrdoubleIOV glTexCoord2dvFunPtr

glTexCoord2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord2dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord2dv")

{-# NOINLINE glTexCoord2dvFunPtr #-}

glTexCoord2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glTexCoord2f = ffifloatfloatIOV glTexCoord2fFunPtr

glTexCoord2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glTexCoord2fFunPtr = unsafePerformIO (getProcAddress "glTexCoord2f")

{-# NOINLINE glTexCoord2fFunPtr #-}

glTexCoord2fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord2fv = ffiPtrfloatIOV glTexCoord2fvFunPtr

glTexCoord2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord2fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fv")

{-# NOINLINE glTexCoord2fvFunPtr #-}

glTexCoord2i :: MonadIO m => GLint -> GLint -> m ()
glTexCoord2i = ffiintintIOV glTexCoord2iFunPtr

glTexCoord2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glTexCoord2iFunPtr = unsafePerformIO (getProcAddress "glTexCoord2i")

{-# NOINLINE glTexCoord2iFunPtr #-}

glTexCoord2iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord2iv = ffiPtrintIOV glTexCoord2ivFunPtr

glTexCoord2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord2ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord2iv")

{-# NOINLINE glTexCoord2ivFunPtr #-}

glTexCoord2s :: MonadIO m => GLshort -> GLshort -> m ()
glTexCoord2s = ffishortshortIOV glTexCoord2sFunPtr

glTexCoord2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glTexCoord2sFunPtr = unsafePerformIO (getProcAddress "glTexCoord2s")

{-# NOINLINE glTexCoord2sFunPtr #-}

glTexCoord2sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord2sv = ffiPtrshortIOV glTexCoord2svFunPtr

glTexCoord2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord2svFunPtr = unsafePerformIO (getProcAddress "glTexCoord2sv")

{-# NOINLINE glTexCoord2svFunPtr #-}

glTexCoord3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glTexCoord3d = ffidoubledoubledoubleIOV glTexCoord3dFunPtr

glTexCoord3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTexCoord3dFunPtr = unsafePerformIO (getProcAddress "glTexCoord3d")

{-# NOINLINE glTexCoord3dFunPtr #-}

glTexCoord3dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord3dv = ffiPtrdoubleIOV glTexCoord3dvFunPtr

glTexCoord3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord3dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord3dv")

{-# NOINLINE glTexCoord3dvFunPtr #-}

glTexCoord3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glTexCoord3f = ffifloatfloatfloatIOV glTexCoord3fFunPtr

glTexCoord3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTexCoord3fFunPtr = unsafePerformIO (getProcAddress "glTexCoord3f")

{-# NOINLINE glTexCoord3fFunPtr #-}

glTexCoord3fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord3fv = ffiPtrfloatIOV glTexCoord3fvFunPtr

glTexCoord3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord3fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord3fv")

{-# NOINLINE glTexCoord3fvFunPtr #-}

glTexCoord3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glTexCoord3i = ffiintintintIOV glTexCoord3iFunPtr

glTexCoord3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glTexCoord3iFunPtr = unsafePerformIO (getProcAddress "glTexCoord3i")

{-# NOINLINE glTexCoord3iFunPtr #-}

glTexCoord3iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord3iv = ffiPtrintIOV glTexCoord3ivFunPtr

glTexCoord3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord3ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord3iv")

{-# NOINLINE glTexCoord3ivFunPtr #-}

glTexCoord3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glTexCoord3s = ffishortshortshortIOV glTexCoord3sFunPtr

glTexCoord3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glTexCoord3sFunPtr = unsafePerformIO (getProcAddress "glTexCoord3s")

{-# NOINLINE glTexCoord3sFunPtr #-}

glTexCoord3sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord3sv = ffiPtrshortIOV glTexCoord3svFunPtr

glTexCoord3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord3svFunPtr = unsafePerformIO (getProcAddress "glTexCoord3sv")

{-# NOINLINE glTexCoord3svFunPtr #-}

glTexCoord4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glTexCoord4d = ffidoubledoubledoubledoubleIOV glTexCoord4dFunPtr

glTexCoord4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glTexCoord4dFunPtr = unsafePerformIO (getProcAddress "glTexCoord4d")

{-# NOINLINE glTexCoord4dFunPtr #-}

glTexCoord4dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord4dv = ffiPtrdoubleIOV glTexCoord4dvFunPtr

glTexCoord4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord4dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord4dv")

{-# NOINLINE glTexCoord4dvFunPtr #-}

glTexCoord4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glTexCoord4f = ffifloatfloatfloatfloatIOV glTexCoord4fFunPtr

glTexCoord4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glTexCoord4fFunPtr = unsafePerformIO (getProcAddress "glTexCoord4f")

{-# NOINLINE glTexCoord4fFunPtr #-}

glTexCoord4fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord4fv = ffiPtrfloatIOV glTexCoord4fvFunPtr

glTexCoord4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord4fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord4fv")

{-# NOINLINE glTexCoord4fvFunPtr #-}

glTexCoord4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glTexCoord4i = ffiintintintintIOV glTexCoord4iFunPtr

glTexCoord4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glTexCoord4iFunPtr = unsafePerformIO (getProcAddress "glTexCoord4i")

{-# NOINLINE glTexCoord4iFunPtr #-}

glTexCoord4iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord4iv = ffiPtrintIOV glTexCoord4ivFunPtr

glTexCoord4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord4ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord4iv")

{-# NOINLINE glTexCoord4ivFunPtr #-}

glTexCoord4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glTexCoord4s = ffishortshortshortshortIOV glTexCoord4sFunPtr

glTexCoord4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glTexCoord4sFunPtr = unsafePerformIO (getProcAddress "glTexCoord4s")

{-# NOINLINE glTexCoord4sFunPtr #-}

glTexCoord4sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord4sv = ffiPtrshortIOV glTexCoord4svFunPtr

glTexCoord4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord4svFunPtr = unsafePerformIO (getProcAddress "glTexCoord4sv")

{-# NOINLINE glTexCoord4svFunPtr #-}

glTexCoordPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glTexCoordPointer = ffiintenumsizeiPtrVIOV glTexCoordPointerFunPtr

glTexCoordPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glTexCoordPointerFunPtr = unsafePerformIO (getProcAddress "glTexCoordPointer")

{-# NOINLINE glTexCoordPointerFunPtr #-}

glTexEnvf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glTexEnvf = ffienumenumfloatIOV glTexEnvfFunPtr

glTexEnvfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glTexEnvfFunPtr = unsafePerformIO (getProcAddress "glTexEnvf")

{-# NOINLINE glTexEnvfFunPtr #-}

glTexEnvfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glTexEnvfv = ffienumenumPtrfloatIOV glTexEnvfvFunPtr

glTexEnvfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glTexEnvfvFunPtr = unsafePerformIO (getProcAddress "glTexEnvfv")

{-# NOINLINE glTexEnvfvFunPtr #-}

glTexEnvi :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glTexEnvi = ffienumenumintIOV glTexEnviFunPtr

glTexEnviFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glTexEnviFunPtr = unsafePerformIO (getProcAddress "glTexEnvi")

{-# NOINLINE glTexEnviFunPtr #-}

glTexEnviv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexEnviv = ffienumenumPtrintIOV glTexEnvivFunPtr

glTexEnvivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexEnvivFunPtr = unsafePerformIO (getProcAddress "glTexEnviv")

{-# NOINLINE glTexEnvivFunPtr #-}

glTexGend :: MonadIO m => GLenum -> GLenum -> GLdouble -> m ()
glTexGend = ffienumenumdoubleIOV glTexGendFunPtr

glTexGendFunPtr :: FunPtr (GLenum -> GLenum -> GLdouble -> IO ())
glTexGendFunPtr = unsafePerformIO (getProcAddress "glTexGend")

{-# NOINLINE glTexGendFunPtr #-}

glTexGendv :: MonadIO m => GLenum -> GLenum -> Ptr GLdouble -> m ()
glTexGendv = ffienumenumPtrdoubleIOV glTexGendvFunPtr

glTexGendvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ())
glTexGendvFunPtr = unsafePerformIO (getProcAddress "glTexGendv")

{-# NOINLINE glTexGendvFunPtr #-}

glTexGenf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glTexGenf = ffienumenumfloatIOV glTexGenfFunPtr

glTexGenfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glTexGenfFunPtr = unsafePerformIO (getProcAddress "glTexGenf")

{-# NOINLINE glTexGenfFunPtr #-}

glTexGenfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glTexGenfv = ffienumenumPtrfloatIOV glTexGenfvFunPtr

glTexGenfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glTexGenfvFunPtr = unsafePerformIO (getProcAddress "glTexGenfv")

{-# NOINLINE glTexGenfvFunPtr #-}

glTexGeni :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glTexGeni = ffienumenumintIOV glTexGeniFunPtr

glTexGeniFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glTexGeniFunPtr = unsafePerformIO (getProcAddress "glTexGeni")

{-# NOINLINE glTexGeniFunPtr #-}

glTexGeniv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexGeniv = ffienumenumPtrintIOV glTexGenivFunPtr

glTexGenivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexGenivFunPtr = unsafePerformIO (getProcAddress "glTexGeniv")

{-# NOINLINE glTexGenivFunPtr #-}

glTranslated :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glTranslated = ffidoubledoubledoubleIOV glTranslatedFunPtr

glTranslatedFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTranslatedFunPtr = unsafePerformIO (getProcAddress "glTranslated")

{-# NOINLINE glTranslatedFunPtr #-}

glTranslatef :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glTranslatef = ffifloatfloatfloatIOV glTranslatefFunPtr

glTranslatefFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTranslatefFunPtr = unsafePerformIO (getProcAddress "glTranslatef")

{-# NOINLINE glTranslatefFunPtr #-}

glVertex2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glVertex2d = ffidoubledoubleIOV glVertex2dFunPtr

glVertex2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glVertex2dFunPtr = unsafePerformIO (getProcAddress "glVertex2d")

{-# NOINLINE glVertex2dFunPtr #-}

glVertex2dv :: MonadIO m => Ptr GLdouble -> m ()
glVertex2dv = ffiPtrdoubleIOV glVertex2dvFunPtr

glVertex2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glVertex2dvFunPtr = unsafePerformIO (getProcAddress "glVertex2dv")

{-# NOINLINE glVertex2dvFunPtr #-}

glVertex2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glVertex2f = ffifloatfloatIOV glVertex2fFunPtr

glVertex2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glVertex2fFunPtr = unsafePerformIO (getProcAddress "glVertex2f")

{-# NOINLINE glVertex2fFunPtr #-}

glVertex2fv :: MonadIO m => Ptr GLfloat -> m ()
glVertex2fv = ffiPtrfloatIOV glVertex2fvFunPtr

glVertex2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glVertex2fvFunPtr = unsafePerformIO (getProcAddress "glVertex2fv")

{-# NOINLINE glVertex2fvFunPtr #-}

glVertex2i :: MonadIO m => GLint -> GLint -> m ()
glVertex2i = ffiintintIOV glVertex2iFunPtr

glVertex2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glVertex2iFunPtr = unsafePerformIO (getProcAddress "glVertex2i")

{-# NOINLINE glVertex2iFunPtr #-}

glVertex2iv :: MonadIO m => Ptr GLint -> m ()
glVertex2iv = ffiPtrintIOV glVertex2ivFunPtr

glVertex2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glVertex2ivFunPtr = unsafePerformIO (getProcAddress "glVertex2iv")

{-# NOINLINE glVertex2ivFunPtr #-}

glVertex2s :: MonadIO m => GLshort -> GLshort -> m ()
glVertex2s = ffishortshortIOV glVertex2sFunPtr

glVertex2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glVertex2sFunPtr = unsafePerformIO (getProcAddress "glVertex2s")

{-# NOINLINE glVertex2sFunPtr #-}

glVertex2sv :: MonadIO m => Ptr GLshort -> m ()
glVertex2sv = ffiPtrshortIOV glVertex2svFunPtr

glVertex2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glVertex2svFunPtr = unsafePerformIO (getProcAddress "glVertex2sv")

{-# NOINLINE glVertex2svFunPtr #-}

glVertex3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glVertex3d = ffidoubledoubledoubleIOV glVertex3dFunPtr

glVertex3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glVertex3dFunPtr = unsafePerformIO (getProcAddress "glVertex3d")

{-# NOINLINE glVertex3dFunPtr #-}

glVertex3dv :: MonadIO m => Ptr GLdouble -> m ()
glVertex3dv = ffiPtrdoubleIOV glVertex3dvFunPtr

glVertex3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glVertex3dvFunPtr = unsafePerformIO (getProcAddress "glVertex3dv")

{-# NOINLINE glVertex3dvFunPtr #-}

glVertex3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glVertex3f = ffifloatfloatfloatIOV glVertex3fFunPtr

glVertex3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glVertex3fFunPtr = unsafePerformIO (getProcAddress "glVertex3f")

{-# NOINLINE glVertex3fFunPtr #-}

glVertex3fv :: MonadIO m => Ptr GLfloat -> m ()
glVertex3fv = ffiPtrfloatIOV glVertex3fvFunPtr

glVertex3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glVertex3fvFunPtr = unsafePerformIO (getProcAddress "glVertex3fv")

{-# NOINLINE glVertex3fvFunPtr #-}

glVertex3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glVertex3i = ffiintintintIOV glVertex3iFunPtr

glVertex3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glVertex3iFunPtr = unsafePerformIO (getProcAddress "glVertex3i")

{-# NOINLINE glVertex3iFunPtr #-}

glVertex3iv :: MonadIO m => Ptr GLint -> m ()
glVertex3iv = ffiPtrintIOV glVertex3ivFunPtr

glVertex3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glVertex3ivFunPtr = unsafePerformIO (getProcAddress "glVertex3iv")

{-# NOINLINE glVertex3ivFunPtr #-}

glVertex3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glVertex3s = ffishortshortshortIOV glVertex3sFunPtr

glVertex3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glVertex3sFunPtr = unsafePerformIO (getProcAddress "glVertex3s")

{-# NOINLINE glVertex3sFunPtr #-}

glVertex3sv :: MonadIO m => Ptr GLshort -> m ()
glVertex3sv = ffiPtrshortIOV glVertex3svFunPtr

glVertex3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glVertex3svFunPtr = unsafePerformIO (getProcAddress "glVertex3sv")

{-# NOINLINE glVertex3svFunPtr #-}

glVertex4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertex4d = ffidoubledoubledoubledoubleIOV glVertex4dFunPtr

glVertex4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertex4dFunPtr = unsafePerformIO (getProcAddress "glVertex4d")

{-# NOINLINE glVertex4dFunPtr #-}

glVertex4dv :: MonadIO m => Ptr GLdouble -> m ()
glVertex4dv = ffiPtrdoubleIOV glVertex4dvFunPtr

glVertex4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glVertex4dvFunPtr = unsafePerformIO (getProcAddress "glVertex4dv")

{-# NOINLINE glVertex4dvFunPtr #-}

glVertex4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertex4f = ffifloatfloatfloatfloatIOV glVertex4fFunPtr

glVertex4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertex4fFunPtr = unsafePerformIO (getProcAddress "glVertex4f")

{-# NOINLINE glVertex4fFunPtr #-}

glVertex4fv :: MonadIO m => Ptr GLfloat -> m ()
glVertex4fv = ffiPtrfloatIOV glVertex4fvFunPtr

glVertex4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glVertex4fvFunPtr = unsafePerformIO (getProcAddress "glVertex4fv")

{-# NOINLINE glVertex4fvFunPtr #-}

glVertex4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glVertex4i = ffiintintintintIOV glVertex4iFunPtr

glVertex4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glVertex4iFunPtr = unsafePerformIO (getProcAddress "glVertex4i")

{-# NOINLINE glVertex4iFunPtr #-}

glVertex4iv :: MonadIO m => Ptr GLint -> m ()
glVertex4iv = ffiPtrintIOV glVertex4ivFunPtr

glVertex4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glVertex4ivFunPtr = unsafePerformIO (getProcAddress "glVertex4iv")

{-# NOINLINE glVertex4ivFunPtr #-}

glVertex4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glVertex4s = ffishortshortshortshortIOV glVertex4sFunPtr

glVertex4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glVertex4sFunPtr = unsafePerformIO (getProcAddress "glVertex4s")

{-# NOINLINE glVertex4sFunPtr #-}

glVertex4sv :: MonadIO m => Ptr GLshort -> m ()
glVertex4sv = ffiPtrshortIOV glVertex4svFunPtr

glVertex4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glVertex4svFunPtr = unsafePerformIO (getProcAddress "glVertex4sv")

{-# NOINLINE glVertex4svFunPtr #-}

glVertexPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glVertexPointer = ffiintenumsizeiPtrVIOV glVertexPointerFunPtr

glVertexPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glVertexPointerFunPtr = unsafePerformIO (getProcAddress "glVertexPointer")

{-# NOINLINE glVertexPointerFunPtr #-}

glWindowPos2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glWindowPos2d = ffidoubledoubleIOV glWindowPos2dFunPtr

glWindowPos2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glWindowPos2dFunPtr = unsafePerformIO (getProcAddress "glWindowPos2d")

{-# NOINLINE glWindowPos2dFunPtr #-}

glWindowPos2dv :: MonadIO m => Ptr GLdouble -> m ()
glWindowPos2dv = ffiPtrdoubleIOV glWindowPos2dvFunPtr

glWindowPos2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glWindowPos2dvFunPtr = unsafePerformIO (getProcAddress "glWindowPos2dv")

{-# NOINLINE glWindowPos2dvFunPtr #-}

glWindowPos2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glWindowPos2f = ffifloatfloatIOV glWindowPos2fFunPtr

glWindowPos2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glWindowPos2fFunPtr = unsafePerformIO (getProcAddress "glWindowPos2f")

{-# NOINLINE glWindowPos2fFunPtr #-}

glWindowPos2fv :: MonadIO m => Ptr GLfloat -> m ()
glWindowPos2fv = ffiPtrfloatIOV glWindowPos2fvFunPtr

glWindowPos2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glWindowPos2fvFunPtr = unsafePerformIO (getProcAddress "glWindowPos2fv")

{-# NOINLINE glWindowPos2fvFunPtr #-}

glWindowPos2i :: MonadIO m => GLint -> GLint -> m ()
glWindowPos2i = ffiintintIOV glWindowPos2iFunPtr

glWindowPos2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glWindowPos2iFunPtr = unsafePerformIO (getProcAddress "glWindowPos2i")

{-# NOINLINE glWindowPos2iFunPtr #-}

glWindowPos2iv :: MonadIO m => Ptr GLint -> m ()
glWindowPos2iv = ffiPtrintIOV glWindowPos2ivFunPtr

glWindowPos2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glWindowPos2ivFunPtr = unsafePerformIO (getProcAddress "glWindowPos2iv")

{-# NOINLINE glWindowPos2ivFunPtr #-}

glWindowPos2s :: MonadIO m => GLshort -> GLshort -> m ()
glWindowPos2s = ffishortshortIOV glWindowPos2sFunPtr

glWindowPos2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glWindowPos2sFunPtr = unsafePerformIO (getProcAddress "glWindowPos2s")

{-# NOINLINE glWindowPos2sFunPtr #-}

glWindowPos2sv :: MonadIO m => Ptr GLshort -> m ()
glWindowPos2sv = ffiPtrshortIOV glWindowPos2svFunPtr

glWindowPos2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glWindowPos2svFunPtr = unsafePerformIO (getProcAddress "glWindowPos2sv")

{-# NOINLINE glWindowPos2svFunPtr #-}

glWindowPos3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glWindowPos3d = ffidoubledoubledoubleIOV glWindowPos3dFunPtr

glWindowPos3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glWindowPos3dFunPtr = unsafePerformIO (getProcAddress "glWindowPos3d")

{-# NOINLINE glWindowPos3dFunPtr #-}

glWindowPos3dv :: MonadIO m => Ptr GLdouble -> m ()
glWindowPos3dv = ffiPtrdoubleIOV glWindowPos3dvFunPtr

glWindowPos3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glWindowPos3dvFunPtr = unsafePerformIO (getProcAddress "glWindowPos3dv")

{-# NOINLINE glWindowPos3dvFunPtr #-}

glWindowPos3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glWindowPos3f = ffifloatfloatfloatIOV glWindowPos3fFunPtr

glWindowPos3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glWindowPos3fFunPtr = unsafePerformIO (getProcAddress "glWindowPos3f")

{-# NOINLINE glWindowPos3fFunPtr #-}

glWindowPos3fv :: MonadIO m => Ptr GLfloat -> m ()
glWindowPos3fv = ffiPtrfloatIOV glWindowPos3fvFunPtr

glWindowPos3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glWindowPos3fvFunPtr = unsafePerformIO (getProcAddress "glWindowPos3fv")

{-# NOINLINE glWindowPos3fvFunPtr #-}

glWindowPos3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glWindowPos3i = ffiintintintIOV glWindowPos3iFunPtr

glWindowPos3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glWindowPos3iFunPtr = unsafePerformIO (getProcAddress "glWindowPos3i")

{-# NOINLINE glWindowPos3iFunPtr #-}

glWindowPos3iv :: MonadIO m => Ptr GLint -> m ()
glWindowPos3iv = ffiPtrintIOV glWindowPos3ivFunPtr

glWindowPos3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glWindowPos3ivFunPtr = unsafePerformIO (getProcAddress "glWindowPos3iv")

{-# NOINLINE glWindowPos3ivFunPtr #-}

glWindowPos3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glWindowPos3s = ffishortshortshortIOV glWindowPos3sFunPtr

glWindowPos3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glWindowPos3sFunPtr = unsafePerformIO (getProcAddress "glWindowPos3s")

{-# NOINLINE glWindowPos3sFunPtr #-}

glWindowPos3sv :: MonadIO m => Ptr GLshort -> m ()
glWindowPos3sv = ffiPtrshortIOV glWindowPos3svFunPtr

glWindowPos3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glWindowPos3svFunPtr = unsafePerformIO (getProcAddress "glWindowPos3sv")

{-# NOINLINE glWindowPos3svFunPtr #-}

pattern GL_2D = 0x0600

pattern GL_2_BYTES = 0x1407

pattern GL_3D = 0x0601

pattern GL_3D_COLOR = 0x0602

pattern GL_3D_COLOR_TEXTURE = 0x0603

pattern GL_3_BYTES = 0x1408

pattern GL_4D_COLOR_TEXTURE = 0x0604

pattern GL_4_BYTES = 0x1409

pattern GL_ACCUM = 0x0100

pattern GL_ACCUM_ALPHA_BITS = 0x0D5B

pattern GL_ACCUM_BLUE_BITS = 0x0D5A

pattern GL_ACCUM_BUFFER_BIT = 0x00000200

pattern GL_ACCUM_CLEAR_VALUE = 0x0B80

pattern GL_ACCUM_GREEN_BITS = 0x0D59

pattern GL_ACCUM_RED_BITS = 0x0D58

pattern GL_ADD = 0x0104

pattern GL_ADD_SIGNED = 0x8574

pattern GL_ALIASED_POINT_SIZE_RANGE = 0x846D

pattern GL_ALL_ATTRIB_BITS = 0xFFFFFFFF

pattern GL_ALPHA12 = 0x803D

pattern GL_ALPHA16 = 0x803E

pattern GL_ALPHA4 = 0x803B

pattern GL_ALPHA8 = 0x803C

pattern GL_ALPHA_BIAS = 0x0D1D

pattern GL_ALPHA_BITS = 0x0D55

pattern GL_ALPHA_INTEGER = 0x8D97

pattern GL_ALPHA_SCALE = 0x0D1C

pattern GL_ALPHA_TEST = 0x0BC0

pattern GL_ALPHA_TEST_FUNC = 0x0BC1

pattern GL_ALPHA_TEST_REF = 0x0BC2

pattern GL_AMBIENT = 0x1200

pattern GL_AMBIENT_AND_DIFFUSE = 0x1602

pattern GL_ATTRIB_STACK_DEPTH = 0x0BB0

pattern GL_AUTO_NORMAL = 0x0D80

pattern GL_AUX0 = 0x0409

pattern GL_AUX1 = 0x040A

pattern GL_AUX2 = 0x040B

pattern GL_AUX3 = 0x040C

pattern GL_AUX_BUFFERS = 0x0C00

pattern GL_BITMAP = 0x1A00

pattern GL_BITMAP_TOKEN = 0x0704

pattern GL_BLUE_BIAS = 0x0D1B

pattern GL_BLUE_BITS = 0x0D54

pattern GL_BLUE_SCALE = 0x0D1A

pattern GL_C3F_V3F = 0x2A24

pattern GL_C4F_N3F_V3F = 0x2A26

pattern GL_C4UB_V2F = 0x2A22

pattern GL_C4UB_V3F = 0x2A23

pattern GL_CLAMP = 0x2900

pattern GL_CLAMP_FRAGMENT_COLOR = 0x891B

pattern GL_CLAMP_VERTEX_COLOR = 0x891A

pattern GL_CLIENT_ACTIVE_TEXTURE = 0x84E1

pattern GL_CLIENT_ALL_ATTRIB_BITS = 0xFFFFFFFF

pattern GL_CLIENT_ATTRIB_STACK_DEPTH = 0x0BB1

pattern GL_CLIENT_PIXEL_STORE_BIT = 0x00000001

pattern GL_CLIENT_VERTEX_ARRAY_BIT = 0x00000002

pattern GL_CLIP_PLANE0 = 0x3000

pattern GL_CLIP_PLANE1 = 0x3001

pattern GL_CLIP_PLANE2 = 0x3002

pattern GL_CLIP_PLANE3 = 0x3003

pattern GL_CLIP_PLANE4 = 0x3004

pattern GL_CLIP_PLANE5 = 0x3005

pattern GL_COEFF = 0x0A00

pattern GL_COLOR_ARRAY = 0x8076

pattern GL_COLOR_ARRAY_BUFFER_BINDING = 0x8898

pattern GL_COLOR_ARRAY_POINTER = 0x8090

pattern GL_COLOR_ARRAY_SIZE = 0x8081

pattern GL_COLOR_ARRAY_STRIDE = 0x8083

pattern GL_COLOR_ARRAY_TYPE = 0x8082

pattern GL_COLOR_INDEX = 0x1900

pattern GL_COLOR_INDEXES = 0x1603

pattern GL_COLOR_MATERIAL = 0x0B57

pattern GL_COLOR_MATERIAL_FACE = 0x0B55

pattern GL_COLOR_MATERIAL_PARAMETER = 0x0B56

pattern GL_COLOR_SUM = 0x8458

pattern GL_COMBINE = 0x8570

pattern GL_COMBINE_ALPHA = 0x8572

pattern GL_COMBINE_RGB = 0x8571

pattern GL_COMPARE_R_TO_TEXTURE = 0x884E

pattern GL_COMPILE = 0x1300

pattern GL_COMPILE_AND_EXECUTE = 0x1301

pattern GL_COMPRESSED_ALPHA = 0x84E9

pattern GL_COMPRESSED_INTENSITY = 0x84EC

pattern GL_COMPRESSED_LUMINANCE = 0x84EA

pattern GL_COMPRESSED_LUMINANCE_ALPHA = 0x84EB

pattern GL_COMPRESSED_SLUMINANCE = 0x8C4A

pattern GL_COMPRESSED_SLUMINANCE_ALPHA = 0x8C4B

pattern GL_CONSTANT = 0x8576

pattern GL_CONSTANT_ATTENUATION = 0x1207

pattern GL_COORD_REPLACE = 0x8862

pattern GL_COPY_PIXEL_TOKEN = 0x0706

pattern GL_CURRENT_BIT = 0x00000001

pattern GL_CURRENT_COLOR = 0x0B00

pattern GL_CURRENT_FOG_COORD = 0x8453

pattern GL_CURRENT_FOG_COORDINATE = 0x8453

pattern GL_CURRENT_INDEX = 0x0B01

pattern GL_CURRENT_NORMAL = 0x0B02

pattern GL_CURRENT_RASTER_COLOR = 0x0B04

pattern GL_CURRENT_RASTER_DISTANCE = 0x0B09

pattern GL_CURRENT_RASTER_INDEX = 0x0B05

pattern GL_CURRENT_RASTER_POSITION = 0x0B07

pattern GL_CURRENT_RASTER_POSITION_VALID = 0x0B08

pattern GL_CURRENT_RASTER_SECONDARY_COLOR = 0x845F

pattern GL_CURRENT_RASTER_TEXTURE_COORDS = 0x0B06

pattern GL_CURRENT_SECONDARY_COLOR = 0x8459

pattern GL_CURRENT_TEXTURE_COORDS = 0x0B03

pattern GL_DECAL = 0x2101

pattern GL_DEPTH_BIAS = 0x0D1F

pattern GL_DEPTH_BITS = 0x0D56

pattern GL_DEPTH_SCALE = 0x0D1E

pattern GL_DEPTH_TEXTURE_MODE = 0x884B

pattern GL_DIFFUSE = 0x1201

pattern GL_DOMAIN = 0x0A02

pattern GL_DOT3_RGB = 0x86AE

pattern GL_DOT3_RGBA = 0x86AF

pattern GL_DRAW_PIXEL_TOKEN = 0x0705

pattern GL_EDGE_FLAG = 0x0B43

pattern GL_EDGE_FLAG_ARRAY = 0x8079

pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x889B

pattern GL_EDGE_FLAG_ARRAY_POINTER = 0x8093

pattern GL_EDGE_FLAG_ARRAY_STRIDE = 0x808C

pattern GL_EMISSION = 0x1600

pattern GL_ENABLE_BIT = 0x00002000

pattern GL_EVAL_BIT = 0x00010000

pattern GL_EXP = 0x0800

pattern GL_EXP2 = 0x0801

pattern GL_EYE_LINEAR = 0x2400

pattern GL_FEEDBACK = 0x1C01

pattern GL_FEEDBACK_BUFFER_POINTER = 0x0DF0

pattern GL_FEEDBACK_BUFFER_SIZE = 0x0DF1

pattern GL_FEEDBACK_BUFFER_TYPE = 0x0DF2

pattern GL_FLAT = 0x1D00

pattern GL_FOG_BIT = 0x00000080

pattern GL_FOG_COLOR = 0x0B66

pattern GL_FOG_COORD = 0x8451

pattern GL_FOG_COORDINATE = 0x8451

pattern GL_FOG_COORDINATE_ARRAY = 0x8457

pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x889D

pattern GL_FOG_COORDINATE_ARRAY_POINTER = 0x8456

pattern GL_FOG_COORDINATE_ARRAY_STRIDE = 0x8455

pattern GL_FOG_COORDINATE_ARRAY_TYPE = 0x8454

pattern GL_FOG_COORDINATE_SOURCE = 0x8450

pattern GL_FOG_COORD_ARRAY = 0x8457

pattern GL_FOG_COORD_ARRAY_BUFFER_BINDING = 0x889D

pattern GL_FOG_COORD_ARRAY_POINTER = 0x8456

pattern GL_FOG_COORD_ARRAY_STRIDE = 0x8455

pattern GL_FOG_COORD_ARRAY_TYPE = 0x8454

pattern GL_FOG_COORD_SRC = 0x8450

pattern GL_FOG_DENSITY = 0x0B62

pattern GL_FOG_END = 0x0B64

pattern GL_FOG_HINT = 0x0C54

pattern GL_FOG_INDEX = 0x0B61

pattern GL_FOG_MODE = 0x0B65

pattern GL_FOG_START = 0x0B63

pattern GL_FRAGMENT_DEPTH = 0x8452

pattern GL_GENERATE_MIPMAP = 0x8191

pattern GL_GENERATE_MIPMAP_HINT = 0x8192

pattern GL_GREEN_BIAS = 0x0D19

pattern GL_GREEN_BITS = 0x0D53

pattern GL_GREEN_SCALE = 0x0D18

pattern GL_HINT_BIT = 0x00008000

pattern GL_INDEX_ARRAY = 0x8077

pattern GL_INDEX_ARRAY_BUFFER_BINDING = 0x8899

pattern GL_INDEX_ARRAY_POINTER = 0x8091

pattern GL_INDEX_ARRAY_STRIDE = 0x8086

pattern GL_INDEX_ARRAY_TYPE = 0x8085

pattern GL_INDEX_BITS = 0x0D51

pattern GL_INDEX_CLEAR_VALUE = 0x0C20

pattern GL_INDEX_LOGIC_OP = 0x0BF1

pattern GL_INDEX_MODE = 0x0C30

pattern GL_INDEX_OFFSET = 0x0D13

pattern GL_INDEX_SHIFT = 0x0D12

pattern GL_INDEX_WRITEMASK = 0x0C21

pattern GL_INTENSITY = 0x8049

pattern GL_INTENSITY12 = 0x804C

pattern GL_INTENSITY16 = 0x804D

pattern GL_INTENSITY4 = 0x804A

pattern GL_INTENSITY8 = 0x804B

pattern GL_INTERPOLATE = 0x8575

pattern GL_LIGHT0 = 0x4000

pattern GL_LIGHT1 = 0x4001

pattern GL_LIGHT2 = 0x4002

pattern GL_LIGHT3 = 0x4003

pattern GL_LIGHT4 = 0x4004

pattern GL_LIGHT5 = 0x4005

pattern GL_LIGHT6 = 0x4006

pattern GL_LIGHT7 = 0x4007

pattern GL_LIGHTING = 0x0B50

pattern GL_LIGHTING_BIT = 0x00000040

pattern GL_LIGHT_MODEL_AMBIENT = 0x0B53

pattern GL_LIGHT_MODEL_COLOR_CONTROL = 0x81F8

pattern GL_LIGHT_MODEL_LOCAL_VIEWER = 0x0B51

pattern GL_LIGHT_MODEL_TWO_SIDE = 0x0B52

pattern GL_LINEAR_ATTENUATION = 0x1208

pattern GL_LINE_BIT = 0x00000004

pattern GL_LINE_RESET_TOKEN = 0x0707

pattern GL_LINE_STIPPLE = 0x0B24

pattern GL_LINE_STIPPLE_PATTERN = 0x0B25

pattern GL_LINE_STIPPLE_REPEAT = 0x0B26

pattern GL_LINE_TOKEN = 0x0702

pattern GL_LIST_BASE = 0x0B32

pattern GL_LIST_BIT = 0x00020000

pattern GL_LIST_INDEX = 0x0B33

pattern GL_LIST_MODE = 0x0B30

pattern GL_LOAD = 0x0101

pattern GL_LOGIC_OP = 0x0BF1

pattern GL_LUMINANCE = 0x1909

pattern GL_LUMINANCE12 = 0x8041

pattern GL_LUMINANCE12_ALPHA12 = 0x8047

pattern GL_LUMINANCE12_ALPHA4 = 0x8046

pattern GL_LUMINANCE16 = 0x8042

pattern GL_LUMINANCE16_ALPHA16 = 0x8048

pattern GL_LUMINANCE4 = 0x803F

pattern GL_LUMINANCE4_ALPHA4 = 0x8043

pattern GL_LUMINANCE6_ALPHA2 = 0x8044

pattern GL_LUMINANCE8 = 0x8040

pattern GL_LUMINANCE8_ALPHA8 = 0x8045

pattern GL_LUMINANCE_ALPHA = 0x190A

pattern GL_MAP1_COLOR_4 = 0x0D90

pattern GL_MAP1_GRID_DOMAIN = 0x0DD0

pattern GL_MAP1_GRID_SEGMENTS = 0x0DD1

pattern GL_MAP1_INDEX = 0x0D91

pattern GL_MAP1_NORMAL = 0x0D92

pattern GL_MAP1_TEXTURE_COORD_1 = 0x0D93

pattern GL_MAP1_TEXTURE_COORD_2 = 0x0D94

pattern GL_MAP1_TEXTURE_COORD_3 = 0x0D95

pattern GL_MAP1_TEXTURE_COORD_4 = 0x0D96

pattern GL_MAP1_VERTEX_3 = 0x0D97

pattern GL_MAP1_VERTEX_4 = 0x0D98

pattern GL_MAP2_COLOR_4 = 0x0DB0

pattern GL_MAP2_GRID_DOMAIN = 0x0DD2

pattern GL_MAP2_GRID_SEGMENTS = 0x0DD3

pattern GL_MAP2_INDEX = 0x0DB1

pattern GL_MAP2_NORMAL = 0x0DB2

pattern GL_MAP2_TEXTURE_COORD_1 = 0x0DB3

pattern GL_MAP2_TEXTURE_COORD_2 = 0x0DB4

pattern GL_MAP2_TEXTURE_COORD_3 = 0x0DB5

pattern GL_MAP2_TEXTURE_COORD_4 = 0x0DB6

pattern GL_MAP2_VERTEX_3 = 0x0DB7

pattern GL_MAP2_VERTEX_4 = 0x0DB8

pattern GL_MAP_COLOR = 0x0D10

pattern GL_MAP_STENCIL = 0x0D11

pattern GL_MATRIX_MODE = 0x0BA0

pattern GL_MAX_ATTRIB_STACK_DEPTH = 0x0D35

pattern GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 0x0D3B

pattern GL_MAX_CLIP_PLANES = 0x0D32

pattern GL_MAX_EVAL_ORDER = 0x0D30

pattern GL_MAX_LIGHTS = 0x0D31

pattern GL_MAX_LIST_NESTING = 0x0B31

pattern GL_MAX_MODELVIEW_STACK_DEPTH = 0x0D36

pattern GL_MAX_NAME_STACK_DEPTH = 0x0D37

pattern GL_MAX_PIXEL_MAP_TABLE = 0x0D34

pattern GL_MAX_PROJECTION_STACK_DEPTH = 0x0D38

pattern GL_MAX_TEXTURE_COORDS = 0x8871

pattern GL_MAX_TEXTURE_STACK_DEPTH = 0x0D39

pattern GL_MAX_TEXTURE_UNITS = 0x84E2

pattern GL_MODELVIEW = 0x1700

pattern GL_MODELVIEW_MATRIX = 0x0BA6

pattern GL_MODELVIEW_STACK_DEPTH = 0x0BA3

pattern GL_MODULATE = 0x2100

pattern GL_MULT = 0x0103

pattern GL_MULTISAMPLE_BIT = 0x20000000

pattern GL_N3F_V3F = 0x2A25

pattern GL_NAME_STACK_DEPTH = 0x0D70

pattern GL_NORMALIZE = 0x0BA1

pattern GL_NORMAL_ARRAY = 0x8075

pattern GL_NORMAL_ARRAY_BUFFER_BINDING = 0x8897

pattern GL_NORMAL_ARRAY_POINTER = 0x808F

pattern GL_NORMAL_ARRAY_STRIDE = 0x807F

pattern GL_NORMAL_ARRAY_TYPE = 0x807E

pattern GL_NORMAL_MAP = 0x8511

pattern GL_OBJECT_LINEAR = 0x2401

pattern GL_OBJECT_PLANE = 0x2501

pattern GL_OPERAND0_ALPHA = 0x8598

pattern GL_OPERAND0_RGB = 0x8590

pattern GL_OPERAND1_ALPHA = 0x8599

pattern GL_OPERAND1_RGB = 0x8591

pattern GL_OPERAND2_ALPHA = 0x859A

pattern GL_OPERAND2_RGB = 0x8592

pattern GL_ORDER = 0x0A01

pattern GL_PASS_THROUGH_TOKEN = 0x0700

pattern GL_PERSPECTIVE_CORRECTION_HINT = 0x0C50

pattern GL_PIXEL_MAP_A_TO_A = 0x0C79

pattern GL_PIXEL_MAP_A_TO_A_SIZE = 0x0CB9

pattern GL_PIXEL_MAP_B_TO_B = 0x0C78

pattern GL_PIXEL_MAP_B_TO_B_SIZE = 0x0CB8

pattern GL_PIXEL_MAP_G_TO_G = 0x0C77

pattern GL_PIXEL_MAP_G_TO_G_SIZE = 0x0CB7

pattern GL_PIXEL_MAP_I_TO_A = 0x0C75

pattern GL_PIXEL_MAP_I_TO_A_SIZE = 0x0CB5

pattern GL_PIXEL_MAP_I_TO_B = 0x0C74

pattern GL_PIXEL_MAP_I_TO_B_SIZE = 0x0CB4

pattern GL_PIXEL_MAP_I_TO_G = 0x0C73

pattern GL_PIXEL_MAP_I_TO_G_SIZE = 0x0CB3

pattern GL_PIXEL_MAP_I_TO_I = 0x0C70

pattern GL_PIXEL_MAP_I_TO_I_SIZE = 0x0CB0

pattern GL_PIXEL_MAP_I_TO_R = 0x0C72

pattern GL_PIXEL_MAP_I_TO_R_SIZE = 0x0CB2

pattern GL_PIXEL_MAP_R_TO_R = 0x0C76

pattern GL_PIXEL_MAP_R_TO_R_SIZE = 0x0CB6

pattern GL_PIXEL_MAP_S_TO_S = 0x0C71

pattern GL_PIXEL_MAP_S_TO_S_SIZE = 0x0CB1

pattern GL_PIXEL_MODE_BIT = 0x00000020

pattern GL_POINT_BIT = 0x00000002

pattern GL_POINT_DISTANCE_ATTENUATION = 0x8129

pattern GL_POINT_SIZE_MAX = 0x8127

pattern GL_POINT_SIZE_MIN = 0x8126

pattern GL_POINT_SMOOTH = 0x0B10

pattern GL_POINT_SMOOTH_HINT = 0x0C51

pattern GL_POINT_SPRITE = 0x8861

pattern GL_POINT_TOKEN = 0x0701

pattern GL_POLYGON = 0x0009

pattern GL_POLYGON_BIT = 0x00000008

pattern GL_POLYGON_STIPPLE = 0x0B42

pattern GL_POLYGON_STIPPLE_BIT = 0x00000010

pattern GL_POLYGON_TOKEN = 0x0703

pattern GL_POSITION = 0x1203

pattern GL_PREVIOUS = 0x8578

pattern GL_PROJECTION = 0x1701

pattern GL_PROJECTION_MATRIX = 0x0BA7

pattern GL_PROJECTION_STACK_DEPTH = 0x0BA4

pattern GL_Q = 0x2003

pattern GL_QUADRATIC_ATTENUATION = 0x1209

pattern GL_QUAD_STRIP = 0x0008

pattern GL_R = 0x2002

pattern GL_RED_BIAS = 0x0D15

pattern GL_RED_BITS = 0x0D52

pattern GL_RED_SCALE = 0x0D14

pattern GL_REFLECTION_MAP = 0x8512

pattern GL_RENDER = 0x1C00

pattern GL_RENDER_MODE = 0x0C40

pattern GL_RESCALE_NORMAL = 0x803A

pattern GL_RETURN = 0x0102

pattern GL_RGBA_MODE = 0x0C31

pattern GL_RGB_SCALE = 0x8573

pattern GL_S = 0x2000

pattern GL_SCISSOR_BIT = 0x00080000

pattern GL_SECONDARY_COLOR_ARRAY = 0x845E

pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x889C

pattern GL_SECONDARY_COLOR_ARRAY_POINTER = 0x845D

pattern GL_SECONDARY_COLOR_ARRAY_SIZE = 0x845A

pattern GL_SECONDARY_COLOR_ARRAY_STRIDE = 0x845C

pattern GL_SECONDARY_COLOR_ARRAY_TYPE = 0x845B

pattern GL_SELECT = 0x1C02

pattern GL_SELECTION_BUFFER_POINTER = 0x0DF3

pattern GL_SELECTION_BUFFER_SIZE = 0x0DF4

pattern GL_SEPARATE_SPECULAR_COLOR = 0x81FA

pattern GL_SHADE_MODEL = 0x0B54

pattern GL_SHININESS = 0x1601

pattern GL_SINGLE_COLOR = 0x81F9

pattern GL_SLUMINANCE = 0x8C46

pattern GL_SLUMINANCE8 = 0x8C47

pattern GL_SLUMINANCE8_ALPHA8 = 0x8C45

pattern GL_SLUMINANCE_ALPHA = 0x8C44

pattern GL_SMOOTH = 0x1D01

pattern GL_SOURCE0_ALPHA = 0x8588

pattern GL_SOURCE0_RGB = 0x8580

pattern GL_SOURCE1_ALPHA = 0x8589

pattern GL_SOURCE1_RGB = 0x8581

pattern GL_SOURCE2_ALPHA = 0x858A

pattern GL_SOURCE2_RGB = 0x8582

pattern GL_SPECULAR = 0x1202

pattern GL_SPHERE_MAP = 0x2402

pattern GL_SPOT_CUTOFF = 0x1206

pattern GL_SPOT_DIRECTION = 0x1204

pattern GL_SPOT_EXPONENT = 0x1205

pattern GL_SRC0_ALPHA = 0x8588

pattern GL_SRC0_RGB = 0x8580

pattern GL_SRC1_RGB = 0x8581

pattern GL_SRC2_ALPHA = 0x858A

pattern GL_SRC2_RGB = 0x8582

pattern GL_STENCIL_BITS = 0x0D57

pattern GL_SUBTRACT = 0x84E7

pattern GL_T = 0x2001

pattern GL_T2F_C3F_V3F = 0x2A2A

pattern GL_T2F_C4F_N3F_V3F = 0x2A2C

pattern GL_T2F_C4UB_V3F = 0x2A29

pattern GL_T2F_N3F_V3F = 0x2A2B

pattern GL_T2F_V3F = 0x2A27

pattern GL_T4F_C4F_N3F_V4F = 0x2A2D

pattern GL_T4F_V4F = 0x2A28

pattern GL_TEXTURE_BIT = 0x00040000

pattern GL_TEXTURE_BORDER = 0x1005

pattern GL_TEXTURE_COMPONENTS = 0x1003

pattern GL_TEXTURE_COORD_ARRAY = 0x8078

pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A

pattern GL_TEXTURE_COORD_ARRAY_POINTER = 0x8092

pattern GL_TEXTURE_COORD_ARRAY_SIZE = 0x8088

pattern GL_TEXTURE_COORD_ARRAY_STRIDE = 0x808A

pattern GL_TEXTURE_COORD_ARRAY_TYPE = 0x8089

pattern GL_TEXTURE_ENV = 0x2300

pattern GL_TEXTURE_ENV_COLOR = 0x2201

pattern GL_TEXTURE_ENV_MODE = 0x2200

pattern GL_TEXTURE_FILTER_CONTROL = 0x8500

pattern GL_TEXTURE_GEN_MODE = 0x2500

pattern GL_TEXTURE_GEN_Q = 0x0C63

pattern GL_TEXTURE_GEN_R = 0x0C62

pattern GL_TEXTURE_GEN_S = 0x0C60

pattern GL_TEXTURE_GEN_T = 0x0C61

pattern GL_TEXTURE_INTENSITY_SIZE = 0x8061

pattern GL_TEXTURE_INTENSITY_TYPE = 0x8C15

pattern GL_TEXTURE_LUMINANCE_SIZE = 0x8060

pattern GL_TEXTURE_LUMINANCE_TYPE = 0x8C14

pattern GL_TEXTURE_MATRIX = 0x0BA8

pattern GL_TEXTURE_PRIORITY = 0x8066

pattern GL_TEXTURE_RESIDENT = 0x8067

pattern GL_TEXTURE_STACK_DEPTH = 0x0BA5

pattern GL_TRANSFORM_BIT = 0x00001000

pattern GL_TRANSPOSE_COLOR_MATRIX = 0x84E6

pattern GL_TRANSPOSE_MODELVIEW_MATRIX = 0x84E3

pattern GL_TRANSPOSE_PROJECTION_MATRIX = 0x84E4

pattern GL_TRANSPOSE_TEXTURE_MATRIX = 0x84E5

pattern GL_V2F = 0x2A20

pattern GL_V3F = 0x2A21

pattern GL_VERTEX_ARRAY_BUFFER_BINDING = 0x8896

pattern GL_VERTEX_ARRAY_POINTER = 0x808E

pattern GL_VERTEX_ARRAY_SIZE = 0x807A

pattern GL_VERTEX_ARRAY_STRIDE = 0x807C

pattern GL_VERTEX_ARRAY_TYPE = 0x807B

pattern GL_VERTEX_PROGRAM_TWO_SIDE = 0x8643

pattern GL_VIEWPORT_BIT = 0x00000800

pattern GL_WEIGHT_ARRAY_BUFFER_BINDING = 0x889E

pattern GL_ZOOM_X = 0x0D16

pattern GL_ZOOM_Y = 0x0D17

glActiveTexture :: MonadIO m => GLenum -> m ()
glActiveTexture = ffienumIOV glActiveTextureFunPtr

glActiveTextureFunPtr :: FunPtr (GLenum -> IO ())
glActiveTextureFunPtr = unsafePerformIO (getProcAddress "glActiveTexture")

{-# NOINLINE glActiveTextureFunPtr #-}

glAttachShader :: MonadIO m => GLuint -> GLuint -> m ()
glAttachShader = ffiuintuintIOV glAttachShaderFunPtr

glAttachShaderFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glAttachShaderFunPtr = unsafePerformIO (getProcAddress "glAttachShader")

{-# NOINLINE glAttachShaderFunPtr #-}

glBeginConditionalRender :: MonadIO m => GLuint -> GLenum -> m ()
glBeginConditionalRender = ffiuintenumIOV glBeginConditionalRenderFunPtr

glBeginConditionalRenderFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glBeginConditionalRenderFunPtr = unsafePerformIO (getProcAddress "glBeginConditionalRender")

{-# NOINLINE glBeginConditionalRenderFunPtr #-}

glBeginQuery :: MonadIO m => GLenum -> GLuint -> m ()
glBeginQuery = ffienumuintIOV glBeginQueryFunPtr

glBeginQueryFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBeginQueryFunPtr = unsafePerformIO (getProcAddress "glBeginQuery")

{-# NOINLINE glBeginQueryFunPtr #-}

glBeginTransformFeedback :: MonadIO m => GLenum -> m ()
glBeginTransformFeedback = ffienumIOV glBeginTransformFeedbackFunPtr

glBeginTransformFeedbackFunPtr :: FunPtr (GLenum -> IO ())
glBeginTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glBeginTransformFeedback")

{-# NOINLINE glBeginTransformFeedbackFunPtr #-}

glBindAttribLocation :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
glBindAttribLocation = ffiuintuintPtrcharIOV glBindAttribLocationFunPtr

glBindAttribLocationFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindAttribLocationFunPtr = unsafePerformIO (getProcAddress "glBindAttribLocation")

{-# NOINLINE glBindAttribLocationFunPtr #-}

glBindBuffer :: MonadIO m => GLenum -> GLuint -> m ()
glBindBuffer = ffienumuintIOV glBindBufferFunPtr

glBindBufferFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindBufferFunPtr = unsafePerformIO (getProcAddress "glBindBuffer")

{-# NOINLINE glBindBufferFunPtr #-}

glBindBufferBase :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
glBindBufferBase = ffienumuintuintIOV glBindBufferBaseFunPtr

glBindBufferBaseFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
glBindBufferBaseFunPtr = unsafePerformIO (getProcAddress "glBindBufferBase")

{-# NOINLINE glBindBufferBaseFunPtr #-}

glBindBufferRange :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
glBindBufferRange = ffienumuintuintintptrsizeiptrIOV glBindBufferRangeFunPtr

glBindBufferRangeFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
glBindBufferRangeFunPtr = unsafePerformIO (getProcAddress "glBindBufferRange")

{-# NOINLINE glBindBufferRangeFunPtr #-}

glBindFragDataLocation :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
glBindFragDataLocation = ffiuintuintPtrcharIOV glBindFragDataLocationFunPtr

glBindFragDataLocationFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindFragDataLocationFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocation")

{-# NOINLINE glBindFragDataLocationFunPtr #-}

glBindTexture :: MonadIO m => GLenum -> GLuint -> m ()
glBindTexture = ffienumuintIOV glBindTextureFunPtr

glBindTextureFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindTextureFunPtr = unsafePerformIO (getProcAddress "glBindTexture")

{-# NOINLINE glBindTextureFunPtr #-}

glBlendEquationSeparate :: MonadIO m => GLenum -> GLenum -> m ()
glBlendEquationSeparate = ffienumenumIOV glBlendEquationSeparateFunPtr

glBlendEquationSeparateFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glBlendEquationSeparateFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparate")

{-# NOINLINE glBlendEquationSeparateFunPtr #-}

glBlendFunc :: MonadIO m => GLenum -> GLenum -> m ()
glBlendFunc = ffienumenumIOV glBlendFuncFunPtr

glBlendFuncFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glBlendFuncFunPtr = unsafePerformIO (getProcAddress "glBlendFunc")

{-# NOINLINE glBlendFuncFunPtr #-}

glBlendFuncSeparate :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
glBlendFuncSeparate = ffienumenumenumenumIOV glBlendFuncSeparateFunPtr

glBlendFuncSeparateFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glBlendFuncSeparateFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparate")

{-# NOINLINE glBlendFuncSeparateFunPtr #-}

glBufferData :: MonadIO m => GLenum -> GLsizeiptr -> Ptr () -> GLenum -> m ()
glBufferData = ffienumsizeiptrPtrVenumIOV glBufferDataFunPtr

glBufferDataFunPtr :: FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLenum -> IO ())
glBufferDataFunPtr = unsafePerformIO (getProcAddress "glBufferData")

{-# NOINLINE glBufferDataFunPtr #-}

glBufferSubData :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
glBufferSubData = ffienumintptrsizeiptrPtrVIOV glBufferSubDataFunPtr

glBufferSubDataFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
glBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glBufferSubData")

{-# NOINLINE glBufferSubDataFunPtr #-}

glClampColor :: MonadIO m => GLenum -> GLenum -> m ()
glClampColor = ffienumenumIOV glClampColorFunPtr

glClampColorFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glClampColorFunPtr = unsafePerformIO (getProcAddress "glClampColor")

{-# NOINLINE glClampColorFunPtr #-}

glClear :: MonadIO m => GLbitfield -> m ()
glClear = ffibitfieldIOV glClearFunPtr

glClearFunPtr :: FunPtr (GLbitfield -> IO ())
glClearFunPtr = unsafePerformIO (getProcAddress "glClear")

{-# NOINLINE glClearFunPtr #-}

glClearBufferfi :: MonadIO m => GLenum -> GLint -> GLfloat -> GLint -> m ()
glClearBufferfi = ffienumintfloatintIOV glClearBufferfiFunPtr

glClearBufferfiFunPtr :: FunPtr (GLenum -> GLint -> GLfloat -> GLint -> IO ())
glClearBufferfiFunPtr = unsafePerformIO (getProcAddress "glClearBufferfi")

{-# NOINLINE glClearBufferfiFunPtr #-}

glClearBufferfv :: MonadIO m => GLenum -> GLint -> Ptr GLfloat -> m ()
glClearBufferfv = ffienumintPtrfloatIOV glClearBufferfvFunPtr

glClearBufferfvFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLfloat -> IO ())
glClearBufferfvFunPtr = unsafePerformIO (getProcAddress "glClearBufferfv")

{-# NOINLINE glClearBufferfvFunPtr #-}

glClearBufferiv :: MonadIO m => GLenum -> GLint -> Ptr GLint -> m ()
glClearBufferiv = ffienumintPtrintIOV glClearBufferivFunPtr

glClearBufferivFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLint -> IO ())
glClearBufferivFunPtr = unsafePerformIO (getProcAddress "glClearBufferiv")

{-# NOINLINE glClearBufferivFunPtr #-}

glClearBufferuiv :: MonadIO m => GLenum -> GLint -> Ptr GLuint -> m ()
glClearBufferuiv = ffienumintPtruintIOV glClearBufferuivFunPtr

glClearBufferuivFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLuint -> IO ())
glClearBufferuivFunPtr = unsafePerformIO (getProcAddress "glClearBufferuiv")

{-# NOINLINE glClearBufferuivFunPtr #-}

glClearColor :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glClearColor = ffifloatfloatfloatfloatIOV glClearColorFunPtr

glClearColorFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glClearColorFunPtr = unsafePerformIO (getProcAddress "glClearColor")

{-# NOINLINE glClearColorFunPtr #-}

glClearDepth :: MonadIO m => GLdouble -> m ()
glClearDepth = ffidoubleIOV glClearDepthFunPtr

glClearDepthFunPtr :: FunPtr (GLdouble -> IO ())
glClearDepthFunPtr = unsafePerformIO (getProcAddress "glClearDepth")

{-# NOINLINE glClearDepthFunPtr #-}

glClearStencil :: MonadIO m => GLint -> m ()
glClearStencil = ffiintIOV glClearStencilFunPtr

glClearStencilFunPtr :: FunPtr (GLint -> IO ())
glClearStencilFunPtr = unsafePerformIO (getProcAddress "glClearStencil")

{-# NOINLINE glClearStencilFunPtr #-}

glColorMask :: MonadIO m => GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMask = ffibooleanbooleanbooleanbooleanIOV glColorMaskFunPtr

glColorMaskFunPtr :: FunPtr (GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskFunPtr = unsafePerformIO (getProcAddress "glColorMask")

{-# NOINLINE glColorMaskFunPtr #-}

glColorMaski :: MonadIO m => GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMaski = ffiuintbooleanbooleanbooleanbooleanIOV glColorMaskiFunPtr

glColorMaskiFunPtr :: FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiFunPtr = unsafePerformIO (getProcAddress "glColorMaski")

{-# NOINLINE glColorMaskiFunPtr #-}

glCompileShader :: MonadIO m => GLuint -> m ()
glCompileShader = ffiuintIOV glCompileShaderFunPtr

glCompileShaderFunPtr :: FunPtr (GLuint -> IO ())
glCompileShaderFunPtr = unsafePerformIO (getProcAddress "glCompileShader")

{-# NOINLINE glCompileShaderFunPtr #-}

glCompressedTexImage1D :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
glCompressedTexImage1D = ffienumintenumsizeiintsizeiPtrVIOV glCompressedTexImage1DFunPtr

glCompressedTexImage1DFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
glCompressedTexImage1DFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage1D")

{-# NOINLINE glCompressedTexImage1DFunPtr #-}

glCompressedTexImage2D :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
glCompressedTexImage2D = ffienumintenumsizeisizeiintsizeiPtrVIOV glCompressedTexImage2DFunPtr

glCompressedTexImage2DFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
glCompressedTexImage2DFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage2D")

{-# NOINLINE glCompressedTexImage2DFunPtr #-}

glCompressedTexImage3D :: MonadIO m => GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> m ()
glCompressedTexImage3D = ffienumintenumsizeisizeisizeiintsizeiPtrVIOV glCompressedTexImage3DFunPtr

glCompressedTexImage3DFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLsizei -> Ptr () -> IO ())
glCompressedTexImage3DFunPtr = unsafePerformIO (getProcAddress "glCompressedTexImage3D")

{-# NOINLINE glCompressedTexImage3DFunPtr #-}

glCompressedTexSubImage1D :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTexSubImage1D = ffienumintintsizeienumsizeiPtrVIOV glCompressedTexSubImage1DFunPtr

glCompressedTexSubImage1DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTexSubImage1DFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage1D")

{-# NOINLINE glCompressedTexSubImage1DFunPtr #-}

glCompressedTexSubImage2D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTexSubImage2D = ffienumintintintsizeisizeienumsizeiPtrVIOV glCompressedTexSubImage2DFunPtr

glCompressedTexSubImage2DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTexSubImage2DFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage2D")

{-# NOINLINE glCompressedTexSubImage2DFunPtr #-}

glCompressedTexSubImage3D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTexSubImage3D = ffienumintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedTexSubImage3DFunPtr

glCompressedTexSubImage3DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTexSubImage3DFunPtr = unsafePerformIO (getProcAddress "glCompressedTexSubImage3D")

{-# NOINLINE glCompressedTexSubImage3DFunPtr #-}

glCopyTexImage1D :: MonadIO m => GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> m ()
glCopyTexImage1D = ffienumintenumintintsizeiintIOV glCopyTexImage1DFunPtr

glCopyTexImage1DFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLint -> IO ())
glCopyTexImage1DFunPtr = unsafePerformIO (getProcAddress "glCopyTexImage1D")

{-# NOINLINE glCopyTexImage1DFunPtr #-}

glCopyTexImage2D :: MonadIO m => GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
glCopyTexImage2D = ffienumintenumintintsizeisizeiintIOV glCopyTexImage2DFunPtr

glCopyTexImage2DFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ())
glCopyTexImage2DFunPtr = unsafePerformIO (getProcAddress "glCopyTexImage2D")

{-# NOINLINE glCopyTexImage2DFunPtr #-}

glCopyTexSubImage1D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
glCopyTexSubImage1D = ffienumintintintintsizeiIOV glCopyTexSubImage1DFunPtr

glCopyTexSubImage1DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
glCopyTexSubImage1DFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage1D")

{-# NOINLINE glCopyTexSubImage1DFunPtr #-}

glCopyTexSubImage2D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glCopyTexSubImage2D = ffienumintintintintintsizeisizeiIOV glCopyTexSubImage2DFunPtr

glCopyTexSubImage2DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glCopyTexSubImage2DFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage2D")

{-# NOINLINE glCopyTexSubImage2DFunPtr #-}

glCopyTexSubImage3D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glCopyTexSubImage3D = ffienumintintintintintintsizeisizeiIOV glCopyTexSubImage3DFunPtr

glCopyTexSubImage3DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glCopyTexSubImage3DFunPtr = unsafePerformIO (getProcAddress "glCopyTexSubImage3D")

{-# NOINLINE glCopyTexSubImage3DFunPtr #-}

glCreateProgram :: MonadIO m => m GLuint
glCreateProgram = ffiIOuint glCreateProgramFunPtr

glCreateProgramFunPtr :: FunPtr (IO GLuint)
glCreateProgramFunPtr = unsafePerformIO (getProcAddress "glCreateProgram")

{-# NOINLINE glCreateProgramFunPtr #-}

glCreateShader :: MonadIO m => GLenum -> m GLuint
glCreateShader = ffienumIOuint glCreateShaderFunPtr

glCreateShaderFunPtr :: FunPtr (GLenum -> IO GLuint)
glCreateShaderFunPtr = unsafePerformIO (getProcAddress "glCreateShader")

{-# NOINLINE glCreateShaderFunPtr #-}

glCullFace :: MonadIO m => GLenum -> m ()
glCullFace = ffienumIOV glCullFaceFunPtr

glCullFaceFunPtr :: FunPtr (GLenum -> IO ())
glCullFaceFunPtr = unsafePerformIO (getProcAddress "glCullFace")

{-# NOINLINE glCullFaceFunPtr #-}

glDeleteBuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteBuffers = ffisizeiPtruintIOV glDeleteBuffersFunPtr

glDeleteBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteBuffersFunPtr = unsafePerformIO (getProcAddress "glDeleteBuffers")

{-# NOINLINE glDeleteBuffersFunPtr #-}

glDeleteProgram :: MonadIO m => GLuint -> m ()
glDeleteProgram = ffiuintIOV glDeleteProgramFunPtr

glDeleteProgramFunPtr :: FunPtr (GLuint -> IO ())
glDeleteProgramFunPtr = unsafePerformIO (getProcAddress "glDeleteProgram")

{-# NOINLINE glDeleteProgramFunPtr #-}

glDeleteQueries :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteQueries = ffisizeiPtruintIOV glDeleteQueriesFunPtr

glDeleteQueriesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteQueriesFunPtr = unsafePerformIO (getProcAddress "glDeleteQueries")

{-# NOINLINE glDeleteQueriesFunPtr #-}

glDeleteShader :: MonadIO m => GLuint -> m ()
glDeleteShader = ffiuintIOV glDeleteShaderFunPtr

glDeleteShaderFunPtr :: FunPtr (GLuint -> IO ())
glDeleteShaderFunPtr = unsafePerformIO (getProcAddress "glDeleteShader")

{-# NOINLINE glDeleteShaderFunPtr #-}

glDeleteTextures :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteTextures = ffisizeiPtruintIOV glDeleteTexturesFunPtr

glDeleteTexturesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteTexturesFunPtr = unsafePerformIO (getProcAddress "glDeleteTextures")

{-# NOINLINE glDeleteTexturesFunPtr #-}

glDepthFunc :: MonadIO m => GLenum -> m ()
glDepthFunc = ffienumIOV glDepthFuncFunPtr

glDepthFuncFunPtr :: FunPtr (GLenum -> IO ())
glDepthFuncFunPtr = unsafePerformIO (getProcAddress "glDepthFunc")

{-# NOINLINE glDepthFuncFunPtr #-}

glDepthMask :: MonadIO m => GLboolean -> m ()
glDepthMask = ffibooleanIOV glDepthMaskFunPtr

glDepthMaskFunPtr :: FunPtr (GLboolean -> IO ())
glDepthMaskFunPtr = unsafePerformIO (getProcAddress "glDepthMask")

{-# NOINLINE glDepthMaskFunPtr #-}

glDepthRange :: MonadIO m => GLdouble -> GLdouble -> m ()
glDepthRange = ffidoubledoubleIOV glDepthRangeFunPtr

glDepthRangeFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glDepthRangeFunPtr = unsafePerformIO (getProcAddress "glDepthRange")

{-# NOINLINE glDepthRangeFunPtr #-}

glDetachShader :: MonadIO m => GLuint -> GLuint -> m ()
glDetachShader = ffiuintuintIOV glDetachShaderFunPtr

glDetachShaderFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glDetachShaderFunPtr = unsafePerformIO (getProcAddress "glDetachShader")

{-# NOINLINE glDetachShaderFunPtr #-}

glDisable :: MonadIO m => GLenum -> m ()
glDisable = ffienumIOV glDisableFunPtr

glDisableFunPtr :: FunPtr (GLenum -> IO ())
glDisableFunPtr = unsafePerformIO (getProcAddress "glDisable")

{-# NOINLINE glDisableFunPtr #-}

glDisableVertexAttribArray :: MonadIO m => GLuint -> m ()
glDisableVertexAttribArray = ffiuintIOV glDisableVertexAttribArrayFunPtr

glDisableVertexAttribArrayFunPtr :: FunPtr (GLuint -> IO ())
glDisableVertexAttribArrayFunPtr = unsafePerformIO (getProcAddress "glDisableVertexAttribArray")

{-# NOINLINE glDisableVertexAttribArrayFunPtr #-}

glDisablei :: MonadIO m => GLenum -> GLuint -> m ()
glDisablei = ffienumuintIOV glDisableiFunPtr

glDisableiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDisableiFunPtr = unsafePerformIO (getProcAddress "glDisablei")

{-# NOINLINE glDisableiFunPtr #-}

glDrawArrays :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
glDrawArrays = ffienumintsizeiIOV glDrawArraysFunPtr

glDrawArraysFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> IO ())
glDrawArraysFunPtr = unsafePerformIO (getProcAddress "glDrawArrays")

{-# NOINLINE glDrawArraysFunPtr #-}

glDrawArraysInstanced :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
glDrawArraysInstanced = ffienumintsizeisizeiIOV glDrawArraysInstancedFunPtr

glDrawArraysInstancedFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
glDrawArraysInstancedFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstanced")

{-# NOINLINE glDrawArraysInstancedFunPtr #-}

glDrawBuffer :: MonadIO m => GLenum -> m ()
glDrawBuffer = ffienumIOV glDrawBufferFunPtr

glDrawBufferFunPtr :: FunPtr (GLenum -> IO ())
glDrawBufferFunPtr = unsafePerformIO (getProcAddress "glDrawBuffer")

{-# NOINLINE glDrawBufferFunPtr #-}

glDrawBuffers :: MonadIO m => GLsizei -> Ptr GLenum -> m ()
glDrawBuffers = ffisizeiPtrenumIOV glDrawBuffersFunPtr

glDrawBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
glDrawBuffersFunPtr = unsafePerformIO (getProcAddress "glDrawBuffers")

{-# NOINLINE glDrawBuffersFunPtr #-}

glDrawElements :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> m ()
glDrawElements = ffienumsizeienumPtrVIOV glDrawElementsFunPtr

glDrawElementsFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> IO ())
glDrawElementsFunPtr = unsafePerformIO (getProcAddress "glDrawElements")

{-# NOINLINE glDrawElementsFunPtr #-}

glDrawElementsInstanced :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
glDrawElementsInstanced = ffienumsizeienumPtrVsizeiIOV glDrawElementsInstancedFunPtr

glDrawElementsInstancedFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
glDrawElementsInstancedFunPtr = unsafePerformIO (getProcAddress "glDrawElementsInstanced")

{-# NOINLINE glDrawElementsInstancedFunPtr #-}

glDrawRangeElements :: MonadIO m => GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> m ()
glDrawRangeElements = ffienumuintuintsizeienumPtrVIOV glDrawRangeElementsFunPtr

glDrawRangeElementsFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Ptr () -> IO ())
glDrawRangeElementsFunPtr = unsafePerformIO (getProcAddress "glDrawRangeElements")

{-# NOINLINE glDrawRangeElementsFunPtr #-}

glEnable :: MonadIO m => GLenum -> m ()
glEnable = ffienumIOV glEnableFunPtr

glEnableFunPtr :: FunPtr (GLenum -> IO ())
glEnableFunPtr = unsafePerformIO (getProcAddress "glEnable")

{-# NOINLINE glEnableFunPtr #-}

glEnableVertexAttribArray :: MonadIO m => GLuint -> m ()
glEnableVertexAttribArray = ffiuintIOV glEnableVertexAttribArrayFunPtr

glEnableVertexAttribArrayFunPtr :: FunPtr (GLuint -> IO ())
glEnableVertexAttribArrayFunPtr = unsafePerformIO (getProcAddress "glEnableVertexAttribArray")

{-# NOINLINE glEnableVertexAttribArrayFunPtr #-}

glEnablei :: MonadIO m => GLenum -> GLuint -> m ()
glEnablei = ffienumuintIOV glEnableiFunPtr

glEnableiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEnableiFunPtr = unsafePerformIO (getProcAddress "glEnablei")

{-# NOINLINE glEnableiFunPtr #-}

glEndConditionalRender :: MonadIO m => m ()
glEndConditionalRender = ffiIOV glEndConditionalRenderFunPtr

glEndConditionalRenderFunPtr :: FunPtr (IO ())
glEndConditionalRenderFunPtr = unsafePerformIO (getProcAddress "glEndConditionalRender")

{-# NOINLINE glEndConditionalRenderFunPtr #-}

glEndQuery :: MonadIO m => GLenum -> m ()
glEndQuery = ffienumIOV glEndQueryFunPtr

glEndQueryFunPtr :: FunPtr (GLenum -> IO ())
glEndQueryFunPtr = unsafePerformIO (getProcAddress "glEndQuery")

{-# NOINLINE glEndQueryFunPtr #-}

glEndTransformFeedback :: MonadIO m => m ()
glEndTransformFeedback = ffiIOV glEndTransformFeedbackFunPtr

glEndTransformFeedbackFunPtr :: FunPtr (IO ())
glEndTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glEndTransformFeedback")

{-# NOINLINE glEndTransformFeedbackFunPtr #-}

glFinish :: MonadIO m => m ()
glFinish = ffiIOV glFinishFunPtr

glFinishFunPtr :: FunPtr (IO ())
glFinishFunPtr = unsafePerformIO (getProcAddress "glFinish")

{-# NOINLINE glFinishFunPtr #-}

glFlush :: MonadIO m => m ()
glFlush = ffiIOV glFlushFunPtr

glFlushFunPtr :: FunPtr (IO ())
glFlushFunPtr = unsafePerformIO (getProcAddress "glFlush")

{-# NOINLINE glFlushFunPtr #-}

glFrontFace :: MonadIO m => GLenum -> m ()
glFrontFace = ffienumIOV glFrontFaceFunPtr

glFrontFaceFunPtr :: FunPtr (GLenum -> IO ())
glFrontFaceFunPtr = unsafePerformIO (getProcAddress "glFrontFace")

{-# NOINLINE glFrontFaceFunPtr #-}

glGenBuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenBuffers = ffisizeiPtruintIOV glGenBuffersFunPtr

glGenBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenBuffersFunPtr = unsafePerformIO (getProcAddress "glGenBuffers")

{-# NOINLINE glGenBuffersFunPtr #-}

glGenQueries :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenQueries = ffisizeiPtruintIOV glGenQueriesFunPtr

glGenQueriesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenQueriesFunPtr = unsafePerformIO (getProcAddress "glGenQueries")

{-# NOINLINE glGenQueriesFunPtr #-}

glGenTextures :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenTextures = ffisizeiPtruintIOV glGenTexturesFunPtr

glGenTexturesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenTexturesFunPtr = unsafePerformIO (getProcAddress "glGenTextures")

{-# NOINLINE glGenTexturesFunPtr #-}

glGetActiveAttrib :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> m ()
glGetActiveAttrib = ffiuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV glGetActiveAttribFunPtr

glGetActiveAttribFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ())
glGetActiveAttribFunPtr = unsafePerformIO (getProcAddress "glGetActiveAttrib")

{-# NOINLINE glGetActiveAttribFunPtr #-}

glGetActiveUniform :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> m ()
glGetActiveUniform = ffiuintuintsizeiPtrsizeiPtrintPtrenumPtrcharIOV glGetActiveUniformFunPtr

glGetActiveUniformFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLchar -> IO ())
glGetActiveUniformFunPtr = unsafePerformIO (getProcAddress "glGetActiveUniform")

{-# NOINLINE glGetActiveUniformFunPtr #-}

glGetAttachedShaders :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> m ()
glGetAttachedShaders = ffiuintsizeiPtrsizeiPtruintIOV glGetAttachedShadersFunPtr

glGetAttachedShadersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLuint -> IO ())
glGetAttachedShadersFunPtr = unsafePerformIO (getProcAddress "glGetAttachedShaders")

{-# NOINLINE glGetAttachedShadersFunPtr #-}

glGetAttribLocation :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetAttribLocation = ffiuintPtrcharIOint glGetAttribLocationFunPtr

glGetAttribLocationFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetAttribLocationFunPtr = unsafePerformIO (getProcAddress "glGetAttribLocation")

{-# NOINLINE glGetAttribLocationFunPtr #-}

glGetBooleani_v :: MonadIO m => GLenum -> GLuint -> Ptr GLboolean -> m ()
glGetBooleani_v = ffienumuintPtrbooleanIOV glGetBooleani_vFunPtr

glGetBooleani_vFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLboolean -> IO ())
glGetBooleani_vFunPtr = unsafePerformIO (getProcAddress "glGetBooleani_v")

{-# NOINLINE glGetBooleani_vFunPtr #-}

glGetBooleanv :: MonadIO m => GLenum -> Ptr GLboolean -> m ()
glGetBooleanv = ffienumPtrbooleanIOV glGetBooleanvFunPtr

glGetBooleanvFunPtr :: FunPtr (GLenum -> Ptr GLboolean -> IO ())
glGetBooleanvFunPtr = unsafePerformIO (getProcAddress "glGetBooleanv")

{-# NOINLINE glGetBooleanvFunPtr #-}

glGetBufferParameteri64v :: MonadIO m => GLenum -> GLenum -> Ptr GLint64 -> m ()
glGetBufferParameteri64v = ffienumenumPtrint64IOV glGetBufferParameteri64vFunPtr

glGetBufferParameteri64vFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint64 -> IO ())
glGetBufferParameteri64vFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameteri64v")

{-# NOINLINE glGetBufferParameteri64vFunPtr #-}

glGetBufferParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetBufferParameteriv = ffienumenumPtrintIOV glGetBufferParameterivFunPtr

glGetBufferParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetBufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameteriv")

{-# NOINLINE glGetBufferParameterivFunPtr #-}

glGetBufferPointerv :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
glGetBufferPointerv = ffienumenumPtrVIOV glGetBufferPointervFunPtr

glGetBufferPointervFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
glGetBufferPointervFunPtr = unsafePerformIO (getProcAddress "glGetBufferPointerv")

{-# NOINLINE glGetBufferPointervFunPtr #-}

glGetBufferSubData :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
glGetBufferSubData = ffienumintptrsizeiptrPtrVIOV glGetBufferSubDataFunPtr

glGetBufferSubDataFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
glGetBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glGetBufferSubData")

{-# NOINLINE glGetBufferSubDataFunPtr #-}

glGetCompressedTexImage :: MonadIO m => GLenum -> GLint -> Ptr () -> m ()
glGetCompressedTexImage = ffienumintPtrVIOV glGetCompressedTexImageFunPtr

glGetCompressedTexImageFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glGetCompressedTexImageFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTexImage")

{-# NOINLINE glGetCompressedTexImageFunPtr #-}

glGetDoublev :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glGetDoublev = ffienumPtrdoubleIOV glGetDoublevFunPtr

glGetDoublevFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glGetDoublevFunPtr = unsafePerformIO (getProcAddress "glGetDoublev")

{-# NOINLINE glGetDoublevFunPtr #-}

glGetError :: MonadIO m => m GLenum
glGetError = ffiIOenum glGetErrorFunPtr

glGetErrorFunPtr :: FunPtr (IO GLenum)
glGetErrorFunPtr = unsafePerformIO (getProcAddress "glGetError")

{-# NOINLINE glGetErrorFunPtr #-}

glGetFloatv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glGetFloatv = ffienumPtrfloatIOV glGetFloatvFunPtr

glGetFloatvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glGetFloatvFunPtr = unsafePerformIO (getProcAddress "glGetFloatv")

{-# NOINLINE glGetFloatvFunPtr #-}

glGetFragDataLocation :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetFragDataLocation = ffiuintPtrcharIOint glGetFragDataLocationFunPtr

glGetFragDataLocationFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetFragDataLocationFunPtr = unsafePerformIO (getProcAddress "glGetFragDataLocation")

{-# NOINLINE glGetFragDataLocationFunPtr #-}

glGetInteger64i_v :: MonadIO m => GLenum -> GLuint -> Ptr GLint64 -> m ()
glGetInteger64i_v = ffienumuintPtrint64IOV glGetInteger64i_vFunPtr

glGetInteger64i_vFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint64 -> IO ())
glGetInteger64i_vFunPtr = unsafePerformIO (getProcAddress "glGetInteger64i_v")

{-# NOINLINE glGetInteger64i_vFunPtr #-}

glGetIntegeri_v :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
glGetIntegeri_v = ffienumuintPtrintIOV glGetIntegeri_vFunPtr

glGetIntegeri_vFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
glGetIntegeri_vFunPtr = unsafePerformIO (getProcAddress "glGetIntegeri_v")

{-# NOINLINE glGetIntegeri_vFunPtr #-}

glGetIntegerv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glGetIntegerv = ffienumPtrintIOV glGetIntegervFunPtr

glGetIntegervFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glGetIntegervFunPtr = unsafePerformIO (getProcAddress "glGetIntegerv")

{-# NOINLINE glGetIntegervFunPtr #-}

glGetProgramInfoLog :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetProgramInfoLog = ffiuintsizeiPtrsizeiPtrcharIOV glGetProgramInfoLogFunPtr

glGetProgramInfoLogFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramInfoLogFunPtr = unsafePerformIO (getProcAddress "glGetProgramInfoLog")

{-# NOINLINE glGetProgramInfoLogFunPtr #-}

glGetProgramiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetProgramiv = ffiuintenumPtrintIOV glGetProgramivFunPtr

glGetProgramivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetProgramivFunPtr = unsafePerformIO (getProcAddress "glGetProgramiv")

{-# NOINLINE glGetProgramivFunPtr #-}

glGetQueryObjectiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetQueryObjectiv = ffiuintenumPtrintIOV glGetQueryObjectivFunPtr

glGetQueryObjectivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetQueryObjectivFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectiv")

{-# NOINLINE glGetQueryObjectivFunPtr #-}

glGetQueryObjectuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetQueryObjectuiv = ffiuintenumPtruintIOV glGetQueryObjectuivFunPtr

glGetQueryObjectuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetQueryObjectuivFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectuiv")

{-# NOINLINE glGetQueryObjectuivFunPtr #-}

glGetQueryiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetQueryiv = ffienumenumPtrintIOV glGetQueryivFunPtr

glGetQueryivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetQueryivFunPtr = unsafePerformIO (getProcAddress "glGetQueryiv")

{-# NOINLINE glGetQueryivFunPtr #-}

glGetShaderInfoLog :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetShaderInfoLog = ffiuintsizeiPtrsizeiPtrcharIOV glGetShaderInfoLogFunPtr

glGetShaderInfoLogFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetShaderInfoLogFunPtr = unsafePerformIO (getProcAddress "glGetShaderInfoLog")

{-# NOINLINE glGetShaderInfoLogFunPtr #-}

glGetShaderSource :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetShaderSource = ffiuintsizeiPtrsizeiPtrcharIOV glGetShaderSourceFunPtr

glGetShaderSourceFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetShaderSourceFunPtr = unsafePerformIO (getProcAddress "glGetShaderSource")

{-# NOINLINE glGetShaderSourceFunPtr #-}

glGetShaderiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetShaderiv = ffiuintenumPtrintIOV glGetShaderivFunPtr

glGetShaderivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetShaderivFunPtr = unsafePerformIO (getProcAddress "glGetShaderiv")

{-# NOINLINE glGetShaderivFunPtr #-}

glGetString :: MonadIO m => GLenum -> m (Ptr GLubyte)
glGetString = ffienumIOPtrubyte glGetStringFunPtr

glGetStringFunPtr :: FunPtr (GLenum -> IO (Ptr GLubyte))
glGetStringFunPtr = unsafePerformIO (getProcAddress "glGetString")

{-# NOINLINE glGetStringFunPtr #-}

glGetStringi :: MonadIO m => GLenum -> GLuint -> m (Ptr GLubyte)
glGetStringi = ffienumuintIOPtrubyte glGetStringiFunPtr

glGetStringiFunPtr :: FunPtr (GLenum -> GLuint -> IO (Ptr GLubyte))
glGetStringiFunPtr = unsafePerformIO (getProcAddress "glGetStringi")

{-# NOINLINE glGetStringiFunPtr #-}

glGetTexImage :: MonadIO m => GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
glGetTexImage = ffienumintenumenumPtrVIOV glGetTexImageFunPtr

glGetTexImageFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
glGetTexImageFunPtr = unsafePerformIO (getProcAddress "glGetTexImage")

{-# NOINLINE glGetTexImageFunPtr #-}

glGetTexLevelParameterfv :: MonadIO m => GLenum -> GLint -> GLenum -> Ptr GLfloat -> m ()
glGetTexLevelParameterfv = ffienumintenumPtrfloatIOV glGetTexLevelParameterfvFunPtr

glGetTexLevelParameterfvFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> Ptr GLfloat -> IO ())
glGetTexLevelParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTexLevelParameterfv")

{-# NOINLINE glGetTexLevelParameterfvFunPtr #-}

glGetTexLevelParameteriv :: MonadIO m => GLenum -> GLint -> GLenum -> Ptr GLint -> m ()
glGetTexLevelParameteriv = ffienumintenumPtrintIOV glGetTexLevelParameterivFunPtr

glGetTexLevelParameterivFunPtr :: FunPtr (GLenum -> GLint -> GLenum -> Ptr GLint -> IO ())
glGetTexLevelParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTexLevelParameteriv")

{-# NOINLINE glGetTexLevelParameterivFunPtr #-}

glGetTexParameterIiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexParameterIiv = ffienumenumPtrintIOV glGetTexParameterIivFunPtr

glGetTexParameterIivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexParameterIivFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIiv")

{-# NOINLINE glGetTexParameterIivFunPtr #-}

glGetTexParameterIuiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glGetTexParameterIuiv = ffienumenumPtruintIOV glGetTexParameterIuivFunPtr

glGetTexParameterIuivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glGetTexParameterIuivFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIuiv")

{-# NOINLINE glGetTexParameterIuivFunPtr #-}

glGetTexParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetTexParameterfv = ffienumenumPtrfloatIOV glGetTexParameterfvFunPtr

glGetTexParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetTexParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterfv")

{-# NOINLINE glGetTexParameterfvFunPtr #-}

glGetTexParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexParameteriv = ffienumenumPtrintIOV glGetTexParameterivFunPtr

glGetTexParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTexParameteriv")

{-# NOINLINE glGetTexParameterivFunPtr #-}

glGetTransformFeedbackVarying :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> m ()
glGetTransformFeedbackVarying = ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV glGetTransformFeedbackVaryingFunPtr

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

{-# NOINLINE glGetTransformFeedbackVaryingFunPtr #-}

glGetUniformLocation :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetUniformLocation = ffiuintPtrcharIOint glGetUniformLocationFunPtr

glGetUniformLocationFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetUniformLocationFunPtr = unsafePerformIO (getProcAddress "glGetUniformLocation")

{-# NOINLINE glGetUniformLocationFunPtr #-}

glGetUniformfv :: MonadIO m => GLuint -> GLint -> Ptr GLfloat -> m ()
glGetUniformfv = ffiuintintPtrfloatIOV glGetUniformfvFunPtr

glGetUniformfvFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLfloat -> IO ())
glGetUniformfvFunPtr = unsafePerformIO (getProcAddress "glGetUniformfv")

{-# NOINLINE glGetUniformfvFunPtr #-}

glGetUniformiv :: MonadIO m => GLuint -> GLint -> Ptr GLint -> m ()
glGetUniformiv = ffiuintintPtrintIOV glGetUniformivFunPtr

glGetUniformivFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLint -> IO ())
glGetUniformivFunPtr = unsafePerformIO (getProcAddress "glGetUniformiv")

{-# NOINLINE glGetUniformivFunPtr #-}

glGetUniformuiv :: MonadIO m => GLuint -> GLint -> Ptr GLuint -> m ()
glGetUniformuiv = ffiuintintPtruintIOV glGetUniformuivFunPtr

glGetUniformuivFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint -> IO ())
glGetUniformuivFunPtr = unsafePerformIO (getProcAddress "glGetUniformuiv")

{-# NOINLINE glGetUniformuivFunPtr #-}

glGetVertexAttribIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribIiv = ffiuintenumPtrintIOV glGetVertexAttribIivFunPtr

glGetVertexAttribIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribIivFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIiv")

{-# NOINLINE glGetVertexAttribIivFunPtr #-}

glGetVertexAttribIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetVertexAttribIuiv = ffiuintenumPtruintIOV glGetVertexAttribIuivFunPtr

glGetVertexAttribIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetVertexAttribIuivFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIuiv")

{-# NOINLINE glGetVertexAttribIuivFunPtr #-}

glGetVertexAttribPointerv :: MonadIO m => GLuint -> GLenum -> Ptr () -> m ()
glGetVertexAttribPointerv = ffiuintenumPtrVIOV glGetVertexAttribPointervFunPtr

glGetVertexAttribPointervFunPtr :: FunPtr (GLuint -> GLenum -> Ptr () -> IO ())
glGetVertexAttribPointervFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribPointerv")

{-# NOINLINE glGetVertexAttribPointervFunPtr #-}

glGetVertexAttribdv :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
glGetVertexAttribdv = ffiuintenumPtrdoubleIOV glGetVertexAttribdvFunPtr

glGetVertexAttribdvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
glGetVertexAttribdvFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribdv")

{-# NOINLINE glGetVertexAttribdvFunPtr #-}

glGetVertexAttribfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetVertexAttribfv = ffiuintenumPtrfloatIOV glGetVertexAttribfvFunPtr

glGetVertexAttribfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetVertexAttribfvFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribfv")

{-# NOINLINE glGetVertexAttribfvFunPtr #-}

glGetVertexAttribiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribiv = ffiuintenumPtrintIOV glGetVertexAttribivFunPtr

glGetVertexAttribivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribivFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribiv")

{-# NOINLINE glGetVertexAttribivFunPtr #-}

glHint :: MonadIO m => GLenum -> GLenum -> m ()
glHint = ffienumenumIOV glHintFunPtr

glHintFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glHintFunPtr = unsafePerformIO (getProcAddress "glHint")

{-# NOINLINE glHintFunPtr #-}

glIsBuffer :: MonadIO m => GLuint -> m GLboolean
glIsBuffer = ffiuintIOboolean glIsBufferFunPtr

glIsBufferFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsBufferFunPtr = unsafePerformIO (getProcAddress "glIsBuffer")

{-# NOINLINE glIsBufferFunPtr #-}

glIsEnabled :: MonadIO m => GLenum -> m GLboolean
glIsEnabled = ffienumIOboolean glIsEnabledFunPtr

glIsEnabledFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsEnabledFunPtr = unsafePerformIO (getProcAddress "glIsEnabled")

{-# NOINLINE glIsEnabledFunPtr #-}

glIsEnabledi :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsEnabledi = ffienumuintIOboolean glIsEnablediFunPtr

glIsEnablediFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsEnablediFunPtr = unsafePerformIO (getProcAddress "glIsEnabledi")

{-# NOINLINE glIsEnablediFunPtr #-}

glIsProgram :: MonadIO m => GLuint -> m GLboolean
glIsProgram = ffiuintIOboolean glIsProgramFunPtr

glIsProgramFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramFunPtr = unsafePerformIO (getProcAddress "glIsProgram")

{-# NOINLINE glIsProgramFunPtr #-}

glIsQuery :: MonadIO m => GLuint -> m GLboolean
glIsQuery = ffiuintIOboolean glIsQueryFunPtr

glIsQueryFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsQueryFunPtr = unsafePerformIO (getProcAddress "glIsQuery")

{-# NOINLINE glIsQueryFunPtr #-}

glIsShader :: MonadIO m => GLuint -> m GLboolean
glIsShader = ffiuintIOboolean glIsShaderFunPtr

glIsShaderFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsShaderFunPtr = unsafePerformIO (getProcAddress "glIsShader")

{-# NOINLINE glIsShaderFunPtr #-}

glIsTexture :: MonadIO m => GLuint -> m GLboolean
glIsTexture = ffiuintIOboolean glIsTextureFunPtr

glIsTextureFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsTextureFunPtr = unsafePerformIO (getProcAddress "glIsTexture")

{-# NOINLINE glIsTextureFunPtr #-}

glLineWidth :: MonadIO m => GLfloat -> m ()
glLineWidth = ffifloatIOV glLineWidthFunPtr

glLineWidthFunPtr :: FunPtr (GLfloat -> IO ())
glLineWidthFunPtr = unsafePerformIO (getProcAddress "glLineWidth")

{-# NOINLINE glLineWidthFunPtr #-}

glLinkProgram :: MonadIO m => GLuint -> m ()
glLinkProgram = ffiuintIOV glLinkProgramFunPtr

glLinkProgramFunPtr :: FunPtr (GLuint -> IO ())
glLinkProgramFunPtr = unsafePerformIO (getProcAddress "glLinkProgram")

{-# NOINLINE glLinkProgramFunPtr #-}

glLogicOp :: MonadIO m => GLenum -> m ()
glLogicOp = ffienumIOV glLogicOpFunPtr

glLogicOpFunPtr :: FunPtr (GLenum -> IO ())
glLogicOpFunPtr = unsafePerformIO (getProcAddress "glLogicOp")

{-# NOINLINE glLogicOpFunPtr #-}

glMapBuffer :: MonadIO m => GLenum -> GLenum -> m (Ptr ())
glMapBuffer = ffienumenumIOPtrV glMapBufferFunPtr

glMapBufferFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
glMapBufferFunPtr = unsafePerformIO (getProcAddress "glMapBuffer")

{-# NOINLINE glMapBufferFunPtr #-}

glMultiDrawArrays :: MonadIO m => GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
glMultiDrawArrays = ffienumPtrintPtrsizeisizeiIOV glMultiDrawArraysFunPtr

glMultiDrawArraysFunPtr :: FunPtr (GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ())
glMultiDrawArraysFunPtr = unsafePerformIO (getProcAddress "glMultiDrawArrays")

{-# NOINLINE glMultiDrawArraysFunPtr #-}

glMultiDrawElements :: MonadIO m => GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> m ()
glMultiDrawElements = ffienumPtrsizeienumPtrVsizeiIOV glMultiDrawElementsFunPtr

glMultiDrawElementsFunPtr :: FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr () -> GLsizei -> IO ())
glMultiDrawElementsFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElements")

{-# NOINLINE glMultiDrawElementsFunPtr #-}

glPixelStoref :: MonadIO m => GLenum -> GLfloat -> m ()
glPixelStoref = ffienumfloatIOV glPixelStorefFunPtr

glPixelStorefFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glPixelStorefFunPtr = unsafePerformIO (getProcAddress "glPixelStoref")

{-# NOINLINE glPixelStorefFunPtr #-}

glPixelStorei :: MonadIO m => GLenum -> GLint -> m ()
glPixelStorei = ffienumintIOV glPixelStoreiFunPtr

glPixelStoreiFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPixelStoreiFunPtr = unsafePerformIO (getProcAddress "glPixelStorei")

{-# NOINLINE glPixelStoreiFunPtr #-}

glPointParameterf :: MonadIO m => GLenum -> GLfloat -> m ()
glPointParameterf = ffienumfloatIOV glPointParameterfFunPtr

glPointParameterfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glPointParameterfFunPtr = unsafePerformIO (getProcAddress "glPointParameterf")

{-# NOINLINE glPointParameterfFunPtr #-}

glPointParameterfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glPointParameterfv = ffienumPtrfloatIOV glPointParameterfvFunPtr

glPointParameterfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glPointParameterfvFunPtr = unsafePerformIO (getProcAddress "glPointParameterfv")

{-# NOINLINE glPointParameterfvFunPtr #-}

glPointParameteri :: MonadIO m => GLenum -> GLint -> m ()
glPointParameteri = ffienumintIOV glPointParameteriFunPtr

glPointParameteriFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPointParameteriFunPtr = unsafePerformIO (getProcAddress "glPointParameteri")

{-# NOINLINE glPointParameteriFunPtr #-}

glPointParameteriv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glPointParameteriv = ffienumPtrintIOV glPointParameterivFunPtr

glPointParameterivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glPointParameterivFunPtr = unsafePerformIO (getProcAddress "glPointParameteriv")

{-# NOINLINE glPointParameterivFunPtr #-}

glPointSize :: MonadIO m => GLfloat -> m ()
glPointSize = ffifloatIOV glPointSizeFunPtr

glPointSizeFunPtr :: FunPtr (GLfloat -> IO ())
glPointSizeFunPtr = unsafePerformIO (getProcAddress "glPointSize")

{-# NOINLINE glPointSizeFunPtr #-}

glPolygonMode :: MonadIO m => GLenum -> GLenum -> m ()
glPolygonMode = ffienumenumIOV glPolygonModeFunPtr

glPolygonModeFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glPolygonModeFunPtr = unsafePerformIO (getProcAddress "glPolygonMode")

{-# NOINLINE glPolygonModeFunPtr #-}

glPolygonOffset :: MonadIO m => GLfloat -> GLfloat -> m ()
glPolygonOffset = ffifloatfloatIOV glPolygonOffsetFunPtr

glPolygonOffsetFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glPolygonOffsetFunPtr = unsafePerformIO (getProcAddress "glPolygonOffset")

{-# NOINLINE glPolygonOffsetFunPtr #-}

glPrimitiveRestartIndex :: MonadIO m => GLuint -> m ()
glPrimitiveRestartIndex = ffiuintIOV glPrimitiveRestartIndexFunPtr

glPrimitiveRestartIndexFunPtr :: FunPtr (GLuint -> IO ())
glPrimitiveRestartIndexFunPtr = unsafePerformIO (getProcAddress "glPrimitiveRestartIndex")

{-# NOINLINE glPrimitiveRestartIndexFunPtr #-}

glReadBuffer :: MonadIO m => GLenum -> m ()
glReadBuffer = ffienumIOV glReadBufferFunPtr

glReadBufferFunPtr :: FunPtr (GLenum -> IO ())
glReadBufferFunPtr = unsafePerformIO (getProcAddress "glReadBuffer")

{-# NOINLINE glReadBufferFunPtr #-}

glReadPixels :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glReadPixels = ffiintintsizeisizeienumenumPtrVIOV glReadPixelsFunPtr

glReadPixelsFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glReadPixelsFunPtr = unsafePerformIO (getProcAddress "glReadPixels")

{-# NOINLINE glReadPixelsFunPtr #-}

glSampleCoverage :: MonadIO m => GLfloat -> GLboolean -> m ()
glSampleCoverage = ffifloatbooleanIOV glSampleCoverageFunPtr

glSampleCoverageFunPtr :: FunPtr (GLfloat -> GLboolean -> IO ())
glSampleCoverageFunPtr = unsafePerformIO (getProcAddress "glSampleCoverage")

{-# NOINLINE glSampleCoverageFunPtr #-}

glScissor :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> m ()
glScissor = ffiintintsizeisizeiIOV glScissorFunPtr

glScissorFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glScissorFunPtr = unsafePerformIO (getProcAddress "glScissor")

{-# NOINLINE glScissorFunPtr #-}

glShaderSource :: MonadIO m => GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> m ()
glShaderSource = ffiuintsizeiPtrcharPtrintIOV glShaderSourceFunPtr

glShaderSourceFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLchar -> Ptr GLint -> IO ())
glShaderSourceFunPtr = unsafePerformIO (getProcAddress "glShaderSource")

{-# NOINLINE glShaderSourceFunPtr #-}

glStencilFunc :: MonadIO m => GLenum -> GLint -> GLuint -> m ()
glStencilFunc = ffienumintuintIOV glStencilFuncFunPtr

glStencilFuncFunPtr :: FunPtr (GLenum -> GLint -> GLuint -> IO ())
glStencilFuncFunPtr = unsafePerformIO (getProcAddress "glStencilFunc")

{-# NOINLINE glStencilFuncFunPtr #-}

glStencilFuncSeparate :: MonadIO m => GLenum -> GLenum -> GLint -> GLuint -> m ()
glStencilFuncSeparate = ffienumenumintuintIOV glStencilFuncSeparateFunPtr

glStencilFuncSeparateFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLuint -> IO ())
glStencilFuncSeparateFunPtr = unsafePerformIO (getProcAddress "glStencilFuncSeparate")

{-# NOINLINE glStencilFuncSeparateFunPtr #-}

glStencilMask :: MonadIO m => GLuint -> m ()
glStencilMask = ffiuintIOV glStencilMaskFunPtr

glStencilMaskFunPtr :: FunPtr (GLuint -> IO ())
glStencilMaskFunPtr = unsafePerformIO (getProcAddress "glStencilMask")

{-# NOINLINE glStencilMaskFunPtr #-}

glStencilMaskSeparate :: MonadIO m => GLenum -> GLuint -> m ()
glStencilMaskSeparate = ffienumuintIOV glStencilMaskSeparateFunPtr

glStencilMaskSeparateFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glStencilMaskSeparateFunPtr = unsafePerformIO (getProcAddress "glStencilMaskSeparate")

{-# NOINLINE glStencilMaskSeparateFunPtr #-}

glStencilOp :: MonadIO m => GLenum -> GLenum -> GLenum -> m ()
glStencilOp = ffienumenumenumIOV glStencilOpFunPtr

glStencilOpFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> IO ())
glStencilOpFunPtr = unsafePerformIO (getProcAddress "glStencilOp")

{-# NOINLINE glStencilOpFunPtr #-}

glStencilOpSeparate :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
glStencilOpSeparate = ffienumenumenumenumIOV glStencilOpSeparateFunPtr

glStencilOpSeparateFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glStencilOpSeparateFunPtr = unsafePerformIO (getProcAddress "glStencilOpSeparate")

{-# NOINLINE glStencilOpSeparateFunPtr #-}

glTexBuffer :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glTexBuffer = ffienumenumuintIOV glTexBufferFunPtr

glTexBufferFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glTexBufferFunPtr = unsafePerformIO (getProcAddress "glTexBuffer")

{-# NOINLINE glTexBufferFunPtr #-}

glTexImage1D :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
glTexImage1D = ffienumintintsizeiintenumenumPtrVIOV glTexImage1DFunPtr

glTexImage1DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
glTexImage1DFunPtr = unsafePerformIO (getProcAddress "glTexImage1D")

{-# NOINLINE glTexImage1DFunPtr #-}

glTexImage2D :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
glTexImage2D = ffienumintintsizeisizeiintenumenumPtrVIOV glTexImage2DFunPtr

glTexImage2DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
glTexImage2DFunPtr = unsafePerformIO (getProcAddress "glTexImage2D")

{-# NOINLINE glTexImage2DFunPtr #-}

glTexImage3D :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
glTexImage3D = ffienumintintsizeisizeisizeiintenumenumPtrVIOV glTexImage3DFunPtr

glTexImage3DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
glTexImage3DFunPtr = unsafePerformIO (getProcAddress "glTexImage3D")

{-# NOINLINE glTexImage3DFunPtr #-}

glTexParameterIiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexParameterIiv = ffienumenumPtrintIOV glTexParameterIivFunPtr

glTexParameterIivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexParameterIivFunPtr = unsafePerformIO (getProcAddress "glTexParameterIiv")

{-# NOINLINE glTexParameterIivFunPtr #-}

glTexParameterIuiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glTexParameterIuiv = ffienumenumPtruintIOV glTexParameterIuivFunPtr

glTexParameterIuivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glTexParameterIuivFunPtr = unsafePerformIO (getProcAddress "glTexParameterIuiv")

{-# NOINLINE glTexParameterIuivFunPtr #-}

glTexParameterf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glTexParameterf = ffienumenumfloatIOV glTexParameterfFunPtr

glTexParameterfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glTexParameterfFunPtr = unsafePerformIO (getProcAddress "glTexParameterf")

{-# NOINLINE glTexParameterfFunPtr #-}

glTexParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glTexParameterfv = ffienumenumPtrfloatIOV glTexParameterfvFunPtr

glTexParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glTexParameterfvFunPtr = unsafePerformIO (getProcAddress "glTexParameterfv")

{-# NOINLINE glTexParameterfvFunPtr #-}

glTexParameteri :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glTexParameteri = ffienumenumintIOV glTexParameteriFunPtr

glTexParameteriFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glTexParameteriFunPtr = unsafePerformIO (getProcAddress "glTexParameteri")

{-# NOINLINE glTexParameteriFunPtr #-}

glTexParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexParameteriv = ffienumenumPtrintIOV glTexParameterivFunPtr

glTexParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexParameterivFunPtr = unsafePerformIO (getProcAddress "glTexParameteriv")

{-# NOINLINE glTexParameterivFunPtr #-}

glTexSubImage1D :: MonadIO m => GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTexSubImage1D = ffienumintintsizeienumenumPtrVIOV glTexSubImage1DFunPtr

glTexSubImage1DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTexSubImage1DFunPtr = unsafePerformIO (getProcAddress "glTexSubImage1D")

{-# NOINLINE glTexSubImage1DFunPtr #-}

glTexSubImage2D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTexSubImage2D = ffienumintintintsizeisizeienumenumPtrVIOV glTexSubImage2DFunPtr

glTexSubImage2DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTexSubImage2DFunPtr = unsafePerformIO (getProcAddress "glTexSubImage2D")

{-# NOINLINE glTexSubImage2DFunPtr #-}

glTexSubImage3D :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTexSubImage3D = ffienumintintintintsizeisizeisizeienumenumPtrVIOV glTexSubImage3DFunPtr

glTexSubImage3DFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTexSubImage3DFunPtr = unsafePerformIO (getProcAddress "glTexSubImage3D")

{-# NOINLINE glTexSubImage3DFunPtr #-}

glTransformFeedbackVaryings :: MonadIO m => GLuint -> GLsizei -> Ptr GLchar -> GLenum -> m ()
glTransformFeedbackVaryings = ffiuintsizeiPtrcharenumIOV glTransformFeedbackVaryingsFunPtr

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

{-# NOINLINE glTransformFeedbackVaryingsFunPtr #-}

glUniform1f :: MonadIO m => GLint -> GLfloat -> m ()
glUniform1f = ffiintfloatIOV glUniform1fFunPtr

glUniform1fFunPtr :: FunPtr (GLint -> GLfloat -> IO ())
glUniform1fFunPtr = unsafePerformIO (getProcAddress "glUniform1f")

{-# NOINLINE glUniform1fFunPtr #-}

glUniform1fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform1fv = ffiintsizeiPtrfloatIOV glUniform1fvFunPtr

glUniform1fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform1fvFunPtr = unsafePerformIO (getProcAddress "glUniform1fv")

{-# NOINLINE glUniform1fvFunPtr #-}

glUniform1i :: MonadIO m => GLint -> GLint -> m ()
glUniform1i = ffiintintIOV glUniform1iFunPtr

glUniform1iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glUniform1iFunPtr = unsafePerformIO (getProcAddress "glUniform1i")

{-# NOINLINE glUniform1iFunPtr #-}

glUniform1iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform1iv = ffiintsizeiPtrintIOV glUniform1ivFunPtr

glUniform1ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform1ivFunPtr = unsafePerformIO (getProcAddress "glUniform1iv")

{-# NOINLINE glUniform1ivFunPtr #-}

glUniform1ui :: MonadIO m => GLint -> GLuint -> m ()
glUniform1ui = ffiintuintIOV glUniform1uiFunPtr

glUniform1uiFunPtr :: FunPtr (GLint -> GLuint -> IO ())
glUniform1uiFunPtr = unsafePerformIO (getProcAddress "glUniform1ui")

{-# NOINLINE glUniform1uiFunPtr #-}

glUniform1uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform1uiv = ffiintsizeiPtruintIOV glUniform1uivFunPtr

glUniform1uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform1uivFunPtr = unsafePerformIO (getProcAddress "glUniform1uiv")

{-# NOINLINE glUniform1uivFunPtr #-}

glUniform2f :: MonadIO m => GLint -> GLfloat -> GLfloat -> m ()
glUniform2f = ffiintfloatfloatIOV glUniform2fFunPtr

glUniform2fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ())
glUniform2fFunPtr = unsafePerformIO (getProcAddress "glUniform2f")

{-# NOINLINE glUniform2fFunPtr #-}

glUniform2fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform2fv = ffiintsizeiPtrfloatIOV glUniform2fvFunPtr

glUniform2fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform2fvFunPtr = unsafePerformIO (getProcAddress "glUniform2fv")

{-# NOINLINE glUniform2fvFunPtr #-}

glUniform2i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glUniform2i = ffiintintintIOV glUniform2iFunPtr

glUniform2iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glUniform2iFunPtr = unsafePerformIO (getProcAddress "glUniform2i")

{-# NOINLINE glUniform2iFunPtr #-}

glUniform2iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform2iv = ffiintsizeiPtrintIOV glUniform2ivFunPtr

glUniform2ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform2ivFunPtr = unsafePerformIO (getProcAddress "glUniform2iv")

{-# NOINLINE glUniform2ivFunPtr #-}

glUniform2ui :: MonadIO m => GLint -> GLuint -> GLuint -> m ()
glUniform2ui = ffiintuintuintIOV glUniform2uiFunPtr

glUniform2uiFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> IO ())
glUniform2uiFunPtr = unsafePerformIO (getProcAddress "glUniform2ui")

{-# NOINLINE glUniform2uiFunPtr #-}

glUniform2uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform2uiv = ffiintsizeiPtruintIOV glUniform2uivFunPtr

glUniform2uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform2uivFunPtr = unsafePerformIO (getProcAddress "glUniform2uiv")

{-# NOINLINE glUniform2uivFunPtr #-}

glUniform3f :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
glUniform3f = ffiintfloatfloatfloatIOV glUniform3fFunPtr

glUniform3fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glUniform3fFunPtr = unsafePerformIO (getProcAddress "glUniform3f")

{-# NOINLINE glUniform3fFunPtr #-}

glUniform3fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform3fv = ffiintsizeiPtrfloatIOV glUniform3fvFunPtr

glUniform3fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform3fvFunPtr = unsafePerformIO (getProcAddress "glUniform3fv")

{-# NOINLINE glUniform3fvFunPtr #-}

glUniform3i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glUniform3i = ffiintintintintIOV glUniform3iFunPtr

glUniform3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glUniform3iFunPtr = unsafePerformIO (getProcAddress "glUniform3i")

{-# NOINLINE glUniform3iFunPtr #-}

glUniform3iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform3iv = ffiintsizeiPtrintIOV glUniform3ivFunPtr

glUniform3ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform3ivFunPtr = unsafePerformIO (getProcAddress "glUniform3iv")

{-# NOINLINE glUniform3ivFunPtr #-}

glUniform3ui :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> m ()
glUniform3ui = ffiintuintuintuintIOV glUniform3uiFunPtr

glUniform3uiFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> IO ())
glUniform3uiFunPtr = unsafePerformIO (getProcAddress "glUniform3ui")

{-# NOINLINE glUniform3uiFunPtr #-}

glUniform3uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform3uiv = ffiintsizeiPtruintIOV glUniform3uivFunPtr

glUniform3uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform3uivFunPtr = unsafePerformIO (getProcAddress "glUniform3uiv")

{-# NOINLINE glUniform3uivFunPtr #-}

glUniform4f :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glUniform4f = ffiintfloatfloatfloatfloatIOV glUniform4fFunPtr

glUniform4fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glUniform4fFunPtr = unsafePerformIO (getProcAddress "glUniform4f")

{-# NOINLINE glUniform4fFunPtr #-}

glUniform4fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform4fv = ffiintsizeiPtrfloatIOV glUniform4fvFunPtr

glUniform4fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform4fvFunPtr = unsafePerformIO (getProcAddress "glUniform4fv")

{-# NOINLINE glUniform4fvFunPtr #-}

glUniform4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> m ()
glUniform4i = ffiintintintintintIOV glUniform4iFunPtr

glUniform4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
glUniform4iFunPtr = unsafePerformIO (getProcAddress "glUniform4i")

{-# NOINLINE glUniform4iFunPtr #-}

glUniform4iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform4iv = ffiintsizeiPtrintIOV glUniform4ivFunPtr

glUniform4ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform4ivFunPtr = unsafePerformIO (getProcAddress "glUniform4iv")

{-# NOINLINE glUniform4ivFunPtr #-}

glUniform4ui :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glUniform4ui = ffiintuintuintuintuintIOV glUniform4uiFunPtr

glUniform4uiFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glUniform4uiFunPtr = unsafePerformIO (getProcAddress "glUniform4ui")

{-# NOINLINE glUniform4uiFunPtr #-}

glUniform4uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform4uiv = ffiintsizeiPtruintIOV glUniform4uivFunPtr

glUniform4uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform4uivFunPtr = unsafePerformIO (getProcAddress "glUniform4uiv")

{-# NOINLINE glUniform4uivFunPtr #-}

glUniformMatrix2fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix2fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2fvFunPtr

glUniformMatrix2fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix2fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2fv")

{-# NOINLINE glUniformMatrix2fvFunPtr #-}

glUniformMatrix2x3fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix2x3fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2x3fvFunPtr

glUniformMatrix2x3fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix2x3fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2x3fv")

{-# NOINLINE glUniformMatrix2x3fvFunPtr #-}

glUniformMatrix2x4fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix2x4fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2x4fvFunPtr

glUniformMatrix2x4fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix2x4fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2x4fv")

{-# NOINLINE glUniformMatrix2x4fvFunPtr #-}

glUniformMatrix3fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix3fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3fvFunPtr

glUniformMatrix3fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix3fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3fv")

{-# NOINLINE glUniformMatrix3fvFunPtr #-}

glUniformMatrix3x2fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix3x2fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3x2fvFunPtr

glUniformMatrix3x2fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix3x2fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3x2fv")

{-# NOINLINE glUniformMatrix3x2fvFunPtr #-}

glUniformMatrix3x4fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix3x4fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3x4fvFunPtr

glUniformMatrix3x4fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix3x4fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3x4fv")

{-# NOINLINE glUniformMatrix3x4fvFunPtr #-}

glUniformMatrix4fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix4fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4fvFunPtr

glUniformMatrix4fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix4fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4fv")

{-# NOINLINE glUniformMatrix4fvFunPtr #-}

glUniformMatrix4x2fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix4x2fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4x2fvFunPtr

glUniformMatrix4x2fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix4x2fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4x2fv")

{-# NOINLINE glUniformMatrix4x2fvFunPtr #-}

glUniformMatrix4x3fv :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix4x3fv = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4x3fvFunPtr

glUniformMatrix4x3fvFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix4x3fvFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4x3fv")

{-# NOINLINE glUniformMatrix4x3fvFunPtr #-}

glUnmapBuffer :: MonadIO m => GLenum -> m GLboolean
glUnmapBuffer = ffienumIOboolean glUnmapBufferFunPtr

glUnmapBufferFunPtr :: FunPtr (GLenum -> IO GLboolean)
glUnmapBufferFunPtr = unsafePerformIO (getProcAddress "glUnmapBuffer")

{-# NOINLINE glUnmapBufferFunPtr #-}

glUseProgram :: MonadIO m => GLuint -> m ()
glUseProgram = ffiuintIOV glUseProgramFunPtr

glUseProgramFunPtr :: FunPtr (GLuint -> IO ())
glUseProgramFunPtr = unsafePerformIO (getProcAddress "glUseProgram")

{-# NOINLINE glUseProgramFunPtr #-}

glValidateProgram :: MonadIO m => GLuint -> m ()
glValidateProgram = ffiuintIOV glValidateProgramFunPtr

glValidateProgramFunPtr :: FunPtr (GLuint -> IO ())
glValidateProgramFunPtr = unsafePerformIO (getProcAddress "glValidateProgram")

{-# NOINLINE glValidateProgramFunPtr #-}

glVertexAttrib1d :: MonadIO m => GLuint -> GLdouble -> m ()
glVertexAttrib1d = ffiuintdoubleIOV glVertexAttrib1dFunPtr

glVertexAttrib1dFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttrib1dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1d")

{-# NOINLINE glVertexAttrib1dFunPtr #-}

glVertexAttrib1dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib1dv = ffiuintPtrdoubleIOV glVertexAttrib1dvFunPtr

glVertexAttrib1dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib1dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dv")

{-# NOINLINE glVertexAttrib1dvFunPtr #-}

glVertexAttrib1f :: MonadIO m => GLuint -> GLfloat -> m ()
glVertexAttrib1f = ffiuintfloatIOV glVertexAttrib1fFunPtr

glVertexAttrib1fFunPtr :: FunPtr (GLuint -> GLfloat -> IO ())
glVertexAttrib1fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1f")

{-# NOINLINE glVertexAttrib1fFunPtr #-}

glVertexAttrib1fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib1fv = ffiuintPtrfloatIOV glVertexAttrib1fvFunPtr

glVertexAttrib1fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib1fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fv")

{-# NOINLINE glVertexAttrib1fvFunPtr #-}

glVertexAttrib1s :: MonadIO m => GLuint -> GLshort -> m ()
glVertexAttrib1s = ffiuintshortIOV glVertexAttrib1sFunPtr

glVertexAttrib1sFunPtr :: FunPtr (GLuint -> GLshort -> IO ())
glVertexAttrib1sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1s")

{-# NOINLINE glVertexAttrib1sFunPtr #-}

glVertexAttrib1sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib1sv = ffiuintPtrshortIOV glVertexAttrib1svFunPtr

glVertexAttrib1svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib1svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1sv")

{-# NOINLINE glVertexAttrib1svFunPtr #-}

glVertexAttrib2d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttrib2d = ffiuintdoubledoubleIOV glVertexAttrib2dFunPtr

glVertexAttrib2dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttrib2dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2d")

{-# NOINLINE glVertexAttrib2dFunPtr #-}

glVertexAttrib2dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib2dv = ffiuintPtrdoubleIOV glVertexAttrib2dvFunPtr

glVertexAttrib2dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib2dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dv")

{-# NOINLINE glVertexAttrib2dvFunPtr #-}

glVertexAttrib2f :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
glVertexAttrib2f = ffiuintfloatfloatIOV glVertexAttrib2fFunPtr

glVertexAttrib2fFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
glVertexAttrib2fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2f")

{-# NOINLINE glVertexAttrib2fFunPtr #-}

glVertexAttrib2fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib2fv = ffiuintPtrfloatIOV glVertexAttrib2fvFunPtr

glVertexAttrib2fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib2fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fv")

{-# NOINLINE glVertexAttrib2fvFunPtr #-}

glVertexAttrib2s :: MonadIO m => GLuint -> GLshort -> GLshort -> m ()
glVertexAttrib2s = ffiuintshortshortIOV glVertexAttrib2sFunPtr

glVertexAttrib2sFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> IO ())
glVertexAttrib2sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2s")

{-# NOINLINE glVertexAttrib2sFunPtr #-}

glVertexAttrib2sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib2sv = ffiuintPtrshortIOV glVertexAttrib2svFunPtr

glVertexAttrib2svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib2svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2sv")

{-# NOINLINE glVertexAttrib2svFunPtr #-}

glVertexAttrib3d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttrib3d = ffiuintdoubledoubledoubleIOV glVertexAttrib3dFunPtr

glVertexAttrib3dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttrib3dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3d")

{-# NOINLINE glVertexAttrib3dFunPtr #-}

glVertexAttrib3dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib3dv = ffiuintPtrdoubleIOV glVertexAttrib3dvFunPtr

glVertexAttrib3dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib3dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dv")

{-# NOINLINE glVertexAttrib3dvFunPtr #-}

glVertexAttrib3f :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertexAttrib3f = ffiuintfloatfloatfloatIOV glVertexAttrib3fFunPtr

glVertexAttrib3fFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertexAttrib3fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3f")

{-# NOINLINE glVertexAttrib3fFunPtr #-}

glVertexAttrib3fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib3fv = ffiuintPtrfloatIOV glVertexAttrib3fvFunPtr

glVertexAttrib3fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib3fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fv")

{-# NOINLINE glVertexAttrib3fvFunPtr #-}

glVertexAttrib3s :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> m ()
glVertexAttrib3s = ffiuintshortshortshortIOV glVertexAttrib3sFunPtr

glVertexAttrib3sFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ())
glVertexAttrib3sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3s")

{-# NOINLINE glVertexAttrib3sFunPtr #-}

glVertexAttrib3sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib3sv = ffiuintPtrshortIOV glVertexAttrib3svFunPtr

glVertexAttrib3svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib3svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3sv")

{-# NOINLINE glVertexAttrib3svFunPtr #-}

glVertexAttrib4Nbv :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4Nbv = ffiuintPtrbyteIOV glVertexAttrib4NbvFunPtr

glVertexAttrib4NbvFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4NbvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nbv")

{-# NOINLINE glVertexAttrib4NbvFunPtr #-}

glVertexAttrib4Niv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4Niv = ffiuintPtrintIOV glVertexAttrib4NivFunPtr

glVertexAttrib4NivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4NivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Niv")

{-# NOINLINE glVertexAttrib4NivFunPtr #-}

glVertexAttrib4Nsv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4Nsv = ffiuintPtrshortIOV glVertexAttrib4NsvFunPtr

glVertexAttrib4NsvFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4NsvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nsv")

{-# NOINLINE glVertexAttrib4NsvFunPtr #-}

glVertexAttrib4Nub :: MonadIO m => GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
glVertexAttrib4Nub = ffiuintubyteubyteubyteubyteIOV glVertexAttrib4NubFunPtr

glVertexAttrib4NubFunPtr :: FunPtr (GLuint -> GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ())
glVertexAttrib4NubFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nub")

{-# NOINLINE glVertexAttrib4NubFunPtr #-}

glVertexAttrib4Nubv :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4Nubv = ffiuintPtrubyteIOV glVertexAttrib4NubvFunPtr

glVertexAttrib4NubvFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4NubvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nubv")

{-# NOINLINE glVertexAttrib4NubvFunPtr #-}

glVertexAttrib4Nuiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4Nuiv = ffiuintPtruintIOV glVertexAttrib4NuivFunPtr

glVertexAttrib4NuivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4NuivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nuiv")

{-# NOINLINE glVertexAttrib4NuivFunPtr #-}

glVertexAttrib4Nusv :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4Nusv = ffiuintPtrushortIOV glVertexAttrib4NusvFunPtr

glVertexAttrib4NusvFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4NusvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nusv")

{-# NOINLINE glVertexAttrib4NusvFunPtr #-}

glVertexAttrib4bv :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4bv = ffiuintPtrbyteIOV glVertexAttrib4bvFunPtr

glVertexAttrib4bvFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4bvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4bv")

{-# NOINLINE glVertexAttrib4bvFunPtr #-}

glVertexAttrib4d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttrib4d = ffiuintdoubledoubledoubledoubleIOV glVertexAttrib4dFunPtr

glVertexAttrib4dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttrib4dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4d")

{-# NOINLINE glVertexAttrib4dFunPtr #-}

glVertexAttrib4dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib4dv = ffiuintPtrdoubleIOV glVertexAttrib4dvFunPtr

glVertexAttrib4dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib4dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dv")

{-# NOINLINE glVertexAttrib4dvFunPtr #-}

glVertexAttrib4f :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertexAttrib4f = ffiuintfloatfloatfloatfloatIOV glVertexAttrib4fFunPtr

glVertexAttrib4fFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertexAttrib4fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4f")

{-# NOINLINE glVertexAttrib4fFunPtr #-}

glVertexAttrib4fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib4fv = ffiuintPtrfloatIOV glVertexAttrib4fvFunPtr

glVertexAttrib4fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib4fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fv")

{-# NOINLINE glVertexAttrib4fvFunPtr #-}

glVertexAttrib4iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4iv = ffiuintPtrintIOV glVertexAttrib4ivFunPtr

glVertexAttrib4ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4iv")

{-# NOINLINE glVertexAttrib4ivFunPtr #-}

glVertexAttrib4s :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
glVertexAttrib4s = ffiuintshortshortshortshortIOV glVertexAttrib4sFunPtr

glVertexAttrib4sFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glVertexAttrib4sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4s")

{-# NOINLINE glVertexAttrib4sFunPtr #-}

glVertexAttrib4sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4sv = ffiuintPtrshortIOV glVertexAttrib4svFunPtr

glVertexAttrib4svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4sv")

{-# NOINLINE glVertexAttrib4svFunPtr #-}

glVertexAttrib4ubv :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4ubv = ffiuintPtrubyteIOV glVertexAttrib4ubvFunPtr

glVertexAttrib4ubvFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4ubvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ubv")

{-# NOINLINE glVertexAttrib4ubvFunPtr #-}

glVertexAttrib4uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4uiv = ffiuintPtruintIOV glVertexAttrib4uivFunPtr

glVertexAttrib4uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4uiv")

{-# NOINLINE glVertexAttrib4uivFunPtr #-}

glVertexAttrib4usv :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4usv = ffiuintPtrushortIOV glVertexAttrib4usvFunPtr

glVertexAttrib4usvFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4usvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4usv")

{-# NOINLINE glVertexAttrib4usvFunPtr #-}

glVertexAttribI1i :: MonadIO m => GLuint -> GLint -> m ()
glVertexAttribI1i = ffiuintintIOV glVertexAttribI1iFunPtr

glVertexAttribI1iFunPtr :: FunPtr (GLuint -> GLint -> IO ())
glVertexAttribI1iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1i")

{-# NOINLINE glVertexAttribI1iFunPtr #-}

glVertexAttribI1iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI1iv = ffiuintPtrintIOV glVertexAttribI1ivFunPtr

glVertexAttribI1ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI1ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1iv")

{-# NOINLINE glVertexAttribI1ivFunPtr #-}

glVertexAttribI1ui :: MonadIO m => GLuint -> GLuint -> m ()
glVertexAttribI1ui = ffiuintuintIOV glVertexAttribI1uiFunPtr

glVertexAttribI1uiFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexAttribI1uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1ui")

{-# NOINLINE glVertexAttribI1uiFunPtr #-}

glVertexAttribI1uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI1uiv = ffiuintPtruintIOV glVertexAttribI1uivFunPtr

glVertexAttribI1uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI1uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1uiv")

{-# NOINLINE glVertexAttribI1uivFunPtr #-}

glVertexAttribI2i :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glVertexAttribI2i = ffiuintintintIOV glVertexAttribI2iFunPtr

glVertexAttribI2iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glVertexAttribI2iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2i")

{-# NOINLINE glVertexAttribI2iFunPtr #-}

glVertexAttribI2iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI2iv = ffiuintPtrintIOV glVertexAttribI2ivFunPtr

glVertexAttribI2ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI2ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2iv")

{-# NOINLINE glVertexAttribI2ivFunPtr #-}

glVertexAttribI2ui :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI2ui = ffiuintuintuintIOV glVertexAttribI2uiFunPtr

glVertexAttribI2uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI2uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2ui")

{-# NOINLINE glVertexAttribI2uiFunPtr #-}

glVertexAttribI2uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI2uiv = ffiuintPtruintIOV glVertexAttribI2uivFunPtr

glVertexAttribI2uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI2uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2uiv")

{-# NOINLINE glVertexAttribI2uivFunPtr #-}

glVertexAttribI3i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glVertexAttribI3i = ffiuintintintintIOV glVertexAttribI3iFunPtr

glVertexAttribI3iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glVertexAttribI3iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3i")

{-# NOINLINE glVertexAttribI3iFunPtr #-}

glVertexAttribI3iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI3iv = ffiuintPtrintIOV glVertexAttribI3ivFunPtr

glVertexAttribI3ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI3ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3iv")

{-# NOINLINE glVertexAttribI3ivFunPtr #-}

glVertexAttribI3ui :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI3ui = ffiuintuintuintuintIOV glVertexAttribI3uiFunPtr

glVertexAttribI3uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI3uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3ui")

{-# NOINLINE glVertexAttribI3uiFunPtr #-}

glVertexAttribI3uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI3uiv = ffiuintPtruintIOV glVertexAttribI3uivFunPtr

glVertexAttribI3uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI3uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3uiv")

{-# NOINLINE glVertexAttribI3uivFunPtr #-}

glVertexAttribI4bv :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttribI4bv = ffiuintPtrbyteIOV glVertexAttribI4bvFunPtr

glVertexAttribI4bvFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttribI4bvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4bv")

{-# NOINLINE glVertexAttribI4bvFunPtr #-}

glVertexAttribI4i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
glVertexAttribI4i = ffiuintintintintintIOV glVertexAttribI4iFunPtr

glVertexAttribI4iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
glVertexAttribI4iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4i")

{-# NOINLINE glVertexAttribI4iFunPtr #-}

glVertexAttribI4iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI4iv = ffiuintPtrintIOV glVertexAttribI4ivFunPtr

glVertexAttribI4ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI4ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4iv")

{-# NOINLINE glVertexAttribI4ivFunPtr #-}

glVertexAttribI4sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttribI4sv = ffiuintPtrshortIOV glVertexAttribI4svFunPtr

glVertexAttribI4svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttribI4svFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4sv")

{-# NOINLINE glVertexAttribI4svFunPtr #-}

glVertexAttribI4ubv :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttribI4ubv = ffiuintPtrubyteIOV glVertexAttribI4ubvFunPtr

glVertexAttribI4ubvFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttribI4ubvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ubv")

{-# NOINLINE glVertexAttribI4ubvFunPtr #-}

glVertexAttribI4ui :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI4ui = ffiuintuintuintuintuintIOV glVertexAttribI4uiFunPtr

glVertexAttribI4uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI4uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ui")

{-# NOINLINE glVertexAttribI4uiFunPtr #-}

glVertexAttribI4uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI4uiv = ffiuintPtruintIOV glVertexAttribI4uivFunPtr

glVertexAttribI4uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI4uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4uiv")

{-# NOINLINE glVertexAttribI4uivFunPtr #-}

glVertexAttribI4usv :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttribI4usv = ffiuintPtrushortIOV glVertexAttribI4usvFunPtr

glVertexAttribI4usvFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttribI4usvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4usv")

{-# NOINLINE glVertexAttribI4usvFunPtr #-}

glVertexAttribIPointer :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glVertexAttribIPointer = ffiuintintenumsizeiPtrVIOV glVertexAttribIPointerFunPtr

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

{-# NOINLINE glVertexAttribIPointerFunPtr #-}

glVertexAttribPointer :: MonadIO m => GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> m ()
glVertexAttribPointer = ffiuintintenumbooleansizeiPtrVIOV glVertexAttribPointerFunPtr

glVertexAttribPointerFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLboolean -> GLsizei -> Ptr () -> IO ())
glVertexAttribPointerFunPtr = unsafePerformIO (getProcAddress "glVertexAttribPointer")

{-# NOINLINE glVertexAttribPointerFunPtr #-}

glViewport :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> m ()
glViewport = ffiintintsizeisizeiIOV glViewportFunPtr

glViewportFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glViewportFunPtr = unsafePerformIO (getProcAddress "glViewport")

{-# NOINLINE glViewportFunPtr #-}

pattern GL_ACTIVE_ATTRIBUTES = 0x8B89

pattern GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A

pattern GL_ACTIVE_TEXTURE = 0x84E0

pattern GL_ACTIVE_UNIFORMS = 0x8B86

pattern GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87

pattern GL_ALIASED_LINE_WIDTH_RANGE = 0x846E

pattern GL_ALWAYS = 0x0207

pattern GL_AND = 0x1501

pattern GL_AND_INVERTED = 0x1504

pattern GL_AND_REVERSE = 0x1502

pattern GL_ARRAY_BUFFER = 0x8892

pattern GL_ARRAY_BUFFER_BINDING = 0x8894

pattern GL_ATTACHED_SHADERS = 0x8B85

pattern GL_BACK_LEFT = 0x0402

pattern GL_BACK_RIGHT = 0x0403

pattern GL_BGR = 0x80E0

pattern GL_BGRA_INTEGER = 0x8D9B

pattern GL_BGR_INTEGER = 0x8D9A

pattern GL_BLEND_DST = 0x0BE0

pattern GL_BLEND_SRC = 0x0BE1

pattern GL_BLUE_INTEGER = 0x8D96

pattern GL_BOOL = 0x8B56

pattern GL_BOOL_VEC2 = 0x8B57

pattern GL_BOOL_VEC3 = 0x8B58

pattern GL_BOOL_VEC4 = 0x8B59

pattern GL_BUFFER_ACCESS = 0x88BB

pattern GL_BUFFER_ACCESS_FLAGS = 0x911F

pattern GL_BUFFER_MAPPED = 0x88BC

pattern GL_BUFFER_MAP_LENGTH = 0x9120

pattern GL_BUFFER_MAP_OFFSET = 0x9121

pattern GL_BUFFER_MAP_POINTER = 0x88BD

pattern GL_BUFFER_SIZE = 0x8764

pattern GL_BUFFER_USAGE = 0x8765

pattern GL_CLAMP_READ_COLOR = 0x891C

pattern GL_CLAMP_TO_BORDER = 0x812D

pattern GL_CLAMP_TO_EDGE = 0x812F

pattern GL_CLEAR = 0x1500

pattern GL_CLIP_DISTANCE0 = 0x3000

pattern GL_CLIP_DISTANCE1 = 0x3001

pattern GL_CLIP_DISTANCE2 = 0x3002

pattern GL_CLIP_DISTANCE3 = 0x3003

pattern GL_CLIP_DISTANCE4 = 0x3004

pattern GL_CLIP_DISTANCE5 = 0x3005

pattern GL_CLIP_DISTANCE6 = 0x3006

pattern GL_CLIP_DISTANCE7 = 0x3007

pattern GL_COLOR = 0x1800

pattern GL_COLOR_BUFFER_BIT = 0x00004000

pattern GL_COLOR_CLEAR_VALUE = 0x0C22

pattern GL_COLOR_LOGIC_OP = 0x0BF2

pattern GL_COMPARE_REF_TO_TEXTURE = 0x884E

pattern GL_COMPILE_STATUS = 0x8B81

pattern GL_COMPRESSED_RED = 0x8225

pattern GL_COMPRESSED_RG = 0x8226

pattern GL_COMPRESSED_RGB = 0x84ED

pattern GL_COMPRESSED_RGBA = 0x84EE

pattern GL_COMPRESSED_SRGB = 0x8C48

pattern GL_COMPRESSED_SRGB_ALPHA = 0x8C49

pattern GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3

pattern GL_CONTEXT_FLAGS = 0x821E

pattern GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001

pattern GL_COPY = 0x1503

pattern GL_COPY_INVERTED = 0x150C

pattern GL_CULL_FACE = 0x0B44

pattern GL_CULL_FACE_MODE = 0x0B45

pattern GL_CURRENT_PROGRAM = 0x8B8D

pattern GL_CURRENT_QUERY = 0x8865

pattern GL_CURRENT_VERTEX_ATTRIB = 0x8626

pattern GL_DECR = 0x1E03

pattern GL_DECR_WRAP = 0x8508

pattern GL_DELETE_STATUS = 0x8B80

pattern GL_DEPTH = 0x1801

pattern GL_DEPTH_BUFFER_BIT = 0x00000100

pattern GL_DEPTH_CLEAR_VALUE = 0x0B73

pattern GL_DEPTH_COMPONENT24 = 0x81A6

pattern GL_DEPTH_COMPONENT32 = 0x81A7

pattern GL_DEPTH_FUNC = 0x0B74

pattern GL_DEPTH_TEST = 0x0B71

pattern GL_DEPTH_WRITEMASK = 0x0B72

pattern GL_DITHER = 0x0BD0

pattern GL_DONT_CARE = 0x1100

pattern GL_DOUBLEBUFFER = 0x0C32

pattern GL_DRAW_BUFFER = 0x0C01

pattern GL_DRAW_BUFFER0 = 0x8825

pattern GL_DRAW_BUFFER1 = 0x8826

pattern GL_DRAW_BUFFER10 = 0x882F

pattern GL_DRAW_BUFFER11 = 0x8830

pattern GL_DRAW_BUFFER12 = 0x8831

pattern GL_DRAW_BUFFER13 = 0x8832

pattern GL_DRAW_BUFFER14 = 0x8833

pattern GL_DRAW_BUFFER15 = 0x8834

pattern GL_DRAW_BUFFER2 = 0x8827

pattern GL_DRAW_BUFFER3 = 0x8828

pattern GL_DRAW_BUFFER4 = 0x8829

pattern GL_DRAW_BUFFER5 = 0x882A

pattern GL_DRAW_BUFFER6 = 0x882B

pattern GL_DRAW_BUFFER7 = 0x882C

pattern GL_DRAW_BUFFER8 = 0x882D

pattern GL_DRAW_BUFFER9 = 0x882E

pattern GL_DYNAMIC_COPY = 0x88EA

pattern GL_DYNAMIC_DRAW = 0x88E8

pattern GL_DYNAMIC_READ = 0x88E9

pattern GL_ELEMENT_ARRAY_BUFFER = 0x8893

pattern GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895

pattern GL_EQUIV = 0x1509

pattern GL_EXTENSIONS = 0x1F03

pattern GL_FALSE = 0

pattern GL_FASTEST = 0x1101

pattern GL_FILL = 0x1B02

pattern GL_FIXED_ONLY = 0x891D

pattern GL_FLOAT_MAT2 = 0x8B5A

pattern GL_FLOAT_MAT2x3 = 0x8B65

pattern GL_FLOAT_MAT2x4 = 0x8B66

pattern GL_FLOAT_MAT3 = 0x8B5B

pattern GL_FLOAT_MAT3x2 = 0x8B67

pattern GL_FLOAT_MAT3x4 = 0x8B68

pattern GL_FLOAT_MAT4 = 0x8B5C

pattern GL_FLOAT_MAT4x2 = 0x8B69

pattern GL_FLOAT_MAT4x3 = 0x8B6A

pattern GL_FLOAT_VEC2 = 0x8B50

pattern GL_FLOAT_VEC3 = 0x8B51

pattern GL_FLOAT_VEC4 = 0x8B52

pattern GL_FRAGMENT_SHADER = 0x8B30

pattern GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B

pattern GL_FRONT = 0x0404

pattern GL_FRONT_AND_BACK = 0x0408

pattern GL_FRONT_FACE = 0x0B46

pattern GL_FRONT_LEFT = 0x0400

pattern GL_FRONT_RIGHT = 0x0401

pattern GL_GEQUAL = 0x0206

pattern GL_GREATER = 0x0204

pattern GL_GREEN_INTEGER = 0x8D95

pattern GL_INCR = 0x1E02

pattern GL_INCR_WRAP = 0x8507

pattern GL_INFO_LOG_LENGTH = 0x8B84

pattern GL_INT = 0x1404

pattern GL_INTERLEAVED_ATTRIBS = 0x8C8C

pattern GL_INT_SAMPLER_1D = 0x8DC9

pattern GL_INT_SAMPLER_1D_ARRAY = 0x8DCE

pattern GL_INT_SAMPLER_2D = 0x8DCA

pattern GL_INT_SAMPLER_2D_ARRAY = 0x8DCF

pattern GL_INT_SAMPLER_2D_RECT = 0x8DCD

pattern GL_INT_SAMPLER_3D = 0x8DCB

pattern GL_INT_SAMPLER_BUFFER = 0x8DD0

pattern GL_INT_SAMPLER_CUBE = 0x8DCC

pattern GL_INT_VEC2 = 0x8B53

pattern GL_INT_VEC3 = 0x8B54

pattern GL_INT_VEC4 = 0x8B55

pattern GL_INVALID_ENUM = 0x0500

pattern GL_INVALID_OPERATION = 0x0502

pattern GL_INVALID_VALUE = 0x0501

pattern GL_KEEP = 0x1E00

pattern GL_LEFT = 0x0406

pattern GL_LEQUAL = 0x0203

pattern GL_LESS = 0x0201

pattern GL_LINE = 0x1B01

pattern GL_LINEAR = 0x2601

pattern GL_LINEAR_MIPMAP_LINEAR = 0x2703

pattern GL_LINEAR_MIPMAP_NEAREST = 0x2701

pattern GL_LINES = 0x0001

pattern GL_LINE_LOOP = 0x0002

pattern GL_LINE_SMOOTH = 0x0B20

pattern GL_LINE_SMOOTH_HINT = 0x0C52

pattern GL_LINE_STRIP = 0x0003

pattern GL_LINE_WIDTH = 0x0B21

pattern GL_LINE_WIDTH_GRANULARITY = 0x0B23

pattern GL_LINE_WIDTH_RANGE = 0x0B22

pattern GL_LINK_STATUS = 0x8B82

pattern GL_LOGIC_OP_MODE = 0x0BF0

pattern GL_MAJOR_VERSION = 0x821B

pattern GL_MAX_3D_TEXTURE_SIZE = 0x8073

pattern GL_MAX_ARRAY_TEXTURE_LAYERS = 0x88FF

pattern GL_MAX_CLIP_DISTANCES = 0x0D32

pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D

pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C

pattern GL_MAX_DRAW_BUFFERS = 0x8824

pattern GL_MAX_ELEMENTS_INDICES = 0x80E9

pattern GL_MAX_ELEMENTS_VERTICES = 0x80E8

pattern GL_MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125

pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49

pattern GL_MAX_PROGRAM_TEXEL_OFFSET = 0x8905

pattern GL_MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8

pattern GL_MAX_TEXTURE_BUFFER_SIZE = 0x8C2B

pattern GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872

pattern GL_MAX_TEXTURE_LOD_BIAS = 0x84FD

pattern GL_MAX_TEXTURE_SIZE = 0x0D33

pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A

pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B

pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80

pattern GL_MAX_VARYING_FLOATS = 0x8B4B

pattern GL_MAX_VERTEX_ATTRIBS = 0x8869

pattern GL_MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122

pattern GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C

pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A

pattern GL_MAX_VIEWPORT_DIMS = 0x0D3A

pattern GL_MINOR_VERSION = 0x821C

pattern GL_MIN_PROGRAM_TEXEL_OFFSET = 0x8904

pattern GL_MIRRORED_REPEAT = 0x8370

pattern GL_MULTISAMPLE = 0x809D

pattern GL_NAND = 0x150E

pattern GL_NEAREST = 0x2600

pattern GL_NEAREST_MIPMAP_LINEAR = 0x2702

pattern GL_NEAREST_MIPMAP_NEAREST = 0x2700

pattern GL_NEVER = 0x0200

pattern GL_NICEST = 0x1102

pattern GL_NOOP = 0x1505

pattern GL_NOR = 0x1508

pattern GL_NOTEQUAL = 0x0205

pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2

pattern GL_NUM_EXTENSIONS = 0x821D

pattern GL_OR = 0x1507

pattern GL_OR_INVERTED = 0x150D

pattern GL_OR_REVERSE = 0x150B

pattern GL_OUT_OF_MEMORY = 0x0505

pattern GL_PACK_ALIGNMENT = 0x0D05

pattern GL_PACK_IMAGE_HEIGHT = 0x806C

pattern GL_PACK_LSB_FIRST = 0x0D01

pattern GL_PACK_ROW_LENGTH = 0x0D02

pattern GL_PACK_SKIP_IMAGES = 0x806B

pattern GL_PACK_SKIP_PIXELS = 0x0D04

pattern GL_PACK_SKIP_ROWS = 0x0D03

pattern GL_PACK_SWAP_BYTES = 0x0D00

pattern GL_PIXEL_PACK_BUFFER = 0x88EB

pattern GL_PIXEL_PACK_BUFFER_BINDING = 0x88ED

pattern GL_PIXEL_UNPACK_BUFFER = 0x88EC

pattern GL_PIXEL_UNPACK_BUFFER_BINDING = 0x88EF

pattern GL_POINT = 0x1B00

pattern GL_POINTS = 0x0000

pattern GL_POINT_FADE_THRESHOLD_SIZE = 0x8128

pattern GL_POINT_SIZE = 0x0B11

pattern GL_POINT_SIZE_GRANULARITY = 0x0B13

pattern GL_POINT_SIZE_RANGE = 0x0B12

pattern GL_POINT_SPRITE_COORD_ORIGIN = 0x8CA0

pattern GL_POLYGON_MODE = 0x0B40

pattern GL_POLYGON_OFFSET_FACTOR = 0x8038

pattern GL_POLYGON_OFFSET_FILL = 0x8037

pattern GL_POLYGON_OFFSET_LINE = 0x2A02

pattern GL_POLYGON_OFFSET_POINT = 0x2A01

pattern GL_POLYGON_OFFSET_UNITS = 0x2A00

pattern GL_POLYGON_SMOOTH = 0x0B41

pattern GL_POLYGON_SMOOTH_HINT = 0x0C53

pattern GL_PRIMITIVES_GENERATED = 0x8C87

pattern GL_PRIMITIVE_RESTART = 0x8F9D

pattern GL_PRIMITIVE_RESTART_INDEX = 0x8F9E

pattern GL_PROXY_TEXTURE_1D = 0x8063

pattern GL_PROXY_TEXTURE_1D_ARRAY = 0x8C19

pattern GL_PROXY_TEXTURE_2D = 0x8064

pattern GL_PROXY_TEXTURE_2D_ARRAY = 0x8C1B

pattern GL_PROXY_TEXTURE_3D = 0x8070

pattern GL_PROXY_TEXTURE_CUBE_MAP = 0x851B

pattern GL_PROXY_TEXTURE_RECTANGLE = 0x84F7

pattern GL_QUERY_BY_REGION_NO_WAIT = 0x8E16

pattern GL_QUERY_BY_REGION_WAIT = 0x8E15

pattern GL_QUERY_COUNTER_BITS = 0x8864

pattern GL_QUERY_NO_WAIT = 0x8E14

pattern GL_QUERY_RESULT = 0x8866

pattern GL_QUERY_RESULT_AVAILABLE = 0x8867

pattern GL_QUERY_WAIT = 0x8E13

pattern GL_R11F_G11F_B10F = 0x8C3A

pattern GL_R3_G3_B2 = 0x2A10

pattern GL_RASTERIZER_DISCARD = 0x8C89

pattern GL_READ_BUFFER = 0x0C02

pattern GL_READ_ONLY = 0x88B8

pattern GL_RED_INTEGER = 0x8D94

pattern GL_RENDERER = 0x1F01

pattern GL_REPEAT = 0x2901

pattern GL_REPLACE = 0x1E01

pattern GL_RGB = 0x1907

pattern GL_RGB10 = 0x8052

pattern GL_RGB10_A2 = 0x8059

pattern GL_RGB12 = 0x8053

pattern GL_RGB16 = 0x8054

pattern GL_RGB16F = 0x881B

pattern GL_RGB16I = 0x8D89

pattern GL_RGB16UI = 0x8D77

pattern GL_RGB4 = 0x804F

pattern GL_RGB5 = 0x8050

pattern GL_RGB5_A1 = 0x8057

pattern GL_RGB8 = 0x8051

pattern GL_RGB8I = 0x8D8F

pattern GL_RGB8UI = 0x8D7D

pattern GL_RGB9_E5 = 0x8C3D

pattern GL_RGBA = 0x1908

pattern GL_RGBA12 = 0x805A

pattern GL_RGBA16 = 0x805B

pattern GL_RGBA16F = 0x881A

pattern GL_RGBA16I = 0x8D88

pattern GL_RGBA16UI = 0x8D76

pattern GL_RGBA2 = 0x8055

pattern GL_RGBA32F = 0x8814

pattern GL_RGBA32I = 0x8D82

pattern GL_RGBA32UI = 0x8D70

pattern GL_RGBA4 = 0x8056

pattern GL_RGBA8 = 0x8058

pattern GL_RGBA8I = 0x8D8E

pattern GL_RGBA_INTEGER = 0x8D99

pattern GL_RGB_INTEGER = 0x8D98

pattern GL_RIGHT = 0x0407

pattern GL_SAMPLER_1D = 0x8B5D

pattern GL_SAMPLER_1D_ARRAY = 0x8DC0

pattern GL_SAMPLER_1D_ARRAY_SHADOW = 0x8DC3

pattern GL_SAMPLER_1D_SHADOW = 0x8B61

pattern GL_SAMPLER_2D = 0x8B5E

pattern GL_SAMPLER_2D_ARRAY = 0x8DC1

pattern GL_SAMPLER_2D_ARRAY_SHADOW = 0x8DC4

pattern GL_SAMPLER_2D_RECT = 0x8B63

pattern GL_SAMPLER_2D_RECT_SHADOW = 0x8B64

pattern GL_SAMPLER_2D_SHADOW = 0x8B62

pattern GL_SAMPLER_3D = 0x8B5F

pattern GL_SAMPLER_BUFFER = 0x8DC2

pattern GL_SAMPLER_CUBE = 0x8B60

pattern GL_SAMPLER_CUBE_SHADOW = 0x8DC5

pattern GL_SAMPLES_PASSED = 0x8914

pattern GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E

pattern GL_SAMPLE_ALPHA_TO_ONE = 0x809F

pattern GL_SAMPLE_BUFFERS = 0x80A8

pattern GL_SAMPLE_COVERAGE = 0x80A0

pattern GL_SAMPLE_COVERAGE_INVERT = 0x80AB

pattern GL_SAMPLE_COVERAGE_VALUE = 0x80AA

pattern GL_SEPARATE_ATTRIBS = 0x8C8D

pattern GL_SET = 0x150F

pattern GL_SHADER_SOURCE_LENGTH = 0x8B88

pattern GL_SHADER_TYPE = 0x8B4F

pattern GL_SHADING_LANGUAGE_VERSION = 0x8B8C

pattern GL_SHORT = 0x1402

pattern GL_SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23

pattern GL_SMOOTH_LINE_WIDTH_RANGE = 0x0B22

pattern GL_SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13

pattern GL_SMOOTH_POINT_SIZE_RANGE = 0x0B12

pattern GL_SRGB = 0x8C40

pattern GL_SRGB8 = 0x8C41

pattern GL_SRGB8_ALPHA8 = 0x8C43

pattern GL_SRGB_ALPHA = 0x8C42

pattern GL_STATIC_COPY = 0x88E6

pattern GL_STATIC_DRAW = 0x88E4

pattern GL_STATIC_READ = 0x88E5

pattern GL_STENCIL = 0x1802

pattern GL_STENCIL_BACK_FAIL = 0x8801

pattern GL_STENCIL_BACK_FUNC = 0x8800

pattern GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802

pattern GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803

pattern GL_STENCIL_BACK_REF = 0x8CA3

pattern GL_STENCIL_BACK_VALUE_MASK = 0x8CA4

pattern GL_STENCIL_BACK_WRITEMASK = 0x8CA5

pattern GL_STENCIL_BUFFER_BIT = 0x00000400

pattern GL_STENCIL_CLEAR_VALUE = 0x0B91

pattern GL_STENCIL_FAIL = 0x0B94

pattern GL_STENCIL_FUNC = 0x0B92

pattern GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95

pattern GL_STENCIL_PASS_DEPTH_PASS = 0x0B96

pattern GL_STENCIL_REF = 0x0B97

pattern GL_STENCIL_TEST = 0x0B90

pattern GL_STENCIL_VALUE_MASK = 0x0B93

pattern GL_STENCIL_WRITEMASK = 0x0B98

pattern GL_STEREO = 0x0C33

pattern GL_STREAM_COPY = 0x88E2

pattern GL_STREAM_DRAW = 0x88E0

pattern GL_STREAM_READ = 0x88E1

pattern GL_SUBPIXEL_BITS = 0x0D50

pattern GL_TEXTURE = 0x1702

pattern GL_TEXTURE0 = 0x84C0

pattern GL_TEXTURE1 = 0x84C1

pattern GL_TEXTURE10 = 0x84CA

pattern GL_TEXTURE11 = 0x84CB

pattern GL_TEXTURE12 = 0x84CC

pattern GL_TEXTURE13 = 0x84CD

pattern GL_TEXTURE14 = 0x84CE

pattern GL_TEXTURE15 = 0x84CF

pattern GL_TEXTURE16 = 0x84D0

pattern GL_TEXTURE17 = 0x84D1

pattern GL_TEXTURE18 = 0x84D2

pattern GL_TEXTURE19 = 0x84D3

pattern GL_TEXTURE2 = 0x84C2

pattern GL_TEXTURE20 = 0x84D4

pattern GL_TEXTURE21 = 0x84D5

pattern GL_TEXTURE22 = 0x84D6

pattern GL_TEXTURE23 = 0x84D7

pattern GL_TEXTURE24 = 0x84D8

pattern GL_TEXTURE25 = 0x84D9

pattern GL_TEXTURE26 = 0x84DA

pattern GL_TEXTURE27 = 0x84DB

pattern GL_TEXTURE28 = 0x84DC

pattern GL_TEXTURE29 = 0x84DD

pattern GL_TEXTURE3 = 0x84C3

pattern GL_TEXTURE30 = 0x84DE

pattern GL_TEXTURE31 = 0x84DF

pattern GL_TEXTURE4 = 0x84C4

pattern GL_TEXTURE5 = 0x84C5

pattern GL_TEXTURE6 = 0x84C6

pattern GL_TEXTURE7 = 0x84C7

pattern GL_TEXTURE8 = 0x84C8

pattern GL_TEXTURE9 = 0x84C9

pattern GL_TEXTURE_ALPHA_SIZE = 0x805F

pattern GL_TEXTURE_ALPHA_TYPE = 0x8C13

pattern GL_TEXTURE_BASE_LEVEL = 0x813C

pattern GL_TEXTURE_BLUE_SIZE = 0x805E

pattern GL_TEXTURE_BLUE_TYPE = 0x8C12

pattern GL_TEXTURE_BORDER_COLOR = 0x1004

pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D

pattern GL_TEXTURE_COMPARE_FUNC = 0x884D

pattern GL_TEXTURE_COMPARE_MODE = 0x884C

pattern GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0

pattern GL_TEXTURE_COMPRESSION_HINT = 0x84EF

pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516

pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518

pattern GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A

pattern GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515

pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517

pattern GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519

pattern GL_TEXTURE_DEPTH = 0x8071

pattern GL_TEXTURE_DEPTH_SIZE = 0x884A

pattern GL_TEXTURE_DEPTH_TYPE = 0x8C16

pattern GL_TEXTURE_GREEN_SIZE = 0x805D

pattern GL_TEXTURE_GREEN_TYPE = 0x8C11

pattern GL_TEXTURE_HEIGHT = 0x1001

pattern GL_TEXTURE_INTERNAL_FORMAT = 0x1003

pattern GL_TEXTURE_LOD_BIAS = 0x8501

pattern GL_TEXTURE_MAG_FILTER = 0x2800

pattern GL_TEXTURE_MAX_LEVEL = 0x813D

pattern GL_TEXTURE_MAX_LOD = 0x813B

pattern GL_TEXTURE_MIN_FILTER = 0x2801

pattern GL_TEXTURE_MIN_LOD = 0x813A

pattern GL_TEXTURE_RED_SIZE = 0x805C

pattern GL_TEXTURE_RED_TYPE = 0x8C10

pattern GL_TEXTURE_SHARED_SIZE = 0x8C3F

pattern GL_TEXTURE_WIDTH = 0x1000

pattern GL_TEXTURE_WRAP_R = 0x8072

pattern GL_TEXTURE_WRAP_S = 0x2802

pattern GL_TEXTURE_WRAP_T = 0x2803

pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F

pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F

pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85

pattern GL_TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84

pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88

pattern GL_TRANSFORM_FEEDBACK_VARYINGS = 0x8C83

pattern GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76

pattern GL_TRIANGLE_FAN = 0x0006

pattern GL_TRIANGLE_STRIP = 0x0005

pattern GL_TRUE = 1

pattern GL_UNPACK_ALIGNMENT = 0x0CF5

pattern GL_UNPACK_IMAGE_HEIGHT = 0x806E

pattern GL_UNPACK_LSB_FIRST = 0x0CF1

pattern GL_UNPACK_ROW_LENGTH = 0x0CF2

pattern GL_UNPACK_SKIP_IMAGES = 0x806D

pattern GL_UNPACK_SKIP_PIXELS = 0x0CF4

pattern GL_UNPACK_SKIP_ROWS = 0x0CF3

pattern GL_UNPACK_SWAP_BYTES = 0x0CF0

pattern GL_UNSIGNED_BYTE = 0x1401

pattern GL_UNSIGNED_BYTE_2_3_3_REV = 0x8362

pattern GL_UNSIGNED_BYTE_3_3_2 = 0x8032

pattern GL_UNSIGNED_INT_10_10_10_2 = 0x8036

pattern GL_UNSIGNED_INT_5_9_9_9_REV = 0x8C3E

pattern GL_UNSIGNED_INT_8_8_8_8 = 0x8035

pattern GL_UNSIGNED_INT_8_8_8_8_REV = 0x8367

pattern GL_UNSIGNED_INT_SAMPLER_1D = 0x8DD1

pattern GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6

pattern GL_UNSIGNED_INT_SAMPLER_2D = 0x8DD2

pattern GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7

pattern GL_UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5

pattern GL_UNSIGNED_INT_SAMPLER_3D = 0x8DD3

pattern GL_UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8

pattern GL_UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4

pattern GL_UNSIGNED_INT_VEC2 = 0x8DC6

pattern GL_UNSIGNED_INT_VEC3 = 0x8DC7

pattern GL_UNSIGNED_INT_VEC4 = 0x8DC8

pattern GL_UNSIGNED_SHORT_1_5_5_5_REV = 0x8366

pattern GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033

pattern GL_UNSIGNED_SHORT_4_4_4_4_REV = 0x8365

pattern GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034

pattern GL_UNSIGNED_SHORT_5_6_5 = 0x8363

pattern GL_UNSIGNED_SHORT_5_6_5_REV = 0x8364

pattern GL_VALIDATE_STATUS = 0x8B83

pattern GL_VENDOR = 0x1F00

pattern GL_VERSION = 0x1F02

pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F

pattern GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622

pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD

pattern GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A

pattern GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645

pattern GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623

pattern GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624

pattern GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625

pattern GL_VERTEX_PROGRAM_POINT_SIZE = 0x8642

pattern GL_VERTEX_SHADER = 0x8B31

pattern GL_XOR = 0x1506

glVertexAttribDivisor :: MonadIO m => GLuint -> GLuint -> m ()
glVertexAttribDivisor = ffiuintuintIOV glVertexAttribDivisorFunPtr

glVertexAttribDivisorFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexAttribDivisorFunPtr = unsafePerformIO (getProcAddress "glVertexAttribDivisor")

{-# NOINLINE glVertexAttribDivisorFunPtr #-}

pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE

pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F

pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E

pattern GL_COPY_READ_BUFFER_BINDING = 0x8F36

pattern GL_COPY_WRITE_BUFFER_BINDING = 0x8F37

pattern GL_TRANSFORM_FEEDBACK_ACTIVE = 0x8E24

pattern GL_TRANSFORM_FEEDBACK_PAUSED = 0x8E23

pattern GL_VERTEX_BINDING_BUFFER = 0x8F4F

pattern GL_MAX_VERTEX_ATTRIB_STRIDE = 0x82E5