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

  -- * GL_NV_transform_feedback2
  , glBindTransformFeedbackNV
  , glDeleteTransformFeedbacksNV
  , glDrawTransformFeedbackNV
  , glGenTransformFeedbacksNV
  , glIsTransformFeedbackNV
  , glPauseTransformFeedbackNV
  , glResumeTransformFeedbackNV
  , pattern GL_TRANSFORM_FEEDBACK_BINDING_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV
  , pattern GL_TRANSFORM_FEEDBACK_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/transform_feedback2.txt GL_NV_transform_feedback2> extension is available.

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

-- | Usage: @'glBindTransformFeedbackNV' target id@
--
-- The parameter @target@ is a @BufferTargetARB@.


glBindTransformFeedbackNV :: MonadIO m => GLenum -> GLuint -> m ()
glBindTransformFeedbackNV :: GLenum -> GLenum -> m ()
glBindTransformFeedbackNV = FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
ffienumuintIOV FunPtr (GLenum -> GLenum -> IO ())
glBindTransformFeedbackNVFunPtr

glBindTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glBindTransformFeedbackNVFunPtr = IO (FunPtr (GLenum -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBindTransformFeedbackNV")

{-# NOINLINE glBindTransformFeedbackNVFunPtr #-}

-- | Usage: @'glDeleteTransformFeedbacksNV' n ids@
--
-- The length of @ids@ should be @n@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDeleteTransformFeedbacks'.


glDeleteTransformFeedbacksNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteTransformFeedbacksNV :: GLsizei -> Ptr GLenum -> m ()
glDeleteTransformFeedbacksNV = FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLenum -> IO ())
glDeleteTransformFeedbacksNVFunPtr

glDeleteTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
glDeleteTransformFeedbacksNVFunPtr = IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
-> FunPtr (GLsizei -> Ptr GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeleteTransformFeedbacksNV")

{-# NOINLINE glDeleteTransformFeedbacksNVFunPtr #-}

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


glDrawTransformFeedbackNV :: MonadIO m => GLenum -> GLuint -> m ()
glDrawTransformFeedbackNV :: GLenum -> GLenum -> m ()
glDrawTransformFeedbackNV = FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
ffienumuintIOV FunPtr (GLenum -> GLenum -> IO ())
glDrawTransformFeedbackNVFunPtr

glDrawTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDrawTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glDrawTransformFeedbackNVFunPtr = IO (FunPtr (GLenum -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDrawTransformFeedbackNV")

{-# NOINLINE glDrawTransformFeedbackNVFunPtr #-}

-- | Usage: @'glGenTransformFeedbacksNV' n ids@
--
-- The length of @ids@ should be @n@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGenTransformFeedbacks'.


glGenTransformFeedbacksNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenTransformFeedbacksNV :: GLsizei -> Ptr GLenum -> m ()
glGenTransformFeedbacksNV = FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLenum -> IO ())
glGenTransformFeedbacksNVFunPtr

glGenTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
glGenTransformFeedbacksNVFunPtr = IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
-> FunPtr (GLsizei -> Ptr GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGenTransformFeedbacksNV")

{-# NOINLINE glGenTransformFeedbacksNVFunPtr #-}

-- | Usage: @'glIsTransformFeedbackNV' id@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsTransformFeedback'.


glIsTransformFeedbackNV :: MonadIO m => GLuint -> m GLboolean
glIsTransformFeedbackNV :: GLenum -> m GLboolean
glIsTransformFeedbackNV = FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
ffiuintIOboolean FunPtr (GLenum -> IO GLboolean)
glIsTransformFeedbackNVFunPtr

glIsTransformFeedbackNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsTransformFeedbackNVFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsTransformFeedbackNVFunPtr = IO (FunPtr (GLenum -> IO GLboolean))
-> FunPtr (GLenum -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsTransformFeedbackNV")

{-# NOINLINE glIsTransformFeedbackNVFunPtr #-}

-- | Usage: @'glPauseTransformFeedbackNV'@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glPauseTransformFeedback'.


glPauseTransformFeedbackNV :: MonadIO m => m ()
glPauseTransformFeedbackNV :: m ()
glPauseTransformFeedbackNV = FunPtr (IO ()) -> m ()
forall (m :: * -> *). MonadIO m => FunPtr (IO ()) -> m ()
ffiIOV FunPtr (IO ())
glPauseTransformFeedbackNVFunPtr

glPauseTransformFeedbackNVFunPtr :: FunPtr (IO ())
glPauseTransformFeedbackNVFunPtr :: FunPtr (IO ())
glPauseTransformFeedbackNVFunPtr = IO (FunPtr (IO ())) -> FunPtr (IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glPauseTransformFeedbackNV")

{-# NOINLINE glPauseTransformFeedbackNVFunPtr #-}

-- | Usage: @'glResumeTransformFeedbackNV'@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glResumeTransformFeedback'.


glResumeTransformFeedbackNV :: MonadIO m => m ()
glResumeTransformFeedbackNV :: m ()
glResumeTransformFeedbackNV = FunPtr (IO ()) -> m ()
forall (m :: * -> *). MonadIO m => FunPtr (IO ()) -> m ()
ffiIOV FunPtr (IO ())
glResumeTransformFeedbackNVFunPtr

glResumeTransformFeedbackNVFunPtr :: FunPtr (IO ())
glResumeTransformFeedbackNVFunPtr :: FunPtr (IO ())
glResumeTransformFeedbackNVFunPtr = IO (FunPtr (IO ())) -> FunPtr (IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glResumeTransformFeedbackNV")

{-# NOINLINE glResumeTransformFeedbackNVFunPtr #-}

pattern $bGL_TRANSFORM_FEEDBACK_BINDING_NV :: a
$mGL_TRANSFORM_FEEDBACK_BINDING_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25

pattern $bGL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV :: a
$mGL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24

pattern $bGL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV :: a
$mGL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23

pattern $bGL_TRANSFORM_FEEDBACK_NV :: a
$mGL_TRANSFORM_FEEDBACK_NV :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSFORM_FEEDBACK_NV = 0x8E22