-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.OES.GeometryShader (
  -- * Extension Support
    gl_OES_geometry_shader

  -- * GL_OES_geometry_shader
  , glFramebufferTextureOES
  , pattern GL_FIRST_VERTEX_CONVENTION_OES
  , pattern GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES
  , pattern GL_FRAMEBUFFER_DEFAULT_LAYERS_OES
  , pattern GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES
  , pattern GL_GEOMETRY_LINKED_INPUT_TYPE_OES
  , pattern GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES
  , pattern GL_GEOMETRY_LINKED_VERTICES_OUT_OES
  , pattern GL_GEOMETRY_SHADER_BIT_OES
  , pattern GL_GEOMETRY_SHADER_INVOCATIONS_OES
  , pattern GL_GEOMETRY_SHADER_OES
  , pattern GL_LAST_VERTEX_CONVENTION_OES
  , pattern GL_LAYER_PROVOKING_VERTEX_OES
  , pattern GL_LINES_ADJACENCY_OES
  , pattern GL_LINE_STRIP_ADJACENCY_OES
  , pattern GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES
  , pattern GL_MAX_FRAMEBUFFER_LAYERS_OES
  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES
  , pattern GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES
  , pattern GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES
  , pattern GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES
  , pattern GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES
  , pattern GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES
  , pattern GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES
  , pattern GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES
  , pattern GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES
  , pattern GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES
  , pattern GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES
  , pattern GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES
  , pattern GL_PRIMITIVES_GENERATED_OES
  , pattern GL_REFERENCED_BY_GEOMETRY_SHADER_OES
  , pattern GL_TRIANGLES_ADJACENCY_OES
  , pattern GL_TRIANGLE_STRIP_ADJACENCY_OES
  , pattern GL_UNDEFINED_VERTEX_OES
) 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://www.khronos.org/registry/gles/extensions/OES/OES_geometry_shader.txt GL_OES_geometry_shader> extension is available.

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

-- | Usage: @'glFramebufferTextureOES' 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'.


glFramebufferTextureOES :: MonadIO m => GLenum -> GLenum -> GLuint -> GLint -> m ()
glFramebufferTextureOES :: GLenum -> GLenum -> GLenum -> GLint -> m ()
glFramebufferTextureOES = 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 ())
glFramebufferTextureOESFunPtr

glFramebufferTextureOESFunPtr :: FunPtr (GLenum -> GLenum -> GLuint -> GLint -> IO ())
glFramebufferTextureOESFunPtr :: FunPtr (GLenum -> GLenum -> GLenum -> GLint -> IO ())
glFramebufferTextureOESFunPtr = 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 "glFramebufferTextureOES")

