-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.ARB.GeometryShader4 (
  -- * Extension Support
    gl_ARB_geometry_shader4

  -- * GL_ARB_geometry_shader4
  , glFramebufferTextureARB
  , glFramebufferTextureFaceARB
  , glFramebufferTextureLayerARB
  , glProgramParameteriARB
  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB
  , pattern GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB
  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB
  , pattern GL_GEOMETRY_INPUT_TYPE_ARB
  , pattern GL_GEOMETRY_OUTPUT_TYPE_ARB
  , pattern GL_GEOMETRY_SHADER_ARB
  , pattern GL_GEOMETRY_VERTICES_OUT_ARB
  , pattern GL_LINES_ADJACENCY_ARB
  , pattern GL_LINE_STRIP_ADJACENCY_ARB
  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB
  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB
  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB
  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB
  , pattern GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB
  , pattern GL_MAX_VARYING_COMPONENTS
  , pattern GL_MAX_VERTEX_VARYING_COMPONENTS_ARB
  , pattern GL_PROGRAM_POINT_SIZE_ARB
  , pattern GL_TRIANGLES_ADJACENCY_ARB
  , pattern GL_TRIANGLE_STRIP_ADJACENCY_ARB
) 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.Internal.Shared
import Graphics.GL.Types
import System.IO.Unsafe

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

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

-- | Usage: @'glFramebufferTextureARB' target attachment texture level@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @texture@ is a @Texture@.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTexture'.


glFramebufferTextureARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTextureARB :: GLenum -> GLenum -> GLenum -> GLint -> m ()
glFramebufferTextureARB = FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
-> GLenum -> GLenum -> GLenum -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
-> GLenum -> GLenum -> GLenum -> GLint -> m ()
ffienumenumuintintIOV FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
glFramebufferTextureARBFunPtr

glFramebufferTextureARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTextureARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
glFramebufferTextureARBFunPtr = IO (FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ()))
-> FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO (FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glFramebufferTextureARB")

{-# NOINLINE glFramebufferTextureARBFunPtr #-}

-- | Usage: @'glFramebufferTextureFaceARB' target attachment texture level face@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @texture@ is a @Texture@.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @face@ is a @TextureTarget@, one of: 'Graphics.GL.Ext.SGIS.DetailTexture.GL_DETAIL_TEXTURE_2D_SGIS', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_1D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_1D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_2D', 'Graphics.GL.Ext.EXT.Texture.GL_PROXY_TEXTURE_2D_EXT', 'Graphics.GL.Internal.Shared.GL_PROXY_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_PROXY_TEXTURE_3D_EXT', 'Graphics.GL.Ext.SGIS.Texture4D.GL_PROXY_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_1D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_2D', 'Graphics.GL.Internal.Shared.GL_TEXTURE_3D', 'Graphics.GL.Ext.EXT.Texture3D.GL_TEXTURE_3D_EXT', 'Graphics.GL.Ext.OES.Texture3D.GL_TEXTURE_3D_OES', 'Graphics.GL.Ext.SGIS.Texture4D.GL_TEXTURE_4D_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_BASE_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_BASE_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LEVEL', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LEVEL_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MAX_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MAX_LOD_SGIS', 'Graphics.GL.Internal.Shared.GL_TEXTURE_MIN_LOD', 'Graphics.GL.Ext.SGIS.TextureLod.GL_TEXTURE_MIN_LOD_SGIS'.


glFramebufferTextureFaceARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLenum -> m ()
glFramebufferTextureFaceARB :: GLenum -> GLenum -> GLenum -> GLint -> GLenum -> m ()
glFramebufferTextureFaceARB = FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ())
-> GLenum -> GLenum -> GLenum -> GLint -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ())
-> GLenum -> GLenum -> GLenum -> GLint -> GLenum -> m ()
ffienumenumuintintenumIOV FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ())
glFramebufferTextureFaceARBFunPtr

glFramebufferTextureFaceARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLenum -> IO ())
glFramebufferTextureFaceARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ())
glFramebufferTextureFaceARBFunPtr = IO
  (FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glFramebufferTextureFaceARB")

{-# NOINLINE glFramebufferTextureFaceARBFunPtr #-}

-- | Usage: @'glFramebufferTextureLayerARB' target attachment texture level layer@
--
-- The parameter @target@ is a @FramebufferTarget@.
--
-- The parameter @attachment@ is a @FramebufferAttachment@.
--
-- The parameter @texture@ is a @Texture@.
--
-- The parameter @level@ is a @CheckedInt32@.
--
-- The parameter @layer@ is a @CheckedInt32@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glFramebufferTextureLayer'.


glFramebufferTextureLayerARB :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
glFramebufferTextureLayerARB :: GLenum -> GLenum -> GLenum -> GLint -> GLint -> m ()
glFramebufferTextureLayerARB = FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ())
-> GLenum -> GLenum -> GLenum -> GLint -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ())
-> GLenum -> GLenum -> GLenum -> GLint -> GLint -> m ()
ffienumenumuintintintIOV FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ())
glFramebufferTextureLayerARBFunPtr

glFramebufferTextureLayerARBFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ())
glFramebufferTextureLayerARBFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ())
glFramebufferTextureLayerARBFunPtr = IO (FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ()))
-> FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLenum -> GLenum -> GLenum -> GLint -> GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glFramebufferTextureLayerARB")

{-# NOINLINE glFramebufferTextureLayerARBFunPtr #-}

-- | Usage: @'glProgramParameteriARB' program pname value@
--
-- The parameter @pname@ is a @ProgramParameterPName@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glProgramParameteri'.


glProgramParameteriARB :: MonadIO m => GLuint -> GLenum -> GLint -> m ()
glProgramParameteriARB :: GLenum -> GLenum -> GLint -> m ()
glProgramParameteriARB = FunPtr (GLenum -> GLenum -> GLint -> IO ())
-> GLenum -> GLenum -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> GLint -> IO ())
-> GLenum -> GLenum -> GLint -> m ()
ffiuintenumintIOV FunPtr (GLenum -> GLenum -> GLint -> IO ())
glProgramParameteriARBFunPtr

glProgramParameteriARBFunPtr :: FunPtr (GLuint -> GLenum -> GLint -> IO ())
glProgramParameteriARBFunPtr :: FunPtr (GLenum -> GLenum -> GLint -> IO ())
glProgramParameteriARBFunPtr = IO (FunPtr (GLenum -> GLenum -> GLint -> IO ()))
-> FunPtr (GLenum -> GLenum -> GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glProgramParameteriARB")

{-# NOINLINE glProgramParameteriARBFunPtr #-}

pattern $bGL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB :: a
$mGL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7

pattern $bGL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB :: a
$mGL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9

pattern $bGL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB :: a
$mGL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8

pattern $bGL_GEOMETRY_INPUT_TYPE_ARB :: a
$mGL_GEOMETRY_INPUT_TYPE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_INPUT_TYPE_ARB = 0x8DDB

pattern $bGL_GEOMETRY_OUTPUT_TYPE_ARB :: a
$mGL_GEOMETRY_OUTPUT_TYPE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC

pattern $bGL_GEOMETRY_SHADER_ARB :: a
$mGL_GEOMETRY_SHADER_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_SHADER_ARB = 0x8DD9

pattern $bGL_GEOMETRY_VERTICES_OUT_ARB :: a
$mGL_GEOMETRY_VERTICES_OUT_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_VERTICES_OUT_ARB = 0x8DDA

pattern $bGL_LINES_ADJACENCY_ARB :: a
$mGL_LINES_ADJACENCY_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LINES_ADJACENCY_ARB = 0x000A

pattern $bGL_LINE_STRIP_ADJACENCY_ARB :: a
$mGL_LINE_STRIP_ADJACENCY_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LINE_STRIP_ADJACENCY_ARB = 0x000B

pattern $bGL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB :: a
$mGL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0

pattern $bGL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB :: a
$mGL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29

pattern $bGL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB :: a
$mGL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1

pattern $bGL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB :: a
$mGL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF

pattern $bGL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB :: a
$mGL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD

pattern $bGL_MAX_VERTEX_VARYING_COMPONENTS_ARB :: a
$mGL_MAX_VERTEX_VARYING_COMPONENTS_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE

pattern $bGL_PROGRAM_POINT_SIZE_ARB :: a
$mGL_PROGRAM_POINT_SIZE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PROGRAM_POINT_SIZE_ARB = 0x8642

pattern $bGL_TRIANGLES_ADJACENCY_ARB :: a
$mGL_TRIANGLES_ADJACENCY_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRIANGLES_ADJACENCY_ARB = 0x000C

pattern $bGL_TRIANGLE_STRIP_ADJACENCY_ARB :: a
$mGL_TRIANGLE_STRIP_ADJACENCY_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D