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