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

  -- * GL_NV_transform_feedback
  , glActiveVaryingNV
  , glBeginTransformFeedbackNV
  , glBindBufferBaseNV
  , glBindBufferOffsetNV
  , glBindBufferRangeNV
  , glEndTransformFeedbackNV
  , glGetActiveVaryingNV
  , glGetTransformFeedbackVaryingNV
  , glGetVaryingLocationNV
  , glTransformFeedbackAttribsNV
  , glTransformFeedbackStreamAttribsNV
  , glTransformFeedbackVaryingsNV
  , pattern GL_ACTIVE_VARYINGS_NV
  , pattern GL_ACTIVE_VARYING_MAX_LENGTH_NV
  , pattern GL_BACK_PRIMARY_COLOR_NV
  , pattern GL_BACK_SECONDARY_COLOR_NV
  , pattern GL_CLIP_DISTANCE_NV
  , pattern GL_GENERIC_ATTRIB_NV
  , pattern GL_INTERLEAVED_ATTRIBS_NV
  , pattern GL_LAYER_NV
  , pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV
  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV
  , pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV
  , pattern GL_NEXT_BUFFER_NV
  , pattern GL_PRIMITIVES_GENERATED_NV
  , pattern GL_PRIMITIVE_ID_NV
  , pattern GL_RASTERIZER_DISCARD_NV
  , pattern GL_SEPARATE_ATTRIBS_NV
  , pattern GL_SKIP_COMPONENTS1_NV
  , pattern GL_SKIP_COMPONENTS2_NV
  , pattern GL_SKIP_COMPONENTS3_NV
  , pattern GL_SKIP_COMPONENTS4_NV
  , pattern GL_TEXTURE_COORD_NV
  , pattern GL_TRANSFORM_FEEDBACK_ATTRIBS_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV
  , pattern GL_TRANSFORM_FEEDBACK_BUFFER_START_NV
  , pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV
  , pattern GL_TRANSFORM_FEEDBACK_RECORD_NV
  , pattern GL_TRANSFORM_FEEDBACK_VARYINGS_NV
  , pattern GL_VERTEX_ID_NV
) 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.Types
import System.IO.Unsafe

gl_NV_transform_feedback :: Bool
gl_NV_transform_feedback = member "GL_NV_transform_feedback" extensions

glActiveVaryingNV :: MonadIO m => GLuint -> Ptr GLchar -> m ()
glActiveVaryingNV = ffiuintPtrcharIOV glActiveVaryingNVFunPtr

glActiveVaryingNVFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO ())
glActiveVaryingNVFunPtr = unsafePerformIO (getProcAddress "glActiveVaryingNV")

