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

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

-- | Usage: @'glAccum' op value@
--
-- The parameter @op@ is a @AccumOp@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM', 'Graphics.GL.Internal.Shared.GL_LOAD', 'Graphics.GL.Internal.Shared.GL_RETURN', 'Graphics.GL.Internal.Shared.GL_MULT', 'Graphics.GL.Internal.Shared.GL_ADD'.
--
-- The parameter @value@ is a @CoordF@.


glAccum :: MonadIO m => GLenum -> GLfloat -> m ()
glAccum = ffienumfloatIOV glAccumFunPtr

glAccumFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glAccumFunPtr = unsafePerformIO (getProcAddress "glAccum")

{-# NOINLINE glAccumFunPtr #-}

-- | Usage: @'glAlphaFunc' func ref@
--
-- The parameter @func@ is a @AlphaFunction@, one of: 'Graphics.GL.Internal.Shared.GL_ALWAYS', 'Graphics.GL.Internal.Shared.GL_EQUAL', 'Graphics.GL.Internal.Shared.GL_GEQUAL', 'Graphics.GL.Internal.Shared.GL_GREATER', 'Graphics.GL.Internal.Shared.GL_LEQUAL', 'Graphics.GL.Internal.Shared.GL_LESS', 'Graphics.GL.Internal.Shared.GL_NEVER', 'Graphics.GL.Internal.Shared.GL_NOTEQUAL'.


glAlphaFunc :: MonadIO m => GLenum -> GLfloat -> m ()
glAlphaFunc = ffienumfloatIOV glAlphaFuncFunPtr

glAlphaFuncFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glAlphaFuncFunPtr = unsafePerformIO (getProcAddress "glAlphaFunc")

{-# NOINLINE glAlphaFuncFunPtr #-}

-- | Usage: @'glAreTexturesResident' n textures residences@
--
-- The parameter @textures@ is a @Texture@.
--
-- The parameter @residences@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @textures@ should be @n@.
--
-- The length of @residences@ should be @n@.


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

-- | Usage: @'glArrayElement' i@


glArrayElement :: MonadIO m => GLint -> m ()
glArrayElement = ffiintIOV glArrayElementFunPtr

glArrayElementFunPtr :: FunPtr (GLint -> IO ())
glArrayElementFunPtr = unsafePerformIO (getProcAddress "glArrayElement")

{-# NOINLINE glArrayElementFunPtr #-}

-- | Usage: @'glBegin' mode@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.


glBegin :: MonadIO m => GLenum -> m ()
glBegin = ffienumIOV glBeginFunPtr

glBeginFunPtr :: FunPtr (GLenum -> IO ())
glBeginFunPtr = unsafePerformIO (getProcAddress "glBegin")

{-# NOINLINE glBeginFunPtr #-}

-- | Usage: @'glBitmap' width height xorig yorig xmove ymove bitmap@
--
-- The parameter @xorig@ is a @CoordF@.
--
-- The parameter @yorig@ is a @CoordF@.
--
-- The parameter @xmove@ is a @CoordF@.
--
-- The parameter @ymove@ is a @CoordF@.
--
-- The length of @bitmap@ should be @COMPSIZE(width,height)@.


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

-- | Usage: @'glCallList' list@
--
-- The parameter @list@ is a @List@.


glCallList :: MonadIO m => GLuint -> m ()
glCallList = ffiuintIOV glCallListFunPtr

glCallListFunPtr :: FunPtr (GLuint -> IO ())
glCallListFunPtr = unsafePerformIO (getProcAddress "glCallList")

{-# NOINLINE glCallListFunPtr #-}

-- | Usage: @'glCallLists' n type lists@
--
-- The parameter @type@ is a @ListNameType@, one of: 'Graphics.GL.Internal.Shared.GL_2_BYTES', 'Graphics.GL.Internal.Shared.GL_3_BYTES', 'Graphics.GL.Internal.Shared.GL_4_BYTES', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT'.
--
-- The length of @lists@ should be @COMPSIZE(n,type)@.


glCallLists :: MonadIO m => GLsizei -> GLenum -> Ptr () -> m ()
glCallLists = ffisizeienumPtrVIOV glCallListsFunPtr

glCallListsFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr () -> IO ())
glCallListsFunPtr = unsafePerformIO (getProcAddress "glCallLists")

{-# NOINLINE glCallListsFunPtr #-}

-- | Usage: @'glClearAccum' red green blue alpha@


glClearAccum :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glClearAccum = ffifloatfloatfloatfloatIOV glClearAccumFunPtr

glClearAccumFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glClearAccumFunPtr = unsafePerformIO (getProcAddress "glClearAccum")

{-# NOINLINE glClearAccumFunPtr #-}

-- | Usage: @'glClearIndex' c@
--
-- The parameter @c@ is a @MaskedColorIndexValueF@.


glClearIndex :: MonadIO m => GLfloat -> m ()
glClearIndex = ffifloatIOV glClearIndexFunPtr

glClearIndexFunPtr :: FunPtr (GLfloat -> IO ())
glClearIndexFunPtr = unsafePerformIO (getProcAddress "glClearIndex")

{-# NOINLINE glClearIndexFunPtr #-}

-- | Usage: @'glClientActiveTexture' texture@
--
-- The parameter @texture@ is a @TextureUnit@.


glClientActiveTexture :: MonadIO m => GLenum -> m ()
glClientActiveTexture = ffienumIOV glClientActiveTextureFunPtr

glClientActiveTextureFunPtr :: FunPtr (GLenum -> IO ())
glClientActiveTextureFunPtr = unsafePerformIO (getProcAddress "glClientActiveTexture")

{-# NOINLINE glClientActiveTextureFunPtr #-}

-- | Usage: @'glClipPlane' plane equation@
--
-- The parameter @plane@ is a @ClipPlaneName@, one of: 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE0', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE1', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE2', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE3', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE4', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE5', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE6', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE7', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5'.
--
-- The length of @equation@ should be @4@.


glClipPlane :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glClipPlane = ffienumPtrdoubleIOV glClipPlaneFunPtr

glClipPlaneFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glClipPlaneFunPtr = unsafePerformIO (getProcAddress "glClipPlane")

{-# NOINLINE glClipPlaneFunPtr #-}

-- | Usage: @'glColor3b' red green blue@
--
-- The parameter @red@ is a @ColorB@.
--
-- The parameter @green@ is a @ColorB@.
--
-- The parameter @blue@ is a @ColorB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3bv'.


glColor3b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glColor3b = ffibytebytebyteIOV glColor3bFunPtr

glColor3bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glColor3bFunPtr = unsafePerformIO (getProcAddress "glColor3b")

{-# NOINLINE glColor3bFunPtr #-}

-- | Usage: @'glColor3bv' v@
--
-- The parameter @v@ is a @ColorB@.
--
-- The length of @v@ should be @3@.


glColor3bv :: MonadIO m => Ptr GLbyte -> m ()
glColor3bv = ffiPtrbyteIOV glColor3bvFunPtr

glColor3bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glColor3bvFunPtr = unsafePerformIO (getProcAddress "glColor3bv")

{-# NOINLINE glColor3bvFunPtr #-}

-- | Usage: @'glColor3d' red green blue@
--
-- The parameter @red@ is a @ColorD@.
--
-- The parameter @green@ is a @ColorD@.
--
-- The parameter @blue@ is a @ColorD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3dv'.


glColor3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glColor3d = ffidoubledoubledoubleIOV glColor3dFunPtr

glColor3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glColor3dFunPtr = unsafePerformIO (getProcAddress "glColor3d")

{-# NOINLINE glColor3dFunPtr #-}

-- | Usage: @'glColor3dv' v@
--
-- The parameter @v@ is a @ColorD@.
--
-- The length of @v@ should be @3@.


glColor3dv :: MonadIO m => Ptr GLdouble -> m ()
glColor3dv = ffiPtrdoubleIOV glColor3dvFunPtr

glColor3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glColor3dvFunPtr = unsafePerformIO (getProcAddress "glColor3dv")

{-# NOINLINE glColor3dvFunPtr #-}

-- | Usage: @'glColor3f' red green blue@
--
-- The parameter @red@ is a @ColorF@.
--
-- The parameter @green@ is a @ColorF@.
--
-- The parameter @blue@ is a @ColorF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3fv'.


glColor3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glColor3f = ffifloatfloatfloatIOV glColor3fFunPtr

glColor3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glColor3fFunPtr = unsafePerformIO (getProcAddress "glColor3f")

{-# NOINLINE glColor3fFunPtr #-}

-- | Usage: @'glColor3fv' v@
--
-- The parameter @v@ is a @ColorF@.
--
-- The length of @v@ should be @3@.


glColor3fv :: MonadIO m => Ptr GLfloat -> m ()
glColor3fv = ffiPtrfloatIOV glColor3fvFunPtr

glColor3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glColor3fvFunPtr = unsafePerformIO (getProcAddress "glColor3fv")

{-# NOINLINE glColor3fvFunPtr #-}

-- | Usage: @'glColor3i' red green blue@
--
-- The parameter @red@ is a @ColorI@.
--
-- The parameter @green@ is a @ColorI@.
--
-- The parameter @blue@ is a @ColorI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3iv'.


glColor3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glColor3i = ffiintintintIOV glColor3iFunPtr

glColor3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glColor3iFunPtr = unsafePerformIO (getProcAddress "glColor3i")

{-# NOINLINE glColor3iFunPtr #-}

-- | Usage: @'glColor3iv' v@
--
-- The parameter @v@ is a @ColorI@.
--
-- The length of @v@ should be @3@.


glColor3iv :: MonadIO m => Ptr GLint -> m ()
glColor3iv = ffiPtrintIOV glColor3ivFunPtr

glColor3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glColor3ivFunPtr = unsafePerformIO (getProcAddress "glColor3iv")

{-# NOINLINE glColor3ivFunPtr #-}

-- | Usage: @'glColor3s' red green blue@
--
-- The parameter @red@ is a @ColorS@.
--
-- The parameter @green@ is a @ColorS@.
--
-- The parameter @blue@ is a @ColorS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3sv'.


glColor3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glColor3s = ffishortshortshortIOV glColor3sFunPtr

glColor3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glColor3sFunPtr = unsafePerformIO (getProcAddress "glColor3s")

{-# NOINLINE glColor3sFunPtr #-}

-- | Usage: @'glColor3sv' v@
--
-- The parameter @v@ is a @ColorS@.
--
-- The length of @v@ should be @3@.


glColor3sv :: MonadIO m => Ptr GLshort -> m ()
glColor3sv = ffiPtrshortIOV glColor3svFunPtr

glColor3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glColor3svFunPtr = unsafePerformIO (getProcAddress "glColor3sv")

{-# NOINLINE glColor3svFunPtr #-}

-- | Usage: @'glColor3ub' red green blue@
--
-- The parameter @red@ is a @ColorUB@.
--
-- The parameter @green@ is a @ColorUB@.
--
-- The parameter @blue@ is a @ColorUB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3ubv'.


glColor3ub :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> m ()
glColor3ub = ffiubyteubyteubyteIOV glColor3ubFunPtr

glColor3ubFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ())
glColor3ubFunPtr = unsafePerformIO (getProcAddress "glColor3ub")

{-# NOINLINE glColor3ubFunPtr #-}

-- | Usage: @'glColor3ubv' v@
--
-- The parameter @v@ is a @ColorUB@.
--
-- The length of @v@ should be @3@.


glColor3ubv :: MonadIO m => Ptr GLubyte -> m ()
glColor3ubv = ffiPtrubyteIOV glColor3ubvFunPtr

glColor3ubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glColor3ubvFunPtr = unsafePerformIO (getProcAddress "glColor3ubv")

{-# NOINLINE glColor3ubvFunPtr #-}

-- | Usage: @'glColor3ui' red green blue@
--
-- The parameter @red@ is a @ColorUI@.
--
-- The parameter @green@ is a @ColorUI@.
--
-- The parameter @blue@ is a @ColorUI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3uiv'.


glColor3ui :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glColor3ui = ffiuintuintuintIOV glColor3uiFunPtr

glColor3uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glColor3uiFunPtr = unsafePerformIO (getProcAddress "glColor3ui")

{-# NOINLINE glColor3uiFunPtr #-}

-- | Usage: @'glColor3uiv' v@
--
-- The parameter @v@ is a @ColorUI@.
--
-- The length of @v@ should be @3@.


glColor3uiv :: MonadIO m => Ptr GLuint -> m ()
glColor3uiv = ffiPtruintIOV glColor3uivFunPtr

glColor3uivFunPtr :: FunPtr (Ptr GLuint -> IO ())
glColor3uivFunPtr = unsafePerformIO (getProcAddress "glColor3uiv")

{-# NOINLINE glColor3uivFunPtr #-}

-- | Usage: @'glColor3us' red green blue@
--
-- The parameter @red@ is a @ColorUS@.
--
-- The parameter @green@ is a @ColorUS@.
--
-- The parameter @blue@ is a @ColorUS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor3usv'.


glColor3us :: MonadIO m => GLushort -> GLushort -> GLushort -> m ()
glColor3us = ffiushortushortushortIOV glColor3usFunPtr

glColor3usFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> IO ())
glColor3usFunPtr = unsafePerformIO (getProcAddress "glColor3us")

{-# NOINLINE glColor3usFunPtr #-}

-- | Usage: @'glColor3usv' v@
--
-- The parameter @v@ is a @ColorUS@.
--
-- The length of @v@ should be @3@.


glColor3usv :: MonadIO m => Ptr GLushort -> m ()
glColor3usv = ffiPtrushortIOV glColor3usvFunPtr

glColor3usvFunPtr :: FunPtr (Ptr GLushort -> IO ())
glColor3usvFunPtr = unsafePerformIO (getProcAddress "glColor3usv")

{-# NOINLINE glColor3usvFunPtr #-}

-- | Usage: @'glColor4b' red green blue alpha@
--
-- The parameter @red@ is a @ColorB@.
--
-- The parameter @green@ is a @ColorB@.
--
-- The parameter @blue@ is a @ColorB@.
--
-- The parameter @alpha@ is a @ColorB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4bv'.


glColor4b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> GLbyte -> m ()
glColor4b = ffibytebytebytebyteIOV glColor4bFunPtr

glColor4bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> GLbyte -> IO ())
glColor4bFunPtr = unsafePerformIO (getProcAddress "glColor4b")

{-# NOINLINE glColor4bFunPtr #-}

-- | Usage: @'glColor4bv' v@
--
-- The parameter @v@ is a @ColorB@.
--
-- The length of @v@ should be @4@.


glColor4bv :: MonadIO m => Ptr GLbyte -> m ()
glColor4bv = ffiPtrbyteIOV glColor4bvFunPtr

glColor4bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glColor4bvFunPtr = unsafePerformIO (getProcAddress "glColor4bv")

{-# NOINLINE glColor4bvFunPtr #-}

-- | Usage: @'glColor4d' red green blue alpha@
--
-- The parameter @red@ is a @ColorD@.
--
-- The parameter @green@ is a @ColorD@.
--
-- The parameter @blue@ is a @ColorD@.
--
-- The parameter @alpha@ is a @ColorD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4dv'.


glColor4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glColor4d = ffidoubledoubledoubledoubleIOV glColor4dFunPtr

glColor4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glColor4dFunPtr = unsafePerformIO (getProcAddress "glColor4d")

{-# NOINLINE glColor4dFunPtr #-}

-- | Usage: @'glColor4dv' v@
--
-- The parameter @v@ is a @ColorD@.
--
-- The length of @v@ should be @4@.


glColor4dv :: MonadIO m => Ptr GLdouble -> m ()
glColor4dv = ffiPtrdoubleIOV glColor4dvFunPtr

glColor4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glColor4dvFunPtr = unsafePerformIO (getProcAddress "glColor4dv")

{-# NOINLINE glColor4dvFunPtr #-}

-- | Usage: @'glColor4f' red green blue alpha@
--
-- The parameter @red@ is a @ColorF@.
--
-- The parameter @green@ is a @ColorF@.
--
-- The parameter @blue@ is a @ColorF@.
--
-- The parameter @alpha@ is a @ColorF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4fv'.


glColor4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glColor4f = ffifloatfloatfloatfloatIOV glColor4fFunPtr

glColor4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glColor4fFunPtr = unsafePerformIO (getProcAddress "glColor4f")

{-# NOINLINE glColor4fFunPtr #-}

-- | Usage: @'glColor4fv' v@
--
-- The parameter @v@ is a @ColorF@.
--
-- The length of @v@ should be @4@.


glColor4fv :: MonadIO m => Ptr GLfloat -> m ()
glColor4fv = ffiPtrfloatIOV glColor4fvFunPtr

glColor4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glColor4fvFunPtr = unsafePerformIO (getProcAddress "glColor4fv")

{-# NOINLINE glColor4fvFunPtr #-}

-- | Usage: @'glColor4i' red green blue alpha@
--
-- The parameter @red@ is a @ColorI@.
--
-- The parameter @green@ is a @ColorI@.
--
-- The parameter @blue@ is a @ColorI@.
--
-- The parameter @alpha@ is a @ColorI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4iv'.


glColor4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glColor4i = ffiintintintintIOV glColor4iFunPtr

glColor4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glColor4iFunPtr = unsafePerformIO (getProcAddress "glColor4i")

{-# NOINLINE glColor4iFunPtr #-}

-- | Usage: @'glColor4iv' v@
--
-- The parameter @v@ is a @ColorI@.
--
-- The length of @v@ should be @4@.


glColor4iv :: MonadIO m => Ptr GLint -> m ()
glColor4iv = ffiPtrintIOV glColor4ivFunPtr

glColor4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glColor4ivFunPtr = unsafePerformIO (getProcAddress "glColor4iv")

{-# NOINLINE glColor4ivFunPtr #-}

-- | Usage: @'glColor4s' red green blue alpha@
--
-- The parameter @red@ is a @ColorS@.
--
-- The parameter @green@ is a @ColorS@.
--
-- The parameter @blue@ is a @ColorS@.
--
-- The parameter @alpha@ is a @ColorS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4sv'.


glColor4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glColor4s = ffishortshortshortshortIOV glColor4sFunPtr

glColor4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glColor4sFunPtr = unsafePerformIO (getProcAddress "glColor4s")

{-# NOINLINE glColor4sFunPtr #-}

-- | Usage: @'glColor4sv' v@
--
-- The parameter @v@ is a @ColorS@.
--
-- The length of @v@ should be @4@.


glColor4sv :: MonadIO m => Ptr GLshort -> m ()
glColor4sv = ffiPtrshortIOV glColor4svFunPtr

glColor4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glColor4svFunPtr = unsafePerformIO (getProcAddress "glColor4sv")

{-# NOINLINE glColor4svFunPtr #-}

-- | Usage: @'glColor4ub' red green blue alpha@
--
-- The parameter @red@ is a @ColorUB@.
--
-- The parameter @green@ is a @ColorUB@.
--
-- The parameter @blue@ is a @ColorUB@.
--
-- The parameter @alpha@ is a @ColorUB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4ubv'.


glColor4ub :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> GLubyte -> m ()
glColor4ub = ffiubyteubyteubyteubyteIOV glColor4ubFunPtr

glColor4ubFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> GLubyte -> IO ())
glColor4ubFunPtr = unsafePerformIO (getProcAddress "glColor4ub")

{-# NOINLINE glColor4ubFunPtr #-}

-- | Usage: @'glColor4ubv' v@
--
-- The parameter @v@ is a @ColorUB@.
--
-- The length of @v@ should be @4@.


glColor4ubv :: MonadIO m => Ptr GLubyte -> m ()
glColor4ubv = ffiPtrubyteIOV glColor4ubvFunPtr

glColor4ubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glColor4ubvFunPtr = unsafePerformIO (getProcAddress "glColor4ubv")

{-# NOINLINE glColor4ubvFunPtr #-}

-- | Usage: @'glColor4ui' red green blue alpha@
--
-- The parameter @red@ is a @ColorUI@.
--
-- The parameter @green@ is a @ColorUI@.
--
-- The parameter @blue@ is a @ColorUI@.
--
-- The parameter @alpha@ is a @ColorUI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4uiv'.


glColor4ui :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
glColor4ui = ffiuintuintuintuintIOV glColor4uiFunPtr

glColor4uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glColor4uiFunPtr = unsafePerformIO (getProcAddress "glColor4ui")

{-# NOINLINE glColor4uiFunPtr #-}

-- | Usage: @'glColor4uiv' v@
--
-- The parameter @v@ is a @ColorUI@.
--
-- The length of @v@ should be @4@.


glColor4uiv :: MonadIO m => Ptr GLuint -> m ()
glColor4uiv = ffiPtruintIOV glColor4uivFunPtr

glColor4uivFunPtr :: FunPtr (Ptr GLuint -> IO ())
glColor4uivFunPtr = unsafePerformIO (getProcAddress "glColor4uiv")

{-# NOINLINE glColor4uivFunPtr #-}

-- | Usage: @'glColor4us' red green blue alpha@
--
-- The parameter @red@ is a @ColorUS@.
--
-- The parameter @green@ is a @ColorUS@.
--
-- The parameter @blue@ is a @ColorUS@.
--
-- The parameter @alpha@ is a @ColorUS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glColor4usv'.


glColor4us :: MonadIO m => GLushort -> GLushort -> GLushort -> GLushort -> m ()
glColor4us = ffiushortushortushortushortIOV glColor4usFunPtr

glColor4usFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> GLushort -> IO ())
glColor4usFunPtr = unsafePerformIO (getProcAddress "glColor4us")

{-# NOINLINE glColor4usFunPtr #-}

-- | Usage: @'glColor4usv' v@
--
-- The parameter @v@ is a @ColorUS@.
--
-- The length of @v@ should be @4@.


glColor4usv :: MonadIO m => Ptr GLushort -> m ()
glColor4usv = ffiPtrushortIOV glColor4usvFunPtr

glColor4usvFunPtr :: FunPtr (Ptr GLushort -> IO ())
glColor4usvFunPtr = unsafePerformIO (getProcAddress "glColor4usv")

{-# NOINLINE glColor4usvFunPtr #-}

-- | Usage: @'glColorMaterial' face mode@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @mode@ is a @ColorMaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.


glColorMaterial :: MonadIO m => GLenum -> GLenum -> m ()
glColorMaterial = ffienumenumIOV glColorMaterialFunPtr

glColorMaterialFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glColorMaterialFunPtr = unsafePerformIO (getProcAddress "glColorMaterial")

{-# NOINLINE glColorMaterialFunPtr #-}

-- | Usage: @'glColorPointer' size type stride pointer@
--
-- The parameter @type@ is a @ColorPointerType@, one of: 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_DOUBLE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT'.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


glColorPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glColorPointer = ffiintenumsizeiPtrVIOV glColorPointerFunPtr

glColorPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glColorPointerFunPtr = unsafePerformIO (getProcAddress "glColorPointer")

{-# NOINLINE glColorPointerFunPtr #-}

-- | Usage: @'glCopyPixels' x y width height type@
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- The parameter @type@ is a @PixelCopyType@, one of: 'Graphics.GL.Internal.Shared.GL_COLOR', 'Graphics.GL.Ext.EXT.DiscardFramebuffer.GL_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_DEPTH', 'Graphics.GL.Ext.EXT.DiscardFramebuffer.GL_DEPTH_EXT', 'Graphics.GL.Internal.Shared.GL_STENCIL', 'Graphics.GL.Ext.EXT.DiscardFramebuffer.GL_STENCIL_EXT'.


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

-- | Usage: @'glDeleteLists' list range@
--
-- The parameter @list@ is a @List@.


glDeleteLists :: MonadIO m => GLuint -> GLsizei -> m ()
glDeleteLists = ffiuintsizeiIOV glDeleteListsFunPtr

glDeleteListsFunPtr :: FunPtr (GLuint -> GLsizei -> IO ())
glDeleteListsFunPtr = unsafePerformIO (getProcAddress "glDeleteLists")

{-# NOINLINE glDeleteListsFunPtr #-}

-- | Usage: @'glDisableClientState' array@
--
-- The parameter @array@ is a @EnableCap@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY'.


glDisableClientState :: MonadIO m => GLenum -> m ()
glDisableClientState = ffienumIOV glDisableClientStateFunPtr

glDisableClientStateFunPtr :: FunPtr (GLenum -> IO ())
glDisableClientStateFunPtr = unsafePerformIO (getProcAddress "glDisableClientState")

{-# NOINLINE glDisableClientStateFunPtr #-}

-- | Usage: @'glDrawPixels' width height format type pixels@
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width,height)@.


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

-- | Usage: @'glEdgeFlag' flag@
--
-- The parameter @flag@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glEdgeFlagv'.


glEdgeFlag :: MonadIO m => GLboolean -> m ()
glEdgeFlag = ffibooleanIOV glEdgeFlagFunPtr

glEdgeFlagFunPtr :: FunPtr (GLboolean -> IO ())
glEdgeFlagFunPtr = unsafePerformIO (getProcAddress "glEdgeFlag")

{-# NOINLINE glEdgeFlagFunPtr #-}

-- | Usage: @'glEdgeFlagPointer' stride pointer@
--
-- The length of @pointer@ should be @COMPSIZE(stride)@.


glEdgeFlagPointer :: MonadIO m => GLsizei -> Ptr () -> m ()
glEdgeFlagPointer = ffisizeiPtrVIOV glEdgeFlagPointerFunPtr

glEdgeFlagPointerFunPtr :: FunPtr (GLsizei -> Ptr () -> IO ())
glEdgeFlagPointerFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagPointer")

{-# NOINLINE glEdgeFlagPointerFunPtr #-}

-- | Usage: @'glEdgeFlagv' flag@
--
-- The parameter @flag@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @flag@ should be @1@.


glEdgeFlagv :: MonadIO m => Ptr GLboolean -> m ()
glEdgeFlagv = ffiPtrbooleanIOV glEdgeFlagvFunPtr

glEdgeFlagvFunPtr :: FunPtr (Ptr GLboolean -> IO ())
glEdgeFlagvFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagv")

{-# NOINLINE glEdgeFlagvFunPtr #-}

-- | Usage: @'glEnableClientState' array@
--
-- The parameter @array@ is a @EnableCap@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY'.


glEnableClientState :: MonadIO m => GLenum -> m ()
glEnableClientState = ffienumIOV glEnableClientStateFunPtr

glEnableClientStateFunPtr :: FunPtr (GLenum -> IO ())
glEnableClientStateFunPtr = unsafePerformIO (getProcAddress "glEnableClientState")

{-# NOINLINE glEnableClientStateFunPtr #-}

-- | Usage: @'glEnd'@


glEnd :: MonadIO m => m ()
glEnd = ffiIOV glEndFunPtr

glEndFunPtr :: FunPtr (IO ())
glEndFunPtr = unsafePerformIO (getProcAddress "glEnd")

{-# NOINLINE glEndFunPtr #-}

-- | Usage: @'glEndList'@


glEndList :: MonadIO m => m ()
glEndList = ffiIOV glEndListFunPtr

glEndListFunPtr :: FunPtr (IO ())
glEndListFunPtr = unsafePerformIO (getProcAddress "glEndList")

{-# NOINLINE glEndListFunPtr #-}

-- | Usage: @'glEvalCoord1d' u@
--
-- The parameter @u@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glEvalCoord1dv'.


glEvalCoord1d :: MonadIO m => GLdouble -> m ()
glEvalCoord1d = ffidoubleIOV glEvalCoord1dFunPtr

glEvalCoord1dFunPtr :: FunPtr (GLdouble -> IO ())
glEvalCoord1dFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1d")

{-# NOINLINE glEvalCoord1dFunPtr #-}

-- | Usage: @'glEvalCoord1dv' u@
--
-- The parameter @u@ is a @CoordD@.
--
-- The length of @u@ should be @1@.


glEvalCoord1dv :: MonadIO m => Ptr GLdouble -> m ()
glEvalCoord1dv = ffiPtrdoubleIOV glEvalCoord1dvFunPtr

glEvalCoord1dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glEvalCoord1dvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1dv")

{-# NOINLINE glEvalCoord1dvFunPtr #-}

-- | Usage: @'glEvalCoord1f' u@
--
-- The parameter @u@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glEvalCoord1fv'.


glEvalCoord1f :: MonadIO m => GLfloat -> m ()
glEvalCoord1f = ffifloatIOV glEvalCoord1fFunPtr

glEvalCoord1fFunPtr :: FunPtr (GLfloat -> IO ())
glEvalCoord1fFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1f")

{-# NOINLINE glEvalCoord1fFunPtr #-}

-- | Usage: @'glEvalCoord1fv' u@
--
-- The parameter @u@ is a @CoordF@.
--
-- The length of @u@ should be @1@.


glEvalCoord1fv :: MonadIO m => Ptr GLfloat -> m ()
glEvalCoord1fv = ffiPtrfloatIOV glEvalCoord1fvFunPtr

glEvalCoord1fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glEvalCoord1fvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord1fv")

{-# NOINLINE glEvalCoord1fvFunPtr #-}

-- | Usage: @'glEvalCoord2d' u v@
--
-- The parameter @u@ is a @CoordD@.
--
-- The parameter @v@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glEvalCoord2dv'.


glEvalCoord2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glEvalCoord2d = ffidoubledoubleIOV glEvalCoord2dFunPtr

glEvalCoord2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glEvalCoord2dFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2d")

{-# NOINLINE glEvalCoord2dFunPtr #-}

-- | Usage: @'glEvalCoord2dv' u@
--
-- The parameter @u@ is a @CoordD@.
--
-- The length of @u@ should be @2@.


glEvalCoord2dv :: MonadIO m => Ptr GLdouble -> m ()
glEvalCoord2dv = ffiPtrdoubleIOV glEvalCoord2dvFunPtr

glEvalCoord2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glEvalCoord2dvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2dv")

{-# NOINLINE glEvalCoord2dvFunPtr #-}

-- | Usage: @'glEvalCoord2f' u v@
--
-- The parameter @u@ is a @CoordF@.
--
-- The parameter @v@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glEvalCoord2fv'.


glEvalCoord2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glEvalCoord2f = ffifloatfloatIOV glEvalCoord2fFunPtr

glEvalCoord2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glEvalCoord2fFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2f")

{-# NOINLINE glEvalCoord2fFunPtr #-}

-- | Usage: @'glEvalCoord2fv' u@
--
-- The parameter @u@ is a @CoordF@.
--
-- The length of @u@ should be @2@.


glEvalCoord2fv :: MonadIO m => Ptr GLfloat -> m ()
glEvalCoord2fv = ffiPtrfloatIOV glEvalCoord2fvFunPtr

glEvalCoord2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glEvalCoord2fvFunPtr = unsafePerformIO (getProcAddress "glEvalCoord2fv")

{-# NOINLINE glEvalCoord2fvFunPtr #-}

-- | Usage: @'glEvalMesh1' mode i1 i2@
--
-- The parameter @mode@ is a @MeshMode1@, one of: 'Graphics.GL.Internal.Shared.GL_LINE', 'Graphics.GL.Internal.Shared.GL_POINT'.
--
-- The parameter @i1@ is a @CheckedInt32@.
--
-- The parameter @i2@ is a @CheckedInt32@.


glEvalMesh1 :: MonadIO m => GLenum -> GLint -> GLint -> m ()
glEvalMesh1 = ffienumintintIOV glEvalMesh1FunPtr

glEvalMesh1FunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
glEvalMesh1FunPtr = unsafePerformIO (getProcAddress "glEvalMesh1")

{-# NOINLINE glEvalMesh1FunPtr #-}

-- | Usage: @'glEvalMesh2' mode i1 i2 j1 j2@
--
-- The parameter @mode@ is a @MeshMode2@, one of: 'Graphics.GL.Internal.Shared.GL_FILL', 'Graphics.GL.Internal.Shared.GL_LINE', 'Graphics.GL.Internal.Shared.GL_POINT'.
--
-- The parameter @i1@ is a @CheckedInt32@.
--
-- The parameter @i2@ is a @CheckedInt32@.
--
-- The parameter @j1@ is a @CheckedInt32@.
--
-- The parameter @j2@ is a @CheckedInt32@.


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

-- | Usage: @'glEvalPoint1' i@


glEvalPoint1 :: MonadIO m => GLint -> m ()
glEvalPoint1 = ffiintIOV glEvalPoint1FunPtr

glEvalPoint1FunPtr :: FunPtr (GLint -> IO ())
glEvalPoint1FunPtr = unsafePerformIO (getProcAddress "glEvalPoint1")

{-# NOINLINE glEvalPoint1FunPtr #-}

-- | Usage: @'glEvalPoint2' i j@
--
-- The parameter @i@ is a @CheckedInt32@.
--
-- The parameter @j@ is a @CheckedInt32@.


glEvalPoint2 :: MonadIO m => GLint -> GLint -> m ()
glEvalPoint2 = ffiintintIOV glEvalPoint2FunPtr

glEvalPoint2FunPtr :: FunPtr (GLint -> GLint -> IO ())
glEvalPoint2FunPtr = unsafePerformIO (getProcAddress "glEvalPoint2")

{-# NOINLINE glEvalPoint2FunPtr #-}

-- | Usage: @'glFeedbackBuffer' size type buffer@
--
-- The parameter @type@ is a @FeedbackType@, one of: 'Graphics.GL.Internal.Shared.GL_2D', 'Graphics.GL.Internal.Shared.GL_3D', 'Graphics.GL.Internal.Shared.GL_3D_COLOR', 'Graphics.GL.Internal.Shared.GL_3D_COLOR_TEXTURE', 'Graphics.GL.Internal.Shared.GL_4D_COLOR_TEXTURE'.
--
-- The parameter @buffer@ is a @FeedbackElement@.
--
-- The length of @buffer@ should be @size@.


glFeedbackBuffer :: MonadIO m => GLsizei -> GLenum -> Ptr GLfloat -> m ()
glFeedbackBuffer = ffisizeienumPtrfloatIOV glFeedbackBufferFunPtr

glFeedbackBufferFunPtr :: FunPtr (GLsizei -> GLenum -> Ptr GLfloat -> IO ())
glFeedbackBufferFunPtr = unsafePerformIO (getProcAddress "glFeedbackBuffer")

{-# NOINLINE glFeedbackBufferFunPtr #-}

-- | Usage: @'glFogCoordPointer' type stride pointer@
--
-- The parameter @type@ is a @FogPointerTypeEXT@, one of: 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_DOUBLE'.
--
-- The length of @pointer@ should be @COMPSIZE(type,stride)@.


glFogCoordPointer :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glFogCoordPointer = ffienumsizeiPtrVIOV glFogCoordPointerFunPtr

glFogCoordPointerFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glFogCoordPointerFunPtr = unsafePerformIO (getProcAddress "glFogCoordPointer")

{-# NOINLINE glFogCoordPointerFunPtr #-}

-- | Usage: @'glFogCoordd' coord@
--
-- The parameter @coord@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glFogCoorddv'.


glFogCoordd :: MonadIO m => GLdouble -> m ()
glFogCoordd = ffidoubleIOV glFogCoorddFunPtr

glFogCoorddFunPtr :: FunPtr (GLdouble -> IO ())
glFogCoorddFunPtr = unsafePerformIO (getProcAddress "glFogCoordd")

{-# NOINLINE glFogCoorddFunPtr #-}

-- | Usage: @'glFogCoorddv' coord@
--
-- The parameter @coord@ is a @CoordD@.
--
-- The length of @coord@ should be @1@.


glFogCoorddv :: MonadIO m => Ptr GLdouble -> m ()
glFogCoorddv = ffiPtrdoubleIOV glFogCoorddvFunPtr

glFogCoorddvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glFogCoorddvFunPtr = unsafePerformIO (getProcAddress "glFogCoorddv")

{-# NOINLINE glFogCoorddvFunPtr #-}

-- | Usage: @'glFogCoordf' coord@
--
-- The parameter @coord@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glFogCoordfv'.


glFogCoordf :: MonadIO m => GLfloat -> m ()
glFogCoordf = ffifloatIOV glFogCoordfFunPtr

glFogCoordfFunPtr :: FunPtr (GLfloat -> IO ())
glFogCoordfFunPtr = unsafePerformIO (getProcAddress "glFogCoordf")

{-# NOINLINE glFogCoordfFunPtr #-}

-- | Usage: @'glFogCoordfv' coord@
--
-- The parameter @coord@ is a @CoordF@.
--
-- The length of @coord@ should be @1@.


glFogCoordfv :: MonadIO m => Ptr GLfloat -> m ()
glFogCoordfv = ffiPtrfloatIOV glFogCoordfvFunPtr

glFogCoordfvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glFogCoordfvFunPtr = unsafePerformIO (getProcAddress "glFogCoordfv")

{-# NOINLINE glFogCoordfvFunPtr #-}

-- | Usage: @'glFogf' pname param@
--
-- The parameter @pname@ is a @FogParameter@, one of: 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glFogf :: MonadIO m => GLenum -> GLfloat -> m ()
glFogf = ffienumfloatIOV glFogfFunPtr

glFogfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glFogfFunPtr = unsafePerformIO (getProcAddress "glFogf")

{-# NOINLINE glFogfFunPtr #-}

-- | Usage: @'glFogfv' pname params@
--
-- The parameter @pname@ is a @FogParameter@, one of: 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START'.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glFogfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glFogfv = ffienumPtrfloatIOV glFogfvFunPtr

glFogfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glFogfvFunPtr = unsafePerformIO (getProcAddress "glFogfv")

{-# NOINLINE glFogfvFunPtr #-}

-- | Usage: @'glFogi' pname param@
--
-- The parameter @pname@ is a @FogParameter@, one of: 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START'.
--
-- The parameter @param@ is a @CheckedInt32@.


glFogi :: MonadIO m => GLenum -> GLint -> m ()
glFogi = ffienumintIOV glFogiFunPtr

glFogiFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glFogiFunPtr = unsafePerformIO (getProcAddress "glFogi")

{-# NOINLINE glFogiFunPtr #-}

-- | Usage: @'glFogiv' pname params@
--
-- The parameter @pname@ is a @FogParameter@, one of: 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START'.
--
-- The parameter @params@ is a @CheckedInt32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glFogiv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glFogiv = ffienumPtrintIOV glFogivFunPtr

glFogivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glFogivFunPtr = unsafePerformIO (getProcAddress "glFogiv")

{-# NOINLINE glFogivFunPtr #-}

-- | Usage: @'glFrustum' left right bottom top zNear zFar@


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

-- | Usage: @'glGenLists' range@


glGenLists :: MonadIO m => GLsizei -> m GLuint
glGenLists = ffisizeiIOuint glGenListsFunPtr

glGenListsFunPtr :: FunPtr (GLsizei -> IO GLuint)
glGenListsFunPtr = unsafePerformIO (getProcAddress "glGenLists")

{-# NOINLINE glGenListsFunPtr #-}

-- | Usage: @'glGetClipPlane' plane equation@
--
-- The parameter @plane@ is a @ClipPlaneName@, one of: 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE0', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE1', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE2', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE3', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE4', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE5', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE6', 'Graphics.GL.Internal.Shared.GL_CLIP_DISTANCE7', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5'.
--
-- The length of @equation@ should be @4@.


glGetClipPlane :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glGetClipPlane = ffienumPtrdoubleIOV glGetClipPlaneFunPtr

glGetClipPlaneFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glGetClipPlaneFunPtr = unsafePerformIO (getProcAddress "glGetClipPlane")

{-# NOINLINE glGetClipPlaneFunPtr #-}

-- | Usage: @'glGetLightfv' light pname params@
--
-- The parameter @light@ is a @LightName@, one of: 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7'.
--
-- The parameter @pname@ is a @LightParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_CONSTANT_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_LINEAR_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_POSITION', 'Graphics.GL.Internal.Shared.GL_QUADRATIC_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_SPECULAR', 'Graphics.GL.Internal.Shared.GL_SPOT_CUTOFF', 'Graphics.GL.Internal.Shared.GL_SPOT_DIRECTION', 'Graphics.GL.Internal.Shared.GL_SPOT_EXPONENT'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetLightfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetLightfv = ffienumenumPtrfloatIOV glGetLightfvFunPtr

glGetLightfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetLightfvFunPtr = unsafePerformIO (getProcAddress "glGetLightfv")

{-# NOINLINE glGetLightfvFunPtr #-}

-- | Usage: @'glGetLightiv' light pname params@
--
-- The parameter @light@ is a @LightName@, one of: 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7'.
--
-- The parameter @pname@ is a @LightParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_CONSTANT_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_LINEAR_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_POSITION', 'Graphics.GL.Internal.Shared.GL_QUADRATIC_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_SPECULAR', 'Graphics.GL.Internal.Shared.GL_SPOT_CUTOFF', 'Graphics.GL.Internal.Shared.GL_SPOT_DIRECTION', 'Graphics.GL.Internal.Shared.GL_SPOT_EXPONENT'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetLightiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetLightiv = ffienumenumPtrintIOV glGetLightivFunPtr

glGetLightivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetLightivFunPtr = unsafePerformIO (getProcAddress "glGetLightiv")

{-# NOINLINE glGetLightivFunPtr #-}

-- | Usage: @'glGetMapdv' target query v@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @query@ is a @GetMapQuery@, one of: 'Graphics.GL.Internal.Shared.GL_COEFF', 'Graphics.GL.Internal.Shared.GL_DOMAIN', 'Graphics.GL.Internal.Shared.GL_ORDER'.
--
-- The length of @v@ should be @COMPSIZE(target,query)@.


glGetMapdv :: MonadIO m => GLenum -> GLenum -> Ptr GLdouble -> m ()
glGetMapdv = ffienumenumPtrdoubleIOV glGetMapdvFunPtr

glGetMapdvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ())
glGetMapdvFunPtr = unsafePerformIO (getProcAddress "glGetMapdv")

{-# NOINLINE glGetMapdvFunPtr #-}

-- | Usage: @'glGetMapfv' target query v@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @query@ is a @GetMapQuery@, one of: 'Graphics.GL.Internal.Shared.GL_COEFF', 'Graphics.GL.Internal.Shared.GL_DOMAIN', 'Graphics.GL.Internal.Shared.GL_ORDER'.
--
-- The length of @v@ should be @COMPSIZE(target,query)@.


glGetMapfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetMapfv = ffienumenumPtrfloatIOV glGetMapfvFunPtr

glGetMapfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetMapfvFunPtr = unsafePerformIO (getProcAddress "glGetMapfv")

{-# NOINLINE glGetMapfvFunPtr #-}

-- | Usage: @'glGetMapiv' target query v@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @query@ is a @GetMapQuery@, one of: 'Graphics.GL.Internal.Shared.GL_COEFF', 'Graphics.GL.Internal.Shared.GL_DOMAIN', 'Graphics.GL.Internal.Shared.GL_ORDER'.
--
-- The length of @v@ should be @COMPSIZE(target,query)@.


glGetMapiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetMapiv = ffienumenumPtrintIOV glGetMapivFunPtr

glGetMapivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetMapivFunPtr = unsafePerformIO (getProcAddress "glGetMapiv")

{-# NOINLINE glGetMapivFunPtr #-}

-- | Usage: @'glGetMaterialfv' face pname params@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @pname@ is a @MaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEXES', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SHININESS', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetMaterialfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetMaterialfv = ffienumenumPtrfloatIOV glGetMaterialfvFunPtr

glGetMaterialfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetMaterialfvFunPtr = unsafePerformIO (getProcAddress "glGetMaterialfv")

{-# NOINLINE glGetMaterialfvFunPtr #-}

-- | Usage: @'glGetMaterialiv' face pname params@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @pname@ is a @MaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEXES', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SHININESS', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetMaterialiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetMaterialiv = ffienumenumPtrintIOV glGetMaterialivFunPtr

glGetMaterialivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetMaterialivFunPtr = unsafePerformIO (getProcAddress "glGetMaterialiv")

{-# NOINLINE glGetMaterialivFunPtr #-}

-- | Usage: @'glGetPixelMapfv' map values@
--
-- The parameter @map@ is a @PixelMap@, one of: 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S'.
--
-- The length of @values@ should be @COMPSIZE(map)@.


glGetPixelMapfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glGetPixelMapfv = ffienumPtrfloatIOV glGetPixelMapfvFunPtr

glGetPixelMapfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glGetPixelMapfvFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapfv")

{-# NOINLINE glGetPixelMapfvFunPtr #-}

-- | Usage: @'glGetPixelMapuiv' map values@
--
-- The parameter @map@ is a @PixelMap@, one of: 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S'.
--
-- The length of @values@ should be @COMPSIZE(map)@.


glGetPixelMapuiv :: MonadIO m => GLenum -> Ptr GLuint -> m ()
glGetPixelMapuiv = ffienumPtruintIOV glGetPixelMapuivFunPtr

glGetPixelMapuivFunPtr :: FunPtr (GLenum -> Ptr GLuint -> IO ())
glGetPixelMapuivFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapuiv")

{-# NOINLINE glGetPixelMapuivFunPtr #-}

-- | Usage: @'glGetPixelMapusv' map values@
--
-- The parameter @map@ is a @PixelMap@, one of: 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S'.
--
-- The length of @values@ should be @COMPSIZE(map)@.


glGetPixelMapusv :: MonadIO m => GLenum -> Ptr GLushort -> m ()
glGetPixelMapusv = ffienumPtrushortIOV glGetPixelMapusvFunPtr

glGetPixelMapusvFunPtr :: FunPtr (GLenum -> Ptr GLushort -> IO ())
glGetPixelMapusvFunPtr = unsafePerformIO (getProcAddress "glGetPixelMapusv")

{-# NOINLINE glGetPixelMapusvFunPtr #-}

-- | Usage: @'glGetPointerv' pname params@
--
-- The parameter @pname@ is a @GetPointervPName@, one of: 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_POINTER', 'Graphics.GL.Ext.EXT.VertexArray.GL_COLOR_ARRAY_POINTER_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY_POINTER', 'Graphics.GL.Ext.EXT.VertexArray.GL_EDGE_FLAG_ARRAY_POINTER_EXT', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_POINTER', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_POINTER', 'Graphics.GL.Ext.EXT.VertexArray.GL_INDEX_ARRAY_POINTER_EXT', 'Graphics.GL.Ext.SGIX.Instruments.GL_INSTRUMENT_BUFFER_POINTER_SGIX', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_POINTER', 'Graphics.GL.Ext.EXT.VertexArray.GL_NORMAL_ARRAY_POINTER_EXT', 'Graphics.GL.Internal.Shared.GL_SELECTION_BUFFER_POINTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_POINTER', 'Graphics.GL.Ext.EXT.VertexArray.GL_TEXTURE_COORD_ARRAY_POINTER_EXT', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_POINTER', 'Graphics.GL.Ext.EXT.VertexArray.GL_VERTEX_ARRAY_POINTER_EXT'.
--
-- The length of @params@ should be @1@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetPointerv.xhtml>


glGetPointerv :: MonadIO m => GLenum -> Ptr (Ptr ()) -> m ()
glGetPointerv = ffienumPtrPtrVIOV glGetPointervFunPtr

glGetPointervFunPtr :: FunPtr (GLenum -> Ptr (Ptr ()) -> IO ())
glGetPointervFunPtr = unsafePerformIO (getProcAddress "glGetPointerv")

{-# NOINLINE glGetPointervFunPtr #-}

-- | Usage: @'glGetPolygonStipple' mask@
--
-- The length of @mask@ should be @COMPSIZE()@.


glGetPolygonStipple :: MonadIO m => Ptr GLubyte -> m ()
glGetPolygonStipple = ffiPtrubyteIOV glGetPolygonStippleFunPtr

glGetPolygonStippleFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glGetPolygonStippleFunPtr = unsafePerformIO (getProcAddress "glGetPolygonStipple")

{-# NOINLINE glGetPolygonStippleFunPtr #-}

-- | Usage: @'glGetTexEnvfv' target pname params@
--
-- The parameter @target@ is a @TextureEnvTarget@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV'.
--
-- The parameter @pname@ is a @TextureEnvParameter@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_COLOR', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_MODE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexEnvfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetTexEnvfv = ffienumenumPtrfloatIOV glGetTexEnvfvFunPtr

glGetTexEnvfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetTexEnvfvFunPtr = unsafePerformIO (getProcAddress "glGetTexEnvfv")

{-# NOINLINE glGetTexEnvfvFunPtr #-}

-- | Usage: @'glGetTexEnviv' target pname params@
--
-- The parameter @target@ is a @TextureEnvTarget@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV'.
--
-- The parameter @pname@ is a @TextureEnvParameter@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_COLOR', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_MODE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexEnviv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexEnviv = ffienumenumPtrintIOV glGetTexEnvivFunPtr

glGetTexEnvivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexEnvivFunPtr = unsafePerformIO (getProcAddress "glGetTexEnviv")

{-# NOINLINE glGetTexEnvivFunPtr #-}

-- | Usage: @'glGetTexGendv' coord pname params@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexGendv :: MonadIO m => GLenum -> GLenum -> Ptr GLdouble -> m ()
glGetTexGendv = ffienumenumPtrdoubleIOV glGetTexGendvFunPtr

glGetTexGendvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ())
glGetTexGendvFunPtr = unsafePerformIO (getProcAddress "glGetTexGendv")

{-# NOINLINE glGetTexGendvFunPtr #-}

-- | Usage: @'glGetTexGenfv' coord pname params@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexGenfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetTexGenfv = ffienumenumPtrfloatIOV glGetTexGenfvFunPtr

glGetTexGenfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetTexGenfvFunPtr = unsafePerformIO (getProcAddress "glGetTexGenfv")

{-# NOINLINE glGetTexGenfvFunPtr #-}

-- | Usage: @'glGetTexGeniv' coord pname params@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexGeniv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexGeniv = ffienumenumPtrintIOV glGetTexGenivFunPtr

glGetTexGenivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexGenivFunPtr = unsafePerformIO (getProcAddress "glGetTexGeniv")

{-# NOINLINE glGetTexGenivFunPtr #-}

-- | Usage: @'glIndexMask' mask@
--
-- The parameter @mask@ is a @MaskedColorIndexValueI@.


glIndexMask :: MonadIO m => GLuint -> m ()
glIndexMask = ffiuintIOV glIndexMaskFunPtr

glIndexMaskFunPtr :: FunPtr (GLuint -> IO ())
glIndexMaskFunPtr = unsafePerformIO (getProcAddress "glIndexMask")

{-# NOINLINE glIndexMaskFunPtr #-}

-- | Usage: @'glIndexPointer' type stride pointer@
--
-- The parameter @type@ is a @IndexPointerType@, one of: 'Graphics.GL.Internal.Shared.GL_DOUBLE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT'.
--
-- The length of @pointer@ should be @COMPSIZE(type,stride)@.


glIndexPointer :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glIndexPointer = ffienumsizeiPtrVIOV glIndexPointerFunPtr

glIndexPointerFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glIndexPointerFunPtr = unsafePerformIO (getProcAddress "glIndexPointer")

{-# NOINLINE glIndexPointerFunPtr #-}

-- | Usage: @'glIndexd' c@
--
-- The parameter @c@ is a @ColorIndexValueD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glIndexdv'.


glIndexd :: MonadIO m => GLdouble -> m ()
glIndexd = ffidoubleIOV glIndexdFunPtr

glIndexdFunPtr :: FunPtr (GLdouble -> IO ())
glIndexdFunPtr = unsafePerformIO (getProcAddress "glIndexd")

{-# NOINLINE glIndexdFunPtr #-}

-- | Usage: @'glIndexdv' c@
--
-- The parameter @c@ is a @ColorIndexValueD@.
--
-- The length of @c@ should be @1@.


glIndexdv :: MonadIO m => Ptr GLdouble -> m ()
glIndexdv = ffiPtrdoubleIOV glIndexdvFunPtr

glIndexdvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glIndexdvFunPtr = unsafePerformIO (getProcAddress "glIndexdv")

{-# NOINLINE glIndexdvFunPtr #-}

-- | Usage: @'glIndexf' c@
--
-- The parameter @c@ is a @ColorIndexValueF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glIndexfv'.


glIndexf :: MonadIO m => GLfloat -> m ()
glIndexf = ffifloatIOV glIndexfFunPtr

glIndexfFunPtr :: FunPtr (GLfloat -> IO ())
glIndexfFunPtr = unsafePerformIO (getProcAddress "glIndexf")

{-# NOINLINE glIndexfFunPtr #-}

-- | Usage: @'glIndexfv' c@
--
-- The parameter @c@ is a @ColorIndexValueF@.
--
-- The length of @c@ should be @1@.


glIndexfv :: MonadIO m => Ptr GLfloat -> m ()
glIndexfv = ffiPtrfloatIOV glIndexfvFunPtr

glIndexfvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glIndexfvFunPtr = unsafePerformIO (getProcAddress "glIndexfv")

{-# NOINLINE glIndexfvFunPtr #-}

-- | Usage: @'glIndexi' c@
--
-- The parameter @c@ is a @ColorIndexValueI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glIndexiv'.


glIndexi :: MonadIO m => GLint -> m ()
glIndexi = ffiintIOV glIndexiFunPtr

glIndexiFunPtr :: FunPtr (GLint -> IO ())
glIndexiFunPtr = unsafePerformIO (getProcAddress "glIndexi")

{-# NOINLINE glIndexiFunPtr #-}

-- | Usage: @'glIndexiv' c@
--
-- The parameter @c@ is a @ColorIndexValueI@.
--
-- The length of @c@ should be @1@.


glIndexiv :: MonadIO m => Ptr GLint -> m ()
glIndexiv = ffiPtrintIOV glIndexivFunPtr

glIndexivFunPtr :: FunPtr (Ptr GLint -> IO ())
glIndexivFunPtr = unsafePerformIO (getProcAddress "glIndexiv")

{-# NOINLINE glIndexivFunPtr #-}

-- | Usage: @'glIndexs' c@
--
-- The parameter @c@ is a @ColorIndexValueS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glIndexsv'.


glIndexs :: MonadIO m => GLshort -> m ()
glIndexs = ffishortIOV glIndexsFunPtr

glIndexsFunPtr :: FunPtr (GLshort -> IO ())
glIndexsFunPtr = unsafePerformIO (getProcAddress "glIndexs")

{-# NOINLINE glIndexsFunPtr #-}

-- | Usage: @'glIndexsv' c@
--
-- The parameter @c@ is a @ColorIndexValueS@.
--
-- The length of @c@ should be @1@.


glIndexsv :: MonadIO m => Ptr GLshort -> m ()
glIndexsv = ffiPtrshortIOV glIndexsvFunPtr

glIndexsvFunPtr :: FunPtr (Ptr GLshort -> IO ())
glIndexsvFunPtr = unsafePerformIO (getProcAddress "glIndexsv")

{-# NOINLINE glIndexsvFunPtr #-}

-- | Usage: @'glIndexub' c@
--
-- The parameter @c@ is a @ColorIndexValueUB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glIndexubv'.


glIndexub :: MonadIO m => GLubyte -> m ()
glIndexub = ffiubyteIOV glIndexubFunPtr

glIndexubFunPtr :: FunPtr (GLubyte -> IO ())
glIndexubFunPtr = unsafePerformIO (getProcAddress "glIndexub")

{-# NOINLINE glIndexubFunPtr #-}

-- | Usage: @'glIndexubv' c@
--
-- The parameter @c@ is a @ColorIndexValueUB@.
--
-- The length of @c@ should be @1@.


glIndexubv :: MonadIO m => Ptr GLubyte -> m ()
glIndexubv = ffiPtrubyteIOV glIndexubvFunPtr

glIndexubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glIndexubvFunPtr = unsafePerformIO (getProcAddress "glIndexubv")

{-# NOINLINE glIndexubvFunPtr #-}

-- | Usage: @'glInitNames'@


glInitNames :: MonadIO m => m ()
glInitNames = ffiIOV glInitNamesFunPtr

glInitNamesFunPtr :: FunPtr (IO ())
glInitNamesFunPtr = unsafePerformIO (getProcAddress "glInitNames")

{-# NOINLINE glInitNamesFunPtr #-}

-- | Usage: @'glInterleavedArrays' format stride pointer@
--
-- The parameter @format@ is a @InterleavedArrayFormat@, one of: 'Graphics.GL.Internal.Shared.GL_C3F_V3F', 'Graphics.GL.Internal.Shared.GL_C4F_N3F_V3F', 'Graphics.GL.Internal.Shared.GL_C4UB_V2F', 'Graphics.GL.Internal.Shared.GL_C4UB_V3F', 'Graphics.GL.Internal.Shared.GL_N3F_V3F', 'Graphics.GL.Internal.Shared.GL_T2F_C3F_V3F', 'Graphics.GL.Internal.Shared.GL_T2F_C4F_N3F_V3F', 'Graphics.GL.Internal.Shared.GL_T2F_C4UB_V3F', 'Graphics.GL.Internal.Shared.GL_T2F_N3F_V3F', 'Graphics.GL.Internal.Shared.GL_T2F_V3F', 'Graphics.GL.Internal.Shared.GL_T4F_C4F_N3F_V4F', 'Graphics.GL.Internal.Shared.GL_T4F_V4F', 'Graphics.GL.Internal.Shared.GL_V2F', 'Graphics.GL.Internal.Shared.GL_V3F'.
--
-- The length of @pointer@ should be @COMPSIZE(format,stride)@.


glInterleavedArrays :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glInterleavedArrays = ffienumsizeiPtrVIOV glInterleavedArraysFunPtr

glInterleavedArraysFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glInterleavedArraysFunPtr = unsafePerformIO (getProcAddress "glInterleavedArrays")

{-# NOINLINE glInterleavedArraysFunPtr #-}

-- | Usage: @'glIsList' list@
--
-- The parameter @list@ is a @List@.


glIsList :: MonadIO m => GLuint -> m GLboolean
glIsList = ffiuintIOboolean glIsListFunPtr

glIsListFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsListFunPtr = unsafePerformIO (getProcAddress "glIsList")

{-# NOINLINE glIsListFunPtr #-}

-- | Usage: @'glLightModelf' pname param@
--
-- The parameter @pname@ is a @LightModelParameter@, one of: 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Ext.EXT.SeparateSpecularColor.GL_LIGHT_MODEL_COLOR_CONTROL_EXT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE'.


glLightModelf :: MonadIO m => GLenum -> GLfloat -> m ()
glLightModelf = ffienumfloatIOV glLightModelfFunPtr

glLightModelfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glLightModelfFunPtr = unsafePerformIO (getProcAddress "glLightModelf")

{-# NOINLINE glLightModelfFunPtr #-}

-- | Usage: @'glLightModelfv' pname params@
--
-- The parameter @pname@ is a @LightModelParameter@, one of: 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Ext.EXT.SeparateSpecularColor.GL_LIGHT_MODEL_COLOR_CONTROL_EXT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glLightModelfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glLightModelfv = ffienumPtrfloatIOV glLightModelfvFunPtr

glLightModelfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glLightModelfvFunPtr = unsafePerformIO (getProcAddress "glLightModelfv")

{-# NOINLINE glLightModelfvFunPtr #-}

-- | Usage: @'glLightModeli' pname param@
--
-- The parameter @pname@ is a @LightModelParameter@, one of: 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Ext.EXT.SeparateSpecularColor.GL_LIGHT_MODEL_COLOR_CONTROL_EXT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE'.


glLightModeli :: MonadIO m => GLenum -> GLint -> m ()
glLightModeli = ffienumintIOV glLightModeliFunPtr

glLightModeliFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glLightModeliFunPtr = unsafePerformIO (getProcAddress "glLightModeli")

{-# NOINLINE glLightModeliFunPtr #-}

-- | Usage: @'glLightModeliv' pname params@
--
-- The parameter @pname@ is a @LightModelParameter@, one of: 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Ext.EXT.SeparateSpecularColor.GL_LIGHT_MODEL_COLOR_CONTROL_EXT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glLightModeliv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glLightModeliv = ffienumPtrintIOV glLightModelivFunPtr

glLightModelivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glLightModelivFunPtr = unsafePerformIO (getProcAddress "glLightModeliv")

{-# NOINLINE glLightModelivFunPtr #-}

-- | Usage: @'glLightf' light pname param@
--
-- The parameter @light@ is a @LightName@, one of: 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7'.
--
-- The parameter @pname@ is a @LightParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_CONSTANT_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_LINEAR_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_POSITION', 'Graphics.GL.Internal.Shared.GL_QUADRATIC_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_SPECULAR', 'Graphics.GL.Internal.Shared.GL_SPOT_CUTOFF', 'Graphics.GL.Internal.Shared.GL_SPOT_DIRECTION', 'Graphics.GL.Internal.Shared.GL_SPOT_EXPONENT'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glLightf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glLightf = ffienumenumfloatIOV glLightfFunPtr

glLightfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glLightfFunPtr = unsafePerformIO (getProcAddress "glLightf")

{-# NOINLINE glLightfFunPtr #-}

-- | Usage: @'glLightfv' light pname params@
--
-- The parameter @light@ is a @LightName@, one of: 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7'.
--
-- The parameter @pname@ is a @LightParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_CONSTANT_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_LINEAR_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_POSITION', 'Graphics.GL.Internal.Shared.GL_QUADRATIC_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_SPECULAR', 'Graphics.GL.Internal.Shared.GL_SPOT_CUTOFF', 'Graphics.GL.Internal.Shared.GL_SPOT_DIRECTION', 'Graphics.GL.Internal.Shared.GL_SPOT_EXPONENT'.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glLightfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glLightfv = ffienumenumPtrfloatIOV glLightfvFunPtr

glLightfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glLightfvFunPtr = unsafePerformIO (getProcAddress "glLightfv")

{-# NOINLINE glLightfvFunPtr #-}

-- | Usage: @'glLighti' light pname param@
--
-- The parameter @light@ is a @LightName@, one of: 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7'.
--
-- The parameter @pname@ is a @LightParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_CONSTANT_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_LINEAR_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_POSITION', 'Graphics.GL.Internal.Shared.GL_QUADRATIC_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_SPECULAR', 'Graphics.GL.Internal.Shared.GL_SPOT_CUTOFF', 'Graphics.GL.Internal.Shared.GL_SPOT_DIRECTION', 'Graphics.GL.Internal.Shared.GL_SPOT_EXPONENT'.
--
-- The parameter @param@ is a @CheckedInt32@.


glLighti :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glLighti = ffienumenumintIOV glLightiFunPtr

glLightiFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glLightiFunPtr = unsafePerformIO (getProcAddress "glLighti")

{-# NOINLINE glLightiFunPtr #-}

-- | Usage: @'glLightiv' light pname params@
--
-- The parameter @light@ is a @LightName@, one of: 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7'.
--
-- The parameter @pname@ is a @LightParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_CONSTANT_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_LINEAR_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_POSITION', 'Graphics.GL.Internal.Shared.GL_QUADRATIC_ATTENUATION', 'Graphics.GL.Internal.Shared.GL_SPECULAR', 'Graphics.GL.Internal.Shared.GL_SPOT_CUTOFF', 'Graphics.GL.Internal.Shared.GL_SPOT_DIRECTION', 'Graphics.GL.Internal.Shared.GL_SPOT_EXPONENT'.
--
-- The parameter @params@ is a @CheckedInt32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glLightiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glLightiv = ffienumenumPtrintIOV glLightivFunPtr

glLightivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glLightivFunPtr = unsafePerformIO (getProcAddress "glLightiv")

{-# NOINLINE glLightivFunPtr #-}

-- | Usage: @'glLineStipple' factor pattern@
--
-- The parameter @factor@ is a @CheckedInt32@.
--
-- The parameter @pattern@ is a @LineStipple@.


glLineStipple :: MonadIO m => GLint -> GLushort -> m ()
glLineStipple = ffiintushortIOV glLineStippleFunPtr

glLineStippleFunPtr :: FunPtr (GLint -> GLushort -> IO ())
glLineStippleFunPtr = unsafePerformIO (getProcAddress "glLineStipple")

{-# NOINLINE glLineStippleFunPtr #-}

-- | Usage: @'glListBase' base@
--
-- The parameter @base@ is a @List@.


glListBase :: MonadIO m => GLuint -> m ()
glListBase = ffiuintIOV glListBaseFunPtr

glListBaseFunPtr :: FunPtr (GLuint -> IO ())
glListBaseFunPtr = unsafePerformIO (getProcAddress "glListBase")

{-# NOINLINE glListBaseFunPtr #-}

-- | Usage: @'glLoadIdentity'@


glLoadIdentity :: MonadIO m => m ()
glLoadIdentity = ffiIOV glLoadIdentityFunPtr

glLoadIdentityFunPtr :: FunPtr (IO ())
glLoadIdentityFunPtr = unsafePerformIO (getProcAddress "glLoadIdentity")

{-# NOINLINE glLoadIdentityFunPtr #-}

-- | Usage: @'glLoadMatrixd' m@
--
-- The length of @m@ should be @16@.


glLoadMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glLoadMatrixd = ffiPtrdoubleIOV glLoadMatrixdFunPtr

glLoadMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadMatrixdFunPtr = unsafePerformIO (getProcAddress "glLoadMatrixd")

{-# NOINLINE glLoadMatrixdFunPtr #-}

-- | Usage: @'glLoadMatrixf' m@
--
-- The length of @m@ should be @16@.


glLoadMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glLoadMatrixf = ffiPtrfloatIOV glLoadMatrixfFunPtr

glLoadMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadMatrixfFunPtr = unsafePerformIO (getProcAddress "glLoadMatrixf")

{-# NOINLINE glLoadMatrixfFunPtr #-}

-- | Usage: @'glLoadName' name@
--
-- The parameter @name@ is a @SelectName@.


glLoadName :: MonadIO m => GLuint -> m ()
glLoadName = ffiuintIOV glLoadNameFunPtr

glLoadNameFunPtr :: FunPtr (GLuint -> IO ())
glLoadNameFunPtr = unsafePerformIO (getProcAddress "glLoadName")

{-# NOINLINE glLoadNameFunPtr #-}

-- | Usage: @'glLoadTransposeMatrixd' m@
--
-- The length of @m@ should be @16@.


glLoadTransposeMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glLoadTransposeMatrixd = ffiPtrdoubleIOV glLoadTransposeMatrixdFunPtr

glLoadTransposeMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadTransposeMatrixdFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixd")

{-# NOINLINE glLoadTransposeMatrixdFunPtr #-}

-- | Usage: @'glLoadTransposeMatrixf' m@
--
-- The length of @m@ should be @16@.


glLoadTransposeMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glLoadTransposeMatrixf = ffiPtrfloatIOV glLoadTransposeMatrixfFunPtr

glLoadTransposeMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadTransposeMatrixfFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixf")

{-# NOINLINE glLoadTransposeMatrixfFunPtr #-}

-- | Usage: @'glMap1d' target u1 u2 stride order points@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @u1@ is a @CoordD@.
--
-- The parameter @u2@ is a @CoordD@.
--
-- The parameter @order@ is a @CheckedInt32@.
--
-- The parameter @points@ is a @CoordD@.
--
-- The length of @points@ should be @COMPSIZE(target,stride,order)@.


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

-- | Usage: @'glMap1f' target u1 u2 stride order points@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @u1@ is a @CoordF@.
--
-- The parameter @u2@ is a @CoordF@.
--
-- The parameter @order@ is a @CheckedInt32@.
--
-- The parameter @points@ is a @CoordF@.
--
-- The length of @points@ should be @COMPSIZE(target,stride,order)@.


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

-- | Usage: @'glMap2d' target u1 u2 ustride uorder v1 v2 vstride vorder points@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @u1@ is a @CoordD@.
--
-- The parameter @u2@ is a @CoordD@.
--
-- The parameter @uorder@ is a @CheckedInt32@.
--
-- The parameter @v1@ is a @CoordD@.
--
-- The parameter @v2@ is a @CoordD@.
--
-- The parameter @vorder@ is a @CheckedInt32@.
--
-- The parameter @points@ is a @CoordD@.
--
-- The length of @points@ should be @COMPSIZE(target,ustride,uorder,vstride,vorder)@.


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

-- | Usage: @'glMap2f' target u1 u2 ustride uorder v1 v2 vstride vorder points@
--
-- The parameter @target@ is a @MapTarget@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @u1@ is a @CoordF@.
--
-- The parameter @u2@ is a @CoordF@.
--
-- The parameter @uorder@ is a @CheckedInt32@.
--
-- The parameter @v1@ is a @CoordF@.
--
-- The parameter @v2@ is a @CoordF@.
--
-- The parameter @vorder@ is a @CheckedInt32@.
--
-- The parameter @points@ is a @CoordF@.
--
-- The length of @points@ should be @COMPSIZE(target,ustride,uorder,vstride,vorder)@.


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

-- | Usage: @'glMapGrid1d' un u1 u2@
--
-- The parameter @u1@ is a @CoordD@.
--
-- The parameter @u2@ is a @CoordD@.


glMapGrid1d :: MonadIO m => GLint -> GLdouble -> GLdouble -> m ()
glMapGrid1d = ffiintdoubledoubleIOV glMapGrid1dFunPtr

glMapGrid1dFunPtr :: FunPtr (GLint -> GLdouble -> GLdouble -> IO ())
glMapGrid1dFunPtr = unsafePerformIO (getProcAddress "glMapGrid1d")

{-# NOINLINE glMapGrid1dFunPtr #-}

-- | Usage: @'glMapGrid1f' un u1 u2@
--
-- The parameter @u1@ is a @CoordF@.
--
-- The parameter @u2@ is a @CoordF@.


glMapGrid1f :: MonadIO m => GLint -> GLfloat -> GLfloat -> m ()
glMapGrid1f = ffiintfloatfloatIOV glMapGrid1fFunPtr

glMapGrid1fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ())
glMapGrid1fFunPtr = unsafePerformIO (getProcAddress "glMapGrid1f")

{-# NOINLINE glMapGrid1fFunPtr #-}

-- | Usage: @'glMapGrid2d' un u1 u2 vn v1 v2@
--
-- The parameter @u1@ is a @CoordD@.
--
-- The parameter @u2@ is a @CoordD@.
--
-- The parameter @v1@ is a @CoordD@.
--
-- The parameter @v2@ is a @CoordD@.


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

-- | Usage: @'glMapGrid2f' un u1 u2 vn v1 v2@
--
-- The parameter @u1@ is a @CoordF@.
--
-- The parameter @u2@ is a @CoordF@.
--
-- The parameter @v1@ is a @CoordF@.
--
-- The parameter @v2@ is a @CoordF@.


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

-- | Usage: @'glMaterialf' face pname param@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @pname@ is a @MaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEXES', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SHININESS', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glMaterialf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glMaterialf = ffienumenumfloatIOV glMaterialfFunPtr

glMaterialfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glMaterialfFunPtr = unsafePerformIO (getProcAddress "glMaterialf")

{-# NOINLINE glMaterialfFunPtr #-}

-- | Usage: @'glMaterialfv' face pname params@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @pname@ is a @MaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEXES', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SHININESS', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glMaterialfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glMaterialfv = ffienumenumPtrfloatIOV glMaterialfvFunPtr

glMaterialfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glMaterialfvFunPtr = unsafePerformIO (getProcAddress "glMaterialfv")

{-# NOINLINE glMaterialfvFunPtr #-}

-- | Usage: @'glMateriali' face pname param@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @pname@ is a @MaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEXES', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SHININESS', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.
--
-- The parameter @param@ is a @CheckedInt32@.


glMateriali :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glMateriali = ffienumenumintIOV glMaterialiFunPtr

glMaterialiFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glMaterialiFunPtr = unsafePerformIO (getProcAddress "glMateriali")

{-# NOINLINE glMaterialiFunPtr #-}

-- | Usage: @'glMaterialiv' face pname params@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @pname@ is a @MaterialParameter@, one of: 'Graphics.GL.Internal.Shared.GL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_AMBIENT_AND_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEXES', 'Graphics.GL.Internal.Shared.GL_DIFFUSE', 'Graphics.GL.Internal.Shared.GL_EMISSION', 'Graphics.GL.Internal.Shared.GL_SHININESS', 'Graphics.GL.Internal.Shared.GL_SPECULAR'.
--
-- The parameter @params@ is a @CheckedInt32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glMaterialiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glMaterialiv = ffienumenumPtrintIOV glMaterialivFunPtr

glMaterialivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glMaterialivFunPtr = unsafePerformIO (getProcAddress "glMaterialiv")

{-# NOINLINE glMaterialivFunPtr #-}

-- | Usage: @'glMatrixMode' mode@
--
-- The parameter @mode@ is a @MatrixMode@, one of: 'Graphics.GL.Internal.Shared.GL_MODELVIEW', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_EXT', 'Graphics.GL.Internal.Shared.GL_PROJECTION', 'Graphics.GL.Internal.Shared.GL_TEXTURE'.


glMatrixMode :: MonadIO m => GLenum -> m ()
glMatrixMode = ffienumIOV glMatrixModeFunPtr

glMatrixModeFunPtr :: FunPtr (GLenum -> IO ())
glMatrixModeFunPtr = unsafePerformIO (getProcAddress "glMatrixMode")

{-# NOINLINE glMatrixModeFunPtr #-}

-- | Usage: @'glMultMatrixd' m@
--
-- The length of @m@ should be @16@.


glMultMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glMultMatrixd = ffiPtrdoubleIOV glMultMatrixdFunPtr

glMultMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultMatrixdFunPtr = unsafePerformIO (getProcAddress "glMultMatrixd")

{-# NOINLINE glMultMatrixdFunPtr #-}

-- | Usage: @'glMultMatrixf' m@
--
-- The length of @m@ should be @16@.


glMultMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glMultMatrixf = ffiPtrfloatIOV glMultMatrixfFunPtr

glMultMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultMatrixfFunPtr = unsafePerformIO (getProcAddress "glMultMatrixf")

{-# NOINLINE glMultMatrixfFunPtr #-}

-- | Usage: @'glMultTransposeMatrixd' m@
--
-- The length of @m@ should be @16@.


glMultTransposeMatrixd :: MonadIO m => Ptr GLdouble -> m ()
glMultTransposeMatrixd = ffiPtrdoubleIOV glMultTransposeMatrixdFunPtr

glMultTransposeMatrixdFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultTransposeMatrixdFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixd")

{-# NOINLINE glMultTransposeMatrixdFunPtr #-}

-- | Usage: @'glMultTransposeMatrixf' m@
--
-- The length of @m@ should be @16@.


glMultTransposeMatrixf :: MonadIO m => Ptr GLfloat -> m ()
glMultTransposeMatrixf = ffiPtrfloatIOV glMultTransposeMatrixfFunPtr

glMultTransposeMatrixfFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultTransposeMatrixfFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixf")

{-# NOINLINE glMultTransposeMatrixfFunPtr #-}

-- | Usage: @'glMultiTexCoord1d' target s@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord1dv'.


glMultiTexCoord1d :: MonadIO m => GLenum -> GLdouble -> m ()
glMultiTexCoord1d = ffienumdoubleIOV glMultiTexCoord1dFunPtr

glMultiTexCoord1dFunPtr :: FunPtr (GLenum -> GLdouble -> IO ())
glMultiTexCoord1dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1d")

{-# NOINLINE glMultiTexCoord1dFunPtr #-}

-- | Usage: @'glMultiTexCoord1dv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @1@.


glMultiTexCoord1dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord1dv = ffienumPtrdoubleIOV glMultiTexCoord1dvFunPtr

glMultiTexCoord1dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord1dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1dv")

{-# NOINLINE glMultiTexCoord1dvFunPtr #-}

-- | Usage: @'glMultiTexCoord1f' target s@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord1fv'.


glMultiTexCoord1f :: MonadIO m => GLenum -> GLfloat -> m ()
glMultiTexCoord1f = ffienumfloatIOV glMultiTexCoord1fFunPtr

glMultiTexCoord1fFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glMultiTexCoord1fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1f")

{-# NOINLINE glMultiTexCoord1fFunPtr #-}

-- | Usage: @'glMultiTexCoord1fv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @1@.


glMultiTexCoord1fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord1fv = ffienumPtrfloatIOV glMultiTexCoord1fvFunPtr

glMultiTexCoord1fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord1fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1fv")

{-# NOINLINE glMultiTexCoord1fvFunPtr #-}

-- | Usage: @'glMultiTexCoord1i' target s@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord1iv'.


glMultiTexCoord1i :: MonadIO m => GLenum -> GLint -> m ()
glMultiTexCoord1i = ffienumintIOV glMultiTexCoord1iFunPtr

glMultiTexCoord1iFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glMultiTexCoord1iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1i")

{-# NOINLINE glMultiTexCoord1iFunPtr #-}

-- | Usage: @'glMultiTexCoord1iv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @1@.


glMultiTexCoord1iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord1iv = ffienumPtrintIOV glMultiTexCoord1ivFunPtr

glMultiTexCoord1ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord1ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1iv")

{-# NOINLINE glMultiTexCoord1ivFunPtr #-}

-- | Usage: @'glMultiTexCoord1s' target s@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord1sv'.


glMultiTexCoord1s :: MonadIO m => GLenum -> GLshort -> m ()
glMultiTexCoord1s = ffienumshortIOV glMultiTexCoord1sFunPtr

glMultiTexCoord1sFunPtr :: FunPtr (GLenum -> GLshort -> IO ())
glMultiTexCoord1sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1s")

{-# NOINLINE glMultiTexCoord1sFunPtr #-}

-- | Usage: @'glMultiTexCoord1sv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @1@.


glMultiTexCoord1sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord1sv = ffienumPtrshortIOV glMultiTexCoord1svFunPtr

glMultiTexCoord1svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord1svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1sv")

{-# NOINLINE glMultiTexCoord1svFunPtr #-}

-- | Usage: @'glMultiTexCoord2d' target s t@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordD@.
--
-- The parameter @t@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord2dv'.


glMultiTexCoord2d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> m ()
glMultiTexCoord2d = ffienumdoubledoubleIOV glMultiTexCoord2dFunPtr

glMultiTexCoord2dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord2dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2d")

{-# NOINLINE glMultiTexCoord2dFunPtr #-}

-- | Usage: @'glMultiTexCoord2dv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @2@.


glMultiTexCoord2dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord2dv = ffienumPtrdoubleIOV glMultiTexCoord2dvFunPtr

glMultiTexCoord2dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord2dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2dv")

{-# NOINLINE glMultiTexCoord2dvFunPtr #-}

-- | Usage: @'glMultiTexCoord2f' target s t@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordF@.
--
-- The parameter @t@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord2fv'.


glMultiTexCoord2f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> m ()
glMultiTexCoord2f = ffienumfloatfloatIOV glMultiTexCoord2fFunPtr

glMultiTexCoord2fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord2fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2f")

{-# NOINLINE glMultiTexCoord2fFunPtr #-}

-- | Usage: @'glMultiTexCoord2fv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @2@.


glMultiTexCoord2fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord2fv = ffienumPtrfloatIOV glMultiTexCoord2fvFunPtr

glMultiTexCoord2fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord2fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2fv")

{-# NOINLINE glMultiTexCoord2fvFunPtr #-}

-- | Usage: @'glMultiTexCoord2i' target s t@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordI@.
--
-- The parameter @t@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord2iv'.


glMultiTexCoord2i :: MonadIO m => GLenum -> GLint -> GLint -> m ()
glMultiTexCoord2i = ffienumintintIOV glMultiTexCoord2iFunPtr

glMultiTexCoord2iFunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
glMultiTexCoord2iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2i")

{-# NOINLINE glMultiTexCoord2iFunPtr #-}

-- | Usage: @'glMultiTexCoord2iv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @2@.


glMultiTexCoord2iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord2iv = ffienumPtrintIOV glMultiTexCoord2ivFunPtr

glMultiTexCoord2ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord2ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2iv")

{-# NOINLINE glMultiTexCoord2ivFunPtr #-}

-- | Usage: @'glMultiTexCoord2s' target s t@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordS@.
--
-- The parameter @t@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord2sv'.


glMultiTexCoord2s :: MonadIO m => GLenum -> GLshort -> GLshort -> m ()
glMultiTexCoord2s = ffienumshortshortIOV glMultiTexCoord2sFunPtr

glMultiTexCoord2sFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> IO ())
glMultiTexCoord2sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2s")

{-# NOINLINE glMultiTexCoord2sFunPtr #-}

-- | Usage: @'glMultiTexCoord2sv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @2@.


glMultiTexCoord2sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord2sv = ffienumPtrshortIOV glMultiTexCoord2svFunPtr

glMultiTexCoord2svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord2svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2sv")

{-# NOINLINE glMultiTexCoord2svFunPtr #-}

-- | Usage: @'glMultiTexCoord3d' target s t r@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordD@.
--
-- The parameter @t@ is a @CoordD@.
--
-- The parameter @r@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord3dv'.


glMultiTexCoord3d :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
glMultiTexCoord3d = ffienumdoubledoubledoubleIOV glMultiTexCoord3dFunPtr

glMultiTexCoord3dFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord3dFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3d")

{-# NOINLINE glMultiTexCoord3dFunPtr #-}

-- | Usage: @'glMultiTexCoord3dv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glMultiTexCoord3dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord3dv = ffienumPtrdoubleIOV glMultiTexCoord3dvFunPtr

glMultiTexCoord3dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord3dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3dv")

{-# NOINLINE glMultiTexCoord3dvFunPtr #-}

-- | Usage: @'glMultiTexCoord3f' target s t r@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordF@.
--
-- The parameter @t@ is a @CoordF@.
--
-- The parameter @r@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord3fv'.


glMultiTexCoord3f :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
glMultiTexCoord3f = ffienumfloatfloatfloatIOV glMultiTexCoord3fFunPtr

glMultiTexCoord3fFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord3fFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3f")

{-# NOINLINE glMultiTexCoord3fFunPtr #-}

-- | Usage: @'glMultiTexCoord3fv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glMultiTexCoord3fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord3fv = ffienumPtrfloatIOV glMultiTexCoord3fvFunPtr

glMultiTexCoord3fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord3fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3fv")

{-# NOINLINE glMultiTexCoord3fvFunPtr #-}

-- | Usage: @'glMultiTexCoord3i' target s t r@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordI@.
--
-- The parameter @t@ is a @CoordI@.
--
-- The parameter @r@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord3iv'.


glMultiTexCoord3i :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> m ()
glMultiTexCoord3i = ffienumintintintIOV glMultiTexCoord3iFunPtr

glMultiTexCoord3iFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ())
glMultiTexCoord3iFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3i")

{-# NOINLINE glMultiTexCoord3iFunPtr #-}

-- | Usage: @'glMultiTexCoord3iv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @3@.


glMultiTexCoord3iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord3iv = ffienumPtrintIOV glMultiTexCoord3ivFunPtr

glMultiTexCoord3ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord3ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3iv")

{-# NOINLINE glMultiTexCoord3ivFunPtr #-}

-- | Usage: @'glMultiTexCoord3s' target s t r@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordS@.
--
-- The parameter @t@ is a @CoordS@.
--
-- The parameter @r@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord3sv'.


glMultiTexCoord3s :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> m ()
glMultiTexCoord3s = ffienumshortshortshortIOV glMultiTexCoord3sFunPtr

glMultiTexCoord3sFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ())
glMultiTexCoord3sFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3s")

{-# NOINLINE glMultiTexCoord3sFunPtr #-}

-- | Usage: @'glMultiTexCoord3sv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @3@.


glMultiTexCoord3sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord3sv = ffienumPtrshortIOV glMultiTexCoord3svFunPtr

glMultiTexCoord3svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord3svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3sv")

{-# NOINLINE glMultiTexCoord3svFunPtr #-}

-- | Usage: @'glMultiTexCoord4d' target s t r q@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordD@.
--
-- The parameter @t@ is a @CoordD@.
--
-- The parameter @r@ is a @CoordD@.
--
-- The parameter @q@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord4dv'.


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

-- | Usage: @'glMultiTexCoord4dv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @4@.


glMultiTexCoord4dv :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord4dv = ffienumPtrdoubleIOV glMultiTexCoord4dvFunPtr

glMultiTexCoord4dvFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord4dvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4dv")

{-# NOINLINE glMultiTexCoord4dvFunPtr #-}

-- | Usage: @'glMultiTexCoord4f' target s t r q@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordF@.
--
-- The parameter @t@ is a @CoordF@.
--
-- The parameter @r@ is a @CoordF@.
--
-- The parameter @q@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord4fv'.


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

-- | Usage: @'glMultiTexCoord4fv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @4@.


glMultiTexCoord4fv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord4fv = ffienumPtrfloatIOV glMultiTexCoord4fvFunPtr

glMultiTexCoord4fvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord4fvFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4fv")

{-# NOINLINE glMultiTexCoord4fvFunPtr #-}

-- | Usage: @'glMultiTexCoord4i' target s t r q@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordI@.
--
-- The parameter @t@ is a @CoordI@.
--
-- The parameter @r@ is a @CoordI@.
--
-- The parameter @q@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord4iv'.


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

-- | Usage: @'glMultiTexCoord4iv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @4@.


glMultiTexCoord4iv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord4iv = ffienumPtrintIOV glMultiTexCoord4ivFunPtr

glMultiTexCoord4ivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord4ivFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4iv")

{-# NOINLINE glMultiTexCoord4ivFunPtr #-}

-- | Usage: @'glMultiTexCoord4s' target s t r q@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @s@ is a @CoordS@.
--
-- The parameter @t@ is a @CoordS@.
--
-- The parameter @r@ is a @CoordS@.
--
-- The parameter @q@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glMultiTexCoord4sv'.


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

-- | Usage: @'glMultiTexCoord4sv' target v@
--
-- The parameter @target@ is a @TextureUnit@.
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @4@.


glMultiTexCoord4sv :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord4sv = ffienumPtrshortIOV glMultiTexCoord4svFunPtr

glMultiTexCoord4svFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord4svFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4sv")

{-# NOINLINE glMultiTexCoord4svFunPtr #-}

-- | Usage: @'glNewList' list mode@
--
-- The parameter @list@ is a @List@.
--
-- The parameter @mode@ is a @ListMode@, one of: 'Graphics.GL.Internal.Shared.GL_COMPILE', 'Graphics.GL.Internal.Shared.GL_COMPILE_AND_EXECUTE'.


glNewList :: MonadIO m => GLuint -> GLenum -> m ()
glNewList = ffiuintenumIOV glNewListFunPtr

glNewListFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glNewListFunPtr = unsafePerformIO (getProcAddress "glNewList")

{-# NOINLINE glNewListFunPtr #-}

-- | Usage: @'glNormal3b' nx ny nz@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glNormal3bv'.


glNormal3b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glNormal3b = ffibytebytebyteIOV glNormal3bFunPtr

glNormal3bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glNormal3bFunPtr = unsafePerformIO (getProcAddress "glNormal3b")

{-# NOINLINE glNormal3bFunPtr #-}

-- | Usage: @'glNormal3bv' v@
--
-- The length of @v@ should be @3@.


glNormal3bv :: MonadIO m => Ptr GLbyte -> m ()
glNormal3bv = ffiPtrbyteIOV glNormal3bvFunPtr

glNormal3bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glNormal3bvFunPtr = unsafePerformIO (getProcAddress "glNormal3bv")

{-# NOINLINE glNormal3bvFunPtr #-}

-- | Usage: @'glNormal3d' nx ny nz@
--
-- The parameter @nx@ is a @CoordD@.
--
-- The parameter @ny@ is a @CoordD@.
--
-- The parameter @nz@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glNormal3dv'.


glNormal3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glNormal3d = ffidoubledoubledoubleIOV glNormal3dFunPtr

glNormal3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glNormal3dFunPtr = unsafePerformIO (getProcAddress "glNormal3d")

{-# NOINLINE glNormal3dFunPtr #-}

-- | Usage: @'glNormal3dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glNormal3dv :: MonadIO m => Ptr GLdouble -> m ()
glNormal3dv = ffiPtrdoubleIOV glNormal3dvFunPtr

glNormal3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glNormal3dvFunPtr = unsafePerformIO (getProcAddress "glNormal3dv")

{-# NOINLINE glNormal3dvFunPtr #-}

-- | Usage: @'glNormal3f' nx ny nz@
--
-- The parameter @nx@ is a @CoordF@.
--
-- The parameter @ny@ is a @CoordF@.
--
-- The parameter @nz@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glNormal3fv'.


glNormal3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glNormal3f = ffifloatfloatfloatIOV glNormal3fFunPtr

glNormal3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glNormal3fFunPtr = unsafePerformIO (getProcAddress "glNormal3f")

{-# NOINLINE glNormal3fFunPtr #-}

-- | Usage: @'glNormal3fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glNormal3fv :: MonadIO m => Ptr GLfloat -> m ()
glNormal3fv = ffiPtrfloatIOV glNormal3fvFunPtr

glNormal3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glNormal3fvFunPtr = unsafePerformIO (getProcAddress "glNormal3fv")

{-# NOINLINE glNormal3fvFunPtr #-}

-- | Usage: @'glNormal3i' nx ny nz@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glNormal3iv'.


glNormal3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glNormal3i = ffiintintintIOV glNormal3iFunPtr

glNormal3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glNormal3iFunPtr = unsafePerformIO (getProcAddress "glNormal3i")

{-# NOINLINE glNormal3iFunPtr #-}

-- | Usage: @'glNormal3iv' v@
--
-- The length of @v@ should be @3@.


glNormal3iv :: MonadIO m => Ptr GLint -> m ()
glNormal3iv = ffiPtrintIOV glNormal3ivFunPtr

glNormal3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glNormal3ivFunPtr = unsafePerformIO (getProcAddress "glNormal3iv")

{-# NOINLINE glNormal3ivFunPtr #-}

-- | Usage: @'glNormal3s' nx ny nz@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glNormal3sv'.


glNormal3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glNormal3s = ffishortshortshortIOV glNormal3sFunPtr

glNormal3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glNormal3sFunPtr = unsafePerformIO (getProcAddress "glNormal3s")

{-# NOINLINE glNormal3sFunPtr #-}

-- | Usage: @'glNormal3sv' v@
--
-- The length of @v@ should be @3@.


glNormal3sv :: MonadIO m => Ptr GLshort -> m ()
glNormal3sv = ffiPtrshortIOV glNormal3svFunPtr

glNormal3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glNormal3svFunPtr = unsafePerformIO (getProcAddress "glNormal3sv")

{-# NOINLINE glNormal3svFunPtr #-}

-- | Usage: @'glNormalPointer' type stride pointer@
--
-- The parameter @type@ is a @NormalPointerType@, one of: 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_DOUBLE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT'.
--
-- The length of @pointer@ should be @COMPSIZE(type,stride)@.


glNormalPointer :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glNormalPointer = ffienumsizeiPtrVIOV glNormalPointerFunPtr

glNormalPointerFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glNormalPointerFunPtr = unsafePerformIO (getProcAddress "glNormalPointer")

{-# NOINLINE glNormalPointerFunPtr #-}

-- | Usage: @'glOrtho' left right bottom top zNear zFar@


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

-- | Usage: @'glPassThrough' token@
--
-- The parameter @token@ is a @FeedbackElement@.


glPassThrough :: MonadIO m => GLfloat -> m ()
glPassThrough = ffifloatIOV glPassThroughFunPtr

glPassThroughFunPtr :: FunPtr (GLfloat -> IO ())
glPassThroughFunPtr = unsafePerformIO (getProcAddress "glPassThrough")

{-# NOINLINE glPassThroughFunPtr #-}

-- | Usage: @'glPixelMapfv' map mapsize values@
--
-- The parameter @map@ is a @PixelMap@, one of: 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S'.
--
-- The parameter @mapsize@ is a @CheckedInt32@.
--
-- The length of @values@ should be @mapsize@.


glPixelMapfv :: MonadIO m => GLenum -> GLsizei -> Ptr GLfloat -> m ()
glPixelMapfv = ffienumsizeiPtrfloatIOV glPixelMapfvFunPtr

glPixelMapfvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLfloat -> IO ())
glPixelMapfvFunPtr = unsafePerformIO (getProcAddress "glPixelMapfv")

{-# NOINLINE glPixelMapfvFunPtr #-}

-- | Usage: @'glPixelMapuiv' map mapsize values@
--
-- The parameter @map@ is a @PixelMap@, one of: 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S'.
--
-- The parameter @mapsize@ is a @CheckedInt32@.
--
-- The length of @values@ should be @mapsize@.


glPixelMapuiv :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glPixelMapuiv = ffienumsizeiPtruintIOV glPixelMapuivFunPtr

glPixelMapuivFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glPixelMapuivFunPtr = unsafePerformIO (getProcAddress "glPixelMapuiv")

{-# NOINLINE glPixelMapuivFunPtr #-}

-- | Usage: @'glPixelMapusv' map mapsize values@
--
-- The parameter @map@ is a @PixelMap@, one of: 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S'.
--
-- The parameter @mapsize@ is a @CheckedInt32@.
--
-- The length of @values@ should be @mapsize@.


glPixelMapusv :: MonadIO m => GLenum -> GLsizei -> Ptr GLushort -> m ()
glPixelMapusv = ffienumsizeiPtrushortIOV glPixelMapusvFunPtr

glPixelMapusvFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLushort -> IO ())
glPixelMapusvFunPtr = unsafePerformIO (getProcAddress "glPixelMapusv")

{-# NOINLINE glPixelMapusvFunPtr #-}

-- | Usage: @'glPixelTransferf' pname param@
--
-- The parameter @pname@ is a @PixelTransferParameter@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_BIAS', 'Graphics.GL.Internal.Shared.GL_ALPHA_SCALE', 'Graphics.GL.Internal.Shared.GL_BLUE_BIAS', 'Graphics.GL.Internal.Shared.GL_BLUE_SCALE', 'Graphics.GL.Internal.Shared.GL_DEPTH_BIAS', 'Graphics.GL.Internal.Shared.GL_DEPTH_SCALE', 'Graphics.GL.Internal.Shared.GL_GREEN_BIAS', 'Graphics.GL.Internal.Shared.GL_GREEN_SCALE', 'Graphics.GL.Internal.Shared.GL_INDEX_OFFSET', 'Graphics.GL.Internal.Shared.GL_INDEX_SHIFT', 'Graphics.GL.Internal.Shared.GL_MAP_COLOR', 'Graphics.GL.Internal.Shared.GL_MAP_STENCIL', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_ALPHA_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_ALPHA_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_BLUE_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_BLUE_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_GREEN_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_GREEN_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_RED_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_RED_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_ALPHA_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_ALPHA_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_BLUE_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_BLUE_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_SCALE_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_GREEN_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_GREEN_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_SCALE_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_RED_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_RED_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_SCALE_EXT', 'Graphics.GL.Internal.Shared.GL_RED_BIAS', 'Graphics.GL.Internal.Shared.GL_RED_SCALE'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glPixelTransferf :: MonadIO m => GLenum -> GLfloat -> m ()
glPixelTransferf = ffienumfloatIOV glPixelTransferfFunPtr

glPixelTransferfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glPixelTransferfFunPtr = unsafePerformIO (getProcAddress "glPixelTransferf")

{-# NOINLINE glPixelTransferfFunPtr #-}

-- | Usage: @'glPixelTransferi' pname param@
--
-- The parameter @pname@ is a @PixelTransferParameter@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_BIAS', 'Graphics.GL.Internal.Shared.GL_ALPHA_SCALE', 'Graphics.GL.Internal.Shared.GL_BLUE_BIAS', 'Graphics.GL.Internal.Shared.GL_BLUE_SCALE', 'Graphics.GL.Internal.Shared.GL_DEPTH_BIAS', 'Graphics.GL.Internal.Shared.GL_DEPTH_SCALE', 'Graphics.GL.Internal.Shared.GL_GREEN_BIAS', 'Graphics.GL.Internal.Shared.GL_GREEN_SCALE', 'Graphics.GL.Internal.Shared.GL_INDEX_OFFSET', 'Graphics.GL.Internal.Shared.GL_INDEX_SHIFT', 'Graphics.GL.Internal.Shared.GL_MAP_COLOR', 'Graphics.GL.Internal.Shared.GL_MAP_STENCIL', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_ALPHA_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_ALPHA_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_BLUE_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_BLUE_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_GREEN_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_GREEN_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_RED_BIAS', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_BIAS_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_COLOR_MATRIX_RED_SCALE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_SCALE_SGI', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_ALPHA_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_ALPHA_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_BLUE_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_BLUE_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_SCALE_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_GREEN_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_GREEN_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_SCALE_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_RED_BIAS', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_BIAS_EXT', 'Graphics.GL.Ext.ARB.Imaging.GL_POST_CONVOLUTION_RED_SCALE', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_SCALE_EXT', 'Graphics.GL.Internal.Shared.GL_RED_BIAS', 'Graphics.GL.Internal.Shared.GL_RED_SCALE'.
--
-- The parameter @param@ is a @CheckedInt32@.


glPixelTransferi :: MonadIO m => GLenum -> GLint -> m ()
glPixelTransferi = ffienumintIOV glPixelTransferiFunPtr

glPixelTransferiFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPixelTransferiFunPtr = unsafePerformIO (getProcAddress "glPixelTransferi")

{-# NOINLINE glPixelTransferiFunPtr #-}

-- | Usage: @'glPixelZoom' xfactor yfactor@


glPixelZoom :: MonadIO m => GLfloat -> GLfloat -> m ()
glPixelZoom = ffifloatfloatIOV glPixelZoomFunPtr

glPixelZoomFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glPixelZoomFunPtr = unsafePerformIO (getProcAddress "glPixelZoom")

{-# NOINLINE glPixelZoomFunPtr #-}

-- | Usage: @'glPolygonStipple' mask@
--
-- The length of @mask@ should be @COMPSIZE()@.


glPolygonStipple :: MonadIO m => Ptr GLubyte -> m ()
glPolygonStipple = ffiPtrubyteIOV glPolygonStippleFunPtr

glPolygonStippleFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glPolygonStippleFunPtr = unsafePerformIO (getProcAddress "glPolygonStipple")

{-# NOINLINE glPolygonStippleFunPtr #-}

-- | Usage: @'glPopAttrib'@


glPopAttrib :: MonadIO m => m ()
glPopAttrib = ffiIOV glPopAttribFunPtr

glPopAttribFunPtr :: FunPtr (IO ())
glPopAttribFunPtr = unsafePerformIO (getProcAddress "glPopAttrib")

{-# NOINLINE glPopAttribFunPtr #-}

-- | Usage: @'glPopClientAttrib'@


glPopClientAttrib :: MonadIO m => m ()
glPopClientAttrib = ffiIOV glPopClientAttribFunPtr

glPopClientAttribFunPtr :: FunPtr (IO ())
glPopClientAttribFunPtr = unsafePerformIO (getProcAddress "glPopClientAttrib")

{-# NOINLINE glPopClientAttribFunPtr #-}

-- | Usage: @'glPopMatrix'@


glPopMatrix :: MonadIO m => m ()
glPopMatrix = ffiIOV glPopMatrixFunPtr

glPopMatrixFunPtr :: FunPtr (IO ())
glPopMatrixFunPtr = unsafePerformIO (getProcAddress "glPopMatrix")

{-# NOINLINE glPopMatrixFunPtr #-}

-- | Usage: @'glPopName'@


glPopName :: MonadIO m => m ()
glPopName = ffiIOV glPopNameFunPtr

glPopNameFunPtr :: FunPtr (IO ())
glPopNameFunPtr = unsafePerformIO (getProcAddress "glPopName")

{-# NOINLINE glPopNameFunPtr #-}

-- | Usage: @'glPrioritizeTextures' n textures priorities@
--
-- The parameter @textures@ is a @Texture@.
--
-- The length of @textures@ should be @n@.
--
-- The length of @priorities@ should be @n@.


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

-- | Usage: @'glPushAttrib' mask@
--
-- The parameter @mask@ is a @AttribMask@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM_BUFFER_BIT', 'Graphics.GL.Internal.Shared.GL_ALL_ATTRIB_BITS', 'Graphics.GL.Internal.Shared.GL_COLOR_BUFFER_BIT', 'Graphics.GL.Internal.Shared.GL_CURRENT_BIT', 'Graphics.GL.Internal.Shared.GL_DEPTH_BUFFER_BIT', 'Graphics.GL.Internal.Shared.GL_ENABLE_BIT', 'Graphics.GL.Internal.Shared.GL_EVAL_BIT', 'Graphics.GL.Internal.Shared.GL_FOG_BIT', 'Graphics.GL.Internal.Shared.GL_HINT_BIT', 'Graphics.GL.Internal.Shared.GL_LIGHTING_BIT', 'Graphics.GL.Internal.Shared.GL_LINE_BIT', 'Graphics.GL.Internal.Shared.GL_LIST_BIT', 'Graphics.GL.Internal.Shared.GL_MULTISAMPLE_BIT', 'Graphics.GL.Ext.ThreeDFX.Multisample.GL_MULTISAMPLE_BIT_3DFX', 'Graphics.GL.Ext.ARB.Multisample.GL_MULTISAMPLE_BIT_ARB', 'Graphics.GL.Ext.EXT.Multisample.GL_MULTISAMPLE_BIT_EXT', 'Graphics.GL.Internal.Shared.GL_PIXEL_MODE_BIT', 'Graphics.GL.Internal.Shared.GL_POINT_BIT', 'Graphics.GL.Internal.Shared.GL_POLYGON_BIT', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE_BIT', 'Graphics.GL.Internal.Shared.GL_SCISSOR_BIT', 'Graphics.GL.Internal.Shared.GL_STENCIL_BUFFER_BIT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BIT', 'Graphics.GL.Internal.Shared.GL_TRANSFORM_BIT', 'Graphics.GL.Internal.Shared.GL_VIEWPORT_BIT'.


glPushAttrib :: MonadIO m => GLbitfield -> m ()
glPushAttrib = ffibitfieldIOV glPushAttribFunPtr

glPushAttribFunPtr :: FunPtr (GLbitfield -> IO ())
glPushAttribFunPtr = unsafePerformIO (getProcAddress "glPushAttrib")

{-# NOINLINE glPushAttribFunPtr #-}

-- | Usage: @'glPushClientAttrib' mask@
--
-- The parameter @mask@ is a @ClientAttribMask@, one of: 'Graphics.GL.Internal.Shared.GL_CLIENT_ALL_ATTRIB_BITS', 'Graphics.GL.Internal.Shared.GL_CLIENT_PIXEL_STORE_BIT', 'Graphics.GL.Internal.Shared.GL_CLIENT_VERTEX_ARRAY_BIT'.


glPushClientAttrib :: MonadIO m => GLbitfield -> m ()
glPushClientAttrib = ffibitfieldIOV glPushClientAttribFunPtr

glPushClientAttribFunPtr :: FunPtr (GLbitfield -> IO ())
glPushClientAttribFunPtr = unsafePerformIO (getProcAddress "glPushClientAttrib")

{-# NOINLINE glPushClientAttribFunPtr #-}

-- | Usage: @'glPushMatrix'@


glPushMatrix :: MonadIO m => m ()
glPushMatrix = ffiIOV glPushMatrixFunPtr

glPushMatrixFunPtr :: FunPtr (IO ())
glPushMatrixFunPtr = unsafePerformIO (getProcAddress "glPushMatrix")

{-# NOINLINE glPushMatrixFunPtr #-}

-- | Usage: @'glPushName' name@
--
-- The parameter @name@ is a @SelectName@.


glPushName :: MonadIO m => GLuint -> m ()
glPushName = ffiuintIOV glPushNameFunPtr

glPushNameFunPtr :: FunPtr (GLuint -> IO ())
glPushNameFunPtr = unsafePerformIO (getProcAddress "glPushName")

{-# NOINLINE glPushNameFunPtr #-}

-- | Usage: @'glRasterPos2d' x y@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos2dv'.


glRasterPos2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glRasterPos2d = ffidoubledoubleIOV glRasterPos2dFunPtr

glRasterPos2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glRasterPos2dFunPtr = unsafePerformIO (getProcAddress "glRasterPos2d")

{-# NOINLINE glRasterPos2dFunPtr #-}

-- | Usage: @'glRasterPos2dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @2@.


glRasterPos2dv :: MonadIO m => Ptr GLdouble -> m ()
glRasterPos2dv = ffiPtrdoubleIOV glRasterPos2dvFunPtr

glRasterPos2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glRasterPos2dvFunPtr = unsafePerformIO (getProcAddress "glRasterPos2dv")

{-# NOINLINE glRasterPos2dvFunPtr #-}

-- | Usage: @'glRasterPos2f' x y@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos2fv'.


glRasterPos2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glRasterPos2f = ffifloatfloatIOV glRasterPos2fFunPtr

glRasterPos2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glRasterPos2fFunPtr = unsafePerformIO (getProcAddress "glRasterPos2f")

{-# NOINLINE glRasterPos2fFunPtr #-}

-- | Usage: @'glRasterPos2fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @2@.


glRasterPos2fv :: MonadIO m => Ptr GLfloat -> m ()
glRasterPos2fv = ffiPtrfloatIOV glRasterPos2fvFunPtr

glRasterPos2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glRasterPos2fvFunPtr = unsafePerformIO (getProcAddress "glRasterPos2fv")

{-# NOINLINE glRasterPos2fvFunPtr #-}

-- | Usage: @'glRasterPos2i' x y@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos2iv'.


glRasterPos2i :: MonadIO m => GLint -> GLint -> m ()
glRasterPos2i = ffiintintIOV glRasterPos2iFunPtr

glRasterPos2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glRasterPos2iFunPtr = unsafePerformIO (getProcAddress "glRasterPos2i")

{-# NOINLINE glRasterPos2iFunPtr #-}

-- | Usage: @'glRasterPos2iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @2@.


glRasterPos2iv :: MonadIO m => Ptr GLint -> m ()
glRasterPos2iv = ffiPtrintIOV glRasterPos2ivFunPtr

glRasterPos2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glRasterPos2ivFunPtr = unsafePerformIO (getProcAddress "glRasterPos2iv")

{-# NOINLINE glRasterPos2ivFunPtr #-}

-- | Usage: @'glRasterPos2s' x y@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos2sv'.


glRasterPos2s :: MonadIO m => GLshort -> GLshort -> m ()
glRasterPos2s = ffishortshortIOV glRasterPos2sFunPtr

glRasterPos2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glRasterPos2sFunPtr = unsafePerformIO (getProcAddress "glRasterPos2s")

{-# NOINLINE glRasterPos2sFunPtr #-}

-- | Usage: @'glRasterPos2sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @2@.


glRasterPos2sv :: MonadIO m => Ptr GLshort -> m ()
glRasterPos2sv = ffiPtrshortIOV glRasterPos2svFunPtr

glRasterPos2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glRasterPos2svFunPtr = unsafePerformIO (getProcAddress "glRasterPos2sv")

{-# NOINLINE glRasterPos2svFunPtr #-}

-- | Usage: @'glRasterPos3d' x y z@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The parameter @z@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos3dv'.


glRasterPos3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glRasterPos3d = ffidoubledoubledoubleIOV glRasterPos3dFunPtr

glRasterPos3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glRasterPos3dFunPtr = unsafePerformIO (getProcAddress "glRasterPos3d")

{-# NOINLINE glRasterPos3dFunPtr #-}

-- | Usage: @'glRasterPos3dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glRasterPos3dv :: MonadIO m => Ptr GLdouble -> m ()
glRasterPos3dv = ffiPtrdoubleIOV glRasterPos3dvFunPtr

glRasterPos3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glRasterPos3dvFunPtr = unsafePerformIO (getProcAddress "glRasterPos3dv")

{-# NOINLINE glRasterPos3dvFunPtr #-}

-- | Usage: @'glRasterPos3f' x y z@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The parameter @z@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos3fv'.


glRasterPos3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glRasterPos3f = ffifloatfloatfloatIOV glRasterPos3fFunPtr

glRasterPos3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glRasterPos3fFunPtr = unsafePerformIO (getProcAddress "glRasterPos3f")

{-# NOINLINE glRasterPos3fFunPtr #-}

-- | Usage: @'glRasterPos3fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glRasterPos3fv :: MonadIO m => Ptr GLfloat -> m ()
glRasterPos3fv = ffiPtrfloatIOV glRasterPos3fvFunPtr

glRasterPos3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glRasterPos3fvFunPtr = unsafePerformIO (getProcAddress "glRasterPos3fv")

{-# NOINLINE glRasterPos3fvFunPtr #-}

-- | Usage: @'glRasterPos3i' x y z@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The parameter @z@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos3iv'.


glRasterPos3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glRasterPos3i = ffiintintintIOV glRasterPos3iFunPtr

glRasterPos3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glRasterPos3iFunPtr = unsafePerformIO (getProcAddress "glRasterPos3i")

{-# NOINLINE glRasterPos3iFunPtr #-}

-- | Usage: @'glRasterPos3iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @3@.


glRasterPos3iv :: MonadIO m => Ptr GLint -> m ()
glRasterPos3iv = ffiPtrintIOV glRasterPos3ivFunPtr

glRasterPos3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glRasterPos3ivFunPtr = unsafePerformIO (getProcAddress "glRasterPos3iv")

{-# NOINLINE glRasterPos3ivFunPtr #-}

-- | Usage: @'glRasterPos3s' x y z@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The parameter @z@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos3sv'.


glRasterPos3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glRasterPos3s = ffishortshortshortIOV glRasterPos3sFunPtr

glRasterPos3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glRasterPos3sFunPtr = unsafePerformIO (getProcAddress "glRasterPos3s")

{-# NOINLINE glRasterPos3sFunPtr #-}

-- | Usage: @'glRasterPos3sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @3@.


glRasterPos3sv :: MonadIO m => Ptr GLshort -> m ()
glRasterPos3sv = ffiPtrshortIOV glRasterPos3svFunPtr

glRasterPos3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glRasterPos3svFunPtr = unsafePerformIO (getProcAddress "glRasterPos3sv")

{-# NOINLINE glRasterPos3svFunPtr #-}

-- | Usage: @'glRasterPos4d' x y z w@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The parameter @z@ is a @CoordD@.
--
-- The parameter @w@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos4dv'.


glRasterPos4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glRasterPos4d = ffidoubledoubledoubledoubleIOV glRasterPos4dFunPtr

glRasterPos4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glRasterPos4dFunPtr = unsafePerformIO (getProcAddress "glRasterPos4d")

{-# NOINLINE glRasterPos4dFunPtr #-}

-- | Usage: @'glRasterPos4dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @4@.


glRasterPos4dv :: MonadIO m => Ptr GLdouble -> m ()
glRasterPos4dv = ffiPtrdoubleIOV glRasterPos4dvFunPtr

glRasterPos4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glRasterPos4dvFunPtr = unsafePerformIO (getProcAddress "glRasterPos4dv")

{-# NOINLINE glRasterPos4dvFunPtr #-}

-- | Usage: @'glRasterPos4f' x y z w@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The parameter @z@ is a @CoordF@.
--
-- The parameter @w@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos4fv'.


glRasterPos4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glRasterPos4f = ffifloatfloatfloatfloatIOV glRasterPos4fFunPtr

glRasterPos4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glRasterPos4fFunPtr = unsafePerformIO (getProcAddress "glRasterPos4f")

{-# NOINLINE glRasterPos4fFunPtr #-}

-- | Usage: @'glRasterPos4fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @4@.


glRasterPos4fv :: MonadIO m => Ptr GLfloat -> m ()
glRasterPos4fv = ffiPtrfloatIOV glRasterPos4fvFunPtr

glRasterPos4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glRasterPos4fvFunPtr = unsafePerformIO (getProcAddress "glRasterPos4fv")

{-# NOINLINE glRasterPos4fvFunPtr #-}

-- | Usage: @'glRasterPos4i' x y z w@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The parameter @z@ is a @CoordI@.
--
-- The parameter @w@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos4iv'.


glRasterPos4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glRasterPos4i = ffiintintintintIOV glRasterPos4iFunPtr

glRasterPos4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glRasterPos4iFunPtr = unsafePerformIO (getProcAddress "glRasterPos4i")

{-# NOINLINE glRasterPos4iFunPtr #-}

-- | Usage: @'glRasterPos4iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @4@.


glRasterPos4iv :: MonadIO m => Ptr GLint -> m ()
glRasterPos4iv = ffiPtrintIOV glRasterPos4ivFunPtr

glRasterPos4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glRasterPos4ivFunPtr = unsafePerformIO (getProcAddress "glRasterPos4iv")

{-# NOINLINE glRasterPos4ivFunPtr #-}

-- | Usage: @'glRasterPos4s' x y z w@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The parameter @z@ is a @CoordS@.
--
-- The parameter @w@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRasterPos4sv'.


glRasterPos4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glRasterPos4s = ffishortshortshortshortIOV glRasterPos4sFunPtr

glRasterPos4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glRasterPos4sFunPtr = unsafePerformIO (getProcAddress "glRasterPos4s")

{-# NOINLINE glRasterPos4sFunPtr #-}

-- | Usage: @'glRasterPos4sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @4@.


glRasterPos4sv :: MonadIO m => Ptr GLshort -> m ()
glRasterPos4sv = ffiPtrshortIOV glRasterPos4svFunPtr

glRasterPos4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glRasterPos4svFunPtr = unsafePerformIO (getProcAddress "glRasterPos4sv")

{-# NOINLINE glRasterPos4svFunPtr #-}

-- | Usage: @'glRectd' x1 y1 x2 y2@
--
-- The parameter @x1@ is a @CoordD@.
--
-- The parameter @y1@ is a @CoordD@.
--
-- The parameter @x2@ is a @CoordD@.
--
-- The parameter @y2@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRectdv'.


glRectd :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glRectd = ffidoubledoubledoubledoubleIOV glRectdFunPtr

glRectdFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glRectdFunPtr = unsafePerformIO (getProcAddress "glRectd")

{-# NOINLINE glRectdFunPtr #-}

-- | Usage: @'glRectdv' v1 v2@
--
-- The parameter @v1@ is a @CoordD@.
--
-- The parameter @v2@ is a @CoordD@.
--
-- The length of @v1@ should be @2@.
--
-- The length of @v2@ should be @2@.


glRectdv :: MonadIO m => Ptr GLdouble -> Ptr GLdouble -> m ()
glRectdv = ffiPtrdoublePtrdoubleIOV glRectdvFunPtr

glRectdvFunPtr :: FunPtr (Ptr GLdouble -> Ptr GLdouble -> IO ())
glRectdvFunPtr = unsafePerformIO (getProcAddress "glRectdv")

{-# NOINLINE glRectdvFunPtr #-}

-- | Usage: @'glRectf' x1 y1 x2 y2@
--
-- The parameter @x1@ is a @CoordF@.
--
-- The parameter @y1@ is a @CoordF@.
--
-- The parameter @x2@ is a @CoordF@.
--
-- The parameter @y2@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRectfv'.


glRectf :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glRectf = ffifloatfloatfloatfloatIOV glRectfFunPtr

glRectfFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glRectfFunPtr = unsafePerformIO (getProcAddress "glRectf")

{-# NOINLINE glRectfFunPtr #-}

-- | Usage: @'glRectfv' v1 v2@
--
-- The parameter @v1@ is a @CoordF@.
--
-- The parameter @v2@ is a @CoordF@.
--
-- The length of @v1@ should be @2@.
--
-- The length of @v2@ should be @2@.


glRectfv :: MonadIO m => Ptr GLfloat -> Ptr GLfloat -> m ()
glRectfv = ffiPtrfloatPtrfloatIOV glRectfvFunPtr

glRectfvFunPtr :: FunPtr (Ptr GLfloat -> Ptr GLfloat -> IO ())
glRectfvFunPtr = unsafePerformIO (getProcAddress "glRectfv")

{-# NOINLINE glRectfvFunPtr #-}

-- | Usage: @'glRecti' x1 y1 x2 y2@
--
-- The parameter @x1@ is a @CoordI@.
--
-- The parameter @y1@ is a @CoordI@.
--
-- The parameter @x2@ is a @CoordI@.
--
-- The parameter @y2@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRectiv'.


glRecti :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glRecti = ffiintintintintIOV glRectiFunPtr

glRectiFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glRectiFunPtr = unsafePerformIO (getProcAddress "glRecti")

{-# NOINLINE glRectiFunPtr #-}

-- | Usage: @'glRectiv' v1 v2@
--
-- The parameter @v1@ is a @CoordI@.
--
-- The parameter @v2@ is a @CoordI@.
--
-- The length of @v1@ should be @2@.
--
-- The length of @v2@ should be @2@.


glRectiv :: MonadIO m => Ptr GLint -> Ptr GLint -> m ()
glRectiv = ffiPtrintPtrintIOV glRectivFunPtr

glRectivFunPtr :: FunPtr (Ptr GLint -> Ptr GLint -> IO ())
glRectivFunPtr = unsafePerformIO (getProcAddress "glRectiv")

{-# NOINLINE glRectivFunPtr #-}

-- | Usage: @'glRects' x1 y1 x2 y2@
--
-- The parameter @x1@ is a @CoordS@.
--
-- The parameter @y1@ is a @CoordS@.
--
-- The parameter @x2@ is a @CoordS@.
--
-- The parameter @y2@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glRectsv'.


glRects :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glRects = ffishortshortshortshortIOV glRectsFunPtr

glRectsFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glRectsFunPtr = unsafePerformIO (getProcAddress "glRects")

{-# NOINLINE glRectsFunPtr #-}

-- | Usage: @'glRectsv' v1 v2@
--
-- The parameter @v1@ is a @CoordS@.
--
-- The parameter @v2@ is a @CoordS@.
--
-- The length of @v1@ should be @2@.
--
-- The length of @v2@ should be @2@.


glRectsv :: MonadIO m => Ptr GLshort -> Ptr GLshort -> m ()
glRectsv = ffiPtrshortPtrshortIOV glRectsvFunPtr

glRectsvFunPtr :: FunPtr (Ptr GLshort -> Ptr GLshort -> IO ())
glRectsvFunPtr = unsafePerformIO (getProcAddress "glRectsv")

{-# NOINLINE glRectsvFunPtr #-}

-- | Usage: @'glRenderMode' mode@
--
-- The parameter @mode@ is a @RenderingMode@, one of: 'Graphics.GL.Internal.Shared.GL_FEEDBACK', 'Graphics.GL.Internal.Shared.GL_RENDER', 'Graphics.GL.Internal.Shared.GL_SELECT'.


glRenderMode :: MonadIO m => GLenum -> m GLint
glRenderMode = ffienumIOint glRenderModeFunPtr

glRenderModeFunPtr :: FunPtr (GLenum -> IO GLint)
glRenderModeFunPtr = unsafePerformIO (getProcAddress "glRenderMode")

{-# NOINLINE glRenderModeFunPtr #-}

-- | Usage: @'glRotated' angle x y z@


glRotated :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glRotated = ffidoubledoubledoubledoubleIOV glRotatedFunPtr

glRotatedFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glRotatedFunPtr = unsafePerformIO (getProcAddress "glRotated")

{-# NOINLINE glRotatedFunPtr #-}

-- | Usage: @'glRotatef' angle x y z@


glRotatef :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glRotatef = ffifloatfloatfloatfloatIOV glRotatefFunPtr

glRotatefFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glRotatefFunPtr = unsafePerformIO (getProcAddress "glRotatef")

{-# NOINLINE glRotatefFunPtr #-}

-- | Usage: @'glScaled' x y z@


glScaled :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glScaled = ffidoubledoubledoubleIOV glScaledFunPtr

glScaledFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glScaledFunPtr = unsafePerformIO (getProcAddress "glScaled")

{-# NOINLINE glScaledFunPtr #-}

-- | Usage: @'glScalef' x y z@


glScalef :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glScalef = ffifloatfloatfloatIOV glScalefFunPtr

glScalefFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glScalefFunPtr = unsafePerformIO (getProcAddress "glScalef")

{-# NOINLINE glScalefFunPtr #-}

-- | Usage: @'glSecondaryColor3b' red green blue@
--
-- The parameter @red@ is a @ColorB@.
--
-- The parameter @green@ is a @ColorB@.
--
-- The parameter @blue@ is a @ColorB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3bv'.


glSecondaryColor3b :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glSecondaryColor3b = ffibytebytebyteIOV glSecondaryColor3bFunPtr

glSecondaryColor3bFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glSecondaryColor3bFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3b")

{-# NOINLINE glSecondaryColor3bFunPtr #-}

-- | Usage: @'glSecondaryColor3bv' v@
--
-- The parameter @v@ is a @ColorB@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3bv :: MonadIO m => Ptr GLbyte -> m ()
glSecondaryColor3bv = ffiPtrbyteIOV glSecondaryColor3bvFunPtr

glSecondaryColor3bvFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glSecondaryColor3bvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3bv")

{-# NOINLINE glSecondaryColor3bvFunPtr #-}

-- | Usage: @'glSecondaryColor3d' red green blue@
--
-- The parameter @red@ is a @ColorD@.
--
-- The parameter @green@ is a @ColorD@.
--
-- The parameter @blue@ is a @ColorD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3dv'.


glSecondaryColor3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glSecondaryColor3d = ffidoubledoubledoubleIOV glSecondaryColor3dFunPtr

glSecondaryColor3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glSecondaryColor3dFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3d")

{-# NOINLINE glSecondaryColor3dFunPtr #-}

-- | Usage: @'glSecondaryColor3dv' v@
--
-- The parameter @v@ is a @ColorD@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3dv :: MonadIO m => Ptr GLdouble -> m ()
glSecondaryColor3dv = ffiPtrdoubleIOV glSecondaryColor3dvFunPtr

glSecondaryColor3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glSecondaryColor3dvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3dv")

{-# NOINLINE glSecondaryColor3dvFunPtr #-}

-- | Usage: @'glSecondaryColor3f' red green blue@
--
-- The parameter @red@ is a @ColorF@.
--
-- The parameter @green@ is a @ColorF@.
--
-- The parameter @blue@ is a @ColorF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3fv'.


glSecondaryColor3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glSecondaryColor3f = ffifloatfloatfloatIOV glSecondaryColor3fFunPtr

glSecondaryColor3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glSecondaryColor3fFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3f")

{-# NOINLINE glSecondaryColor3fFunPtr #-}

-- | Usage: @'glSecondaryColor3fv' v@
--
-- The parameter @v@ is a @ColorF@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3fv :: MonadIO m => Ptr GLfloat -> m ()
glSecondaryColor3fv = ffiPtrfloatIOV glSecondaryColor3fvFunPtr

glSecondaryColor3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glSecondaryColor3fvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3fv")

{-# NOINLINE glSecondaryColor3fvFunPtr #-}

-- | Usage: @'glSecondaryColor3i' red green blue@
--
-- The parameter @red@ is a @ColorI@.
--
-- The parameter @green@ is a @ColorI@.
--
-- The parameter @blue@ is a @ColorI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3iv'.


glSecondaryColor3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glSecondaryColor3i = ffiintintintIOV glSecondaryColor3iFunPtr

glSecondaryColor3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glSecondaryColor3iFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3i")

{-# NOINLINE glSecondaryColor3iFunPtr #-}

-- | Usage: @'glSecondaryColor3iv' v@
--
-- The parameter @v@ is a @ColorI@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3iv :: MonadIO m => Ptr GLint -> m ()
glSecondaryColor3iv = ffiPtrintIOV glSecondaryColor3ivFunPtr

glSecondaryColor3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glSecondaryColor3ivFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3iv")

{-# NOINLINE glSecondaryColor3ivFunPtr #-}

-- | Usage: @'glSecondaryColor3s' red green blue@
--
-- The parameter @red@ is a @ColorS@.
--
-- The parameter @green@ is a @ColorS@.
--
-- The parameter @blue@ is a @ColorS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3sv'.


glSecondaryColor3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glSecondaryColor3s = ffishortshortshortIOV glSecondaryColor3sFunPtr

glSecondaryColor3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glSecondaryColor3sFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3s")

{-# NOINLINE glSecondaryColor3sFunPtr #-}

-- | Usage: @'glSecondaryColor3sv' v@
--
-- The parameter @v@ is a @ColorS@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3sv :: MonadIO m => Ptr GLshort -> m ()
glSecondaryColor3sv = ffiPtrshortIOV glSecondaryColor3svFunPtr

glSecondaryColor3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glSecondaryColor3svFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3sv")

{-# NOINLINE glSecondaryColor3svFunPtr #-}

-- | Usage: @'glSecondaryColor3ub' red green blue@
--
-- The parameter @red@ is a @ColorUB@.
--
-- The parameter @green@ is a @ColorUB@.
--
-- The parameter @blue@ is a @ColorUB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3ubv'.


glSecondaryColor3ub :: MonadIO m => GLubyte -> GLubyte -> GLubyte -> m ()
glSecondaryColor3ub = ffiubyteubyteubyteIOV glSecondaryColor3ubFunPtr

glSecondaryColor3ubFunPtr :: FunPtr (GLubyte -> GLubyte -> GLubyte -> IO ())
glSecondaryColor3ubFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ub")

{-# NOINLINE glSecondaryColor3ubFunPtr #-}

-- | Usage: @'glSecondaryColor3ubv' v@
--
-- The parameter @v@ is a @ColorUB@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3ubv :: MonadIO m => Ptr GLubyte -> m ()
glSecondaryColor3ubv = ffiPtrubyteIOV glSecondaryColor3ubvFunPtr

glSecondaryColor3ubvFunPtr :: FunPtr (Ptr GLubyte -> IO ())
glSecondaryColor3ubvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ubv")

{-# NOINLINE glSecondaryColor3ubvFunPtr #-}

-- | Usage: @'glSecondaryColor3ui' red green blue@
--
-- The parameter @red@ is a @ColorUI@.
--
-- The parameter @green@ is a @ColorUI@.
--
-- The parameter @blue@ is a @ColorUI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3uiv'.


glSecondaryColor3ui :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glSecondaryColor3ui = ffiuintuintuintIOV glSecondaryColor3uiFunPtr

glSecondaryColor3uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glSecondaryColor3uiFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3ui")

{-# NOINLINE glSecondaryColor3uiFunPtr #-}

-- | Usage: @'glSecondaryColor3uiv' v@
--
-- The parameter @v@ is a @ColorUI@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3uiv :: MonadIO m => Ptr GLuint -> m ()
glSecondaryColor3uiv = ffiPtruintIOV glSecondaryColor3uivFunPtr

glSecondaryColor3uivFunPtr :: FunPtr (Ptr GLuint -> IO ())
glSecondaryColor3uivFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3uiv")

{-# NOINLINE glSecondaryColor3uivFunPtr #-}

-- | Usage: @'glSecondaryColor3us' red green blue@
--
-- The parameter @red@ is a @ColorUS@.
--
-- The parameter @green@ is a @ColorUS@.
--
-- The parameter @blue@ is a @ColorUS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glSecondaryColor3usv'.


glSecondaryColor3us :: MonadIO m => GLushort -> GLushort -> GLushort -> m ()
glSecondaryColor3us = ffiushortushortushortIOV glSecondaryColor3usFunPtr

glSecondaryColor3usFunPtr :: FunPtr (GLushort -> GLushort -> GLushort -> IO ())
glSecondaryColor3usFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3us")

{-# NOINLINE glSecondaryColor3usFunPtr #-}

-- | Usage: @'glSecondaryColor3usv' v@
--
-- The parameter @v@ is a @ColorUS@.
--
-- The length of @v@ should be @3@.


glSecondaryColor3usv :: MonadIO m => Ptr GLushort -> m ()
glSecondaryColor3usv = ffiPtrushortIOV glSecondaryColor3usvFunPtr

glSecondaryColor3usvFunPtr :: FunPtr (Ptr GLushort -> IO ())
glSecondaryColor3usvFunPtr = unsafePerformIO (getProcAddress "glSecondaryColor3usv")

{-# NOINLINE glSecondaryColor3usvFunPtr #-}

-- | Usage: @'glSecondaryColorPointer' size type stride pointer@
--
-- The parameter @type@ is a @ColorPointerType@, one of: 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_DOUBLE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT'.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


glSecondaryColorPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glSecondaryColorPointer = ffiintenumsizeiPtrVIOV glSecondaryColorPointerFunPtr

glSecondaryColorPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glSecondaryColorPointerFunPtr = unsafePerformIO (getProcAddress "glSecondaryColorPointer")

{-# NOINLINE glSecondaryColorPointerFunPtr #-}

-- | Usage: @'glSelectBuffer' size buffer@
--
-- The parameter @buffer@ is a @SelectName@.
--
-- The length of @buffer@ should be @size@.


glSelectBuffer :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glSelectBuffer = ffisizeiPtruintIOV glSelectBufferFunPtr

glSelectBufferFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glSelectBufferFunPtr = unsafePerformIO (getProcAddress "glSelectBuffer")

{-# NOINLINE glSelectBufferFunPtr #-}

-- | Usage: @'glShadeModel' mode@
--
-- The parameter @mode@ is a @ShadingModel@, one of: 'Graphics.GL.Internal.Shared.GL_FLAT', 'Graphics.GL.Internal.Shared.GL_SMOOTH'.


glShadeModel :: MonadIO m => GLenum -> m ()
glShadeModel = ffienumIOV glShadeModelFunPtr

glShadeModelFunPtr :: FunPtr (GLenum -> IO ())
glShadeModelFunPtr = unsafePerformIO (getProcAddress "glShadeModel")

{-# NOINLINE glShadeModelFunPtr #-}

-- | Usage: @'glTexCoord1d' s@
--
-- The parameter @s@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord1dv'.


glTexCoord1d :: MonadIO m => GLdouble -> m ()
glTexCoord1d = ffidoubleIOV glTexCoord1dFunPtr

glTexCoord1dFunPtr :: FunPtr (GLdouble -> IO ())
glTexCoord1dFunPtr = unsafePerformIO (getProcAddress "glTexCoord1d")

{-# NOINLINE glTexCoord1dFunPtr #-}

-- | Usage: @'glTexCoord1dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @1@.


glTexCoord1dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord1dv = ffiPtrdoubleIOV glTexCoord1dvFunPtr

glTexCoord1dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord1dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord1dv")

{-# NOINLINE glTexCoord1dvFunPtr #-}

-- | Usage: @'glTexCoord1f' s@
--
-- The parameter @s@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord1fv'.


glTexCoord1f :: MonadIO m => GLfloat -> m ()
glTexCoord1f = ffifloatIOV glTexCoord1fFunPtr

glTexCoord1fFunPtr :: FunPtr (GLfloat -> IO ())
glTexCoord1fFunPtr = unsafePerformIO (getProcAddress "glTexCoord1f")

{-# NOINLINE glTexCoord1fFunPtr #-}

-- | Usage: @'glTexCoord1fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @1@.


glTexCoord1fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord1fv = ffiPtrfloatIOV glTexCoord1fvFunPtr

glTexCoord1fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord1fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord1fv")

{-# NOINLINE glTexCoord1fvFunPtr #-}

-- | Usage: @'glTexCoord1i' s@
--
-- The parameter @s@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord1iv'.


glTexCoord1i :: MonadIO m => GLint -> m ()
glTexCoord1i = ffiintIOV glTexCoord1iFunPtr

glTexCoord1iFunPtr :: FunPtr (GLint -> IO ())
glTexCoord1iFunPtr = unsafePerformIO (getProcAddress "glTexCoord1i")

{-# NOINLINE glTexCoord1iFunPtr #-}

-- | Usage: @'glTexCoord1iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @1@.


glTexCoord1iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord1iv = ffiPtrintIOV glTexCoord1ivFunPtr

glTexCoord1ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord1ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord1iv")

{-# NOINLINE glTexCoord1ivFunPtr #-}

-- | Usage: @'glTexCoord1s' s@
--
-- The parameter @s@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord1sv'.


glTexCoord1s :: MonadIO m => GLshort -> m ()
glTexCoord1s = ffishortIOV glTexCoord1sFunPtr

glTexCoord1sFunPtr :: FunPtr (GLshort -> IO ())
glTexCoord1sFunPtr = unsafePerformIO (getProcAddress "glTexCoord1s")

{-# NOINLINE glTexCoord1sFunPtr #-}

-- | Usage: @'glTexCoord1sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @1@.


glTexCoord1sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord1sv = ffiPtrshortIOV glTexCoord1svFunPtr

glTexCoord1svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord1svFunPtr = unsafePerformIO (getProcAddress "glTexCoord1sv")

{-# NOINLINE glTexCoord1svFunPtr #-}

-- | Usage: @'glTexCoord2d' s t@
--
-- The parameter @s@ is a @CoordD@.
--
-- The parameter @t@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord2dv'.


glTexCoord2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glTexCoord2d = ffidoubledoubleIOV glTexCoord2dFunPtr

glTexCoord2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glTexCoord2dFunPtr = unsafePerformIO (getProcAddress "glTexCoord2d")

{-# NOINLINE glTexCoord2dFunPtr #-}

-- | Usage: @'glTexCoord2dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @2@.


glTexCoord2dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord2dv = ffiPtrdoubleIOV glTexCoord2dvFunPtr

glTexCoord2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord2dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord2dv")

{-# NOINLINE glTexCoord2dvFunPtr #-}

-- | Usage: @'glTexCoord2f' s t@
--
-- The parameter @s@ is a @CoordF@.
--
-- The parameter @t@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord2fv'.


glTexCoord2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glTexCoord2f = ffifloatfloatIOV glTexCoord2fFunPtr

glTexCoord2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glTexCoord2fFunPtr = unsafePerformIO (getProcAddress "glTexCoord2f")

{-# NOINLINE glTexCoord2fFunPtr #-}

-- | Usage: @'glTexCoord2fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @2@.


glTexCoord2fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord2fv = ffiPtrfloatIOV glTexCoord2fvFunPtr

glTexCoord2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord2fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord2fv")

{-# NOINLINE glTexCoord2fvFunPtr #-}

-- | Usage: @'glTexCoord2i' s t@
--
-- The parameter @s@ is a @CoordI@.
--
-- The parameter @t@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord2iv'.


glTexCoord2i :: MonadIO m => GLint -> GLint -> m ()
glTexCoord2i = ffiintintIOV glTexCoord2iFunPtr

glTexCoord2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glTexCoord2iFunPtr = unsafePerformIO (getProcAddress "glTexCoord2i")

{-# NOINLINE glTexCoord2iFunPtr #-}

-- | Usage: @'glTexCoord2iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @2@.


glTexCoord2iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord2iv = ffiPtrintIOV glTexCoord2ivFunPtr

glTexCoord2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord2ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord2iv")

{-# NOINLINE glTexCoord2ivFunPtr #-}

-- | Usage: @'glTexCoord2s' s t@
--
-- The parameter @s@ is a @CoordS@.
--
-- The parameter @t@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord2sv'.


glTexCoord2s :: MonadIO m => GLshort -> GLshort -> m ()
glTexCoord2s = ffishortshortIOV glTexCoord2sFunPtr

glTexCoord2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glTexCoord2sFunPtr = unsafePerformIO (getProcAddress "glTexCoord2s")

{-# NOINLINE glTexCoord2sFunPtr #-}

-- | Usage: @'glTexCoord2sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @2@.


glTexCoord2sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord2sv = ffiPtrshortIOV glTexCoord2svFunPtr

glTexCoord2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord2svFunPtr = unsafePerformIO (getProcAddress "glTexCoord2sv")

{-# NOINLINE glTexCoord2svFunPtr #-}

-- | Usage: @'glTexCoord3d' s t r@
--
-- The parameter @s@ is a @CoordD@.
--
-- The parameter @t@ is a @CoordD@.
--
-- The parameter @r@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord3dv'.


glTexCoord3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glTexCoord3d = ffidoubledoubledoubleIOV glTexCoord3dFunPtr

glTexCoord3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTexCoord3dFunPtr = unsafePerformIO (getProcAddress "glTexCoord3d")

{-# NOINLINE glTexCoord3dFunPtr #-}

-- | Usage: @'glTexCoord3dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glTexCoord3dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord3dv = ffiPtrdoubleIOV glTexCoord3dvFunPtr

glTexCoord3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord3dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord3dv")

{-# NOINLINE glTexCoord3dvFunPtr #-}

-- | Usage: @'glTexCoord3f' s t r@
--
-- The parameter @s@ is a @CoordF@.
--
-- The parameter @t@ is a @CoordF@.
--
-- The parameter @r@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord3fv'.


glTexCoord3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glTexCoord3f = ffifloatfloatfloatIOV glTexCoord3fFunPtr

glTexCoord3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTexCoord3fFunPtr = unsafePerformIO (getProcAddress "glTexCoord3f")

{-# NOINLINE glTexCoord3fFunPtr #-}

-- | Usage: @'glTexCoord3fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glTexCoord3fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord3fv = ffiPtrfloatIOV glTexCoord3fvFunPtr

glTexCoord3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord3fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord3fv")

{-# NOINLINE glTexCoord3fvFunPtr #-}

-- | Usage: @'glTexCoord3i' s t r@
--
-- The parameter @s@ is a @CoordI@.
--
-- The parameter @t@ is a @CoordI@.
--
-- The parameter @r@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord3iv'.


glTexCoord3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glTexCoord3i = ffiintintintIOV glTexCoord3iFunPtr

glTexCoord3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glTexCoord3iFunPtr = unsafePerformIO (getProcAddress "glTexCoord3i")

{-# NOINLINE glTexCoord3iFunPtr #-}

-- | Usage: @'glTexCoord3iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @3@.


glTexCoord3iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord3iv = ffiPtrintIOV glTexCoord3ivFunPtr

glTexCoord3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord3ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord3iv")

{-# NOINLINE glTexCoord3ivFunPtr #-}

-- | Usage: @'glTexCoord3s' s t r@
--
-- The parameter @s@ is a @CoordS@.
--
-- The parameter @t@ is a @CoordS@.
--
-- The parameter @r@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord3sv'.


glTexCoord3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glTexCoord3s = ffishortshortshortIOV glTexCoord3sFunPtr

glTexCoord3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glTexCoord3sFunPtr = unsafePerformIO (getProcAddress "glTexCoord3s")

{-# NOINLINE glTexCoord3sFunPtr #-}

-- | Usage: @'glTexCoord3sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @3@.


glTexCoord3sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord3sv = ffiPtrshortIOV glTexCoord3svFunPtr

glTexCoord3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord3svFunPtr = unsafePerformIO (getProcAddress "glTexCoord3sv")

{-# NOINLINE glTexCoord3svFunPtr #-}

-- | Usage: @'glTexCoord4d' s t r q@
--
-- The parameter @s@ is a @CoordD@.
--
-- The parameter @t@ is a @CoordD@.
--
-- The parameter @r@ is a @CoordD@.
--
-- The parameter @q@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord4dv'.


glTexCoord4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glTexCoord4d = ffidoubledoubledoubledoubleIOV glTexCoord4dFunPtr

glTexCoord4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glTexCoord4dFunPtr = unsafePerformIO (getProcAddress "glTexCoord4d")

{-# NOINLINE glTexCoord4dFunPtr #-}

-- | Usage: @'glTexCoord4dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @4@.


glTexCoord4dv :: MonadIO m => Ptr GLdouble -> m ()
glTexCoord4dv = ffiPtrdoubleIOV glTexCoord4dvFunPtr

glTexCoord4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTexCoord4dvFunPtr = unsafePerformIO (getProcAddress "glTexCoord4dv")

{-# NOINLINE glTexCoord4dvFunPtr #-}

-- | Usage: @'glTexCoord4f' s t r q@
--
-- The parameter @s@ is a @CoordF@.
--
-- The parameter @t@ is a @CoordF@.
--
-- The parameter @r@ is a @CoordF@.
--
-- The parameter @q@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord4fv'.


glTexCoord4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glTexCoord4f = ffifloatfloatfloatfloatIOV glTexCoord4fFunPtr

glTexCoord4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glTexCoord4fFunPtr = unsafePerformIO (getProcAddress "glTexCoord4f")

{-# NOINLINE glTexCoord4fFunPtr #-}

-- | Usage: @'glTexCoord4fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @4@.


glTexCoord4fv :: MonadIO m => Ptr GLfloat -> m ()
glTexCoord4fv = ffiPtrfloatIOV glTexCoord4fvFunPtr

glTexCoord4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTexCoord4fvFunPtr = unsafePerformIO (getProcAddress "glTexCoord4fv")

{-# NOINLINE glTexCoord4fvFunPtr #-}

-- | Usage: @'glTexCoord4i' s t r q@
--
-- The parameter @s@ is a @CoordI@.
--
-- The parameter @t@ is a @CoordI@.
--
-- The parameter @r@ is a @CoordI@.
--
-- The parameter @q@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord4iv'.


glTexCoord4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glTexCoord4i = ffiintintintintIOV glTexCoord4iFunPtr

glTexCoord4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glTexCoord4iFunPtr = unsafePerformIO (getProcAddress "glTexCoord4i")

{-# NOINLINE glTexCoord4iFunPtr #-}

-- | Usage: @'glTexCoord4iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @4@.


glTexCoord4iv :: MonadIO m => Ptr GLint -> m ()
glTexCoord4iv = ffiPtrintIOV glTexCoord4ivFunPtr

glTexCoord4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glTexCoord4ivFunPtr = unsafePerformIO (getProcAddress "glTexCoord4iv")

{-# NOINLINE glTexCoord4ivFunPtr #-}

-- | Usage: @'glTexCoord4s' s t r q@
--
-- The parameter @s@ is a @CoordS@.
--
-- The parameter @t@ is a @CoordS@.
--
-- The parameter @r@ is a @CoordS@.
--
-- The parameter @q@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glTexCoord4sv'.


glTexCoord4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glTexCoord4s = ffishortshortshortshortIOV glTexCoord4sFunPtr

glTexCoord4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glTexCoord4sFunPtr = unsafePerformIO (getProcAddress "glTexCoord4s")

{-# NOINLINE glTexCoord4sFunPtr #-}

-- | Usage: @'glTexCoord4sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @4@.


glTexCoord4sv :: MonadIO m => Ptr GLshort -> m ()
glTexCoord4sv = ffiPtrshortIOV glTexCoord4svFunPtr

glTexCoord4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTexCoord4svFunPtr = unsafePerformIO (getProcAddress "glTexCoord4sv")

{-# NOINLINE glTexCoord4svFunPtr #-}

-- | Usage: @'glTexCoordPointer' size type stride pointer@
--
-- The parameter @type@ is a @TexCoordPointerType@, one of: 'Graphics.GL.Internal.Shared.GL_DOUBLE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT'.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


glTexCoordPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glTexCoordPointer = ffiintenumsizeiPtrVIOV glTexCoordPointerFunPtr

glTexCoordPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glTexCoordPointerFunPtr = unsafePerformIO (getProcAddress "glTexCoordPointer")

{-# NOINLINE glTexCoordPointerFunPtr #-}

-- | Usage: @'glTexEnvf' target pname param@
--
-- The parameter @target@ is a @TextureEnvTarget@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV'.
--
-- The parameter @pname@ is a @TextureEnvParameter@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_COLOR', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_MODE'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glTexEnvf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glTexEnvf = ffienumenumfloatIOV glTexEnvfFunPtr

glTexEnvfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glTexEnvfFunPtr = unsafePerformIO (getProcAddress "glTexEnvf")

{-# NOINLINE glTexEnvfFunPtr #-}

-- | Usage: @'glTexEnvfv' target pname params@
--
-- The parameter @target@ is a @TextureEnvTarget@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV'.
--
-- The parameter @pname@ is a @TextureEnvParameter@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_COLOR', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_MODE'.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexEnvfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glTexEnvfv = ffienumenumPtrfloatIOV glTexEnvfvFunPtr

glTexEnvfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glTexEnvfvFunPtr = unsafePerformIO (getProcAddress "glTexEnvfv")

{-# NOINLINE glTexEnvfvFunPtr #-}

-- | Usage: @'glTexEnvi' target pname param@
--
-- The parameter @target@ is a @TextureEnvTarget@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV'.
--
-- The parameter @pname@ is a @TextureEnvParameter@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_COLOR', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_MODE'.
--
-- The parameter @param@ is a @CheckedInt32@.


glTexEnvi :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glTexEnvi = ffienumenumintIOV glTexEnviFunPtr

glTexEnviFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glTexEnviFunPtr = unsafePerformIO (getProcAddress "glTexEnvi")

{-# NOINLINE glTexEnviFunPtr #-}

-- | Usage: @'glTexEnviv' target pname params@
--
-- The parameter @target@ is a @TextureEnvTarget@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV'.
--
-- The parameter @pname@ is a @TextureEnvParameter@, one of: 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_COLOR', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ENV_MODE'.
--
-- The parameter @params@ is a @CheckedInt32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexEnviv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexEnviv = ffienumenumPtrintIOV glTexEnvivFunPtr

glTexEnvivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexEnvivFunPtr = unsafePerformIO (getProcAddress "glTexEnviv")

{-# NOINLINE glTexEnvivFunPtr #-}

-- | Usage: @'glTexGend' coord pname param@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.


glTexGend :: MonadIO m => GLenum -> GLenum -> GLdouble -> m ()
glTexGend = ffienumenumdoubleIOV glTexGendFunPtr

glTexGendFunPtr :: FunPtr (GLenum -> GLenum -> GLdouble -> IO ())
glTexGendFunPtr = unsafePerformIO (getProcAddress "glTexGend")

{-# NOINLINE glTexGendFunPtr #-}

-- | Usage: @'glTexGendv' coord pname params@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexGendv :: MonadIO m => GLenum -> GLenum -> Ptr GLdouble -> m ()
glTexGendv = ffienumenumPtrdoubleIOV glTexGendvFunPtr

glTexGendvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLdouble -> IO ())
glTexGendvFunPtr = unsafePerformIO (getProcAddress "glTexGendv")

{-# NOINLINE glTexGendvFunPtr #-}

-- | Usage: @'glTexGenf' coord pname param@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glTexGenf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glTexGenf = ffienumenumfloatIOV glTexGenfFunPtr

glTexGenfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glTexGenfFunPtr = unsafePerformIO (getProcAddress "glTexGenf")

{-# NOINLINE glTexGenfFunPtr #-}

-- | Usage: @'glTexGenfv' coord pname params@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexGenfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glTexGenfv = ffienumenumPtrfloatIOV glTexGenfvFunPtr

glTexGenfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glTexGenfvFunPtr = unsafePerformIO (getProcAddress "glTexGenfv")

{-# NOINLINE glTexGenfvFunPtr #-}

-- | Usage: @'glTexGeni' coord pname param@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The parameter @param@ is a @CheckedInt32@.


glTexGeni :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glTexGeni = ffienumenumintIOV glTexGeniFunPtr

glTexGeniFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glTexGeniFunPtr = unsafePerformIO (getProcAddress "glTexGeni")

{-# NOINLINE glTexGeniFunPtr #-}

-- | Usage: @'glTexGeniv' coord pname params@
--
-- The parameter @coord@ is a @TextureCoordName@, one of: 'Graphics.GL.Internal.Shared.GL_S', 'Graphics.GL.Internal.Shared.GL_T', 'Graphics.GL.Internal.Shared.GL_R', 'Graphics.GL.Internal.Shared.GL_Q'.
--
-- The parameter @pname@ is a @TextureGenParameter@, one of: 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_EYE_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_EYE_POINT_SGIS', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_LINE_SGIS', 'Graphics.GL.Internal.Shared.GL_OBJECT_PLANE', 'Graphics.GL.Ext.SGIS.PointLineTexgen.GL_OBJECT_POINT_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_MODE'.
--
-- The parameter @params@ is a @CheckedInt32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexGeniv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexGeniv = ffienumenumPtrintIOV glTexGenivFunPtr

glTexGenivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexGenivFunPtr = unsafePerformIO (getProcAddress "glTexGeniv")

{-# NOINLINE glTexGenivFunPtr #-}

-- | Usage: @'glTranslated' x y z@


glTranslated :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glTranslated = ffidoubledoubledoubleIOV glTranslatedFunPtr

glTranslatedFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTranslatedFunPtr = unsafePerformIO (getProcAddress "glTranslated")

{-# NOINLINE glTranslatedFunPtr #-}

-- | Usage: @'glTranslatef' x y z@


glTranslatef :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glTranslatef = ffifloatfloatfloatIOV glTranslatefFunPtr

glTranslatefFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTranslatefFunPtr = unsafePerformIO (getProcAddress "glTranslatef")

{-# NOINLINE glTranslatefFunPtr #-}

-- | Usage: @'glVertex2d' x y@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex2dv'.


glVertex2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glVertex2d = ffidoubledoubleIOV glVertex2dFunPtr

glVertex2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glVertex2dFunPtr = unsafePerformIO (getProcAddress "glVertex2d")

{-# NOINLINE glVertex2dFunPtr #-}

-- | Usage: @'glVertex2dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @2@.


glVertex2dv :: MonadIO m => Ptr GLdouble -> m ()
glVertex2dv = ffiPtrdoubleIOV glVertex2dvFunPtr

glVertex2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glVertex2dvFunPtr = unsafePerformIO (getProcAddress "glVertex2dv")

{-# NOINLINE glVertex2dvFunPtr #-}

-- | Usage: @'glVertex2f' x y@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex2fv'.


glVertex2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glVertex2f = ffifloatfloatIOV glVertex2fFunPtr

glVertex2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glVertex2fFunPtr = unsafePerformIO (getProcAddress "glVertex2f")

{-# NOINLINE glVertex2fFunPtr #-}

-- | Usage: @'glVertex2fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @2@.


glVertex2fv :: MonadIO m => Ptr GLfloat -> m ()
glVertex2fv = ffiPtrfloatIOV glVertex2fvFunPtr

glVertex2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glVertex2fvFunPtr = unsafePerformIO (getProcAddress "glVertex2fv")

{-# NOINLINE glVertex2fvFunPtr #-}

-- | Usage: @'glVertex2i' x y@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex2iv'.


glVertex2i :: MonadIO m => GLint -> GLint -> m ()
glVertex2i = ffiintintIOV glVertex2iFunPtr

glVertex2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glVertex2iFunPtr = unsafePerformIO (getProcAddress "glVertex2i")

{-# NOINLINE glVertex2iFunPtr #-}

-- | Usage: @'glVertex2iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @2@.


glVertex2iv :: MonadIO m => Ptr GLint -> m ()
glVertex2iv = ffiPtrintIOV glVertex2ivFunPtr

glVertex2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glVertex2ivFunPtr = unsafePerformIO (getProcAddress "glVertex2iv")

{-# NOINLINE glVertex2ivFunPtr #-}

-- | Usage: @'glVertex2s' x y@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex2sv'.


glVertex2s :: MonadIO m => GLshort -> GLshort -> m ()
glVertex2s = ffishortshortIOV glVertex2sFunPtr

glVertex2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glVertex2sFunPtr = unsafePerformIO (getProcAddress "glVertex2s")

{-# NOINLINE glVertex2sFunPtr #-}

-- | Usage: @'glVertex2sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @2@.


glVertex2sv :: MonadIO m => Ptr GLshort -> m ()
glVertex2sv = ffiPtrshortIOV glVertex2svFunPtr

glVertex2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glVertex2svFunPtr = unsafePerformIO (getProcAddress "glVertex2sv")

{-# NOINLINE glVertex2svFunPtr #-}

-- | Usage: @'glVertex3d' x y z@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The parameter @z@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex3dv'.


glVertex3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glVertex3d = ffidoubledoubledoubleIOV glVertex3dFunPtr

glVertex3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glVertex3dFunPtr = unsafePerformIO (getProcAddress "glVertex3d")

{-# NOINLINE glVertex3dFunPtr #-}

-- | Usage: @'glVertex3dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glVertex3dv :: MonadIO m => Ptr GLdouble -> m ()
glVertex3dv = ffiPtrdoubleIOV glVertex3dvFunPtr

glVertex3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glVertex3dvFunPtr = unsafePerformIO (getProcAddress "glVertex3dv")

{-# NOINLINE glVertex3dvFunPtr #-}

-- | Usage: @'glVertex3f' x y z@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The parameter @z@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex3fv'.


glVertex3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glVertex3f = ffifloatfloatfloatIOV glVertex3fFunPtr

glVertex3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glVertex3fFunPtr = unsafePerformIO (getProcAddress "glVertex3f")

{-# NOINLINE glVertex3fFunPtr #-}

-- | Usage: @'glVertex3fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glVertex3fv :: MonadIO m => Ptr GLfloat -> m ()
glVertex3fv = ffiPtrfloatIOV glVertex3fvFunPtr

glVertex3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glVertex3fvFunPtr = unsafePerformIO (getProcAddress "glVertex3fv")

{-# NOINLINE glVertex3fvFunPtr #-}

-- | Usage: @'glVertex3i' x y z@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The parameter @z@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex3iv'.


glVertex3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glVertex3i = ffiintintintIOV glVertex3iFunPtr

glVertex3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glVertex3iFunPtr = unsafePerformIO (getProcAddress "glVertex3i")

{-# NOINLINE glVertex3iFunPtr #-}

-- | Usage: @'glVertex3iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @3@.


glVertex3iv :: MonadIO m => Ptr GLint -> m ()
glVertex3iv = ffiPtrintIOV glVertex3ivFunPtr

glVertex3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glVertex3ivFunPtr = unsafePerformIO (getProcAddress "glVertex3iv")

{-# NOINLINE glVertex3ivFunPtr #-}

-- | Usage: @'glVertex3s' x y z@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The parameter @z@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex3sv'.


glVertex3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glVertex3s = ffishortshortshortIOV glVertex3sFunPtr

glVertex3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glVertex3sFunPtr = unsafePerformIO (getProcAddress "glVertex3s")

{-# NOINLINE glVertex3sFunPtr #-}

-- | Usage: @'glVertex3sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @3@.


glVertex3sv :: MonadIO m => Ptr GLshort -> m ()
glVertex3sv = ffiPtrshortIOV glVertex3svFunPtr

glVertex3svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glVertex3svFunPtr = unsafePerformIO (getProcAddress "glVertex3sv")

{-# NOINLINE glVertex3svFunPtr #-}

-- | Usage: @'glVertex4d' x y z w@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The parameter @z@ is a @CoordD@.
--
-- The parameter @w@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex4dv'.


glVertex4d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertex4d = ffidoubledoubledoubledoubleIOV glVertex4dFunPtr

glVertex4dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertex4dFunPtr = unsafePerformIO (getProcAddress "glVertex4d")

{-# NOINLINE glVertex4dFunPtr #-}

-- | Usage: @'glVertex4dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @4@.


glVertex4dv :: MonadIO m => Ptr GLdouble -> m ()
glVertex4dv = ffiPtrdoubleIOV glVertex4dvFunPtr

glVertex4dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glVertex4dvFunPtr = unsafePerformIO (getProcAddress "glVertex4dv")

{-# NOINLINE glVertex4dvFunPtr #-}

-- | Usage: @'glVertex4f' x y z w@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The parameter @z@ is a @CoordF@.
--
-- The parameter @w@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex4fv'.


glVertex4f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertex4f = ffifloatfloatfloatfloatIOV glVertex4fFunPtr

glVertex4fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertex4fFunPtr = unsafePerformIO (getProcAddress "glVertex4f")

{-# NOINLINE glVertex4fFunPtr #-}

-- | Usage: @'glVertex4fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @4@.


glVertex4fv :: MonadIO m => Ptr GLfloat -> m ()
glVertex4fv = ffiPtrfloatIOV glVertex4fvFunPtr

glVertex4fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glVertex4fvFunPtr = unsafePerformIO (getProcAddress "glVertex4fv")

{-# NOINLINE glVertex4fvFunPtr #-}

-- | Usage: @'glVertex4i' x y z w@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The parameter @z@ is a @CoordI@.
--
-- The parameter @w@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex4iv'.


glVertex4i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glVertex4i = ffiintintintintIOV glVertex4iFunPtr

glVertex4iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glVertex4iFunPtr = unsafePerformIO (getProcAddress "glVertex4i")

{-# NOINLINE glVertex4iFunPtr #-}

-- | Usage: @'glVertex4iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @4@.


glVertex4iv :: MonadIO m => Ptr GLint -> m ()
glVertex4iv = ffiPtrintIOV glVertex4ivFunPtr

glVertex4ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glVertex4ivFunPtr = unsafePerformIO (getProcAddress "glVertex4iv")

{-# NOINLINE glVertex4ivFunPtr #-}

-- | Usage: @'glVertex4s' x y z w@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The parameter @z@ is a @CoordS@.
--
-- The parameter @w@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertex4sv'.


glVertex4s :: MonadIO m => GLshort -> GLshort -> GLshort -> GLshort -> m ()
glVertex4s = ffishortshortshortshortIOV glVertex4sFunPtr

glVertex4sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glVertex4sFunPtr = unsafePerformIO (getProcAddress "glVertex4s")

{-# NOINLINE glVertex4sFunPtr #-}

-- | Usage: @'glVertex4sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @4@.


glVertex4sv :: MonadIO m => Ptr GLshort -> m ()
glVertex4sv = ffiPtrshortIOV glVertex4svFunPtr

glVertex4svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glVertex4svFunPtr = unsafePerformIO (getProcAddress "glVertex4sv")

{-# NOINLINE glVertex4svFunPtr #-}

-- | Usage: @'glVertexPointer' size type stride pointer@
--
-- The parameter @type@ is a @VertexPointerType@, one of: 'Graphics.GL.Internal.Shared.GL_DOUBLE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT'.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


glVertexPointer :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glVertexPointer = ffiintenumsizeiPtrVIOV glVertexPointerFunPtr

glVertexPointerFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glVertexPointerFunPtr = unsafePerformIO (getProcAddress "glVertexPointer")

{-# NOINLINE glVertexPointerFunPtr #-}

-- | Usage: @'glWindowPos2d' x y@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos2dv'.


glWindowPos2d :: MonadIO m => GLdouble -> GLdouble -> m ()
glWindowPos2d = ffidoubledoubleIOV glWindowPos2dFunPtr

glWindowPos2dFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glWindowPos2dFunPtr = unsafePerformIO (getProcAddress "glWindowPos2d")

{-# NOINLINE glWindowPos2dFunPtr #-}

-- | Usage: @'glWindowPos2dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @2@.


glWindowPos2dv :: MonadIO m => Ptr GLdouble -> m ()
glWindowPos2dv = ffiPtrdoubleIOV glWindowPos2dvFunPtr

glWindowPos2dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glWindowPos2dvFunPtr = unsafePerformIO (getProcAddress "glWindowPos2dv")

{-# NOINLINE glWindowPos2dvFunPtr #-}

-- | Usage: @'glWindowPos2f' x y@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos2fv'.


glWindowPos2f :: MonadIO m => GLfloat -> GLfloat -> m ()
glWindowPos2f = ffifloatfloatIOV glWindowPos2fFunPtr

glWindowPos2fFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glWindowPos2fFunPtr = unsafePerformIO (getProcAddress "glWindowPos2f")

{-# NOINLINE glWindowPos2fFunPtr #-}

-- | Usage: @'glWindowPos2fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @2@.


glWindowPos2fv :: MonadIO m => Ptr GLfloat -> m ()
glWindowPos2fv = ffiPtrfloatIOV glWindowPos2fvFunPtr

glWindowPos2fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glWindowPos2fvFunPtr = unsafePerformIO (getProcAddress "glWindowPos2fv")

{-# NOINLINE glWindowPos2fvFunPtr #-}

-- | Usage: @'glWindowPos2i' x y@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos2iv'.


glWindowPos2i :: MonadIO m => GLint -> GLint -> m ()
glWindowPos2i = ffiintintIOV glWindowPos2iFunPtr

glWindowPos2iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glWindowPos2iFunPtr = unsafePerformIO (getProcAddress "glWindowPos2i")

{-# NOINLINE glWindowPos2iFunPtr #-}

-- | Usage: @'glWindowPos2iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @2@.


glWindowPos2iv :: MonadIO m => Ptr GLint -> m ()
glWindowPos2iv = ffiPtrintIOV glWindowPos2ivFunPtr

glWindowPos2ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glWindowPos2ivFunPtr = unsafePerformIO (getProcAddress "glWindowPos2iv")

{-# NOINLINE glWindowPos2ivFunPtr #-}

-- | Usage: @'glWindowPos2s' x y@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos2sv'.


glWindowPos2s :: MonadIO m => GLshort -> GLshort -> m ()
glWindowPos2s = ffishortshortIOV glWindowPos2sFunPtr

glWindowPos2sFunPtr :: FunPtr (GLshort -> GLshort -> IO ())
glWindowPos2sFunPtr = unsafePerformIO (getProcAddress "glWindowPos2s")

{-# NOINLINE glWindowPos2sFunPtr #-}

-- | Usage: @'glWindowPos2sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @2@.


glWindowPos2sv :: MonadIO m => Ptr GLshort -> m ()
glWindowPos2sv = ffiPtrshortIOV glWindowPos2svFunPtr

glWindowPos2svFunPtr :: FunPtr (Ptr GLshort -> IO ())
glWindowPos2svFunPtr = unsafePerformIO (getProcAddress "glWindowPos2sv")

{-# NOINLINE glWindowPos2svFunPtr #-}

-- | Usage: @'glWindowPos3d' x y z@
--
-- The parameter @x@ is a @CoordD@.
--
-- The parameter @y@ is a @CoordD@.
--
-- The parameter @z@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos3dv'.


glWindowPos3d :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glWindowPos3d = ffidoubledoubledoubleIOV glWindowPos3dFunPtr

glWindowPos3dFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glWindowPos3dFunPtr = unsafePerformIO (getProcAddress "glWindowPos3d")

{-# NOINLINE glWindowPos3dFunPtr #-}

-- | Usage: @'glWindowPos3dv' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glWindowPos3dv :: MonadIO m => Ptr GLdouble -> m ()
glWindowPos3dv = ffiPtrdoubleIOV glWindowPos3dvFunPtr

glWindowPos3dvFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glWindowPos3dvFunPtr = unsafePerformIO (getProcAddress "glWindowPos3dv")

{-# NOINLINE glWindowPos3dvFunPtr #-}

-- | Usage: @'glWindowPos3f' x y z@
--
-- The parameter @x@ is a @CoordF@.
--
-- The parameter @y@ is a @CoordF@.
--
-- The parameter @z@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos3fv'.


glWindowPos3f :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glWindowPos3f = ffifloatfloatfloatIOV glWindowPos3fFunPtr

glWindowPos3fFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glWindowPos3fFunPtr = unsafePerformIO (getProcAddress "glWindowPos3f")

{-# NOINLINE glWindowPos3fFunPtr #-}

-- | Usage: @'glWindowPos3fv' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glWindowPos3fv :: MonadIO m => Ptr GLfloat -> m ()
glWindowPos3fv = ffiPtrfloatIOV glWindowPos3fvFunPtr

glWindowPos3fvFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glWindowPos3fvFunPtr = unsafePerformIO (getProcAddress "glWindowPos3fv")

{-# NOINLINE glWindowPos3fvFunPtr #-}

-- | Usage: @'glWindowPos3i' x y z@
--
-- The parameter @x@ is a @CoordI@.
--
-- The parameter @y@ is a @CoordI@.
--
-- The parameter @z@ is a @CoordI@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos3iv'.


glWindowPos3i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glWindowPos3i = ffiintintintIOV glWindowPos3iFunPtr

glWindowPos3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glWindowPos3iFunPtr = unsafePerformIO (getProcAddress "glWindowPos3i")

{-# NOINLINE glWindowPos3iFunPtr #-}

-- | Usage: @'glWindowPos3iv' v@
--
-- The parameter @v@ is a @CoordI@.
--
-- The length of @v@ should be @3@.


glWindowPos3iv :: MonadIO m => Ptr GLint -> m ()
glWindowPos3iv = ffiPtrintIOV glWindowPos3ivFunPtr

glWindowPos3ivFunPtr :: FunPtr (Ptr GLint -> IO ())
glWindowPos3ivFunPtr = unsafePerformIO (getProcAddress "glWindowPos3iv")

{-# NOINLINE glWindowPos3ivFunPtr #-}

-- | Usage: @'glWindowPos3s' x y z@
--
-- The parameter @x@ is a @CoordS@.
--
-- The parameter @y@ is a @CoordS@.
--
-- The parameter @z@ is a @CoordS@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glWindowPos3sv'.


glWindowPos3s :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glWindowPos3s = ffishortshortshortIOV glWindowPos3sFunPtr

glWindowPos3sFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glWindowPos3sFunPtr = unsafePerformIO (getProcAddress "glWindowPos3s")

{-# NOINLINE glWindowPos3sFunPtr #-}

-- | Usage: @'glWindowPos3sv' v@
--
-- The parameter @v@ is a @CoordS@.
--
-- The length of @v@ should be @3@.


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_EYE_PLANE = 0x2502

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 = 0x0B60

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_PRIMARY_COLOR = 0x8577

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_QUADS = 0x0007

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_STACK_OVERFLOW = 0x0503

pattern GL_STACK_UNDERFLOW = 0x0504

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 = 0x8074

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

-- | Usage: @'glColorP3ui' type color@


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

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

{-# NOINLINE glColorP3uiFunPtr #-}

-- | Usage: @'glColorP3uiv' type color@
--
-- The length of @color@ should be @1@.


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

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

{-# NOINLINE glColorP3uivFunPtr #-}

-- | Usage: @'glColorP4ui' type color@


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

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

{-# NOINLINE glColorP4uiFunPtr #-}

-- | Usage: @'glColorP4uiv' type color@
--
-- The length of @color@ should be @1@.


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

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

{-# NOINLINE glColorP4uivFunPtr #-}

-- | Usage: @'glMultiTexCoordP1ui' texture type coords@


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

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

{-# NOINLINE glMultiTexCoordP1uiFunPtr #-}

-- | Usage: @'glMultiTexCoordP1uiv' texture type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glMultiTexCoordP1uivFunPtr #-}

-- | Usage: @'glMultiTexCoordP2ui' texture type coords@


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

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

{-# NOINLINE glMultiTexCoordP2uiFunPtr #-}

-- | Usage: @'glMultiTexCoordP2uiv' texture type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glMultiTexCoordP2uivFunPtr #-}

-- | Usage: @'glMultiTexCoordP3ui' texture type coords@


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

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

{-# NOINLINE glMultiTexCoordP3uiFunPtr #-}

-- | Usage: @'glMultiTexCoordP3uiv' texture type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glMultiTexCoordP3uivFunPtr #-}

-- | Usage: @'glMultiTexCoordP4ui' texture type coords@


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

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

{-# NOINLINE glMultiTexCoordP4uiFunPtr #-}

-- | Usage: @'glMultiTexCoordP4uiv' texture type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glMultiTexCoordP4uivFunPtr #-}

-- | Usage: @'glNormalP3ui' type coords@


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

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

{-# NOINLINE glNormalP3uiFunPtr #-}

-- | Usage: @'glNormalP3uiv' type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glNormalP3uivFunPtr #-}

-- | Usage: @'glSecondaryColorP3ui' type color@


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

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

{-# NOINLINE glSecondaryColorP3uiFunPtr #-}

-- | Usage: @'glSecondaryColorP3uiv' type color@
--
-- The length of @color@ should be @1@.


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

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

{-# NOINLINE glSecondaryColorP3uivFunPtr #-}

-- | Usage: @'glTexCoordP1ui' type coords@


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

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

{-# NOINLINE glTexCoordP1uiFunPtr #-}

-- | Usage: @'glTexCoordP1uiv' type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glTexCoordP1uivFunPtr #-}

-- | Usage: @'glTexCoordP2ui' type coords@


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

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

{-# NOINLINE glTexCoordP2uiFunPtr #-}

-- | Usage: @'glTexCoordP2uiv' type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glTexCoordP2uivFunPtr #-}

-- | Usage: @'glTexCoordP3ui' type coords@


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

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

{-# NOINLINE glTexCoordP3uiFunPtr #-}

-- | Usage: @'glTexCoordP3uiv' type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glTexCoordP3uivFunPtr #-}

-- | Usage: @'glTexCoordP4ui' type coords@


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

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

{-# NOINLINE glTexCoordP4uiFunPtr #-}

-- | Usage: @'glTexCoordP4uiv' type coords@
--
-- The length of @coords@ should be @1@.


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

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

{-# NOINLINE glTexCoordP4uivFunPtr #-}

-- | Usage: @'glVertexP2ui' type value@


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

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

{-# NOINLINE glVertexP2uiFunPtr #-}

-- | Usage: @'glVertexP2uiv' type value@
--
-- The length of @value@ should be @1@.


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

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

{-# NOINLINE glVertexP2uivFunPtr #-}

-- | Usage: @'glVertexP3ui' type value@


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

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

{-# NOINLINE glVertexP3uiFunPtr #-}

-- | Usage: @'glVertexP3uiv' type value@
--
-- The length of @value@ should be @1@.


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

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

{-# NOINLINE glVertexP3uivFunPtr #-}

-- | Usage: @'glVertexP4ui' type value@


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

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

{-# NOINLINE glVertexP4uiFunPtr #-}

-- | Usage: @'glVertexP4uiv' type value@
--
-- The length of @value@ should be @1@.


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

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

{-# NOINLINE glVertexP4uivFunPtr #-}

pattern GL_DISPLAY_LIST = 0x82E7

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


glActiveTexture :: MonadIO m => GLenum -> m ()
glActiveTexture = ffienumIOV glActiveTextureFunPtr

glActiveTextureFunPtr :: FunPtr (GLenum -> IO ())
glActiveTextureFunPtr = unsafePerformIO (getProcAddress "glActiveTexture")

{-# NOINLINE glActiveTextureFunPtr #-}

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


glAttachShader :: MonadIO m => GLuint -> GLuint -> m ()
glAttachShader = ffiuintuintIOV glAttachShaderFunPtr

glAttachShaderFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glAttachShaderFunPtr = unsafePerformIO (getProcAddress "glAttachShader")

{-# NOINLINE glAttachShaderFunPtr #-}

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


glBeginConditionalRender :: MonadIO m => GLuint -> GLenum -> m ()
glBeginConditionalRender = ffiuintenumIOV glBeginConditionalRenderFunPtr

glBeginConditionalRenderFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glBeginConditionalRenderFunPtr = unsafePerformIO (getProcAddress "glBeginConditionalRender")

{-# NOINLINE glBeginConditionalRenderFunPtr #-}

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


glBeginQuery :: MonadIO m => GLenum -> GLuint -> m ()
glBeginQuery = ffienumuintIOV glBeginQueryFunPtr

glBeginQueryFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBeginQueryFunPtr = unsafePerformIO (getProcAddress "glBeginQuery")

{-# NOINLINE glBeginQueryFunPtr #-}

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


glBeginTransformFeedback :: MonadIO m => GLenum -> m ()
glBeginTransformFeedback = ffienumIOV glBeginTransformFeedbackFunPtr

glBeginTransformFeedbackFunPtr :: FunPtr (GLenum -> IO ())
glBeginTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glBeginTransformFeedback")

{-# NOINLINE glBeginTransformFeedbackFunPtr #-}

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


glBindAttribLocation :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
glBindAttribLocation = ffiuintuintPtrcharIOV glBindAttribLocationFunPtr

glBindAttribLocationFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindAttribLocationFunPtr = unsafePerformIO (getProcAddress "glBindAttribLocation")

{-# NOINLINE glBindAttribLocationFunPtr #-}

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


glBindBuffer :: MonadIO m => GLenum -> GLuint -> m ()
glBindBuffer = ffienumuintIOV glBindBufferFunPtr

glBindBufferFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindBufferFunPtr = unsafePerformIO (getProcAddress "glBindBuffer")

{-# NOINLINE glBindBufferFunPtr #-}

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


glBindBufferBase :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
glBindBufferBase = ffienumuintuintIOV glBindBufferBaseFunPtr

glBindBufferBaseFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
glBindBufferBaseFunPtr = unsafePerformIO (getProcAddress "glBindBufferBase")

{-# NOINLINE glBindBufferBaseFunPtr #-}

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


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

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


glBindFragDataLocation :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
glBindFragDataLocation = ffiuintuintPtrcharIOV glBindFragDataLocationFunPtr

glBindFragDataLocationFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindFragDataLocationFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocation")

{-# NOINLINE glBindFragDataLocationFunPtr #-}

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


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

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

{-# NOINLINE glBindFramebufferFunPtr #-}

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


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

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

{-# NOINLINE glBindRenderbufferFunPtr #-}

-- | Usage: @'glBindTexture' target texture@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @texture@ is a @Texture@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindTexture.xhtml>


glBindTexture :: MonadIO m => GLenum -> GLuint -> m ()
glBindTexture = ffienumuintIOV glBindTextureFunPtr

glBindTextureFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindTextureFunPtr = unsafePerformIO (getProcAddress "glBindTexture")

{-# NOINLINE glBindTextureFunPtr #-}

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


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

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

{-# NOINLINE glBindVertexArrayFunPtr #-}

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


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

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

{-# NOINLINE glBlendColorFunPtr #-}

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


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

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

{-# NOINLINE glBlendEquationFunPtr #-}

-- | Usage: @'glBlendEquationSeparate' modeRGB modeAlpha@
--
-- The parameter @modeRGB@ is a @BlendEquationModeEXT@, one of: 'Graphics.GL.Ext.SGIX.BlendAlphaMinmax.GL_ALPHA_MAX_SGIX', 'Graphics.GL.Ext.SGIX.BlendAlphaMinmax.GL_ALPHA_MIN_SGIX', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_FUNC_ADD_EXT', 'Graphics.GL.Ext.EXT.BlendSubtract.GL_FUNC_REVERSE_SUBTRACT_EXT', 'Graphics.GL.Ext.EXT.BlendSubtract.GL_FUNC_SUBTRACT_EXT', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_MAX_EXT', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_MIN_EXT'.
--
-- The parameter @modeAlpha@ is a @BlendEquationModeEXT@, one of: 'Graphics.GL.Ext.SGIX.BlendAlphaMinmax.GL_ALPHA_MAX_SGIX', 'Graphics.GL.Ext.SGIX.BlendAlphaMinmax.GL_ALPHA_MIN_SGIX', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_FUNC_ADD_EXT', 'Graphics.GL.Ext.EXT.BlendSubtract.GL_FUNC_REVERSE_SUBTRACT_EXT', 'Graphics.GL.Ext.EXT.BlendSubtract.GL_FUNC_SUBTRACT_EXT', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_MAX_EXT', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_MIN_EXT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBlendEquationSeparate.xhtml>


glBlendEquationSeparate :: MonadIO m => GLenum -> GLenum -> m ()
glBlendEquationSeparate = ffienumenumIOV glBlendEquationSeparateFunPtr

glBlendEquationSeparateFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glBlendEquationSeparateFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparate")

{-# NOINLINE glBlendEquationSeparateFunPtr #-}

-- | Usage: @'glBlendFunc' sfactor dfactor@
--
-- The parameter @sfactor@ is a @BlendingFactorSrc@, one of: 'Graphics.GL.Ext.EXT.BlendColor.GL_CONSTANT_ALPHA_EXT', 'Graphics.GL.Ext.EXT.BlendColor.GL_CONSTANT_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_DST_ALPHA', 'Graphics.GL.Internal.Shared.GL_DST_COLOR', 'Graphics.GL.Internal.Shared.GL_ONE', 'Graphics.GL.Ext.EXT.BlendColor.GL_ONE_MINUS_CONSTANT_ALPHA_EXT', 'Graphics.GL.Ext.EXT.BlendColor.GL_ONE_MINUS_CONSTANT_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_ONE_MINUS_DST_ALPHA', 'Graphics.GL.Internal.Shared.GL_ONE_MINUS_DST_COLOR', 'Graphics.GL.Internal.Shared.GL_ONE_MINUS_SRC_ALPHA', 'Graphics.GL.Internal.Shared.GL_SRC_ALPHA', 'Graphics.GL.Internal.Shared.GL_SRC_ALPHA_SATURATE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- The parameter @dfactor@ is a @BlendingFactorDest@, one of: 'Graphics.GL.Ext.EXT.BlendColor.GL_CONSTANT_ALPHA_EXT', 'Graphics.GL.Ext.EXT.BlendColor.GL_CONSTANT_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_DST_ALPHA', 'Graphics.GL.Internal.Shared.GL_ONE', 'Graphics.GL.Ext.EXT.BlendColor.GL_ONE_MINUS_CONSTANT_ALPHA_EXT', 'Graphics.GL.Ext.EXT.BlendColor.GL_ONE_MINUS_CONSTANT_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_ONE_MINUS_DST_ALPHA', 'Graphics.GL.Internal.Shared.GL_ONE_MINUS_SRC_ALPHA', 'Graphics.GL.Internal.Shared.GL_ONE_MINUS_SRC_COLOR', 'Graphics.GL.Internal.Shared.GL_SRC_ALPHA', 'Graphics.GL.Internal.Shared.GL_SRC_COLOR', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBlendFunc.xhtml>


glBlendFunc :: MonadIO m => GLenum -> GLenum -> m ()
glBlendFunc = ffienumenumIOV glBlendFuncFunPtr

glBlendFuncFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glBlendFuncFunPtr = unsafePerformIO (getProcAddress "glBlendFunc")

{-# NOINLINE glBlendFuncFunPtr #-}

-- | Usage: @'glBlendFuncSeparate' sfactorRGB dfactorRGB sfactorAlpha dfactorAlpha@
--
-- The parameter @sfactorRGB@ is a @BlendFuncSeparateParameterEXT@.
--
-- The parameter @dfactorRGB@ is a @BlendFuncSeparateParameterEXT@.
--
-- The parameter @sfactorAlpha@ is a @BlendFuncSeparateParameterEXT@.
--
-- The parameter @dfactorAlpha@ is a @BlendFuncSeparateParameterEXT@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBlendFuncSeparate.xhtml>


glBlendFuncSeparate :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
glBlendFuncSeparate = ffienumenumenumenumIOV glBlendFuncSeparateFunPtr

glBlendFuncSeparateFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glBlendFuncSeparateFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparate")

{-# NOINLINE glBlendFuncSeparateFunPtr #-}

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


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

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

{-# NOINLINE glBlitFramebufferFunPtr #-}

-- | Usage: @'glBufferData' target size data usage@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @size@ is a @BufferSize@.
--
-- The parameter @usage@ is a @BufferUsageARB@.
--
-- The length of @data@ should be @size@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBufferData.xhtml>


glBufferData :: MonadIO m => GLenum -> GLsizeiptr -> Ptr () -> GLenum -> m ()
glBufferData = ffienumsizeiptrPtrVenumIOV glBufferDataFunPtr

glBufferDataFunPtr :: FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLenum -> IO ())
glBufferDataFunPtr = unsafePerformIO (getProcAddress "glBufferData")

{-# NOINLINE glBufferDataFunPtr #-}

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


glBufferSubData :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
glBufferSubData = ffienumintptrsizeiptrPtrVIOV glBufferSubDataFunPtr

glBufferSubDataFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
glBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glBufferSubData")

{-# NOINLINE glBufferSubDataFunPtr #-}

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


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

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

{-# NOINLINE glCheckFramebufferStatusFunPtr #-}

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


glClampColor :: MonadIO m => GLenum -> GLenum -> m ()
glClampColor = ffienumenumIOV glClampColorFunPtr

glClampColorFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glClampColorFunPtr = unsafePerformIO (getProcAddress "glClampColor")

{-# NOINLINE glClampColorFunPtr #-}

-- | Usage: @'glClear' mask@
--
-- The parameter @mask@ is a @ClearBufferMask@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM_BUFFER_BIT', 'Graphics.GL.Internal.Shared.GL_COLOR_BUFFER_BIT', 'Graphics.GL.Ext.NV.CoverageSample.GL_COVERAGE_BUFFER_BIT_NV', 'Graphics.GL.Internal.Shared.GL_DEPTH_BUFFER_BIT', 'Graphics.GL.Internal.Shared.GL_STENCIL_BUFFER_BIT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClear.xhtml>


glClear :: MonadIO m => GLbitfield -> m ()
glClear = ffibitfieldIOV glClearFunPtr

glClearFunPtr :: FunPtr (GLbitfield -> IO ())
glClearFunPtr = unsafePerformIO (getProcAddress "glClear")

{-# NOINLINE glClearFunPtr #-}

-- | Usage: @'glClearBufferfi' buffer drawbuffer depth stencil@
--
-- The parameter @drawbuffer@ is a @DrawBufferName@.


glClearBufferfi :: MonadIO m => GLenum -> GLint -> GLfloat -> GLint -> m ()
glClearBufferfi = ffienumintfloatintIOV glClearBufferfiFunPtr

glClearBufferfiFunPtr :: FunPtr (GLenum -> GLint -> GLfloat -> GLint -> IO ())
glClearBufferfiFunPtr = unsafePerformIO (getProcAddress "glClearBufferfi")

{-# NOINLINE glClearBufferfiFunPtr #-}

-- | Usage: @'glClearBufferfv' buffer drawbuffer value@
--
-- The parameter @drawbuffer@ is a @DrawBufferName@.
--
-- The length of @value@ should be @COMPSIZE(buffer)@.


glClearBufferfv :: MonadIO m => GLenum -> GLint -> Ptr GLfloat -> m ()
glClearBufferfv = ffienumintPtrfloatIOV glClearBufferfvFunPtr

glClearBufferfvFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLfloat -> IO ())
glClearBufferfvFunPtr = unsafePerformIO (getProcAddress "glClearBufferfv")

{-# NOINLINE glClearBufferfvFunPtr #-}

-- | Usage: @'glClearBufferiv' buffer drawbuffer value@
--
-- The parameter @drawbuffer@ is a @DrawBufferName@.
--
-- The length of @value@ should be @COMPSIZE(buffer)@.


glClearBufferiv :: MonadIO m => GLenum -> GLint -> Ptr GLint -> m ()
glClearBufferiv = ffienumintPtrintIOV glClearBufferivFunPtr

glClearBufferivFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLint -> IO ())
glClearBufferivFunPtr = unsafePerformIO (getProcAddress "glClearBufferiv")

{-# NOINLINE glClearBufferivFunPtr #-}

-- | Usage: @'glClearBufferuiv' buffer drawbuffer value@
--
-- The parameter @drawbuffer@ is a @DrawBufferName@.
--
-- The length of @value@ should be @COMPSIZE(buffer)@.


glClearBufferuiv :: MonadIO m => GLenum -> GLint -> Ptr GLuint -> m ()
glClearBufferuiv = ffienumintPtruintIOV glClearBufferuivFunPtr

glClearBufferuivFunPtr :: FunPtr (GLenum -> GLint -> Ptr GLuint -> IO ())
glClearBufferuivFunPtr = unsafePerformIO (getProcAddress "glClearBufferuiv")

{-# NOINLINE glClearBufferuivFunPtr #-}

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


glClearColor :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glClearColor = ffifloatfloatfloatfloatIOV glClearColorFunPtr

glClearColorFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glClearColorFunPtr = unsafePerformIO (getProcAddress "glClearColor")

{-# NOINLINE glClearColorFunPtr #-}

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


glClearDepth :: MonadIO m => GLdouble -> m ()
glClearDepth = ffidoubleIOV glClearDepthFunPtr

glClearDepthFunPtr :: FunPtr (GLdouble -> IO ())
glClearDepthFunPtr = unsafePerformIO (getProcAddress "glClearDepth")

{-# NOINLINE glClearDepthFunPtr #-}

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


glClearStencil :: MonadIO m => GLint -> m ()
glClearStencil = ffiintIOV glClearStencilFunPtr

glClearStencilFunPtr :: FunPtr (GLint -> IO ())
glClearStencilFunPtr = unsafePerformIO (getProcAddress "glClearStencil")

{-# NOINLINE glClearStencilFunPtr #-}

-- | Usage: @'glClientWaitSync' sync flags timeout@
--
-- The parameter @sync@ is a @sync@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClientWaitSync.xhtml>


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

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

{-# NOINLINE glClientWaitSyncFunPtr #-}

-- | Usage: @'glColorMask' red green blue alpha@
--
-- The parameter @red@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @green@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @blue@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @alpha@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glColorMask.xhtml>


glColorMask :: MonadIO m => GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMask = ffibooleanbooleanbooleanbooleanIOV glColorMaskFunPtr

glColorMaskFunPtr :: FunPtr (GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskFunPtr = unsafePerformIO (getProcAddress "glColorMask")

{-# NOINLINE glColorMaskFunPtr #-}

-- | Usage: @'glColorMaski' index r g b a@
--
-- The parameter @r@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @g@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @b@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @a@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.


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

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


glCompileShader :: MonadIO m => GLuint -> m ()
glCompileShader = ffiuintIOV glCompileShaderFunPtr

glCompileShaderFunPtr :: FunPtr (GLuint -> IO ())
glCompileShaderFunPtr = unsafePerformIO (getProcAddress "glCompileShader")

{-# NOINLINE glCompileShaderFunPtr #-}

-- | Usage: @'glCompressedTexImage1D' target level internalformat width border imageSize data@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @InternalFormat@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA12', 'Graphics.GL.Internal.Shared.GL_ALPHA16', @GL_ALPHA16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_ALPHA4', 'Graphics.GL.Internal.Shared.GL_ALPHA8', @GL_ALPHA_ICC_SGIX@, 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT16_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT24_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT32_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA8_SGIS', 'Graphics.GL.Internal.Shared.GL_INTENSITY', 'Graphics.GL.Internal.Shared.GL_INTENSITY12', 'Graphics.GL.Internal.Shared.GL_INTENSITY16', @GL_INTENSITY16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_INTENSITY4', 'Graphics.GL.Internal.Shared.GL_INTENSITY8', @GL_INTENSITY_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16_ALPHA16', @GL_LUMINANCE16_ALPHA8_ICC_SGIX@, @GL_LUMINANCE16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE4_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE6_ALPHA2', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8_ALPHA8', @GL_LUMINANCE_ALPHA_ICC_SGIX@, @GL_LUMINANCE_ICC_SGIX@, 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE8_SGIS', 'Graphics.GL.Internal.Shared.GL_R3_G3_B2', @GL_R5_G6_B5_A8_ICC_SGIX@, @GL_R5_G6_B5_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_RGB10', 'Graphics.GL.Internal.Shared.GL_RGB10_A2', 'Graphics.GL.Internal.Shared.GL_RGB12', 'Graphics.GL.Internal.Shared.GL_RGB16', 'Graphics.GL.Ext.EXT.Texture.GL_RGB2_EXT', 'Graphics.GL.Internal.Shared.GL_RGB4', 'Graphics.GL.Internal.Shared.GL_RGB5', 'Graphics.GL.Internal.Shared.GL_RGB5_A1', 'Graphics.GL.Internal.Shared.GL_RGB8', 'Graphics.GL.Internal.Shared.GL_RGBA12', 'Graphics.GL.Internal.Shared.GL_RGBA16', 'Graphics.GL.Internal.Shared.GL_RGBA2', 'Graphics.GL.Internal.Shared.GL_RGBA4', 'Graphics.GL.Internal.Shared.GL_RGBA8', @GL_RGBA_ICC_SGIX@, @GL_RGB_ICC_SGIX@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- The parameter @data@ is a @CompressedTextureARB@.
--
-- The length of @data@ should be @imageSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCompressedTexImage1D.xhtml>


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

-- | Usage: @'glCompressedTexImage2D' target level internalformat width height border imageSize data@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @InternalFormat@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA12', 'Graphics.GL.Internal.Shared.GL_ALPHA16', @GL_ALPHA16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_ALPHA4', 'Graphics.GL.Internal.Shared.GL_ALPHA8', @GL_ALPHA_ICC_SGIX@, 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT16_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT24_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT32_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA8_SGIS', 'Graphics.GL.Internal.Shared.GL_INTENSITY', 'Graphics.GL.Internal.Shared.GL_INTENSITY12', 'Graphics.GL.Internal.Shared.GL_INTENSITY16', @GL_INTENSITY16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_INTENSITY4', 'Graphics.GL.Internal.Shared.GL_INTENSITY8', @GL_INTENSITY_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16_ALPHA16', @GL_LUMINANCE16_ALPHA8_ICC_SGIX@, @GL_LUMINANCE16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE4_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE6_ALPHA2', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8_ALPHA8', @GL_LUMINANCE_ALPHA_ICC_SGIX@, @GL_LUMINANCE_ICC_SGIX@, 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE8_SGIS', 'Graphics.GL.Internal.Shared.GL_R3_G3_B2', @GL_R5_G6_B5_A8_ICC_SGIX@, @GL_R5_G6_B5_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_RGB10', 'Graphics.GL.Internal.Shared.GL_RGB10_A2', 'Graphics.GL.Internal.Shared.GL_RGB12', 'Graphics.GL.Internal.Shared.GL_RGB16', 'Graphics.GL.Ext.EXT.Texture.GL_RGB2_EXT', 'Graphics.GL.Internal.Shared.GL_RGB4', 'Graphics.GL.Internal.Shared.GL_RGB5', 'Graphics.GL.Internal.Shared.GL_RGB5_A1', 'Graphics.GL.Internal.Shared.GL_RGB8', 'Graphics.GL.Internal.Shared.GL_RGBA12', 'Graphics.GL.Internal.Shared.GL_RGBA16', 'Graphics.GL.Internal.Shared.GL_RGBA2', 'Graphics.GL.Internal.Shared.GL_RGBA4', 'Graphics.GL.Internal.Shared.GL_RGBA8', @GL_RGBA_ICC_SGIX@, @GL_RGB_ICC_SGIX@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- The parameter @data@ is a @CompressedTextureARB@.
--
-- The length of @data@ should be @imageSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCompressedTexImage2D.xhtml>


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

-- | Usage: @'glCompressedTexImage3D' target level internalformat width height depth border imageSize data@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @InternalFormat@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA12', 'Graphics.GL.Internal.Shared.GL_ALPHA16', @GL_ALPHA16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_ALPHA4', 'Graphics.GL.Internal.Shared.GL_ALPHA8', @GL_ALPHA_ICC_SGIX@, 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT16_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT24_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT32_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA8_SGIS', 'Graphics.GL.Internal.Shared.GL_INTENSITY', 'Graphics.GL.Internal.Shared.GL_INTENSITY12', 'Graphics.GL.Internal.Shared.GL_INTENSITY16', @GL_INTENSITY16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_INTENSITY4', 'Graphics.GL.Internal.Shared.GL_INTENSITY8', @GL_INTENSITY_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16_ALPHA16', @GL_LUMINANCE16_ALPHA8_ICC_SGIX@, @GL_LUMINANCE16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE4_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE6_ALPHA2', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8_ALPHA8', @GL_LUMINANCE_ALPHA_ICC_SGIX@, @GL_LUMINANCE_ICC_SGIX@, 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE8_SGIS', 'Graphics.GL.Internal.Shared.GL_R3_G3_B2', @GL_R5_G6_B5_A8_ICC_SGIX@, @GL_R5_G6_B5_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_RGB10', 'Graphics.GL.Internal.Shared.GL_RGB10_A2', 'Graphics.GL.Internal.Shared.GL_RGB12', 'Graphics.GL.Internal.Shared.GL_RGB16', 'Graphics.GL.Ext.EXT.Texture.GL_RGB2_EXT', 'Graphics.GL.Internal.Shared.GL_RGB4', 'Graphics.GL.Internal.Shared.GL_RGB5', 'Graphics.GL.Internal.Shared.GL_RGB5_A1', 'Graphics.GL.Internal.Shared.GL_RGB8', 'Graphics.GL.Internal.Shared.GL_RGBA12', 'Graphics.GL.Internal.Shared.GL_RGBA16', 'Graphics.GL.Internal.Shared.GL_RGBA2', 'Graphics.GL.Internal.Shared.GL_RGBA4', 'Graphics.GL.Internal.Shared.GL_RGBA8', @GL_RGBA_ICC_SGIX@, @GL_RGB_ICC_SGIX@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- The parameter @data@ is a @CompressedTextureARB@.
--
-- The length of @data@ should be @imageSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCompressedTexImage3D.xhtml>


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

-- | Usage: @'glCompressedTexSubImage1D' target level xoffset width format imageSize data@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @data@ is a @CompressedTextureARB@.
--
-- The length of @data@ should be @imageSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCompressedTexSubImage1D.xhtml>


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

-- | Usage: @'glCompressedTexSubImage2D' target level xoffset yoffset width height format imageSize data@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @yoffset@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @data@ is a @CompressedTextureARB@.
--
-- The length of @data@ should be @imageSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCompressedTexSubImage2D.xhtml>


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

-- | Usage: @'glCompressedTexSubImage3D' target level xoffset yoffset zoffset width height depth format imageSize data@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @yoffset@ is a @CheckedInt32@.
--
-- The parameter @zoffset@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @data@ is a @CompressedTextureARB@.
--
-- The length of @data@ should be @imageSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCompressedTexSubImage3D.xhtml>


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

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


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

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

{-# NOINLINE glCopyBufferSubDataFunPtr #-}

-- | Usage: @'glCopyTexImage1D' target level internalformat x y width border@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @InternalFormat@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA12', 'Graphics.GL.Internal.Shared.GL_ALPHA16', @GL_ALPHA16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_ALPHA4', 'Graphics.GL.Internal.Shared.GL_ALPHA8', @GL_ALPHA_ICC_SGIX@, 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT16_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT24_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT32_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA8_SGIS', 'Graphics.GL.Internal.Shared.GL_INTENSITY', 'Graphics.GL.Internal.Shared.GL_INTENSITY12', 'Graphics.GL.Internal.Shared.GL_INTENSITY16', @GL_INTENSITY16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_INTENSITY4', 'Graphics.GL.Internal.Shared.GL_INTENSITY8', @GL_INTENSITY_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16_ALPHA16', @GL_LUMINANCE16_ALPHA8_ICC_SGIX@, @GL_LUMINANCE16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE4_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE6_ALPHA2', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8_ALPHA8', @GL_LUMINANCE_ALPHA_ICC_SGIX@, @GL_LUMINANCE_ICC_SGIX@, 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE8_SGIS', 'Graphics.GL.Internal.Shared.GL_R3_G3_B2', @GL_R5_G6_B5_A8_ICC_SGIX@, @GL_R5_G6_B5_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_RGB10', 'Graphics.GL.Internal.Shared.GL_RGB10_A2', 'Graphics.GL.Internal.Shared.GL_RGB12', 'Graphics.GL.Internal.Shared.GL_RGB16', 'Graphics.GL.Ext.EXT.Texture.GL_RGB2_EXT', 'Graphics.GL.Internal.Shared.GL_RGB4', 'Graphics.GL.Internal.Shared.GL_RGB5', 'Graphics.GL.Internal.Shared.GL_RGB5_A1', 'Graphics.GL.Internal.Shared.GL_RGB8', 'Graphics.GL.Internal.Shared.GL_RGBA12', 'Graphics.GL.Internal.Shared.GL_RGBA16', 'Graphics.GL.Internal.Shared.GL_RGBA2', 'Graphics.GL.Internal.Shared.GL_RGBA4', 'Graphics.GL.Internal.Shared.GL_RGBA8', @GL_RGBA_ICC_SGIX@, @GL_RGB_ICC_SGIX@.
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyTexImage1D.xhtml>


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

-- | Usage: @'glCopyTexImage2D' target level internalformat x y width height border@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @InternalFormat@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA12', 'Graphics.GL.Internal.Shared.GL_ALPHA16', @GL_ALPHA16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_ALPHA4', 'Graphics.GL.Internal.Shared.GL_ALPHA8', @GL_ALPHA_ICC_SGIX@, 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT16_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT24_SGIX', 'Graphics.GL.Ext.SGIX.DepthTexture.GL_DEPTH_COMPONENT32_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE12_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE16_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_LUMINANCE_ALPHA8_SGIS', 'Graphics.GL.Internal.Shared.GL_INTENSITY', 'Graphics.GL.Internal.Shared.GL_INTENSITY12', 'Graphics.GL.Internal.Shared.GL_INTENSITY16', @GL_INTENSITY16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_INTENSITY4', 'Graphics.GL.Internal.Shared.GL_INTENSITY8', @GL_INTENSITY_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA12', 'Graphics.GL.Internal.Shared.GL_LUMINANCE12_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16', 'Graphics.GL.Internal.Shared.GL_LUMINANCE16_ALPHA16', @GL_LUMINANCE16_ALPHA8_ICC_SGIX@, @GL_LUMINANCE16_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_LUMINANCE4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE4_ALPHA4', 'Graphics.GL.Internal.Shared.GL_LUMINANCE6_ALPHA2', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8', 'Graphics.GL.Internal.Shared.GL_LUMINANCE8_ALPHA8', @GL_LUMINANCE_ALPHA_ICC_SGIX@, @GL_LUMINANCE_ICC_SGIX@, 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_ALPHA8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_INTENSITY8_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE4_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_LUMINANCE8_SGIS', 'Graphics.GL.Internal.Shared.GL_R3_G3_B2', @GL_R5_G6_B5_A8_ICC_SGIX@, @GL_R5_G6_B5_ICC_SGIX@, 'Graphics.GL.Internal.Shared.GL_RGB10', 'Graphics.GL.Internal.Shared.GL_RGB10_A2', 'Graphics.GL.Internal.Shared.GL_RGB12', 'Graphics.GL.Internal.Shared.GL_RGB16', 'Graphics.GL.Ext.EXT.Texture.GL_RGB2_EXT', 'Graphics.GL.Internal.Shared.GL_RGB4', 'Graphics.GL.Internal.Shared.GL_RGB5', 'Graphics.GL.Internal.Shared.GL_RGB5_A1', 'Graphics.GL.Internal.Shared.GL_RGB8', 'Graphics.GL.Internal.Shared.GL_RGBA12', 'Graphics.GL.Internal.Shared.GL_RGBA16', 'Graphics.GL.Internal.Shared.GL_RGBA2', 'Graphics.GL.Internal.Shared.GL_RGBA4', 'Graphics.GL.Internal.Shared.GL_RGBA8', @GL_RGBA_ICC_SGIX@, @GL_RGB_ICC_SGIX@.
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyTexImage2D.xhtml>


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

-- | Usage: @'glCopyTexSubImage1D' target level xoffset x y width@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyTexSubImage1D.xhtml>


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

-- | Usage: @'glCopyTexSubImage2D' target level xoffset yoffset x y width height@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @yoffset@ is a @CheckedInt32@.
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyTexSubImage2D.xhtml>


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

-- | Usage: @'glCopyTexSubImage3D' target level xoffset yoffset zoffset x y width height@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @yoffset@ is a @CheckedInt32@.
--
-- The parameter @zoffset@ is a @CheckedInt32@.
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCopyTexSubImage3D.xhtml>


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

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


glCreateProgram :: MonadIO m => m GLuint
glCreateProgram = ffiIOuint glCreateProgramFunPtr

glCreateProgramFunPtr :: FunPtr (IO GLuint)
glCreateProgramFunPtr = unsafePerformIO (getProcAddress "glCreateProgram")

{-# NOINLINE glCreateProgramFunPtr #-}

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


glCreateShader :: MonadIO m => GLenum -> m GLuint
glCreateShader = ffienumIOuint glCreateShaderFunPtr

glCreateShaderFunPtr :: FunPtr (GLenum -> IO GLuint)
glCreateShaderFunPtr = unsafePerformIO (getProcAddress "glCreateShader")

{-# NOINLINE glCreateShaderFunPtr #-}

-- | Usage: @'glCullFace' mode@
--
-- The parameter @mode@ is a @CullFaceMode@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCullFace.xhtml>


glCullFace :: MonadIO m => GLenum -> m ()
glCullFace = ffienumIOV glCullFaceFunPtr

glCullFaceFunPtr :: FunPtr (GLenum -> IO ())
glCullFaceFunPtr = unsafePerformIO (getProcAddress "glCullFace")

{-# NOINLINE glCullFaceFunPtr #-}

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


glDeleteBuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteBuffers = ffisizeiPtruintIOV glDeleteBuffersFunPtr

glDeleteBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteBuffersFunPtr = unsafePerformIO (getProcAddress "glDeleteBuffers")

{-# NOINLINE glDeleteBuffersFunPtr #-}

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


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

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

{-# NOINLINE glDeleteFramebuffersFunPtr #-}

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


glDeleteProgram :: MonadIO m => GLuint -> m ()
glDeleteProgram = ffiuintIOV glDeleteProgramFunPtr

glDeleteProgramFunPtr :: FunPtr (GLuint -> IO ())
glDeleteProgramFunPtr = unsafePerformIO (getProcAddress "glDeleteProgram")

{-# NOINLINE glDeleteProgramFunPtr #-}

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


glDeleteQueries :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteQueries = ffisizeiPtruintIOV glDeleteQueriesFunPtr

glDeleteQueriesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteQueriesFunPtr = unsafePerformIO (getProcAddress "glDeleteQueries")

{-# NOINLINE glDeleteQueriesFunPtr #-}

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


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

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

{-# NOINLINE glDeleteRenderbuffersFunPtr #-}

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


glDeleteShader :: MonadIO m => GLuint -> m ()
glDeleteShader = ffiuintIOV glDeleteShaderFunPtr

glDeleteShaderFunPtr :: FunPtr (GLuint -> IO ())
glDeleteShaderFunPtr = unsafePerformIO (getProcAddress "glDeleteShader")

{-# NOINLINE glDeleteShaderFunPtr #-}

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


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

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

{-# NOINLINE glDeleteSyncFunPtr #-}

-- | Usage: @'glDeleteTextures' n textures@
--
-- The parameter @textures@ is a @Texture@.
--
-- The length of @textures@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDeleteTextures.xhtml>


glDeleteTextures :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteTextures = ffisizeiPtruintIOV glDeleteTexturesFunPtr

glDeleteTexturesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteTexturesFunPtr = unsafePerformIO (getProcAddress "glDeleteTextures")

{-# NOINLINE glDeleteTexturesFunPtr #-}

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


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

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

{-# NOINLINE glDeleteVertexArraysFunPtr #-}

-- | Usage: @'glDepthFunc' func@
--
-- The parameter @func@ is a @DepthFunction@, one of: 'Graphics.GL.Internal.Shared.GL_ALWAYS', 'Graphics.GL.Internal.Shared.GL_EQUAL', 'Graphics.GL.Internal.Shared.GL_GEQUAL', 'Graphics.GL.Internal.Shared.GL_GREATER', 'Graphics.GL.Internal.Shared.GL_LEQUAL', 'Graphics.GL.Internal.Shared.GL_LESS', 'Graphics.GL.Internal.Shared.GL_NEVER', 'Graphics.GL.Internal.Shared.GL_NOTEQUAL'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDepthFunc.xhtml>


glDepthFunc :: MonadIO m => GLenum -> m ()
glDepthFunc = ffienumIOV glDepthFuncFunPtr

glDepthFuncFunPtr :: FunPtr (GLenum -> IO ())
glDepthFuncFunPtr = unsafePerformIO (getProcAddress "glDepthFunc")

{-# NOINLINE glDepthFuncFunPtr #-}

-- | Usage: @'glDepthMask' flag@
--
-- The parameter @flag@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDepthMask.xhtml>


glDepthMask :: MonadIO m => GLboolean -> m ()
glDepthMask = ffibooleanIOV glDepthMaskFunPtr

glDepthMaskFunPtr :: FunPtr (GLboolean -> IO ())
glDepthMaskFunPtr = unsafePerformIO (getProcAddress "glDepthMask")

{-# NOINLINE glDepthMaskFunPtr #-}

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


glDepthRange :: MonadIO m => GLdouble -> GLdouble -> m ()
glDepthRange = ffidoubledoubleIOV glDepthRangeFunPtr

glDepthRangeFunPtr :: FunPtr (GLdouble -> GLdouble -> IO ())
glDepthRangeFunPtr = unsafePerformIO (getProcAddress "glDepthRange")

{-# NOINLINE glDepthRangeFunPtr #-}

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


glDetachShader :: MonadIO m => GLuint -> GLuint -> m ()
glDetachShader = ffiuintuintIOV glDetachShaderFunPtr

glDetachShaderFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glDetachShaderFunPtr = unsafePerformIO (getProcAddress "glDetachShader")

{-# NOINLINE glDetachShaderFunPtr #-}

-- | Usage: @'glDisable' cap@
--
-- The parameter @cap@ is a @EnableCap@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY'.


glDisable :: MonadIO m => GLenum -> m ()
glDisable = ffienumIOV glDisableFunPtr

glDisableFunPtr :: FunPtr (GLenum -> IO ())
glDisableFunPtr = unsafePerformIO (getProcAddress "glDisable")

{-# NOINLINE glDisableFunPtr #-}

-- | Usage: @'glDisableVertexAttribArray' index@


glDisableVertexAttribArray :: MonadIO m => GLuint -> m ()
glDisableVertexAttribArray = ffiuintIOV glDisableVertexAttribArrayFunPtr

glDisableVertexAttribArrayFunPtr :: FunPtr (GLuint -> IO ())
glDisableVertexAttribArrayFunPtr = unsafePerformIO (getProcAddress "glDisableVertexAttribArray")

{-# NOINLINE glDisableVertexAttribArrayFunPtr #-}

-- | Usage: @'glDisablei' target index@


glDisablei :: MonadIO m => GLenum -> GLuint -> m ()
glDisablei = ffienumuintIOV glDisableiFunPtr

glDisableiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDisableiFunPtr = unsafePerformIO (getProcAddress "glDisablei")

{-# NOINLINE glDisableiFunPtr #-}

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


glDrawArrays :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
glDrawArrays = ffienumintsizeiIOV glDrawArraysFunPtr

glDrawArraysFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> IO ())
glDrawArraysFunPtr = unsafePerformIO (getProcAddress "glDrawArrays")

{-# NOINLINE glDrawArraysFunPtr #-}

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


glDrawArraysInstanced :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
glDrawArraysInstanced = ffienumintsizeisizeiIOV glDrawArraysInstancedFunPtr

glDrawArraysInstancedFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
glDrawArraysInstancedFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstanced")

{-# NOINLINE glDrawArraysInstancedFunPtr #-}

-- | Usage: @'glDrawBuffer' buf@
--
-- The parameter @buf@ is a @DrawBufferMode@, one of: 'Graphics.GL.Internal.Shared.GL_AUX0', 'Graphics.GL.Internal.Shared.GL_AUX1', 'Graphics.GL.Internal.Shared.GL_AUX2', 'Graphics.GL.Internal.Shared.GL_AUX3', 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_BACK_LEFT', 'Graphics.GL.Internal.Shared.GL_BACK_RIGHT', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT_LEFT', 'Graphics.GL.Internal.Shared.GL_FRONT_RIGHT', 'Graphics.GL.Internal.Shared.GL_LEFT', 'Graphics.GL.Internal.Shared.GL_NONE', 'Graphics.GL.Ext.OES.FramebufferObject.GL_NONE_OES', 'Graphics.GL.Internal.Shared.GL_RIGHT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawBuffer.xhtml>


glDrawBuffer :: MonadIO m => GLenum -> m ()
glDrawBuffer = ffienumIOV glDrawBufferFunPtr

glDrawBufferFunPtr :: FunPtr (GLenum -> IO ())
glDrawBufferFunPtr = unsafePerformIO (getProcAddress "glDrawBuffer")

{-# NOINLINE glDrawBufferFunPtr #-}

-- | Usage: @'glDrawBuffers' n bufs@
--
-- The parameter @bufs@ is a @DrawBufferModeATI@.
--
-- The length of @bufs@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDrawBuffers.xhtml>


glDrawBuffers :: MonadIO m => GLsizei -> Ptr GLenum -> m ()
glDrawBuffers = ffisizeiPtrenumIOV glDrawBuffersFunPtr

glDrawBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
glDrawBuffersFunPtr = unsafePerformIO (getProcAddress "glDrawBuffers")

{-# NOINLINE glDrawBuffersFunPtr #-}

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


glDrawElements :: MonadIO m => GLenum -> GLsizei -> GLenum -> Ptr () -> m ()
glDrawElements = ffienumsizeienumPtrVIOV glDrawElementsFunPtr

glDrawElementsFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> Ptr () -> IO ())
glDrawElementsFunPtr = unsafePerformIO (getProcAddress "glDrawElements")

{-# NOINLINE glDrawElementsFunPtr #-}

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


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

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

{-# NOINLINE glDrawElementsBaseVertexFunPtr #-}

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


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

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


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

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

{-# NOINLINE glDrawElementsInstancedBaseVertexFunPtr #-}

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


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

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


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

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

{-# NOINLINE glDrawRangeElementsBaseVertexFunPtr #-}

-- | Usage: @'glEnable' cap@
--
-- The parameter @cap@ is a @EnableCap@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glEnable.xhtml>


glEnable :: MonadIO m => GLenum -> m ()
glEnable = ffienumIOV glEnableFunPtr

glEnableFunPtr :: FunPtr (GLenum -> IO ())
glEnableFunPtr = unsafePerformIO (getProcAddress "glEnable")

{-# NOINLINE glEnableFunPtr #-}

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


glEnableVertexAttribArray :: MonadIO m => GLuint -> m ()
glEnableVertexAttribArray = ffiuintIOV glEnableVertexAttribArrayFunPtr

glEnableVertexAttribArrayFunPtr :: FunPtr (GLuint -> IO ())
glEnableVertexAttribArrayFunPtr = unsafePerformIO (getProcAddress "glEnableVertexAttribArray")

{-# NOINLINE glEnableVertexAttribArrayFunPtr #-}

-- | Usage: @'glEnablei' target index@


glEnablei :: MonadIO m => GLenum -> GLuint -> m ()
glEnablei = ffienumuintIOV glEnableiFunPtr

glEnableiFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEnableiFunPtr = unsafePerformIO (getProcAddress "glEnablei")

{-# NOINLINE glEnableiFunPtr #-}

-- | Usage: @'glEndConditionalRender'@


glEndConditionalRender :: MonadIO m => m ()
glEndConditionalRender = ffiIOV glEndConditionalRenderFunPtr

glEndConditionalRenderFunPtr :: FunPtr (IO ())
glEndConditionalRenderFunPtr = unsafePerformIO (getProcAddress "glEndConditionalRender")

{-# NOINLINE glEndConditionalRenderFunPtr #-}

-- | Usage: @'glEndQuery' target@


glEndQuery :: MonadIO m => GLenum -> m ()
glEndQuery = ffienumIOV glEndQueryFunPtr

glEndQueryFunPtr :: FunPtr (GLenum -> IO ())
glEndQueryFunPtr = unsafePerformIO (getProcAddress "glEndQuery")

{-# NOINLINE glEndQueryFunPtr #-}

-- | Usage: @'glEndTransformFeedback'@


glEndTransformFeedback :: MonadIO m => m ()
glEndTransformFeedback = ffiIOV glEndTransformFeedbackFunPtr

glEndTransformFeedbackFunPtr :: FunPtr (IO ())
glEndTransformFeedbackFunPtr = unsafePerformIO (getProcAddress "glEndTransformFeedback")

{-# NOINLINE glEndTransformFeedbackFunPtr #-}

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


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

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

{-# NOINLINE glFenceSyncFunPtr #-}

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


glFinish :: MonadIO m => m ()
glFinish = ffiIOV glFinishFunPtr

glFinishFunPtr :: FunPtr (IO ())
glFinishFunPtr = unsafePerformIO (getProcAddress "glFinish")

{-# NOINLINE glFinishFunPtr #-}

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


glFlush :: MonadIO m => m ()
glFlush = ffiIOV glFlushFunPtr

glFlushFunPtr :: FunPtr (IO ())
glFlushFunPtr = unsafePerformIO (getProcAddress "glFlush")

{-# NOINLINE glFlushFunPtr #-}

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


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

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

{-# NOINLINE glFlushMappedBufferRangeFunPtr #-}

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


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

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

{-# NOINLINE glFramebufferRenderbufferFunPtr #-}

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


glFramebufferTexture :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTexture = ffienumenumuintintIOV glFramebufferTextureFunPtr

glFramebufferTextureFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTextureFunPtr = unsafePerformIO (getProcAddress "glFramebufferTexture")

{-# NOINLINE glFramebufferTextureFunPtr #-}

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


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

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

{-# NOINLINE glFramebufferTexture1DFunPtr #-}

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


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

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

{-# NOINLINE glFramebufferTexture2DFunPtr #-}

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


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

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

{-# NOINLINE glFramebufferTexture3DFunPtr #-}

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


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

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

{-# NOINLINE glFramebufferTextureLayerFunPtr #-}

-- | Usage: @'glFrontFace' mode@
--
-- The parameter @mode@ is a @FrontFaceDirection@, one of: 'Graphics.GL.Internal.Shared.GL_CCW', 'Graphics.GL.Internal.Shared.GL_CW'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glFrontFace.xhtml>


glFrontFace :: MonadIO m => GLenum -> m ()
glFrontFace = ffienumIOV glFrontFaceFunPtr

glFrontFaceFunPtr :: FunPtr (GLenum -> IO ())
glFrontFaceFunPtr = unsafePerformIO (getProcAddress "glFrontFace")

{-# NOINLINE glFrontFaceFunPtr #-}

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


glGenBuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenBuffers = ffisizeiPtruintIOV glGenBuffersFunPtr

glGenBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenBuffersFunPtr = unsafePerformIO (getProcAddress "glGenBuffers")

{-# NOINLINE glGenBuffersFunPtr #-}

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


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

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

{-# NOINLINE glGenFramebuffersFunPtr #-}

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


glGenQueries :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenQueries = ffisizeiPtruintIOV glGenQueriesFunPtr

glGenQueriesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenQueriesFunPtr = unsafePerformIO (getProcAddress "glGenQueries")

{-# NOINLINE glGenQueriesFunPtr #-}

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


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

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

{-# NOINLINE glGenRenderbuffersFunPtr #-}

-- | Usage: @'glGenTextures' n textures@
--
-- The parameter @textures@ is a @Texture@.
--
-- The length of @textures@ should be @n@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGenTextures.xhtml>


glGenTextures :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenTextures = ffisizeiPtruintIOV glGenTexturesFunPtr

glGenTexturesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenTexturesFunPtr = unsafePerformIO (getProcAddress "glGenTextures")

{-# NOINLINE glGenTexturesFunPtr #-}

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


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

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

{-# NOINLINE glGenVertexArraysFunPtr #-}

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


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

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

{-# NOINLINE glGenerateMipmapFunPtr #-}

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


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

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


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

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


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

-- | Usage: @'glGetActiveUniformBlockiv' program uniformBlockIndex pname params@
--
-- The length of @params@ should be @COMPSIZE(program,uniformBlockIndex,pname)@.


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

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


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

-- | Usage: @'glGetActiveUniformsiv' program uniformCount uniformIndices pname params@
--
-- The length of @uniformIndices@ should be @uniformCount@.
--
-- The length of @params@ should be @COMPSIZE(uniformCount,pname)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetActiveUniformsiv.xhtml>


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

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


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

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


glGetAttribLocation :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetAttribLocation = ffiuintPtrcharIOint glGetAttribLocationFunPtr

glGetAttribLocationFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetAttribLocationFunPtr = unsafePerformIO (getProcAddress "glGetAttribLocation")

{-# NOINLINE glGetAttribLocationFunPtr #-}

-- | Usage: @'glGetBooleani_v' target index data@
--
-- The parameter @data@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @data@ should be @COMPSIZE(target)@.


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

-- | Usage: @'glGetBooleanv' pname data@
--
-- The parameter @pname@ is a @GetPName@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_ACCUM_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_RED_BITS', 'Graphics.GL.Internal.Shared.GL_ALIASED_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_ALIASED_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_ALPHA_BIAS', 'Graphics.GL.Internal.Shared.GL_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ALPHA_SCALE', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_FUNC', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_FUNC_QCOM', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_QCOM', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_REF', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_REF_QCOM', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.Async.GL_ASYNC_MARKER_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_AUX_BUFFERS', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.EXT.BlendColor.GL_BLEND_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_DST', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_BLEND_EQUATION_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_SRC', 'Graphics.GL.Internal.Shared.GL_BLUE_BIAS', 'Graphics.GL.Internal.Shared.GL_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_BLUE_SCALE', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_COLOR_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_COLOR_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_FACE', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_PARAMETER', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_COLOR_WRITEMASK', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Ext.SGIX.ConvolutionAccuracy.GL_CONVOLUTION_HINT_SGIX', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_CULL_FACE_MODE', 'Graphics.GL.Internal.Shared.GL_CURRENT_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_NORMAL', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_DISTANCE', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION_VALID', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_TEXTURE_COORDS', 'Graphics.GL.Internal.Shared.GL_CURRENT_TEXTURE_COORDS', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_DEFORMATIONS_MASK_SGIX', 'Graphics.GL.Internal.Shared.GL_DEPTH_BIAS', 'Graphics.GL.Internal.Shared.GL_DEPTH_BITS', 'Graphics.GL.Internal.Shared.GL_DEPTH_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_DEPTH_FUNC', 'Graphics.GL.Internal.Shared.GL_DEPTH_RANGE', 'Graphics.GL.Internal.Shared.GL_DEPTH_SCALE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DEPTH_WRITEMASK', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_DISTANCE_ATTENUATION_SGIS', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_DOUBLEBUFFER', 'Graphics.GL.Internal.Shared.GL_DRAW_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_DRAW_BUFFER_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_EDGE_FLAG_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_SIZE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_TYPE', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Ext.SGIS.FogFunction.GL_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Internal.Shared.GL_FOG_HINT', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Internal.Shared.GL_FRONT_FACE', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_HINT_SGIS', 'Graphics.GL.Internal.Shared.GL_GREEN_BIAS', 'Graphics.GL.Internal.Shared.GL_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_GREEN_SCALE', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_INDEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_INDEX_BITS', 'Graphics.GL.Internal.Shared.GL_INDEX_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_INDEX_MODE', 'Graphics.GL.Internal.Shared.GL_INDEX_OFFSET', 'Graphics.GL.Internal.Shared.GL_INDEX_SHIFT', 'Graphics.GL.Internal.Shared.GL_INDEX_WRITEMASK', 'Graphics.GL.Ext.SGIX.Instruments.GL_INSTRUMENT_MEASUREMENTS_SGIX', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_LIGHT_ENV_MODE_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_PATTERN', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_REPEAT', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_LIST_BASE', 'Graphics.GL.Internal.Shared.GL_LIST_INDEX', 'Graphics.GL.Internal.Shared.GL_LIST_MODE', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP_MODE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP_COLOR', 'Graphics.GL.Internal.Shared.GL_MAP_STENCIL', 'Graphics.GL.Internal.Shared.GL_MATRIX_MODE', 'Graphics.GL.Ext.EXT.Texture3D.GL_MAX_3D_TEXTURE_SIZE_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_MAX_4D_TEXTURE_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_ACTIVE_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_MAX_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_DISTANCES', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_PLANES', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Internal.Shared.GL_MAX_EVAL_ORDER', 'Graphics.GL.Ext.SGIS.FogFunction.GL_MAX_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_FRAGMENT_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_MAX_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_LIGHTS', 'Graphics.GL.Internal.Shared.GL_MAX_LIST_NESTING', 'Graphics.GL.Internal.Shared.GL_MAX_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_PIXEL_MAP_TABLE', 'Graphics.GL.Internal.Shared.GL_MAX_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_SIZE', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_VIEWPORT_DIMS', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_MATRIX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_STACK_DEPTH_EXT', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_MATRIX', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_NORMAL_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_PACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_PACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_PACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_PACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_PERSPECTIVE_CORRECTION_HINT', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S_SIZE', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_MODE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_INCREMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_SIZE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_WIDTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_WIDTH_SGIX', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_FADE_THRESHOLD_SIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_GRANULARITY', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MAX_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MIN_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_MODE', 'Graphics.GL.Ext.EXT.PolygonOffset.GL_POLYGON_OFFSET_BIAS_EXT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FACTOR', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_UNITS', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_SCALE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_SCALE_EXT', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_SCALE_EXT', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_MATRIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_READ_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_READ_BUFFER_EXT', 'Graphics.GL.Ext.NV.ReadBuffer.GL_READ_BUFFER_NV', 'Graphics.GL.Internal.Shared.GL_RED_BIAS', 'Graphics.GL.Internal.Shared.GL_RED_BITS', 'Graphics.GL.Internal.Shared.GL_RED_SCALE', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_EQUATION_SGIX', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Internal.Shared.GL_RENDER_MODE', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Internal.Shared.GL_RGBA_MODE', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLES_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_BUFFERS_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_INVERT_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_VALUE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_PATTERN_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_BOX', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Internal.Shared.GL_SELECTION_BUFFER_SIZE', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_SHADE_MODEL', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_RANGE', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_AXIS_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_MODE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_TRANSLATION_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_BITS', 'Graphics.GL.Internal.Shared.GL_STENCIL_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_STENCIL_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_FUNC', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_PASS', 'Graphics.GL.Internal.Shared.GL_STENCIL_REF', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_STENCIL_VALUE_MASK', 'Graphics.GL.Internal.Shared.GL_STENCIL_WRITEMASK', 'Graphics.GL.Internal.Shared.GL_STEREO', 'Graphics.GL.Internal.Shared.GL_SUBPIXEL_BITS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_3D_BINDING_EXT', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_3D', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_TEXTURE_COORD_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MATRIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_UNPACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_UNPACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_UNPACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_UNPACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_VERTEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_TYPE', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_HINT_SGIX', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_SGIX', 'Graphics.GL.Internal.Shared.GL_VIEWPORT', 'Graphics.GL.Internal.Shared.GL_ZOOM_X', 'Graphics.GL.Internal.Shared.GL_ZOOM_Y'.
--
-- The parameter @data@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @data@ should be @COMPSIZE(pname)@.


glGetBooleanv :: MonadIO m => GLenum -> Ptr GLboolean -> m ()
glGetBooleanv = ffienumPtrbooleanIOV glGetBooleanvFunPtr

glGetBooleanvFunPtr :: FunPtr (GLenum -> Ptr GLboolean -> IO ())
glGetBooleanvFunPtr = unsafePerformIO (getProcAddress "glGetBooleanv")

{-# NOINLINE glGetBooleanvFunPtr #-}

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


glGetBufferParameteri64v :: MonadIO m => GLenum -> GLenum -> Ptr GLint64 -> m ()
glGetBufferParameteri64v = ffienumenumPtrint64IOV glGetBufferParameteri64vFunPtr

glGetBufferParameteri64vFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint64 -> IO ())
glGetBufferParameteri64vFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameteri64v")

{-# NOINLINE glGetBufferParameteri64vFunPtr #-}

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


glGetBufferParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetBufferParameteriv = ffienumenumPtrintIOV glGetBufferParameterivFunPtr

glGetBufferParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetBufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetBufferParameteriv")

{-# NOINLINE glGetBufferParameterivFunPtr #-}

-- | Usage: @'glGetBufferPointerv' target pname params@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @pname@ is a @BufferPointerNameARB@.
--
-- The length of @params@ should be @1@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetBufferPointerv.xhtml>


glGetBufferPointerv :: MonadIO m => GLenum -> GLenum -> Ptr (Ptr ()) -> m ()
glGetBufferPointerv = ffienumenumPtrPtrVIOV glGetBufferPointervFunPtr

glGetBufferPointervFunPtr :: FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetBufferPointervFunPtr = unsafePerformIO (getProcAddress "glGetBufferPointerv")

{-# NOINLINE glGetBufferPointervFunPtr #-}

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


glGetBufferSubData :: MonadIO m => GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
glGetBufferSubData = ffienumintptrsizeiptrPtrVIOV glGetBufferSubDataFunPtr

glGetBufferSubDataFunPtr :: FunPtr (GLenum -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
glGetBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glGetBufferSubData")

{-# NOINLINE glGetBufferSubDataFunPtr #-}

-- | Usage: @'glGetCompressedTexImage' target level img@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @img@ is a @CompressedTextureARB@.
--
-- The length of @img@ should be @COMPSIZE(target,level)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetCompressedTexImage.xhtml>


glGetCompressedTexImage :: MonadIO m => GLenum -> GLint -> Ptr () -> m ()
glGetCompressedTexImage = ffienumintPtrVIOV glGetCompressedTexImageFunPtr

glGetCompressedTexImageFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glGetCompressedTexImageFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTexImage")

{-# NOINLINE glGetCompressedTexImageFunPtr #-}

-- | Usage: @'glGetDoublev' pname data@
--
-- The parameter @pname@ is a @GetPName@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_ACCUM_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_RED_BITS', 'Graphics.GL.Internal.Shared.GL_ALIASED_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_ALIASED_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_ALPHA_BIAS', 'Graphics.GL.Internal.Shared.GL_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ALPHA_SCALE', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_FUNC', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_FUNC_QCOM', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_QCOM', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_REF', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_REF_QCOM', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.Async.GL_ASYNC_MARKER_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_AUX_BUFFERS', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.EXT.BlendColor.GL_BLEND_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_DST', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_BLEND_EQUATION_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_SRC', 'Graphics.GL.Internal.Shared.GL_BLUE_BIAS', 'Graphics.GL.Internal.Shared.GL_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_BLUE_SCALE', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_COLOR_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_COLOR_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_FACE', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_PARAMETER', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_COLOR_WRITEMASK', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Ext.SGIX.ConvolutionAccuracy.GL_CONVOLUTION_HINT_SGIX', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_CULL_FACE_MODE', 'Graphics.GL.Internal.Shared.GL_CURRENT_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_NORMAL', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_DISTANCE', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION_VALID', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_TEXTURE_COORDS', 'Graphics.GL.Internal.Shared.GL_CURRENT_TEXTURE_COORDS', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_DEFORMATIONS_MASK_SGIX', 'Graphics.GL.Internal.Shared.GL_DEPTH_BIAS', 'Graphics.GL.Internal.Shared.GL_DEPTH_BITS', 'Graphics.GL.Internal.Shared.GL_DEPTH_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_DEPTH_FUNC', 'Graphics.GL.Internal.Shared.GL_DEPTH_RANGE', 'Graphics.GL.Internal.Shared.GL_DEPTH_SCALE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DEPTH_WRITEMASK', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_DISTANCE_ATTENUATION_SGIS', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_DOUBLEBUFFER', 'Graphics.GL.Internal.Shared.GL_DRAW_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_DRAW_BUFFER_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_EDGE_FLAG_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_SIZE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_TYPE', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Ext.SGIS.FogFunction.GL_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Internal.Shared.GL_FOG_HINT', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Internal.Shared.GL_FRONT_FACE', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_HINT_SGIS', 'Graphics.GL.Internal.Shared.GL_GREEN_BIAS', 'Graphics.GL.Internal.Shared.GL_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_GREEN_SCALE', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_INDEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_INDEX_BITS', 'Graphics.GL.Internal.Shared.GL_INDEX_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_INDEX_MODE', 'Graphics.GL.Internal.Shared.GL_INDEX_OFFSET', 'Graphics.GL.Internal.Shared.GL_INDEX_SHIFT', 'Graphics.GL.Internal.Shared.GL_INDEX_WRITEMASK', 'Graphics.GL.Ext.SGIX.Instruments.GL_INSTRUMENT_MEASUREMENTS_SGIX', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_LIGHT_ENV_MODE_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_PATTERN', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_REPEAT', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_LIST_BASE', 'Graphics.GL.Internal.Shared.GL_LIST_INDEX', 'Graphics.GL.Internal.Shared.GL_LIST_MODE', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP_MODE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP_COLOR', 'Graphics.GL.Internal.Shared.GL_MAP_STENCIL', 'Graphics.GL.Internal.Shared.GL_MATRIX_MODE', 'Graphics.GL.Ext.EXT.Texture3D.GL_MAX_3D_TEXTURE_SIZE_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_MAX_4D_TEXTURE_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_ACTIVE_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_MAX_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_DISTANCES', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_PLANES', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Internal.Shared.GL_MAX_EVAL_ORDER', 'Graphics.GL.Ext.SGIS.FogFunction.GL_MAX_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_FRAGMENT_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_MAX_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_LIGHTS', 'Graphics.GL.Internal.Shared.GL_MAX_LIST_NESTING', 'Graphics.GL.Internal.Shared.GL_MAX_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_PIXEL_MAP_TABLE', 'Graphics.GL.Internal.Shared.GL_MAX_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_SIZE', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_VIEWPORT_DIMS', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_MATRIX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_STACK_DEPTH_EXT', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_MATRIX', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_NORMAL_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_PACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_PACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_PACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_PACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_PERSPECTIVE_CORRECTION_HINT', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S_SIZE', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_MODE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_INCREMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_SIZE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_WIDTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_WIDTH_SGIX', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_FADE_THRESHOLD_SIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_GRANULARITY', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MAX_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MIN_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_MODE', 'Graphics.GL.Ext.EXT.PolygonOffset.GL_POLYGON_OFFSET_BIAS_EXT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FACTOR', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_UNITS', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_SCALE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_SCALE_EXT', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_SCALE_EXT', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_MATRIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_READ_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_READ_BUFFER_EXT', 'Graphics.GL.Ext.NV.ReadBuffer.GL_READ_BUFFER_NV', 'Graphics.GL.Internal.Shared.GL_RED_BIAS', 'Graphics.GL.Internal.Shared.GL_RED_BITS', 'Graphics.GL.Internal.Shared.GL_RED_SCALE', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_EQUATION_SGIX', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Internal.Shared.GL_RENDER_MODE', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Internal.Shared.GL_RGBA_MODE', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLES_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_BUFFERS_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_INVERT_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_VALUE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_PATTERN_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_BOX', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Internal.Shared.GL_SELECTION_BUFFER_SIZE', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_SHADE_MODEL', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_RANGE', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_AXIS_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_MODE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_TRANSLATION_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_BITS', 'Graphics.GL.Internal.Shared.GL_STENCIL_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_STENCIL_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_FUNC', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_PASS', 'Graphics.GL.Internal.Shared.GL_STENCIL_REF', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_STENCIL_VALUE_MASK', 'Graphics.GL.Internal.Shared.GL_STENCIL_WRITEMASK', 'Graphics.GL.Internal.Shared.GL_STEREO', 'Graphics.GL.Internal.Shared.GL_SUBPIXEL_BITS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_3D_BINDING_EXT', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_3D', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_TEXTURE_COORD_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MATRIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_UNPACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_UNPACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_UNPACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_UNPACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_VERTEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_TYPE', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_HINT_SGIX', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_SGIX', 'Graphics.GL.Internal.Shared.GL_VIEWPORT', 'Graphics.GL.Internal.Shared.GL_ZOOM_X', 'Graphics.GL.Internal.Shared.GL_ZOOM_Y'.
--
-- The length of @data@ should be @COMPSIZE(pname)@.


glGetDoublev :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glGetDoublev = ffienumPtrdoubleIOV glGetDoublevFunPtr

glGetDoublevFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glGetDoublevFunPtr = unsafePerformIO (getProcAddress "glGetDoublev")

{-# NOINLINE glGetDoublevFunPtr #-}

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


glGetError :: MonadIO m => m GLenum
glGetError = ffiIOenum glGetErrorFunPtr

glGetErrorFunPtr :: FunPtr (IO GLenum)
glGetErrorFunPtr = unsafePerformIO (getProcAddress "glGetError")

{-# NOINLINE glGetErrorFunPtr #-}

-- | Usage: @'glGetFloatv' pname data@
--
-- The parameter @pname@ is a @GetPName@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_ACCUM_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_RED_BITS', 'Graphics.GL.Internal.Shared.GL_ALIASED_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_ALIASED_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_ALPHA_BIAS', 'Graphics.GL.Internal.Shared.GL_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ALPHA_SCALE', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_FUNC', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_FUNC_QCOM', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_QCOM', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_REF', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_REF_QCOM', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.Async.GL_ASYNC_MARKER_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_AUX_BUFFERS', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.EXT.BlendColor.GL_BLEND_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_DST', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_BLEND_EQUATION_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_SRC', 'Graphics.GL.Internal.Shared.GL_BLUE_BIAS', 'Graphics.GL.Internal.Shared.GL_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_BLUE_SCALE', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_COLOR_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_COLOR_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_FACE', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_PARAMETER', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_COLOR_WRITEMASK', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Ext.SGIX.ConvolutionAccuracy.GL_CONVOLUTION_HINT_SGIX', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_CULL_FACE_MODE', 'Graphics.GL.Internal.Shared.GL_CURRENT_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_NORMAL', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_DISTANCE', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION_VALID', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_TEXTURE_COORDS', 'Graphics.GL.Internal.Shared.GL_CURRENT_TEXTURE_COORDS', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_DEFORMATIONS_MASK_SGIX', 'Graphics.GL.Internal.Shared.GL_DEPTH_BIAS', 'Graphics.GL.Internal.Shared.GL_DEPTH_BITS', 'Graphics.GL.Internal.Shared.GL_DEPTH_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_DEPTH_FUNC', 'Graphics.GL.Internal.Shared.GL_DEPTH_RANGE', 'Graphics.GL.Internal.Shared.GL_DEPTH_SCALE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DEPTH_WRITEMASK', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_DISTANCE_ATTENUATION_SGIS', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_DOUBLEBUFFER', 'Graphics.GL.Internal.Shared.GL_DRAW_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_DRAW_BUFFER_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_EDGE_FLAG_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_SIZE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_TYPE', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Ext.SGIS.FogFunction.GL_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Internal.Shared.GL_FOG_HINT', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Internal.Shared.GL_FRONT_FACE', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_HINT_SGIS', 'Graphics.GL.Internal.Shared.GL_GREEN_BIAS', 'Graphics.GL.Internal.Shared.GL_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_GREEN_SCALE', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_INDEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_INDEX_BITS', 'Graphics.GL.Internal.Shared.GL_INDEX_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_INDEX_MODE', 'Graphics.GL.Internal.Shared.GL_INDEX_OFFSET', 'Graphics.GL.Internal.Shared.GL_INDEX_SHIFT', 'Graphics.GL.Internal.Shared.GL_INDEX_WRITEMASK', 'Graphics.GL.Ext.SGIX.Instruments.GL_INSTRUMENT_MEASUREMENTS_SGIX', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_LIGHT_ENV_MODE_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_PATTERN', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_REPEAT', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_LIST_BASE', 'Graphics.GL.Internal.Shared.GL_LIST_INDEX', 'Graphics.GL.Internal.Shared.GL_LIST_MODE', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP_MODE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP_COLOR', 'Graphics.GL.Internal.Shared.GL_MAP_STENCIL', 'Graphics.GL.Internal.Shared.GL_MATRIX_MODE', 'Graphics.GL.Ext.EXT.Texture3D.GL_MAX_3D_TEXTURE_SIZE_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_MAX_4D_TEXTURE_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_ACTIVE_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_MAX_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_DISTANCES', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_PLANES', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Internal.Shared.GL_MAX_EVAL_ORDER', 'Graphics.GL.Ext.SGIS.FogFunction.GL_MAX_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_FRAGMENT_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_MAX_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_LIGHTS', 'Graphics.GL.Internal.Shared.GL_MAX_LIST_NESTING', 'Graphics.GL.Internal.Shared.GL_MAX_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_PIXEL_MAP_TABLE', 'Graphics.GL.Internal.Shared.GL_MAX_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_SIZE', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_VIEWPORT_DIMS', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_MATRIX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_STACK_DEPTH_EXT', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_MATRIX', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_NORMAL_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_PACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_PACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_PACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_PACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_PERSPECTIVE_CORRECTION_HINT', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S_SIZE', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_MODE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_INCREMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_SIZE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_WIDTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_WIDTH_SGIX', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_FADE_THRESHOLD_SIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_GRANULARITY', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MAX_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MIN_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_MODE', 'Graphics.GL.Ext.EXT.PolygonOffset.GL_POLYGON_OFFSET_BIAS_EXT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FACTOR', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_UNITS', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_SCALE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_SCALE_EXT', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_SCALE_EXT', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_MATRIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_READ_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_READ_BUFFER_EXT', 'Graphics.GL.Ext.NV.ReadBuffer.GL_READ_BUFFER_NV', 'Graphics.GL.Internal.Shared.GL_RED_BIAS', 'Graphics.GL.Internal.Shared.GL_RED_BITS', 'Graphics.GL.Internal.Shared.GL_RED_SCALE', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_EQUATION_SGIX', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Internal.Shared.GL_RENDER_MODE', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Internal.Shared.GL_RGBA_MODE', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLES_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_BUFFERS_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_INVERT_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_VALUE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_PATTERN_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_BOX', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Internal.Shared.GL_SELECTION_BUFFER_SIZE', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_SHADE_MODEL', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_RANGE', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_AXIS_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_MODE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_TRANSLATION_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_BITS', 'Graphics.GL.Internal.Shared.GL_STENCIL_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_STENCIL_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_FUNC', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_PASS', 'Graphics.GL.Internal.Shared.GL_STENCIL_REF', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_STENCIL_VALUE_MASK', 'Graphics.GL.Internal.Shared.GL_STENCIL_WRITEMASK', 'Graphics.GL.Internal.Shared.GL_STEREO', 'Graphics.GL.Internal.Shared.GL_SUBPIXEL_BITS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_3D_BINDING_EXT', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_3D', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_TEXTURE_COORD_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MATRIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_UNPACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_UNPACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_UNPACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_UNPACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_VERTEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_TYPE', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_HINT_SGIX', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_SGIX', 'Graphics.GL.Internal.Shared.GL_VIEWPORT', 'Graphics.GL.Internal.Shared.GL_ZOOM_X', 'Graphics.GL.Internal.Shared.GL_ZOOM_Y'.
--
-- The length of @data@ should be @COMPSIZE(pname)@.


glGetFloatv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glGetFloatv = ffienumPtrfloatIOV glGetFloatvFunPtr

glGetFloatvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glGetFloatvFunPtr = unsafePerformIO (getProcAddress "glGetFloatv")

{-# NOINLINE glGetFloatvFunPtr #-}

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


glGetFragDataLocation :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetFragDataLocation = ffiuintPtrcharIOint glGetFragDataLocationFunPtr

glGetFragDataLocationFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetFragDataLocationFunPtr = unsafePerformIO (getProcAddress "glGetFragDataLocation")

{-# NOINLINE glGetFragDataLocationFunPtr #-}

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


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

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

{-# NOINLINE glGetFramebufferAttachmentParameterivFunPtr #-}

-- | Usage: @'glGetInteger64i_v' target index data@
--
-- The length of @data@ should be @COMPSIZE(target)@.


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

-- | Usage: @'glGetInteger64v' pname data@
--
-- The length of @data@ should be @COMPSIZE(pname)@.


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

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

{-# NOINLINE glGetInteger64vFunPtr #-}

-- | Usage: @'glGetIntegeri_v' target index data@
--
-- The length of @data@ should be @COMPSIZE(target)@.


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

-- | Usage: @'glGetIntegerv' pname data@
--
-- The parameter @pname@ is a @GetPName@, one of: 'Graphics.GL.Internal.Shared.GL_ACCUM_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_ACCUM_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_ACCUM_RED_BITS', 'Graphics.GL.Internal.Shared.GL_ALIASED_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_ALIASED_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_ALPHA_BIAS', 'Graphics.GL.Internal.Shared.GL_ALPHA_BITS', 'Graphics.GL.Internal.Shared.GL_ALPHA_SCALE', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_FUNC', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_FUNC_QCOM', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_QCOM', 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST_REF', 'Graphics.GL.Ext.QCOM.AlphaTest.GL_ALPHA_TEST_REF_QCOM', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.Async.GL_ASYNC_MARKER_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_AUX_BUFFERS', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.EXT.BlendColor.GL_BLEND_COLOR_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_DST', 'Graphics.GL.Ext.EXT.BlendMinmax.GL_BLEND_EQUATION_EXT', 'Graphics.GL.Internal.Shared.GL_BLEND_SRC', 'Graphics.GL.Internal.Shared.GL_BLUE_BIAS', 'Graphics.GL.Internal.Shared.GL_BLUE_BITS', 'Graphics.GL.Internal.Shared.GL_BLUE_SCALE', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_COLOR_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_COLOR_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_FACE', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL_PARAMETER', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_COLOR_WRITEMASK', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Ext.SGIX.ConvolutionAccuracy.GL_CONVOLUTION_HINT_SGIX', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_CULL_FACE_MODE', 'Graphics.GL.Internal.Shared.GL_CURRENT_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_NORMAL', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_COLOR', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_DISTANCE', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_INDEX', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_POSITION_VALID', 'Graphics.GL.Internal.Shared.GL_CURRENT_RASTER_TEXTURE_COORDS', 'Graphics.GL.Internal.Shared.GL_CURRENT_TEXTURE_COORDS', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_DEFORMATIONS_MASK_SGIX', 'Graphics.GL.Internal.Shared.GL_DEPTH_BIAS', 'Graphics.GL.Internal.Shared.GL_DEPTH_BITS', 'Graphics.GL.Internal.Shared.GL_DEPTH_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_DEPTH_FUNC', 'Graphics.GL.Internal.Shared.GL_DEPTH_RANGE', 'Graphics.GL.Internal.Shared.GL_DEPTH_SCALE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DEPTH_WRITEMASK', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_DISTANCE_ATTENUATION_SGIS', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_DOUBLEBUFFER', 'Graphics.GL.Internal.Shared.GL_DRAW_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_DRAW_BUFFER_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_EDGE_FLAG_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_SIZE', 'Graphics.GL.Internal.Shared.GL_FEEDBACK_BUFFER_TYPE', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Internal.Shared.GL_FOG_COLOR', 'Graphics.GL.Internal.Shared.GL_FOG_DENSITY', 'Graphics.GL.Internal.Shared.GL_FOG_END', 'Graphics.GL.Ext.SGIS.FogFunction.GL_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Internal.Shared.GL_FOG_HINT', 'Graphics.GL.Internal.Shared.GL_FOG_INDEX', 'Graphics.GL.Internal.Shared.GL_FOG_MODE', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_VALUE_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_START', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Internal.Shared.GL_FRONT_FACE', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_HINT_SGIS', 'Graphics.GL.Internal.Shared.GL_GREEN_BIAS', 'Graphics.GL.Internal.Shared.GL_GREEN_BITS', 'Graphics.GL.Internal.Shared.GL_GREEN_SCALE', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_INDEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_INDEX_BITS', 'Graphics.GL.Internal.Shared.GL_INDEX_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_INDEX_MODE', 'Graphics.GL.Internal.Shared.GL_INDEX_OFFSET', 'Graphics.GL.Internal.Shared.GL_INDEX_SHIFT', 'Graphics.GL.Internal.Shared.GL_INDEX_WRITEMASK', 'Graphics.GL.Ext.SGIX.Instruments.GL_INSTRUMENT_MEASUREMENTS_SGIX', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_LIGHT_ENV_MODE_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_AMBIENT', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_COLOR_CONTROL', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_LOCAL_VIEWER', 'Graphics.GL.Internal.Shared.GL_LIGHT_MODEL_TWO_SIDE', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_PATTERN', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE_REPEAT', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_LIST_BASE', 'Graphics.GL.Internal.Shared.GL_LIST_INDEX', 'Graphics.GL.Internal.Shared.GL_LIST_MODE', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_LOGIC_OP_MODE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP1_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_DOMAIN', 'Graphics.GL.Internal.Shared.GL_MAP2_GRID_SEGMENTS', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP_COLOR', 'Graphics.GL.Internal.Shared.GL_MAP_STENCIL', 'Graphics.GL.Internal.Shared.GL_MATRIX_MODE', 'Graphics.GL.Ext.EXT.Texture3D.GL_MAX_3D_TEXTURE_SIZE_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_MAX_4D_TEXTURE_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_ACTIVE_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_MAX_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_MAX_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_ATTRIB_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_CLIENT_ATTRIB_STACK_DEPTH', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_DISTANCES', 'Graphics.GL.Internal.Shared.GL_MAX_CLIP_PLANES', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI', 'Graphics.GL.Internal.Shared.GL_MAX_EVAL_ORDER', 'Graphics.GL.Ext.SGIS.FogFunction.GL_MAX_FOG_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_MAX_FRAGMENT_LIGHTS_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_MAX_FRAMEZOOM_FACTOR_SGIX', 'Graphics.GL.Internal.Shared.GL_MAX_LIGHTS', 'Graphics.GL.Internal.Shared.GL_MAX_LIST_NESTING', 'Graphics.GL.Internal.Shared.GL_MAX_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_PIXEL_MAP_TABLE', 'Graphics.GL.Internal.Shared.GL_MAX_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_SIZE', 'Graphics.GL.Internal.Shared.GL_MAX_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_MAX_VIEWPORT_DIMS', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_MATRIX_EXT', 'Graphics.GL.Ext.EXT.VertexWeighting.GL_MODELVIEW0_STACK_DEPTH_EXT', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_MATRIX', 'Graphics.GL.Internal.Shared.GL_MODELVIEW_STACK_DEPTH', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NAME_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_NORMAL_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_PACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_PACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_PACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_PACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_PERSPECTIVE_CORRECTION_HINT', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_A_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_B_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_G_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_A_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_B_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_G_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_I_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_I_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_R_TO_R_SIZE', 'Graphics.GL.Internal.Shared.GL_PIXEL_MAP_S_TO_S_SIZE', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_MODE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_INCREMENT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_SIZE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_WIDTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_WIDTH_SGIX', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_FADE_THRESHOLD_SIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_GRANULARITY', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MAX_SGIS', 'Graphics.GL.Ext.SGIS.PointParameters.GL_POINT_SIZE_MIN_SGIS', 'Graphics.GL.Internal.Shared.GL_POINT_SIZE_RANGE', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_MODE', 'Graphics.GL.Ext.EXT.PolygonOffset.GL_POLYGON_OFFSET_BIAS_EXT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FACTOR', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_UNITS', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_BIAS_SGI', 'Graphics.GL.Ext.SGI.ColorMatrix.GL_POST_COLOR_MATRIX_RED_SCALE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_ALPHA_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_BLUE_SCALE_EXT', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_GREEN_SCALE_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_BIAS_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_POST_CONVOLUTION_RED_SCALE_EXT', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_MATRIX', 'Graphics.GL.Internal.Shared.GL_PROJECTION_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_READ_BUFFER', 'Graphics.GL.Ext.EXT.MultiviewDrawBuffers.GL_READ_BUFFER_EXT', 'Graphics.GL.Ext.NV.ReadBuffer.GL_READ_BUFFER_NV', 'Graphics.GL.Internal.Shared.GL_RED_BIAS', 'Graphics.GL.Internal.Shared.GL_RED_BITS', 'Graphics.GL.Internal.Shared.GL_RED_SCALE', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_EQUATION_SGIX', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Internal.Shared.GL_RENDER_MODE', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Internal.Shared.GL_RGBA_MODE', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLES_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_BUFFERS_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_INVERT_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_VALUE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_PATTERN_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_BOX', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Internal.Shared.GL_SELECTION_BUFFER_SIZE', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_SHADE_MODEL', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_LINE_WIDTH_RANGE', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_GRANULARITY', 'Graphics.GL.Internal.Shared.GL_SMOOTH_POINT_SIZE_RANGE', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_AXIS_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_MODE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_TRANSLATION_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_BITS', 'Graphics.GL.Internal.Shared.GL_STENCIL_CLEAR_VALUE', 'Graphics.GL.Internal.Shared.GL_STENCIL_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_FUNC', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_FAIL', 'Graphics.GL.Internal.Shared.GL_STENCIL_PASS_DEPTH_PASS', 'Graphics.GL.Internal.Shared.GL_STENCIL_REF', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_STENCIL_VALUE_MASK', 'Graphics.GL.Internal.Shared.GL_STENCIL_WRITEMASK', 'Graphics.GL.Internal.Shared.GL_STEREO', 'Graphics.GL.Internal.Shared.GL_SUBPIXEL_BITS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_3D_BINDING_EXT', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_BINDING_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BINDING_3D', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_TEXTURE_COORD_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY_TYPE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MATRIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_STACK_DEPTH', 'Graphics.GL.Internal.Shared.GL_UNPACK_ALIGNMENT', 'Graphics.GL.Ext.EXT.Cmyka.GL_UNPACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_LSB_FIRST', 'Graphics.GL.Ext.SGIX.Resample.GL_UNPACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_UNPACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_SWAP_BYTES', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY', 'Graphics.GL.Ext.EXT.VertexArray.GL_VERTEX_ARRAY_COUNT_EXT', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_SIZE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_STRIDE', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY_TYPE', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_HINT_SGIX', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_SGIX', 'Graphics.GL.Internal.Shared.GL_VIEWPORT', 'Graphics.GL.Internal.Shared.GL_ZOOM_X', 'Graphics.GL.Internal.Shared.GL_ZOOM_Y'.
--
-- The length of @data@ should be @COMPSIZE(pname)@.


glGetIntegerv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glGetIntegerv = ffienumPtrintIOV glGetIntegervFunPtr

glGetIntegervFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glGetIntegervFunPtr = unsafePerformIO (getProcAddress "glGetIntegerv")

{-# NOINLINE glGetIntegervFunPtr #-}

-- | Usage: @'glGetMultisamplefv' pname index val@
--
-- The length of @val@ should be @COMPSIZE(pname)@.


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

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

{-# NOINLINE glGetMultisamplefvFunPtr #-}

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


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

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


glGetProgramiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetProgramiv = ffiuintenumPtrintIOV glGetProgramivFunPtr

glGetProgramivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetProgramivFunPtr = unsafePerformIO (getProcAddress "glGetProgramiv")

{-# NOINLINE glGetProgramivFunPtr #-}

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


glGetQueryObjectiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetQueryObjectiv = ffiuintenumPtrintIOV glGetQueryObjectivFunPtr

glGetQueryObjectivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetQueryObjectivFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectiv")

{-# NOINLINE glGetQueryObjectivFunPtr #-}

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


glGetQueryObjectuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetQueryObjectuiv = ffiuintenumPtruintIOV glGetQueryObjectuivFunPtr

glGetQueryObjectuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetQueryObjectuivFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectuiv")

{-# NOINLINE glGetQueryObjectuivFunPtr #-}

-- | Usage: @'glGetQueryiv' target pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetQueryiv.xhtml>


glGetQueryiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetQueryiv = ffienumenumPtrintIOV glGetQueryivFunPtr

glGetQueryivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetQueryivFunPtr = unsafePerformIO (getProcAddress "glGetQueryiv")

{-# NOINLINE glGetQueryivFunPtr #-}

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


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

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

{-# NOINLINE glGetRenderbufferParameterivFunPtr #-}

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


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

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


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

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


glGetShaderiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetShaderiv = ffiuintenumPtrintIOV glGetShaderivFunPtr

glGetShaderivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetShaderivFunPtr = unsafePerformIO (getProcAddress "glGetShaderiv")

{-# NOINLINE glGetShaderivFunPtr #-}

-- | Usage: @'glGetString' name@
--
-- The parameter @name@ is a @StringName@, one of: 'Graphics.GL.Internal.Shared.GL_EXTENSIONS', 'Graphics.GL.Internal.Shared.GL_RENDERER', 'Graphics.GL.Internal.Shared.GL_VENDOR', 'Graphics.GL.Internal.Shared.GL_VERSION'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetString.xhtml>


glGetString :: MonadIO m => GLenum -> m (Ptr GLubyte)
glGetString = ffienumIOPtrubyte glGetStringFunPtr

glGetStringFunPtr :: FunPtr (GLenum -> IO (Ptr GLubyte))
glGetStringFunPtr = unsafePerformIO (getProcAddress "glGetString")

{-# NOINLINE glGetStringFunPtr #-}

-- | Usage: @'glGetStringi' name index@


glGetStringi :: MonadIO m => GLenum -> GLuint -> m (Ptr GLubyte)
glGetStringi = ffienumuintIOPtrubyte glGetStringiFunPtr

glGetStringiFunPtr :: FunPtr (GLenum -> GLuint -> IO (Ptr GLubyte))
glGetStringiFunPtr = unsafePerformIO (getProcAddress "glGetStringi")

{-# NOINLINE glGetStringiFunPtr #-}

-- | Usage: @'glGetSynciv' sync pname bufSize length values@
--
-- The parameter @sync@ is a @sync@.
--
-- The length of @length@ should be @1@.
--
-- The length of @values@ should be @bufSize@.


glGetSynciv :: MonadIO m => GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> m ()
glGetSynciv = ffisyncenumsizeiPtrsizeiPtrintIOV glGetSyncivFunPtr

glGetSyncivFunPtr :: FunPtr (GLsync -> GLenum -> GLsizei -> Ptr GLsizei -> Ptr GLint -> IO ())
glGetSyncivFunPtr = unsafePerformIO (getProcAddress "glGetSynciv")

{-# NOINLINE glGetSyncivFunPtr #-}

-- | Usage: @'glGetTexImage' target level format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(target,level,format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetTexImage.xhtml>


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

-- | Usage: @'glGetTexLevelParameterfv' target level pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


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

-- | Usage: @'glGetTexLevelParameteriv' target level pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


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

-- | Usage: @'glGetTexParameterIiv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexParameterIiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexParameterIiv = ffienumenumPtrintIOV glGetTexParameterIivFunPtr

glGetTexParameterIivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexParameterIivFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIiv")

{-# NOINLINE glGetTexParameterIivFunPtr #-}

-- | Usage: @'glGetTexParameterIuiv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexParameterIuiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glGetTexParameterIuiv = ffienumenumPtruintIOV glGetTexParameterIuivFunPtr

glGetTexParameterIuivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glGetTexParameterIuivFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIuiv")

{-# NOINLINE glGetTexParameterIuivFunPtr #-}

-- | Usage: @'glGetTexParameterfv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetTexParameterfv = ffienumenumPtrfloatIOV glGetTexParameterfvFunPtr

glGetTexParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetTexParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterfv")

{-# NOINLINE glGetTexParameterfvFunPtr #-}

-- | Usage: @'glGetTexParameteriv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexParameteriv = ffienumenumPtrintIOV glGetTexParameterivFunPtr

glGetTexParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTexParameteriv")

{-# NOINLINE glGetTexParameterivFunPtr #-}

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


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

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


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

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

{-# NOINLINE glGetUniformBlockIndexFunPtr #-}

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


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

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

{-# NOINLINE glGetUniformIndicesFunPtr #-}

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


glGetUniformLocation :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetUniformLocation = ffiuintPtrcharIOint glGetUniformLocationFunPtr

glGetUniformLocationFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetUniformLocationFunPtr = unsafePerformIO (getProcAddress "glGetUniformLocation")

{-# NOINLINE glGetUniformLocationFunPtr #-}

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


glGetUniformfv :: MonadIO m => GLuint -> GLint -> Ptr GLfloat -> m ()
glGetUniformfv = ffiuintintPtrfloatIOV glGetUniformfvFunPtr

glGetUniformfvFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLfloat -> IO ())
glGetUniformfvFunPtr = unsafePerformIO (getProcAddress "glGetUniformfv")

{-# NOINLINE glGetUniformfvFunPtr #-}

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


glGetUniformiv :: MonadIO m => GLuint -> GLint -> Ptr GLint -> m ()
glGetUniformiv = ffiuintintPtrintIOV glGetUniformivFunPtr

glGetUniformivFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLint -> IO ())
glGetUniformivFunPtr = unsafePerformIO (getProcAddress "glGetUniformiv")

{-# NOINLINE glGetUniformivFunPtr #-}

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


glGetUniformuiv :: MonadIO m => GLuint -> GLint -> Ptr GLuint -> m ()
glGetUniformuiv = ffiuintintPtruintIOV glGetUniformuivFunPtr

glGetUniformuivFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint -> IO ())
glGetUniformuivFunPtr = unsafePerformIO (getProcAddress "glGetUniformuiv")

{-# NOINLINE glGetUniformuivFunPtr #-}

-- | Usage: @'glGetVertexAttribIiv' index pname params@
--
-- The parameter @pname@ is a @VertexAttribEnum@.
--
-- The length of @params@ should be @1@.


glGetVertexAttribIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribIiv = ffiuintenumPtrintIOV glGetVertexAttribIivFunPtr

glGetVertexAttribIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribIivFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIiv")

{-# NOINLINE glGetVertexAttribIivFunPtr #-}

-- | Usage: @'glGetVertexAttribIuiv' index pname params@
--
-- The parameter @pname@ is a @VertexAttribEnum@.
--
-- The length of @params@ should be @1@.


glGetVertexAttribIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetVertexAttribIuiv = ffiuintenumPtruintIOV glGetVertexAttribIuivFunPtr

glGetVertexAttribIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetVertexAttribIuivFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIuiv")

{-# NOINLINE glGetVertexAttribIuivFunPtr #-}

-- | Usage: @'glGetVertexAttribPointerv' index pname pointer@
--
-- The parameter @pname@ is a @VertexAttribPointerPropertyARB@.
--
-- The length of @pointer@ should be @1@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetVertexAttribPointerv.xhtml>


glGetVertexAttribPointerv :: MonadIO m => GLuint -> GLenum -> Ptr (Ptr ()) -> m ()
glGetVertexAttribPointerv = ffiuintenumPtrPtrVIOV glGetVertexAttribPointervFunPtr

glGetVertexAttribPointervFunPtr :: FunPtr (GLuint -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetVertexAttribPointervFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribPointerv")

{-# NOINLINE glGetVertexAttribPointervFunPtr #-}

-- | Usage: @'glGetVertexAttribdv' index pname params@
--
-- The parameter @pname@ is a @VertexAttribPropertyARB@.
--
-- The length of @params@ should be @4@.


glGetVertexAttribdv :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
glGetVertexAttribdv = ffiuintenumPtrdoubleIOV glGetVertexAttribdvFunPtr

glGetVertexAttribdvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
glGetVertexAttribdvFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribdv")

{-# NOINLINE glGetVertexAttribdvFunPtr #-}

-- | Usage: @'glGetVertexAttribfv' index pname params@
--
-- The parameter @pname@ is a @VertexAttribPropertyARB@.
--
-- The length of @params@ should be @4@.


glGetVertexAttribfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetVertexAttribfv = ffiuintenumPtrfloatIOV glGetVertexAttribfvFunPtr

glGetVertexAttribfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetVertexAttribfvFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribfv")

{-# NOINLINE glGetVertexAttribfvFunPtr #-}

-- | Usage: @'glGetVertexAttribiv' index pname params@
--
-- The parameter @pname@ is a @VertexAttribPropertyARB@.
--
-- The length of @params@ should be @4@.


glGetVertexAttribiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribiv = ffiuintenumPtrintIOV glGetVertexAttribivFunPtr

glGetVertexAttribivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribivFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribiv")

{-# NOINLINE glGetVertexAttribivFunPtr #-}

-- | Usage: @'glHint' target mode@
--
-- The parameter @target@ is a @HintTarget@, one of: 'Graphics.GL.Ext.PGI.MiscHints.GL_ALLOW_DRAW_FRG_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_ALLOW_DRAW_MEM_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_ALLOW_DRAW_OBJ_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_ALLOW_DRAW_WIN_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_ALWAYS_FAST_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_ALWAYS_SOFT_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_BACK_NORMALS_HINT_PGI', 'Graphics.GL.Ext.QCOM.BinningControl.GL_BINNING_CONTROL_HINT_QCOM', 'Graphics.GL.Ext.PGI.MiscHints.GL_CLIP_FAR_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_CLIP_NEAR_HINT_PGI', 'Graphics.GL.Ext.EXT.ClipVolumeHint.GL_CLIP_VOLUME_CLIPPING_HINT_EXT', 'Graphics.GL.Ext.PGI.MiscHints.GL_CONSERVE_MEMORY_HINT_PGI', 'Graphics.GL.Ext.SGIX.ConvolutionAccuracy.GL_CONVOLUTION_HINT_SGIX', 'Graphics.GL.Internal.Shared.GL_FOG_HINT', 'Graphics.GL.Internal.Shared.GL_FRAGMENT_SHADER_DERIVATIVE_HINT', 'Graphics.GL.Ext.ARB.FragmentShader.GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB', 'Graphics.GL.Ext.OES.StandardDerivatives.GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES', 'Graphics.GL.Ext.PGI.MiscHints.GL_FULL_STIPPLE_HINT_PGI', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP_HINT', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_HINT_SGIS', @GL_LINE_QUALITY_HINT_SGIX@, 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH_HINT', 'Graphics.GL.Ext.PGI.VertexHints.GL_MATERIAL_SIDE_HINT_PGI', 'Graphics.GL.Ext.PGI.VertexHints.GL_MAX_VERTEX_HINT_PGI', 'Graphics.GL.Ext.NV.MultisampleFilterHint.GL_MULTISAMPLE_FILTER_HINT_NV', 'Graphics.GL.Ext.PGI.MiscHints.GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_NATIVE_GRAPHICS_END_HINT_PGI', 'Graphics.GL.Ext.EXT.Cmyka.GL_PACK_CMYK_HINT_EXT', 'Graphics.GL.Internal.Shared.GL_PERSPECTIVE_CORRECTION_HINT', 'Graphics.GL.Ext.WIN.PhongShading.GL_PHONG_HINT_WIN', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH_HINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH_HINT', 'Graphics.GL.Ext.PGI.MiscHints.GL_PREFER_DOUBLEBUFFER_HINT_PGI', 'Graphics.GL.Internal.Shared.GL_PROGRAM_BINARY_RETRIEVABLE_HINT', 'Graphics.GL.Ext.PGI.MiscHints.GL_RECLAIM_MEMORY_HINT_PGI', 'Graphics.GL.Ext.SGIX.ScalebiasHint.GL_SCALEBIAS_HINT_SGIX', 'Graphics.GL.Ext.PGI.MiscHints.GL_STRICT_DEPTHFUNC_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_STRICT_LIGHTING_HINT_PGI', 'Graphics.GL.Ext.PGI.MiscHints.GL_STRICT_SCISSOR_HINT_PGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPRESSION_HINT', 'Graphics.GL.Ext.ARB.TextureCompression.GL_TEXTURE_COMPRESSION_HINT_ARB', 'Graphics.GL.Ext.SGIX.TextureMultiBuffer.GL_TEXTURE_MULTI_BUFFER_HINT_SGIX', 'Graphics.GL.Ext.APPLE.TextureRange.GL_TEXTURE_STORAGE_HINT_APPLE', 'Graphics.GL.Ext.APPLE.TransformHint.GL_TRANSFORM_HINT_APPLE', 'Graphics.GL.Ext.EXT.Cmyka.GL_UNPACK_CMYK_HINT_EXT', 'Graphics.GL.Ext.APPLE.VertexArrayRange.GL_VERTEX_ARRAY_STORAGE_HINT_APPLE', 'Graphics.GL.Ext.PGI.VertexHints.GL_VERTEX_CONSISTENT_HINT_PGI', 'Graphics.GL.Ext.PGI.VertexHints.GL_VERTEX_DATA_HINT_PGI', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_HINT_SGIX', 'Graphics.GL.Ext.SGIX.VertexPreclip.GL_VERTEX_PRECLIP_SGIX', 'Graphics.GL.Ext.PGI.MiscHints.GL_WIDE_LINE_HINT_PGI'.
--
-- The parameter @mode@ is a @HintMode@, one of: 'Graphics.GL.Internal.Shared.GL_DONT_CARE', 'Graphics.GL.Internal.Shared.GL_FASTEST', 'Graphics.GL.Internal.Shared.GL_NICEST'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glHint.xhtml>


glHint :: MonadIO m => GLenum -> GLenum -> m ()
glHint = ffienumenumIOV glHintFunPtr

glHintFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glHintFunPtr = unsafePerformIO (getProcAddress "glHint")

{-# NOINLINE glHintFunPtr #-}

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


glIsBuffer :: MonadIO m => GLuint -> m GLboolean
glIsBuffer = ffiuintIOboolean glIsBufferFunPtr

glIsBufferFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsBufferFunPtr = unsafePerformIO (getProcAddress "glIsBuffer")

{-# NOINLINE glIsBufferFunPtr #-}

-- | Usage: @'glIsEnabled' cap@
--
-- The parameter @cap@ is a @EnableCap@, one of: 'Graphics.GL.Internal.Shared.GL_ALPHA_TEST', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_DRAW_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncHistogram.GL_ASYNC_HISTOGRAM_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_READ_PIXELS_SGIX', 'Graphics.GL.Ext.SGIX.AsyncPixel.GL_ASYNC_TEX_IMAGE_SGIX', 'Graphics.GL.Internal.Shared.GL_AUTO_NORMAL', 'Graphics.GL.Internal.Shared.GL_BLEND', 'Graphics.GL.Ext.SGIX.CalligraphicFragment.GL_CALLIGRAPHIC_FRAGMENT_SGIX', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE0', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE1', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE2', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE3', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE4', 'Graphics.GL.Internal.Shared.GL_CLIP_PLANE5', 'Graphics.GL.Internal.Shared.GL_COLOR_ARRAY', 'Graphics.GL.Internal.Shared.GL_COLOR_LOGIC_OP', 'Graphics.GL.Internal.Shared.GL_COLOR_MATERIAL', 'Graphics.GL.Ext.SGI.ColorTable.GL_COLOR_TABLE_SGI', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_1D_EXT', 'Graphics.GL.Ext.EXT.Convolution.GL_CONVOLUTION_2D_EXT', 'Graphics.GL.Internal.Shared.GL_CULL_FACE', 'Graphics.GL.Internal.Shared.GL_DEPTH_TEST', 'Graphics.GL.Internal.Shared.GL_DITHER', 'Graphics.GL.Internal.Shared.GL_EDGE_FLAG_ARRAY', 'Graphics.GL.Internal.Shared.GL_FOG', 'Graphics.GL.Ext.SGIX.FogOffset.GL_FOG_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_COLOR_MATERIAL_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT0_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT1_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT2_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT3_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT4_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT5_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT6_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHT7_SGIX', 'Graphics.GL.Ext.SGIX.FragmentLighting.GL_FRAGMENT_LIGHTING_SGIX', 'Graphics.GL.Ext.SGIX.Framezoom.GL_FRAMEZOOM_SGIX', 'Graphics.GL.Ext.EXT.Histogram.GL_HISTOGRAM_EXT', 'Graphics.GL.Internal.Shared.GL_INDEX_ARRAY', 'Graphics.GL.Internal.Shared.GL_INDEX_LOGIC_OP', 'Graphics.GL.Ext.SGIX.Interlace.GL_INTERLACE_SGIX', 'Graphics.GL.Ext.SGIX.IrInstrument1.GL_IR_INSTRUMENT1_SGIX', 'Graphics.GL.Internal.Shared.GL_LIGHT0', 'Graphics.GL.Internal.Shared.GL_LIGHT1', 'Graphics.GL.Internal.Shared.GL_LIGHT2', 'Graphics.GL.Internal.Shared.GL_LIGHT3', 'Graphics.GL.Internal.Shared.GL_LIGHT4', 'Graphics.GL.Internal.Shared.GL_LIGHT5', 'Graphics.GL.Internal.Shared.GL_LIGHT6', 'Graphics.GL.Internal.Shared.GL_LIGHT7', 'Graphics.GL.Internal.Shared.GL_LIGHTING', 'Graphics.GL.Internal.Shared.GL_LINE_SMOOTH', 'Graphics.GL.Internal.Shared.GL_LINE_STIPPLE', 'Graphics.GL.Internal.Shared.GL_MAP1_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP1_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP1_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP1_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP1_VERTEX_4', 'Graphics.GL.Internal.Shared.GL_MAP2_COLOR_4', 'Graphics.GL.Internal.Shared.GL_MAP2_INDEX', 'Graphics.GL.Internal.Shared.GL_MAP2_NORMAL', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_1', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_2', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_3', 'Graphics.GL.Internal.Shared.GL_MAP2_TEXTURE_COORD_4', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_3', 'Graphics.GL.Internal.Shared.GL_MAP2_VERTEX_4', 'Graphics.GL.Ext.EXT.Histogram.GL_MINMAX_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_MULTISAMPLE_SGIS', 'Graphics.GL.Internal.Shared.GL_NORMALIZE', 'Graphics.GL.Internal.Shared.GL_NORMAL_ARRAY', 'Graphics.GL.Ext.SGIS.PixelTexture.GL_PIXEL_TEXTURE_SGIS', 'Graphics.GL.Ext.SGIX.PixelTexture.GL_PIXEL_TEX_GEN_SGIX', 'Graphics.GL.Internal.Shared.GL_POINT_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_FILL', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_LINE', 'Graphics.GL.Internal.Shared.GL_POLYGON_OFFSET_POINT', 'Graphics.GL.Internal.Shared.GL_POLYGON_SMOOTH', 'Graphics.GL.Internal.Shared.GL_POLYGON_STIPPLE', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGI.ColorTable.GL_POST_CONVOLUTION_COLOR_TABLE_SGI', 'Graphics.GL.Ext.SGIX.ReferencePlane.GL_REFERENCE_PLANE_SGIX', 'Graphics.GL.Ext.EXT.RescaleNormal.GL_RESCALE_NORMAL_EXT', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_MASK_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_ALPHA_TO_ONE_SGIS', 'Graphics.GL.Ext.SGIS.Multisample.GL_SAMPLE_MASK_SGIS', 'Graphics.GL.Internal.Shared.GL_SCISSOR_TEST', 'Graphics.GL.Ext.EXT.Convolution.GL_SEPARABLE_2D_EXT', 'Graphics.GL.Ext.EXT.SharedTexturePalette.GL_SHARED_TEXTURE_PALETTE_EXT', 'Graphics.GL.Ext.SGIX.Sprite.GL_SPRITE_SGIX', 'Graphics.GL.Internal.Shared.GL_STENCIL_TEST', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Ext.SGI.TextureColorTable.GL_TEXTURE_COLOR_TABLE_SGI', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COORD_ARRAY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_Q', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_R', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GEN_T', 'Graphics.GL.Internal.Shared.GL_VERTEX_ARRAY'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glIsEnabled.xhtml>


glIsEnabled :: MonadIO m => GLenum -> m GLboolean
glIsEnabled = ffienumIOboolean glIsEnabledFunPtr

glIsEnabledFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsEnabledFunPtr = unsafePerformIO (getProcAddress "glIsEnabled")

{-# NOINLINE glIsEnabledFunPtr #-}

-- | Usage: @'glIsEnabledi' target index@


glIsEnabledi :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsEnabledi = ffienumuintIOboolean glIsEnablediFunPtr

glIsEnablediFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsEnablediFunPtr = unsafePerformIO (getProcAddress "glIsEnabledi")

{-# NOINLINE glIsEnablediFunPtr #-}

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


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

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

{-# NOINLINE glIsFramebufferFunPtr #-}

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


glIsProgram :: MonadIO m => GLuint -> m GLboolean
glIsProgram = ffiuintIOboolean glIsProgramFunPtr

glIsProgramFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramFunPtr = unsafePerformIO (getProcAddress "glIsProgram")

{-# NOINLINE glIsProgramFunPtr #-}

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


glIsQuery :: MonadIO m => GLuint -> m GLboolean
glIsQuery = ffiuintIOboolean glIsQueryFunPtr

glIsQueryFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsQueryFunPtr = unsafePerformIO (getProcAddress "glIsQuery")

{-# NOINLINE glIsQueryFunPtr #-}

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


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

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

{-# NOINLINE glIsRenderbufferFunPtr #-}

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


glIsShader :: MonadIO m => GLuint -> m GLboolean
glIsShader = ffiuintIOboolean glIsShaderFunPtr

glIsShaderFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsShaderFunPtr = unsafePerformIO (getProcAddress "glIsShader")

{-# NOINLINE glIsShaderFunPtr #-}

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


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

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

{-# NOINLINE glIsSyncFunPtr #-}

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


glIsTexture :: MonadIO m => GLuint -> m GLboolean
glIsTexture = ffiuintIOboolean glIsTextureFunPtr

glIsTextureFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsTextureFunPtr = unsafePerformIO (getProcAddress "glIsTexture")

{-# NOINLINE glIsTextureFunPtr #-}

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


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

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

{-# NOINLINE glIsVertexArrayFunPtr #-}

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


glLineWidth :: MonadIO m => GLfloat -> m ()
glLineWidth = ffifloatIOV glLineWidthFunPtr

glLineWidthFunPtr :: FunPtr (GLfloat -> IO ())
glLineWidthFunPtr = unsafePerformIO (getProcAddress "glLineWidth")

{-# NOINLINE glLineWidthFunPtr #-}

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


glLinkProgram :: MonadIO m => GLuint -> m ()
glLinkProgram = ffiuintIOV glLinkProgramFunPtr

glLinkProgramFunPtr :: FunPtr (GLuint -> IO ())
glLinkProgramFunPtr = unsafePerformIO (getProcAddress "glLinkProgram")

{-# NOINLINE glLinkProgramFunPtr #-}

-- | Usage: @'glLogicOp' opcode@
--
-- The parameter @opcode@ is a @LogicOp@, one of: 'Graphics.GL.Internal.Shared.GL_AND', 'Graphics.GL.Internal.Shared.GL_AND_INVERTED', 'Graphics.GL.Internal.Shared.GL_AND_REVERSE', 'Graphics.GL.Internal.Shared.GL_CLEAR', 'Graphics.GL.Internal.Shared.GL_COPY', 'Graphics.GL.Internal.Shared.GL_COPY_INVERTED', 'Graphics.GL.Internal.Shared.GL_EQUIV', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_NAND', 'Graphics.GL.Internal.Shared.GL_NOOP', 'Graphics.GL.Internal.Shared.GL_NOR', 'Graphics.GL.Internal.Shared.GL_OR', 'Graphics.GL.Internal.Shared.GL_OR_INVERTED', 'Graphics.GL.Internal.Shared.GL_OR_REVERSE', 'Graphics.GL.Internal.Shared.GL_SET', 'Graphics.GL.Internal.Shared.GL_XOR'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glLogicOp.xhtml>


glLogicOp :: MonadIO m => GLenum -> m ()
glLogicOp = ffienumIOV glLogicOpFunPtr

glLogicOpFunPtr :: FunPtr (GLenum -> IO ())
glLogicOpFunPtr = unsafePerformIO (getProcAddress "glLogicOp")

{-# NOINLINE glLogicOpFunPtr #-}

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


glMapBuffer :: MonadIO m => GLenum -> GLenum -> m (Ptr ())
glMapBuffer = ffienumenumIOPtrV glMapBufferFunPtr

glMapBufferFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
glMapBufferFunPtr = unsafePerformIO (getProcAddress "glMapBuffer")

{-# NOINLINE glMapBufferFunPtr #-}

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


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

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

{-# NOINLINE glMapBufferRangeFunPtr #-}

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


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

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


glMultiDrawElements :: MonadIO m => GLenum -> Ptr GLsizei -> GLenum -> Ptr (Ptr ()) -> GLsizei -> m ()
glMultiDrawElements = ffienumPtrsizeienumPtrPtrVsizeiIOV glMultiDrawElementsFunPtr

glMultiDrawElementsFunPtr :: FunPtr (GLenum -> Ptr GLsizei -> GLenum -> Ptr (Ptr ()) -> GLsizei -> IO ())
glMultiDrawElementsFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElements")

{-# NOINLINE glMultiDrawElementsFunPtr #-}

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


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

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

{-# NOINLINE glMultiDrawElementsBaseVertexFunPtr #-}

-- | Usage: @'glPixelStoref' pname param@
--
-- The parameter @pname@ is a @PixelStoreParameter@, one of: 'Graphics.GL.Internal.Shared.GL_PACK_ALIGNMENT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Internal.Shared.GL_PACK_IMAGE_HEIGHT', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_LSB_FIRST', 'Graphics.GL.Ext.OML.Resample.GL_PACK_RESAMPLE_OML', 'Graphics.GL.Ext.SGIX.Resample.GL_PACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_ROW_LENGTH', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_IMAGES', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_PACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_SWAP_BYTES', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_SIZE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_WIDTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_WIDTH_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ALIGNMENT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Internal.Shared.GL_UNPACK_IMAGE_HEIGHT', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_LSB_FIRST', 'Graphics.GL.Ext.OML.Resample.GL_UNPACK_RESAMPLE_OML', 'Graphics.GL.Ext.SGIX.Resample.GL_UNPACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.UnpackSubimage.GL_UNPACK_ROW_LENGTH_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_IMAGES', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_PIXELS', 'Graphics.GL.Ext.EXT.UnpackSubimage.GL_UNPACK_SKIP_PIXELS_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_ROWS', 'Graphics.GL.Ext.EXT.UnpackSubimage.GL_UNPACK_SKIP_ROWS_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_UNPACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_SWAP_BYTES'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glPixelStoref :: MonadIO m => GLenum -> GLfloat -> m ()
glPixelStoref = ffienumfloatIOV glPixelStorefFunPtr

glPixelStorefFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glPixelStorefFunPtr = unsafePerformIO (getProcAddress "glPixelStoref")

{-# NOINLINE glPixelStorefFunPtr #-}

-- | Usage: @'glPixelStorei' pname param@
--
-- The parameter @pname@ is a @PixelStoreParameter@, one of: 'Graphics.GL.Internal.Shared.GL_PACK_ALIGNMENT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Internal.Shared.GL_PACK_IMAGE_HEIGHT', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_LSB_FIRST', 'Graphics.GL.Ext.OML.Resample.GL_PACK_RESAMPLE_OML', 'Graphics.GL.Ext.SGIX.Resample.GL_PACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_ROW_LENGTH', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_IMAGES', 'Graphics.GL.Ext.EXT.Texture3D.GL_PACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_PIXELS', 'Graphics.GL.Internal.Shared.GL_PACK_SKIP_ROWS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_PACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_PACK_SWAP_BYTES', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_CACHE_SIZE_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_GRID_WIDTH_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_HEIGHT_SGIX', 'Graphics.GL.Ext.SGIX.PixelTiles.GL_PIXEL_TILE_WIDTH_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ALIGNMENT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_IMAGE_DEPTH_SGIS', 'Graphics.GL.Internal.Shared.GL_UNPACK_IMAGE_HEIGHT', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_IMAGE_HEIGHT_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_LSB_FIRST', 'Graphics.GL.Ext.OML.Resample.GL_UNPACK_RESAMPLE_OML', 'Graphics.GL.Ext.SGIX.Resample.GL_UNPACK_RESAMPLE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_ROW_LENGTH', 'Graphics.GL.Ext.EXT.UnpackSubimage.GL_UNPACK_ROW_LENGTH_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_IMAGES', 'Graphics.GL.Ext.EXT.Texture3D.GL_UNPACK_SKIP_IMAGES_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_PIXELS', 'Graphics.GL.Ext.EXT.UnpackSubimage.GL_UNPACK_SKIP_PIXELS_EXT', 'Graphics.GL.Internal.Shared.GL_UNPACK_SKIP_ROWS', 'Graphics.GL.Ext.EXT.UnpackSubimage.GL_UNPACK_SKIP_ROWS_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_UNPACK_SKIP_VOLUMES_SGIS', 'Graphics.GL.Ext.SGIX.Subsample.GL_UNPACK_SUBSAMPLE_RATE_SGIX', 'Graphics.GL.Internal.Shared.GL_UNPACK_SWAP_BYTES'.
--
-- The parameter @param@ is a @CheckedInt32@.


glPixelStorei :: MonadIO m => GLenum -> GLint -> m ()
glPixelStorei = ffienumintIOV glPixelStoreiFunPtr

glPixelStoreiFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPixelStoreiFunPtr = unsafePerformIO (getProcAddress "glPixelStorei")

{-# NOINLINE glPixelStoreiFunPtr #-}

-- | Usage: @'glPointParameterf' pname param@
--
-- The parameter @pname@ is a @PointParameterNameARB@.
--
-- The parameter @param@ is a @CheckedFloat32@.


glPointParameterf :: MonadIO m => GLenum -> GLfloat -> m ()
glPointParameterf = ffienumfloatIOV glPointParameterfFunPtr

glPointParameterfFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glPointParameterfFunPtr = unsafePerformIO (getProcAddress "glPointParameterf")

{-# NOINLINE glPointParameterfFunPtr #-}

-- | Usage: @'glPointParameterfv' pname params@
--
-- The parameter @pname@ is a @PointParameterNameARB@.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glPointParameterfv :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glPointParameterfv = ffienumPtrfloatIOV glPointParameterfvFunPtr

glPointParameterfvFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glPointParameterfvFunPtr = unsafePerformIO (getProcAddress "glPointParameterfv")

{-# NOINLINE glPointParameterfvFunPtr #-}

-- | Usage: @'glPointParameteri' pname param@
--
-- The parameter @pname@ is a @PointParameterNameARB@.


glPointParameteri :: MonadIO m => GLenum -> GLint -> m ()
glPointParameteri = ffienumintIOV glPointParameteriFunPtr

glPointParameteriFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPointParameteriFunPtr = unsafePerformIO (getProcAddress "glPointParameteri")

{-# NOINLINE glPointParameteriFunPtr #-}

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


glPointParameteriv :: MonadIO m => GLenum -> Ptr GLint -> m ()
glPointParameteriv = ffienumPtrintIOV glPointParameterivFunPtr

glPointParameterivFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glPointParameterivFunPtr = unsafePerformIO (getProcAddress "glPointParameteriv")

{-# NOINLINE glPointParameterivFunPtr #-}

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


glPointSize :: MonadIO m => GLfloat -> m ()
glPointSize = ffifloatIOV glPointSizeFunPtr

glPointSizeFunPtr :: FunPtr (GLfloat -> IO ())
glPointSizeFunPtr = unsafePerformIO (getProcAddress "glPointSize")

{-# NOINLINE glPointSizeFunPtr #-}

-- | Usage: @'glPolygonMode' face mode@
--
-- The parameter @face@ is a @MaterialFace@, one of: 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_AND_BACK'.
--
-- The parameter @mode@ is a @PolygonMode@, one of: 'Graphics.GL.Internal.Shared.GL_FILL', 'Graphics.GL.Internal.Shared.GL_LINE', 'Graphics.GL.Internal.Shared.GL_POINT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glPolygonMode.xhtml>


glPolygonMode :: MonadIO m => GLenum -> GLenum -> m ()
glPolygonMode = ffienumenumIOV glPolygonModeFunPtr

glPolygonModeFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glPolygonModeFunPtr = unsafePerformIO (getProcAddress "glPolygonMode")

{-# NOINLINE glPolygonModeFunPtr #-}

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


glPolygonOffset :: MonadIO m => GLfloat -> GLfloat -> m ()
glPolygonOffset = ffifloatfloatIOV glPolygonOffsetFunPtr

glPolygonOffsetFunPtr :: FunPtr (GLfloat -> GLfloat -> IO ())
glPolygonOffsetFunPtr = unsafePerformIO (getProcAddress "glPolygonOffset")

{-# NOINLINE glPolygonOffsetFunPtr #-}

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


glPrimitiveRestartIndex :: MonadIO m => GLuint -> m ()
glPrimitiveRestartIndex = ffiuintIOV glPrimitiveRestartIndexFunPtr

glPrimitiveRestartIndexFunPtr :: FunPtr (GLuint -> IO ())
glPrimitiveRestartIndexFunPtr = unsafePerformIO (getProcAddress "glPrimitiveRestartIndex")

{-# NOINLINE glPrimitiveRestartIndexFunPtr #-}

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


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

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

{-# NOINLINE glProvokingVertexFunPtr #-}

-- | Usage: @'glReadBuffer' src@
--
-- The parameter @src@ is a @ReadBufferMode@, one of: 'Graphics.GL.Internal.Shared.GL_AUX0', 'Graphics.GL.Internal.Shared.GL_AUX1', 'Graphics.GL.Internal.Shared.GL_AUX2', 'Graphics.GL.Internal.Shared.GL_AUX3', 'Graphics.GL.Internal.Shared.GL_BACK', 'Graphics.GL.Internal.Shared.GL_BACK_LEFT', 'Graphics.GL.Internal.Shared.GL_BACK_RIGHT', 'Graphics.GL.Internal.Shared.GL_FRONT', 'Graphics.GL.Internal.Shared.GL_FRONT_LEFT', 'Graphics.GL.Internal.Shared.GL_FRONT_RIGHT', 'Graphics.GL.Internal.Shared.GL_LEFT', 'Graphics.GL.Internal.Shared.GL_RIGHT'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glReadBuffer.xhtml>


glReadBuffer :: MonadIO m => GLenum -> m ()
glReadBuffer = ffienumIOV glReadBufferFunPtr

glReadBufferFunPtr :: FunPtr (GLenum -> IO ())
glReadBufferFunPtr = unsafePerformIO (getProcAddress "glReadBuffer")

{-# NOINLINE glReadBufferFunPtr #-}

-- | Usage: @'glReadPixels' x y width height format type pixels@
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width,height)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glReadPixels.xhtml>


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

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


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

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

{-# NOINLINE glRenderbufferStorageFunPtr #-}

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


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

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

{-# NOINLINE glRenderbufferStorageMultisampleFunPtr #-}

-- | Usage: @'glSampleCoverage' value invert@
--
-- The parameter @invert@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glSampleCoverage.xhtml>


glSampleCoverage :: MonadIO m => GLfloat -> GLboolean -> m ()
glSampleCoverage = ffifloatbooleanIOV glSampleCoverageFunPtr

glSampleCoverageFunPtr :: FunPtr (GLfloat -> GLboolean -> IO ())
glSampleCoverageFunPtr = unsafePerformIO (getProcAddress "glSampleCoverage")

{-# NOINLINE glSampleCoverageFunPtr #-}

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


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

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

{-# NOINLINE glSampleMaskiFunPtr #-}

-- | Usage: @'glScissor' x y width height@
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glScissor.xhtml>


glScissor :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> m ()
glScissor = ffiintintsizeisizeiIOV glScissorFunPtr

glScissorFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glScissorFunPtr = unsafePerformIO (getProcAddress "glScissor")

{-# NOINLINE glScissorFunPtr #-}

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


glShaderSource :: MonadIO m => GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLint -> m ()
glShaderSource = ffiuintsizeiPtrPtrcharPtrintIOV glShaderSourceFunPtr

glShaderSourceFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLint -> IO ())
glShaderSourceFunPtr = unsafePerformIO (getProcAddress "glShaderSource")

{-# NOINLINE glShaderSourceFunPtr #-}

-- | Usage: @'glStencilFunc' func ref mask@
--
-- The parameter @func@ is a @StencilFunction@, one of: 'Graphics.GL.Internal.Shared.GL_ALWAYS', 'Graphics.GL.Internal.Shared.GL_EQUAL', 'Graphics.GL.Internal.Shared.GL_GEQUAL', 'Graphics.GL.Internal.Shared.GL_GREATER', 'Graphics.GL.Internal.Shared.GL_LEQUAL', 'Graphics.GL.Internal.Shared.GL_LESS', 'Graphics.GL.Internal.Shared.GL_NEVER', 'Graphics.GL.Internal.Shared.GL_NOTEQUAL'.
--
-- The parameter @ref@ is a @StencilValue@.
--
-- The parameter @mask@ is a @MaskedStencilValue@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glStencilFunc.xhtml>


glStencilFunc :: MonadIO m => GLenum -> GLint -> GLuint -> m ()
glStencilFunc = ffienumintuintIOV glStencilFuncFunPtr

glStencilFuncFunPtr :: FunPtr (GLenum -> GLint -> GLuint -> IO ())
glStencilFuncFunPtr = unsafePerformIO (getProcAddress "glStencilFunc")

{-# NOINLINE glStencilFuncFunPtr #-}

-- | Usage: @'glStencilFuncSeparate' face func ref mask@
--
-- The parameter @face@ is a @StencilFaceDirection@.
--
-- The parameter @func@ is a @StencilFunction@, one of: 'Graphics.GL.Internal.Shared.GL_ALWAYS', 'Graphics.GL.Internal.Shared.GL_EQUAL', 'Graphics.GL.Internal.Shared.GL_GEQUAL', 'Graphics.GL.Internal.Shared.GL_GREATER', 'Graphics.GL.Internal.Shared.GL_LEQUAL', 'Graphics.GL.Internal.Shared.GL_LESS', 'Graphics.GL.Internal.Shared.GL_NEVER', 'Graphics.GL.Internal.Shared.GL_NOTEQUAL'.
--
-- The parameter @ref@ is a @StencilValue@.
--
-- The parameter @mask@ is a @MaskedStencilValue@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glStencilFuncSeparate.xhtml>


glStencilFuncSeparate :: MonadIO m => GLenum -> GLenum -> GLint -> GLuint -> m ()
glStencilFuncSeparate = ffienumenumintuintIOV glStencilFuncSeparateFunPtr

glStencilFuncSeparateFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> GLuint -> IO ())
glStencilFuncSeparateFunPtr = unsafePerformIO (getProcAddress "glStencilFuncSeparate")

{-# NOINLINE glStencilFuncSeparateFunPtr #-}

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


glStencilMask :: MonadIO m => GLuint -> m ()
glStencilMask = ffiuintIOV glStencilMaskFunPtr

glStencilMaskFunPtr :: FunPtr (GLuint -> IO ())
glStencilMaskFunPtr = unsafePerformIO (getProcAddress "glStencilMask")

{-# NOINLINE glStencilMaskFunPtr #-}

-- | Usage: @'glStencilMaskSeparate' face mask@
--
-- The parameter @face@ is a @StencilFaceDirection@.
--
-- The parameter @mask@ is a @MaskedStencilValue@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glStencilMaskSeparate.xhtml>


glStencilMaskSeparate :: MonadIO m => GLenum -> GLuint -> m ()
glStencilMaskSeparate = ffienumuintIOV glStencilMaskSeparateFunPtr

glStencilMaskSeparateFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glStencilMaskSeparateFunPtr = unsafePerformIO (getProcAddress "glStencilMaskSeparate")

{-# NOINLINE glStencilMaskSeparateFunPtr #-}

-- | Usage: @'glStencilOp' fail zfail zpass@
--
-- The parameter @fail@ is a @StencilOp@, one of: 'Graphics.GL.Internal.Shared.GL_DECR', 'Graphics.GL.Internal.Shared.GL_INCR', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_KEEP', 'Graphics.GL.Internal.Shared.GL_REPLACE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- The parameter @zfail@ is a @StencilOp@, one of: 'Graphics.GL.Internal.Shared.GL_DECR', 'Graphics.GL.Internal.Shared.GL_INCR', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_KEEP', 'Graphics.GL.Internal.Shared.GL_REPLACE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- The parameter @zpass@ is a @StencilOp@, one of: 'Graphics.GL.Internal.Shared.GL_DECR', 'Graphics.GL.Internal.Shared.GL_INCR', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_KEEP', 'Graphics.GL.Internal.Shared.GL_REPLACE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glStencilOp.xhtml>


glStencilOp :: MonadIO m => GLenum -> GLenum -> GLenum -> m ()
glStencilOp = ffienumenumenumIOV glStencilOpFunPtr

glStencilOpFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> IO ())
glStencilOpFunPtr = unsafePerformIO (getProcAddress "glStencilOp")

{-# NOINLINE glStencilOpFunPtr #-}

-- | Usage: @'glStencilOpSeparate' face sfail dpfail dppass@
--
-- The parameter @face@ is a @StencilFaceDirection@.
--
-- The parameter @sfail@ is a @StencilOp@, one of: 'Graphics.GL.Internal.Shared.GL_DECR', 'Graphics.GL.Internal.Shared.GL_INCR', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_KEEP', 'Graphics.GL.Internal.Shared.GL_REPLACE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- The parameter @dpfail@ is a @StencilOp@, one of: 'Graphics.GL.Internal.Shared.GL_DECR', 'Graphics.GL.Internal.Shared.GL_INCR', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_KEEP', 'Graphics.GL.Internal.Shared.GL_REPLACE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- The parameter @dppass@ is a @StencilOp@, one of: 'Graphics.GL.Internal.Shared.GL_DECR', 'Graphics.GL.Internal.Shared.GL_INCR', 'Graphics.GL.Internal.Shared.GL_INVERT', 'Graphics.GL.Internal.Shared.GL_KEEP', 'Graphics.GL.Internal.Shared.GL_REPLACE', 'Graphics.GL.Internal.Shared.GL_ZERO'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glStencilOpSeparate.xhtml>


glStencilOpSeparate :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
glStencilOpSeparate = ffienumenumenumenumIOV glStencilOpSeparateFunPtr

glStencilOpSeparateFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glStencilOpSeparateFunPtr = unsafePerformIO (getProcAddress "glStencilOpSeparate")

{-# NOINLINE glStencilOpSeparateFunPtr #-}

-- | Usage: @'glTexBuffer' target internalformat buffer@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexBuffer.xhtml>


glTexBuffer :: MonadIO m => GLenum -> GLenum -> GLuint -> m ()
glTexBuffer = ffienumenumuintIOV glTexBufferFunPtr

glTexBufferFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> IO ())
glTexBufferFunPtr = unsafePerformIO (getProcAddress "glTexBuffer")

{-# NOINLINE glTexBufferFunPtr #-}

-- | Usage: @'glTexImage1D' target level internalformat width border format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @TextureComponentCount@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage1D.xhtml>


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

-- | Usage: @'glTexImage2D' target level internalformat width height border format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @TextureComponentCount@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width,height)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage2D.xhtml>


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

-- | Usage: @'glTexImage2DMultisample' target samples internalformat width height fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage2DMultisample.xhtml>


glTexImage2DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexImage2DMultisample = ffienumsizeienumsizeisizeibooleanIOV glTexImage2DMultisampleFunPtr

glTexImage2DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexImage2DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexImage2DMultisample")

{-# NOINLINE glTexImage2DMultisampleFunPtr #-}

-- | Usage: @'glTexImage3D' target level internalformat width height depth border format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @internalformat@ is a @TextureComponentCount@.
--
-- The parameter @border@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width,height,depth)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage3D.xhtml>


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

-- | Usage: @'glTexImage3DMultisample' target samples internalformat width height depth fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexImage3DMultisample.xhtml>


glTexImage3DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexImage3DMultisample = ffienumsizeienumsizeisizeisizeibooleanIOV glTexImage3DMultisampleFunPtr

glTexImage3DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexImage3DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexImage3DMultisample")

{-# NOINLINE glTexImage3DMultisampleFunPtr #-}

-- | Usage: @'glTexParameterIiv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexParameterIiv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexParameterIiv = ffienumenumPtrintIOV glTexParameterIivFunPtr

glTexParameterIivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexParameterIivFunPtr = unsafePerformIO (getProcAddress "glTexParameterIiv")

{-# NOINLINE glTexParameterIivFunPtr #-}

-- | Usage: @'glTexParameterIuiv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexParameterIuiv :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glTexParameterIuiv = ffienumenumPtruintIOV glTexParameterIuivFunPtr

glTexParameterIuivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glTexParameterIuivFunPtr = unsafePerformIO (getProcAddress "glTexParameterIuiv")

{-# NOINLINE glTexParameterIuivFunPtr #-}

-- | Usage: @'glTexParameterf' target pname param@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The parameter @param@ is a @CheckedFloat32@.


glTexParameterf :: MonadIO m => GLenum -> GLenum -> GLfloat -> m ()
glTexParameterf = ffienumenumfloatIOV glTexParameterfFunPtr

glTexParameterfFunPtr :: FunPtr (GLenum -> GLenum -> GLfloat -> IO ())
glTexParameterfFunPtr = unsafePerformIO (getProcAddress "glTexParameterf")

{-# NOINLINE glTexParameterfFunPtr #-}

-- | Usage: @'glTexParameterfv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The parameter @params@ is a @CheckedFloat32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexParameterfv :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glTexParameterfv = ffienumenumPtrfloatIOV glTexParameterfvFunPtr

glTexParameterfvFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glTexParameterfvFunPtr = unsafePerformIO (getProcAddress "glTexParameterfv")

{-# NOINLINE glTexParameterfvFunPtr #-}

-- | Usage: @'glTexParameteri' target pname param@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The parameter @param@ is a @CheckedInt32@.


glTexParameteri :: MonadIO m => GLenum -> GLenum -> GLint -> m ()
glTexParameteri = ffienumenumintIOV glTexParameteriFunPtr

glTexParameteriFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glTexParameteriFunPtr = unsafePerformIO (getProcAddress "glTexParameteri")

{-# NOINLINE glTexParameteriFunPtr #-}

-- | Usage: @'glTexParameteriv' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The parameter @params@ is a @CheckedInt32@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glTexParameteriv :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexParameteriv = ffienumenumPtrintIOV glTexParameterivFunPtr

glTexParameterivFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexParameterivFunPtr = unsafePerformIO (getProcAddress "glTexParameteriv")

{-# NOINLINE glTexParameterivFunPtr #-}

-- | Usage: @'glTexSubImage1D' target level xoffset width format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexSubImage1D.xhtml>


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

-- | Usage: @'glTexSubImage2D' target level xoffset yoffset width height format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @yoffset@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width,height)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexSubImage2D.xhtml>


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

-- | Usage: @'glTexSubImage3D' target level xoffset yoffset zoffset width height depth format type pixels@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @xoffset@ is a @CheckedInt32@.
--
-- The parameter @yoffset@ is a @CheckedInt32@.
--
-- The parameter @zoffset@ is a @CheckedInt32@.
--
-- The parameter @format@ is a @PixelFormat@, one of: 'Graphics.GL.Ext.EXT.Abgr.GL_ABGR_EXT', 'Graphics.GL.Internal.Shared.GL_ALPHA', 'Graphics.GL.Internal.Shared.GL_BLUE', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYKA_EXT', 'Graphics.GL.Ext.EXT.Cmyka.GL_CMYK_EXT', 'Graphics.GL.Internal.Shared.GL_COLOR_INDEX', 'Graphics.GL.Internal.Shared.GL_DEPTH_COMPONENT', 'Graphics.GL.Internal.Shared.GL_GREEN', 'Graphics.GL.Internal.Shared.GL_LUMINANCE', 'Graphics.GL.Internal.Shared.GL_LUMINANCE_ALPHA', 'Graphics.GL.Internal.Shared.GL_RED', 'Graphics.GL.Ext.EXT.TextureRg.GL_RED_EXT', 'Graphics.GL.Internal.Shared.GL_RGB', 'Graphics.GL.Internal.Shared.GL_RGBA', 'Graphics.GL.Internal.Shared.GL_STENCIL_INDEX', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_422_SGIX', 'Graphics.GL.Ext.SGIX.Ycrcb.GL_YCRCB_444_SGIX'.
--
-- The parameter @type@ is a @PixelType@, one of: 'Graphics.GL.Internal.Shared.GL_BITMAP', 'Graphics.GL.Internal.Shared.GL_BYTE', 'Graphics.GL.Internal.Shared.GL_FLOAT', 'Graphics.GL.Internal.Shared.GL_INT', 'Graphics.GL.Internal.Shared.GL_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_BYTE_3_3_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_BYTE_3_3_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_10_10_10_2', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_10_10_10_2_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_INT_8_8_8_8', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_INT_8_8_8_8_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_4_4_4_4', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_4_4_4_4_EXT', 'Graphics.GL.Internal.Shared.GL_UNSIGNED_SHORT_5_5_5_1', 'Graphics.GL.Ext.EXT.PackedPixels.GL_UNSIGNED_SHORT_5_5_5_1_EXT'.
--
-- The length of @pixels@ should be @COMPSIZE(format,type,width,height,depth)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexSubImage3D.xhtml>


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

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


glTransformFeedbackVaryings :: MonadIO m => GLuint -> GLsizei -> Ptr (Ptr GLchar) -> GLenum -> m ()
glTransformFeedbackVaryings = ffiuintsizeiPtrPtrcharenumIOV glTransformFeedbackVaryingsFunPtr

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

{-# NOINLINE glTransformFeedbackVaryingsFunPtr #-}

-- | Usage: @'glUniform1f' location v0@


glUniform1f :: MonadIO m => GLint -> GLfloat -> m ()
glUniform1f = ffiintfloatIOV glUniform1fFunPtr

glUniform1fFunPtr :: FunPtr (GLint -> GLfloat -> IO ())
glUniform1fFunPtr = unsafePerformIO (getProcAddress "glUniform1f")

{-# NOINLINE glUniform1fFunPtr #-}

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


glUniform1fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform1fv = ffiintsizeiPtrfloatIOV glUniform1fvFunPtr

glUniform1fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform1fvFunPtr = unsafePerformIO (getProcAddress "glUniform1fv")

{-# NOINLINE glUniform1fvFunPtr #-}

-- | Usage: @'glUniform1i' location v0@


glUniform1i :: MonadIO m => GLint -> GLint -> m ()
glUniform1i = ffiintintIOV glUniform1iFunPtr

glUniform1iFunPtr :: FunPtr (GLint -> GLint -> IO ())
glUniform1iFunPtr = unsafePerformIO (getProcAddress "glUniform1i")

{-# NOINLINE glUniform1iFunPtr #-}

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


glUniform1iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform1iv = ffiintsizeiPtrintIOV glUniform1ivFunPtr

glUniform1ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform1ivFunPtr = unsafePerformIO (getProcAddress "glUniform1iv")

{-# NOINLINE glUniform1ivFunPtr #-}

-- | Usage: @'glUniform1ui' location v0@


glUniform1ui :: MonadIO m => GLint -> GLuint -> m ()
glUniform1ui = ffiintuintIOV glUniform1uiFunPtr

glUniform1uiFunPtr :: FunPtr (GLint -> GLuint -> IO ())
glUniform1uiFunPtr = unsafePerformIO (getProcAddress "glUniform1ui")

{-# NOINLINE glUniform1uiFunPtr #-}

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


glUniform1uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform1uiv = ffiintsizeiPtruintIOV glUniform1uivFunPtr

glUniform1uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform1uivFunPtr = unsafePerformIO (getProcAddress "glUniform1uiv")

{-# NOINLINE glUniform1uivFunPtr #-}

-- | Usage: @'glUniform2f' location v0 v1@


glUniform2f :: MonadIO m => GLint -> GLfloat -> GLfloat -> m ()
glUniform2f = ffiintfloatfloatIOV glUniform2fFunPtr

glUniform2fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ())
glUniform2fFunPtr = unsafePerformIO (getProcAddress "glUniform2f")

{-# NOINLINE glUniform2fFunPtr #-}

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


glUniform2fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform2fv = ffiintsizeiPtrfloatIOV glUniform2fvFunPtr

glUniform2fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform2fvFunPtr = unsafePerformIO (getProcAddress "glUniform2fv")

{-# NOINLINE glUniform2fvFunPtr #-}

-- | Usage: @'glUniform2i' location v0 v1@


glUniform2i :: MonadIO m => GLint -> GLint -> GLint -> m ()
glUniform2i = ffiintintintIOV glUniform2iFunPtr

glUniform2iFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glUniform2iFunPtr = unsafePerformIO (getProcAddress "glUniform2i")

{-# NOINLINE glUniform2iFunPtr #-}

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


glUniform2iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform2iv = ffiintsizeiPtrintIOV glUniform2ivFunPtr

glUniform2ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform2ivFunPtr = unsafePerformIO (getProcAddress "glUniform2iv")

{-# NOINLINE glUniform2ivFunPtr #-}

-- | Usage: @'glUniform2ui' location v0 v1@


glUniform2ui :: MonadIO m => GLint -> GLuint -> GLuint -> m ()
glUniform2ui = ffiintuintuintIOV glUniform2uiFunPtr

glUniform2uiFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> IO ())
glUniform2uiFunPtr = unsafePerformIO (getProcAddress "glUniform2ui")

{-# NOINLINE glUniform2uiFunPtr #-}

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


glUniform2uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform2uiv = ffiintsizeiPtruintIOV glUniform2uivFunPtr

glUniform2uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform2uivFunPtr = unsafePerformIO (getProcAddress "glUniform2uiv")

{-# NOINLINE glUniform2uivFunPtr #-}

-- | Usage: @'glUniform3f' location v0 v1 v2@


glUniform3f :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
glUniform3f = ffiintfloatfloatfloatIOV glUniform3fFunPtr

glUniform3fFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glUniform3fFunPtr = unsafePerformIO (getProcAddress "glUniform3f")

{-# NOINLINE glUniform3fFunPtr #-}

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


glUniform3fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform3fv = ffiintsizeiPtrfloatIOV glUniform3fvFunPtr

glUniform3fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform3fvFunPtr = unsafePerformIO (getProcAddress "glUniform3fv")

{-# NOINLINE glUniform3fvFunPtr #-}

-- | Usage: @'glUniform3i' location v0 v1 v2@


glUniform3i :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glUniform3i = ffiintintintintIOV glUniform3iFunPtr

glUniform3iFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glUniform3iFunPtr = unsafePerformIO (getProcAddress "glUniform3i")

{-# NOINLINE glUniform3iFunPtr #-}

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


glUniform3iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform3iv = ffiintsizeiPtrintIOV glUniform3ivFunPtr

glUniform3ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform3ivFunPtr = unsafePerformIO (getProcAddress "glUniform3iv")

{-# NOINLINE glUniform3ivFunPtr #-}

-- | Usage: @'glUniform3ui' location v0 v1 v2@


glUniform3ui :: MonadIO m => GLint -> GLuint -> GLuint -> GLuint -> m ()
glUniform3ui = ffiintuintuintuintIOV glUniform3uiFunPtr

glUniform3uiFunPtr :: FunPtr (GLint -> GLuint -> GLuint -> GLuint -> IO ())
glUniform3uiFunPtr = unsafePerformIO (getProcAddress "glUniform3ui")

{-# NOINLINE glUniform3uiFunPtr #-}

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


glUniform3uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform3uiv = ffiintsizeiPtruintIOV glUniform3uivFunPtr

glUniform3uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform3uivFunPtr = unsafePerformIO (getProcAddress "glUniform3uiv")

{-# NOINLINE glUniform3uivFunPtr #-}

-- | Usage: @'glUniform4f' location v0 v1 v2 v3@


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

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


glUniform4fv :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform4fv = ffiintsizeiPtrfloatIOV glUniform4fvFunPtr

glUniform4fvFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform4fvFunPtr = unsafePerformIO (getProcAddress "glUniform4fv")

{-# NOINLINE glUniform4fvFunPtr #-}

-- | Usage: @'glUniform4i' location v0 v1 v2 v3@


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

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


glUniform4iv :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform4iv = ffiintsizeiPtrintIOV glUniform4ivFunPtr

glUniform4ivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform4ivFunPtr = unsafePerformIO (getProcAddress "glUniform4iv")

{-# NOINLINE glUniform4ivFunPtr #-}

-- | Usage: @'glUniform4ui' location v0 v1 v2 v3@


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

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


glUniform4uiv :: MonadIO m => GLint -> GLsizei -> Ptr GLuint -> m ()
glUniform4uiv = ffiintsizeiPtruintIOV glUniform4uivFunPtr

glUniform4uivFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint -> IO ())
glUniform4uivFunPtr = unsafePerformIO (getProcAddress "glUniform4uiv")

{-# NOINLINE glUniform4uivFunPtr #-}

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


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

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

{-# NOINLINE glUniformBlockBindingFunPtr #-}

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


glUnmapBuffer :: MonadIO m => GLenum -> m GLboolean
glUnmapBuffer = ffienumIOboolean glUnmapBufferFunPtr

glUnmapBufferFunPtr :: FunPtr (GLenum -> IO GLboolean)
glUnmapBufferFunPtr = unsafePerformIO (getProcAddress "glUnmapBuffer")

{-# NOINLINE glUnmapBufferFunPtr #-}

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


glUseProgram :: MonadIO m => GLuint -> m ()
glUseProgram = ffiuintIOV glUseProgramFunPtr

glUseProgramFunPtr :: FunPtr (GLuint -> IO ())
glUseProgramFunPtr = unsafePerformIO (getProcAddress "glUseProgram")

{-# NOINLINE glUseProgramFunPtr #-}

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


glValidateProgram :: MonadIO m => GLuint -> m ()
glValidateProgram = ffiuintIOV glValidateProgramFunPtr

glValidateProgramFunPtr :: FunPtr (GLuint -> IO ())
glValidateProgramFunPtr = unsafePerformIO (getProcAddress "glValidateProgram")

{-# NOINLINE glValidateProgramFunPtr #-}

-- | Usage: @'glVertexAttrib1d' index x@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib1dv'.


glVertexAttrib1d :: MonadIO m => GLuint -> GLdouble -> m ()
glVertexAttrib1d = ffiuintdoubleIOV glVertexAttrib1dFunPtr

glVertexAttrib1dFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttrib1dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1d")

{-# NOINLINE glVertexAttrib1dFunPtr #-}

-- | Usage: @'glVertexAttrib1dv' index v@
--
-- The length of @v@ should be @1@.


glVertexAttrib1dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib1dv = ffiuintPtrdoubleIOV glVertexAttrib1dvFunPtr

glVertexAttrib1dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib1dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dv")

{-# NOINLINE glVertexAttrib1dvFunPtr #-}

-- | Usage: @'glVertexAttrib1f' index x@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib1fv'.


glVertexAttrib1f :: MonadIO m => GLuint -> GLfloat -> m ()
glVertexAttrib1f = ffiuintfloatIOV glVertexAttrib1fFunPtr

glVertexAttrib1fFunPtr :: FunPtr (GLuint -> GLfloat -> IO ())
glVertexAttrib1fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1f")

{-# NOINLINE glVertexAttrib1fFunPtr #-}

-- | Usage: @'glVertexAttrib1fv' index v@
--
-- The length of @v@ should be @1@.


glVertexAttrib1fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib1fv = ffiuintPtrfloatIOV glVertexAttrib1fvFunPtr

glVertexAttrib1fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib1fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fv")

{-# NOINLINE glVertexAttrib1fvFunPtr #-}

-- | Usage: @'glVertexAttrib1s' index x@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib1sv'.


glVertexAttrib1s :: MonadIO m => GLuint -> GLshort -> m ()
glVertexAttrib1s = ffiuintshortIOV glVertexAttrib1sFunPtr

glVertexAttrib1sFunPtr :: FunPtr (GLuint -> GLshort -> IO ())
glVertexAttrib1sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1s")

{-# NOINLINE glVertexAttrib1sFunPtr #-}

-- | Usage: @'glVertexAttrib1sv' index v@
--
-- The length of @v@ should be @1@.


glVertexAttrib1sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib1sv = ffiuintPtrshortIOV glVertexAttrib1svFunPtr

glVertexAttrib1svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib1svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1sv")

{-# NOINLINE glVertexAttrib1svFunPtr #-}

-- | Usage: @'glVertexAttrib2d' index x y@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib2dv'.


glVertexAttrib2d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttrib2d = ffiuintdoubledoubleIOV glVertexAttrib2dFunPtr

glVertexAttrib2dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttrib2dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2d")

{-# NOINLINE glVertexAttrib2dFunPtr #-}

-- | Usage: @'glVertexAttrib2dv' index v@
--
-- The length of @v@ should be @2@.


glVertexAttrib2dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib2dv = ffiuintPtrdoubleIOV glVertexAttrib2dvFunPtr

glVertexAttrib2dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib2dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dv")

{-# NOINLINE glVertexAttrib2dvFunPtr #-}

-- | Usage: @'glVertexAttrib2f' index x y@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib2fv'.


glVertexAttrib2f :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
glVertexAttrib2f = ffiuintfloatfloatIOV glVertexAttrib2fFunPtr

glVertexAttrib2fFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
glVertexAttrib2fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2f")

{-# NOINLINE glVertexAttrib2fFunPtr #-}

-- | Usage: @'glVertexAttrib2fv' index v@
--
-- The length of @v@ should be @2@.


glVertexAttrib2fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib2fv = ffiuintPtrfloatIOV glVertexAttrib2fvFunPtr

glVertexAttrib2fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib2fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fv")

{-# NOINLINE glVertexAttrib2fvFunPtr #-}

-- | Usage: @'glVertexAttrib2s' index x y@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib2sv'.


glVertexAttrib2s :: MonadIO m => GLuint -> GLshort -> GLshort -> m ()
glVertexAttrib2s = ffiuintshortshortIOV glVertexAttrib2sFunPtr

glVertexAttrib2sFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> IO ())
glVertexAttrib2sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2s")

{-# NOINLINE glVertexAttrib2sFunPtr #-}

-- | Usage: @'glVertexAttrib2sv' index v@
--
-- The length of @v@ should be @2@.


glVertexAttrib2sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib2sv = ffiuintPtrshortIOV glVertexAttrib2svFunPtr

glVertexAttrib2svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib2svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2sv")

{-# NOINLINE glVertexAttrib2svFunPtr #-}

-- | Usage: @'glVertexAttrib3d' index x y z@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib3dv'.


glVertexAttrib3d :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttrib3d = ffiuintdoubledoubledoubleIOV glVertexAttrib3dFunPtr

glVertexAttrib3dFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttrib3dFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3d")

{-# NOINLINE glVertexAttrib3dFunPtr #-}

-- | Usage: @'glVertexAttrib3dv' index v@
--
-- The length of @v@ should be @3@.


glVertexAttrib3dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib3dv = ffiuintPtrdoubleIOV glVertexAttrib3dvFunPtr

glVertexAttrib3dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib3dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dv")

{-# NOINLINE glVertexAttrib3dvFunPtr #-}

-- | Usage: @'glVertexAttrib3f' index x y z@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib3fv'.


glVertexAttrib3f :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertexAttrib3f = ffiuintfloatfloatfloatIOV glVertexAttrib3fFunPtr

glVertexAttrib3fFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertexAttrib3fFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3f")

{-# NOINLINE glVertexAttrib3fFunPtr #-}

-- | Usage: @'glVertexAttrib3fv' index v@
--
-- The length of @v@ should be @3@.


glVertexAttrib3fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib3fv = ffiuintPtrfloatIOV glVertexAttrib3fvFunPtr

glVertexAttrib3fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib3fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fv")

{-# NOINLINE glVertexAttrib3fvFunPtr #-}

-- | Usage: @'glVertexAttrib3s' index x y z@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib3sv'.


glVertexAttrib3s :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> m ()
glVertexAttrib3s = ffiuintshortshortshortIOV glVertexAttrib3sFunPtr

glVertexAttrib3sFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ())
glVertexAttrib3sFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3s")

{-# NOINLINE glVertexAttrib3sFunPtr #-}

-- | Usage: @'glVertexAttrib3sv' index v@
--
-- The length of @v@ should be @3@.


glVertexAttrib3sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib3sv = ffiuintPtrshortIOV glVertexAttrib3svFunPtr

glVertexAttrib3svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib3svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3sv")

{-# NOINLINE glVertexAttrib3svFunPtr #-}

-- | Usage: @'glVertexAttrib4Nbv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4Nbv :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4Nbv = ffiuintPtrbyteIOV glVertexAttrib4NbvFunPtr

glVertexAttrib4NbvFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4NbvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nbv")

{-# NOINLINE glVertexAttrib4NbvFunPtr #-}

-- | Usage: @'glVertexAttrib4Niv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4Niv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4Niv = ffiuintPtrintIOV glVertexAttrib4NivFunPtr

glVertexAttrib4NivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4NivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Niv")

{-# NOINLINE glVertexAttrib4NivFunPtr #-}

-- | Usage: @'glVertexAttrib4Nsv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4Nsv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4Nsv = ffiuintPtrshortIOV glVertexAttrib4NsvFunPtr

glVertexAttrib4NsvFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4NsvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nsv")

{-# NOINLINE glVertexAttrib4NsvFunPtr #-}

-- | Usage: @'glVertexAttrib4Nub' index x y z w@


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

-- | Usage: @'glVertexAttrib4Nubv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4Nubv :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4Nubv = ffiuintPtrubyteIOV glVertexAttrib4NubvFunPtr

glVertexAttrib4NubvFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4NubvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nubv")

{-# NOINLINE glVertexAttrib4NubvFunPtr #-}

-- | Usage: @'glVertexAttrib4Nuiv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4Nuiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4Nuiv = ffiuintPtruintIOV glVertexAttrib4NuivFunPtr

glVertexAttrib4NuivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4NuivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nuiv")

{-# NOINLINE glVertexAttrib4NuivFunPtr #-}

-- | Usage: @'glVertexAttrib4Nusv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4Nusv :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4Nusv = ffiuintPtrushortIOV glVertexAttrib4NusvFunPtr

glVertexAttrib4NusvFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4NusvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4Nusv")

{-# NOINLINE glVertexAttrib4NusvFunPtr #-}

-- | Usage: @'glVertexAttrib4bv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4bv :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4bv = ffiuintPtrbyteIOV glVertexAttrib4bvFunPtr

glVertexAttrib4bvFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4bvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4bv")

{-# NOINLINE glVertexAttrib4bvFunPtr #-}

-- | Usage: @'glVertexAttrib4d' index x y z w@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib4dv'.


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

-- | Usage: @'glVertexAttrib4dv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4dv :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib4dv = ffiuintPtrdoubleIOV glVertexAttrib4dvFunPtr

glVertexAttrib4dvFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib4dvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dv")

{-# NOINLINE glVertexAttrib4dvFunPtr #-}

-- | Usage: @'glVertexAttrib4f' index x y z w@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib4fv'.


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

-- | Usage: @'glVertexAttrib4fv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4fv :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib4fv = ffiuintPtrfloatIOV glVertexAttrib4fvFunPtr

glVertexAttrib4fvFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib4fvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fv")

{-# NOINLINE glVertexAttrib4fvFunPtr #-}

-- | Usage: @'glVertexAttrib4iv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4iv = ffiuintPtrintIOV glVertexAttrib4ivFunPtr

glVertexAttrib4ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4iv")

{-# NOINLINE glVertexAttrib4ivFunPtr #-}

-- | Usage: @'glVertexAttrib4s' index x y z w@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib4sv'.


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

-- | Usage: @'glVertexAttrib4sv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4sv = ffiuintPtrshortIOV glVertexAttrib4svFunPtr

glVertexAttrib4svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4svFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4sv")

{-# NOINLINE glVertexAttrib4svFunPtr #-}

-- | Usage: @'glVertexAttrib4ubv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4ubv :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4ubv = ffiuintPtrubyteIOV glVertexAttrib4ubvFunPtr

glVertexAttrib4ubvFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4ubvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ubv")

{-# NOINLINE glVertexAttrib4ubvFunPtr #-}

-- | Usage: @'glVertexAttrib4uiv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4uiv = ffiuintPtruintIOV glVertexAttrib4uivFunPtr

glVertexAttrib4uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4uiv")

{-# NOINLINE glVertexAttrib4uivFunPtr #-}

-- | Usage: @'glVertexAttrib4usv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttrib4usv :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4usv = ffiuintPtrushortIOV glVertexAttrib4usvFunPtr

glVertexAttrib4usvFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4usvFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4usv")

{-# NOINLINE glVertexAttrib4usvFunPtr #-}

-- | Usage: @'glVertexAttribI1i' index x@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI1iv'.


glVertexAttribI1i :: MonadIO m => GLuint -> GLint -> m ()
glVertexAttribI1i = ffiuintintIOV glVertexAttribI1iFunPtr

glVertexAttribI1iFunPtr :: FunPtr (GLuint -> GLint -> IO ())
glVertexAttribI1iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1i")

{-# NOINLINE glVertexAttribI1iFunPtr #-}

-- | Usage: @'glVertexAttribI1iv' index v@
--
-- The length of @v@ should be @1@.


glVertexAttribI1iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI1iv = ffiuintPtrintIOV glVertexAttribI1ivFunPtr

glVertexAttribI1ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI1ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1iv")

{-# NOINLINE glVertexAttribI1ivFunPtr #-}

-- | Usage: @'glVertexAttribI1ui' index x@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI1uiv'.


glVertexAttribI1ui :: MonadIO m => GLuint -> GLuint -> m ()
glVertexAttribI1ui = ffiuintuintIOV glVertexAttribI1uiFunPtr

glVertexAttribI1uiFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexAttribI1uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1ui")

{-# NOINLINE glVertexAttribI1uiFunPtr #-}

-- | Usage: @'glVertexAttribI1uiv' index v@
--
-- The length of @v@ should be @1@.


glVertexAttribI1uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI1uiv = ffiuintPtruintIOV glVertexAttribI1uivFunPtr

glVertexAttribI1uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI1uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1uiv")

{-# NOINLINE glVertexAttribI1uivFunPtr #-}

-- | Usage: @'glVertexAttribI2i' index x y@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI2iv'.


glVertexAttribI2i :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glVertexAttribI2i = ffiuintintintIOV glVertexAttribI2iFunPtr

glVertexAttribI2iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glVertexAttribI2iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2i")

{-# NOINLINE glVertexAttribI2iFunPtr #-}

-- | Usage: @'glVertexAttribI2iv' index v@
--
-- The length of @v@ should be @2@.


glVertexAttribI2iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI2iv = ffiuintPtrintIOV glVertexAttribI2ivFunPtr

glVertexAttribI2ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI2ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2iv")

{-# NOINLINE glVertexAttribI2ivFunPtr #-}

-- | Usage: @'glVertexAttribI2ui' index x y@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI2uiv'.


glVertexAttribI2ui :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI2ui = ffiuintuintuintIOV glVertexAttribI2uiFunPtr

glVertexAttribI2uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI2uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2ui")

{-# NOINLINE glVertexAttribI2uiFunPtr #-}

-- | Usage: @'glVertexAttribI2uiv' index v@
--
-- The length of @v@ should be @2@.


glVertexAttribI2uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI2uiv = ffiuintPtruintIOV glVertexAttribI2uivFunPtr

glVertexAttribI2uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI2uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2uiv")

{-# NOINLINE glVertexAttribI2uivFunPtr #-}

-- | Usage: @'glVertexAttribI3i' index x y z@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI3iv'.


glVertexAttribI3i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glVertexAttribI3i = ffiuintintintintIOV glVertexAttribI3iFunPtr

glVertexAttribI3iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glVertexAttribI3iFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3i")

{-# NOINLINE glVertexAttribI3iFunPtr #-}

-- | Usage: @'glVertexAttribI3iv' index v@
--
-- The length of @v@ should be @3@.


glVertexAttribI3iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI3iv = ffiuintPtrintIOV glVertexAttribI3ivFunPtr

glVertexAttribI3ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI3ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3iv")

{-# NOINLINE glVertexAttribI3ivFunPtr #-}

-- | Usage: @'glVertexAttribI3ui' index x y z@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI3uiv'.


glVertexAttribI3ui :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI3ui = ffiuintuintuintuintIOV glVertexAttribI3uiFunPtr

glVertexAttribI3uiFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI3uiFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3ui")

{-# NOINLINE glVertexAttribI3uiFunPtr #-}

-- | Usage: @'glVertexAttribI3uiv' index v@
--
-- The length of @v@ should be @3@.


glVertexAttribI3uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI3uiv = ffiuintPtruintIOV glVertexAttribI3uivFunPtr

glVertexAttribI3uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI3uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3uiv")

{-# NOINLINE glVertexAttribI3uivFunPtr #-}

-- | Usage: @'glVertexAttribI4bv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttribI4bv :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttribI4bv = ffiuintPtrbyteIOV glVertexAttribI4bvFunPtr

glVertexAttribI4bvFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttribI4bvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4bv")

{-# NOINLINE glVertexAttribI4bvFunPtr #-}

-- | Usage: @'glVertexAttribI4i' index x y z w@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI4iv'.


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

-- | Usage: @'glVertexAttribI4iv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttribI4iv :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI4iv = ffiuintPtrintIOV glVertexAttribI4ivFunPtr

glVertexAttribI4ivFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI4ivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4iv")

{-# NOINLINE glVertexAttribI4ivFunPtr #-}

-- | Usage: @'glVertexAttribI4sv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttribI4sv :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttribI4sv = ffiuintPtrshortIOV glVertexAttribI4svFunPtr

glVertexAttribI4svFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttribI4svFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4sv")

{-# NOINLINE glVertexAttribI4svFunPtr #-}

-- | Usage: @'glVertexAttribI4ubv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttribI4ubv :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttribI4ubv = ffiuintPtrubyteIOV glVertexAttribI4ubvFunPtr

glVertexAttribI4ubvFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttribI4ubvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ubv")

{-# NOINLINE glVertexAttribI4ubvFunPtr #-}

-- | Usage: @'glVertexAttribI4ui' index x y z w@
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttribI4uiv'.


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

-- | Usage: @'glVertexAttribI4uiv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttribI4uiv :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI4uiv = ffiuintPtruintIOV glVertexAttribI4uivFunPtr

glVertexAttribI4uivFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI4uivFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4uiv")

{-# NOINLINE glVertexAttribI4uivFunPtr #-}

-- | Usage: @'glVertexAttribI4usv' index v@
--
-- The length of @v@ should be @4@.


glVertexAttribI4usv :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttribI4usv = ffiuintPtrushortIOV glVertexAttribI4usvFunPtr

glVertexAttribI4usvFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttribI4usvFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4usv")

{-# NOINLINE glVertexAttribI4usvFunPtr #-}

-- | Usage: @'glVertexAttribIPointer' index size type stride pointer@
--
-- The parameter @type@ is a @VertexAttribEnum@.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


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

-- | Usage: @'glVertexAttribPointer' index size type normalized stride pointer@
--
-- The parameter @type@ is a @VertexAttribPointerType@.
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glVertexAttribPointer.xhtml>


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

-- | Usage: @'glViewport' x y width height@
--
-- The parameter @x@ is a @WinCoord@.
--
-- The parameter @y@ is a @WinCoord@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glViewport.xhtml>


glViewport :: MonadIO m => GLint -> GLint -> GLsizei -> GLsizei -> m ()
glViewport = ffiintintsizeisizeiIOV glViewportFunPtr

glViewportFunPtr :: FunPtr (GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glViewportFunPtr = unsafePerformIO (getProcAddress "glViewport")

{-# NOINLINE glViewportFunPtr #-}

-- | Usage: @'glWaitSync' sync flags timeout@
--
-- The parameter @sync@ is a @sync@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glWaitSync.xhtml>


glWaitSync :: MonadIO m => GLsync -> GLbitfield -> GLuint64 -> m ()
glWaitSync = ffisyncbitfielduint64IOV glWaitSyncFunPtr

glWaitSyncFunPtr :: FunPtr (GLsync -> GLbitfield -> GLuint64 -> IO ())
glWaitSyncFunPtr = unsafePerformIO (getProcAddress "glWaitSync")

{-# NOINLINE glWaitSyncFunPtr #-}

pattern GL_ACTIVE_ATTRIBUTES = 0x8B89

pattern GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A

pattern GL_ACTIVE_TEXTURE = 0x84E0

pattern GL_ACTIVE_UNIFORMS = 0x8B86

pattern GL_ACTIVE_UNIFORM_BLOCKS = 0x8A36

pattern GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35

pattern GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87

pattern GL_ALIASED_LINE_WIDTH_RANGE = 0x846E

pattern GL_ALPHA = 0x1906

pattern GL_ALREADY_SIGNALED = 0x911A

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 = 0x0405

pattern GL_BACK_LEFT = 0x0402

pattern GL_BACK_RIGHT = 0x0403

pattern GL_BGR = 0x80E0

pattern GL_BGRA = 0x80E1

pattern GL_BGRA_INTEGER = 0x8D9B

pattern GL_BGR_INTEGER = 0x8D9A

pattern GL_BLEND = 0x0BE2

pattern GL_BLEND_COLOR = 0x8005

pattern GL_BLEND_DST = 0x0BE0

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 = 0x0BE1

pattern GL_BLEND_SRC_ALPHA = 0x80CB

pattern GL_BLEND_SRC_RGB = 0x80C9

pattern GL_BLUE = 0x1905

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_BYTE = 0x1400

pattern GL_CCW = 0x0901

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_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_ATTACHMENT16 = 0x8CF0

pattern GL_COLOR_ATTACHMENT17 = 0x8CF1

pattern GL_COLOR_ATTACHMENT18 = 0x8CF2

pattern GL_COLOR_ATTACHMENT19 = 0x8CF3

pattern GL_COLOR_ATTACHMENT2 = 0x8CE2

pattern GL_COLOR_ATTACHMENT20 = 0x8CF4

pattern GL_COLOR_ATTACHMENT21 = 0x8CF5

pattern GL_COLOR_ATTACHMENT22 = 0x8CF6

pattern GL_COLOR_ATTACHMENT23 = 0x8CF7

pattern GL_COLOR_ATTACHMENT24 = 0x8CF8

pattern GL_COLOR_ATTACHMENT25 = 0x8CF9

pattern GL_COLOR_ATTACHMENT26 = 0x8CFA

pattern GL_COLOR_ATTACHMENT27 = 0x8CFB

pattern GL_COLOR_ATTACHMENT28 = 0x8CFC

pattern GL_COLOR_ATTACHMENT29 = 0x8CFD

pattern GL_COLOR_ATTACHMENT3 = 0x8CE3

pattern GL_COLOR_ATTACHMENT30 = 0x8CFE

pattern GL_COLOR_ATTACHMENT31 = 0x8CFF

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_COLOR_BUFFER_BIT = 0x00004000

pattern GL_COLOR_CLEAR_VALUE = 0x0C22

pattern GL_COLOR_LOGIC_OP = 0x0BF2

pattern GL_COLOR_WRITEMASK = 0x0C23

pattern GL_COMPARE_REF_TO_TEXTURE = 0x884E

pattern GL_COMPILE_STATUS = 0x8B81

pattern GL_COMPRESSED_RED = 0x8225

pattern GL_COMPRESSED_RED_RGTC1 = 0x8DBB

pattern GL_COMPRESSED_RG = 0x8226

pattern GL_COMPRESSED_RGB = 0x84ED

pattern GL_COMPRESSED_RGBA = 0x84EE

pattern GL_COMPRESSED_RG_RGTC2 = 0x8DBD

pattern GL_COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC

pattern GL_COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE

pattern GL_COMPRESSED_SRGB = 0x8C48

pattern GL_COMPRESSED_SRGB_ALPHA = 0x8C49

pattern GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3

pattern GL_CONDITION_SATISFIED = 0x911C

pattern GL_CONSTANT_ALPHA = 0x8003

pattern GL_CONSTANT_COLOR = 0x8001

pattern GL_CONTEXT_FLAGS = 0x821E

pattern GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001

pattern GL_COPY = 0x1503

pattern GL_COPY_INVERTED = 0x150C

pattern GL_COPY_READ_BUFFER = 0x8F36

pattern GL_COPY_WRITE_BUFFER = 0x8F37

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_CW = 0x0900

pattern GL_DECR = 0x1E03

pattern GL_DECR_WRAP = 0x8508

pattern GL_DELETE_STATUS = 0x8B80

pattern GL_DEPTH = 0x1801

pattern GL_DEPTH24_STENCIL8 = 0x88F0

pattern GL_DEPTH32F_STENCIL8 = 0x8CAD

pattern GL_DEPTH_ATTACHMENT = 0x8D00

pattern GL_DEPTH_BUFFER_BIT = 0x00000100

pattern GL_DEPTH_CLAMP = 0x864F

pattern GL_DEPTH_CLEAR_VALUE = 0x0B73

pattern GL_DEPTH_COMPONENT = 0x1902

pattern GL_DEPTH_COMPONENT16 = 0x81A5

pattern GL_DEPTH_COMPONENT24 = 0x81A6

pattern GL_DEPTH_COMPONENT32 = 0x81A7

pattern GL_DEPTH_COMPONENT32F = 0x8CAC

pattern GL_DEPTH_FUNC = 0x0B74

pattern GL_DEPTH_RANGE = 0x0B70

pattern GL_DEPTH_STENCIL = 0x84F9

pattern GL_DEPTH_STENCIL_ATTACHMENT = 0x821A

pattern GL_DEPTH_TEST = 0x0B71

pattern GL_DEPTH_WRITEMASK = 0x0B72

pattern GL_DITHER = 0x0BD0

pattern GL_DONT_CARE = 0x1100

pattern GL_DOUBLE = 0x140A

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_DRAW_FRAMEBUFFER = 0x8CA9

pattern GL_DRAW_FRAMEBUFFER_BINDING = 0x8CA6

pattern GL_DST_ALPHA = 0x0304

pattern GL_DST_COLOR = 0x0306

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_EQUAL = 0x0202

pattern GL_EQUIV = 0x1509

pattern GL_EXTENSIONS = 0x1F03

pattern GL_FALSE = 0

pattern GL_FASTEST = 0x1101

pattern GL_FILL = 0x1B02

pattern GL_FIRST_VERTEX_CONVENTION = 0x8E4D

pattern GL_FIXED_ONLY = 0x891D

pattern GL_FLOAT = 0x1406

pattern GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD

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_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_LAYERED = 0x8DA7

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_LAYER_TARGETS = 0x8DA8

pattern GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7

pattern GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56

pattern GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC

pattern GL_FRAMEBUFFER_SRGB = 0x8DB9

pattern GL_FRAMEBUFFER_UNDEFINED = 0x8219

pattern GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD

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_FUNC_ADD = 0x8006

pattern GL_FUNC_REVERSE_SUBTRACT = 0x800B

pattern GL_FUNC_SUBTRACT = 0x800A

pattern GL_GEOMETRY_INPUT_TYPE = 0x8917

pattern GL_GEOMETRY_OUTPUT_TYPE = 0x8918

pattern GL_GEOMETRY_SHADER = 0x8DD9

pattern GL_GEOMETRY_VERTICES_OUT = 0x8916

pattern GL_GEQUAL = 0x0206

pattern GL_GREATER = 0x0204

pattern GL_GREEN = 0x1904

pattern GL_GREEN_INTEGER = 0x8D95

pattern GL_HALF_FLOAT = 0x140B

pattern GL_INCR = 0x1E02

pattern GL_INCR_WRAP = 0x8507

pattern GL_INDEX = 0x8222

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_MULTISAMPLE = 0x9109

pattern GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C

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_FRAMEBUFFER_OPERATION = 0x0506

pattern GL_INVALID_INDEX = 0xFFFFFFFF

pattern GL_INVALID_OPERATION = 0x0502

pattern GL_INVALID_VALUE = 0x0501

pattern GL_INVERT = 0x150A

pattern GL_KEEP = 0x1E00

pattern GL_LAST_VERTEX_CONVENTION = 0x8E4E

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_LINES_ADJACENCY = 0x000A

pattern GL_LINE_LOOP = 0x0002

pattern GL_LINE_SMOOTH = 0x0B20

pattern GL_LINE_SMOOTH_HINT = 0x0C52

pattern GL_LINE_STRIP = 0x0003

pattern GL_LINE_STRIP_ADJACENCY = 0x000B

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_LOWER_LEFT = 0x8CA1

pattern GL_MAJOR_VERSION = 0x821B

pattern GL_MAP_FLUSH_EXPLICIT_BIT = 0x0010

pattern GL_MAP_INVALIDATE_BUFFER_BIT = 0x0008

pattern GL_MAP_INVALIDATE_RANGE_BIT = 0x0004

pattern GL_MAP_READ_BIT = 0x0001

pattern GL_MAP_UNSYNCHRONIZED_BIT = 0x0020

pattern GL_MAP_WRITE_BIT = 0x0002

pattern GL_MAX = 0x8008

pattern GL_MAX_3D_TEXTURE_SIZE = 0x8073

pattern GL_MAX_ARRAY_TEXTURE_LAYERS = 0x88FF

pattern GL_MAX_CLIP_DISTANCES = 0x0D32

pattern GL_MAX_COLOR_ATTACHMENTS = 0x8CDF

pattern GL_MAX_COLOR_TEXTURE_SAMPLES = 0x910E

pattern GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33

pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32

pattern GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D

pattern GL_MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E

pattern GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31

pattern GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C

pattern GL_MAX_DEPTH_TEXTURE_SAMPLES = 0x910F

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_BLOCKS = 0x8A2D

pattern GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49

pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123

pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124

pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0

pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29

pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1

pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C

pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF

pattern GL_MAX_INTEGER_SAMPLES = 0x9110

pattern GL_MAX_PROGRAM_TEXEL_OFFSET = 0x8905

pattern GL_MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8

pattern GL_MAX_RENDERBUFFER_SIZE = 0x84E8

pattern GL_MAX_SAMPLES = 0x8D57

pattern GL_MAX_SAMPLE_MASK_WORDS = 0x8E59

pattern GL_MAX_SERVER_WAIT_TIMEOUT = 0x9111

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_UNIFORM_BLOCK_SIZE = 0x8A30

pattern GL_MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F

pattern GL_MAX_VARYING_COMPONENTS = 0x8B4B

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_BLOCKS = 0x8A2B

pattern GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A

pattern GL_MAX_VIEWPORT_DIMS = 0x0D3A

pattern GL_MIN = 0x8007

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_NONE = 0

pattern GL_NOOP = 0x1505

pattern GL_NOR = 0x1508

pattern GL_NOTEQUAL = 0x0205

pattern GL_NO_ERROR = 0

pattern GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2

pattern GL_NUM_EXTENSIONS = 0x821D

pattern GL_OBJECT_TYPE = 0x9112

pattern GL_ONE = 1

pattern GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004

pattern GL_ONE_MINUS_CONSTANT_COLOR = 0x8002

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_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_PROVOKING_VERTEX = 0x8E4F

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_2D_MULTISAMPLE = 0x9101

pattern GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103

pattern GL_PROXY_TEXTURE_3D = 0x8070

pattern GL_PROXY_TEXTURE_CUBE_MAP = 0x851B

pattern GL_PROXY_TEXTURE_RECTANGLE = 0x84F7

pattern GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C

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_R16 = 0x822A

pattern GL_R16F = 0x822D

pattern GL_R16I = 0x8233

pattern GL_R16UI = 0x8234

pattern GL_R16_SNORM = 0x8F98

pattern GL_R32F = 0x822E

pattern GL_R32I = 0x8235

pattern GL_R32UI = 0x8236

pattern GL_R3_G3_B2 = 0x2A10

pattern GL_R8 = 0x8229

pattern GL_R8I = 0x8231

pattern GL_R8UI = 0x8232

pattern GL_R8_SNORM = 0x8F94

pattern GL_RASTERIZER_DISCARD = 0x8C89

pattern GL_READ_BUFFER = 0x0C02

pattern GL_READ_FRAMEBUFFER = 0x8CA8

pattern GL_READ_FRAMEBUFFER_BINDING = 0x8CAA

pattern GL_READ_ONLY = 0x88B8

pattern GL_READ_WRITE = 0x88BA

pattern GL_RED = 0x1903

pattern GL_RED_INTEGER = 0x8D94

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_RENDERER = 0x1F01

pattern GL_REPEAT = 0x2901

pattern GL_REPLACE = 0x1E01

pattern GL_RG = 0x8227

pattern GL_RG16 = 0x822C

pattern GL_RG16F = 0x822F

pattern GL_RG16I = 0x8239

pattern GL_RG16UI = 0x823A

pattern GL_RG16_SNORM = 0x8F99

pattern GL_RG32F = 0x8230

pattern GL_RG32I = 0x823B

pattern GL_RG32UI = 0x823C

pattern GL_RG8 = 0x822B

pattern GL_RG8I = 0x8237

pattern GL_RG8UI = 0x8238

pattern GL_RG8_SNORM = 0x8F95

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_RGB16_SNORM = 0x8F9A

pattern GL_RGB32F = 0x8815

pattern GL_RGB32I = 0x8D83

pattern GL_RGB32UI = 0x8D71

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_RGB8_SNORM = 0x8F96

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_RGBA16_SNORM = 0x8F9B

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_RGBA8UI = 0x8D7C

pattern GL_RGBA8_SNORM = 0x8F97

pattern GL_RGBA_INTEGER = 0x8D99

pattern GL_RGB_INTEGER = 0x8D98

pattern GL_RG_INTEGER = 0x8228

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_MULTISAMPLE = 0x9108

pattern GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B

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 = 0x80A9

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_SAMPLE_MASK = 0x8E51

pattern GL_SAMPLE_MASK_VALUE = 0x8E52

pattern GL_SAMPLE_POSITION = 0x8E50

pattern GL_SCISSOR_BOX = 0x0C10

pattern GL_SCISSOR_TEST = 0x0C11

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_SIGNALED = 0x9119

pattern GL_SIGNED_NORMALIZED = 0x8F9C

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_SRC1_ALPHA = 0x8589

pattern GL_SRC_ALPHA = 0x0302

pattern GL_SRC_ALPHA_SATURATE = 0x0308

pattern GL_SRC_COLOR = 0x0300

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_ATTACHMENT = 0x8D20

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_INDEX = 0x1901

pattern GL_STENCIL_INDEX1 = 0x8D46

pattern GL_STENCIL_INDEX16 = 0x8D49

pattern GL_STENCIL_INDEX4 = 0x8D47

pattern GL_STENCIL_INDEX8 = 0x8D48

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_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_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_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_ALPHA_SIZE = 0x805F

pattern GL_TEXTURE_ALPHA_TYPE = 0x8C13

pattern GL_TEXTURE_BASE_LEVEL = 0x813C

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_RECTANGLE = 0x84F6

pattern GL_TEXTURE_BLUE_SIZE = 0x805E

pattern GL_TEXTURE_BLUE_TYPE = 0x8C12

pattern GL_TEXTURE_BORDER_COLOR = 0x1004

pattern GL_TEXTURE_BUFFER = 0x8C2A

pattern GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D

pattern GL_TEXTURE_COMPARE_FUNC = 0x884D

pattern GL_TEXTURE_COMPARE_MODE = 0x884C

pattern GL_TEXTURE_COMPRESSED = 0x86A1

pattern GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0

pattern GL_TEXTURE_COMPRESSION_HINT = 0x84EF

pattern GL_TEXTURE_CUBE_MAP = 0x8513

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_CUBE_MAP_SEAMLESS = 0x884F

pattern GL_TEXTURE_DEPTH = 0x8071

pattern GL_TEXTURE_DEPTH_SIZE = 0x884A

pattern GL_TEXTURE_DEPTH_TYPE = 0x8C16

pattern GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107

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_RECTANGLE = 0x84F5

pattern GL_TEXTURE_RED_SIZE = 0x805C

pattern GL_TEXTURE_RED_TYPE = 0x8C10

pattern GL_TEXTURE_SAMPLES = 0x9106

pattern GL_TEXTURE_SHARED_SIZE = 0x8C3F

pattern GL_TEXTURE_STENCIL_SIZE = 0x88F1

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_TIMEOUT_EXPIRED = 0x911B

pattern GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF

pattern GL_TRANSFORM_FEEDBACK_BUFFER = 0x8C8E

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_TRIANGLES = 0x0004

pattern GL_TRIANGLES_ADJACENCY = 0x000C

pattern GL_TRIANGLE_FAN = 0x0006

pattern GL_TRIANGLE_STRIP = 0x0005

pattern GL_TRIANGLE_STRIP_ADJACENCY = 0x000D

pattern GL_TRUE = 1

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_NAME_LENGTH = 0x8A39

pattern GL_UNIFORM_OFFSET = 0x8A3B

pattern GL_UNIFORM_SIZE = 0x8A38

pattern GL_UNIFORM_TYPE = 0x8A37

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_UNSIGNALED = 0x9118

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 = 0x1405

pattern GL_UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B

pattern GL_UNSIGNED_INT_10_10_10_2 = 0x8036

pattern GL_UNSIGNED_INT_24_8 = 0x84FA

pattern GL_UNSIGNED_INT_2_10_10_10_REV = 0x8368

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_MULTISAMPLE = 0x910A

pattern GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D

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_NORMALIZED = 0x8C17

pattern GL_UNSIGNED_SHORT = 0x1403

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_UPPER_LEFT = 0x8CA2

pattern GL_VALIDATE_STATUS = 0x8B83

pattern GL_VENDOR = 0x1F00

pattern GL_VERSION = 0x1F02

pattern GL_VERTEX_ARRAY_BINDING = 0x85B5

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_VIEWPORT = 0x0BA2

pattern GL_WAIT_FAILED = 0x911D

pattern GL_WRITE_ONLY = 0x88B9

pattern GL_XOR = 0x1506

pattern GL_ZERO = 0

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


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

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

{-# NOINLINE glBindFragDataLocationIndexedFunPtr #-}

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


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

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

{-# NOINLINE glBindSamplerFunPtr #-}

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


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

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

{-# NOINLINE glDeleteSamplersFunPtr #-}

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


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

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

{-# NOINLINE glGenSamplersFunPtr #-}

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


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

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

{-# NOINLINE glGetFragDataIndexFunPtr #-}

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


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

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

{-# NOINLINE glGetQueryObjecti64vFunPtr #-}

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


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

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

{-# NOINLINE glGetQueryObjectui64vFunPtr #-}

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


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

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

{-# NOINLINE glGetSamplerParameterIivFunPtr #-}

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


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

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

{-# NOINLINE glGetSamplerParameterIuivFunPtr #-}

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


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

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

{-# NOINLINE glGetSamplerParameterfvFunPtr #-}

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


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

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

{-# NOINLINE glGetSamplerParameterivFunPtr #-}

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


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

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

{-# NOINLINE glIsSamplerFunPtr #-}

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


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

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

{-# NOINLINE glQueryCounterFunPtr #-}

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


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

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

{-# NOINLINE glSamplerParameterIivFunPtr #-}

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


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

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

{-# NOINLINE glSamplerParameterIuivFunPtr #-}

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


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

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

{-# NOINLINE glSamplerParameterfFunPtr #-}

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


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

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

{-# NOINLINE glSamplerParameterfvFunPtr #-}

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


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

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

{-# NOINLINE glSamplerParameteriFunPtr #-}

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


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

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

{-# NOINLINE glSamplerParameterivFunPtr #-}

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


glVertexAttribDivisor :: MonadIO m => GLuint -> GLuint -> m ()
glVertexAttribDivisor = ffiuintuintIOV glVertexAttribDivisorFunPtr

glVertexAttribDivisorFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexAttribDivisorFunPtr = unsafePerformIO (getProcAddress "glVertexAttribDivisor")

{-# NOINLINE glVertexAttribDivisorFunPtr #-}

-- | Usage: @'glVertexAttribP1ui' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.


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

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

{-# NOINLINE glVertexAttribP1uiFunPtr #-}

-- | Usage: @'glVertexAttribP1uiv' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @1@.


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

-- | Usage: @'glVertexAttribP2ui' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.


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

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

{-# NOINLINE glVertexAttribP2uiFunPtr #-}

-- | Usage: @'glVertexAttribP2uiv' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @1@.


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

-- | Usage: @'glVertexAttribP3ui' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.


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

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

{-# NOINLINE glVertexAttribP3uiFunPtr #-}

-- | Usage: @'glVertexAttribP3uiv' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @1@.


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

-- | Usage: @'glVertexAttribP4ui' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.


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

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

{-# NOINLINE glVertexAttribP4uiFunPtr #-}

-- | Usage: @'glVertexAttribP4uiv' index type normalized value@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @1@.


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

pattern GL_ANY_SAMPLES_PASSED = 0x8C2F

pattern GL_INT_2_10_10_10_REV = 0x8D9F

pattern GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC

pattern GL_ONE_MINUS_SRC1_ALPHA = 0x88FB

pattern GL_ONE_MINUS_SRC1_COLOR = 0x88FA

pattern GL_RGB10_A2UI = 0x906F

pattern GL_SAMPLER_BINDING = 0x8919

pattern GL_SRC1_COLOR = 0x88F9

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

pattern GL_TIMESTAMP = 0x8E28

pattern GL_TIME_ELAPSED = 0x88BF

pattern GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE

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


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

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

{-# NOINLINE glBeginQueryIndexedFunPtr #-}

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


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

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

{-# NOINLINE glBindTransformFeedbackFunPtr #-}

-- | Usage: @'glBlendEquationSeparatei' buf modeRGB modeAlpha@


glBlendEquationSeparatei :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
glBlendEquationSeparatei = ffiuintenumenumIOV glBlendEquationSeparateiFunPtr

glBlendEquationSeparateiFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
glBlendEquationSeparateiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationSeparatei")

{-# NOINLINE glBlendEquationSeparateiFunPtr #-}

-- | Usage: @'glBlendEquationi' buf mode@


glBlendEquationi :: MonadIO m => GLuint -> GLenum -> m ()
glBlendEquationi = ffiuintenumIOV glBlendEquationiFunPtr

glBlendEquationiFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glBlendEquationiFunPtr = unsafePerformIO (getProcAddress "glBlendEquationi")

{-# NOINLINE glBlendEquationiFunPtr #-}

-- | Usage: @'glBlendFuncSeparatei' buf srcRGB dstRGB srcAlpha dstAlpha@


glBlendFuncSeparatei :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
glBlendFuncSeparatei = ffiuintenumenumenumenumIOV glBlendFuncSeparateiFunPtr

glBlendFuncSeparateiFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glBlendFuncSeparateiFunPtr = unsafePerformIO (getProcAddress "glBlendFuncSeparatei")

{-# NOINLINE glBlendFuncSeparateiFunPtr #-}

-- | Usage: @'glBlendFunci' buf src dst@


glBlendFunci :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
glBlendFunci = ffiuintenumenumIOV glBlendFunciFunPtr

glBlendFunciFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
glBlendFunciFunPtr = unsafePerformIO (getProcAddress "glBlendFunci")

{-# NOINLINE glBlendFunciFunPtr #-}

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


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

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

{-# NOINLINE glDeleteTransformFeedbacksFunPtr #-}

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


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

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

{-# NOINLINE glDrawArraysIndirectFunPtr #-}

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


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

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

{-# NOINLINE glDrawElementsIndirectFunPtr #-}

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


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

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

{-# NOINLINE glDrawTransformFeedbackFunPtr #-}

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


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

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

{-# NOINLINE glDrawTransformFeedbackStreamFunPtr #-}

-- | Usage: @'glEndQueryIndexed' target index@


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

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

{-# NOINLINE glEndQueryIndexedFunPtr #-}

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


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

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

{-# NOINLINE glGenTransformFeedbacksFunPtr #-}

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


glGetActiveSubroutineName :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetActiveSubroutineName = ffiuintenumuintsizeiPtrsizeiPtrcharIOV glGetActiveSubroutineNameFunPtr

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

{-# NOINLINE glGetActiveSubroutineNameFunPtr #-}

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


glGetActiveSubroutineUniformName :: MonadIO m => GLuint -> GLenum -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetActiveSubroutineUniformName = ffiuintenumuintsizeiPtrsizeiPtrcharIOV glGetActiveSubroutineUniformNameFunPtr

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

{-# NOINLINE glGetActiveSubroutineUniformNameFunPtr #-}

-- | Usage: @'glGetActiveSubroutineUniformiv' program shadertype index pname values@
--
-- The length of @values@ should be @COMPSIZE(pname)@.


glGetActiveSubroutineUniformiv :: MonadIO m => GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetActiveSubroutineUniformiv = ffiuintenumuintenumPtrintIOV glGetActiveSubroutineUniformivFunPtr

glGetActiveSubroutineUniformivFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetActiveSubroutineUniformivFunPtr = unsafePerformIO (getProcAddress "glGetActiveSubroutineUniformiv")

{-# NOINLINE glGetActiveSubroutineUniformivFunPtr #-}

-- | Usage: @'glGetProgramStageiv' program shadertype pname values@
--
-- The length of @values@ should be @1@.


glGetProgramStageiv :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetProgramStageiv = ffiuintenumenumPtrintIOV glGetProgramStageivFunPtr

glGetProgramStageivFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetProgramStageivFunPtr = unsafePerformIO (getProcAddress "glGetProgramStageiv")

{-# NOINLINE glGetProgramStageivFunPtr #-}

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


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

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


glGetSubroutineIndex :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLuint
glGetSubroutineIndex = ffiuintenumPtrcharIOuint glGetSubroutineIndexFunPtr

glGetSubroutineIndexFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLchar -> IO GLuint)
glGetSubroutineIndexFunPtr = unsafePerformIO (getProcAddress "glGetSubroutineIndex")

{-# NOINLINE glGetSubroutineIndexFunPtr #-}

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


glGetSubroutineUniformLocation :: MonadIO m => GLuint -> GLenum -> Ptr GLchar -> m GLint
glGetSubroutineUniformLocation = ffiuintenumPtrcharIOint glGetSubroutineUniformLocationFunPtr

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

{-# NOINLINE glGetSubroutineUniformLocationFunPtr #-}

-- | Usage: @'glGetUniformSubroutineuiv' shadertype location params@
--
-- The length of @params@ should be @1@.


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

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

{-# NOINLINE glGetUniformSubroutineuivFunPtr #-}

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


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

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

{-# NOINLINE glGetUniformdvFunPtr #-}

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


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

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

{-# NOINLINE glIsTransformFeedbackFunPtr #-}

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


glMinSampleShading :: MonadIO m => GLfloat -> m ()
glMinSampleShading = ffifloatIOV glMinSampleShadingFunPtr

glMinSampleShadingFunPtr :: FunPtr (GLfloat -> IO ())
glMinSampleShadingFunPtr = unsafePerformIO (getProcAddress "glMinSampleShading")

{-# NOINLINE glMinSampleShadingFunPtr #-}

-- | Usage: @'glPatchParameterfv' pname values@
--
-- The length of @values@ should be @COMPSIZE(pname)@.


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

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

{-# NOINLINE glPatchParameterfvFunPtr #-}

-- | Usage: @'glPatchParameteri' pname value@


glPatchParameteri :: MonadIO m => GLenum -> GLint -> m ()
glPatchParameteri = ffienumintIOV glPatchParameteriFunPtr

glPatchParameteriFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glPatchParameteriFunPtr = unsafePerformIO (getProcAddress "glPatchParameteri")

{-# NOINLINE glPatchParameteriFunPtr #-}

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


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

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

{-# NOINLINE glPauseTransformFeedbackFunPtr #-}

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


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

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

{-# NOINLINE glResumeTransformFeedbackFunPtr #-}

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


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

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

{-# NOINLINE glUniform1dFunPtr #-}

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


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

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

{-# NOINLINE glUniform1dvFunPtr #-}

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


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

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

{-# NOINLINE glUniform2dFunPtr #-}

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


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

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

{-# NOINLINE glUniform2dvFunPtr #-}

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


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

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

{-# NOINLINE glUniform3dFunPtr #-}

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


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

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

{-# NOINLINE glUniform3dvFunPtr #-}

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


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

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

{-# NOINLINE glUniform4dFunPtr #-}

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


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

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

{-# NOINLINE glUniform4dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix2dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix2x3dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix2x4dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix3dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix3x2dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix3x4dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix4dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix4x2dvFunPtr #-}

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


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

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

{-# NOINLINE glUniformMatrix4x3dvFunPtr #-}

-- | Usage: @'glUniformSubroutinesuiv' shadertype count indices@
--
-- The length of @indices@ should be @count@.


glUniformSubroutinesuiv :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glUniformSubroutinesuiv = ffienumsizeiPtruintIOV glUniformSubroutinesuivFunPtr

glUniformSubroutinesuivFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glUniformSubroutinesuivFunPtr = unsafePerformIO (getProcAddress "glUniformSubroutinesuiv")

{-# NOINLINE glUniformSubroutinesuivFunPtr #-}

pattern GL_ACTIVE_SUBROUTINES = 0x8DE5

pattern GL_ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48

pattern GL_ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6

pattern GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47

pattern GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49

pattern GL_COMPATIBLE_SUBROUTINES = 0x8E4B

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_DRAW_INDIRECT_BUFFER = 0x8F3F

pattern GL_DRAW_INDIRECT_BUFFER_BINDING = 0x8F43

pattern GL_FRACTIONAL_EVEN = 0x8E7C

pattern GL_FRACTIONAL_ODD = 0x8E7B

pattern GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D

pattern GL_GEOMETRY_SHADER_INVOCATIONS = 0x887F

pattern GL_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E

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_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C

pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A

pattern GL_MAX_PATCH_VERTICES = 0x8E7D

pattern GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F

pattern GL_MAX_SUBROUTINES = 0x8DE7

pattern GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8

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_MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70

pattern GL_MAX_VERTEX_STREAMS = 0x8E71

pattern GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B

pattern GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E

pattern GL_MIN_SAMPLE_SHADING_VALUE = 0x8C37

pattern GL_NUM_COMPATIBLE_SUBROUTINES = 0x8E4A

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_SAMPLER_CUBE_MAP_ARRAY = 0x900C

pattern GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D

pattern GL_SAMPLE_SHADING = 0x8C36

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_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A

pattern GL_TEXTURE_CUBE_MAP_ARRAY = 0x9009

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

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0

pattern GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1

pattern GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F

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


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

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

{-# NOINLINE glActiveShaderProgramFunPtr #-}

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


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

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

{-# NOINLINE glBindProgramPipelineFunPtr #-}

-- | Usage: @'glClearDepthf' d@


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

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

{-# NOINLINE glClearDepthfFunPtr #-}

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


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

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

{-# NOINLINE glCreateShaderProgramvFunPtr #-}

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


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

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

{-# NOINLINE glDeleteProgramPipelinesFunPtr #-}

-- | Usage: @'glDepthRangeArrayv' first count v@
--
-- The length of @v@ should be @COMPSIZE(count)@.


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

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

{-# NOINLINE glDepthRangeArrayvFunPtr #-}

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


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

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

{-# NOINLINE glDepthRangeIndexedFunPtr #-}

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


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

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

{-# NOINLINE glDepthRangefFunPtr #-}

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


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

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

{-# NOINLINE glGenProgramPipelinesFunPtr #-}

-- | Usage: @'glGetDoublei_v' target index data@
--
-- The length of @data@ should be @COMPSIZE(target)@.


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

-- | Usage: @'glGetFloati_v' target index data@
--
-- The parameter @target@ is a @TypeEnum@.
--
-- The length of @data@ should be @COMPSIZE(target)@.


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

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


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

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

{-# NOINLINE glGetProgramBinaryFunPtr #-}

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


glGetProgramPipelineInfoLog :: MonadIO m => GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetProgramPipelineInfoLog = ffiuintsizeiPtrsizeiPtrcharIOV glGetProgramPipelineInfoLogFunPtr

glGetProgramPipelineInfoLogFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetProgramPipelineInfoLogFunPtr = unsafePerformIO (getProcAddress "glGetProgramPipelineInfoLog")

{-# NOINLINE glGetProgramPipelineInfoLogFunPtr #-}

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


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

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

{-# NOINLINE glGetProgramPipelineivFunPtr #-}

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


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

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

{-# NOINLINE glGetShaderPrecisionFormatFunPtr #-}

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


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

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

{-# NOINLINE glGetVertexAttribLdvFunPtr #-}

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


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

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

{-# NOINLINE glIsProgramPipelineFunPtr #-}

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


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

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

{-# NOINLINE glProgramBinaryFunPtr #-}

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


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

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

{-# NOINLINE glProgramParameteriFunPtr #-}

-- | Usage: @'glProgramUniform1d' program location v0@


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

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

{-# NOINLINE glProgramUniform1dFunPtr #-}

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


glProgramUniform1dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform1dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform1dvFunPtr

glProgramUniform1dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform1dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1dv")

{-# NOINLINE glProgramUniform1dvFunPtr #-}

-- | Usage: @'glProgramUniform1f' program location v0@


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

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

{-# NOINLINE glProgramUniform1fFunPtr #-}

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


glProgramUniform1fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform1fv = ffiuintintsizeiPtrfloatIOV glProgramUniform1fvFunPtr

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

{-# NOINLINE glProgramUniform1fvFunPtr #-}

-- | Usage: @'glProgramUniform1i' program location v0@


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

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

{-# NOINLINE glProgramUniform1iFunPtr #-}

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


glProgramUniform1iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform1iv = ffiuintintsizeiPtrintIOV glProgramUniform1ivFunPtr

glProgramUniform1ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform1ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1iv")

{-# NOINLINE glProgramUniform1ivFunPtr #-}

-- | Usage: @'glProgramUniform1ui' program location v0@


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

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

{-# NOINLINE glProgramUniform1uiFunPtr #-}

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


glProgramUniform1uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform1uiv = ffiuintintsizeiPtruintIOV glProgramUniform1uivFunPtr

glProgramUniform1uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform1uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1uiv")

{-# NOINLINE glProgramUniform1uivFunPtr #-}

-- | Usage: @'glProgramUniform2d' program location v0 v1@


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

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

{-# NOINLINE glProgramUniform2dFunPtr #-}

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


glProgramUniform2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform2dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform2dvFunPtr

glProgramUniform2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2dv")

{-# NOINLINE glProgramUniform2dvFunPtr #-}

-- | Usage: @'glProgramUniform2f' program location v0 v1@


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

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

{-# NOINLINE glProgramUniform2fFunPtr #-}

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


glProgramUniform2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform2fv = ffiuintintsizeiPtrfloatIOV glProgramUniform2fvFunPtr

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

{-# NOINLINE glProgramUniform2fvFunPtr #-}

-- | Usage: @'glProgramUniform2i' program location v0 v1@


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

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

{-# NOINLINE glProgramUniform2iFunPtr #-}

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


glProgramUniform2iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform2iv = ffiuintintsizeiPtrintIOV glProgramUniform2ivFunPtr

glProgramUniform2ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform2ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2iv")

{-# NOINLINE glProgramUniform2ivFunPtr #-}

-- | Usage: @'glProgramUniform2ui' program location v0 v1@


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

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

{-# NOINLINE glProgramUniform2uiFunPtr #-}

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


glProgramUniform2uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform2uiv = ffiuintintsizeiPtruintIOV glProgramUniform2uivFunPtr

glProgramUniform2uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform2uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2uiv")

{-# NOINLINE glProgramUniform2uivFunPtr #-}

-- | Usage: @'glProgramUniform3d' program location v0 v1 v2@


glProgramUniform3d :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramUniform3d = ffiuintintdoubledoubledoubleIOV glProgramUniform3dFunPtr

glProgramUniform3dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramUniform3dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3d")

{-# NOINLINE glProgramUniform3dFunPtr #-}

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


glProgramUniform3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform3dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform3dvFunPtr

glProgramUniform3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3dv")

{-# NOINLINE glProgramUniform3dvFunPtr #-}

-- | Usage: @'glProgramUniform3f' program location v0 v1 v2@


glProgramUniform3f :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramUniform3f = ffiuintintfloatfloatfloatIOV glProgramUniform3fFunPtr

glProgramUniform3fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramUniform3fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3f")

{-# NOINLINE glProgramUniform3fFunPtr #-}

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


glProgramUniform3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform3fv = ffiuintintsizeiPtrfloatIOV glProgramUniform3fvFunPtr

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

{-# NOINLINE glProgramUniform3fvFunPtr #-}

-- | Usage: @'glProgramUniform3i' program location v0 v1 v2@


glProgramUniform3i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
glProgramUniform3i = ffiuintintintintintIOV glProgramUniform3iFunPtr

glProgramUniform3iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform3iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i")

{-# NOINLINE glProgramUniform3iFunPtr #-}

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


glProgramUniform3iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform3iv = ffiuintintsizeiPtrintIOV glProgramUniform3ivFunPtr

glProgramUniform3ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform3ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3iv")

{-# NOINLINE glProgramUniform3ivFunPtr #-}

-- | Usage: @'glProgramUniform3ui' program location v0 v1 v2@


glProgramUniform3ui :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> GLuint -> m ()
glProgramUniform3ui = ffiuintintuintuintuintIOV glProgramUniform3uiFunPtr

glProgramUniform3uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ())
glProgramUniform3uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui")

{-# NOINLINE glProgramUniform3uiFunPtr #-}

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


glProgramUniform3uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform3uiv = ffiuintintsizeiPtruintIOV glProgramUniform3uivFunPtr

glProgramUniform3uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform3uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3uiv")

{-# NOINLINE glProgramUniform3uivFunPtr #-}

-- | Usage: @'glProgramUniform4d' program location v0 v1 v2 v3@


glProgramUniform4d :: MonadIO m => GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramUniform4d = ffiuintintdoubledoubledoubledoubleIOV glProgramUniform4dFunPtr

glProgramUniform4dFunPtr :: FunPtr (GLuint -> GLint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramUniform4dFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4d")

{-# NOINLINE glProgramUniform4dFunPtr #-}

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


glProgramUniform4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLdouble -> m ()
glProgramUniform4dv = ffiuintintsizeiPtrdoubleIOV glProgramUniform4dvFunPtr

glProgramUniform4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLdouble -> IO ())
glProgramUniform4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4dv")

{-# NOINLINE glProgramUniform4dvFunPtr #-}

-- | Usage: @'glProgramUniform4f' program location v0 v1 v2 v3@


glProgramUniform4f :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramUniform4f = ffiuintintfloatfloatfloatfloatIOV glProgramUniform4fFunPtr

glProgramUniform4fFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramUniform4fFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4f")

{-# NOINLINE glProgramUniform4fFunPtr #-}

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


glProgramUniform4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLfloat -> m ()
glProgramUniform4fv = ffiuintintsizeiPtrfloatIOV glProgramUniform4fvFunPtr

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

{-# NOINLINE glProgramUniform4fvFunPtr #-}

-- | Usage: @'glProgramUniform4i' program location v0 v1 v2 v3@


glProgramUniform4i :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> m ()
glProgramUniform4i = ffiuintintintintintintIOV glProgramUniform4iFunPtr

glProgramUniform4iFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform4iFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i")

{-# NOINLINE glProgramUniform4iFunPtr #-}

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


glProgramUniform4iv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint -> m ()
glProgramUniform4iv = ffiuintintsizeiPtrintIOV glProgramUniform4ivFunPtr

glProgramUniform4ivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint -> IO ())
glProgramUniform4ivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4iv")

{-# NOINLINE glProgramUniform4ivFunPtr #-}

-- | Usage: @'glProgramUniform4ui' program location v0 v1 v2 v3@


glProgramUniform4ui :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glProgramUniform4ui = ffiuintintuintuintuintuintIOV glProgramUniform4uiFunPtr

glProgramUniform4uiFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glProgramUniform4uiFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui")

{-# NOINLINE glProgramUniform4uiFunPtr #-}

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


glProgramUniform4uiv :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint -> m ()
glProgramUniform4uiv = ffiuintintsizeiPtruintIOV glProgramUniform4uivFunPtr

glProgramUniform4uivFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint -> IO ())
glProgramUniform4uivFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4uiv")

{-# NOINLINE glProgramUniform4uivFunPtr #-}

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


glProgramUniformMatrix2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix2dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2dvFunPtr

glProgramUniformMatrix2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2dv")

{-# NOINLINE glProgramUniformMatrix2dvFunPtr #-}

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


glProgramUniformMatrix2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2fvFunPtr

glProgramUniformMatrix2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2fv")

{-# NOINLINE glProgramUniformMatrix2fvFunPtr #-}

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


glProgramUniformMatrix2x3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix2x3dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2x3dvFunPtr

glProgramUniformMatrix2x3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix2x3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x3dv")

{-# NOINLINE glProgramUniformMatrix2x3dvFunPtr #-}

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


glProgramUniformMatrix2x3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2x3fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2x3fvFunPtr

glProgramUniformMatrix2x3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2x3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x3fv")

{-# NOINLINE glProgramUniformMatrix2x3fvFunPtr #-}

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


glProgramUniformMatrix2x4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix2x4dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix2x4dvFunPtr

glProgramUniformMatrix2x4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix2x4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x4dv")

{-# NOINLINE glProgramUniformMatrix2x4dvFunPtr #-}

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


glProgramUniformMatrix2x4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix2x4fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix2x4fvFunPtr

glProgramUniformMatrix2x4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix2x4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix2x4fv")

{-# NOINLINE glProgramUniformMatrix2x4fvFunPtr #-}

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


glProgramUniformMatrix3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix3dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3dvFunPtr

glProgramUniformMatrix3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3dv")

{-# NOINLINE glProgramUniformMatrix3dvFunPtr #-}

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


glProgramUniformMatrix3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3fvFunPtr

glProgramUniformMatrix3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3fv")

{-# NOINLINE glProgramUniformMatrix3fvFunPtr #-}

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


glProgramUniformMatrix3x2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix3x2dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3x2dvFunPtr

glProgramUniformMatrix3x2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix3x2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x2dv")

{-# NOINLINE glProgramUniformMatrix3x2dvFunPtr #-}

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


glProgramUniformMatrix3x2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3x2fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3x2fvFunPtr

glProgramUniformMatrix3x2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3x2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x2fv")

{-# NOINLINE glProgramUniformMatrix3x2fvFunPtr #-}

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


glProgramUniformMatrix3x4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix3x4dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix3x4dvFunPtr

glProgramUniformMatrix3x4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix3x4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x4dv")

{-# NOINLINE glProgramUniformMatrix3x4dvFunPtr #-}

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


glProgramUniformMatrix3x4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix3x4fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix3x4fvFunPtr

glProgramUniformMatrix3x4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix3x4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix3x4fv")

{-# NOINLINE glProgramUniformMatrix3x4fvFunPtr #-}

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


glProgramUniformMatrix4dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix4dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4dvFunPtr

glProgramUniformMatrix4dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix4dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4dv")

{-# NOINLINE glProgramUniformMatrix4dvFunPtr #-}

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


glProgramUniformMatrix4fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4fvFunPtr

glProgramUniformMatrix4fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4fv")

{-# NOINLINE glProgramUniformMatrix4fvFunPtr #-}

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


glProgramUniformMatrix4x2dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix4x2dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4x2dvFunPtr

glProgramUniformMatrix4x2dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix4x2dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x2dv")

{-# NOINLINE glProgramUniformMatrix4x2dvFunPtr #-}

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


glProgramUniformMatrix4x2fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4x2fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4x2fvFunPtr

glProgramUniformMatrix4x2fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4x2fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x2fv")

{-# NOINLINE glProgramUniformMatrix4x2fvFunPtr #-}

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


glProgramUniformMatrix4x3dv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> m ()
glProgramUniformMatrix4x3dv = ffiuintintsizeibooleanPtrdoubleIOV glProgramUniformMatrix4x3dvFunPtr

glProgramUniformMatrix4x3dvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLdouble -> IO ())
glProgramUniformMatrix4x3dvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x3dv")

{-# NOINLINE glProgramUniformMatrix4x3dvFunPtr #-}

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


glProgramUniformMatrix4x3fv :: MonadIO m => GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glProgramUniformMatrix4x3fv = ffiuintintsizeibooleanPtrfloatIOV glProgramUniformMatrix4x3fvFunPtr

glProgramUniformMatrix4x3fvFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glProgramUniformMatrix4x3fvFunPtr = unsafePerformIO (getProcAddress "glProgramUniformMatrix4x3fv")

{-# NOINLINE glProgramUniformMatrix4x3fvFunPtr #-}

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


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

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

{-# NOINLINE glReleaseShaderCompilerFunPtr #-}

-- | Usage: @'glScissorArrayv' first count v@
--
-- The length of @v@ should be @COMPSIZE(count)@.


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

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

{-# NOINLINE glScissorArrayvFunPtr #-}

-- | Usage: @'glScissorIndexed' index left bottom width height@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glScissorIndexed.xhtml>


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

-- | Usage: @'glScissorIndexedv' index v@
--
-- The length of @v@ should be @4@.


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

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

{-# NOINLINE glScissorIndexedvFunPtr #-}

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


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

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

{-# NOINLINE glShaderBinaryFunPtr #-}

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


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

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

{-# NOINLINE glUseProgramStagesFunPtr #-}

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


glValidateProgramPipeline :: MonadIO m => GLuint -> m ()
glValidateProgramPipeline = ffiuintIOV glValidateProgramPipelineFunPtr

glValidateProgramPipelineFunPtr :: FunPtr (GLuint -> IO ())
glValidateProgramPipelineFunPtr = unsafePerformIO (getProcAddress "glValidateProgramPipeline")

{-# NOINLINE glValidateProgramPipelineFunPtr #-}

-- | Usage: @'glVertexAttribL1d' index x@


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

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

{-# NOINLINE glVertexAttribL1dFunPtr #-}

-- | Usage: @'glVertexAttribL1dv' index v@
--
-- The length of @v@ should be @1@.


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

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

{-# NOINLINE glVertexAttribL1dvFunPtr #-}

-- | Usage: @'glVertexAttribL2d' index x y@


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

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

{-# NOINLINE glVertexAttribL2dFunPtr #-}

-- | Usage: @'glVertexAttribL2dv' index v@
--
-- The length of @v@ should be @2@.


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

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

{-# NOINLINE glVertexAttribL2dvFunPtr #-}

-- | Usage: @'glVertexAttribL3d' index x y z@


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

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

{-# NOINLINE glVertexAttribL3dFunPtr #-}

-- | Usage: @'glVertexAttribL3dv' index v@
--
-- The length of @v@ should be @3@.


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

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

{-# NOINLINE glVertexAttribL3dvFunPtr #-}

-- | Usage: @'glVertexAttribL4d' index x y z w@


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

-- | Usage: @'glVertexAttribL4dv' index v@
--
-- The length of @v@ should be @4@.


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

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

{-# NOINLINE glVertexAttribL4dvFunPtr #-}

-- | Usage: @'glVertexAttribLPointer' index size type stride pointer@
--
-- The length of @pointer@ should be @size@.


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

-- | Usage: @'glViewportArrayv' first count v@
--
-- The length of @v@ should be @COMPSIZE(count)@.


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

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

{-# NOINLINE glViewportArrayvFunPtr #-}

-- | Usage: @'glViewportIndexedf' index x y w h@


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

-- | Usage: @'glViewportIndexedfv' index v@
--
-- The length of @v@ should be @4@.


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

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

{-# NOINLINE glViewportIndexedfvFunPtr #-}

pattern GL_ACTIVE_PROGRAM = 0x8259

pattern GL_ALL_SHADER_BITS = 0xFFFFFFFF

pattern GL_FIXED = 0x140C

pattern GL_FRAGMENT_SHADER_BIT = 0x00000002

pattern GL_GEOMETRY_SHADER_BIT = 0x00000004

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_LAYER_PROVOKING_VERTEX = 0x825E

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_MAX_VIEWPORTS = 0x825B

pattern GL_MEDIUM_FLOAT = 0x8DF1

pattern GL_MEDIUM_INT = 0x8DF4

pattern GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE

pattern GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9

pattern GL_PROGRAM_BINARY_FORMATS = 0x87FF

pattern GL_PROGRAM_BINARY_LENGTH = 0x8741

pattern GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257

pattern GL_PROGRAM_PIPELINE_BINDING = 0x825A

pattern GL_PROGRAM_SEPARABLE = 0x8258

pattern GL_RGB565 = 0x8D62

pattern GL_SHADER_BINARY_FORMATS = 0x8DF8

pattern GL_SHADER_COMPILER = 0x8DFA

pattern GL_TESS_CONTROL_SHADER_BIT = 0x00000008

pattern GL_TESS_EVALUATION_SHADER_BIT = 0x00000010

pattern GL_UNDEFINED_VERTEX = 0x8260

pattern GL_VERTEX_SHADER_BIT = 0x00000001

pattern GL_VIEWPORT_BOUNDS_RANGE = 0x825D

pattern GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F

pattern GL_VIEWPORT_SUBPIXEL_BITS = 0x825C

-- | Usage: @'glBindImageTexture' unit texture level layered layer access format@
--
-- The parameter @layered@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindImageTexture.xhtml>


glBindImageTexture :: MonadIO m => GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> m ()
glBindImageTexture = ffiuintuintintbooleanintenumenumIOV glBindImageTextureFunPtr

glBindImageTextureFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLboolean -> GLint -> GLenum -> GLenum -> IO ())
glBindImageTextureFunPtr = unsafePerformIO (getProcAddress "glBindImageTexture")

{-# NOINLINE glBindImageTextureFunPtr #-}

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


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

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

{-# NOINLINE glDrawArraysInstancedBaseInstanceFunPtr #-}

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


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

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

{-# NOINLINE glDrawElementsInstancedBaseInstanceFunPtr #-}

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


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

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

{-# NOINLINE glDrawElementsInstancedBaseVertexBaseInstanceFunPtr #-}

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


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

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

{-# NOINLINE glDrawTransformFeedbackInstancedFunPtr #-}

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


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

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

{-# NOINLINE glDrawTransformFeedbackStreamInstancedFunPtr #-}

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


glGetActiveAtomicCounterBufferiv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetActiveAtomicCounterBufferiv = ffiuintuintenumPtrintIOV glGetActiveAtomicCounterBufferivFunPtr

glGetActiveAtomicCounterBufferivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetActiveAtomicCounterBufferivFunPtr = unsafePerformIO (getProcAddress "glGetActiveAtomicCounterBufferiv")

{-# NOINLINE glGetActiveAtomicCounterBufferivFunPtr #-}

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


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

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

{-# NOINLINE glGetInternalformativFunPtr #-}

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


glMemoryBarrier :: MonadIO m => GLbitfield -> m ()
glMemoryBarrier = ffibitfieldIOV glMemoryBarrierFunPtr

glMemoryBarrierFunPtr :: FunPtr (GLbitfield -> IO ())
glMemoryBarrierFunPtr = unsafePerformIO (getProcAddress "glMemoryBarrier")

{-# NOINLINE glMemoryBarrierFunPtr #-}

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


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

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

{-# NOINLINE glTexStorage1DFunPtr #-}

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


glTexStorage2D :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTexStorage2D = ffienumsizeienumsizeisizeiIOV glTexStorage2DFunPtr

glTexStorage2DFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTexStorage2DFunPtr = unsafePerformIO (getProcAddress "glTexStorage2D")

{-# NOINLINE glTexStorage2DFunPtr #-}

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


glTexStorage3D :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTexStorage3D = ffienumsizeienumsizeisizeisizeiIOV glTexStorage3DFunPtr

glTexStorage3DFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTexStorage3DFunPtr = unsafePerformIO (getProcAddress "glTexStorage3D")

{-# NOINLINE glTexStorage3DFunPtr #-}

pattern GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9

pattern GL_ALL_BARRIER_BITS = 0xFFFFFFFF

pattern GL_ATOMIC_COUNTER_BARRIER_BIT = 0x00001000

pattern GL_ATOMIC_COUNTER_BUFFER = 0x92C0

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_BUFFER_UPDATE_BARRIER_BIT = 0x00000200

pattern GL_COMMAND_BARRIER_BIT = 0x00000040

pattern GL_COPY_READ_BUFFER_BINDING = 0x8F36

pattern GL_COPY_WRITE_BUFFER_BINDING = 0x8F37

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_IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7

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_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_COMBINED_IMAGE_UNIFORMS = 0x90CF

pattern GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39

pattern GL_MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6

pattern GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0

pattern GL_MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE

pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5

pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF

pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD

pattern GL_MAX_IMAGE_SAMPLES = 0x906D

pattern GL_MAX_IMAGE_UNITS = 0x8F38

pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3

pattern GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD

pattern GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB

pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4

pattern GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE

pattern GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC

pattern GL_MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2

pattern GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC

pattern GL_MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA

pattern GL_MIN_MAP_BUFFER_ALIGNMENT = 0x90BC

pattern GL_NUM_SAMPLE_COUNTS = 0x9380

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_PIXEL_BUFFER_BARRIER_BIT = 0x00000080

pattern GL_SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020

pattern GL_TEXTURE_FETCH_BARRIER_BIT = 0x00000008

pattern GL_TEXTURE_IMMUTABLE_FORMAT = 0x912F

pattern GL_TEXTURE_UPDATE_BARRIER_BIT = 0x00000100

pattern GL_TRANSFORM_FEEDBACK_ACTIVE = 0x8E24

pattern GL_TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800

pattern GL_TRANSFORM_FEEDBACK_PAUSED = 0x8E23

pattern GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA

pattern GL_UNIFORM_BARRIER_BIT = 0x00000004

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

pattern GL_UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB

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

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


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

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

{-# NOINLINE glBindVertexBufferFunPtr #-}

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


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

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

{-# NOINLINE glClearBufferDataFunPtr #-}

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


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

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

{-# NOINLINE glClearBufferSubDataFunPtr #-}

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


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

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

{-# NOINLINE glCopyImageSubDataFunPtr #-}

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


glDebugMessageCallback :: MonadIO m => GLDEBUGPROC -> Ptr () -> m ()
glDebugMessageCallback = ffiDEBUGPROCPtrVIOV glDebugMessageCallbackFunPtr

glDebugMessageCallbackFunPtr :: FunPtr (GLDEBUGPROC -> Ptr () -> IO ())
glDebugMessageCallbackFunPtr = unsafePerformIO (getProcAddress "glDebugMessageCallback")

{-# NOINLINE glDebugMessageCallbackFunPtr #-}

-- | Usage: @'glDebugMessageControl' source type severity count ids enabled@
--
-- The parameter @enabled@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @ids@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDebugMessageControl.xhtml>


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

-- | Usage: @'glDebugMessageInsert' source type id severity length buf@
--
-- The length of @buf@ should be @COMPSIZE(buf,length)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glDebugMessageInsert.xhtml>


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

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


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

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

{-# NOINLINE glDispatchComputeFunPtr #-}

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


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

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

{-# NOINLINE glDispatchComputeIndirectFunPtr #-}

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


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

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

{-# NOINLINE glFramebufferParameteriFunPtr #-}

-- | Usage: @'glGetDebugMessageLog' count bufSize sources types ids severities lengths messageLog@
--
-- The length of @sources@ should be @count@.
--
-- The length of @types@ should be @count@.
--
-- The length of @ids@ should be @count@.
--
-- The length of @severities@ should be @count@.
--
-- The length of @lengths@ should be @count@.
--
-- The length of @messageLog@ should be @bufSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetDebugMessageLog.xhtml>


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

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


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

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

{-# NOINLINE glGetFramebufferParameterivFunPtr #-}

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


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

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

{-# NOINLINE glGetInternalformati64vFunPtr #-}

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


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

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


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

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


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

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

{-# NOINLINE glGetProgramInterfaceivFunPtr #-}

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


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

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

{-# NOINLINE glGetProgramResourceIndexFunPtr #-}

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


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

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

{-# NOINLINE glGetProgramResourceLocationFunPtr #-}

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


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

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

{-# NOINLINE glGetProgramResourceLocationIndexFunPtr #-}

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


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

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

{-# NOINLINE glGetProgramResourceNameFunPtr #-}

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


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

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

{-# NOINLINE glGetProgramResourceivFunPtr #-}

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


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

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

{-# NOINLINE glInvalidateBufferDataFunPtr #-}

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


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

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

{-# NOINLINE glInvalidateBufferSubDataFunPtr #-}

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


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

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

{-# NOINLINE glInvalidateFramebufferFunPtr #-}

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


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

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

{-# NOINLINE glInvalidateSubFramebufferFunPtr #-}

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


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

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

{-# NOINLINE glInvalidateTexImageFunPtr #-}

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


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

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

{-# NOINLINE glInvalidateTexSubImageFunPtr #-}

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


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

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

{-# NOINLINE glMultiDrawArraysIndirectFunPtr #-}

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


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

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

{-# NOINLINE glMultiDrawElementsIndirectFunPtr #-}

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


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

-- | Usage: @'glObjectPtrLabel' ptr length label@
--
-- The length of @label@ should be @COMPSIZE(label,length)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glObjectPtrLabel.xhtml>


glObjectPtrLabel :: MonadIO m => Ptr () -> GLsizei -> Ptr GLchar -> m ()
glObjectPtrLabel = ffiPtrVsizeiPtrcharIOV glObjectPtrLabelFunPtr

glObjectPtrLabelFunPtr :: FunPtr (Ptr () -> GLsizei -> Ptr GLchar -> IO ())
glObjectPtrLabelFunPtr = unsafePerformIO (getProcAddress "glObjectPtrLabel")

{-# NOINLINE glObjectPtrLabelFunPtr #-}

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


glPopDebugGroup :: MonadIO m => m ()
glPopDebugGroup = ffiIOV glPopDebugGroupFunPtr

glPopDebugGroupFunPtr :: FunPtr (IO ())
glPopDebugGroupFunPtr = unsafePerformIO (getProcAddress "glPopDebugGroup")

{-# NOINLINE glPopDebugGroupFunPtr #-}

-- | Usage: @'glPushDebugGroup' source id length message@
--
-- The length of @message@ should be @COMPSIZE(message,length)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glPushDebugGroup.xhtml>


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

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


glShaderStorageBlockBinding :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glShaderStorageBlockBinding = ffiuintuintuintIOV glShaderStorageBlockBindingFunPtr

glShaderStorageBlockBindingFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glShaderStorageBlockBindingFunPtr = unsafePerformIO (getProcAddress "glShaderStorageBlockBinding")

{-# NOINLINE glShaderStorageBlockBindingFunPtr #-}

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


glTexBufferRange :: MonadIO m => GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
glTexBufferRange = ffienumenumuintintptrsizeiptrIOV glTexBufferRangeFunPtr

glTexBufferRangeFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
glTexBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTexBufferRange")

{-# NOINLINE glTexBufferRangeFunPtr #-}

-- | Usage: @'glTexStorage2DMultisample' target samples internalformat width height fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage2DMultisample.xhtml>


glTexStorage2DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexStorage2DMultisample = ffienumsizeienumsizeisizeibooleanIOV glTexStorage2DMultisampleFunPtr

glTexStorage2DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexStorage2DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexStorage2DMultisample")

{-# NOINLINE glTexStorage2DMultisampleFunPtr #-}

-- | Usage: @'glTexStorage3DMultisample' target samples internalformat width height depth fixedsamplelocations@
--
-- The parameter @fixedsamplelocations@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTexStorage3DMultisample.xhtml>


glTexStorage3DMultisample :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
glTexStorage3DMultisample = ffienumsizeienumsizeisizeisizeibooleanIOV glTexStorage3DMultisampleFunPtr

glTexStorage3DMultisampleFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTexStorage3DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTexStorage3DMultisample")

{-# NOINLINE glTexStorage3DMultisampleFunPtr #-}

-- | Usage: @'glTextureView' texture target origtexture internalformat minlevel numlevels minlayer numlayers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTextureView.xhtml>


glTextureView :: MonadIO m => GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glTextureView = ffiuintenumuintenumuintuintuintuintIOV glTextureViewFunPtr

glTextureViewFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glTextureViewFunPtr = unsafePerformIO (getProcAddress "glTextureView")

{-# NOINLINE glTextureViewFunPtr #-}

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


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

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

{-# NOINLINE glVertexAttribBindingFunPtr #-}

-- | Usage: @'glVertexAttribFormat' attribindex size type normalized relativeoffset@
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glVertexAttribFormat.xhtml>


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

-- | Usage: @'glVertexAttribIFormat' attribindex size type relativeoffset@


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

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

{-# NOINLINE glVertexAttribIFormatFunPtr #-}

-- | Usage: @'glVertexAttribLFormat' attribindex size type relativeoffset@


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

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

{-# NOINLINE glVertexAttribLFormatFunPtr #-}

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


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

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

{-# NOINLINE glVertexBindingDivisorFunPtr #-}

pattern GL_ACTIVE_RESOURCES = 0x92F5

pattern GL_ACTIVE_VARIABLES = 0x9305

pattern GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A

pattern GL_ARRAY_SIZE = 0x92FB

pattern GL_ARRAY_STRIDE = 0x92FE

pattern GL_ATOMIC_COUNTER_BUFFER_INDEX = 0x9301

pattern GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED

pattern GL_AUTO_GENERATE_MIPMAP = 0x8295

pattern GL_BLOCK_INDEX = 0x92FD

pattern GL_BUFFER = 0x82E0

pattern GL_BUFFER_BINDING = 0x9302

pattern GL_BUFFER_DATA_SIZE = 0x9303

pattern GL_BUFFER_VARIABLE = 0x92E5

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_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_COMPUTE_SHADER = 0x91B9

pattern GL_COMPUTE_SHADER_BIT = 0x00000020

pattern GL_COMPUTE_SUBROUTINE = 0x92ED

pattern GL_COMPUTE_SUBROUTINE_UNIFORM = 0x92F3

pattern GL_COMPUTE_TEXTURE = 0x82A0

pattern GL_COMPUTE_WORK_GROUP_SIZE = 0x8267

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_DEPTH_COMPONENTS = 0x8284

pattern GL_DEPTH_RENDERABLE = 0x8287

pattern GL_DEPTH_STENCIL_TEXTURE_MODE = 0x90EA

pattern GL_DISPATCH_INDIRECT_BUFFER = 0x90EE

pattern GL_DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF

pattern GL_FILTER = 0x829A

pattern GL_FRAGMENT_SUBROUTINE = 0x92EC

pattern GL_FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2

pattern GL_FRAGMENT_TEXTURE = 0x829F

pattern GL_FRAMEBUFFER_BLEND = 0x828B

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_FRAMEBUFFER_RENDERABLE = 0x8289

pattern GL_FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A

pattern GL_FULL_SUPPORT = 0x82B7

pattern GL_GEOMETRY_SUBROUTINE = 0x92EB

pattern GL_GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1

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_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_IS_PER_PATCH = 0x92E7

pattern GL_IS_ROW_MAJOR = 0x9300

pattern GL_LOCATION = 0x930E

pattern GL_LOCATION_INDEX = 0x930F

pattern GL_MANUAL_GENERATE_MIPMAP = 0x8294

pattern GL_MATRIX_STRIDE = 0x92FF

pattern GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266

pattern GL_MAX_COMBINED_DIMENSIONS = 0x8282

pattern GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39

pattern GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC

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_SHADER_STORAGE_BLOCKS = 0x90DB

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_MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C

pattern GL_MAX_DEBUG_LOGGED_MESSAGES = 0x9144

pattern GL_MAX_DEBUG_MESSAGE_LENGTH = 0x9143

pattern GL_MAX_DEPTH = 0x8280

pattern GL_MAX_ELEMENT_INDEX = 0x8D6B

pattern GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA

pattern GL_MAX_FRAMEBUFFER_HEIGHT = 0x9316

pattern GL_MAX_FRAMEBUFFER_LAYERS = 0x9317

pattern GL_MAX_FRAMEBUFFER_SAMPLES = 0x9318

pattern GL_MAX_FRAMEBUFFER_WIDTH = 0x9315

pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7

pattern GL_MAX_HEIGHT = 0x827F

pattern GL_MAX_LABEL_LENGTH = 0x82E8

pattern GL_MAX_LAYERS = 0x8281

pattern GL_MAX_NAME_LENGTH = 0x92F6

pattern GL_MAX_NUM_ACTIVE_VARIABLES = 0x92F7

pattern GL_MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8

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_UNIFORM_LOCATIONS = 0x826E

pattern GL_MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA

pattern GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9

pattern GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6

pattern GL_MAX_WIDTH = 0x827E

pattern GL_MIPMAP = 0x8293

pattern GL_NAME_LENGTH = 0x92F9

pattern GL_NUM_ACTIVE_VARIABLES = 0x9304

pattern GL_OFFSET = 0x92FC

pattern GL_PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69

pattern GL_PROGRAM = 0x82E2

pattern GL_PROGRAM_INPUT = 0x92E3

pattern GL_PROGRAM_OUTPUT = 0x92E4

pattern GL_PROGRAM_PIPELINE = 0x82E4

pattern GL_QUERY = 0x82E3

pattern GL_READ_PIXELS = 0x828C

pattern GL_READ_PIXELS_FORMAT = 0x828D

pattern GL_READ_PIXELS_TYPE = 0x828E

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_SAMPLER = 0x82E6

pattern GL_SHADER = 0x82E1

pattern GL_SHADER_IMAGE_ATOMIC = 0x82A6

pattern GL_SHADER_IMAGE_LOAD = 0x82A4

pattern GL_SHADER_IMAGE_STORE = 0x82A5

pattern GL_SHADER_STORAGE_BARRIER_BIT = 0x00002000

pattern GL_SHADER_STORAGE_BLOCK = 0x92E6

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

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_SUBROUTINE = 0x92E9

pattern GL_TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF

pattern GL_TESS_CONTROL_TEXTURE = 0x829C

pattern GL_TESS_EVALUATION_SUBROUTINE = 0x92EA

pattern GL_TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0

pattern GL_TESS_EVALUATION_TEXTURE = 0x829D

pattern GL_TEXTURE_BUFFER_OFFSET = 0x919D

pattern GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F

pattern GL_TEXTURE_BUFFER_SIZE = 0x919E

pattern GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2

pattern GL_TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3

pattern GL_TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1

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_IMMUTABLE_LEVELS = 0x82DF

pattern GL_TEXTURE_SHADOW = 0x82A1

pattern GL_TEXTURE_VIEW = 0x82B5

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

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_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC

pattern GL_VERTEX_ATTRIB_BINDING = 0x82D4

pattern GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5

pattern GL_VERTEX_BINDING_BUFFER = 0x8F4F

pattern GL_VERTEX_BINDING_DIVISOR = 0x82D6

pattern GL_VERTEX_BINDING_OFFSET = 0x82D7

pattern GL_VERTEX_BINDING_STRIDE = 0x82D8

pattern GL_VERTEX_SUBROUTINE = 0x92E8

pattern GL_VERTEX_SUBROUTINE_UNIFORM = 0x92EE

pattern GL_VERTEX_TEXTURE = 0x829B

pattern GL_VIEW_CLASS_128_BITS = 0x82C4

pattern GL_VIEW_CLASS_16_BITS = 0x82CA

pattern GL_VIEW_CLASS_24_BITS = 0x82C9

pattern GL_VIEW_CLASS_32_BITS = 0x82C8

pattern GL_VIEW_CLASS_48_BITS = 0x82C7

pattern GL_VIEW_CLASS_64_BITS = 0x82C6

pattern GL_VIEW_CLASS_8_BITS = 0x82CB

pattern GL_VIEW_CLASS_96_BITS = 0x82C5

pattern GL_VIEW_CLASS_BPTC_FLOAT = 0x82D3

pattern GL_VIEW_CLASS_BPTC_UNORM = 0x82D2

pattern GL_VIEW_CLASS_RGTC1_RED = 0x82D0

pattern GL_VIEW_CLASS_RGTC2_RG = 0x82D1

pattern GL_VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC

pattern GL_VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD

pattern GL_VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE

pattern GL_VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF

pattern GL_VIEW_COMPATIBILITY_CLASS = 0x82B6

-- | Usage: @'glBindBuffersBase' target first count buffers@
--
-- The length of @buffers@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindBuffersBase.xhtml>


glBindBuffersBase :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindBuffersBase = ffienumuintsizeiPtruintIOV glBindBuffersBaseFunPtr

glBindBuffersBaseFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindBuffersBaseFunPtr = unsafePerformIO (getProcAddress "glBindBuffersBase")

{-# NOINLINE glBindBuffersBaseFunPtr #-}

-- | Usage: @'glBindBuffersRange' target first count buffers offsets sizes@
--
-- The length of @buffers@ should be @count@.
--
-- The length of @offsets@ should be @count@.
--
-- The length of @sizes@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindBuffersRange.xhtml>


glBindBuffersRange :: MonadIO m => GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> m ()
glBindBuffersRange = ffienumuintsizeiPtruintPtrintptrPtrsizeiptrIOV glBindBuffersRangeFunPtr

glBindBuffersRangeFunPtr :: FunPtr (GLenum -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizeiptr -> IO ())
glBindBuffersRangeFunPtr = unsafePerformIO (getProcAddress "glBindBuffersRange")

{-# NOINLINE glBindBuffersRangeFunPtr #-}

-- | Usage: @'glBindImageTextures' first count textures@
--
-- The length of @textures@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindImageTextures.xhtml>


glBindImageTextures :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindImageTextures = ffiuintsizeiPtruintIOV glBindImageTexturesFunPtr

glBindImageTexturesFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindImageTexturesFunPtr = unsafePerformIO (getProcAddress "glBindImageTextures")

{-# NOINLINE glBindImageTexturesFunPtr #-}

-- | Usage: @'glBindSamplers' first count samplers@
--
-- The length of @samplers@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindSamplers.xhtml>


glBindSamplers :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindSamplers = ffiuintsizeiPtruintIOV glBindSamplersFunPtr

glBindSamplersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindSamplersFunPtr = unsafePerformIO (getProcAddress "glBindSamplers")

{-# NOINLINE glBindSamplersFunPtr #-}

-- | Usage: @'glBindTextures' first count textures@
--
-- The length of @textures@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindTextures.xhtml>


glBindTextures :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> m ()
glBindTextures = ffiuintsizeiPtruintIOV glBindTexturesFunPtr

glBindTexturesFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> IO ())
glBindTexturesFunPtr = unsafePerformIO (getProcAddress "glBindTextures")

{-# NOINLINE glBindTexturesFunPtr #-}

-- | Usage: @'glBindVertexBuffers' first count buffers offsets strides@
--
-- The length of @buffers@ should be @count@.
--
-- The length of @offsets@ should be @count@.
--
-- The length of @strides@ should be @count@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindVertexBuffers.xhtml>


glBindVertexBuffers :: MonadIO m => GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> m ()
glBindVertexBuffers = ffiuintsizeiPtruintPtrintptrPtrsizeiIOV glBindVertexBuffersFunPtr

glBindVertexBuffersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ())
glBindVertexBuffersFunPtr = unsafePerformIO (getProcAddress "glBindVertexBuffers")

{-# NOINLINE glBindVertexBuffersFunPtr #-}

-- | Usage: @'glBufferStorage' target size data flags@
--
-- The length of @data@ should be @size@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBufferStorage.xhtml>


glBufferStorage :: MonadIO m => GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
glBufferStorage = ffienumsizeiptrPtrVbitfieldIOV glBufferStorageFunPtr

glBufferStorageFunPtr :: FunPtr (GLenum -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ())
glBufferStorageFunPtr = unsafePerformIO (getProcAddress "glBufferStorage")

{-# NOINLINE glBufferStorageFunPtr #-}

-- | Usage: @'glClearTexImage' texture level format type data@
--
-- The length of @data@ should be @COMPSIZE(format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClearTexImage.xhtml>


glClearTexImage :: MonadIO m => GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> m ()
glClearTexImage = ffiuintintenumenumPtrVIOV glClearTexImageFunPtr

glClearTexImageFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> Ptr () -> IO ())
glClearTexImageFunPtr = unsafePerformIO (getProcAddress "glClearTexImage")

{-# NOINLINE glClearTexImageFunPtr #-}

-- | Usage: @'glClearTexSubImage' texture level xoffset yoffset zoffset width height depth format type data@
--
-- The length of @data@ should be @COMPSIZE(format,type)@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClearTexSubImage.xhtml>


glClearTexSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glClearTexSubImage = ffiuintintintintintsizeisizeisizeienumenumPtrVIOV glClearTexSubImageFunPtr

glClearTexSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glClearTexSubImageFunPtr = unsafePerformIO (getProcAddress "glClearTexSubImage")

{-# NOINLINE glClearTexSubImageFunPtr #-}

pattern GL_BUFFER_IMMUTABLE_STORAGE = 0x821F

pattern GL_BUFFER_STORAGE_FLAGS = 0x8220

pattern GL_CLEAR_TEXTURE = 0x9365

pattern GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000

pattern GL_CLIENT_STORAGE_BIT = 0x0200

pattern GL_DYNAMIC_STORAGE_BIT = 0x0100

pattern GL_LOCATION_COMPONENT = 0x934A

pattern GL_MAP_COHERENT_BIT = 0x0080

pattern GL_MAP_PERSISTENT_BIT = 0x0040

pattern GL_MAX_VERTEX_ATTRIB_STRIDE = 0x82E5

pattern GL_MIRROR_CLAMP_TO_EDGE = 0x8743

pattern GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221

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_TEXTURE_BUFFER_BINDING = 0x8C2A

pattern GL_TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B

pattern GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C

-- | Usage: @'glBindTextureUnit' unit texture@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glBindTextureUnit.xhtml>


glBindTextureUnit :: MonadIO m => GLuint -> GLuint -> m ()
glBindTextureUnit = ffiuintuintIOV glBindTextureUnitFunPtr

glBindTextureUnitFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glBindTextureUnitFunPtr = unsafePerformIO (getProcAddress "glBindTextureUnit")

{-# NOINLINE glBindTextureUnitFunPtr #-}

-- | Usage: @'glBlitNamedFramebuffer' readFramebuffer drawFramebuffer srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1 dstY1 mask filter@


glBlitNamedFramebuffer :: MonadIO m => GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
glBlitNamedFramebuffer = ffiuintuintintintintintintintintintbitfieldenumIOV glBlitNamedFramebufferFunPtr

glBlitNamedFramebufferFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ())
glBlitNamedFramebufferFunPtr = unsafePerformIO (getProcAddress "glBlitNamedFramebuffer")

{-# NOINLINE glBlitNamedFramebufferFunPtr #-}

-- | Usage: @'glCheckNamedFramebufferStatus' framebuffer target@


glCheckNamedFramebufferStatus :: MonadIO m => GLuint -> GLenum -> m GLenum
glCheckNamedFramebufferStatus = ffiuintenumIOenum glCheckNamedFramebufferStatusFunPtr

glCheckNamedFramebufferStatusFunPtr :: FunPtr (GLuint -> GLenum -> IO GLenum)
glCheckNamedFramebufferStatusFunPtr = unsafePerformIO (getProcAddress "glCheckNamedFramebufferStatus")

{-# NOINLINE glCheckNamedFramebufferStatusFunPtr #-}

-- | Usage: @'glClearNamedBufferData' buffer internalformat format type data@


glClearNamedBufferData :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> m ()
glClearNamedBufferData = ffiuintenumenumenumPtrVIOV glClearNamedBufferDataFunPtr

glClearNamedBufferDataFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> Ptr () -> IO ())
glClearNamedBufferDataFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferData")

{-# NOINLINE glClearNamedBufferDataFunPtr #-}

-- | Usage: @'glClearNamedBufferSubData' buffer internalformat offset size format type data@
--
-- The parameter @size@ is a @BufferSize@.


glClearNamedBufferSubData :: MonadIO m => GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> m ()
glClearNamedBufferSubData = ffiuintenumintptrsizeiptrenumenumPtrVIOV glClearNamedBufferSubDataFunPtr

glClearNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLenum -> GLintptr -> GLsizeiptr -> GLenum -> GLenum -> Ptr () -> IO ())
glClearNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glClearNamedBufferSubData")

{-# NOINLINE glClearNamedBufferSubDataFunPtr #-}

-- | Usage: @'glClearNamedFramebufferfi' framebuffer buffer drawbuffer depth stencil@


glClearNamedFramebufferfi :: MonadIO m => GLuint -> GLenum -> GLint -> GLfloat -> GLint -> m ()
glClearNamedFramebufferfi = ffiuintenumintfloatintIOV glClearNamedFramebufferfiFunPtr

glClearNamedFramebufferfiFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> GLfloat -> GLint -> IO ())
glClearNamedFramebufferfiFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferfi")

{-# NOINLINE glClearNamedFramebufferfiFunPtr #-}

-- | Usage: @'glClearNamedFramebufferfv' framebuffer buffer drawbuffer value@


glClearNamedFramebufferfv :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr GLfloat -> m ()
glClearNamedFramebufferfv = ffiuintenumintPtrfloatIOV glClearNamedFramebufferfvFunPtr

glClearNamedFramebufferfvFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLfloat -> IO ())
glClearNamedFramebufferfvFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferfv")

{-# NOINLINE glClearNamedFramebufferfvFunPtr #-}

-- | Usage: @'glClearNamedFramebufferiv' framebuffer buffer drawbuffer value@


glClearNamedFramebufferiv :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr GLint -> m ()
glClearNamedFramebufferiv = ffiuintenumintPtrintIOV glClearNamedFramebufferivFunPtr

glClearNamedFramebufferivFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLint -> IO ())
glClearNamedFramebufferivFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferiv")

{-# NOINLINE glClearNamedFramebufferivFunPtr #-}

-- | Usage: @'glClearNamedFramebufferuiv' framebuffer buffer drawbuffer value@


glClearNamedFramebufferuiv :: MonadIO m => GLuint -> GLenum -> GLint -> Ptr GLuint -> m ()
glClearNamedFramebufferuiv = ffiuintenumintPtruintIOV glClearNamedFramebufferuivFunPtr

glClearNamedFramebufferuivFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> Ptr GLuint -> IO ())
glClearNamedFramebufferuivFunPtr = unsafePerformIO (getProcAddress "glClearNamedFramebufferuiv")

{-# NOINLINE glClearNamedFramebufferuivFunPtr #-}

-- | Usage: @'glClipControl' origin depth@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glClipControl.xhtml>


glClipControl :: MonadIO m => GLenum -> GLenum -> m ()
glClipControl = ffienumenumIOV glClipControlFunPtr

glClipControlFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glClipControlFunPtr = unsafePerformIO (getProcAddress "glClipControl")

{-# NOINLINE glClipControlFunPtr #-}

-- | Usage: @'glCompressedTextureSubImage1D' texture level xoffset width format imageSize data@


glCompressedTextureSubImage1D :: MonadIO m => GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTextureSubImage1D = ffiuintintintsizeienumsizeiPtrVIOV glCompressedTextureSubImage1DFunPtr

glCompressedTextureSubImage1DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTextureSubImage1DFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage1D")

{-# NOINLINE glCompressedTextureSubImage1DFunPtr #-}

-- | Usage: @'glCompressedTextureSubImage2D' texture level xoffset yoffset width height format imageSize data@


glCompressedTextureSubImage2D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTextureSubImage2D = ffiuintintintintsizeisizeienumsizeiPtrVIOV glCompressedTextureSubImage2DFunPtr

glCompressedTextureSubImage2DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTextureSubImage2DFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage2D")

{-# NOINLINE glCompressedTextureSubImage2DFunPtr #-}

-- | Usage: @'glCompressedTextureSubImage3D' texture level xoffset yoffset zoffset width height depth format imageSize data@


glCompressedTextureSubImage3D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> m ()
glCompressedTextureSubImage3D = ffiuintintintintintsizeisizeisizeienumsizeiPtrVIOV glCompressedTextureSubImage3DFunPtr

glCompressedTextureSubImage3DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLsizei -> Ptr () -> IO ())
glCompressedTextureSubImage3DFunPtr = unsafePerformIO (getProcAddress "glCompressedTextureSubImage3D")

{-# NOINLINE glCompressedTextureSubImage3DFunPtr #-}

-- | Usage: @'glCopyNamedBufferSubData' readBuffer writeBuffer readOffset writeOffset size@
--
-- The parameter @size@ is a @BufferSize@.


glCopyNamedBufferSubData :: MonadIO m => GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
glCopyNamedBufferSubData = ffiuintuintintptrintptrsizeiptrIOV glCopyNamedBufferSubDataFunPtr

glCopyNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLuint -> GLintptr -> GLintptr -> GLsizeiptr -> IO ())
glCopyNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glCopyNamedBufferSubData")

{-# NOINLINE glCopyNamedBufferSubDataFunPtr #-}

-- | Usage: @'glCopyTextureSubImage1D' texture level xoffset x y width@


glCopyTextureSubImage1D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> m ()
glCopyTextureSubImage1D = ffiuintintintintintsizeiIOV glCopyTextureSubImage1DFunPtr

glCopyTextureSubImage1DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> IO ())
glCopyTextureSubImage1DFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage1D")

{-# NOINLINE glCopyTextureSubImage1DFunPtr #-}

-- | Usage: @'glCopyTextureSubImage2D' texture level xoffset yoffset x y width height@


glCopyTextureSubImage2D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glCopyTextureSubImage2D = ffiuintintintintintintsizeisizeiIOV glCopyTextureSubImage2DFunPtr

glCopyTextureSubImage2DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glCopyTextureSubImage2DFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage2D")

{-# NOINLINE glCopyTextureSubImage2DFunPtr #-}

-- | Usage: @'glCopyTextureSubImage3D' texture level xoffset yoffset zoffset x y width height@


glCopyTextureSubImage3D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glCopyTextureSubImage3D = ffiuintintintintintintintsizeisizeiIOV glCopyTextureSubImage3DFunPtr

glCopyTextureSubImage3DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glCopyTextureSubImage3DFunPtr = unsafePerformIO (getProcAddress "glCopyTextureSubImage3D")

{-# NOINLINE glCopyTextureSubImage3DFunPtr #-}

-- | Usage: @'glCreateBuffers' n buffers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateBuffers.xhtml>


glCreateBuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateBuffers = ffisizeiPtruintIOV glCreateBuffersFunPtr

glCreateBuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateBuffersFunPtr = unsafePerformIO (getProcAddress "glCreateBuffers")

{-# NOINLINE glCreateBuffersFunPtr #-}

-- | Usage: @'glCreateFramebuffers' n framebuffers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateFramebuffers.xhtml>


glCreateFramebuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateFramebuffers = ffisizeiPtruintIOV glCreateFramebuffersFunPtr

glCreateFramebuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateFramebuffersFunPtr = unsafePerformIO (getProcAddress "glCreateFramebuffers")

{-# NOINLINE glCreateFramebuffersFunPtr #-}

-- | Usage: @'glCreateProgramPipelines' n pipelines@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateProgramPipelines.xhtml>


glCreateProgramPipelines :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateProgramPipelines = ffisizeiPtruintIOV glCreateProgramPipelinesFunPtr

glCreateProgramPipelinesFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateProgramPipelinesFunPtr = unsafePerformIO (getProcAddress "glCreateProgramPipelines")

{-# NOINLINE glCreateProgramPipelinesFunPtr #-}

-- | Usage: @'glCreateQueries' target n ids@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateQueries.xhtml>


glCreateQueries :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glCreateQueries = ffienumsizeiPtruintIOV glCreateQueriesFunPtr

glCreateQueriesFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glCreateQueriesFunPtr = unsafePerformIO (getProcAddress "glCreateQueries")

{-# NOINLINE glCreateQueriesFunPtr #-}

-- | Usage: @'glCreateRenderbuffers' n renderbuffers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateRenderbuffers.xhtml>


glCreateRenderbuffers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateRenderbuffers = ffisizeiPtruintIOV glCreateRenderbuffersFunPtr

glCreateRenderbuffersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateRenderbuffersFunPtr = unsafePerformIO (getProcAddress "glCreateRenderbuffers")

{-# NOINLINE glCreateRenderbuffersFunPtr #-}

-- | Usage: @'glCreateSamplers' n samplers@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateSamplers.xhtml>


glCreateSamplers :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateSamplers = ffisizeiPtruintIOV glCreateSamplersFunPtr

glCreateSamplersFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateSamplersFunPtr = unsafePerformIO (getProcAddress "glCreateSamplers")

{-# NOINLINE glCreateSamplersFunPtr #-}

-- | Usage: @'glCreateTextures' target n textures@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateTextures.xhtml>


glCreateTextures :: MonadIO m => GLenum -> GLsizei -> Ptr GLuint -> m ()
glCreateTextures = ffienumsizeiPtruintIOV glCreateTexturesFunPtr

glCreateTexturesFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr GLuint -> IO ())
glCreateTexturesFunPtr = unsafePerformIO (getProcAddress "glCreateTextures")

{-# NOINLINE glCreateTexturesFunPtr #-}

-- | Usage: @'glCreateTransformFeedbacks' n ids@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateTransformFeedbacks.xhtml>


glCreateTransformFeedbacks :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateTransformFeedbacks = ffisizeiPtruintIOV glCreateTransformFeedbacksFunPtr

glCreateTransformFeedbacksFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateTransformFeedbacksFunPtr = unsafePerformIO (getProcAddress "glCreateTransformFeedbacks")

{-# NOINLINE glCreateTransformFeedbacksFunPtr #-}

-- | Usage: @'glCreateVertexArrays' n arrays@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glCreateVertexArrays.xhtml>


glCreateVertexArrays :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glCreateVertexArrays = ffisizeiPtruintIOV glCreateVertexArraysFunPtr

glCreateVertexArraysFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glCreateVertexArraysFunPtr = unsafePerformIO (getProcAddress "glCreateVertexArrays")

{-# NOINLINE glCreateVertexArraysFunPtr #-}

-- | Usage: @'glDisableVertexArrayAttrib' vaobj index@


glDisableVertexArrayAttrib :: MonadIO m => GLuint -> GLuint -> m ()
glDisableVertexArrayAttrib = ffiuintuintIOV glDisableVertexArrayAttribFunPtr

glDisableVertexArrayAttribFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glDisableVertexArrayAttribFunPtr = unsafePerformIO (getProcAddress "glDisableVertexArrayAttrib")

{-# NOINLINE glDisableVertexArrayAttribFunPtr #-}

-- | Usage: @'glEnableVertexArrayAttrib' vaobj index@


glEnableVertexArrayAttrib :: MonadIO m => GLuint -> GLuint -> m ()
glEnableVertexArrayAttrib = ffiuintuintIOV glEnableVertexArrayAttribFunPtr

glEnableVertexArrayAttribFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glEnableVertexArrayAttribFunPtr = unsafePerformIO (getProcAddress "glEnableVertexArrayAttrib")

{-# NOINLINE glEnableVertexArrayAttribFunPtr #-}

-- | Usage: @'glFlushMappedNamedBufferRange' buffer offset length@
--
-- The parameter @length@ is a @BufferSize@.


glFlushMappedNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> m ()
glFlushMappedNamedBufferRange = ffiuintintptrsizeiptrIOV glFlushMappedNamedBufferRangeFunPtr

glFlushMappedNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> IO ())
glFlushMappedNamedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glFlushMappedNamedBufferRange")

{-# NOINLINE glFlushMappedNamedBufferRangeFunPtr #-}

-- | Usage: @'glGenerateTextureMipmap' texture@


glGenerateTextureMipmap :: MonadIO m => GLuint -> m ()
glGenerateTextureMipmap = ffiuintIOV glGenerateTextureMipmapFunPtr

glGenerateTextureMipmapFunPtr :: FunPtr (GLuint -> IO ())
glGenerateTextureMipmapFunPtr = unsafePerformIO (getProcAddress "glGenerateTextureMipmap")

{-# NOINLINE glGenerateTextureMipmapFunPtr #-}

-- | Usage: @'glGetCompressedTextureImage' texture level bufSize pixels@


glGetCompressedTextureImage :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr () -> m ()
glGetCompressedTextureImage = ffiuintintsizeiPtrVIOV glGetCompressedTextureImageFunPtr

glGetCompressedTextureImageFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr () -> IO ())
glGetCompressedTextureImageFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTextureImage")

{-# NOINLINE glGetCompressedTextureImageFunPtr #-}

-- | Usage: @'glGetCompressedTextureSubImage' texture level xoffset yoffset zoffset width height depth bufSize pixels@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetCompressedTextureSubImage.xhtml>


glGetCompressedTextureSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> m ()
glGetCompressedTextureSubImage = ffiuintintintintintsizeisizeisizeisizeiPtrVIOV glGetCompressedTextureSubImageFunPtr

glGetCompressedTextureSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLsizei -> Ptr () -> IO ())
glGetCompressedTextureSubImageFunPtr = unsafePerformIO (getProcAddress "glGetCompressedTextureSubImage")

{-# NOINLINE glGetCompressedTextureSubImageFunPtr #-}

-- | Usage: @'glGetGraphicsResetStatus'@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetGraphicsResetStatus.xhtml>


glGetGraphicsResetStatus :: MonadIO m => m GLenum
glGetGraphicsResetStatus = ffiIOenum glGetGraphicsResetStatusFunPtr

glGetGraphicsResetStatusFunPtr :: FunPtr (IO GLenum)
glGetGraphicsResetStatusFunPtr = unsafePerformIO (getProcAddress "glGetGraphicsResetStatus")

{-# NOINLINE glGetGraphicsResetStatusFunPtr #-}

-- | Usage: @'glGetNamedBufferParameteri64v' buffer pname params@


glGetNamedBufferParameteri64v :: MonadIO m => GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetNamedBufferParameteri64v = ffiuintenumPtrint64IOV glGetNamedBufferParameteri64vFunPtr

glGetNamedBufferParameteri64vFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetNamedBufferParameteri64vFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameteri64v")

{-# NOINLINE glGetNamedBufferParameteri64vFunPtr #-}

-- | Usage: @'glGetNamedBufferParameteriv' buffer pname params@


glGetNamedBufferParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetNamedBufferParameteriv = ffiuintenumPtrintIOV glGetNamedBufferParameterivFunPtr

glGetNamedBufferParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetNamedBufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferParameteriv")

{-# NOINLINE glGetNamedBufferParameterivFunPtr #-}

-- | Usage: @'glGetNamedBufferPointerv' buffer pname params@


glGetNamedBufferPointerv :: MonadIO m => GLuint -> GLenum -> Ptr (Ptr ()) -> m ()
glGetNamedBufferPointerv = ffiuintenumPtrPtrVIOV glGetNamedBufferPointervFunPtr

glGetNamedBufferPointervFunPtr :: FunPtr (GLuint -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetNamedBufferPointervFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferPointerv")

{-# NOINLINE glGetNamedBufferPointervFunPtr #-}

-- | Usage: @'glGetNamedBufferSubData' buffer offset size data@
--
-- The parameter @size@ is a @BufferSize@.


glGetNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
glGetNamedBufferSubData = ffiuintintptrsizeiptrPtrVIOV glGetNamedBufferSubDataFunPtr

glGetNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
glGetNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glGetNamedBufferSubData")

{-# NOINLINE glGetNamedBufferSubDataFunPtr #-}

-- | Usage: @'glGetNamedFramebufferAttachmentParameteriv' framebuffer attachment pname params@


glGetNamedFramebufferAttachmentParameteriv :: MonadIO m => GLuint -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetNamedFramebufferAttachmentParameteriv = ffiuintenumenumPtrintIOV glGetNamedFramebufferAttachmentParameterivFunPtr

glGetNamedFramebufferAttachmentParameterivFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetNamedFramebufferAttachmentParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferAttachmentParameteriv")

{-# NOINLINE glGetNamedFramebufferAttachmentParameterivFunPtr #-}

-- | Usage: @'glGetNamedFramebufferParameteriv' framebuffer pname param@


glGetNamedFramebufferParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetNamedFramebufferParameteriv = ffiuintenumPtrintIOV glGetNamedFramebufferParameterivFunPtr

glGetNamedFramebufferParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetNamedFramebufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedFramebufferParameteriv")

{-# NOINLINE glGetNamedFramebufferParameterivFunPtr #-}

-- | Usage: @'glGetNamedRenderbufferParameteriv' renderbuffer pname params@


glGetNamedRenderbufferParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetNamedRenderbufferParameteriv = ffiuintenumPtrintIOV glGetNamedRenderbufferParameterivFunPtr

glGetNamedRenderbufferParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetNamedRenderbufferParameterivFunPtr = unsafePerformIO (getProcAddress "glGetNamedRenderbufferParameteriv")

{-# NOINLINE glGetNamedRenderbufferParameterivFunPtr #-}

-- | Usage: @'glGetQueryBufferObjecti64v' id buffer pname offset@


glGetQueryBufferObjecti64v :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjecti64v = ffiuintuintenumintptrIOV glGetQueryBufferObjecti64vFunPtr

glGetQueryBufferObjecti64vFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjecti64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjecti64v")

{-# NOINLINE glGetQueryBufferObjecti64vFunPtr #-}

-- | Usage: @'glGetQueryBufferObjectiv' id buffer pname offset@


glGetQueryBufferObjectiv :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjectiv = ffiuintuintenumintptrIOV glGetQueryBufferObjectivFunPtr

glGetQueryBufferObjectivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjectivFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjectiv")

{-# NOINLINE glGetQueryBufferObjectivFunPtr #-}

-- | Usage: @'glGetQueryBufferObjectui64v' id buffer pname offset@


glGetQueryBufferObjectui64v :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjectui64v = ffiuintuintenumintptrIOV glGetQueryBufferObjectui64vFunPtr

glGetQueryBufferObjectui64vFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjectui64vFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjectui64v")

{-# NOINLINE glGetQueryBufferObjectui64vFunPtr #-}

-- | Usage: @'glGetQueryBufferObjectuiv' id buffer pname offset@


glGetQueryBufferObjectuiv :: MonadIO m => GLuint -> GLuint -> GLenum -> GLintptr -> m ()
glGetQueryBufferObjectuiv = ffiuintuintenumintptrIOV glGetQueryBufferObjectuivFunPtr

glGetQueryBufferObjectuivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> GLintptr -> IO ())
glGetQueryBufferObjectuivFunPtr = unsafePerformIO (getProcAddress "glGetQueryBufferObjectuiv")

{-# NOINLINE glGetQueryBufferObjectuivFunPtr #-}

-- | Usage: @'glGetTextureImage' texture level format type bufSize pixels@


glGetTextureImage :: MonadIO m => GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glGetTextureImage = ffiuintintenumenumsizeiPtrVIOV glGetTextureImageFunPtr

glGetTextureImageFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glGetTextureImageFunPtr = unsafePerformIO (getProcAddress "glGetTextureImage")

{-# NOINLINE glGetTextureImageFunPtr #-}

-- | Usage: @'glGetTextureLevelParameterfv' texture level pname params@


glGetTextureLevelParameterfv :: MonadIO m => GLuint -> GLint -> GLenum -> Ptr GLfloat -> m ()
glGetTextureLevelParameterfv = ffiuintintenumPtrfloatIOV glGetTextureLevelParameterfvFunPtr

glGetTextureLevelParameterfvFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> Ptr GLfloat -> IO ())
glGetTextureLevelParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTextureLevelParameterfv")

{-# NOINLINE glGetTextureLevelParameterfvFunPtr #-}

-- | Usage: @'glGetTextureLevelParameteriv' texture level pname params@


glGetTextureLevelParameteriv :: MonadIO m => GLuint -> GLint -> GLenum -> Ptr GLint -> m ()
glGetTextureLevelParameteriv = ffiuintintenumPtrintIOV glGetTextureLevelParameterivFunPtr

glGetTextureLevelParameterivFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> Ptr GLint -> IO ())
glGetTextureLevelParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTextureLevelParameteriv")

{-# NOINLINE glGetTextureLevelParameterivFunPtr #-}

-- | Usage: @'glGetTextureParameterIiv' texture pname params@


glGetTextureParameterIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetTextureParameterIiv = ffiuintenumPtrintIOV glGetTextureParameterIivFunPtr

glGetTextureParameterIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetTextureParameterIivFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterIiv")

{-# NOINLINE glGetTextureParameterIivFunPtr #-}

-- | Usage: @'glGetTextureParameterIuiv' texture pname params@


glGetTextureParameterIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetTextureParameterIuiv = ffiuintenumPtruintIOV glGetTextureParameterIuivFunPtr

glGetTextureParameterIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetTextureParameterIuivFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterIuiv")

{-# NOINLINE glGetTextureParameterIuivFunPtr #-}

-- | Usage: @'glGetTextureParameterfv' texture pname params@


glGetTextureParameterfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetTextureParameterfv = ffiuintenumPtrfloatIOV glGetTextureParameterfvFunPtr

glGetTextureParameterfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetTextureParameterfvFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameterfv")

{-# NOINLINE glGetTextureParameterfvFunPtr #-}

-- | Usage: @'glGetTextureParameteriv' texture pname params@


glGetTextureParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetTextureParameteriv = ffiuintenumPtrintIOV glGetTextureParameterivFunPtr

glGetTextureParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetTextureParameterivFunPtr = unsafePerformIO (getProcAddress "glGetTextureParameteriv")

{-# NOINLINE glGetTextureParameterivFunPtr #-}

-- | Usage: @'glGetTextureSubImage' texture level xoffset yoffset zoffset width height depth format type bufSize pixels@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetTextureSubImage.xhtml>


glGetTextureSubImage :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glGetTextureSubImage = ffiuintintintintintsizeisizeisizeienumenumsizeiPtrVIOV glGetTextureSubImageFunPtr

glGetTextureSubImageFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glGetTextureSubImageFunPtr = unsafePerformIO (getProcAddress "glGetTextureSubImage")

{-# NOINLINE glGetTextureSubImageFunPtr #-}

-- | Usage: @'glGetTransformFeedbacki64_v' xfb pname index param@


glGetTransformFeedbacki64_v :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLint64 -> m ()
glGetTransformFeedbacki64_v = ffiuintenumuintPtrint64IOV glGetTransformFeedbacki64_vFunPtr

glGetTransformFeedbacki64_vFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint64 -> IO ())
glGetTransformFeedbacki64_vFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbacki64_v")

{-# NOINLINE glGetTransformFeedbacki64_vFunPtr #-}

-- | Usage: @'glGetTransformFeedbacki_v' xfb pname index param@


glGetTransformFeedbacki_v :: MonadIO m => GLuint -> GLenum -> GLuint -> Ptr GLint -> m ()
glGetTransformFeedbacki_v = ffiuintenumuintPtrintIOV glGetTransformFeedbacki_vFunPtr

glGetTransformFeedbacki_vFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> Ptr GLint -> IO ())
glGetTransformFeedbacki_vFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbacki_v")

{-# NOINLINE glGetTransformFeedbacki_vFunPtr #-}

-- | Usage: @'glGetTransformFeedbackiv' xfb pname param@


glGetTransformFeedbackiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetTransformFeedbackiv = ffiuintenumPtrintIOV glGetTransformFeedbackivFunPtr

glGetTransformFeedbackivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetTransformFeedbackivFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbackiv")

{-# NOINLINE glGetTransformFeedbackivFunPtr #-}

-- | Usage: @'glGetVertexArrayIndexed64iv' vaobj index pname param@


glGetVertexArrayIndexed64iv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetVertexArrayIndexed64iv = ffiuintuintenumPtrint64IOV glGetVertexArrayIndexed64ivFunPtr

glGetVertexArrayIndexed64ivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetVertexArrayIndexed64ivFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayIndexed64iv")

{-# NOINLINE glGetVertexArrayIndexed64ivFunPtr #-}

-- | Usage: @'glGetVertexArrayIndexediv' vaobj index pname param@


glGetVertexArrayIndexediv :: MonadIO m => GLuint -> GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexArrayIndexediv = ffiuintuintenumPtrintIOV glGetVertexArrayIndexedivFunPtr

glGetVertexArrayIndexedivFunPtr :: FunPtr (GLuint -> GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexArrayIndexedivFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayIndexediv")

{-# NOINLINE glGetVertexArrayIndexedivFunPtr #-}

-- | Usage: @'glGetVertexArrayiv' vaobj pname param@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glGetVertexArrayiv.xhtml>


glGetVertexArrayiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexArrayiv = ffiuintenumPtrintIOV glGetVertexArrayivFunPtr

glGetVertexArrayivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexArrayivFunPtr = unsafePerformIO (getProcAddress "glGetVertexArrayiv")

{-# NOINLINE glGetVertexArrayivFunPtr #-}

-- | Usage: @'glGetnUniformfv' program location bufSize params@


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 #-}

-- | Usage: @'glGetnUniformiv' program location bufSize params@


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 #-}

-- | Usage: @'glGetnUniformuiv' program location bufSize params@


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 #-}

-- | Usage: @'glInvalidateNamedFramebufferData' framebuffer numAttachments attachments@


glInvalidateNamedFramebufferData :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> m ()
glInvalidateNamedFramebufferData = ffiuintsizeiPtrenumIOV glInvalidateNamedFramebufferDataFunPtr

glInvalidateNamedFramebufferDataFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ())
glInvalidateNamedFramebufferDataFunPtr = unsafePerformIO (getProcAddress "glInvalidateNamedFramebufferData")

{-# NOINLINE glInvalidateNamedFramebufferDataFunPtr #-}

-- | Usage: @'glInvalidateNamedFramebufferSubData' framebuffer numAttachments attachments x y width height@


glInvalidateNamedFramebufferSubData :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
glInvalidateNamedFramebufferSubData = ffiuintsizeiPtrenumintintsizeisizeiIOV glInvalidateNamedFramebufferSubDataFunPtr

glInvalidateNamedFramebufferSubDataFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> IO ())
glInvalidateNamedFramebufferSubDataFunPtr = unsafePerformIO (getProcAddress "glInvalidateNamedFramebufferSubData")

{-# NOINLINE glInvalidateNamedFramebufferSubDataFunPtr #-}

-- | Usage: @'glMapNamedBuffer' buffer access@


glMapNamedBuffer :: MonadIO m => GLuint -> GLenum -> m (Ptr ())
glMapNamedBuffer = ffiuintenumIOPtrV glMapNamedBufferFunPtr

glMapNamedBufferFunPtr :: FunPtr (GLuint -> GLenum -> IO (Ptr ()))
glMapNamedBufferFunPtr = unsafePerformIO (getProcAddress "glMapNamedBuffer")

{-# NOINLINE glMapNamedBufferFunPtr #-}

-- | Usage: @'glMapNamedBufferRange' buffer offset length access@
--
-- The parameter @length@ is a @BufferSize@.


glMapNamedBufferRange :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> m (Ptr ())
glMapNamedBufferRange = ffiuintintptrsizeiptrbitfieldIOPtrV glMapNamedBufferRangeFunPtr

glMapNamedBufferRangeFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> GLbitfield -> IO (Ptr ()))
glMapNamedBufferRangeFunPtr = unsafePerformIO (getProcAddress "glMapNamedBufferRange")

{-# NOINLINE glMapNamedBufferRangeFunPtr #-}

-- | Usage: @'glMemoryBarrierByRegion' barriers@


glMemoryBarrierByRegion :: MonadIO m => GLbitfield -> m ()
glMemoryBarrierByRegion = ffibitfieldIOV glMemoryBarrierByRegionFunPtr

glMemoryBarrierByRegionFunPtr :: FunPtr (GLbitfield -> IO ())
glMemoryBarrierByRegionFunPtr = unsafePerformIO (getProcAddress "glMemoryBarrierByRegion")

{-# NOINLINE glMemoryBarrierByRegionFunPtr #-}

-- | Usage: @'glNamedBufferData' buffer size data usage@
--
-- The parameter @size@ is a @BufferSize@.


glNamedBufferData :: MonadIO m => GLuint -> GLsizeiptr -> Ptr () -> GLenum -> m ()
glNamedBufferData = ffiuintsizeiptrPtrVenumIOV glNamedBufferDataFunPtr

glNamedBufferDataFunPtr :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLenum -> IO ())
glNamedBufferDataFunPtr = unsafePerformIO (getProcAddress "glNamedBufferData")

{-# NOINLINE glNamedBufferDataFunPtr #-}

-- | Usage: @'glNamedBufferStorage' buffer size data flags@
--
-- The parameter @size@ is a @BufferSize@.
--
-- The length of @data@ should be @size@.


glNamedBufferStorage :: MonadIO m => GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> m ()
glNamedBufferStorage = ffiuintsizeiptrPtrVbitfieldIOV glNamedBufferStorageFunPtr

glNamedBufferStorageFunPtr :: FunPtr (GLuint -> GLsizeiptr -> Ptr () -> GLbitfield -> IO ())
glNamedBufferStorageFunPtr = unsafePerformIO (getProcAddress "glNamedBufferStorage")

{-# NOINLINE glNamedBufferStorageFunPtr #-}

-- | Usage: @'glNamedBufferSubData' buffer offset size data@
--
-- The parameter @size@ is a @BufferSize@.
--
-- The length of @data@ should be @COMPSIZE(size)@.


glNamedBufferSubData :: MonadIO m => GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> m ()
glNamedBufferSubData = ffiuintintptrsizeiptrPtrVIOV glNamedBufferSubDataFunPtr

glNamedBufferSubDataFunPtr :: FunPtr (GLuint -> GLintptr -> GLsizeiptr -> Ptr () -> IO ())
glNamedBufferSubDataFunPtr = unsafePerformIO (getProcAddress "glNamedBufferSubData")

{-# NOINLINE glNamedBufferSubDataFunPtr #-}

-- | Usage: @'glNamedFramebufferDrawBuffer' framebuffer buf@


glNamedFramebufferDrawBuffer :: MonadIO m => GLuint -> GLenum -> m ()
glNamedFramebufferDrawBuffer = ffiuintenumIOV glNamedFramebufferDrawBufferFunPtr

glNamedFramebufferDrawBufferFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glNamedFramebufferDrawBufferFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferDrawBuffer")

{-# NOINLINE glNamedFramebufferDrawBufferFunPtr #-}

-- | Usage: @'glNamedFramebufferDrawBuffers' framebuffer n bufs@


glNamedFramebufferDrawBuffers :: MonadIO m => GLuint -> GLsizei -> Ptr GLenum -> m ()
glNamedFramebufferDrawBuffers = ffiuintsizeiPtrenumIOV glNamedFramebufferDrawBuffersFunPtr

glNamedFramebufferDrawBuffersFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLenum -> IO ())
glNamedFramebufferDrawBuffersFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferDrawBuffers")

{-# NOINLINE glNamedFramebufferDrawBuffersFunPtr #-}

-- | Usage: @'glNamedFramebufferParameteri' framebuffer pname param@


glNamedFramebufferParameteri :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glNamedFramebufferParameteri = ffiuintenumintIOV glNamedFramebufferParameteriFunPtr

glNamedFramebufferParameteriFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glNamedFramebufferParameteriFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferParameteri")

{-# NOINLINE glNamedFramebufferParameteriFunPtr #-}

-- | Usage: @'glNamedFramebufferReadBuffer' framebuffer src@


glNamedFramebufferReadBuffer :: MonadIO m => GLuint -> GLenum -> m ()
glNamedFramebufferReadBuffer = ffiuintenumIOV glNamedFramebufferReadBufferFunPtr

glNamedFramebufferReadBufferFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glNamedFramebufferReadBufferFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferReadBuffer")

{-# NOINLINE glNamedFramebufferReadBufferFunPtr #-}

-- | Usage: @'glNamedFramebufferRenderbuffer' framebuffer attachment renderbuffertarget renderbuffer@


glNamedFramebufferRenderbuffer :: MonadIO m => GLuint -> GLenum -> GLenum -> GLuint -> m ()
glNamedFramebufferRenderbuffer = ffiuintenumenumuintIOV glNamedFramebufferRenderbufferFunPtr

glNamedFramebufferRenderbufferFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLuint -> IO ())
glNamedFramebufferRenderbufferFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferRenderbuffer")

{-# NOINLINE glNamedFramebufferRenderbufferFunPtr #-}

-- | Usage: @'glNamedFramebufferTexture' framebuffer attachment texture level@


glNamedFramebufferTexture :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> m ()
glNamedFramebufferTexture = ffiuintenumuintintIOV glNamedFramebufferTextureFunPtr

glNamedFramebufferTextureFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> IO ())
glNamedFramebufferTextureFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTexture")

{-# NOINLINE glNamedFramebufferTextureFunPtr #-}

-- | Usage: @'glNamedFramebufferTextureLayer' framebuffer attachment texture level layer@


glNamedFramebufferTextureLayer :: MonadIO m => GLuint -> GLenum -> GLuint -> GLint -> GLint -> m ()
glNamedFramebufferTextureLayer = ffiuintenumuintintintIOV glNamedFramebufferTextureLayerFunPtr

glNamedFramebufferTextureLayerFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glNamedFramebufferTextureLayerFunPtr = unsafePerformIO (getProcAddress "glNamedFramebufferTextureLayer")

{-# NOINLINE glNamedFramebufferTextureLayerFunPtr #-}

-- | Usage: @'glNamedRenderbufferStorage' renderbuffer internalformat width height@


glNamedRenderbufferStorage :: MonadIO m => GLuint -> GLenum -> GLsizei -> GLsizei -> m ()
glNamedRenderbufferStorage = ffiuintenumsizeisizeiIOV glNamedRenderbufferStorageFunPtr

glNamedRenderbufferStorageFunPtr :: FunPtr (GLuint -> GLenum -> GLsizei -> GLsizei -> IO ())
glNamedRenderbufferStorageFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorage")

{-# NOINLINE glNamedRenderbufferStorageFunPtr #-}

-- | Usage: @'glNamedRenderbufferStorageMultisample' renderbuffer samples internalformat width height@


glNamedRenderbufferStorageMultisample :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glNamedRenderbufferStorageMultisample = ffiuintsizeienumsizeisizeiIOV glNamedRenderbufferStorageMultisampleFunPtr

glNamedRenderbufferStorageMultisampleFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glNamedRenderbufferStorageMultisampleFunPtr = unsafePerformIO (getProcAddress "glNamedRenderbufferStorageMultisample")

{-# NOINLINE glNamedRenderbufferStorageMultisampleFunPtr #-}

-- | Usage: @'glReadnPixels' x y width height format type bufSize data@


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 #-}

-- | Usage: @'glTextureBarrier'@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTextureBarrier.xhtml>


glTextureBarrier :: MonadIO m => m ()
glTextureBarrier = ffiIOV glTextureBarrierFunPtr

glTextureBarrierFunPtr :: FunPtr (IO ())
glTextureBarrierFunPtr = unsafePerformIO (getProcAddress "glTextureBarrier")

{-# NOINLINE glTextureBarrierFunPtr #-}

-- | Usage: @'glTextureBuffer' texture internalformat buffer@


glTextureBuffer :: MonadIO m => GLuint -> GLenum -> GLuint -> m ()
glTextureBuffer = ffiuintenumuintIOV glTextureBufferFunPtr

glTextureBufferFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> IO ())
glTextureBufferFunPtr = unsafePerformIO (getProcAddress "glTextureBuffer")

{-# NOINLINE glTextureBufferFunPtr #-}

-- | Usage: @'glTextureBufferRange' texture internalformat buffer offset size@
--
-- The parameter @size@ is a @BufferSize@.


glTextureBufferRange :: MonadIO m => GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> m ()
glTextureBufferRange = ffiuintenumuintintptrsizeiptrIOV glTextureBufferRangeFunPtr

glTextureBufferRangeFunPtr :: FunPtr (GLuint -> GLenum -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
glTextureBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTextureBufferRange")

{-# NOINLINE glTextureBufferRangeFunPtr #-}

-- | Usage: @'glTextureParameterIiv' texture pname params@


glTextureParameterIiv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glTextureParameterIiv = ffiuintenumPtrintIOV glTextureParameterIivFunPtr

glTextureParameterIivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glTextureParameterIivFunPtr = unsafePerformIO (getProcAddress "glTextureParameterIiv")

{-# NOINLINE glTextureParameterIivFunPtr #-}

-- | Usage: @'glTextureParameterIuiv' texture pname params@


glTextureParameterIuiv :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glTextureParameterIuiv = ffiuintenumPtruintIOV glTextureParameterIuivFunPtr

glTextureParameterIuivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glTextureParameterIuivFunPtr = unsafePerformIO (getProcAddress "glTextureParameterIuiv")

{-# NOINLINE glTextureParameterIuivFunPtr #-}

-- | Usage: @'glTextureParameterf' texture pname param@


glTextureParameterf :: MonadIO m => GLuint -> GLenum -> GLfloat -> m ()
glTextureParameterf = ffiuintenumfloatIOV glTextureParameterfFunPtr

glTextureParameterfFunPtr :: FunPtr (GLuint -> GLenum -> GLfloat -> IO ())
glTextureParameterfFunPtr = unsafePerformIO (getProcAddress "glTextureParameterf")

{-# NOINLINE glTextureParameterfFunPtr #-}

-- | Usage: @'glTextureParameterfv' texture pname param@


glTextureParameterfv :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glTextureParameterfv = ffiuintenumPtrfloatIOV glTextureParameterfvFunPtr

glTextureParameterfvFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glTextureParameterfvFunPtr = unsafePerformIO (getProcAddress "glTextureParameterfv")

{-# NOINLINE glTextureParameterfvFunPtr #-}

-- | Usage: @'glTextureParameteri' texture pname param@


glTextureParameteri :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glTextureParameteri = ffiuintenumintIOV glTextureParameteriFunPtr

glTextureParameteriFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glTextureParameteriFunPtr = unsafePerformIO (getProcAddress "glTextureParameteri")

{-# NOINLINE glTextureParameteriFunPtr #-}

-- | Usage: @'glTextureParameteriv' texture pname param@


glTextureParameteriv :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glTextureParameteriv = ffiuintenumPtrintIOV glTextureParameterivFunPtr

glTextureParameterivFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glTextureParameterivFunPtr = unsafePerformIO (getProcAddress "glTextureParameteriv")

{-# NOINLINE glTextureParameterivFunPtr #-}

-- | Usage: @'glTextureStorage1D' texture levels internalformat width@


glTextureStorage1D :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> m ()
glTextureStorage1D = ffiuintsizeienumsizeiIOV glTextureStorage1DFunPtr

glTextureStorage1DFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> IO ())
glTextureStorage1DFunPtr = unsafePerformIO (getProcAddress "glTextureStorage1D")

{-# NOINLINE glTextureStorage1DFunPtr #-}

-- | Usage: @'glTextureStorage2D' texture levels internalformat width height@


glTextureStorage2D :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
glTextureStorage2D = ffiuintsizeienumsizeisizeiIOV glTextureStorage2DFunPtr

glTextureStorage2DFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ())
glTextureStorage2DFunPtr = unsafePerformIO (getProcAddress "glTextureStorage2D")

{-# NOINLINE glTextureStorage2DFunPtr #-}

-- | Usage: @'glTextureStorage2DMultisample' texture samples internalformat width height fixedsamplelocations@


glTextureStorage2DMultisample :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> m ()
glTextureStorage2DMultisample = ffiuintsizeienumsizeisizeibooleanIOV glTextureStorage2DMultisampleFunPtr

glTextureStorage2DMultisampleFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTextureStorage2DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTextureStorage2DMultisample")

{-# NOINLINE glTextureStorage2DMultisampleFunPtr #-}

-- | Usage: @'glTextureStorage3D' texture levels internalformat width height depth@


glTextureStorage3D :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
glTextureStorage3D = ffiuintsizeienumsizeisizeisizeiIOV glTextureStorage3DFunPtr

glTextureStorage3DFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ())
glTextureStorage3DFunPtr = unsafePerformIO (getProcAddress "glTextureStorage3D")

{-# NOINLINE glTextureStorage3DFunPtr #-}

-- | Usage: @'glTextureStorage3DMultisample' texture samples internalformat width height depth fixedsamplelocations@


glTextureStorage3DMultisample :: MonadIO m => GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> m ()
glTextureStorage3DMultisample = ffiuintsizeienumsizeisizeisizeibooleanIOV glTextureStorage3DMultisampleFunPtr

glTextureStorage3DMultisampleFunPtr :: FunPtr (GLuint -> GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> GLboolean -> IO ())
glTextureStorage3DMultisampleFunPtr = unsafePerformIO (getProcAddress "glTextureStorage3DMultisample")

{-# NOINLINE glTextureStorage3DMultisampleFunPtr #-}

-- | Usage: @'glTextureSubImage1D' texture level xoffset width format type pixels@


glTextureSubImage1D :: MonadIO m => GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTextureSubImage1D = ffiuintintintsizeienumenumPtrVIOV glTextureSubImage1DFunPtr

glTextureSubImage1DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTextureSubImage1DFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage1D")

{-# NOINLINE glTextureSubImage1DFunPtr #-}

-- | Usage: @'glTextureSubImage2D' texture level xoffset yoffset width height format type pixels@


glTextureSubImage2D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTextureSubImage2D = ffiuintintintintsizeisizeienumenumPtrVIOV glTextureSubImage2DFunPtr

glTextureSubImage2DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTextureSubImage2DFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage2D")

{-# NOINLINE glTextureSubImage2DFunPtr #-}

-- | Usage: @'glTextureSubImage3D' texture level xoffset yoffset zoffset width height depth format type pixels@


glTextureSubImage3D :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> m ()
glTextureSubImage3D = ffiuintintintintintsizeisizeisizeienumenumPtrVIOV glTextureSubImage3DFunPtr

glTextureSubImage3DFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> GLsizei -> GLenum -> GLenum -> Ptr () -> IO ())
glTextureSubImage3DFunPtr = unsafePerformIO (getProcAddress "glTextureSubImage3D")

{-# NOINLINE glTextureSubImage3DFunPtr #-}

-- | Usage: @'glTransformFeedbackBufferBase' xfb index buffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTransformFeedbackBufferBase.xhtml>


glTransformFeedbackBufferBase :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glTransformFeedbackBufferBase = ffiuintuintuintIOV glTransformFeedbackBufferBaseFunPtr

glTransformFeedbackBufferBaseFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glTransformFeedbackBufferBaseFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackBufferBase")

{-# NOINLINE glTransformFeedbackBufferBaseFunPtr #-}

-- | Usage: @'glTransformFeedbackBufferRange' xfb index buffer offset size@
--
-- The parameter @size@ is a @BufferSize@.
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glTransformFeedbackBufferRange.xhtml>


glTransformFeedbackBufferRange :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
glTransformFeedbackBufferRange = ffiuintuintuintintptrsizeiptrIOV glTransformFeedbackBufferRangeFunPtr

glTransformFeedbackBufferRangeFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
glTransformFeedbackBufferRangeFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackBufferRange")

{-# NOINLINE glTransformFeedbackBufferRangeFunPtr #-}

-- | Usage: @'glUnmapNamedBuffer' buffer@


glUnmapNamedBuffer :: MonadIO m => GLuint -> m GLboolean
glUnmapNamedBuffer = ffiuintIOboolean glUnmapNamedBufferFunPtr

glUnmapNamedBufferFunPtr :: FunPtr (GLuint -> IO GLboolean)
glUnmapNamedBufferFunPtr = unsafePerformIO (getProcAddress "glUnmapNamedBuffer")

{-# NOINLINE glUnmapNamedBufferFunPtr #-}

-- | Usage: @'glVertexArrayAttribBinding' vaobj attribindex bindingindex@


glVertexArrayAttribBinding :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexArrayAttribBinding = ffiuintuintuintIOV glVertexArrayAttribBindingFunPtr

glVertexArrayAttribBindingFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexArrayAttribBindingFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribBinding")

{-# NOINLINE glVertexArrayAttribBindingFunPtr #-}

-- | Usage: @'glVertexArrayAttribFormat' vaobj attribindex size type normalized relativeoffset@


glVertexArrayAttribFormat :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> m ()
glVertexArrayAttribFormat = ffiuintuintintenumbooleanuintIOV glVertexArrayAttribFormatFunPtr

glVertexArrayAttribFormatFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLboolean -> GLuint -> IO ())
glVertexArrayAttribFormatFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribFormat")

{-# NOINLINE glVertexArrayAttribFormatFunPtr #-}

-- | Usage: @'glVertexArrayAttribIFormat' vaobj attribindex size type relativeoffset@


glVertexArrayAttribIFormat :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
glVertexArrayAttribIFormat = ffiuintuintintenumuintIOV glVertexArrayAttribIFormatFunPtr

glVertexArrayAttribIFormatFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ())
glVertexArrayAttribIFormatFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribIFormat")

{-# NOINLINE glVertexArrayAttribIFormatFunPtr #-}

-- | Usage: @'glVertexArrayAttribLFormat' vaobj attribindex size type relativeoffset@


glVertexArrayAttribLFormat :: MonadIO m => GLuint -> GLuint -> GLint -> GLenum -> GLuint -> m ()
glVertexArrayAttribLFormat = ffiuintuintintenumuintIOV glVertexArrayAttribLFormatFunPtr

glVertexArrayAttribLFormatFunPtr :: FunPtr (GLuint -> GLuint -> GLint -> GLenum -> GLuint -> IO ())
glVertexArrayAttribLFormatFunPtr = unsafePerformIO (getProcAddress "glVertexArrayAttribLFormat")

{-# NOINLINE glVertexArrayAttribLFormatFunPtr #-}

-- | Usage: @'glVertexArrayBindingDivisor' vaobj bindingindex divisor@


glVertexArrayBindingDivisor :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexArrayBindingDivisor = ffiuintuintuintIOV glVertexArrayBindingDivisorFunPtr

glVertexArrayBindingDivisorFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexArrayBindingDivisorFunPtr = unsafePerformIO (getProcAddress "glVertexArrayBindingDivisor")

{-# NOINLINE glVertexArrayBindingDivisorFunPtr #-}

-- | Usage: @'glVertexArrayElementBuffer' vaobj buffer@
--
-- Manual page: <https://www.opengl.org/sdk/docs/man/html/glVertexArrayElementBuffer.xhtml>


glVertexArrayElementBuffer :: MonadIO m => GLuint -> GLuint -> m ()
glVertexArrayElementBuffer = ffiuintuintIOV glVertexArrayElementBufferFunPtr

glVertexArrayElementBufferFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexArrayElementBufferFunPtr = unsafePerformIO (getProcAddress "glVertexArrayElementBuffer")

{-# NOINLINE glVertexArrayElementBufferFunPtr #-}

-- | Usage: @'glVertexArrayVertexBuffer' vaobj bindingindex buffer offset stride@


glVertexArrayVertexBuffer :: MonadIO m => GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> m ()
glVertexArrayVertexBuffer = ffiuintuintuintintptrsizeiIOV glVertexArrayVertexBufferFunPtr

glVertexArrayVertexBufferFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLintptr -> GLsizei -> IO ())
glVertexArrayVertexBufferFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexBuffer")

{-# NOINLINE glVertexArrayVertexBufferFunPtr #-}

-- | Usage: @'glVertexArrayVertexBuffers' vaobj first count buffers offsets strides@


glVertexArrayVertexBuffers :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> m ()
glVertexArrayVertexBuffers = ffiuintuintsizeiPtruintPtrintptrPtrsizeiIOV glVertexArrayVertexBuffersFunPtr

glVertexArrayVertexBuffersFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLuint -> Ptr GLintptr -> Ptr GLsizei -> IO ())
glVertexArrayVertexBuffersFunPtr = unsafePerformIO (getProcAddress "glVertexArrayVertexBuffers")

{-# NOINLINE glVertexArrayVertexBuffersFunPtr #-}

pattern GL_CLIP_DEPTH_MODE = 0x935D

pattern GL_CLIP_ORIGIN = 0x935C

pattern GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004

pattern GL_CONTEXT_LOST = 0x0507

pattern GL_CONTEXT_RELEASE_BEHAVIOR = 0x82FB

pattern GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC

pattern GL_GUILTY_CONTEXT_RESET = 0x8253

pattern GL_INNOCENT_CONTEXT_RESET = 0x8254

pattern GL_LOSE_CONTEXT_ON_RESET = 0x8252

pattern GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA

pattern GL_MAX_CULL_DISTANCES = 0x82F9

pattern GL_NEGATIVE_ONE_TO_ONE = 0x935E

pattern GL_NO_RESET_NOTIFICATION = 0x8261

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_TARGET = 0x82EA

pattern GL_QUERY_WAIT_INVERTED = 0x8E17

pattern GL_RESET_NOTIFICATION_STRATEGY = 0x8256

pattern GL_TEXTURE_TARGET = 0x1006

pattern GL_UNKNOWN_CONTEXT_RESET = 0x8255

pattern GL_ZERO_TO_ONE = 0x935F

pattern GL_BLEND_EQUATION = 0x8009

pattern GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9

pattern GL_SUBSAMPLE_DISTANCE_AMD = 0x883F

pattern GL_FLOAT16_NV = 0x8FF8

pattern GL_FLOAT16_VEC2_NV = 0x8FF9

pattern GL_FLOAT16_VEC3_NV = 0x8FFA

pattern GL_FLOAT16_VEC4_NV = 0x8FFB

-- | Usage: @'glGetUniformi64vNV' program location params@
--
-- The length of @params@ should be @COMPSIZE(program,location)@.


glGetUniformi64vNV :: MonadIO m => GLuint -> GLint -> Ptr GLint64EXT -> m ()
glGetUniformi64vNV = ffiuintintPtrint64EXTIOV glGetUniformi64vNVFunPtr

glGetUniformi64vNVFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLint64EXT -> IO ())
glGetUniformi64vNVFunPtr = unsafePerformIO (getProcAddress "glGetUniformi64vNV")

{-# NOINLINE glGetUniformi64vNVFunPtr #-}

-- | Usage: @'glGetUniformui64vNV' program location params@
--
-- The length of @params@ should be @COMPSIZE(program,location)@.


glGetUniformui64vNV :: MonadIO m => GLuint -> GLint -> Ptr GLuint64EXT -> m ()
glGetUniformui64vNV = ffiuintintPtruint64EXTIOV glGetUniformui64vNVFunPtr

glGetUniformui64vNVFunPtr :: FunPtr (GLuint -> GLint -> Ptr GLuint64EXT -> IO ())
glGetUniformui64vNVFunPtr = unsafePerformIO (getProcAddress "glGetUniformui64vNV")

{-# NOINLINE glGetUniformui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform1i64NV' program location x@


glProgramUniform1i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> m ()
glProgramUniform1i64NV = ffiuintintint64EXTIOV glProgramUniform1i64NVFunPtr

glProgramUniform1i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> IO ())
glProgramUniform1i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i64NV")

{-# NOINLINE glProgramUniform1i64NVFunPtr #-}

-- | Usage: @'glProgramUniform1i64vNV' program location count value@
--
-- The length of @value@ should be @count@.


glProgramUniform1i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform1i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform1i64vNVFunPtr

glProgramUniform1i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform1i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1i64vNV")

{-# NOINLINE glProgramUniform1i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform1ui64NV' program location x@


glProgramUniform1ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> m ()
glProgramUniform1ui64NV = ffiuintintuint64EXTIOV glProgramUniform1ui64NVFunPtr

glProgramUniform1ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> IO ())
glProgramUniform1ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui64NV")

{-# NOINLINE glProgramUniform1ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform1ui64vNV' program location count value@
--
-- The length of @value@ should be @count@.


glProgramUniform1ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform1ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform1ui64vNVFunPtr

glProgramUniform1ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform1ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1ui64vNV")

{-# NOINLINE glProgramUniform1ui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform2i64NV' program location x y@


glProgramUniform2i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> GLint64EXT -> m ()
glProgramUniform2i64NV = ffiuintintint64EXTint64EXTIOV glProgramUniform2i64NVFunPtr

glProgramUniform2i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> IO ())
glProgramUniform2i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i64NV")

{-# NOINLINE glProgramUniform2i64NVFunPtr #-}

-- | Usage: @'glProgramUniform2i64vNV' program location count value@
--
-- The length of @value@ should be @count*2@.


glProgramUniform2i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform2i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform2i64vNVFunPtr

glProgramUniform2i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform2i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2i64vNV")

{-# NOINLINE glProgramUniform2i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform2ui64NV' program location x y@


glProgramUniform2ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> m ()
glProgramUniform2ui64NV = ffiuintintuint64EXTuint64EXTIOV glProgramUniform2ui64NVFunPtr

glProgramUniform2ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> IO ())
glProgramUniform2ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui64NV")

{-# NOINLINE glProgramUniform2ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform2ui64vNV' program location count value@
--
-- The length of @value@ should be @count*2@.


glProgramUniform2ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform2ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform2ui64vNVFunPtr

glProgramUniform2ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform2ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2ui64vNV")

{-# NOINLINE glProgramUniform2ui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform3i64NV' program location x y z@


glProgramUniform3i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glProgramUniform3i64NV = ffiuintintint64EXTint64EXTint64EXTIOV glProgramUniform3i64NVFunPtr

glProgramUniform3i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glProgramUniform3i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i64NV")

{-# NOINLINE glProgramUniform3i64NVFunPtr #-}

-- | Usage: @'glProgramUniform3i64vNV' program location count value@
--
-- The length of @value@ should be @count*3@.


glProgramUniform3i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform3i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform3i64vNVFunPtr

glProgramUniform3i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform3i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3i64vNV")

{-# NOINLINE glProgramUniform3i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform3ui64NV' program location x y z@


glProgramUniform3ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glProgramUniform3ui64NV = ffiuintintuint64EXTuint64EXTuint64EXTIOV glProgramUniform3ui64NVFunPtr

glProgramUniform3ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glProgramUniform3ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui64NV")

{-# NOINLINE glProgramUniform3ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform3ui64vNV' program location count value@
--
-- The length of @value@ should be @count*3@.


glProgramUniform3ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform3ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform3ui64vNVFunPtr

glProgramUniform3ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform3ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform3ui64vNV")

{-# NOINLINE glProgramUniform3ui64vNVFunPtr #-}

-- | Usage: @'glProgramUniform4i64NV' program location x y z w@


glProgramUniform4i64NV :: MonadIO m => GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glProgramUniform4i64NV = ffiuintintint64EXTint64EXTint64EXTint64EXTIOV glProgramUniform4i64NVFunPtr

glProgramUniform4i64NVFunPtr :: FunPtr (GLuint -> GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glProgramUniform4i64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i64NV")

{-# NOINLINE glProgramUniform4i64NVFunPtr #-}

-- | Usage: @'glProgramUniform4i64vNV' program location count value@
--
-- The length of @value@ should be @count*4@.


glProgramUniform4i64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glProgramUniform4i64vNV = ffiuintintsizeiPtrint64EXTIOV glProgramUniform4i64vNVFunPtr

glProgramUniform4i64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glProgramUniform4i64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4i64vNV")

{-# NOINLINE glProgramUniform4i64vNVFunPtr #-}

-- | Usage: @'glProgramUniform4ui64NV' program location x y z w@


glProgramUniform4ui64NV :: MonadIO m => GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glProgramUniform4ui64NV = ffiuintintuint64EXTuint64EXTuint64EXTuint64EXTIOV glProgramUniform4ui64NVFunPtr

glProgramUniform4ui64NVFunPtr :: FunPtr (GLuint -> GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glProgramUniform4ui64NVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui64NV")

{-# NOINLINE glProgramUniform4ui64NVFunPtr #-}

-- | Usage: @'glProgramUniform4ui64vNV' program location count value@
--
-- The length of @value@ should be @count*4@.


glProgramUniform4ui64vNV :: MonadIO m => GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glProgramUniform4ui64vNV = ffiuintintsizeiPtruint64EXTIOV glProgramUniform4ui64vNVFunPtr

glProgramUniform4ui64vNVFunPtr :: FunPtr (GLuint -> GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glProgramUniform4ui64vNVFunPtr = unsafePerformIO (getProcAddress "glProgramUniform4ui64vNV")

{-# NOINLINE glProgramUniform4ui64vNVFunPtr #-}

-- | Usage: @'glUniform1i64NV' location x@


glUniform1i64NV :: MonadIO m => GLint -> GLint64EXT -> m ()
glUniform1i64NV = ffiintint64EXTIOV glUniform1i64NVFunPtr

glUniform1i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> IO ())
glUniform1i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform1i64NV")

{-# NOINLINE glUniform1i64NVFunPtr #-}

-- | Usage: @'glUniform1i64vNV' location count value@
--
-- The length of @value@ should be @count*1@.


glUniform1i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform1i64vNV = ffiintsizeiPtrint64EXTIOV glUniform1i64vNVFunPtr

glUniform1i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform1i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform1i64vNV")

{-# NOINLINE glUniform1i64vNVFunPtr #-}

-- | Usage: @'glUniform1ui64NV' location x@


glUniform1ui64NV :: MonadIO m => GLint -> GLuint64EXT -> m ()
glUniform1ui64NV = ffiintuint64EXTIOV glUniform1ui64NVFunPtr

glUniform1ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> IO ())
glUniform1ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform1ui64NV")

{-# NOINLINE glUniform1ui64NVFunPtr #-}

-- | Usage: @'glUniform1ui64vNV' location count value@
--
-- The length of @value@ should be @count*1@.


glUniform1ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform1ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform1ui64vNVFunPtr

glUniform1ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform1ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform1ui64vNV")

{-# NOINLINE glUniform1ui64vNVFunPtr #-}

-- | Usage: @'glUniform2i64NV' location x y@


glUniform2i64NV :: MonadIO m => GLint -> GLint64EXT -> GLint64EXT -> m ()
glUniform2i64NV = ffiintint64EXTint64EXTIOV glUniform2i64NVFunPtr

glUniform2i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> IO ())
glUniform2i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform2i64NV")

{-# NOINLINE glUniform2i64NVFunPtr #-}

-- | Usage: @'glUniform2i64vNV' location count value@
--
-- The length of @value@ should be @count*2@.


glUniform2i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform2i64vNV = ffiintsizeiPtrint64EXTIOV glUniform2i64vNVFunPtr

glUniform2i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform2i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform2i64vNV")

{-# NOINLINE glUniform2i64vNVFunPtr #-}

-- | Usage: @'glUniform2ui64NV' location x y@


glUniform2ui64NV :: MonadIO m => GLint -> GLuint64EXT -> GLuint64EXT -> m ()
glUniform2ui64NV = ffiintuint64EXTuint64EXTIOV glUniform2ui64NVFunPtr

glUniform2ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> IO ())
glUniform2ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform2ui64NV")

{-# NOINLINE glUniform2ui64NVFunPtr #-}

-- | Usage: @'glUniform2ui64vNV' location count value@
--
-- The length of @value@ should be @count*2@.


glUniform2ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform2ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform2ui64vNVFunPtr

glUniform2ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform2ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform2ui64vNV")

{-# NOINLINE glUniform2ui64vNVFunPtr #-}

-- | Usage: @'glUniform3i64NV' location x y z@


glUniform3i64NV :: MonadIO m => GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glUniform3i64NV = ffiintint64EXTint64EXTint64EXTIOV glUniform3i64NVFunPtr

glUniform3i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glUniform3i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform3i64NV")

{-# NOINLINE glUniform3i64NVFunPtr #-}

-- | Usage: @'glUniform3i64vNV' location count value@
--
-- The length of @value@ should be @count*3@.


glUniform3i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform3i64vNV = ffiintsizeiPtrint64EXTIOV glUniform3i64vNVFunPtr

glUniform3i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform3i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform3i64vNV")

{-# NOINLINE glUniform3i64vNVFunPtr #-}

-- | Usage: @'glUniform3ui64NV' location x y z@


glUniform3ui64NV :: MonadIO m => GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glUniform3ui64NV = ffiintuint64EXTuint64EXTuint64EXTIOV glUniform3ui64NVFunPtr

glUniform3ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glUniform3ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform3ui64NV")

{-# NOINLINE glUniform3ui64NVFunPtr #-}

-- | Usage: @'glUniform3ui64vNV' location count value@
--
-- The length of @value@ should be @count*3@.


glUniform3ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform3ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform3ui64vNVFunPtr

glUniform3ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform3ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform3ui64vNV")

{-# NOINLINE glUniform3ui64vNVFunPtr #-}

-- | Usage: @'glUniform4i64NV' location x y z w@


glUniform4i64NV :: MonadIO m => GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> m ()
glUniform4i64NV = ffiintint64EXTint64EXTint64EXTint64EXTIOV glUniform4i64NVFunPtr

glUniform4i64NVFunPtr :: FunPtr (GLint -> GLint64EXT -> GLint64EXT -> GLint64EXT -> GLint64EXT -> IO ())
glUniform4i64NVFunPtr = unsafePerformIO (getProcAddress "glUniform4i64NV")

{-# NOINLINE glUniform4i64NVFunPtr #-}

-- | Usage: @'glUniform4i64vNV' location count value@
--
-- The length of @value@ should be @count*4@.


glUniform4i64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLint64EXT -> m ()
glUniform4i64vNV = ffiintsizeiPtrint64EXTIOV glUniform4i64vNVFunPtr

glUniform4i64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint64EXT -> IO ())
glUniform4i64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform4i64vNV")

{-# NOINLINE glUniform4i64vNVFunPtr #-}

-- | Usage: @'glUniform4ui64NV' location x y z w@


glUniform4ui64NV :: MonadIO m => GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> m ()
glUniform4ui64NV = ffiintuint64EXTuint64EXTuint64EXTuint64EXTIOV glUniform4ui64NVFunPtr

glUniform4ui64NVFunPtr :: FunPtr (GLint -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> GLuint64EXT -> IO ())
glUniform4ui64NVFunPtr = unsafePerformIO (getProcAddress "glUniform4ui64NV")

{-# NOINLINE glUniform4ui64NVFunPtr #-}

-- | Usage: @'glUniform4ui64vNV' location count value@
--
-- The length of @value@ should be @count*4@.


glUniform4ui64vNV :: MonadIO m => GLint -> GLsizei -> Ptr GLuint64EXT -> m ()
glUniform4ui64vNV = ffiintsizeiPtruint64EXTIOV glUniform4ui64vNVFunPtr

glUniform4ui64vNVFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLuint64EXT -> IO ())
glUniform4ui64vNVFunPtr = unsafePerformIO (getProcAddress "glUniform4ui64vNV")

{-# NOINLINE glUniform4ui64vNVFunPtr #-}

pattern GL_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_DEPTH24_STENCIL8_OES = 0x88F0

pattern GL_DEPTH_COMPONENT32_OES = 0x81A7

pattern GL_DEPTH_STENCIL_OES = 0x84F9

pattern GL_UNSIGNED_INT_24_8_OES = 0x84FA

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

pattern GL_UNSIGNED_INT64_ARB = 0x140F

-- | Usage: @'glBindProgramARB' target program@
--
-- The parameter @target@ is a @ProgramTargetARB@.


glBindProgramARB :: MonadIO m => GLenum -> GLuint -> m ()
glBindProgramARB = ffienumuintIOV glBindProgramARBFunPtr

glBindProgramARBFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindProgramARBFunPtr = unsafePerformIO (getProcAddress "glBindProgramARB")

{-# NOINLINE glBindProgramARBFunPtr #-}

-- | Usage: @'glDeleteProgramsARB' n programs@
--
-- The length of @programs@ should be @n@.


glDeleteProgramsARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteProgramsARB = ffisizeiPtruintIOV glDeleteProgramsARBFunPtr

glDeleteProgramsARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteProgramsARBFunPtr = unsafePerformIO (getProcAddress "glDeleteProgramsARB")

{-# NOINLINE glDeleteProgramsARBFunPtr #-}

-- | Usage: @'glGenProgramsARB' n programs@
--
-- The length of @programs@ should be @n@.


glGenProgramsARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenProgramsARB = ffisizeiPtruintIOV glGenProgramsARBFunPtr

glGenProgramsARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenProgramsARBFunPtr = unsafePerformIO (getProcAddress "glGenProgramsARB")

{-# NOINLINE glGenProgramsARBFunPtr #-}

-- | Usage: @'glGetProgramEnvParameterdvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramEnvParameterdvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glGetProgramEnvParameterdvARB = ffienumuintPtrdoubleIOV glGetProgramEnvParameterdvARBFunPtr

glGetProgramEnvParameterdvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glGetProgramEnvParameterdvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramEnvParameterdvARB")

{-# NOINLINE glGetProgramEnvParameterdvARBFunPtr #-}

-- | Usage: @'glGetProgramEnvParameterfvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramEnvParameterfvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetProgramEnvParameterfvARB = ffienumuintPtrfloatIOV glGetProgramEnvParameterfvARBFunPtr

glGetProgramEnvParameterfvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetProgramEnvParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramEnvParameterfvARB")

{-# NOINLINE glGetProgramEnvParameterfvARBFunPtr #-}

-- | Usage: @'glGetProgramLocalParameterdvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramLocalParameterdvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glGetProgramLocalParameterdvARB = ffienumuintPtrdoubleIOV glGetProgramLocalParameterdvARBFunPtr

glGetProgramLocalParameterdvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glGetProgramLocalParameterdvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramLocalParameterdvARB")

{-# NOINLINE glGetProgramLocalParameterdvARBFunPtr #-}

-- | Usage: @'glGetProgramLocalParameterfvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glGetProgramLocalParameterfvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glGetProgramLocalParameterfvARB = ffienumuintPtrfloatIOV glGetProgramLocalParameterfvARBFunPtr

glGetProgramLocalParameterfvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glGetProgramLocalParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramLocalParameterfvARB")

{-# NOINLINE glGetProgramLocalParameterfvARBFunPtr #-}

-- | Usage: @'glGetProgramStringARB' target pname string@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The parameter @pname@ is a @ProgramStringPropertyARB@.
--
-- The length of @string@ should be @COMPSIZE(target,pname)@.


glGetProgramStringARB :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
glGetProgramStringARB = ffienumenumPtrVIOV glGetProgramStringARBFunPtr

glGetProgramStringARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
glGetProgramStringARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramStringARB")

{-# NOINLINE glGetProgramStringARBFunPtr #-}

-- | Usage: @'glGetProgramivARB' target pname params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The parameter @pname@ is a @ProgramPropertyARB@.
--
-- The length of @params@ should be @1@.


glGetProgramivARB :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetProgramivARB = ffienumenumPtrintIOV glGetProgramivARBFunPtr

glGetProgramivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetProgramivARBFunPtr = unsafePerformIO (getProcAddress "glGetProgramivARB")

{-# NOINLINE glGetProgramivARBFunPtr #-}

-- | Usage: @'glIsProgramARB' program@


glIsProgramARB :: MonadIO m => GLuint -> m GLboolean
glIsProgramARB = ffiuintIOboolean glIsProgramARBFunPtr

glIsProgramARBFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsProgramARBFunPtr = unsafePerformIO (getProcAddress "glIsProgramARB")

{-# NOINLINE glIsProgramARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4dARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glProgramEnvParameter4dvARB'.


glProgramEnvParameter4dARB :: MonadIO m => GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramEnvParameter4dARB = ffienumuintdoubledoubledoubledoubleIOV glProgramEnvParameter4dARBFunPtr

glProgramEnvParameter4dARBFunPtr :: FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramEnvParameter4dARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4dARB")

{-# NOINLINE glProgramEnvParameter4dARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4dvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramEnvParameter4dvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glProgramEnvParameter4dvARB = ffienumuintPtrdoubleIOV glProgramEnvParameter4dvARBFunPtr

glProgramEnvParameter4dvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glProgramEnvParameter4dvARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4dvARB")

{-# NOINLINE glProgramEnvParameter4dvARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4fARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glProgramEnvParameter4fvARB'.


glProgramEnvParameter4fARB :: MonadIO m => GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramEnvParameter4fARB = ffienumuintfloatfloatfloatfloatIOV glProgramEnvParameter4fARBFunPtr

glProgramEnvParameter4fARBFunPtr :: FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramEnvParameter4fARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4fARB")

{-# NOINLINE glProgramEnvParameter4fARBFunPtr #-}

-- | Usage: @'glProgramEnvParameter4fvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramEnvParameter4fvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glProgramEnvParameter4fvARB = ffienumuintPtrfloatIOV glProgramEnvParameter4fvARBFunPtr

glProgramEnvParameter4fvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glProgramEnvParameter4fvARBFunPtr = unsafePerformIO (getProcAddress "glProgramEnvParameter4fvARB")

{-# NOINLINE glProgramEnvParameter4fvARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4dARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glProgramLocalParameter4dvARB'.


glProgramLocalParameter4dARB :: MonadIO m => GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramLocalParameter4dARB = ffienumuintdoubledoubledoubledoubleIOV glProgramLocalParameter4dARBFunPtr

glProgramLocalParameter4dARBFunPtr :: FunPtr (GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramLocalParameter4dARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4dARB")

{-# NOINLINE glProgramLocalParameter4dARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4dvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramLocalParameter4dvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLdouble -> m ()
glProgramLocalParameter4dvARB = ffienumuintPtrdoubleIOV glProgramLocalParameter4dvARBFunPtr

glProgramLocalParameter4dvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLdouble -> IO ())
glProgramLocalParameter4dvARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4dvARB")

{-# NOINLINE glProgramLocalParameter4dvARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4fARB' target index x y z w@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glProgramLocalParameter4fvARB'.


glProgramLocalParameter4fARB :: MonadIO m => GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramLocalParameter4fARB = ffienumuintfloatfloatfloatfloatIOV glProgramLocalParameter4fARBFunPtr

glProgramLocalParameter4fARBFunPtr :: FunPtr (GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramLocalParameter4fARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4fARB")

{-# NOINLINE glProgramLocalParameter4fARBFunPtr #-}

-- | Usage: @'glProgramLocalParameter4fvARB' target index params@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The length of @params@ should be @4@.


glProgramLocalParameter4fvARB :: MonadIO m => GLenum -> GLuint -> Ptr GLfloat -> m ()
glProgramLocalParameter4fvARB = ffienumuintPtrfloatIOV glProgramLocalParameter4fvARBFunPtr

glProgramLocalParameter4fvARBFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLfloat -> IO ())
glProgramLocalParameter4fvARBFunPtr = unsafePerformIO (getProcAddress "glProgramLocalParameter4fvARB")

{-# NOINLINE glProgramLocalParameter4fvARBFunPtr #-}

-- | Usage: @'glProgramStringARB' target format len string@
--
-- The parameter @target@ is a @ProgramTargetARB@.
--
-- The parameter @format@ is a @ProgramFormatARB@.
--
-- The length of @string@ should be @len@.


glProgramStringARB :: MonadIO m => GLenum -> GLenum -> GLsizei -> Ptr () -> m ()
glProgramStringARB = ffienumenumsizeiPtrVIOV glProgramStringARBFunPtr

glProgramStringARBFunPtr :: FunPtr (GLenum -> GLenum -> GLsizei -> Ptr () -> IO ())
glProgramStringARBFunPtr = unsafePerformIO (getProcAddress "glProgramStringARB")

{-# NOINLINE glProgramStringARBFunPtr #-}

pattern GL_CURRENT_MATRIX_ARB = 0x8641

pattern GL_CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640

pattern GL_MATRIX0_ARB = 0x88C0

pattern GL_MATRIX10_ARB = 0x88CA

pattern GL_MATRIX11_ARB = 0x88CB

pattern GL_MATRIX12_ARB = 0x88CC

pattern GL_MATRIX13_ARB = 0x88CD

pattern GL_MATRIX14_ARB = 0x88CE

pattern GL_MATRIX15_ARB = 0x88CF

pattern GL_MATRIX16_ARB = 0x88D0

pattern GL_MATRIX17_ARB = 0x88D1

pattern GL_MATRIX18_ARB = 0x88D2

pattern GL_MATRIX19_ARB = 0x88D3

pattern GL_MATRIX1_ARB = 0x88C1

pattern GL_MATRIX20_ARB = 0x88D4

pattern GL_MATRIX21_ARB = 0x88D5

pattern GL_MATRIX22_ARB = 0x88D6

pattern GL_MATRIX23_ARB = 0x88D7

pattern GL_MATRIX24_ARB = 0x88D8

pattern GL_MATRIX25_ARB = 0x88D9

pattern GL_MATRIX26_ARB = 0x88DA

pattern GL_MATRIX27_ARB = 0x88DB

pattern GL_MATRIX28_ARB = 0x88DC

pattern GL_MATRIX29_ARB = 0x88DD

pattern GL_MATRIX2_ARB = 0x88C2

pattern GL_MATRIX30_ARB = 0x88DE

pattern GL_MATRIX31_ARB = 0x88DF

pattern GL_MATRIX3_ARB = 0x88C3

pattern GL_MATRIX4_ARB = 0x88C4

pattern GL_MATRIX5_ARB = 0x88C5

pattern GL_MATRIX6_ARB = 0x88C6

pattern GL_MATRIX7_ARB = 0x88C7

pattern GL_MATRIX8_ARB = 0x88C8

pattern GL_MATRIX9_ARB = 0x88C9

pattern GL_MAX_PROGRAM_ATTRIBS_ARB = 0x88AD

pattern GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5

pattern GL_MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1

pattern GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4

pattern GL_MAX_PROGRAM_MATRICES_ARB = 0x862F

pattern GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E

pattern GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF

pattern GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3

pattern GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB

pattern GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7

pattern GL_MAX_PROGRAM_PARAMETERS_ARB = 0x88A9

pattern GL_MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5

pattern GL_MAX_TEXTURE_COORDS_ARB = 0x8871

pattern GL_MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872

pattern GL_PROGRAM_ATTRIBS_ARB = 0x88AC

pattern GL_PROGRAM_BINDING_ARB = 0x8677

pattern GL_PROGRAM_ERROR_POSITION_ARB = 0x864B

pattern GL_PROGRAM_ERROR_STRING_ARB = 0x8874

pattern GL_PROGRAM_FORMAT_ARB = 0x8876

pattern GL_PROGRAM_FORMAT_ASCII_ARB = 0x8875

pattern GL_PROGRAM_INSTRUCTIONS_ARB = 0x88A0

pattern GL_PROGRAM_LENGTH_ARB = 0x8627

pattern GL_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE

pattern GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2

pattern GL_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA

pattern GL_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6

pattern GL_PROGRAM_PARAMETERS_ARB = 0x88A8

pattern GL_PROGRAM_STRING_ARB = 0x8628

pattern GL_PROGRAM_TEMPORARIES_ARB = 0x88A4

pattern GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6

pattern GL_TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7

pattern GL_SAMPLES_ARB = 0x80A9

pattern GL_TEXTURE0_ARB = 0x84C0

pattern GL_TEXTURE1_ARB = 0x84C1

pattern GL_FLOAT_MAT2_ARB = 0x8B5A

pattern GL_FLOAT_MAT3_ARB = 0x8B5B

pattern GL_FLOAT_MAT4_ARB = 0x8B5C

pattern GL_FLOAT_VEC2_ARB = 0x8B50

pattern GL_FLOAT_VEC3_ARB = 0x8B51

pattern GL_FLOAT_VEC4_ARB = 0x8B52

-- | Usage: @'glDisableVertexAttribArrayARB' index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDisableVertexAttribArray'.


glDisableVertexAttribArrayARB :: MonadIO m => GLuint -> m ()
glDisableVertexAttribArrayARB = ffiuintIOV glDisableVertexAttribArrayARBFunPtr

glDisableVertexAttribArrayARBFunPtr :: FunPtr (GLuint -> IO ())
glDisableVertexAttribArrayARBFunPtr = unsafePerformIO (getProcAddress "glDisableVertexAttribArrayARB")

{-# NOINLINE glDisableVertexAttribArrayARBFunPtr #-}

-- | Usage: @'glEnableVertexAttribArrayARB' index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glEnableVertexAttribArray'.


glEnableVertexAttribArrayARB :: MonadIO m => GLuint -> m ()
glEnableVertexAttribArrayARB = ffiuintIOV glEnableVertexAttribArrayARBFunPtr

glEnableVertexAttribArrayARBFunPtr :: FunPtr (GLuint -> IO ())
glEnableVertexAttribArrayARBFunPtr = unsafePerformIO (getProcAddress "glEnableVertexAttribArrayARB")

{-# NOINLINE glEnableVertexAttribArrayARBFunPtr #-}

-- | Usage: @'glGetVertexAttribPointervARB' index pname pointer@
--
-- The parameter @pname@ is a @VertexAttribPointerPropertyARB@.
--
-- The length of @pointer@ should be @1@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetVertexAttribPointerv'.


glGetVertexAttribPointervARB :: MonadIO m => GLuint -> GLenum -> Ptr (Ptr ()) -> m ()
glGetVertexAttribPointervARB = ffiuintenumPtrPtrVIOV glGetVertexAttribPointervARBFunPtr

glGetVertexAttribPointervARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetVertexAttribPointervARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribPointervARB")

{-# NOINLINE glGetVertexAttribPointervARBFunPtr #-}

-- | Usage: @'glGetVertexAttribdvARB' index pname params@
--
-- The parameter @pname@ is a @VertexAttribPropertyARB@.
--
-- The length of @params@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetVertexAttribdv'.


glGetVertexAttribdvARB :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
glGetVertexAttribdvARB = ffiuintenumPtrdoubleIOV glGetVertexAttribdvARBFunPtr

glGetVertexAttribdvARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
glGetVertexAttribdvARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribdvARB")

{-# NOINLINE glGetVertexAttribdvARBFunPtr #-}

-- | Usage: @'glGetVertexAttribfvARB' index pname params@
--
-- The parameter @pname@ is a @VertexAttribPropertyARB@.
--
-- The length of @params@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetVertexAttribfv'.


glGetVertexAttribfvARB :: MonadIO m => GLuint -> GLenum -> Ptr GLfloat -> m ()
glGetVertexAttribfvARB = ffiuintenumPtrfloatIOV glGetVertexAttribfvARBFunPtr

glGetVertexAttribfvARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLfloat -> IO ())
glGetVertexAttribfvARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribfvARB")

{-# NOINLINE glGetVertexAttribfvARBFunPtr #-}

-- | Usage: @'glGetVertexAttribivARB' index pname params@
--
-- The parameter @pname@ is a @VertexAttribPropertyARB@.
--
-- The length of @params@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetVertexAttribiv'.


glGetVertexAttribivARB :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribivARB = ffiuintenumPtrintIOV glGetVertexAttribivARBFunPtr

glGetVertexAttribivARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribivARBFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribivARB")

{-# NOINLINE glGetVertexAttribivARBFunPtr #-}

-- | Usage: @'glVertexAttrib1dARB' index x@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib1d'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib1dvARB'.


glVertexAttrib1dARB :: MonadIO m => GLuint -> GLdouble -> m ()
glVertexAttrib1dARB = ffiuintdoubleIOV glVertexAttrib1dARBFunPtr

glVertexAttrib1dARBFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttrib1dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dARB")

{-# NOINLINE glVertexAttrib1dARBFunPtr #-}

-- | Usage: @'glVertexAttrib1dvARB' index v@
--
-- The length of @v@ should be @1@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib1dv'.


glVertexAttrib1dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib1dvARB = ffiuintPtrdoubleIOV glVertexAttrib1dvARBFunPtr

glVertexAttrib1dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib1dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1dvARB")

{-# NOINLINE glVertexAttrib1dvARBFunPtr #-}

-- | Usage: @'glVertexAttrib1fARB' index x@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib1f'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib1fvARB'.


glVertexAttrib1fARB :: MonadIO m => GLuint -> GLfloat -> m ()
glVertexAttrib1fARB = ffiuintfloatIOV glVertexAttrib1fARBFunPtr

glVertexAttrib1fARBFunPtr :: FunPtr (GLuint -> GLfloat -> IO ())
glVertexAttrib1fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fARB")

{-# NOINLINE glVertexAttrib1fARBFunPtr #-}

-- | Usage: @'glVertexAttrib1fvARB' index v@
--
-- The length of @v@ should be @1@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib1fv'.


glVertexAttrib1fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib1fvARB = ffiuintPtrfloatIOV glVertexAttrib1fvARBFunPtr

glVertexAttrib1fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib1fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1fvARB")

{-# NOINLINE glVertexAttrib1fvARBFunPtr #-}

-- | Usage: @'glVertexAttrib1sARB' index x@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib1s'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib1svARB'.


glVertexAttrib1sARB :: MonadIO m => GLuint -> GLshort -> m ()
glVertexAttrib1sARB = ffiuintshortIOV glVertexAttrib1sARBFunPtr

glVertexAttrib1sARBFunPtr :: FunPtr (GLuint -> GLshort -> IO ())
glVertexAttrib1sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1sARB")

{-# NOINLINE glVertexAttrib1sARBFunPtr #-}

-- | Usage: @'glVertexAttrib1svARB' index v@
--
-- The length of @v@ should be @1@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib1sv'.


glVertexAttrib1svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib1svARB = ffiuintPtrshortIOV glVertexAttrib1svARBFunPtr

glVertexAttrib1svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib1svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib1svARB")

{-# NOINLINE glVertexAttrib1svARBFunPtr #-}

-- | Usage: @'glVertexAttrib2dARB' index x y@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib2d'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib2dvARB'.


glVertexAttrib2dARB :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttrib2dARB = ffiuintdoubledoubleIOV glVertexAttrib2dARBFunPtr

glVertexAttrib2dARBFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttrib2dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dARB")

{-# NOINLINE glVertexAttrib2dARBFunPtr #-}

-- | Usage: @'glVertexAttrib2dvARB' index v@
--
-- The length of @v@ should be @2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib2dv'.


glVertexAttrib2dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib2dvARB = ffiuintPtrdoubleIOV glVertexAttrib2dvARBFunPtr

glVertexAttrib2dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib2dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2dvARB")

{-# NOINLINE glVertexAttrib2dvARBFunPtr #-}

-- | Usage: @'glVertexAttrib2fARB' index x y@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib2f'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib2fvARB'.


glVertexAttrib2fARB :: MonadIO m => GLuint -> GLfloat -> GLfloat -> m ()
glVertexAttrib2fARB = ffiuintfloatfloatIOV glVertexAttrib2fARBFunPtr

glVertexAttrib2fARBFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> IO ())
glVertexAttrib2fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fARB")

{-# NOINLINE glVertexAttrib2fARBFunPtr #-}

-- | Usage: @'glVertexAttrib2fvARB' index v@
--
-- The length of @v@ should be @2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib2fv'.


glVertexAttrib2fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib2fvARB = ffiuintPtrfloatIOV glVertexAttrib2fvARBFunPtr

glVertexAttrib2fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib2fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2fvARB")

{-# NOINLINE glVertexAttrib2fvARBFunPtr #-}

-- | Usage: @'glVertexAttrib2sARB' index x y@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib2s'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib2svARB'.


glVertexAttrib2sARB :: MonadIO m => GLuint -> GLshort -> GLshort -> m ()
glVertexAttrib2sARB = ffiuintshortshortIOV glVertexAttrib2sARBFunPtr

glVertexAttrib2sARBFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> IO ())
glVertexAttrib2sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2sARB")

{-# NOINLINE glVertexAttrib2sARBFunPtr #-}

-- | Usage: @'glVertexAttrib2svARB' index v@
--
-- The length of @v@ should be @2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib2sv'.


glVertexAttrib2svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib2svARB = ffiuintPtrshortIOV glVertexAttrib2svARBFunPtr

glVertexAttrib2svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib2svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib2svARB")

{-# NOINLINE glVertexAttrib2svARBFunPtr #-}

-- | Usage: @'glVertexAttrib3dARB' index x y z@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib3d'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib3dvARB'.


glVertexAttrib3dARB :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttrib3dARB = ffiuintdoubledoubledoubleIOV glVertexAttrib3dARBFunPtr

glVertexAttrib3dARBFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttrib3dARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dARB")

{-# NOINLINE glVertexAttrib3dARBFunPtr #-}

-- | Usage: @'glVertexAttrib3dvARB' index v@
--
-- The length of @v@ should be @3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib3dv'.


glVertexAttrib3dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib3dvARB = ffiuintPtrdoubleIOV glVertexAttrib3dvARBFunPtr

glVertexAttrib3dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib3dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3dvARB")

{-# NOINLINE glVertexAttrib3dvARBFunPtr #-}

-- | Usage: @'glVertexAttrib3fARB' index x y z@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib3f'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib3fvARB'.


glVertexAttrib3fARB :: MonadIO m => GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
glVertexAttrib3fARB = ffiuintfloatfloatfloatIOV glVertexAttrib3fARBFunPtr

glVertexAttrib3fARBFunPtr :: FunPtr (GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glVertexAttrib3fARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fARB")

{-# NOINLINE glVertexAttrib3fARBFunPtr #-}

-- | Usage: @'glVertexAttrib3fvARB' index v@
--
-- The length of @v@ should be @3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib3fv'.


glVertexAttrib3fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib3fvARB = ffiuintPtrfloatIOV glVertexAttrib3fvARBFunPtr

glVertexAttrib3fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib3fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3fvARB")

{-# NOINLINE glVertexAttrib3fvARBFunPtr #-}

-- | Usage: @'glVertexAttrib3sARB' index x y z@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib3s'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib3svARB'.


glVertexAttrib3sARB :: MonadIO m => GLuint -> GLshort -> GLshort -> GLshort -> m ()
glVertexAttrib3sARB = ffiuintshortshortshortIOV glVertexAttrib3sARBFunPtr

glVertexAttrib3sARBFunPtr :: FunPtr (GLuint -> GLshort -> GLshort -> GLshort -> IO ())
glVertexAttrib3sARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3sARB")

{-# NOINLINE glVertexAttrib3sARBFunPtr #-}

-- | Usage: @'glVertexAttrib3svARB' index v@
--
-- The length of @v@ should be @3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib3sv'.


glVertexAttrib3svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib3svARB = ffiuintPtrshortIOV glVertexAttrib3svARBFunPtr

glVertexAttrib3svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib3svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib3svARB")

{-# NOINLINE glVertexAttrib3svARBFunPtr #-}

-- | Usage: @'glVertexAttrib4NbvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Nbv'.


glVertexAttrib4NbvARB :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4NbvARB = ffiuintPtrbyteIOV glVertexAttrib4NbvARBFunPtr

glVertexAttrib4NbvARBFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4NbvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NbvARB")

{-# NOINLINE glVertexAttrib4NbvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4NivARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Niv'.


glVertexAttrib4NivARB :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4NivARB = ffiuintPtrintIOV glVertexAttrib4NivARBFunPtr

glVertexAttrib4NivARBFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4NivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NivARB")

{-# NOINLINE glVertexAttrib4NivARBFunPtr #-}

-- | Usage: @'glVertexAttrib4NsvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Nsv'.


glVertexAttrib4NsvARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4NsvARB = ffiuintPtrshortIOV glVertexAttrib4NsvARBFunPtr

glVertexAttrib4NsvARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4NsvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NsvARB")

{-# NOINLINE glVertexAttrib4NsvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4NubARB' index x y z w@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Nub'.


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 #-}

-- | Usage: @'glVertexAttrib4NubvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Nubv'.


glVertexAttrib4NubvARB :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4NubvARB = ffiuintPtrubyteIOV glVertexAttrib4NubvARBFunPtr

glVertexAttrib4NubvARBFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4NubvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NubvARB")

{-# NOINLINE glVertexAttrib4NubvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4NuivARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Nuiv'.


glVertexAttrib4NuivARB :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4NuivARB = ffiuintPtruintIOV glVertexAttrib4NuivARBFunPtr

glVertexAttrib4NuivARBFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4NuivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NuivARB")

{-# NOINLINE glVertexAttrib4NuivARBFunPtr #-}

-- | Usage: @'glVertexAttrib4NusvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4Nusv'.


glVertexAttrib4NusvARB :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4NusvARB = ffiuintPtrushortIOV glVertexAttrib4NusvARBFunPtr

glVertexAttrib4NusvARBFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4NusvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4NusvARB")

{-# NOINLINE glVertexAttrib4NusvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4bvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4bv'.


glVertexAttrib4bvARB :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttrib4bvARB = ffiuintPtrbyteIOV glVertexAttrib4bvARBFunPtr

glVertexAttrib4bvARBFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttrib4bvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4bvARB")

{-# NOINLINE glVertexAttrib4bvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4dARB' index x y z w@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4d'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib4dvARB'.


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 #-}

-- | Usage: @'glVertexAttrib4dvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4dv'.


glVertexAttrib4dvARB :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttrib4dvARB = ffiuintPtrdoubleIOV glVertexAttrib4dvARBFunPtr

glVertexAttrib4dvARBFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttrib4dvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4dvARB")

{-# NOINLINE glVertexAttrib4dvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4fARB' index x y z w@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4f'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib4fvARB'.


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 #-}

-- | Usage: @'glVertexAttrib4fvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4fv'.


glVertexAttrib4fvARB :: MonadIO m => GLuint -> Ptr GLfloat -> m ()
glVertexAttrib4fvARB = ffiuintPtrfloatIOV glVertexAttrib4fvARBFunPtr

glVertexAttrib4fvARBFunPtr :: FunPtr (GLuint -> Ptr GLfloat -> IO ())
glVertexAttrib4fvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4fvARB")

{-# NOINLINE glVertexAttrib4fvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4ivARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4iv'.


glVertexAttrib4ivARB :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttrib4ivARB = ffiuintPtrintIOV glVertexAttrib4ivARBFunPtr

glVertexAttrib4ivARBFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttrib4ivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ivARB")

{-# NOINLINE glVertexAttrib4ivARBFunPtr #-}

-- | Usage: @'glVertexAttrib4sARB' index x y z w@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4s'.
--
-- The vector equivalent of this command is 'Graphics.GL.Internal.Shared.glVertexAttrib4svARB'.


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 #-}

-- | Usage: @'glVertexAttrib4svARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4sv'.


glVertexAttrib4svARB :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttrib4svARB = ffiuintPtrshortIOV glVertexAttrib4svARBFunPtr

glVertexAttrib4svARBFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttrib4svARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4svARB")

{-# NOINLINE glVertexAttrib4svARBFunPtr #-}

-- | Usage: @'glVertexAttrib4ubvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4ubv'.


glVertexAttrib4ubvARB :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttrib4ubvARB = ffiuintPtrubyteIOV glVertexAttrib4ubvARBFunPtr

glVertexAttrib4ubvARBFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttrib4ubvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4ubvARB")

{-# NOINLINE glVertexAttrib4ubvARBFunPtr #-}

-- | Usage: @'glVertexAttrib4uivARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4uiv'.


glVertexAttrib4uivARB :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttrib4uivARB = ffiuintPtruintIOV glVertexAttrib4uivARBFunPtr

glVertexAttrib4uivARBFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttrib4uivARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4uivARB")

{-# NOINLINE glVertexAttrib4uivARBFunPtr #-}

-- | Usage: @'glVertexAttrib4usvARB' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttrib4usv'.


glVertexAttrib4usvARB :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttrib4usvARB = ffiuintPtrushortIOV glVertexAttrib4usvARBFunPtr

glVertexAttrib4usvARBFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttrib4usvARBFunPtr = unsafePerformIO (getProcAddress "glVertexAttrib4usvARB")

{-# NOINLINE glVertexAttrib4usvARBFunPtr #-}

-- | Usage: @'glVertexAttribPointerARB' index size type normalized stride pointer@
--
-- The parameter @type@ is a @VertexAttribPointerType@.
--
-- The parameter @normalized@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribPointer'.


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_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C

-- | Usage: @'glBindFragDataLocationEXT' program color name@
--
-- The length of @name@ should be @COMPSIZE(name)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBindFragDataLocation'.


glBindFragDataLocationEXT :: MonadIO m => GLuint -> GLuint -> Ptr GLchar -> m ()
glBindFragDataLocationEXT = ffiuintuintPtrcharIOV glBindFragDataLocationEXTFunPtr

glBindFragDataLocationEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLchar -> IO ())
glBindFragDataLocationEXTFunPtr = unsafePerformIO (getProcAddress "glBindFragDataLocationEXT")

{-# NOINLINE glBindFragDataLocationEXTFunPtr #-}

pattern GL_R16F_EXT = 0x822D

pattern GL_RG16F_EXT = 0x822F

pattern GL_RGB16F_EXT = 0x881B

pattern GL_RGBA16F_EXT = 0x881A

-- | Usage: @'glDisableIndexedEXT' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDisablei'.


glDisableIndexedEXT :: MonadIO m => GLenum -> GLuint -> m ()
glDisableIndexedEXT = ffienumuintIOV glDisableIndexedEXTFunPtr

glDisableIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDisableIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glDisableIndexedEXT")

{-# NOINLINE glDisableIndexedEXTFunPtr #-}

-- | Usage: @'glEnableIndexedEXT' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glEnablei'.


glEnableIndexedEXT :: MonadIO m => GLenum -> GLuint -> m ()
glEnableIndexedEXT = ffienumuintIOV glEnableIndexedEXTFunPtr

glEnableIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEnableIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glEnableIndexedEXT")

{-# NOINLINE glEnableIndexedEXTFunPtr #-}

-- | Usage: @'glGetBooleanIndexedvEXT' target index data@
--
-- The parameter @data@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @data@ should be @COMPSIZE(target)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetBooleani_v'.


glGetBooleanIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLboolean -> m ()
glGetBooleanIndexedvEXT = ffienumuintPtrbooleanIOV glGetBooleanIndexedvEXTFunPtr

glGetBooleanIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLboolean -> IO ())
glGetBooleanIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetBooleanIndexedvEXT")

{-# NOINLINE glGetBooleanIndexedvEXTFunPtr #-}

-- | Usage: @'glGetIntegerIndexedvEXT' target index data@
--
-- The length of @data@ should be @COMPSIZE(target)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetIntegeri_v'.


glGetIntegerIndexedvEXT :: MonadIO m => GLenum -> GLuint -> Ptr GLint -> m ()
glGetIntegerIndexedvEXT = ffienumuintPtrintIOV glGetIntegerIndexedvEXTFunPtr

glGetIntegerIndexedvEXTFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLint -> IO ())
glGetIntegerIndexedvEXTFunPtr = unsafePerformIO (getProcAddress "glGetIntegerIndexedvEXT")

{-# NOINLINE glGetIntegerIndexedvEXTFunPtr #-}

-- | Usage: @'glIsEnabledIndexedEXT' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsEnabledi'.


glIsEnabledIndexedEXT :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsEnabledIndexedEXT = ffienumuintIOboolean glIsEnabledIndexedEXTFunPtr

glIsEnabledIndexedEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsEnabledIndexedEXTFunPtr = unsafePerformIO (getProcAddress "glIsEnabledIndexedEXT")

{-# NOINLINE glIsEnabledIndexedEXTFunPtr #-}

-- | Usage: @'glProgramUniform1fEXT' program location v0@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform1f'.


glProgramUniform1fEXT :: MonadIO m => GLuint -> GLint -> GLfloat -> m ()
glProgramUniform1fEXT = ffiuintintfloatIOV glProgramUniform1fEXTFunPtr

glProgramUniform1fEXTFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> IO ())
glProgramUniform1fEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1fEXT")

{-# NOINLINE glProgramUniform1fEXTFunPtr #-}

-- | Usage: @'glProgramUniform1fvEXT' program location count value@
--
-- The length of @value@ should be @count@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform1fv'.


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 #-}

-- | Usage: @'glProgramUniform1iEXT' program location v0@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform1i'.


glProgramUniform1iEXT :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glProgramUniform1iEXT = ffiuintintintIOV glProgramUniform1iEXTFunPtr

glProgramUniform1iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glProgramUniform1iEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1iEXT")

{-# NOINLINE glProgramUniform1iEXTFunPtr #-}

-- | Usage: @'glProgramUniform1ivEXT' program location count value@
--
-- The length of @value@ should be @count@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform1iv'.


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 #-}

-- | Usage: @'glProgramUniform1uiEXT' program location v0@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform1ui'.


glProgramUniform1uiEXT :: MonadIO m => GLuint -> GLint -> GLuint -> m ()
glProgramUniform1uiEXT = ffiuintintuintIOV glProgramUniform1uiEXTFunPtr

glProgramUniform1uiEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> IO ())
glProgramUniform1uiEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform1uiEXT")

{-# NOINLINE glProgramUniform1uiEXTFunPtr #-}

-- | Usage: @'glProgramUniform1uivEXT' program location count value@
--
-- The length of @value@ should be @count@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform1uiv'.


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 #-}

-- | Usage: @'glProgramUniform2fEXT' program location v0 v1@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform2f'.


glProgramUniform2fEXT :: MonadIO m => GLuint -> GLint -> GLfloat -> GLfloat -> m ()
glProgramUniform2fEXT = ffiuintintfloatfloatIOV glProgramUniform2fEXTFunPtr

glProgramUniform2fEXTFunPtr :: FunPtr (GLuint -> GLint -> GLfloat -> GLfloat -> IO ())
glProgramUniform2fEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2fEXT")

{-# NOINLINE glProgramUniform2fEXTFunPtr #-}

-- | Usage: @'glProgramUniform2fvEXT' program location count value@
--
-- The length of @value@ should be @count*2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform2fv'.


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 #-}

-- | Usage: @'glProgramUniform2iEXT' program location v0 v1@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform2i'.


glProgramUniform2iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glProgramUniform2iEXT = ffiuintintintintIOV glProgramUniform2iEXTFunPtr

glProgramUniform2iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glProgramUniform2iEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2iEXT")

{-# NOINLINE glProgramUniform2iEXTFunPtr #-}

-- | Usage: @'glProgramUniform2ivEXT' program location count value@
--
-- The length of @value@ should be @count*2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform2iv'.


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 #-}

-- | Usage: @'glProgramUniform2uiEXT' program location v0 v1@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform2ui'.


glProgramUniform2uiEXT :: MonadIO m => GLuint -> GLint -> GLuint -> GLuint -> m ()
glProgramUniform2uiEXT = ffiuintintuintuintIOV glProgramUniform2uiEXTFunPtr

glProgramUniform2uiEXTFunPtr :: FunPtr (GLuint -> GLint -> GLuint -> GLuint -> IO ())
glProgramUniform2uiEXTFunPtr = unsafePerformIO (getProcAddress "glProgramUniform2uiEXT")

{-# NOINLINE glProgramUniform2uiEXTFunPtr #-}

-- | Usage: @'glProgramUniform2uivEXT' program location count value@
--
-- The length of @value@ should be @count*2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform2uiv'.


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 #-}

-- | Usage: @'glProgramUniform3fEXT' program location v0 v1 v2@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform3f'.


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 #-}

-- | Usage: @'glProgramUniform3fvEXT' program location count value@
--
-- The length of @value@ should be @count*3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform3fv'.


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 #-}

-- | Usage: @'glProgramUniform3iEXT' program location v0 v1 v2@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform3i'.


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 #-}

-- | Usage: @'glProgramUniform3ivEXT' program location count value@
--
-- The length of @value@ should be @count*3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform3iv'.


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 #-}

-- | Usage: @'glProgramUniform3uiEXT' program location v0 v1 v2@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform3ui'.


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 #-}

-- | Usage: @'glProgramUniform3uivEXT' program location count value@
--
-- The length of @value@ should be @count*3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform3uiv'.


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 #-}

-- | Usage: @'glProgramUniform4fEXT' program location v0 v1 v2 v3@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform4f'.


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 #-}

-- | Usage: @'glProgramUniform4fvEXT' program location count value@
--
-- The length of @value@ should be @count*4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform4fv'.


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 #-}

-- | Usage: @'glProgramUniform4iEXT' program location v0 v1 v2 v3@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform4i'.


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 #-}

-- | Usage: @'glProgramUniform4ivEXT' program location count value@
--
-- The length of @value@ should be @count*4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform4iv'.


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 #-}

-- | Usage: @'glProgramUniform4uiEXT' program location v0 v1 v2 v3@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform4ui'.


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 #-}

-- | Usage: @'glProgramUniform4uivEXT' program location count value@
--
-- The length of @value@ should be @count*4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniform4uiv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix2fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix2fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix2x3fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*6@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix2x3fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix2x4fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*8@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix2x4fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix3fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*9@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix3fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix3x2fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*6@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix3x2fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix3x4fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*12@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix3x4fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix4fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*16@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix4fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix4x2fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*8@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix4x2fv'.


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 #-}

-- | Usage: @'glProgramUniformMatrix4x3fvEXT' program location count transpose value@
--
-- The parameter @transpose@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The length of @value@ should be @count*12@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramUniformMatrix4x3fv'.


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 #-}

-- | Usage: @'glTextureStorage1DEXT' texture target levels internalformat width@


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 #-}

-- | Usage: @'glTextureStorage2DEXT' texture target levels internalformat width height@


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 #-}

-- | Usage: @'glTextureStorage3DEXT' texture target levels internalformat width height depth@


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 #-}

-- | Usage: @'glBeginQueryEXT' target id@


glBeginQueryEXT :: MonadIO m => GLenum -> GLuint -> m ()
glBeginQueryEXT = ffienumuintIOV glBeginQueryEXTFunPtr

glBeginQueryEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBeginQueryEXTFunPtr = unsafePerformIO (getProcAddress "glBeginQueryEXT")

{-# NOINLINE glBeginQueryEXTFunPtr #-}

-- | Usage: @'glDeleteQueriesEXT' n ids@
--
-- The length of @ids@ should be @n@.


glDeleteQueriesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteQueriesEXT = ffisizeiPtruintIOV glDeleteQueriesEXTFunPtr

glDeleteQueriesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteQueriesEXTFunPtr = unsafePerformIO (getProcAddress "glDeleteQueriesEXT")

{-# NOINLINE glDeleteQueriesEXTFunPtr #-}

-- | Usage: @'glEndQueryEXT' target@


glEndQueryEXT :: MonadIO m => GLenum -> m ()
glEndQueryEXT = ffienumIOV glEndQueryEXTFunPtr

glEndQueryEXTFunPtr :: FunPtr (GLenum -> IO ())
glEndQueryEXTFunPtr = unsafePerformIO (getProcAddress "glEndQueryEXT")

{-# NOINLINE glEndQueryEXTFunPtr #-}

-- | Usage: @'glGenQueriesEXT' n ids@
--
-- The length of @ids@ should be @n@.


glGenQueriesEXT :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenQueriesEXT = ffisizeiPtruintIOV glGenQueriesEXTFunPtr

glGenQueriesEXTFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenQueriesEXTFunPtr = unsafePerformIO (getProcAddress "glGenQueriesEXT")

{-# NOINLINE glGenQueriesEXTFunPtr #-}

-- | Usage: @'glGetQueryObjecti64vEXT' id pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetQueryObjecti64v'.


glGetQueryObjecti64vEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint64 -> m ()
glGetQueryObjecti64vEXT = ffiuintenumPtrint64IOV glGetQueryObjecti64vEXTFunPtr

glGetQueryObjecti64vEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint64 -> IO ())
glGetQueryObjecti64vEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjecti64vEXT")

{-# NOINLINE glGetQueryObjecti64vEXTFunPtr #-}

-- | Usage: @'glGetQueryObjectui64vEXT' id pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetQueryObjectui64v'.


glGetQueryObjectui64vEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint64 -> m ()
glGetQueryObjectui64vEXT = ffiuintenumPtruint64IOV glGetQueryObjectui64vEXTFunPtr

glGetQueryObjectui64vEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint64 -> IO ())
glGetQueryObjectui64vEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectui64vEXT")

{-# NOINLINE glGetQueryObjectui64vEXTFunPtr #-}

-- | Usage: @'glGetQueryObjectuivEXT' id pname params@


glGetQueryObjectuivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetQueryObjectuivEXT = ffiuintenumPtruintIOV glGetQueryObjectuivEXTFunPtr

glGetQueryObjectuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetQueryObjectuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectuivEXT")

{-# NOINLINE glGetQueryObjectuivEXTFunPtr #-}

-- | Usage: @'glGetQueryivEXT' target pname params@


glGetQueryivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetQueryivEXT = ffienumenumPtrintIOV glGetQueryivEXTFunPtr

glGetQueryivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetQueryivEXTFunPtr = unsafePerformIO (getProcAddress "glGetQueryivEXT")

{-# NOINLINE glGetQueryivEXTFunPtr #-}

-- | Usage: @'glIsQueryEXT' id@


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

-- | Usage: @'glDrawArraysInstancedEXT' mode start count primcount@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawArraysInstanced'.


glDrawArraysInstancedEXT :: MonadIO m => GLenum -> GLint -> GLsizei -> GLsizei -> m ()
glDrawArraysInstancedEXT = ffienumintsizeisizeiIOV glDrawArraysInstancedEXTFunPtr

glDrawArraysInstancedEXTFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> GLsizei -> IO ())
glDrawArraysInstancedEXTFunPtr = unsafePerformIO (getProcAddress "glDrawArraysInstancedEXT")

{-# NOINLINE glDrawArraysInstancedEXTFunPtr #-}

-- | Usage: @'glDrawElementsInstancedEXT' mode count type indices primcount@
--
-- The parameter @mode@ is a @PrimitiveType@, one of: 'Graphics.GL.Internal.Shared.GL_LINES', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_LINE_LOOP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_LINE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_LINE_STRIP_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_PATCHES', 'Graphics.GL.Ext.EXT.TessellationShader.GL_PATCHES_EXT', 'Graphics.GL.Internal.Shared.GL_POINTS', 'Graphics.GL.Internal.Shared.GL_POLYGON', 'Graphics.GL.Internal.Shared.GL_QUADS', 'Graphics.GL.Ext.EXT.TessellationShader.GL_QUADS_EXT', 'Graphics.GL.Internal.Shared.GL_QUAD_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLES', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLES_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLES_ADJACENCY_EXT', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_FAN', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY', 'Graphics.GL.Ext.ARB.GeometryShader4.GL_TRIANGLE_STRIP_ADJACENCY_ARB', 'Graphics.GL.Internal.Shared.GL_TRIANGLE_STRIP_ADJACENCY_EXT'.
--
-- The parameter @type@ is a @DrawElementsType@.
--
-- The length of @indices@ should be @COMPSIZE(count,type)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDrawElementsInstanced'.


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

-- | Usage: @'glRenderbufferStorageMultisampleEXT' target samples internalformat width height@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glRenderbufferStorageMultisample'.


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

-- | Usage: @'glFramebufferTextureEXT' target attachment texture level@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @texture@ is a @Texture@.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTexture'.


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

-- | Usage: @'glProgramParameteriEXT' program pname value@
--
-- The parameter @pname@ is a @ProgramParameterPName@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramParameteri'.


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

pattern GL_MULTISAMPLE_EXT = 0x809D

pattern GL_SAMPLE_ALPHA_TO_ONE_EXT = 0x809F

-- | Usage: @'glRasterSamplesEXT' samples fixedsamplelocations@


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_R16_SNORM_EXT = 0x8F98

pattern GL_RG16_SNORM_EXT = 0x8F99

pattern GL_RGBA16_SNORM_EXT = 0x8F9B

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_TEXTURE_CUBE_MAP_ARRAY_OES = 0x9009

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

pattern GL_RGB16_EXT = 0x8054

pattern GL_RGBA16_EXT = 0x805B

-- | Usage: @'glFramebufferTextureLayerEXT' target attachment texture level layer@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @texture@ is a @Texture@.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @layer@ is a @CheckedInt32@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTextureLayer'.


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 #-}

-- | Usage: @'glGetTexParameterIivEXT' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetTexParameterIiv'.


glGetTexParameterIivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetTexParameterIivEXT = ffienumenumPtrintIOV glGetTexParameterIivEXTFunPtr

glGetTexParameterIivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetTexParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIivEXT")

{-# NOINLINE glGetTexParameterIivEXTFunPtr #-}

-- | Usage: @'glGetTexParameterIuivEXT' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @GetTextureParameter@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Ext.SGIS.SharpenTexture.GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4DSIZE_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_ALPHA_SIZE', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BLUE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.NV.TextureBorderClamp.GL_TEXTURE_BORDER_COLOR_NV', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_OPERATOR_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_COMPONENTS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_DEPTH_EXT', 'Graphics.GL.Ext.SGIS.TextureFilter4.GL_TEXTURE_FILTER4_SIZE_SGIS', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_GEQUAL_R_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_GREEN_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_HEIGHT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTENSITY_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_INTERNAL_FORMAT', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_LEQUAL_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_LUMINANCE_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RED_SIZE', 'Graphics.GL.Internal.Shared.GL_TEXTURE_RESIDENT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WIDTH', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetTexParameterIuiv'.


glGetTexParameterIuivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glGetTexParameterIuivEXT = ffienumenumPtruintIOV glGetTexParameterIuivEXTFunPtr

glGetTexParameterIuivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glGetTexParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetTexParameterIuivEXT")

{-# NOINLINE glGetTexParameterIuivEXTFunPtr #-}

-- | Usage: @'glTexParameterIivEXT' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glTexParameterIiv'.


glTexParameterIivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glTexParameterIivEXT = ffienumenumPtrintIOV glTexParameterIivEXTFunPtr

glTexParameterIivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glTexParameterIivEXTFunPtr = unsafePerformIO (getProcAddress "glTexParameterIivEXT")

{-# NOINLINE glTexParameterIivEXTFunPtr #-}

-- | Usage: @'glTexParameterIuivEXT' target pname params@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- The parameter @pname@ is a @TextureParameterName@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_LEVEL_SGIS', 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_MODE_SGIS', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_DUAL_TEXTURE_SELECT_SGIS', 'Graphics.GL.Internal.Shared.GL_GENERATE_MIPMAP', 'Graphics.GL.Ext.SGIS.GenerateMipmap.GL_GENERATE_MIPMAP_SGIS', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_BIAS_SGIX', 'Graphics.GL.Ext.SGIX.TextureScaleBias.GL_POST_TEXTURE_FILTER_SCALE_SGIX', 'Graphics.GL.Ext.SGIS.TextureSelect.GL_QUAD_TEXTURE_SELECT_SGIS', 'Graphics.GL.Ext.SGIX.ShadowAmbient.GL_SHADOW_AMBIENT_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BORDER_COLOR', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_CENTER_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_FRAME_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_OFFSET_SGIX', 'Graphics.GL.Ext.SGIX.Clipmap.GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX', 'Graphics.GL.Ext.SGIX.Shadow.GL_TEXTURE_COMPARE_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureLodBias.GL_TEXTURE_LOD_BIAS_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAG_FILTER', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_R_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_S_SGIX', 'Graphics.GL.Ext.SGIX.TextureCoordinateClamp.GL_TEXTURE_MAX_CLAMP_T_SGIX', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_FILTER', 'Graphics.GL.Internal.Shared.GL_TEXTURE_PRIORITY', 'Graphics.GL.Ext.EXT.TextureObject.GL_TEXTURE_PRIORITY_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_WRAP_Q_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_R', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_WRAP_R_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_WRAP_R_OES', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_S', 'Graphics.GL.Internal.Shared.GL_TEXTURE_WRAP_T'.
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glTexParameterIuiv'.


glTexParameterIuivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLuint -> m ()
glTexParameterIuivEXT = ffienumenumPtruintIOV glTexParameterIuivEXTFunPtr

glTexParameterIuivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLuint -> IO ())
glTexParameterIuivEXTFunPtr = unsafePerformIO (getProcAddress "glTexParameterIuivEXT")

{-# NOINLINE glTexParameterIuivEXTFunPtr #-}

-- | Usage: @'glTexBufferEXT' target internalformat buffer@
--
-- The parameter @target@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glTexBuffer'.


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_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x8D68

pattern GL_TEXTURE_BINDING_EXTERNAL_OES = 0x8D67

pattern GL_TEXTURE_EXTERNAL_OES = 0x8D65

pattern GL_CONTEXT_ROBUST_ACCESS = 0x90F3

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_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_MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5

pattern GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4

pattern GL_COLOR_SAMPLES_NV = 0x8E20

pattern GL_PRIMARY_COLOR_NV = 0x852C

pattern GL_SECONDARY_COLOR_NV = 0x852D

pattern GL_DEPTH_COMPONENT24_OES = 0x81A6

-- | Usage: @'glDisableiOES' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDisablei'.


glDisableiOES :: MonadIO m => GLenum -> GLuint -> m ()
glDisableiOES = ffienumuintIOV glDisableiOESFunPtr

glDisableiOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDisableiOESFunPtr = unsafePerformIO (getProcAddress "glDisableiOES")

{-# NOINLINE glDisableiOESFunPtr #-}

-- | Usage: @'glEnableiOES' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glEnablei'.


glEnableiOES :: MonadIO m => GLenum -> GLuint -> m ()
glEnableiOES = ffienumuintIOV glEnableiOESFunPtr

glEnableiOESFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEnableiOESFunPtr = unsafePerformIO (getProcAddress "glEnableiOES")

{-# NOINLINE glEnableiOESFunPtr #-}

-- | Usage: @'glIsEnablediOES' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsEnabledi'.


glIsEnablediOES :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsEnablediOES = ffienumuintIOboolean glIsEnablediOESFunPtr

glIsEnablediOESFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsEnablediOESFunPtr = unsafePerformIO (getProcAddress "glIsEnablediOES")

{-# NOINLINE glIsEnablediOESFunPtr #-}

-- | Usage: @'glGetTexGenxvOES' coord pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetTexGenxvOES :: MonadIO m => GLenum -> GLenum -> Ptr GLfixed -> m ()
glGetTexGenxvOES = ffienumenumPtrfixedIOV glGetTexGenxvOESFunPtr

glGetTexGenxvOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfixed -> IO ())
glGetTexGenxvOESFunPtr = unsafePerformIO (getProcAddress "glGetTexGenxvOES")

{-# NOINLINE glGetTexGenxvOESFunPtr #-}

-- | Usage: @'glTexGenxOES' coord pname param@


glTexGenxOES :: MonadIO m => GLenum -> GLenum -> GLfixed -> m ()
glTexGenxOES = ffienumenumfixedIOV glTexGenxOESFunPtr

glTexGenxOESFunPtr :: FunPtr (GLenum -> GLenum -> GLfixed -> IO ())
glTexGenxOESFunPtr = unsafePerformIO (getProcAddress "glTexGenxOES")

{-# NOINLINE glTexGenxOESFunPtr #-}

-- | Usage: @'glTexGenxvOES' coord pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.


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