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

  -- * GL_OES_draw_buffers_indexed
  , glBlendEquationSeparateiOES
  , glBlendEquationiOES
  , glBlendFuncSeparateiOES
  , glBlendFunciOES
  , glColorMaskiOES
  , glDisableiOES
  , glEnableiOES
  , glIsEnablediOES
  , pattern GL_BLEND
  , pattern GL_BLEND_DST_ALPHA
  , pattern GL_BLEND_DST_RGB
  , pattern GL_BLEND_EQUATION_ALPHA
  , pattern GL_BLEND_EQUATION_RGB
  , pattern GL_BLEND_SRC_ALPHA
  , pattern GL_BLEND_SRC_RGB
  , pattern GL_COLOR_WRITEMASK
  , pattern GL_CONSTANT_ALPHA
  , pattern GL_CONSTANT_COLOR
  , pattern GL_DST_ALPHA
  , pattern GL_DST_COLOR
  , pattern GL_FUNC_ADD
  , pattern GL_FUNC_REVERSE_SUBTRACT
  , pattern GL_FUNC_SUBTRACT
  , pattern GL_MAX
  , pattern GL_MIN
  , pattern GL_ONE
  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
  , pattern GL_ONE_MINUS_CONSTANT_COLOR
  , pattern GL_ONE_MINUS_DST_ALPHA
  , pattern GL_ONE_MINUS_DST_COLOR
  , pattern GL_ONE_MINUS_SRC_ALPHA
  , pattern GL_ONE_MINUS_SRC_COLOR
  , pattern GL_SRC_ALPHA
  , pattern GL_SRC_ALPHA_SATURATE
  , pattern GL_SRC_COLOR
  , pattern GL_ZERO
) 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://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt GL_OES_draw_buffers_indexed> extension is available.

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

-- | Usage: @'glBlendEquationSeparateiOES' buf modeRGB modeAlpha@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationSeparatei'.


glBlendEquationSeparateiOES :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
glBlendEquationSeparateiOES :: GLuint -> GLuint -> GLuint -> m ()
glBlendEquationSeparateiOES = FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
ffiuintenumenumIOV FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glBlendEquationSeparateiOESFunPtr

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

{-# NOINLINE glBlendEquationSeparateiOESFunPtr #-}

-- | Usage: @'glBlendEquationiOES' buf mode@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationi'.


glBlendEquationiOES :: MonadIO m => GLuint -> GLenum -> m ()
glBlendEquationiOES :: GLuint -> GLuint -> m ()
glBlendEquationiOES = FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
ffiuintenumIOV FunPtr (GLuint -> GLuint -> IO ())
glBlendEquationiOESFunPtr

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

{-# NOINLINE glBlendEquationiOESFunPtr #-}

-- | Usage: @'glBlendFuncSeparateiOES' buf srcRGB dstRGB srcAlpha dstAlpha@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFuncSeparatei'.


glBlendFuncSeparateiOES :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
glBlendFuncSeparateiOES :: GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glBlendFuncSeparateiOES = FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
ffiuintenumenumenumenumIOV FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glBlendFuncSeparateiOESFunPtr

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

{-# NOINLINE glBlendFuncSeparateiOESFunPtr #-}

-- | Usage: @'glBlendFunciOES' buf src dst@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFunci'.


glBlendFunciOES :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
glBlendFunciOES :: GLuint -> GLuint -> GLuint -> m ()
glBlendFunciOES = FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
ffiuintenumenumIOV FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glBlendFunciOESFunPtr

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

{-# NOINLINE glBlendFunciOESFunPtr #-}

-- | Usage: @'glColorMaskiOES' index r g b a@
--
-- The parameter @r@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @g@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @b@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @a@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glColorMaski'.


glColorMaskiOES :: MonadIO m => GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMaskiOES :: GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMaskiOES = FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
-> GLuint
-> GLboolean
-> GLboolean
-> GLboolean
-> GLboolean
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
-> GLuint
-> GLboolean
-> GLboolean
-> GLboolean
-> GLboolean
-> m ()
ffiuintbooleanbooleanbooleanbooleanIOV FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiOESFunPtr

glColorMaskiOESFunPtr :: FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiOESFunPtr :: FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiOESFunPtr = IO
  (FunPtr
     (GLuint
      -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()))
-> FunPtr
     (GLuint
      -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glColorMaskiOES")

{-# NOINLINE glColorMaskiOESFunPtr #-}