-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.NV.FragmentProgram (
  -- * Extension Support
    gl_NV_fragment_program

  -- * GL_NV_fragment_program
  , glGetProgramNamedParameterdvNV
  , glGetProgramNamedParameterfvNV
  , glProgramNamedParameter4dNV
  , glProgramNamedParameter4dvNV
  , glProgramNamedParameter4fNV
  , glProgramNamedParameter4fvNV
  , pattern GL_FRAGMENT_PROGRAM_BINDING_NV
  , pattern GL_FRAGMENT_PROGRAM_NV
  , pattern GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
  , pattern GL_MAX_TEXTURE_COORDS_NV
  , pattern GL_MAX_TEXTURE_IMAGE_UNITS_NV
  , pattern GL_PROGRAM_ERROR_STRING_NV
) where

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

-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/NV/fragment_program.txt GL_NV_fragment_program> extension is available.

gl_NV_fragment_program :: Bool
gl_NV_fragment_program :: Bool
gl_NV_fragment_program = [Char] -> Set [Char] -> Bool
forall a. Ord a => a -> Set a -> Bool
member "GL_NV_fragment_program" Set [Char]
extensions
{-# NOINLINE gl_NV_fragment_program #-}

-- | Usage: @'glGetProgramNamedParameterdvNV' id len name params@
--
-- The length of @name@ should be @1@.
--
-- The length of @params@ should be @4@.


glGetProgramNamedParameterdvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
glGetProgramNamedParameterdvNV :: GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
glGetProgramNamedParameterdvNV = FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
ffiuintsizeiPtrubytePtrdoubleIOV FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
glGetProgramNamedParameterdvNVFunPtr

glGetProgramNamedParameterdvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
glGetProgramNamedParameterdvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
glGetProgramNamedParameterdvNVFunPtr = IO
  (FunPtr
     (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()))
-> FunPtr
     (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetProgramNamedParameterdvNV")

{-# NOINLINE glGetProgramNamedParameterdvNVFunPtr #-}

-- | Usage: @'glGetProgramNamedParameterfvNV' id len name params@
--
-- The length of @name@ should be @1@.
--
-- The length of @params@ should be @4@.


glGetProgramNamedParameterfvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
glGetProgramNamedParameterfvNV :: GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
glGetProgramNamedParameterfvNV = FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
ffiuintsizeiPtrubytePtrfloatIOV FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
glGetProgramNamedParameterfvNVFunPtr

glGetProgramNamedParameterfvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
glGetProgramNamedParameterfvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
glGetProgramNamedParameterfvNVFunPtr = IO
  (FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()))
-> FunPtr
     (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetProgramNamedParameterfvNV")

{-# NOINLINE glGetProgramNamedParameterfvNVFunPtr #-}

-- | Usage: @'glProgramNamedParameter4dNV' id len name x y z w@
--
-- The length of @name@ should be @1@.
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.NV.FragmentProgram.glProgramNamedParameter4dvNV'.


glProgramNamedParameter4dNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glProgramNamedParameter4dNV :: GLuint
-> GLsizei
-> Ptr GLubyte
-> GLdouble
-> GLdouble
-> GLdouble
-> GLdouble
-> m ()
glProgramNamedParameter4dNV = FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> IO ())
-> GLuint
-> GLsizei
-> Ptr GLubyte
-> GLdouble
-> GLdouble
-> GLdouble
-> GLdouble
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> IO ())
-> GLuint
-> GLsizei
-> Ptr GLubyte
-> GLdouble
-> GLdouble
-> GLdouble
-> GLdouble
-> m ()
ffiuintsizeiPtrubytedoubledoubledoubledoubleIOV FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> IO ())
glProgramNamedParameter4dNVFunPtr

glProgramNamedParameter4dNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glProgramNamedParameter4dNVFunPtr :: FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> GLdouble
   -> IO ())
glProgramNamedParameter4dNVFunPtr = IO
  (FunPtr
     (GLuint
      -> GLsizei
      -> Ptr GLubyte
      -> GLdouble
      -> GLdouble
      -> GLdouble
      -> GLdouble
      -> IO ()))