{-# NOINLINE glActiveVaryingNVFunPtr #-}

glBeginTransformFeedbackNV :: MonadIO m => GLenum -> m ()
glBeginTransformFeedbackNV = ffienumIOV glBeginTransformFeedbackNVFunPtr

glBeginTransformFeedbackNVFunPtr :: FunPtr (GLenum -> IO ())
glBeginTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glBeginTransformFeedbackNV")

{-# NOINLINE glBeginTransformFeedbackNVFunPtr #-}

glBindBufferBaseNV :: MonadIO m => GLenum -> GLuint -> GLuint -> m ()
glBindBufferBaseNV = ffienumuintuintIOV glBindBufferBaseNVFunPtr

glBindBufferBaseNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> IO ())
glBindBufferBaseNVFunPtr = unsafePerformIO (getProcAddress "glBindBufferBaseNV")

{-# NOINLINE glBindBufferBaseNVFunPtr #-}

glBindBufferOffsetNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> m ()
glBindBufferOffsetNV = ffienumuintuintintptrIOV glBindBufferOffsetNVFunPtr

glBindBufferOffsetNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> IO ())
glBindBufferOffsetNVFunPtr = unsafePerformIO (getProcAddress "glBindBufferOffsetNV")

{-# NOINLINE glBindBufferOffsetNVFunPtr #-}

glBindBufferRangeNV :: MonadIO m => GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> m ()
glBindBufferRangeNV = ffienumuintuintintptrsizeiptrIOV glBindBufferRangeNVFunPtr

glBindBufferRangeNVFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLintptr -> GLsizeiptr -> IO ())
glBindBufferRangeNVFunPtr = unsafePerformIO (getProcAddress "glBindBufferRangeNV")

{-# NOINLINE glBindBufferRangeNVFunPtr #-}

glEndTransformFeedbackNV :: MonadIO m => m ()
glEndTransformFeedbackNV = ffiIOV glEndTransformFeedbackNVFunPtr

glEndTransformFeedbackNVFunPtr :: FunPtr (IO ())
glEndTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glEndTransformFeedbackNV")

{-# NOINLINE glEndTransformFeedbackNVFunPtr #-}

glGetActiveVaryingNV :: MonadIO m => GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> m ()
glGetActiveVaryingNV = ffiuintuintsizeiPtrsizeiPtrsizeiPtrenumPtrcharIOV glGetActiveVaryingNVFunPtr

glGetActiveVaryingNVFunPtr :: FunPtr (GLuint -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLsizei -> Ptr GLenum -> Ptr GLchar -> IO ())
glGetActiveVaryingNVFunPtr = unsafePerformIO (getProcAddress "glGetActiveVaryingNV")

{-# NOINLINE glGetActiveVaryingNVFunPtr #-}

glGetTransformFeedbackVaryingNV :: MonadIO m => GLuint -> GLuint -> Ptr GLint -> m ()
glGetTransformFeedbackVaryingNV = ffiuintuintPtrintIOV glGetTransformFeedbackVaryingNVFunPtr

glGetTransformFeedbackVaryingNVFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLint -> IO ())
glGetTransformFeedbackVaryingNVFunPtr = unsafePerformIO (getProcAddress "glGetTransformFeedbackVaryingNV")

{-# NOINLINE glGetTransformFeedbackVaryingNVFunPtr #-}

glGetVaryingLocationNV :: MonadIO m => GLuint -> Ptr GLchar -> m GLint
glGetVaryingLocationNV = ffiuintPtrcharIOint glGetVaryingLocationNVFunPtr

glGetVaryingLocationNVFunPtr :: FunPtr (GLuint -> Ptr GLchar -> IO GLint)
glGetVaryingLocationNVFunPtr = unsafePerformIO (getProcAddress "glGetVaryingLocationNV")

{-# NOINLINE glGetVaryingLocationNVFunPtr #-}

glTransformFeedbackAttribsNV :: MonadIO m => GLsizei -> Ptr GLint -> GLenum -> m ()
glTransformFeedbackAttribsNV = ffisizeiPtrintenumIOV glTransformFeedbackAttribsNVFunPtr

glTransformFeedbackAttribsNVFunPtr :: FunPtr (GLsizei -> Ptr GLint -> GLenum -> IO ())
glTransformFeedbackAttribsNVFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackAttribsNV")

{-# NOINLINE glTransformFeedbackAttribsNVFunPtr #-}

glTransformFeedbackStreamAttribsNV :: MonadIO m => GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> m ()
glTransformFeedbackStreamAttribsNV = ffisizeiPtrintsizeiPtrintenumIOV glTransformFeedbackStreamAttribsNVFunPtr

glTransformFeedbackStreamAttribsNVFunPtr :: FunPtr (GLsizei -> Ptr GLint -> GLsizei -> Ptr GLint -> GLenum -> IO ())
glTransformFeedbackStreamAttribsNVFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackStreamAttribsNV")

{-# NOINLINE glTransformFeedbackStreamAttribsNVFunPtr #-}

glTransformFeedbackVaryingsNV :: MonadIO m => GLuint -> GLsizei -> Ptr GLint -> GLenum -> m ()
glTransformFeedbackVaryingsNV = ffiuintsizeiPtrintenumIOV glTransformFeedbackVaryingsNVFunPtr

glTransformFeedbackVaryingsNVFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr GLint -> GLenum -> IO ())
glTransformFeedbackVaryingsNVFunPtr = unsafePerformIO (getProcAddress "glTransformFeedbackVaryingsNV")

{-# NOINLINE glTransformFeedbackVaryingsNVFunPtr #-}

pattern GL_ACTIVE_VARYINGS_NV = 0x8C81 :: GLenum

pattern GL_ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82 :: GLenum

pattern GL_BACK_PRIMARY_COLOR_NV = 0x8C77 :: GLenum

pattern GL_BACK_SECONDARY_COLOR_NV = 0x8C78 :: GLenum

pattern GL_CLIP_DISTANCE_NV = 0x8C7A :: GLenum

pattern GL_GENERIC_ATTRIB_NV = 0x8C7D :: GLenum

pattern GL_INTERLEAVED_ATTRIBS_NV = 0x8C8C :: GLenum

pattern GL_LAYER_NV = 0x8DAA :: GLenum

pattern GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = 0x8C8A :: GLenum

pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B :: GLenum

pattern GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80 :: GLenum

pattern GL_NEXT_BUFFER_NV = -2 :: GLenum

pattern GL_PRIMITIVES_GENERATED_NV = 0x8C87 :: GLenum

pattern GL_PRIMITIVE_ID_NV = 0x8C7C :: GLenum

pattern GL_RASTERIZER_DISCARD_NV = 0x8C89 :: GLenum

pattern GL_SEPARATE_ATTRIBS_NV = 0x8C8D :: GLenum

pattern GL_SKIP_COMPONENTS1_NV = -6 :: GLenum

pattern GL_SKIP_COMPONENTS2_NV = -5 :: GLenum

pattern GL_SKIP_COMPONENTS3_NV = -4 :: GLenum

pattern GL_SKIP_COMPONENTS4_NV = -3 :: GLenum

pattern GL_TEXTURE_COORD_NV = 0x8C79 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83 :: GLenum

pattern GL_VERTEX_ID_NV = 0x8C7B :: GLenum