{-# NOINLINE glFramebufferTextureOESFunPtr #-}

pattern $bGL_FIRST_VERTEX_CONVENTION_OES :: a
$mGL_FIRST_VERTEX_CONVENTION_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FIRST_VERTEX_CONVENTION_OES = 0x8E4D

pattern $bGL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES :: a
$mGL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES = 0x8DA7

pattern $bGL_FRAMEBUFFER_DEFAULT_LAYERS_OES :: a
$mGL_FRAMEBUFFER_DEFAULT_LAYERS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAMEBUFFER_DEFAULT_LAYERS_OES = 0x9312

pattern $bGL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES :: a
$mGL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES = 0x8DA8

pattern $bGL_GEOMETRY_LINKED_INPUT_TYPE_OES :: a
$mGL_GEOMETRY_LINKED_INPUT_TYPE_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_LINKED_INPUT_TYPE_OES = 0x8917

pattern $bGL_GEOMETRY_LINKED_OUTPUT_TYPE_OES :: a
$mGL_GEOMETRY_LINKED_OUTPUT_TYPE_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES = 0x8918

pattern $bGL_GEOMETRY_LINKED_VERTICES_OUT_OES :: a
$mGL_GEOMETRY_LINKED_VERTICES_OUT_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_LINKED_VERTICES_OUT_OES = 0x8916

pattern $bGL_GEOMETRY_SHADER_BIT_OES :: a
$mGL_GEOMETRY_SHADER_BIT_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_SHADER_BIT_OES = 0x00000004

pattern $bGL_GEOMETRY_SHADER_INVOCATIONS_OES :: a
$mGL_GEOMETRY_SHADER_INVOCATIONS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_SHADER_INVOCATIONS_OES = 0x887F

pattern $bGL_GEOMETRY_SHADER_OES :: a
$mGL_GEOMETRY_SHADER_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_SHADER_OES = 0x8DD9

pattern $bGL_LAST_VERTEX_CONVENTION_OES :: a
$mGL_LAST_VERTEX_CONVENTION_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LAST_VERTEX_CONVENTION_OES = 0x8E4E

pattern $bGL_LAYER_PROVOKING_VERTEX_OES :: a
$mGL_LAYER_PROVOKING_VERTEX_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LAYER_PROVOKING_VERTEX_OES = 0x825E

pattern $bGL_LINES_ADJACENCY_OES :: a
$mGL_LINES_ADJACENCY_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LINES_ADJACENCY_OES = 0x000A

pattern $bGL_LINE_STRIP_ADJACENCY_OES :: a
$mGL_LINE_STRIP_ADJACENCY_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_LINE_STRIP_ADJACENCY_OES = 0x000B

pattern $bGL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES :: a
$mGL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES = 0x8A32

pattern $bGL_MAX_FRAMEBUFFER_LAYERS_OES :: a
$mGL_MAX_FRAMEBUFFER_LAYERS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_FRAMEBUFFER_LAYERS_OES = 0x9317

pattern $bGL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES :: a
$mGL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES = 0x92D5

pattern $bGL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES :: a
$mGL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES = 0x92CF

pattern $bGL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES :: a
$mGL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES = 0x90CD

pattern $bGL_MAX_GEOMETRY_INPUT_COMPONENTS_OES :: a
$mGL_MAX_GEOMETRY_INPUT_COMPONENTS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES = 0x9123

pattern $bGL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES :: a
$mGL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES = 0x9124

pattern $bGL_MAX_GEOMETRY_OUTPUT_VERTICES_OES :: a
$mGL_MAX_GEOMETRY_OUTPUT_VERTICES_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES = 0x8DE0

pattern $bGL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES :: a
$mGL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES = 0x8E5A

pattern $bGL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES :: a
$mGL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES = 0x90D7

pattern $bGL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES :: a
$mGL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES = 0x8C29

pattern $bGL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES :: a
$mGL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES = 0x8DE1

pattern $bGL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES :: a
$mGL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES = 0x8A2C

pattern $bGL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES :: a
$mGL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES = 0x8DDF

pattern $bGL_PRIMITIVES_GENERATED_OES :: a
$mGL_PRIMITIVES_GENERATED_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PRIMITIVES_GENERATED_OES = 0x8C87

pattern $bGL_REFERENCED_BY_GEOMETRY_SHADER_OES :: a
$mGL_REFERENCED_BY_GEOMETRY_SHADER_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_REFERENCED_BY_GEOMETRY_SHADER_OES = 0x9309

pattern $bGL_TRIANGLES_ADJACENCY_OES :: a
$mGL_TRIANGLES_ADJACENCY_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRIANGLES_ADJACENCY_OES = 0x000C

pattern $bGL_TRIANGLE_STRIP_ADJACENCY_OES :: a
$mGL_TRIANGLE_STRIP_ADJACENCY_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRIANGLE_STRIP_ADJACENCY_OES = 0x000D

pattern $bGL_UNDEFINED_VERTEX_OES :: a
$mGL_UNDEFINED_VERTEX_OES :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_UNDEFINED_VERTEX_OES = 0x8260