-> FunPtr
     (GLuint
      -> GLsizei
      -> Ptr GLubyte
      -> GLdouble
      -> GLdouble
      -> GLdouble
      -> GLdouble
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLsizei
         -> Ptr GLubyte
         -> GLdouble
         -> GLdouble
         -> GLdouble
         -> GLdouble
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramNamedParameter4dNV")

{-# NOINLINE glProgramNamedParameter4dNVFunPtr #-}

-- | Usage: @'glProgramNamedParameter4dvNV' id len name v@
--
-- The length of @name@ should be @1@.
--
-- The length of @v@ should be @4@.


glProgramNamedParameter4dvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
glProgramNamedParameter4dvNV :: GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
glProgramNamedParameter4dvNV = FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> m ()
ffiuintsizeiPtrubytePtrdoubleIOV FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
glProgramNamedParameter4dvNVFunPtr

glProgramNamedParameter4dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
glProgramNamedParameter4dvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
glProgramNamedParameter4dvNVFunPtr = IO
  (FunPtr
     (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()))
-> FunPtr
     (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramNamedParameter4dvNV")

{-# NOINLINE glProgramNamedParameter4dvNVFunPtr #-}

-- | Usage: @'glProgramNamedParameter4fNV' id len name x y z w@
--
-- The length of @name@ should be @1@.
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.NV.FragmentProgram.glProgramNamedParameter4fvNV'.


glProgramNamedParameter4fNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glProgramNamedParameter4fNV :: GLuint
-> GLsizei
-> Ptr GLubyte
-> GLfloat
-> GLfloat
-> GLfloat
-> GLfloat
-> m ()
glProgramNamedParameter4fNV = FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> IO ())
-> GLuint
-> GLsizei
-> Ptr GLubyte
-> GLfloat
-> GLfloat
-> GLfloat
-> GLfloat
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> IO ())
-> GLuint
-> GLsizei
-> Ptr GLubyte
-> GLfloat
-> GLfloat
-> GLfloat
-> GLfloat
-> m ()
ffiuintsizeiPtrubytefloatfloatfloatfloatIOV FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> IO ())
glProgramNamedParameter4fNVFunPtr

glProgramNamedParameter4fNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glProgramNamedParameter4fNVFunPtr :: FunPtr
  (GLuint
   -> GLsizei
   -> Ptr GLubyte
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> GLfloat
   -> IO ())
glProgramNamedParameter4fNVFunPtr = IO
  (FunPtr
     (GLuint
      -> GLsizei
      -> Ptr GLubyte
      -> GLfloat
      -> GLfloat
      -> GLfloat
      -> GLfloat
      -> IO ()))
-> FunPtr
     (GLuint
      -> GLsizei
      -> Ptr GLubyte
      -> GLfloat
      -> GLfloat
      -> GLfloat
      -> GLfloat
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLsizei
         -> Ptr GLubyte
         -> GLfloat
         -> GLfloat
         -> GLfloat
         -> GLfloat
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramNamedParameter4fNV")

{-# NOINLINE glProgramNamedParameter4fNVFunPtr #-}

-- | Usage: @'glProgramNamedParameter4fvNV' id len name v@
--
-- The length of @name@ should be @1@.
--
-- The length of @v@ should be @4@.


glProgramNamedParameter4fvNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
glProgramNamedParameter4fvNV :: GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
glProgramNamedParameter4fvNV = FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
-> GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> m ()
ffiuintsizeiPtrubytePtrfloatIOV FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
glProgramNamedParameter4fvNVFunPtr

glProgramNamedParameter4fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
glProgramNamedParameter4fvNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
glProgramNamedParameter4fvNVFunPtr = IO
  (FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()))
-> FunPtr
     (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLuint -> GLsizei -> Ptr GLubyte -> Ptr GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramNamedParameter4fvNV")

{-# NOINLINE glProgramNamedParameter4fvNVFunPtr #-}

pattern $bGL_FRAGMENT_PROGRAM_BINDING_NV :: a
$mGL_FRAGMENT_PROGRAM_BINDING_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAGMENT_PROGRAM_BINDING_NV = 0x8873

pattern $bGL_FRAGMENT_PROGRAM_NV :: a
$mGL_FRAGMENT_PROGRAM_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAGMENT_PROGRAM_NV = 0x8870

pattern $bGL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV :: a
$mGL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868

pattern $bGL_MAX_TEXTURE_COORDS_NV :: a
$mGL_MAX_TEXTURE_COORDS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_TEXTURE_COORDS_NV = 0x8871

pattern $bGL_MAX_TEXTURE_IMAGE_UNITS_NV :: a
$mGL_MAX_TEXTURE_IMAGE_UNITS_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872

pattern $bGL_PROGRAM_ERROR_STRING_NV :: a
$mGL_PROGRAM_ERROR_STRING_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PROGRAM_ERROR_STRING_NV = 0x8874