-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.NV.OcclusionQuery (
  -- * Extension Support
    gl_NV_occlusion_query

  -- * GL_NV_occlusion_query
  , glBeginOcclusionQueryNV
  , glDeleteOcclusionQueriesNV
  , glEndOcclusionQueryNV
  , glGenOcclusionQueriesNV
  , glGetOcclusionQueryivNV
  , glGetOcclusionQueryuivNV
  , glIsOcclusionQueryNV
  , pattern GL_CURRENT_OCCLUSION_QUERY_ID_NV
  , pattern GL_PIXEL_COUNTER_BITS_NV
  , pattern GL_PIXEL_COUNT_AVAILABLE_NV
  , pattern GL_PIXEL_COUNT_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_occlusion_query :: Bool
gl_NV_occlusion_query = member "GL_NV_occlusion_query" extensions

glBeginOcclusionQueryNV :: MonadIO m => GLuint -> m ()
glBeginOcclusionQueryNV = ffiuintIOV glBeginOcclusionQueryNVFunPtr

glBeginOcclusionQueryNVFunPtr :: FunPtr (GLuint -> IO ())
glBeginOcclusionQueryNVFunPtr = unsafePerformIO (getProcAddress "glBeginOcclusionQueryNV")

{-# NOINLINE glBeginOcclusionQueryNVFunPtr #-}

glDeleteOcclusionQueriesNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteOcclusionQueriesNV = ffisizeiPtruintIOV glDeleteOcclusionQueriesNVFunPtr

glDeleteOcclusionQueriesNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteOcclusionQueriesNVFunPtr = unsafePerformIO (getProcAddress "glDeleteOcclusionQueriesNV")

{-# NOINLINE glDeleteOcclusionQueriesNVFunPtr #-}

glEndOcclusionQueryNV :: MonadIO m => m ()
glEndOcclusionQueryNV = ffiIOV glEndOcclusionQueryNVFunPtr

glEndOcclusionQueryNVFunPtr :: FunPtr (IO ())
glEndOcclusionQueryNVFunPtr = unsafePerformIO (getProcAddress "glEndOcclusionQueryNV")

{-# NOINLINE glEndOcclusionQueryNVFunPtr #-}

glGenOcclusionQueriesNV :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenOcclusionQueriesNV = ffisizeiPtruintIOV glGenOcclusionQueriesNVFunPtr

glGenOcclusionQueriesNVFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenOcclusionQueriesNVFunPtr = unsafePerformIO (getProcAddress "glGenOcclusionQueriesNV")

{-# NOINLINE glGenOcclusionQueriesNVFunPtr #-}

glGetOcclusionQueryivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetOcclusionQueryivNV = ffiuintenumPtrintIOV glGetOcclusionQueryivNVFunPtr

glGetOcclusionQueryivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetOcclusionQueryivNVFunPtr = unsafePerformIO (getProcAddress "glGetOcclusionQueryivNV")

{-# NOINLINE glGetOcclusionQueryivNVFunPtr #-}

glGetOcclusionQueryuivNV :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetOcclusionQueryuivNV = ffiuintenumPtruintIOV glGetOcclusionQueryuivNVFunPtr

glGetOcclusionQueryuivNVFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetOcclusionQueryuivNVFunPtr = unsafePerformIO (getProcAddress "glGetOcclusionQueryuivNV")

{-# NOINLINE glGetOcclusionQueryuivNVFunPtr #-}

glIsOcclusionQueryNV :: MonadIO m => GLuint -> m GLboolean
glIsOcclusionQueryNV = ffiuintIOboolean glIsOcclusionQueryNVFunPtr

glIsOcclusionQueryNVFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsOcclusionQueryNVFunPtr = unsafePerformIO (getProcAddress "glIsOcclusionQueryNV")

{-# NOINLINE glIsOcclusionQueryNVFunPtr #-}

pattern GL_CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865 :: GLenum

pattern GL_PIXEL_COUNTER_BITS_NV = 0x8864 :: GLenum

pattern GL_PIXEL_COUNT_AVAILABLE_NV = 0x8867 :: GLenum

pattern GL_PIXEL_COUNT_NV = 0x8866 :: GLenum