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

  -- * GL_OES_single_precision
  , glClearDepthfOES
  , glClipPlanefOES
  , glDepthRangefOES
  , glFrustumfOES
  , glGetClipPlanefOES
  , glOrthofOES
) 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_single_precision.txt GL_OES_single_precision> extension is available.

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

-- | Usage: @'glClearDepthfOES' depth@
--
-- The parameter @depth@ is a @ClampedFloat32@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glClearDepthf'.


glClearDepthfOES :: MonadIO m => GLclampf -> m ()
glClearDepthfOES :: GLclampf -> m ()
glClearDepthfOES = FunPtr (GLclampf -> IO ()) -> GLclampf -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLclampf -> IO ()) -> GLclampf -> m ()
fficlampfIOV FunPtr (GLclampf -> IO ())
glClearDepthfOESFunPtr

glClearDepthfOESFunPtr :: FunPtr (GLclampf -> IO ())
glClearDepthfOESFunPtr :: FunPtr (GLclampf -> IO ())
glClearDepthfOESFunPtr = IO (FunPtr (GLclampf -> IO ())) -> FunPtr (GLclampf -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLclampf -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glClearDepthfOES")

{-# NOINLINE glClearDepthfOESFunPtr #-}

-- | Usage: @'glClipPlanefOES' plane equation@
--
-- The length of @equation@ should be @4@.


glClipPlanefOES :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glClipPlanefOES :: GLenum -> Ptr GLclampf -> m ()
glClipPlanefOES = FunPtr (GLenum -> Ptr GLclampf -> IO ())
-> GLenum -> Ptr GLclampf -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> Ptr GLclampf -> IO ())
-> GLenum -> Ptr GLclampf -> m ()
ffienumPtrfloatIOV FunPtr (GLenum -> Ptr GLclampf -> IO ())
glClipPlanefOESFunPtr

glClipPlanefOESFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glClipPlanefOESFunPtr :: FunPtr (GLenum -> Ptr GLclampf -> IO ())
glClipPlanefOESFunPtr = IO (FunPtr (GLenum -> Ptr GLclampf -> IO ()))
-> FunPtr (GLenum -> Ptr GLclampf -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> Ptr GLclampf -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glClipPlanefOES")

{-# NOINLINE glClipPlanefOESFunPtr #-}

-- | Usage: @'glDepthRangefOES' n f@
--
-- The parameter @n@ is a @ClampedFloat32@.
--
-- The parameter @f@ is a @ClampedFloat32@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDepthRangef'.


glDepthRangefOES :: MonadIO m => GLclampf -> GLclampf -> m ()
glDepthRangefOES :: GLclampf -> GLclampf -> m ()
glDepthRangefOES = FunPtr (GLclampf -> GLclampf -> IO ())
-> GLclampf -> GLclampf -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLclampf -> GLclampf -> IO ())
-> GLclampf -> GLclampf -> m ()
fficlampfclampfIOV FunPtr (GLclampf -> GLclampf -> IO ())
glDepthRangefOESFunPtr

glDepthRangefOESFunPtr :: FunPtr (GLclampf -> GLclampf -> IO ())
glDepthRangefOESFunPtr :: FunPtr (GLclampf -> GLclampf -> IO ())
glDepthRangefOESFunPtr = IO (FunPtr (GLclampf -> GLclampf -> IO ()))
-> FunPtr (GLclampf -> GLclampf -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLclampf -> GLclampf -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDepthRangefOES")

{-# NOINLINE glDepthRangefOESFunPtr #-}

-- | Usage: @'glFrustumfOES' l r b t n f@


glFrustumfOES :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glFrustumfOES :: GLclampf
-> GLclampf -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
glFrustumfOES = FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> m ()
ffifloatfloatfloatfloatfloatfloatIOV FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
glFrustumfOESFunPtr

glFrustumfOESFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glFrustumfOESFunPtr :: FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
glFrustumfOESFunPtr = IO
  (FunPtr
     (GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> IO ()))
-> FunPtr
     (GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLclampf
         -> GLclampf
         -> GLclampf
         -> GLclampf
         -> GLclampf
         -> GLclampf
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glFrustumfOES")

{-# NOINLINE glFrustumfOESFunPtr #-}

-- | Usage: @'glGetClipPlanefOES' plane equation@
--
-- The length of @equation@ should be @4@.


glGetClipPlanefOES :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glGetClipPlanefOES :: GLenum -> Ptr GLclampf -> m ()
glGetClipPlanefOES = FunPtr (GLenum -> Ptr GLclampf -> IO ())
-> GLenum -> Ptr GLclampf -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> Ptr GLclampf -> IO ())
-> GLenum -> Ptr GLclampf -> m ()
ffienumPtrfloatIOV FunPtr (GLenum -> Ptr GLclampf -> IO ())
glGetClipPlanefOESFunPtr

glGetClipPlanefOESFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glGetClipPlanefOESFunPtr :: FunPtr (GLenum -> Ptr GLclampf -> IO ())
glGetClipPlanefOESFunPtr = IO (FunPtr (GLenum -> Ptr GLclampf -> IO ()))
-> FunPtr (GLenum -> Ptr GLclampf -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> Ptr GLclampf -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetClipPlanefOES")

{-# NOINLINE glGetClipPlanefOESFunPtr #-}

-- | Usage: @'glOrthofOES' l r b t n f@


glOrthofOES :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glOrthofOES :: GLclampf
-> GLclampf -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
glOrthofOES = FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> GLclampf
-> m ()
ffifloatfloatfloatfloatfloatfloatIOV FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
glOrthofOESFunPtr

glOrthofOESFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glOrthofOESFunPtr :: FunPtr
  (GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> GLclampf
   -> IO ())
glOrthofOESFunPtr = IO
  (FunPtr
     (GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> IO ()))
-> FunPtr
     (GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> GLclampf
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLclampf
         -> GLclampf
         -> GLclampf
         -> GLclampf
         -> GLclampf
         -> GLclampf
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glOrthofOES")

{-# NOINLINE glOrthofOESFunPtr #-}