-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.NV.RegisterCombiners (
  -- * Extension Support
    gl_NV_register_combiners

  -- * GL_NV_register_combiners
  , glCombinerInputNV
  , glCombinerOutputNV
  , glCombinerParameterfNV
  , glCombinerParameterfvNV
  , glCombinerParameteriNV
  , glCombinerParameterivNV
  , glFinalCombinerInputNV
  , glGetCombinerInputParameterfvNV
  , glGetCombinerInputParameterivNV
  , glGetCombinerOutputParameterfvNV
  , glGetCombinerOutputParameterivNV
  , glGetFinalCombinerInputParameterfvNV
  , glGetFinalCombinerInputParameterivNV
  , pattern GL_BIAS_BY_NEGATIVE_ONE_HALF_NV
  , pattern GL_COLOR_SUM_CLAMP_NV
  , pattern GL_COMBINER0_NV
  , pattern GL_COMBINER1_NV
  , pattern GL_COMBINER2_NV
  , pattern GL_COMBINER3_NV
  , pattern GL_COMBINER4_NV
  , pattern GL_COMBINER5_NV
  , pattern GL_COMBINER6_NV
  , pattern GL_COMBINER7_NV
  , pattern GL_COMBINER_AB_DOT_PRODUCT_NV
  , pattern GL_COMBINER_AB_OUTPUT_NV
  , pattern GL_COMBINER_BIAS_NV
  , pattern GL_COMBINER_CD_DOT_PRODUCT_NV
  , pattern GL_COMBINER_CD_OUTPUT_NV
  , pattern GL_COMBINER_COMPONENT_USAGE_NV
  , pattern GL_COMBINER_INPUT_NV
  , pattern GL_COMBINER_MAPPING_NV
  , pattern GL_COMBINER_MUX_SUM_NV
  , pattern GL_COMBINER_SCALE_NV
  , pattern GL_COMBINER_SUM_OUTPUT_NV
  , pattern GL_CONSTANT_COLOR0_NV
  , pattern GL_CONSTANT_COLOR1_NV
  , pattern GL_DISCARD_NV
  , pattern GL_EXPAND_NEGATE_NV
  , pattern GL_EXPAND_NORMAL_NV
  , pattern GL_E_TIMES_F_NV
  , pattern GL_FOG
  , pattern GL_HALF_BIAS_NEGATE_NV
  , pattern GL_HALF_BIAS_NORMAL_NV
  , pattern GL_MAX_GENERAL_COMBINERS_NV
  , pattern GL_NONE
  , pattern GL_NUM_GENERAL_COMBINERS_NV
  , pattern GL_PRIMARY_COLOR_NV
  , pattern GL_REGISTER_COMBINERS_NV
  , pattern GL_SCALE_BY_FOUR_NV
  , pattern GL_SCALE_BY_ONE_HALF_NV
  , pattern GL_SCALE_BY_TWO_NV
  , pattern GL_SECONDARY_COLOR_NV
  , pattern GL_SIGNED_IDENTITY_NV
  , pattern GL_SIGNED_NEGATE_NV
  , pattern GL_SPARE0_NV
  , pattern GL_SPARE0_PLUS_SECONDARY_COLOR_NV
  , pattern GL_SPARE1_NV
  , pattern GL_TEXTURE0_ARB
  , pattern GL_TEXTURE1_ARB
  , pattern GL_UNSIGNED_IDENTITY_NV
  , pattern GL_UNSIGNED_INVERT_NV
  , pattern GL_VARIABLE_A_NV
  , pattern GL_VARIABLE_B_NV
  , pattern GL_VARIABLE_C_NV
  , pattern GL_VARIABLE_D_NV
  , pattern GL_VARIABLE_E_NV
  , pattern GL_VARIABLE_F_NV
  , pattern GL_VARIABLE_G_NV
  , pattern GL_ZERO
) where

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

gl_NV_register_combiners :: Bool
gl_NV_register_combiners = member "GL_NV_register_combiners" extensions

glCombinerInputNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
glCombinerInputNV = ffienumenumenumenumenumenumIOV glCombinerInputNVFunPtr

glCombinerInputNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glCombinerInputNVFunPtr = unsafePerformIO (getProcAddress "glCombinerInputNV")

{-# NOINLINE glCombinerInputNVFunPtr #-}

glCombinerOutputNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> m ()
glCombinerOutputNV = ffienumenumenumenumenumenumenumbooleanbooleanbooleanIOV glCombinerOutputNVFunPtr

glCombinerOutputNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLenum -> GLboolean -> GLboolean -> GLboolean -> IO ())
glCombinerOutputNVFunPtr = unsafePerformIO (getProcAddress "glCombinerOutputNV")

{-# NOINLINE glCombinerOutputNVFunPtr #-}

glCombinerParameterfNV :: MonadIO m => GLenum -> GLfloat -> m ()
glCombinerParameterfNV = ffienumfloatIOV glCombinerParameterfNVFunPtr

glCombinerParameterfNVFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glCombinerParameterfNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameterfNV")

{-# NOINLINE glCombinerParameterfNVFunPtr #-}

glCombinerParameterfvNV :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glCombinerParameterfvNV = ffienumPtrfloatIOV glCombinerParameterfvNVFunPtr

glCombinerParameterfvNVFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glCombinerParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameterfvNV")

{-# NOINLINE glCombinerParameterfvNVFunPtr #-}

glCombinerParameteriNV :: MonadIO m => GLenum -> GLint -> m ()
glCombinerParameteriNV = ffienumintIOV glCombinerParameteriNVFunPtr

glCombinerParameteriNVFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glCombinerParameteriNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameteriNV")

{-# NOINLINE glCombinerParameteriNVFunPtr #-}

glCombinerParameterivNV :: MonadIO m => GLenum -> Ptr GLint -> m ()
glCombinerParameterivNV = ffienumPtrintIOV glCombinerParameterivNVFunPtr

glCombinerParameterivNVFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glCombinerParameterivNVFunPtr = unsafePerformIO (getProcAddress "glCombinerParameterivNV")

{-# NOINLINE glCombinerParameterivNVFunPtr #-}

glFinalCombinerInputNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> m ()
glFinalCombinerInputNV = ffienumenumenumenumIOV glFinalCombinerInputNVFunPtr

glFinalCombinerInputNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glFinalCombinerInputNVFunPtr = unsafePerformIO (getProcAddress "glFinalCombinerInputNV")

{-# NOINLINE glFinalCombinerInputNVFunPtr #-}

glGetCombinerInputParameterfvNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetCombinerInputParameterfvNV = ffienumenumenumenumPtrfloatIOV glGetCombinerInputParameterfvNVFunPtr

glGetCombinerInputParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetCombinerInputParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerInputParameterfvNV")

{-# NOINLINE glGetCombinerInputParameterfvNVFunPtr #-}

glGetCombinerInputParameterivNV :: MonadIO m => GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetCombinerInputParameterivNV = ffienumenumenumenumPtrintIOV glGetCombinerInputParameterivNVFunPtr

glGetCombinerInputParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetCombinerInputParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerInputParameterivNV")

{-# NOINLINE glGetCombinerInputParameterivNVFunPtr #-}

glGetCombinerOutputParameterfvNV :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetCombinerOutputParameterfvNV = ffienumenumenumPtrfloatIOV glGetCombinerOutputParameterfvNVFunPtr

glGetCombinerOutputParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetCombinerOutputParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerOutputParameterfvNV")

{-# NOINLINE glGetCombinerOutputParameterfvNVFunPtr #-}

glGetCombinerOutputParameterivNV :: MonadIO m => GLenum -> GLenum -> GLenum -> Ptr GLint -> m ()
glGetCombinerOutputParameterivNV = ffienumenumenumPtrintIOV glGetCombinerOutputParameterivNVFunPtr

glGetCombinerOutputParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> Ptr GLint -> IO ())
glGetCombinerOutputParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetCombinerOutputParameterivNV")

{-# NOINLINE glGetCombinerOutputParameterivNVFunPtr #-}

glGetFinalCombinerInputParameterfvNV :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetFinalCombinerInputParameterfvNV = ffienumenumPtrfloatIOV glGetFinalCombinerInputParameterfvNVFunPtr

glGetFinalCombinerInputParameterfvNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetFinalCombinerInputParameterfvNVFunPtr = unsafePerformIO (getProcAddress "glGetFinalCombinerInputParameterfvNV")

{-# NOINLINE glGetFinalCombinerInputParameterfvNVFunPtr #-}

glGetFinalCombinerInputParameterivNV :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetFinalCombinerInputParameterivNV = ffienumenumPtrintIOV glGetFinalCombinerInputParameterivNVFunPtr

glGetFinalCombinerInputParameterivNVFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetFinalCombinerInputParameterivNVFunPtr = unsafePerformIO (getProcAddress "glGetFinalCombinerInputParameterivNV")

{-# NOINLINE glGetFinalCombinerInputParameterivNVFunPtr #-}

pattern GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541

pattern GL_COLOR_SUM_CLAMP_NV = 0x854F

pattern GL_COMBINER0_NV = 0x8550

pattern GL_COMBINER1_NV = 0x8551

pattern GL_COMBINER2_NV = 0x8552

pattern GL_COMBINER3_NV = 0x8553

pattern GL_COMBINER4_NV = 0x8554

pattern GL_COMBINER5_NV = 0x8555

pattern GL_COMBINER6_NV = 0x8556

pattern GL_COMBINER7_NV = 0x8557

pattern GL_COMBINER_AB_DOT_PRODUCT_NV = 0x8545

pattern GL_COMBINER_AB_OUTPUT_NV = 0x854A

pattern GL_COMBINER_BIAS_NV = 0x8549

pattern GL_COMBINER_CD_DOT_PRODUCT_NV = 0x8546

pattern GL_COMBINER_CD_OUTPUT_NV = 0x854B

pattern GL_COMBINER_COMPONENT_USAGE_NV = 0x8544

pattern GL_COMBINER_INPUT_NV = 0x8542

pattern GL_COMBINER_MAPPING_NV = 0x8543

pattern GL_COMBINER_MUX_SUM_NV = 0x8547

pattern GL_COMBINER_SCALE_NV = 0x8548

pattern GL_COMBINER_SUM_OUTPUT_NV = 0x854C

pattern GL_CONSTANT_COLOR0_NV = 0x852A

pattern GL_CONSTANT_COLOR1_NV = 0x852B

pattern GL_DISCARD_NV = 0x8530

pattern GL_EXPAND_NEGATE_NV = 0x8539

pattern GL_EXPAND_NORMAL_NV = 0x8538

pattern GL_E_TIMES_F_NV = 0x8531

pattern GL_HALF_BIAS_NEGATE_NV = 0x853B

pattern GL_HALF_BIAS_NORMAL_NV = 0x853A

pattern GL_MAX_GENERAL_COMBINERS_NV = 0x854D

pattern GL_NUM_GENERAL_COMBINERS_NV = 0x854E

pattern GL_REGISTER_COMBINERS_NV = 0x8522

pattern GL_SCALE_BY_FOUR_NV = 0x853F

pattern GL_SCALE_BY_ONE_HALF_NV = 0x8540

pattern GL_SCALE_BY_TWO_NV = 0x853E

pattern GL_SIGNED_IDENTITY_NV = 0x853C

pattern GL_SIGNED_NEGATE_NV = 0x853D

pattern GL_SPARE0_NV = 0x852E

pattern GL_SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532

pattern GL_SPARE1_NV = 0x852F

pattern GL_UNSIGNED_IDENTITY_NV = 0x8536

pattern GL_UNSIGNED_INVERT_NV = 0x8537

pattern GL_VARIABLE_A_NV = 0x8523

pattern GL_VARIABLE_B_NV = 0x8524

pattern GL_VARIABLE_C_NV = 0x8525

pattern GL_VARIABLE_D_NV = 0x8526

pattern GL_VARIABLE_E_NV = 0x8527

pattern GL_VARIABLE_F_NV = 0x8528

pattern GL_VARIABLE_G_NV = 0x8529