-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.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.Raw.Internal.FFI
import Graphics.GL.Raw.Internal.Proc
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_NV_transform_feedback2 :: Bool
gl_NV_transform_feedback2 = member "GL_NV_transform_feedback2" extensions

glBindTransformFeedbackNV :: MonadIO m => GLenum -> GLuint -> m ()
glBindTransformFeedbackNV = ffienumuintIOV glBindTransformFeedbackNVFunPtr

glBindTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glBindTransformFeedbackNV")

{-# NOINLINE glBindTransformFeedbackNVFunPtr #-}

glDeleteTransformFeedbacksNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteTransformFeedbacksNV = ffisizeiPtruintIOV glDeleteTransformFeedbacksNVFunPtr

glDeleteTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteTransformFeedbacksNVFunPtr = unsafePerformIO (getProcAddress "glDeleteTransformFeedbacksNV")

{-# NOINLINE glDeleteTransformFeedbacksNVFunPtr #-}

glDrawTransformFeedbackNV :: MonadIO m => GLenum -> GLuint -> m ()
glDrawTransformFeedbackNV = ffienumuintIOV glDrawTransformFeedbackNVFunPtr

glDrawTransformFeedbackNVFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDrawTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glDrawTransformFeedbackNV")

{-# NOINLINE glDrawTransformFeedbackNVFunPtr #-}

glGenTransformFeedbacksNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenTransformFeedbacksNV = ffisizeiPtruintIOV glGenTransformFeedbacksNVFunPtr

glGenTransformFeedbacksNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenTransformFeedbacksNVFunPtr = unsafePerformIO (getProcAddress "glGenTransformFeedbacksNV")

{-# NOINLINE glGenTransformFeedbacksNVFunPtr #-}

glIsTransformFeedbackNV :: MonadIO m => GLuint -> m GLboolean
glIsTransformFeedbackNV = ffiuintIOboolean glIsTransformFeedbackNVFunPtr

glIsTransformFeedbackNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glIsTransformFeedbackNV")

{-# NOINLINE glIsTransformFeedbackNVFunPtr #-}

glPauseTransformFeedbackNV :: MonadIO m => m ()
glPauseTransformFeedbackNV = ffiIOV glPauseTransformFeedbackNVFunPtr

glPauseTransformFeedbackNVFunPtr :: FunPtr (IO ())
glPauseTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glPauseTransformFeedbackNV")

{-# NOINLINE glPauseTransformFeedbackNVFunPtr #-}

glResumeTransformFeedbackNV :: MonadIO m => m ()
glResumeTransformFeedbackNV = ffiIOV glResumeTransformFeedbackNVFunPtr

glResumeTransformFeedbackNVFunPtr :: FunPtr (IO ())
glResumeTransformFeedbackNVFunPtr = unsafePerformIO (getProcAddress "glResumeTransformFeedbackNV")

{-# NOINLINE glResumeTransformFeedbackNVFunPtr #-}

pattern GL_TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23 :: GLenum

pattern GL_TRANSFORM_FEEDBACK_NV = 0x8E22 :: GLenum