packages feed

caramia (empty) → 0.1.0.0

raw patch · 34 files changed

+35562/−0 lines, 34 filesdep +OpenGLRawdep +basedep +bytestringsetup-changed

Dependencies added: OpenGLRaw, base, bytestring, caramia, containers, sdl2, semigroups, text, transformers, vector

Files

+ LICENSE view
@@ -0,0 +1,20 @@+Copyright (c) 2014 Mikko Juola++Permission is hereby granted, free of charge, to any person obtaining a copy+of this software and associated documentation files (the "Software"), to deal+in the Software without restriction, including without limitation the rights+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the Software is+furnished to do so, subject to the following conditions:++The above copyright notice and this permission notice shall be included in+all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN+THE SOFTWARE.+
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ caramia.cabal view
@@ -0,0 +1,96 @@+name:                caramia+version:             0.1.0.0+synopsis:            Caramia real-time hardware-accelerated rendering library+homepage:            https://github.com/Noeda/caramia/+license:             MIT+license-file:        LICENSE+author:              Mikko Juola+copyright:           Copyright (c) 2014 Mikko Juola+maintainer:          mikjuo@gmail.com+category:            Graphics+build-type:          Simple+stability:           experimental+cabal-version:       >=1.10++description:+    (See README.md in the repository for a more comprehensive description).+    .+    These are low-level, but Haskelly bindings to OpenGL 3.3.+    .+    See 'giveContext' in "Caramia.Context" as this is the+    starting point for using this library.++source-repository head+    type:            git+    location:        https://github.com/Noeda/caramia.git++library+  exposed-modules:     Caramia+                       Caramia.Resource+                       Caramia.Context+                       Caramia.Buffer+                       Caramia.VAO+                       Caramia.Shader+                       Caramia.Math+                       Caramia.ImageFormats+                       Caramia.Render+                       Caramia.Texture+                       Caramia.Memory+                       Caramia.Framebuffer+                       Caramia.Color+                       Caramia.Blend+                       Caramia.Prelude+                       Caramia.Sync+                       Caramia.Internal.ContextLocalData+                       Caramia.Internal.OpenGLDebug+                       Caramia.Internal.OpenGLCApi+                       Caramia.Internal.Lens+                       Caramia.Internal.FlextGL+                       Caramia.Render.Internal+                       Caramia.Framebuffer.Internal+                       Caramia.Texture.Internal+                       Caramia.ImageFormats.Internal+                       Caramia.Shader.Internal+                       Caramia.Buffer.Internal+                       Caramia.Blend.Internal+                       Caramia.VAO.Internal++  ghc-options:         -Wall -fno-warn-name-shadowing++  build-depends:       base >=4.6 && <5.0.0.0+                      ,bytestring   >=0.10 && <1.0+                      ,containers   >=0.5 && <1.0+                      ,vector       >=0.10 && <1.0+                      ,text         >=0.9 && <2.0+                      ,transformers >=0.4 && <1.0+                      ,semigroups   >=0.15 && <1.0+                      ,OpenGLRaw    >=1.5 && <2.0+  hs-source-dirs:      src+  default-language:    Haskell2010++  if os(darwin)+    frameworks: OpenGL+    cpp-options:       -DMAC_OPENGL++-- This is just a dumping ground test that does stupid things. It's used to+-- check if things work at all.+test-suite smoke-test+  type:                exitcode-stdio-1.0+  main-is:             Main.hs+  ghc-options:         -Wall -fno-warn-name-shadowing -threaded+  hs-source-dirs:      demos/smoke-test+  build-depends:       base, caramia+                      ,sdl2 ==1.*+                      ,text >=0.9 && <2.0+  default-language:    Haskell2010++-- This one tests Caramia.Memory if it returns anything useful.+test-suite memory-info+  type:                exitcode-stdio-1.0+  main-is:             Main.hs+  ghc-options:         -Wall -fno-warn-name-shadowing -threaded+  hs-source-dirs:      demos/memory-info+  build-depends:       base, caramia+                      ,sdl2 ==1.*+  default-language:    Haskell2010+
+ demos/memory-info/Main.hs view
@@ -0,0 +1,23 @@+module Main ( main ) where++import Caramia+import Graphics.UI.SDL+import Data.Bits+import Foreign.C.String++main :: IO ()+main = +    withCString "smoke-test" $ \cstr -> do+        _ <- glSetAttribute glAttrContextMajorVersion 3+        _ <- glSetAttribute glAttrContextMinorVersion 3+        _ <- glSetAttribute glAttrContextProfileMask glProfileCore+        _ <- glSetAttribute glAttrContextFlags glContextFlagDebug+        window <- createWindow cstr windowPosUndefined windowPosUndefined+                                    500 500+                                    (windowFlagOpenGL .|.+                                     windowFlagShown)+        _ <- glCreateContext window+        giveContext $ do+            putStrLn "Attempting to retrieve GPU memory information..."+            print =<< getMemoryInfo+
+ demos/smoke-test/Main.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE NoImplicitPrelude, OverloadedStrings #-}++module Main ( main ) where++import Caramia.Prelude+import Caramia+import Caramia.Math++import Graphics.UI.SDL+import qualified Graphics.UI.SDL as SDL+import Foreign.C.String+import Control.Exception+import Data.Bits+import qualified Data.Text as T+import System.Mem++main :: IO ()+main = do+    putStrLn $ "This will run the smoke test. The smoke test merely tests " <>+               "that " <>+               "things don't crash and burn when trying to heavily draw " <>+               "something."+    putStrLn $ "However with some drivers it can drive the computer to " <>+               "become unresponsive and difficult to recover without a " <>+               "reboot."+    putStrLn "Press enter to start the smoke test."+    _ <- getLine+    putStrLn "Running the smoke test..."+    bracket_ (SDL.init initFlagVideo)+             quit+             program++program :: IO ()+program =+    withCString "smoke-test" $ \cstr -> do+        _ <- glSetAttribute glAttrContextMajorVersion 3+        _ <- glSetAttribute glAttrContextMinorVersion 3+        _ <- glSetAttribute glAttrContextProfileMask glProfileCore+        _ <- glSetAttribute glAttrContextFlags glContextFlagDebug+        window <- createWindow cstr windowPosUndefined windowPosUndefined+                                    500 500+                                    (windowFlagOpenGL .|.+                                     windowFlagShown)+        _ <- glCreateContext window+        giveContext $ do+            -- Make some buffers.+            for_ [1..100 :: Integer] $ \idx -> do+                buf <- newBuffer defaultBufferCreation { size = 1024+                                                       , accessFlags =+                                                           WriteAccess }+                withMapping 0 500 WriteAccess buf $ \_ -> return ()+                runPendingFinalizers+                putStrLn $ "Buffer creation: " <> show idx <> "/100"++            -- Make some buffers but with much larger size and ReadAccess+            for_ [1..100 :: Integer] $ \idx -> do+                buf <- newBuffer defaultBufferCreation { size = 102400+                                                       , accessFlags =+                                                           ReadAccess }+                withMapping 23 50000 ReadAccess buf $ \_ -> return ()+                copy buf 100 buf 500 400+                runPendingFinalizers++                -- Compile a gazillion shaders+                sh1 <- newShader fragmentShaderSrc Fragment+                pipeline <- newPipeline [sh1]+                loc <- getUniformLocation "tutturuu" pipeline+                setUniform (transpose44 identity44)+                           loc+                           pipeline+                setUniform identity44+                           loc+                           pipeline+                setUniform identity33+                           loc+                           pipeline+                setUniform (transpose33 identity33)+                           loc+                           pipeline++                tex <- newTexture+                    textureSpecification+                    { topology = TexCube { widthCube = 299 }+                    , mipmapLevels = 5+                    , imageFormat = SRGB8_ALPHA8 }++                uploadToTexture+                    (uploading2D buf 28 28 FWord32 UBGRA)+                    {+                        cubeSide = NegativeX+                    }+                    tex++                -- Make some stupid VAOs+                vao <- newVAO+                vao2 <- newVAO+                sourceVertexData buf+                                 ((defaultSourcingType (5 :: Word16))+                                  { offset = 123+                                  , components = 3+                                  , stride = 19+                                  , attributeIndex = 3+                                  , integerMapping = True })+                                 vao2+                sourceVertexData buf+                                 ((defaultSourcingType (5 :: Word16))+                                  { offset = 123+                                  , components = 3+                                  , stride = 19+                                  , instancingDivisor = 19+                                  , attributeIndex = 3+                                  , normalize = True+                                  , integerMapping = False })+                                 vao+                draw drawCommand {+                     primitiveType = LineLoop+                   , primitivesVAO = vao2+                   , numIndices = 8+                   , numInstances = 213+                   , sourceData = PrimitivesWithIndices {+                       indexBuffer = buf+                     , indexOffset = 17+                     , indexType = IWord16 } }+                     defaultDrawParams {+                     pipeline = pipeline+                     }++                fbuf <- newFramebuffer [ (ColorAttachment 3+                                       , frontTextureTarget tex) ]+                draw drawCommand {+                     primitiveType = LineLoop+                   , primitivesVAO = vao2+                   , numIndices = 8+                   , numInstances = 999+                   , sourceData = Primitives {+                       firstIndex = 3 } }+                     defaultDrawParams {+                     pipeline = pipeline+                   , targetFramebuffer = fbuf+                     }+                putStrLn $ "Drawing: " <> show idx <> "/100"++            performGC+            runPendingFinalizers+            return ()++fragmentShaderSrc :: T.Text+fragmentShaderSrc = "" <>+    "#version 330\n" <>+    "uniform mat3 tutturuu;\n" <>+    "layout (location = 0) out vec4 colorOut;\n" <>+    "void main() {\n" <>+    "    colorOut = vec4(tutturuu[0][0]);\n" <>+    "}\n"+
+ src/Caramia.hs view
@@ -0,0 +1,19 @@+-- | This module re-exports most Caramia modules.++module Caramia+    ( module Ex )+    where++import Caramia.Resource as Ex+import Caramia.Context as Ex+import Caramia.Buffer as Ex+import Caramia.VAO as Ex+import Caramia.Shader as Ex+import Caramia.Render as Ex+import Caramia.ImageFormats as Ex+import Caramia.Texture as Ex+import Caramia.Memory as Ex+import Caramia.Framebuffer as Ex+import Caramia.Color as Ex+import Caramia.Blend as Ex+
+ src/Caramia/Blend.hs view
@@ -0,0 +1,42 @@+-- | Blending stuff.+--+-- <https://www.opengl.org/wiki/Blending>+--++module Caramia.Blend+    (+    -- * Data types+      BlendSpec(..)+    , BlendEquation(..)+    , BlendFunc(..)+    -- * Pre-defined blending specs+    , preMultipliedAlpha+    , nopBlend )+    where++--import Caramia.Prelude+import Caramia.Blend.Internal+import Caramia.Color++preMultipliedAlpha :: BlendSpec+preMultipliedAlpha = BlendSpec+    { srcColorFunc = BFOne+    , srcAlphaFunc = BFOne+    , dstColorFunc = BFOneMinusSrcAlpha+    , dstAlphaFunc = BFOneMinusSrcAlpha+    , colorEquation = BEAdd+    , alphaEquation = BEAdd+    , blendColor = rgba 1 1 1 1 }++-- | Blending that doesn't do anything special; just copies the source pixel to+-- destination.+nopBlend :: BlendSpec+nopBlend = BlendSpec+    { srcColorFunc = BFOne+    , srcAlphaFunc = BFOne+    , dstColorFunc = BFZero+    , dstAlphaFunc = BFZero+    , colorEquation = BEAdd+    , alphaEquation = BEAdd+    , blendColor = rgba 1 1 1 1 }+
+ src/Caramia/Blend/Internal.hs view
@@ -0,0 +1,118 @@+{-# LANGUAGE RecordWildCards, NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Blend.Internal where++import Caramia.Prelude++import Caramia.Internal.OpenGLCApi+import Caramia.Color+import Control.Exception+import Foreign+import Foreign.C.Types++-- | Describes which equation to use in blending.+--+-- See `glBlendEquation` in OpenGL documentation.+data BlendEquation =+    BEAdd+  | BESubtract+  | BEReverseSubtract+  | BEMin+  | BEMax+  deriving ( Eq, Ord, Show, Read, Typeable )++-- | Describes the arithmetic to use in blending.+--+-- See `glBlendFunc` in OpenGL documentation.+data BlendFunc =+    BFZero+  | BFOne+  | BFSrcColor+  | BFOneMinusSrcColor+  | BFDstColor+  | BFOneMinusDstColor+  | BFSrcAlpha+  | BFOneMinusSrcAlpha+  | BFDstAlpha+  | BFOneMinusDstAlpha+  | BFConstantColor+  | BFOneMinusConstantColor+  | BFConstantAlpha+  | BFOneMinusConstantAlpha+  | BFSrcAlphaSaturate+  deriving ( Eq, Ord, Show, Read, Typeable )++toConstantBE :: BlendEquation -> GLenum+toConstantBE BEAdd = gl_FUNC_ADD+toConstantBE BESubtract = gl_FUNC_SUBTRACT+toConstantBE BEReverseSubtract = gl_FUNC_REVERSE_SUBTRACT+toConstantBE BEMin = gl_MIN+toConstantBE BEMax = gl_MAX++toConstantBF :: BlendFunc -> GLenum+toConstantBF BFZero = gl_ZERO+toConstantBF BFOne = gl_ONE+toConstantBF BFSrcColor = gl_SRC_COLOR+toConstantBF BFOneMinusSrcColor = gl_ONE_MINUS_SRC_COLOR+toConstantBF BFDstColor = gl_DST_COLOR+toConstantBF BFOneMinusDstColor = gl_ONE_MINUS_DST_COLOR+toConstantBF BFSrcAlpha = gl_SRC_ALPHA+toConstantBF BFOneMinusSrcAlpha = gl_ONE_MINUS_SRC_ALPHA+toConstantBF BFDstAlpha = gl_DST_ALPHA+toConstantBF BFOneMinusDstAlpha = gl_ONE_MINUS_DST_ALPHA+toConstantBF BFConstantColor = gl_CONSTANT_COLOR+toConstantBF BFOneMinusConstantColor = gl_ONE_MINUS_CONSTANT_COLOR+toConstantBF BFConstantAlpha = gl_CONSTANT_ALPHA+toConstantBF BFOneMinusConstantAlpha = gl_ONE_MINUS_CONSTANT_ALPHA+toConstantBF BFSrcAlphaSaturate = gl_SRC_ALPHA_SATURATE++-- | Captures the blending parameters.+data BlendSpec = BlendSpec+    { alphaEquation :: !BlendEquation+    , colorEquation :: !BlendEquation+    , srcColorFunc  :: !BlendFunc+    , srcAlphaFunc  :: !BlendFunc+    , dstColorFunc  :: !BlendFunc+    , dstAlphaFunc  :: !BlendFunc+    , blendColor    :: !Color }+    deriving ( Eq, Ord, Show, Read, Typeable )++setBlendings :: BlendSpec -> IO ()+setBlendings (BlendSpec{..}) = do+    glBlendFuncSeparate (toConstantBF srcColorFunc)+                        (toConstantBF dstColorFunc)+                        (toConstantBF srcAlphaFunc)+                        (toConstantBF dstAlphaFunc)+    glBlendEquationSeparate (toConstantBE colorEquation)+                            (toConstantBE alphaEquation)+    glBlendColor (CFloat $ viewRed blendColor)+                 (CFloat $ viewGreen blendColor)+                 (CFloat $ viewBlue blendColor)+                 (CFloat $ viewAlpha blendColor)++withBlendings :: BlendSpec+              -> IO a+              -> IO a+withBlendings spec@(BlendSpec {..}) action = do+    old_be_color <- gi gl_BLEND_EQUATION_RGB+    old_be_alpha <- gi gl_BLEND_EQUATION_ALPHA+    old_src_color <- gi gl_BLEND_SRC_RGB+    old_src_alpha <- gi gl_BLEND_SRC_ALPHA+    old_dst_color <- gi gl_BLEND_DST_RGB+    old_dst_alpha <- gi gl_BLEND_DST_ALPHA+    allocaArray 4 $ \color_ptr -> do+        glGetFloatv gl_BLEND_COLOR color_ptr+        r <- peekElemOff color_ptr 0+        g <- peekElemOff color_ptr 1+        b <- peekElemOff color_ptr 2+        a <- peekElemOff color_ptr 3+        finally (setBlendings spec >> action) $ do+            glBlendColor r g b a+            glBlendFuncSeparate old_src_color+                                old_dst_color+                                old_src_alpha+                                old_dst_alpha+            glBlendEquationSeparate old_be_color+                                    old_be_alpha++
+ src/Caramia/Buffer.hs view
@@ -0,0 +1,411 @@+-- | Buffer objects.+--+-- These are chunks of memory (typically) kept on the GPU.+--+-- <https://www.opengl.org/wiki/Buffer_Object>+--++-- TODO: Add glBufferStorage based implementation.+-- OpenGLRaw (1.4.0.0) doesn't have this yet.++{-# LANGUAGE DeriveDataTypeable, NoImplicitPrelude #-}++module Caramia.Buffer+    ( -- * Creation+      newBuffer+    , Buffer()+    , AccessFrequency(..)+    , AccessNature(..)+    , AccessFlags(..)+    , MapFlag(..)+    , BufferCreation(..)+    , defaultBufferCreation+      -- * Invalidation+    , invalidateBuffer+      -- * Manipulation+    , map+    , map2+    , unmap+    , copy+    , withMapping+    , withMapping2+    , uploadVector+      -- * Views+    , viewSize+    , viewAllowedMappings+      -- * Exceptions+    , BufferCorruption(..)+    )+    where++import Caramia.Prelude hiding ( map )+import Caramia.Buffer.Internal++import Caramia.Resource+import Caramia.Internal.OpenGLCApi++import qualified Data.Vector.Storable as V+import qualified Data.Set as S++import Data.Bits+import Foreign+import Control.Exception++-- | The frequency of access to a buffer.+--+-- These correspond to the OpenGL access frequency hints. You can look for them+-- in the OpenGL specification or check this link:+--+-- <https://www.opengl.org/wiki/GLAPI/glBufferData>+data AccessFrequency =+    Stream+  | Static+  | Dynamic+  deriving ( Eq, Ord, Show, Read )++-- | The nature of access to a buffer.+--+-- These correspond to the OpenGL access nature hints. You can look for them+-- in the OpenGL specification or check this link:+--+-- <https://www.opengl.org/wiki/GLAPI/glBufferData>+data AccessNature =+    Draw+  | Read+  | Copy+  deriving ( Eq, Ord, Show, Read )++canMapWith :: AccessFlags -> AccessFlags -> Bool+canMapWith ReadWriteAccess _ = True+canMapWith WriteAccess WriteAccess = True+canMapWith WriteAccess _ = False+canMapWith ReadAccess ReadAccess = True+canMapWith ReadAccess _ = False+canMapWith NoAccess NoAccess = True+canMapWith NoAccess _ = False++toConstant :: AccessFrequency -> AccessNature -> GLuint+toConstant Stream Draw = gl_STREAM_DRAW+toConstant Stream Read = gl_STREAM_READ+toConstant Stream Copy = gl_STREAM_COPY+toConstant Static Draw = gl_STATIC_DRAW+toConstant Static Read = gl_STATIC_READ+toConstant Static Copy = gl_STATIC_COPY+toConstant Dynamic Draw = gl_DYNAMIC_DRAW+toConstant Dynamic Read = gl_DYNAMIC_READ+toConstant Dynamic Copy = gl_DYNAMIC_COPY++toConstantF :: AccessFlags -> GLbitfield+toConstantF ReadAccess      = gl_MAP_READ_BIT+toConstantF WriteAccess     = gl_MAP_WRITE_BIT+toConstantF ReadWriteAccess = gl_MAP_READ_BIT .|. gl_MAP_WRITE_BIT+toConstantF NoAccess        = 0++toConstantMF :: S.Set MapFlag -> GLbitfield+toConstantMF ss+    | S.null ss = 0+    | otherwise =+        if UnSynchronized `S.member` ss+          then gl_MAP_UNSYNCHRONIZED_BIT+          else 0++-- | This data describes how a buffer should behave and what operations can be+-- done with it.+--+-- Accurate description can improve performance.+--+-- For forwards compatibility, it is recommended to use+-- `defaultBufferCreation` and then set the fields you want to change.+data BufferCreation = BufferCreation+    { accessHints :: !(AccessFrequency, AccessNature) -- ^ Hints on how the+                                                      --   buffer will be used.++    , size        :: !Int               -- ^ How large the buffer should be, in+                                        --   bytes.+    , initialData ::+        !(Maybe (Ptr ()))               -- ^ The initial data to be copied to+                                        -- the buffer. Can be `Nothing` in+                                        -- which case the initial contents are+                                        -- undefined.++    , accessFlags :: !AccessFlags       -- ^ What kind of mapping access is+                                        --   allowed. See `map`.+    }++-- | The default buffer creation flags.+--+-- The default attempts to give you the most general (and possibly slowest)+-- buffer. Both read and write access are allowed.+--+-- Default size is 0 which will make `newBuffer` fail if you don't set it.+defaultBufferCreation :: BufferCreation+defaultBufferCreation = BufferCreation {+    accessHints = (Dynamic, Draw)+  , size        = 0+  , initialData = Nothing+  , accessFlags = ReadWriteAccess }++-- | Creates a new buffer according to `BufferCreation` specification.+newBuffer :: BufferCreation+          -> IO Buffer+newBuffer creation+    | size creation <= 0 =+        error "newBuffer: size must be positive."+    | otherwise = mask_ $ do+        resource <-+            newResource createBuffer+                        (\(Buffer_ bufname) -> mglDeleteBuffer bufname)+                        (return ())+        initial_status <- newIORef BufferStatus { mapped = False }+        oi <- atomicModifyIORef' bufferOrdIndex $ \old -> ( old+1, old )+        return Buffer { resource = resource+                      , status = initial_status+                      , viewAllowedMappings = accessFlags creation+                      , viewSize = size creation+                      , ordIndex = oi }+  where+    initial_data = fromMaybe nullPtr (assertNotNull <$> initialData creation)+    safe_size = safeFromIntegral $ size creation+    (usage, access) = accessHints creation++    createBuffer = do+        buf <- mglGenBuffer+        mglNamedBufferData buf+                           safe_size+                           (castPtr initial_data)+                           (toConstant usage access)+        return (Buffer_ buf)++    assertNotNull ptr+        | ptr == nullPtr = error "newBuffer: initial data is a null pointer."+        | otherwise = ptr++-- | Same as `map` but allows more control over mapping.+--+-- @ map = map2 [] @+map2 :: S.Set MapFlag+     -> Int+     -> Int+     -> AccessFlags+     -> Buffer+     -> IO (Ptr ())+map2 map_flags offset num_bytes access_flags buffer+    -- a lot of this implementation is just error checking...++    -- check that offset/num_bytes makes sense+    | offset < 0 || offset >= viewSize buffer ||+      num_bytes <= 0 ||+      offset + num_bytes > viewSize buffer =+          error $ "map: requested mapping has invalid offset " <>+                  "and/or range. " <>+                  "Buffer size is " <> show (viewSize buffer) <> ", " <>+                  "requested mapping was [" <> show offset <> ".." <>+                  show (offset + num_bytes - 1) <> "]."+    | otherwise =+    withResource (resource buffer) $ \(Buffer_ buf) -> mask_ $ do+        bufstatus <- readIORef (status buffer)+        -- make sure buffer has not been alreayd mapped+        when (mapped bufstatus) $+            error "map: buffer is already mapped."+        -- can we really map with these access flags+        unless (canMapWith (viewAllowedMappings buffer) access_flags) $+            error $ "map: attempted to map buffer with " <> show access_flags+                 <> ", allowed mappings are: " <>+                 show (viewAllowedMappings buffer)++        ptr <- mglMapNamedBufferRange+            buf+            (safeFromIntegral offset)+            (safeFromIntegral num_bytes)+            (toConstantF access_flags .|. toConstantMF map_flags)++        -- what if it just mysteriously fails? I think we caught most, if not+        -- all user errors so any other error should be some rare condition+        -- depending on external factors. I hope.+        when (ptr == nullPtr) $+            -- I am so sorry for any user who sees this error message.+            error $ "map: for some reason, mapping a buffer failed. " <>+                    "You might want to check OpenGL debug log."++        atomicModifyIORef' (status buffer) $ \old ->+            ( old { mapped = True }, () )++        return ptr++-- | Maps (part) of a buffer to system memory space.+--+-- The mapping is valid until the buffer is garbage collected (in which case+-- the mapping is automatically unmapped) or when `unmap` is called on the+-- buffer.+--+-- You can not have two mappings going on at the same time.+map :: Int         -- ^ Offset, in bytes, from start of the buffer from where+                   --   to map.+    -> Int         -- ^ How many bytes to map.+    -> AccessFlags -- ^ What access is allowed in the mapping.+    -> Buffer+    -> IO (Ptr ())+map = map2 S.empty++-- | Exception that is thrown from `unmap` when buffer corruption is detected.+--+-- Corruption can happen due to external factors and is system-specific.+data BufferCorruption = BufferCorruption Buffer+                        deriving ( Eq, Typeable )++instance Show BufferCorruption where+    show _ = "BufferCorruption <#Buffer>"++instance Exception BufferCorruption++-- | Unmaps a buffer.+--+-- Does nothing if the buffer was not mapped.+--+-- It is possible that the mapping become corrupt during the time it was+-- mapped. If there was corruption, `BufferCorruption` is thrown in this call.+--+-- Corruption means that the contents of the buffer are now undefined.+unmap :: Buffer -> IO ()+unmap buffer = do+    bufstatus <- readIORef (status buffer)+    when (mapped bufstatus) $+        withResource (resource buffer) $ \(Buffer_ buf) -> mask_ $ do+            result <- mglUnmapNamedBuffer buf+            when (fromIntegral result == gl_FALSE) $+                throwIO $ BufferCorruption buffer+            atomicModifyIORef' (status buffer) $ \old ->+                ( old { mapped = False }, () )++-- | Same as `withMapping` but with map flags.+--+-- See `map2`.+withMapping2 :: S.Set MapFlag+             -> Int+             -> Int+             -> AccessFlags+             -> Buffer+             -> (Ptr () -> IO a)+             -> IO a+withMapping2 map_flags offset num_bytes access_flags buffer action =+    mask $ \restore -> do+        ptr <- map2 map_flags offset num_bytes access_flags buffer+        did_it_work <- try $ restore $ action ptr+        did_unmapping_work <- try $ unmap buffer+        case did_it_work of+            Left exc -> throwIO (exc :: SomeException)+            Right result ->+                case did_unmapping_work of+                    Left no -> throwIO (no :: BufferCorruption)+                    Right () -> return result++-- | A convenience function over map/unmap that automatically unmaps the buffer+-- when done (even in the case of exceptions).+--+-- The arguments to this function are the same as for `map`, except for extra+-- action argument.+--+-- This calls `unmap` which means it can throw `BufferCorruption` when the+-- action is done.+--+-- There is a rare case that can happen if your action throws an exception AND+-- the unmapping throws an exception. Which exception is propagated upwards?+-- If this happens, this call silences `BufferCorruption` exception and+-- re-throws the user exception. This unfortunately means there is no way to+-- know if the buffer was corrupted if you threw an exception inside the+-- action.+withMapping :: Int+            -> Int+            -> AccessFlags+            -> Buffer+            -> (Ptr () -> IO a)   -- ^ The pointer is valid during this action.+            -> IO a+withMapping = withMapping2 S.empty++-- | A convenience function to upload a storable vector to a buffer.+--+-- The buffer must be in an unmapped state and must be write-mappable.+uploadVector :: V.Storable a+             => V.Vector a    -- ^ The vector from which to pull data.+             -> Int           -- ^ Offset, in bytes, to which point in the+                              --   buffer to copy the data.+             -> Buffer+             -> IO ()+uploadVector vec offset buffer =+    V.unsafeWith vec $ \src_ptr ->+        withMapping offset byte_size WriteAccess buffer $ \tgt_ptr ->+            copyBytes tgt_ptr (castPtr src_ptr) byte_size+  where+    byte_size = V.length vec * sizeOf (undefined `asTypeOf` (vec V.! 0))++-- | Copies bytes from one buffer to another.+--+-- The buffers must not be mapped; however this call can bypass the access+-- flags set in `newBuffer`. That is, you can copy data even to a buffer that+-- was set as not writable or copy from a buffer that was set as not readable.+--+-- This is faster than mapping both buffers and then doing a memcpy() style+-- copying in system memory because this call does not require a round-trip to+-- the driver.+--+-- You can use the same buffer for both destination and source but the copying+-- area may not overlap.+copy :: Buffer      -- ^ Destination buffer.+     -> Int         -- ^ Offset in destination buffer.+     -> Buffer      -- ^ Source buffer.+     -> Int         -- ^ Offset in source buffer.+     -> Int         -- ^ How many bytes to copy.+     -> IO ()+copy dst_buffer dst_offset src_buffer src_offset num_bytes+    | dst_offset < 0 ||+      src_offset < 0 ||+      dst_offset + num_bytes > viewSize dst_buffer ||+      src_offset + num_bytes > viewSize src_buffer ||+      num_bytes < 0 =+          error "copy: invalid offsets/byte sizes to make a buffer copy."+    | overlaps = error "copy: copying area overlaps."+    | otherwise =+        withResource (resource dst_buffer) $ \(Buffer_ dst) ->+            withResource (resource src_buffer) $ \(Buffer_ src) -> do+                dst_status <- readIORef (status dst_buffer)+                when (mapped dst_status) $+                    error "copy: destination buffer is mapped."+                src_status <- readIORef (status src_buffer)+                when (mapped src_status) $+                    error "copy: source buffer is mapped."++                when (num_bytes > 0) $+                    mglNamedCopyBufferSubData+                        src+                        dst+                        (safeFromIntegral src_offset)+                        (safeFromIntegral dst_offset)+                        (safeFromIntegral num_bytes)++  where+    overlaps+        | dst_buffer /= src_buffer = False+        | dst_offset + num_bytes - 1 < src_offset ||+          dst_offset > src_offset + num_bytes - 1 = False+        | otherwise = True++-- | Invalidates the contents of a buffer.+--+-- This is you saying: \"I don't care what's in this buffer anymore. You can do+-- whatever you want with it.\".+--+-- The data may be gone or it may not be gone. Use this as a hint to the+-- implementation that you will not use the _current_ contents of the buffer+-- anymore.+--+-- This requires the OpenGL extension \"GL_ARB_invalidate_subdata\" but if this+-- extension is not present, then this simply does nothing.+--+-- See <https://www.opengl.org/wiki/Buffer_Object#Invalidation>.+invalidateBuffer :: Buffer -> IO ()+invalidateBuffer buf = do+    has_it <- has_GL_ARB_invalidate_subdata+    when has_it $+        withResource (resource buf) $ \(Buffer_ name) ->+            glInvalidateBufferData name+
+ src/Caramia/Buffer/Internal.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE NoImplicitPrelude, ViewPatterns, DeriveDataTypeable #-}++module Caramia.Buffer.Internal+    ( Buffer(..)+    , Buffer_(..)+    , BufferStatus(..)+    , AccessFlags(..)+    , MapFlag(..)+    , bufferOrdIndex )+    where++import Caramia.Prelude++import Caramia.Resource+import Caramia.Internal.OpenGLCApi+import System.IO.Unsafe++-- | Buffer data type.+data Buffer = Buffer+    { resource   :: !(Resource Buffer_)+    , status     :: !(IORef BufferStatus)+    , viewAllowedMappings :: !AccessFlags -- ^ Returns the allowed mappings.+    , viewSize   :: !Int -- ^ Returns the size of the buffer, in bytes.+    , ordIndex   :: !Int+    }++bufferOrdIndex :: IORef Int+bufferOrdIndex = unsafePerformIO $ newIORef 0+{-# NOINLINE bufferOrdIndex #-}++instance Ord Buffer where+    (ordIndex -> o1) `compare` (ordIndex -> o2) = o1 `compare` o2++data BufferStatus = BufferStatus+    { mapped :: !Bool }++instance Eq Buffer where+    (resource -> res1) == (resource -> res2) = res1 == res2++newtype Buffer_ = Buffer_ GLuint++-- | Describes a style of mapping.+data AccessFlags =+    ReadAccess      -- ^ The mapping can be read from.+  | WriteAccess     -- ^ The mapping can be written to.+  | ReadWriteAccess -- ^ Both reading and writing can be done.+  | NoAccess        -- ^ No access; you cannot map the buffer at all after+                    --   creation.+  deriving ( Eq, Ord, Show, Read )++-- | Additional mapping flags.+data MapFlag =+    UnSynchronized        -- ^ Map the buffer without synchronization.+                          --   You will have to use synchronization primitives+                          --   to make sure you and OpenGL won't be using+                          --   the buffer at the same time.+  deriving ( Eq, Ord, Show, Read, Typeable )+
+ src/Caramia/Color.hs view
@@ -0,0 +1,100 @@+-- | Color handling.+--++{-# LANGUAGE DeriveDataTypeable, NoImplicitPrelude #-}++module Caramia.Color+    (+    -- * Types+      Color()+    -- * Constructing colors+    , rgba+    -- * Lenses+    , rgbaL+    , redL+    , greenL+    , blueL+    , alphaL+    -- * Views+    , viewRgba+    , viewRed+    , viewGreen+    , viewBlue+    , viewAlpha )+    where++import Caramia.Prelude+import Foreign.Storable+import Foreign.Ptr+import Caramia.Internal.Lens++-- | The color data type.+--+-- This data type says nothing about the color space these values are in. The+-- color space depends on the usage; for example, a framebuffer with sRGB+-- textures attached uses sRGB color space in these color values.+data Color = Color+    { viewRed   :: !Float+    , viewGreen :: !Float+    , viewBlue  :: !Float+    , viewAlpha :: !Float+    }+    deriving ( Eq, Ord, Show, Read, Typeable )++-- | Construct a color from rgba values.+rgba :: Float -> Float -> Float -> Float -> Color+rgba = Color+{-# INLINE rgba #-}++-- | View rgba in a tuple.+viewRgba :: Color -> (Float, Float, Float, Float)+viewRgba (Color r g b a) = (r, g, b, a)+{-# INLINE viewRgba #-}++-- | Lens to all components.+rgbaL :: Lens' Color (Float, Float, Float, Float)+rgbaL = lens viewRgba (\old (r, g, b, a) ->+    old { viewRed = r+        , viewGreen = g+        , viewBlue = b+        , viewAlpha = a })++-- | Lens to red component.+redL :: Lens' Color Float+redL = lens viewRed (\old new -> old { viewRed = new })++-- | Lens to green component.+greenL :: Lens' Color Float+greenL = lens viewGreen (\old new -> old { viewGreen = new })++-- | Lens to blue component.+blueL :: Lens' Color Float+blueL = lens viewBlue (\old new -> old { viewBlue = new })++-- | Lens to alpha component.+alphaL :: Lens' Color Float+alphaL = lens viewAlpha (\old new -> old { viewAlpha = new })++instance Storable Color where+    sizeOf _ = sizeOf (undefined :: Float) * 4+    alignment _ = alignment (undefined :: Float) * 4+    peek ptr = do+        r <- peekElemOff cptr 0 :: IO Float+        g <- peekElemOff cptr 1 :: IO Float+        b <- peekElemOff cptr 2 :: IO Float+        a <- peekElemOff cptr 3 :: IO Float+        return $ Color r g b a+      where+        cptr = castPtr ptr :: Ptr Float+    {-# INLINE peek #-}++    poke ptr (Color r g b a) = do+        pokeElemOff cptr 0 r+        pokeElemOff cptr 1 g+        pokeElemOff cptr 2 b+        pokeElemOff cptr 3 a+      where+        cptr = castPtr ptr :: Ptr Float+    {-# INLINE poke #-}++
+ src/Caramia/Context.hs view
@@ -0,0 +1,205 @@+-- | This module manages OpenGL contexts in Caramia.+--+-- Caramia does not actually have any functionality about creating OpenGL+-- contexts. You need to tell it about them with this module.+--+-- `giveContext` is the most important function in this module. You also want+-- to `runPendingFinalizers` regularly to make sure OpenGL resources are+-- garbage collected.+--++{-# LANGUAGE NoImplicitPrelude, ScopedTypeVariables, DeriveDataTypeable #-}+{-# LANGUAGE CPP, LambdaCase #-}++module Caramia.Context+    (+    -- * Running with an OpenGL context+      giveContext+    -- * Context IDs+    , currentContextID+    , ContextID+    -- * Finalization+    , runPendingFinalizers+    , scheduleFinalizer+    -- * Context local data+    , storeContextLocalData+    , retrieveContextLocalData+    -- * Exceptions+    , TooOldOpenGL(..) )+    where++import Caramia.Prelude+import Caramia.Internal.ContextLocalData+import Caramia.Internal.OpenGLDebug+import Caramia.Internal.FlextGL++import Control.Concurrent+import Control.Exception+import System.IO.Unsafe+import System.Environment+import Graphics.Rendering.OpenGL.Raw.GetProcAddress+import Foreign.Ptr+import Foreign.Storable+import Foreign.Marshal.Alloc++import qualified Data.Map.Strict as M+import qualified Data.IntMap.Strict as IM++-- | An exception that is thrown when the OpenGL version is too old for this+-- library.+data TooOldOpenGL = TooOldOpenGL+                    { wantedVersion :: (Int, Int) -- ^ The OpenGL version this+                                                  --   library needs.+                    , reportedVersion :: (Int, Int)+                    -- ^ The OpenGL version reported by current OpenGL+                    --   context.+                    }+                    deriving ( Eq, Show, Read, Typeable )++instance Exception TooOldOpenGL++-- | Tell Caramia the current thread has an OpenGL context active.+--+-- When the given IO action returns, Caramia will think that the OpenGL context+-- is now gone. It is probably best to actually close the context because this+-- also means OpenGL finalizers will not be run (Caramia thinks they were all+-- released when the OpenGL context went away).+--+-- The context in the IO action is referred to as \'Caramia context\' in this+-- documentation to distinguish it from OpenGL context.+--+-- If the environment variable \'CARAMIA_OPENGL_DEBUG\' is set, then, if+-- \'GL_KHR_debug\' extension is supported, OpenGL debug output is written.+-- Note that you might need a debug OpenGL context for there to be any+-- messages.+--+-- Throws `TooOldOpenGL` if the code detects a context that does not provide+-- OpenGL 3.3.+giveContext :: IO a -> IO a+giveContext action = mask $ \restore -> do+    is_bound_thread <- isCurrentThreadBound+    unless is_bound_thread $+        error $ "giveContext: current thread is not bound. How can it have " <>+                "an OpenGL context?"++    flextInit (\str -> castFunPtrToPtr <$> getProcAddress str)+              (\_ -> return True) >>= \case+        f@(Failure _) -> throwIO f+        _ -> return ()++    checkOpenGLVersion33++    cid <- atomicModifyIORef' nextContextID $ \old -> ( old+1, old )+    tid <- myThreadId+    atomicModifyIORef' runningContexts $ \old_map ->+        ( M.insert tid cid old_map, () )+    finally (restore insides) (flushDebugMessages >> scrapContext)+  where+    insides = do+        should_activate_debug_mode <- isJust <$> lookupEnv "CARAMIA_OPENGL_DEBUG"+        when should_activate_debug_mode activateDebugMode++        -- Enable sRGB framebuffers+        -- There seems to be no reason not to enable it; you can turn off sRGB+        -- handling in other ways.+        glEnable gl_FRAMEBUFFER_SRGB+        glEnable gl_BLEND++        action++checkOpenGLVersion33 :: IO ()+checkOpenGLVersion33 =+    -- You cannot trust OS X to report versions correctly :-(+#ifdef MAC_OPENGL+    return ()+#else+    alloca $ \major_ptr -> alloca $ \minor_ptr -> do+        -- in case glGetIntegerv is completely broken, set initial values for+        -- major and minor pointers+        poke major_ptr 0+        poke minor_ptr 0++        glGetIntegerv gl_MAJOR_VERSION major_ptr+        glGetIntegerv gl_MAJOR_VERSION minor_ptr+        major <- peek major_ptr+        minor <- peek minor_ptr+        unless (major > 3 ||+                (major == 3 && minor >= 3)) $+            throwIO+                TooOldOpenGL { wantedVersion = (3, 3)+                             , reportedVersion = ( fromIntegral major+                                                 , fromIntegral minor )+                             }+#endif++-- | Scraps the current context.+--+-- Not public API.+scrapContext :: IO ()+scrapContext = mask_ $ do+    maybe_cid <- currentContextID+    tid <- myThreadId+    case maybe_cid of+        Nothing -> return ()+        Just cid -> do+            atomicModifyIORef' runningContexts $ \old_map ->+                ( M.delete tid old_map, () )+            atomicModifyIORef' pendingFinalizers $ \old_map ->+                ( IM.delete cid old_map, () )+            atomicModifyIORef' contextLocalData $ \old_map ->+                ( IM.delete cid old_map, () )++-- | Run any pending finalizers in the current Caramia context.+--+-- Does nothing if current thread does not have a Caramia context or there are+-- no pending finalizers.+--+-- If any finalizer throws an exception (asynchronous or synchronous), the+-- Caramia context dies and that exception is propagated upwards.+-- `runPendingFinalizers` itself runs `mask_` to run the finalizers with+-- exceptions masked but you might still receive asynchronous exceptions with,+-- for example, the `MVar` functions.+--+-- A good place to call this is right after or before swapping buffers.+runPendingFinalizers :: IO ()+runPendingFinalizers = mask_ $ do+    maybe_cid <- currentContextID+    case maybe_cid of+        Nothing -> return ()+        Just cid -> do+            finalizers <- atomicModifyIORef' pendingFinalizers $+                IM.delete cid &&&+                IM.findWithDefault (return ())+                                   cid++            -- We scrap the Caramia context if any of these finalizers throw an+            -- exception. The reason is that we cannot expect the OpenGL state+            -- to be consistent anymore.+            result <- try finalizers+            case result of+                Left exc -> scrapContext >> throwIO (exc :: SomeException)+                Right () -> return ()+    flushDebugMessages++-- | Schedules a finalizer to be run in a Caramia context.+--+-- Does nothing if given context is not alive anymore.+--+-- This is typically called from Haskell garbage collector finalizers because+-- they cannot do finalization there (Haskell finalizers are running in the+-- wrong operating system thread).+scheduleFinalizer :: ContextID -> IO () -> IO ()+scheduleFinalizer cid finalizer =+    atomicModifyIORef' pendingFinalizers $ \old ->+        ( IM.insertWith+            (flip (>>))+            cid+            finalizer+            old, () )++-- these are the pending OpenGL finalizers that wait for a time they can be+-- safely run.+pendingFinalizers :: IORef (IM.IntMap (IO ()))+pendingFinalizers = unsafePerformIO $ newIORef IM.empty+{-# NOINLINE pendingFinalizers #-}+
+ src/Caramia/Framebuffer.hs view
@@ -0,0 +1,302 @@+-- | Framebuffers. You can render on them.+--+-- If you come from the OpenGL world, for simplicity, we have combined the+-- concept of draw buffers and color attachments. Nth color attachment is bound+-- exactly to Nth draw buffer. Caramia only talks about draw buffers.+--+-- <https://www.opengl.org/wiki/Framebuffer_Object>+--++{-# LANGUAGE NoImplicitPrelude, ViewPatterns, DeriveDataTypeable #-}++module Caramia.Framebuffer+    (+    -- * Creating framebuffers+      newFramebuffer+    , Framebuffer()+    -- * Specifying texture targets+    , frontTextureTarget+    , mipmapTextureTarget+    , layerTextureTarget+    , TextureTarget()+    , Attachment(..)+    -- * Size query+    , getDimensions+    -- * Clearing framebuffers+    , clear+    , Clearing(..)+    , clearing+    -- * Special framebuffers+    , screenFramebuffer+    -- * Hardware limits+    , getMaximumDrawBuffers+    -- * Views+    , viewTargets )+    where++import Caramia.Prelude+import Caramia.Context+import Caramia.Color+import Caramia.Resource+import Caramia.Texture+import Caramia.Framebuffer.Internal+import qualified Caramia.Texture.Internal as Tex+import Caramia.ImageFormats+import Caramia.Internal.OpenGLCApi+import Control.Exception+import Data.List ( nub )+import Data.Bits+import System.IO.Unsafe+import Foreign.Storable+import Foreign.Marshal.Alloc+import Foreign.Marshal.Array+import Foreign.C.Types+import GHC.Float+import qualified Data.IntSet as IS++-- | Returns the screen framebuffer.+--+-- Note that all `screenFramebuffer`s are equal to each other with `Eq`, even+-- those in unrelated Caramia contexts.+--+-- This makes it easy to check if any framebuffer happens to be the screen+-- framebuffer.+screenFramebuffer :: Framebuffer+screenFramebuffer = ScreenFramebuffer++-- | Make a texture target that is the \"front\" of the given texture.+--+-- This is the most common use case. \"front\" means the first texture in a+-- texture array and the base layer mipmap level.+frontTextureTarget :: Tex.Texture -> TextureTarget+frontTextureTarget tex = TextureTarget {+    attacher = \attachment ->+        withResource (Tex.resource tex) $ \(Tex.Texture_ texname) ->+            glFramebufferTexture+                gl_DRAW_FRAMEBUFFER+                attachment+                texname+                0+  , texture = tex }++-- | Map a specific mipmlayer from a texture.+mipmapTextureTarget :: Tex.Texture+                    -> Int            -- ^ Which mipmap layer?+                    -> TextureTarget+mipmapTextureTarget tex mipmap_layer = TextureTarget {+    attacher = \attachment ->+        withResource (Tex.resource tex) $ \(Tex.Texture_ texname) ->+            glFramebufferTexture+                gl_DRAW_FRAMEBUFFER+                attachment+                texname+                (safeFromIntegral mipmap_layer)+  , texture = tex }++-- | Map a specific mipmap layer of a specific layer in a 3D or array texture.+layerTextureTarget :: Tex.Texture+                   -> Int            -- ^ Which mipmap layer?+                   -> Int            -- ^ Which topological layer?+                   -> TextureTarget+layerTextureTarget tex mipmap_layer topo_layer = TextureTarget {+    attacher = \attachment ->+        withResource (Tex.resource tex) $ \(Tex.Texture_ texname) ->+            glFramebufferTextureLayer+                gl_DRAW_FRAMEBUFFER+                attachment+                texname+                (safeFromIntegral mipmap_layer)+                (safeFromIntegral topo_layer)+  , texture = tex }++runningIndices :: IORef Int+runningIndices = unsafePerformIO $ newIORef 0+{-# NOINLINE runningIndices #-}++toConstantA :: Attachment -> GLenum+toConstantA (ColorAttachment x) = gl_COLOR_ATTACHMENT0 + fromIntegral x+toConstantA DepthAttachment = gl_DEPTH_ATTACHMENT+toConstantA StencilAttachment = gl_STENCIL_ATTACHMENT++-- | Creates a new framebuffer.+newFramebuffer :: [(Attachment, TextureTarget)]+               -> IO Framebuffer+newFramebuffer targets+    | null targets =+        error "newFramebuffer: no texture targets specified."+    | nub (fmap fst targets) /= fmap fst targets =+        error "newFramebuffer: there are duplicate attachments."+    | otherwise = mask_ $ do+        max_bufs <- getMaximumDrawBuffers+        targetsSanityCheck max_bufs++        res <- newResource (creator max_bufs)+                           deleter+                           (return ())+        index <- atomicModifyIORef' runningIndices $ \old ->+            ( old+1, old )+        return Framebuffer { resource = res+                           , ordIndex = index+                           , viewTargets = targets+                           , dimensions = calculatedDimensions+                           , binder = withThisFramebuffer res+                           , setter = setThisFramebuffer res }+  where+    calculatedDimensions@(fw, fh) =+        foldl' (\(lowest_w, lowest_h) (w, h) ->+                   (min lowest_w w, min lowest_h h))+               (maxBound, maxBound)+               (fmap (\(snd -> tex) ->+                         (viewWidth $ texture tex, viewHeight $ texture tex))+                     targets)++    creator max_bufs =+        bracketOnError mglGenFramebuffer+                       mglDeleteFramebuffer $ \fbuf_name -> do+            withBoundDrawFramebuffer fbuf_name $ do+                forM_ targets $ \(index, tex) ->+                    attacher tex (toConstantA index)++                allocaArray max_bufs $ \buf_ptr -> do+                    forM_ [0..max_bufs-1] $ \bufnum ->+                        pokeElemOff buf_ptr bufnum $+                            if IS.member bufnum color_attachments+                                then gl_COLOR_ATTACHMENT0 ++                                     fromIntegral bufnum+                                else gl_NONE+                    glDrawBuffers (fromIntegral max_bufs) buf_ptr++            return $ Framebuffer_ fbuf_name++    color_attachments :: IS.IntSet+    color_attachments =+        foldl' folder IS.empty (fmap fst targets)+      where+        folder :: IS.IntSet -> Attachment -> IS.IntSet+        folder accum (ColorAttachment x) = IS.insert x accum+        folder accum _ = accum++    deleter (Framebuffer_ fbuf_name) =+        mglDeleteFramebuffer fbuf_name++    targetsSanityCheck max_bufs = forM_ targets $ \(attachment, target) -> do+        let format = Tex.imageFormat $ Tex.viewSpecification $ texture target+        unless (isRenderTargettable format) $+            error $ "newFramebuffer: cannot render to " <> show format+        case attachment of+            ColorAttachment x | x < 0 || x >= max_bufs ->+                error $ "newFramebuffer: color attachment " <> show x <>+                        " is out of range. Valid range is [0.." <>+                        show (max_bufs-1) <> "]."+            ColorAttachment _ | not (isColorFormat format) ->+                error $ "newFramebuffer: " <> show format <> " is not a " <>+                        "color format but was attempted to be attached to " <>+                        "attachment " <> show attachment <> "."+            DepthAttachment | not (hasDepthComponent format) ->+                error $ "newFramebuffer: " <> show format <> " has no " <>+                        "depth component but was attempted to be attached " <>+                        "to depth attachment."+            StencilAttachment | not (hasStencilComponent format) ->+                error $ "newFramebuffer: " <> show format <> " has no " <>+                        "stencil component but was attempted to be " <>+                        "attached to stencil attachment."+            _ -> return ()++    setThisFramebuffer res = do+        withResource res $ \(Framebuffer_ fbuf_name) ->+            glBindFramebuffer gl_FRAMEBUFFER fbuf_name+        glViewport 0 0 (fromIntegral fw) (fromIntegral fh)++    withThisFramebuffer res action = mask $ \restore -> do+        old_draw_framebuffer <- gi gl_DRAW_FRAMEBUFFER_BINDING+        old_read_framebuffer <- gi gl_READ_FRAMEBUFFER_BINDING+        allocaArray 4 $ \viewport_ptr -> do+            glGetIntegerv gl_VIEWPORT viewport_ptr+            withResource res $ \(Framebuffer_ fbuf_name) -> do+                glBindFramebuffer gl_FRAMEBUFFER fbuf_name+                x <- peekElemOff viewport_ptr 0+                y <- peekElemOff viewport_ptr 1+                w <- peekElemOff viewport_ptr 2+                h <- peekElemOff viewport_ptr 3+                glViewport 0 0 (fromIntegral fw) (fromIntegral fh)+                finally (restore action) $ do+                    glViewport x y w h+                    glBindFramebuffer gl_DRAW_FRAMEBUFFER old_draw_framebuffer+                    glBindFramebuffer gl_READ_FRAMEBUFFER old_read_framebuffer++-- | Returns the maximum number of draw buffers in the current context.+--+-- Almost all GPUs in the last few years have at least 8.+getMaximumDrawBuffers :: IO Int+getMaximumDrawBuffers = do+    _ <- currentContextID+    -- number of draw buffers+    num_drawbuffers <- gi gl_MAX_DRAW_BUFFERS+    -- number of attachments+    num_attachments <- gi gl_MAX_COLOR_ATTACHMENTS+    return (fromIntegral $ min num_drawbuffers num_attachments)++-- | Specifies what to clear in a `clear` invocation.+--+-- Use `clearing` smart constructor instead for forward-compatibility.+--+-- Each member of this data type is a `Maybe` value; if any value is `Just`+-- then that value is cleared, otherwise it is not touched.+data Clearing = Clearing+    { clearDepth :: !(Maybe Float)+    -- ^ Clear depth buffer to this value.+    , clearStencil :: !(Maybe Int32)+    -- ^ Clear stencil buffer to this value.+    , clearColor :: !(Maybe Color)+    -- ^ Clear (all) color buffers to some color.+    }+    deriving ( Eq, Ord, Show, Read, Typeable )++-- TODO: selective clearing for different color buffers.++-- | Smart constructor for `Clearing`. All members are `Nothing`.+clearing :: Clearing+clearing = Clearing { clearDepth = Nothing+                    , clearStencil = Nothing+                    , clearColor = Nothing }++-- | Clears values in a framebuffer.+clear :: Clearing -> Framebuffer -> IO ()+clear clearing fbuf = withBinding fbuf $ mask_ $+    recColor (clearColor clearing)+  where+    bits = maybe 0 (const gl_COLOR_BUFFER_BIT) (clearColor clearing) .|.+           maybe 0 (const gl_DEPTH_BUFFER_BIT) (clearDepth clearing) .|.+           maybe 0 (const gl_STENCIL_BUFFER_BIT) (clearStencil clearing)++    recColor Nothing = recDepth (clearDepth clearing)+    recColor (Just (viewRgba -> (r, g, b, a))) =+        allocaArray 4 $ \ptr -> do+            glGetFloatv gl_COLOR_CLEAR_VALUE ptr+            glClearColor (CFloat r)+                         (CFloat g)+                         (CFloat b)+                         (CFloat a)+            recDepth (clearDepth clearing)+            nr <- peekElemOff ptr 0+            ng <- peekElemOff ptr 1+            nb <- peekElemOff ptr 2+            na <- peekElemOff ptr 3+            glClearColor (nr :: CFloat) ng nb na++    recDepth Nothing = recStencil (clearStencil clearing)+    recDepth (Just depth) = do+        old_depth <- alloca $ \ptr ->+            glGetDoublev gl_DEPTH_CLEAR_VALUE ptr *> peek ptr+        glClearDepth (CDouble $ float2Double depth)+        recStencil (clearStencil clearing)+        glClearDepth old_depth++    recStencil Nothing = glClear bits+    recStencil (Just stencil) = do+        old_stencil <- alloca $ \ptr ->+            glGetIntegerv gl_STENCIL_CLEAR_VALUE ptr *> peek ptr+        glClearStencil (safeFromIntegral stencil)+        glClear bits+        glClearStencil old_stencil+
+ src/Caramia/Framebuffer/Internal.hs view
@@ -0,0 +1,87 @@+{-# LANGUAGE RankNTypes, NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Framebuffer.Internal where++import Caramia.Prelude++import Caramia.Resource+import Caramia.Internal.OpenGLCApi+import qualified Caramia.Texture.Internal as Tex+import Control.Exception+import Foreign++data Framebuffer =+    ScreenFramebuffer+  | Framebuffer {+        resource :: !(Resource Framebuffer_)+      , ordIndex :: !Int+      , viewTargets :: [(Attachment, TextureTarget)]+      , dimensions :: !(Int, Int)+      , binder :: forall a. IO a -> IO a+      , setter :: IO ()+    }+    deriving ( Typeable )++data Attachment = ColorAttachment !Int+                | DepthAttachment+                | StencilAttachment+                deriving ( Eq, Ord, Show, Read, Typeable )++instance Eq Framebuffer where+    ScreenFramebuffer == ScreenFramebuffer = True+    ScreenFramebuffer == _ = False+    _ == ScreenFramebuffer = False+    fbuf1 == fbuf2 = resource fbuf1 == resource fbuf2++instance Ord Framebuffer where+    ScreenFramebuffer `compare` ScreenFramebuffer = EQ+    ScreenFramebuffer `compare` _ = LT+    _ `compare` ScreenFramebuffer = GT+    fbuf1 `compare` fbuf2 = ordIndex fbuf1 `compare` ordIndex fbuf2++newtype Framebuffer_ = Framebuffer_ GLuint++data TextureTarget = TextureTarget+    { attacher :: GLuint -> IO ()+    , texture :: Tex.Texture }++setBinding :: Framebuffer -> IO ()+setBinding ScreenFramebuffer = do+    (w, h) <- getDimensions ScreenFramebuffer+    glBindFramebuffer gl_FRAMEBUFFER 0+    glViewport 0 0 (fromIntegral w) (fromIntegral h)+setBinding fbuf = setter fbuf++withBinding :: Framebuffer -> IO a -> IO a+withBinding ScreenFramebuffer action =+    allocaArray 4 $ \viewport_ptr -> do+        glGetIntegerv gl_VIEWPORT viewport_ptr+        ox <- peekElemOff viewport_ptr 0+        oy <- peekElemOff viewport_ptr 1+        ow <- peekElemOff viewport_ptr 2+        oh <- peekElemOff viewport_ptr 3+        (w, h) <- getDimensions ScreenFramebuffer+        old_draw <- gi gl_DRAW_FRAMEBUFFER_BINDING+        old_read <- gi gl_READ_FRAMEBUFFER_BINDING+        finally (glBindFramebuffer gl_FRAMEBUFFER 0 >>+                 glViewport 0 0 (fromIntegral w) (fromIntegral h) >>+                 action) $ do+            glViewport ox oy ow oh+            glBindFramebuffer gl_DRAW_FRAMEBUFFER old_draw+            glBindFramebuffer gl_READ_FRAMEBUFFER old_read+withBinding fbuf action = binder fbuf action++-- | Returns the size of a framebuffer.+--+-- This is an `IO` action because it can change for the screen framebuffer.+getDimensions :: Framebuffer -> IO (Int, Int)+getDimensions ScreenFramebuffer =+    allocaArray 4 $ \vptr -> do+        glGetIntegerv gl_VIEWPORT vptr+        w <- peekElemOff vptr 2+        h <- peekElemOff vptr 3+        return (fromIntegral w, fromIntegral h)+getDimensions fbuf = return $ dimensions fbuf+{-# INLINE getDimensions #-}++
+ src/Caramia/ImageFormats.hs view
@@ -0,0 +1,18 @@+module Caramia.ImageFormats+    (+    -- * Image formats+      ImageFormat(..)+    , isRenderTargettable+    , isCompressed+    , isColorFormat+    , isSRGBFormat+    , hasDepthComponent+    , hasStencilComponent+    -- * Specification types+    , SpecificationType(..)+    , sizeOfSpecificationType+    , SpecificationTypeable(..) )+    where++import Caramia.ImageFormats.Internal+
+ src/Caramia/ImageFormats/Internal.hs view
@@ -0,0 +1,328 @@+-- | This module contains data types that describe the data formats of images.+--+-- <https://www.opengl.org/wiki/Image_Format>+--++{-# LANGUAGE DeriveDataTypeable, NoImplicitPrelude #-}++module Caramia.ImageFormats.Internal where++import Caramia.Prelude++import Caramia.Internal.OpenGLCApi+import Foreign.C.Types++-- | Given a format, returns `True` if that format can be rendered to. That is,+-- if it can be one of the targets in a framebuffer.+--+-- This is conservative. Sometimes you may be able to render anyway; however+-- this is not guaranteed by the OpenGL specification.+isRenderTargettable :: ImageFormat -> Bool+isRenderTargettable R8 = True+isRenderTargettable R8I = True+isRenderTargettable R8UI = True+isRenderTargettable R16 = True+isRenderTargettable R16I = True+isRenderTargettable R16UI = True+isRenderTargettable R16F = True+isRenderTargettable R32F = True+isRenderTargettable R32I = True+isRenderTargettable R32UI = True+isRenderTargettable RG8 = True+isRenderTargettable RG8I = True+isRenderTargettable RG8UI = True+isRenderTargettable RG16 = True+isRenderTargettable RG16I = True+isRenderTargettable RG16UI = True+isRenderTargettable RG16F = True+isRenderTargettable RG32F = True+isRenderTargettable RG32I = True+isRenderTargettable RG32UI = True+isRenderTargettable R11F_G11F_B10F = True+isRenderTargettable RGB8 = True+isRenderTargettable RGBA32F = True+isRenderTargettable RGBA32I = True+isRenderTargettable RGBA32UI = True+isRenderTargettable RGBA16 = True+isRenderTargettable RGBA16F = True+isRenderTargettable RGBA16I = True+isRenderTargettable RGBA16UI = True+isRenderTargettable RGBA8 = True+isRenderTargettable RGBA8UI = True+isRenderTargettable SRGB8_ALPHA8 = True+isRenderTargettable RGB10_A2 = True+isRenderTargettable DEPTH_COMPONENT32 = True+isRenderTargettable DEPTH_COMPONENT32F = True+isRenderTargettable DEPTH_COMPONENT24 = True+isRenderTargettable DEPTH_COMPONENT16 = True+isRenderTargettable DEPTH32F_STENCIL8 = True+isRenderTargettable DEPTH24_STENCIL8 = True+isRenderTargettable _ = False++-- | Returns true if the given format is a compressed format.+isCompressed :: ImageFormat -> Bool+isCompressed COMPRESSED_RG_RGTC2 = True+isCompressed COMPRESSED_SIGNED_RG_RGTC2 = True+isCompressed COMPRESSED_RED_RGTC1 = True+isCompressed COMPRESSED_SIGNED_RED_RGTC1 = True+isCompressed COMPRESSED_RGB_S3TC_DXT1 = True+isCompressed COMPRESSED_RGBA_S3TC_DXT1 = True+isCompressed COMPRESSED_RGBA_S3TC_DXT3 = True+isCompressed COMPRESSED_RGBA_S3TC_DXT5 = True+isCompressed COMPRESSED_SRGB_S3TC_DXT1 = True+isCompressed COMPRESSED_SRGB_ALPHA_S3TC_DXT1 = True+isCompressed COMPRESSED_SRGB_ALPHA_S3TC_DXT3 = True+isCompressed COMPRESSED_SRGB_ALPHA_S3TC_DXT5 = True+isCompressed _ = False++-- | Returns true if the given format is a color format.+isColorFormat :: ImageFormat -> Bool+isColorFormat DEPTH_COMPONENT32 = False+isColorFormat DEPTH_COMPONENT32F = False+isColorFormat DEPTH_COMPONENT24 = False+isColorFormat DEPTH_COMPONENT16 = False+isColorFormat DEPTH32F_STENCIL8 = False+isColorFormat DEPTH24_STENCIL8 = False+isColorFormat _ = True++-- | Returns true if the given format has a depth component.+hasDepthComponent :: ImageFormat -> Bool+hasDepthComponent DEPTH_COMPONENT32 = True+hasDepthComponent DEPTH_COMPONENT32F = True+hasDepthComponent DEPTH_COMPONENT24 = True+hasDepthComponent DEPTH_COMPONENT16 = True+hasDepthComponent DEPTH32F_STENCIL8 = True+hasDepthComponent DEPTH24_STENCIL8 = True+hasDepthComponent _ = False++-- | Returns true if the given format has a stencil component.+hasStencilComponent :: ImageFormat -> Bool+hasStencilComponent DEPTH32F_STENCIL8 = True+hasStencilComponent DEPTH24_STENCIL8 = True+hasStencilComponent _ = False++-- | Returns true if the given format uses the sRGB color space.+--+-- If the format is not a color format, returns `False`.+isSRGBFormat :: ImageFormat -> Bool+isSRGBFormat SRGB8_ALPHA8 = True+isSRGBFormat SRGB8 = True+isSRGBFormat COMPRESSED_SRGB_S3TC_DXT1 = True+isSRGBFormat COMPRESSED_SRGB_ALPHA_S3TC_DXT1 = True+isSRGBFormat COMPRESSED_SRGB_ALPHA_S3TC_DXT3 = True+isSRGBFormat COMPRESSED_SRGB_ALPHA_S3TC_DXT5 = True+isSRGBFormat _ = False++-- | All the various internal formats.+--+-- This list corresponds to the OpenGL specification of 3.3, required texture+-- formats (+ S3TC compressed formats). Check the OpenGL specification for+-- explanations on how these formats work.+data ImageFormat =+    R8+  | R8I+  | R8UI+  | R16+  | R16I+  | R16UI+  | R16F+  | R32F+  | R32I+  | R32UI+  | RG8+  | RG8I+  | RG8UI+  | RG16+  | RG16I+  | RG16UI+  | RG16F+  | RG32F+  | RG32I+  | RG32UI+  | R11F_G11F_B10F+  | RGBA32F+  | RGBA32I+  | RGBA32UI+  | RGBA16+  | RGBA16F+  | RGBA16I+  | RGBA16UI+  | RGBA8+  | RGBA8UI+  | SRGB8_ALPHA8+  | RGB10_A2+  | RGB32F+  | RGB32I+  | RGB32UI+  | RGB16F+  | RGB16I+  | RGB16UI+  | RGB16+  | RGB8+  | RGB8I+  | RGB8UI+  | SRGB8+  | RGB9_E5+  | COMPRESSED_RG_RGTC2+  | COMPRESSED_SIGNED_RG_RGTC2+  | COMPRESSED_RED_RGTC1+  | COMPRESSED_SIGNED_RED_RGTC1+  | COMPRESSED_RGB_S3TC_DXT1+  | COMPRESSED_RGBA_S3TC_DXT1+  | COMPRESSED_RGBA_S3TC_DXT3+  | COMPRESSED_RGBA_S3TC_DXT5+  | COMPRESSED_SRGB_S3TC_DXT1+  | COMPRESSED_SRGB_ALPHA_S3TC_DXT1+  | COMPRESSED_SRGB_ALPHA_S3TC_DXT3+  | COMPRESSED_SRGB_ALPHA_S3TC_DXT5+  | DEPTH_COMPONENT32+  | DEPTH_COMPONENT32F+  | DEPTH_COMPONENT24+  | DEPTH_COMPONENT16+  | DEPTH32F_STENCIL8+  | DEPTH24_STENCIL8+  deriving ( Eq, Ord, Show, Read, Typeable )++toConstantIF :: ImageFormat -> GLenum+toConstantIF R8 = gl_R8+toConstantIF R8I = gl_R8I+toConstantIF R8UI = gl_R8UI+toConstantIF R16 = gl_R16+toConstantIF R16I = gl_R16I+toConstantIF R16UI = gl_R16UI+toConstantIF R16F = gl_R16F+toConstantIF R32F = gl_R32F+toConstantIF R32I = gl_R32I+toConstantIF R32UI = gl_R32UI+toConstantIF RG8 = gl_RG8+toConstantIF RG8I = gl_RG8I+toConstantIF RG8UI = gl_RG8UI+toConstantIF RG16 = gl_RG16+toConstantIF RG16I = gl_RG16I+toConstantIF RG16UI = gl_RG16UI+toConstantIF RG16F = gl_RG16F+toConstantIF RG32F = gl_RG32F+toConstantIF RG32I = gl_RG32I+toConstantIF RG32UI = gl_RG32UI+toConstantIF R11F_G11F_B10F = gl_R11F_G11F_B10F+toConstantIF RGBA32F = gl_RGBA32F+toConstantIF RGBA32I = gl_RGBA32I+toConstantIF RGBA32UI = gl_RGBA32UI+toConstantIF RGBA16 = gl_RGBA16+toConstantIF RGBA16F = gl_RGBA16F+toConstantIF RGBA16I = gl_RGBA16I+toConstantIF RGBA16UI = gl_RGBA16UI+toConstantIF RGBA8 = gl_RGBA8+toConstantIF RGBA8UI = gl_RGBA8UI+toConstantIF SRGB8_ALPHA8 = gl_SRGB8_ALPHA8+toConstantIF RGB10_A2 = gl_RGB10_A2+toConstantIF RGB32F = gl_RGB32F+toConstantIF RGB32I = gl_RGB32I+toConstantIF RGB32UI = gl_RGB32UI+toConstantIF RGB16F = gl_RGB16F+toConstantIF RGB16I = gl_RGB16I+toConstantIF RGB16UI = gl_RGB16UI+toConstantIF RGB16 = gl_RGB16+toConstantIF RGB8 = gl_RGB8+toConstantIF RGB8I = gl_RGB8I+toConstantIF RGB8UI = gl_RGB8UI+toConstantIF SRGB8 = gl_SRGB8+toConstantIF RGB9_E5 = gl_RGB9_E5+toConstantIF COMPRESSED_RG_RGTC2 = gl_COMPRESSED_RG_RGTC2+toConstantIF COMPRESSED_SIGNED_RG_RGTC2 = gl_COMPRESSED_SIGNED_RG_RGTC2+toConstantIF COMPRESSED_RED_RGTC1 = gl_COMPRESSED_RED_RGTC1+toConstantIF COMPRESSED_SIGNED_RED_RGTC1 = gl_COMPRESSED_SIGNED_RED_RGTC1+toConstantIF COMPRESSED_RGB_S3TC_DXT1 = gl_COMPRESSED_RGB_S3TC_DXT1_EXT+toConstantIF COMPRESSED_RGBA_S3TC_DXT1 = gl_COMPRESSED_RGBA_S3TC_DXT1_EXT+toConstantIF COMPRESSED_RGBA_S3TC_DXT3 = gl_COMPRESSED_RGBA_S3TC_DXT3_EXT+toConstantIF COMPRESSED_RGBA_S3TC_DXT5 = gl_COMPRESSED_RGBA_S3TC_DXT5_EXT+toConstantIF COMPRESSED_SRGB_S3TC_DXT1 = gl_COMPRESSED_SRGB_S3TC_DXT1_EXT+toConstantIF COMPRESSED_SRGB_ALPHA_S3TC_DXT1 =+    gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT+toConstantIF COMPRESSED_SRGB_ALPHA_S3TC_DXT3 =+    gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT+toConstantIF COMPRESSED_SRGB_ALPHA_S3TC_DXT5 =+    gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT+toConstantIF DEPTH_COMPONENT32 = gl_DEPTH_COMPONENT32+toConstantIF DEPTH_COMPONENT32F = gl_DEPTH_COMPONENT32F+toConstantIF DEPTH_COMPONENT24 = gl_DEPTH_COMPONENT24+toConstantIF DEPTH_COMPONENT16 = gl_DEPTH_COMPONENT16+toConstantIF DEPTH32F_STENCIL8 = gl_DEPTH32F_STENCIL8+toConstantIF DEPTH24_STENCIL8 = gl_DEPTH24_STENCIL8++-- | Specification formats.+--+-- These formats specify the type of the data passed from Haskell to GPU.+data SpecificationType =+    FWord8+  | FWord16+  | FWord32+  | FInt8+  | FInt16+  | FInt32+  | FFloat+  | FHalfFloat+  deriving ( Eq, Ord, Show, Read, Typeable )++toConstantST :: SpecificationType -> GLenum+toConstantST FWord8 = gl_UNSIGNED_BYTE+toConstantST FWord16 = gl_UNSIGNED_SHORT+toConstantST FWord32 = gl_UNSIGNED_INT+toConstantST FInt8 = gl_BYTE+toConstantST FInt16 = gl_SHORT+toConstantST FInt32 = gl_INT+toConstantST FFloat = gl_FLOAT+toConstantST FHalfFloat = gl_HALF_FLOAT++-- TODO: add special interpretation formats to `SpecificationType`.+--++-- | Given a specification format, returns the number of bytes one element+-- uses.+sizeOfSpecificationType :: SpecificationType -> Int+sizeOfSpecificationType FWord8 = 1+sizeOfSpecificationType FWord16 = 2+sizeOfSpecificationType FWord32 = 2+sizeOfSpecificationType FInt8 = 1+sizeOfSpecificationType FInt16 = 2+sizeOfSpecificationType FInt32 = 4+sizeOfSpecificationType FFloat = 4+sizeOfSpecificationType FHalfFloat = 2++-- | Class that turns Haskell types into `SpecificationType`.+class SpecificationTypeable a where+    -- | Returns the corresponding `SpecificationType` for a Haskell type.+    toSpecificationType :: a  -- ^ Used to pass the type; not evaluated.+                        -> SpecificationType++instance SpecificationTypeable Word8 where+    toSpecificationType _ = FWord8++instance SpecificationTypeable Word16 where+    toSpecificationType _ = FWord16++instance SpecificationTypeable Word32 where+    toSpecificationType _ = FWord32++instance SpecificationTypeable Int8 where+    toSpecificationType _ = FInt8++instance SpecificationTypeable Int16 where+    toSpecificationType _ = FInt16++instance SpecificationTypeable Int32 where+    toSpecificationType _ = FInt32++instance SpecificationTypeable CInt where+    toSpecificationType _ = FInt32++instance SpecificationTypeable CUInt where+    toSpecificationType _ = FWord32++instance SpecificationTypeable Float where+    toSpecificationType _ = FFloat++instance SpecificationTypeable CFloat where+    toSpecificationType _ = FFloat++
+ src/Caramia/Internal/ContextLocalData.hs view
@@ -0,0 +1,121 @@+{-# LANGUAGE NoImplicitPrelude, ScopedTypeVariables #-}++module Caramia.Internal.ContextLocalData+    ( storeContextLocalData+    , retrieveContextLocalData+    , currentContextID+    , nextContextID+    , runningContexts+    , contextLocalData+    , ContextID )+    where++import Caramia.Prelude+import qualified Data.IntMap.Strict as IM+import qualified Data.Map.Strict as M+import System.IO.Unsafe+import Data.Dynamic+import Control.Concurrent++-- | The type of a Caramia context ID.+type ContextID = Int++-- currently running contexts, map from thread IDs to context IDs+runningContexts :: IORef (M.Map ThreadId ContextID)+runningContexts = unsafePerformIO $ newIORef M.empty+{-# NOINLINE runningContexts #-}++-- used to give out new unique context IDs+nextContextID :: IORef ContextID+nextContextID = unsafePerformIO $ newIORef 0+{-# NOINLINE nextContextID #-}++-- context local data. This is like poor man's thread local storage but for+-- contexts.+--+-- The `TypeRep` and `Dynamic` lets this module be agnostic to what other+-- modules hang on to thread local data.+--+-- Other modules can specify a type that there should be only one per context.+-- And this type's TypeRep is stored/queried from the map below.+contextLocalData :: IORef (IM.IntMap (M.Map TypeRep Dynamic))+contextLocalData = unsafePerformIO $ newIORef IM.empty+{-# NOINLINE contextLocalData #-}++-- | Returns the current Caramia context ID.+--+-- The context ID is unique between different calls to `giveContext`.+--+-- Returns `Nothing` if there is no context active.+currentContextID :: IO (Maybe ContextID)+currentContextID =+    M.lookup <$> myThreadId <*> readIORef runningContexts+{-# INLINE currentContextID #-}++-- | Stores a context local value.+--+-- The type of the given value is used as a key. This means that if a value of+-- the same type was stored before, that value is thrown away and replaced with+-- this new value you just gave.+--+-- The value is evaluated to WHNF.+--+-- You don't need this function to work with context local data.+-- `retrieveContextLocalData` is sufficient as it also lets you set a default+-- value in case a value was not already set.+--+-- Context local data is wiped to oblivion once `giveContext` ends.+storeContextLocalData :: Typeable a => a -> IO ()+storeContextLocalData value =+    maybe (error "storeContextLocalData: not in a context.")+          (\cid ->+              atomicModifyIORef' contextLocalData $ \old ->+                  ( IM.alter (Just . maybe (M.singleton+                                            (typeOf value)+                                            (toDyn value))+                                           (M.insert (typeOf value)+                                                     (toDyn value)))+                              cid+                              old+                  , () ) )+          =<< currentContextID+{-# INLINE storeContextLocalData #-}++-- | Retrieves a context local value.+--+-- See `storeContextLocalData`.+retrieveContextLocalData :: forall a. Typeable a+                         => IO a  -- ^ Default value generating action; not+                                  -- evaluated if there was already a value+                                  -- stored.+                         -> IO a+retrieveContextLocalData defvalue =+    maybe (error "retrieveContextLocalData: not in a context.")+          (\cid -> do+              -- No need to care about IORef race conditions because all+              -- functions operating on a certain context ID will be+              -- run in the same thread, sequentially.+              snapshot <- readIORef contextLocalData+              case IM.lookup cid snapshot of+                  Nothing -> do+                      val <- dyndefvalue+                      atomicModifyIORef' contextLocalData $ \old ->+                          ( IM.insert cid (M.singleton typ val) old+                          , fromDyn val undefined )+                  Just old_map ->+                      case M.lookup typ old_map of+                          Nothing -> do+                              val <- dyndefvalue+                              atomicModifyIORef' contextLocalData $ \old ->+                                  ( IM.adjust (M.insert typ val)+                                              cid+                                              old+                                  , fromDyn val undefined )+                          Just value -> return (fromDyn value undefined))+          =<< currentContextID+  where+    typ = typeOf (undefined :: a)+    dyndefvalue = toDyn <$> defvalue+{-# INLINEABLE retrieveContextLocalData #-}++
+ src/Caramia/Internal/FlextGL.hs view
@@ -0,0 +1,28572 @@+{-# LANGUAGE CPP, ForeignFunctionInterface, EmptyDataDecls #-}+#ifdef __GLASGOW_HASKELL__+{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}+#endif+-- WARNING: This file was automatically generated+-- Do not edit.++++module Caramia.Internal.FlextGL+    ( flextInit+    , FlextInitResult(..)+    , has_GL_ARB_texture_storage+    , has_GL_KHR_debug+    , has_GL_EXT_direct_state_access+    , has_GL_ARB_buffer_storage+    , has_GL_ARB_separate_shader_objects+    , has_GL_ATI_meminfo+    , has_GL_NVX_gpu_memory_info+    , has_GL_ARB_invalidate_subdata+    , glCullFace+    , glFrontFace+    , glHint+    , glLineWidth+    , glPointSize+    , glPolygonMode+    , glScissor+    , glTexParameterf+    , glTexParameterfv+    , glTexParameteri+    , glTexParameteriv+    , glTexImage1D+    , glTexImage2D+    , glDrawBuffer+    , glClear+    , glClearColor+    , glClearStencil+    , glClearDepth+    , glStencilMask+    , glColorMask+    , glDepthMask+    , glDisable+    , glEnable+    , glFinish+    , glFlush+    , glBlendFunc+    , glLogicOp+    , glStencilFunc+    , glStencilOp+    , glDepthFunc+    , glPixelStoref+    , glPixelStorei+    , glReadBuffer+    , glReadPixels+    , glGetBooleanv+    , glGetDoublev+    , glGetError+    , glGetFloatv+    , glGetIntegerv+    , glGetString+    , glGetTexImage+    , glGetTexParameterfv+    , glGetTexParameteriv+    , glGetTexLevelParameterfv+    , glGetTexLevelParameteriv+    , glIsEnabled+    , glDepthRange+    , glViewport+    , glDrawArrays+    , glDrawElements+    , glPolygonOffset+    , glCopyTexImage1D+    , glCopyTexImage2D+    , glCopyTexSubImage1D+    , glCopyTexSubImage2D+    , glTexSubImage1D+    , glTexSubImage2D+    , glBindTexture+    , glDeleteTextures+    , glGenTextures+    , glIsTexture+    , glDrawRangeElements+    , glTexImage3D+    , glTexSubImage3D+    , glCopyTexSubImage3D+    , glActiveTexture+    , glSampleCoverage+    , glCompressedTexImage3D+    , glCompressedTexImage2D+    , glCompressedTexImage1D+    , glCompressedTexSubImage3D+    , glCompressedTexSubImage2D+    , glCompressedTexSubImage1D+    , glGetCompressedTexImage+    , glBlendFuncSeparate+    , glMultiDrawArrays+    , glMultiDrawElements+    , glPointParameterf+    , glPointParameterfv+    , glPointParameteri+    , glPointParameteriv+    , glBlendColor+    , glBlendEquation+    , glGenQueries+    , glDeleteQueries+    , glIsQuery+    , glBeginQuery+    , glEndQuery+    , glGetQueryiv+    , glGetQueryObjectiv+    , glGetQueryObjectuiv+    , glBindBuffer+    , glDeleteBuffers+    , glGenBuffers+    , glIsBuffer+    , glBufferData+    , glBufferSubData+    , glGetBufferSubData+    , glMapBuffer+    , glUnmapBuffer+    , glGetBufferParameteriv+    , glGetBufferPointerv+    , glBlendEquationSeparate+    , glDrawBuffers+    , glStencilOpSeparate+    , glStencilFuncSeparate+    , glStencilMaskSeparate+    , glAttachShader+    , glBindAttribLocation+    , glCompileShader+    , glCreateProgram+    , glCreateShader+    , glDeleteProgram+    , glDeleteShader+    , glDetachShader+    , glDisableVertexAttribArray+    , glEnableVertexAttribArray+    , glGetActiveAttrib+    , glGetActiveUniform+    , glGetAttachedShaders+    , glGetAttribLocation+    , glGetProgramiv+    , glGetProgramInfoLog+    , glGetShaderiv+    , glGetShaderInfoLog+    , glGetShaderSource+    , glGetUniformLocation+    , glGetUniformfv+    , glGetUniformiv+    , glGetVertexAttribdv+    , glGetVertexAttribfv+    , glGetVertexAttribiv+    , glGetVertexAttribPointerv+    , glIsProgram+    , glIsShader+    , glLinkProgram+    , glShaderSource+    , glUseProgram+    , glUniform1f+    , glUniform2f+    , glUniform3f+    , glUniform4f+    , glUniform1i+    , glUniform2i+    , glUniform3i+    , glUniform4i+    , glUniform1fv+    , glUniform2fv+    , glUniform3fv+    , glUniform4fv+    , glUniform1iv+    , glUniform2iv+    , glUniform3iv+    , glUniform4iv+    , glUniformMatrix2fv+    , glUniformMatrix3fv+    , glUniformMatrix4fv+    , glValidateProgram+    , glVertexAttrib1d+    , glVertexAttrib1dv+    , glVertexAttrib1f+    , glVertexAttrib1fv+    , glVertexAttrib1s+    , glVertexAttrib1sv+    , glVertexAttrib2d+    , glVertexAttrib2dv+    , glVertexAttrib2f+    , glVertexAttrib2fv+    , glVertexAttrib2s+    , glVertexAttrib2sv+    , glVertexAttrib3d+    , glVertexAttrib3dv+    , glVertexAttrib3f+    , glVertexAttrib3fv+    , glVertexAttrib3s+    , glVertexAttrib3sv+    , glVertexAttrib4Nbv+    , glVertexAttrib4Niv+    , glVertexAttrib4Nsv+    , glVertexAttrib4Nub+    , glVertexAttrib4Nubv+    , glVertexAttrib4Nuiv+    , glVertexAttrib4Nusv+    , glVertexAttrib4bv+    , glVertexAttrib4d+    , glVertexAttrib4dv+    , glVertexAttrib4f+    , glVertexAttrib4fv+    , glVertexAttrib4iv+    , glVertexAttrib4s+    , glVertexAttrib4sv+    , glVertexAttrib4ubv+    , glVertexAttrib4uiv+    , glVertexAttrib4usv+    , glVertexAttribPointer+    , glUniformMatrix2x3fv+    , glUniformMatrix3x2fv+    , glUniformMatrix2x4fv+    , glUniformMatrix4x2fv+    , glUniformMatrix3x4fv+    , glUniformMatrix4x3fv+    , glColorMaski+    , glGetBooleani_v+    , glGetIntegeri_v+    , glEnablei+    , glDisablei+    , glIsEnabledi+    , glBeginTransformFeedback+    , glEndTransformFeedback+    , glBindBufferRange+    , glBindBufferBase+    , glTransformFeedbackVaryings+    , glGetTransformFeedbackVarying+    , glClampColor+    , glBeginConditionalRender+    , glEndConditionalRender+    , glVertexAttribIPointer+    , glGetVertexAttribIiv+    , glGetVertexAttribIuiv+    , glVertexAttribI1i+    , glVertexAttribI2i+    , glVertexAttribI3i+    , glVertexAttribI4i+    , glVertexAttribI1ui+    , glVertexAttribI2ui+    , glVertexAttribI3ui+    , glVertexAttribI4ui+    , glVertexAttribI1iv+    , glVertexAttribI2iv+    , glVertexAttribI3iv+    , glVertexAttribI4iv+    , glVertexAttribI1uiv+    , glVertexAttribI2uiv+    , glVertexAttribI3uiv+    , glVertexAttribI4uiv+    , glVertexAttribI4bv+    , glVertexAttribI4sv+    , glVertexAttribI4ubv+    , glVertexAttribI4usv+    , glGetUniformuiv+    , glBindFragDataLocation+    , glGetFragDataLocation+    , glUniform1ui+    , glUniform2ui+    , glUniform3ui+    , glUniform4ui+    , glUniform1uiv+    , glUniform2uiv+    , glUniform3uiv+    , glUniform4uiv+    , glTexParameterIiv+    , glTexParameterIuiv+    , glGetTexParameterIiv+    , glGetTexParameterIuiv+    , glClearBufferiv+    , glClearBufferuiv+    , glClearBufferfv+    , glClearBufferfi+    , glGetStringi+    , glIsRenderbuffer+    , glBindRenderbuffer+    , glDeleteRenderbuffers+    , glGenRenderbuffers+    , glRenderbufferStorage+    , glGetRenderbufferParameteriv+    , glIsFramebuffer+    , glBindFramebuffer+    , glDeleteFramebuffers+    , glGenFramebuffers+    , glCheckFramebufferStatus+    , glFramebufferTexture1D+    , glFramebufferTexture2D+    , glFramebufferTexture3D+    , glFramebufferRenderbuffer+    , glGetFramebufferAttachmentParameteriv+    , glGenerateMipmap+    , glBlitFramebuffer+    , glRenderbufferStorageMultisample+    , glFramebufferTextureLayer+    , glMapBufferRange+    , glFlushMappedBufferRange+    , glBindVertexArray+    , glDeleteVertexArrays+    , glGenVertexArrays+    , glIsVertexArray+    , glDrawArraysInstanced+    , glDrawElementsInstanced+    , glTexBuffer+    , glPrimitiveRestartIndex+    , glCopyBufferSubData+    , glGetUniformIndices+    , glGetActiveUniformsiv+    , glGetActiveUniformName+    , glGetUniformBlockIndex+    , glGetActiveUniformBlockiv+    , glGetActiveUniformBlockName+    , glUniformBlockBinding+    , glDrawElementsBaseVertex+    , glDrawRangeElementsBaseVertex+    , glDrawElementsInstancedBaseVertex+    , glMultiDrawElementsBaseVertex+    , glProvokingVertex+    , glFenceSync+    , glIsSync+    , glDeleteSync+    , glClientWaitSync+    , glWaitSync+    , glGetInteger64v+    , glGetSynciv+    , glGetInteger64i_v+    , glGetBufferParameteri64v+    , glFramebufferTexture+    , glTexImage2DMultisample+    , glTexImage3DMultisample+    , glGetMultisamplefv+    , glSampleMaski+    , glBindFragDataLocationIndexed+    , glGetFragDataIndex+    , glGenSamplers+    , glDeleteSamplers+    , glIsSampler+    , glBindSampler+    , glSamplerParameteri+    , glSamplerParameteriv+    , glSamplerParameterf+    , glSamplerParameterfv+    , glSamplerParameterIiv+    , glSamplerParameterIuiv+    , glGetSamplerParameteriv+    , glGetSamplerParameterIiv+    , glGetSamplerParameterfv+    , glGetSamplerParameterIuiv+    , glQueryCounter+    , glGetQueryObjecti64v+    , glGetQueryObjectui64v+    , glVertexAttribDivisor+    , glVertexAttribP1ui+    , glVertexAttribP1uiv+    , glVertexAttribP2ui+    , glVertexAttribP2uiv+    , glVertexAttribP3ui+    , glVertexAttribP3uiv+    , glVertexAttribP4ui+    , glVertexAttribP4uiv+    , glTexStorage1D+    , glTexStorage2D+    , glTexStorage3D+    , glDebugMessageControl+    , glDebugMessageInsert+    , glDebugMessageCallback+    , glGetDebugMessageLog+    , glPushDebugGroup+    , glPopDebugGroup+    , glObjectLabel+    , glGetObjectLabel+    , glObjectPtrLabel+    , glGetObjectPtrLabel+    , glGetPointerv+    , glDebugMessageControlKHR+    , glDebugMessageInsertKHR+    , glDebugMessageCallbackKHR+    , glGetDebugMessageLogKHR+    , glPushDebugGroupKHR+    , glPopDebugGroupKHR+    , glObjectLabelKHR+    , glGetObjectLabelKHR+    , glObjectPtrLabelKHR+    , glGetObjectPtrLabelKHR+    , glGetPointervKHR+    , glMatrixLoadfEXT+    , glMatrixLoaddEXT+    , glMatrixMultfEXT+    , glMatrixMultdEXT+    , glMatrixLoadIdentityEXT+    , glMatrixRotatefEXT+    , glMatrixRotatedEXT+    , glMatrixScalefEXT+    , glMatrixScaledEXT+    , glMatrixTranslatefEXT+    , glMatrixTranslatedEXT+    , glMatrixFrustumEXT+    , glMatrixOrthoEXT+    , glMatrixPopEXT+    , glMatrixPushEXT+    , glClientAttribDefaultEXT+    , glPushClientAttribDefaultEXT+    , glTextureParameterfEXT+    , glTextureParameterfvEXT+    , glTextureParameteriEXT+    , glTextureParameterivEXT+    , glTextureImage1DEXT+    , glTextureImage2DEXT+    , glTextureSubImage1DEXT+    , glTextureSubImage2DEXT+    , glCopyTextureImage1DEXT+    , glCopyTextureImage2DEXT+    , glCopyTextureSubImage1DEXT+    , glCopyTextureSubImage2DEXT+    , glGetTextureImageEXT+    , glGetTextureParameterfvEXT+    , glGetTextureParameterivEXT+    , glGetTextureLevelParameterfvEXT+    , glGetTextureLevelParameterivEXT+    , glTextureImage3DEXT+    , glTextureSubImage3DEXT+    , glCopyTextureSubImage3DEXT+    , glBindMultiTextureEXT+    , glMultiTexCoordPointerEXT+    , glMultiTexEnvfEXT+    , glMultiTexEnvfvEXT+    , glMultiTexEnviEXT+    , glMultiTexEnvivEXT+    , glMultiTexGendEXT+    , glMultiTexGendvEXT+    , glMultiTexGenfEXT+    , glMultiTexGenfvEXT+    , glMultiTexGeniEXT+    , glMultiTexGenivEXT+    , glGetMultiTexEnvfvEXT+    , glGetMultiTexEnvivEXT+    , glGetMultiTexGendvEXT+    , glGetMultiTexGenfvEXT+    , glGetMultiTexGenivEXT+    , glMultiTexParameteriEXT+    , glMultiTexParameterivEXT+    , glMultiTexParameterfEXT+    , glMultiTexParameterfvEXT+    , glMultiTexImage1DEXT+    , glMultiTexImage2DEXT+    , glMultiTexSubImage1DEXT+    , glMultiTexSubImage2DEXT+    , glCopyMultiTexImage1DEXT+    , glCopyMultiTexImage2DEXT+    , glCopyMultiTexSubImage1DEXT+    , glCopyMultiTexSubImage2DEXT+    , glGetMultiTexImageEXT+    , glGetMultiTexParameterfvEXT+    , glGetMultiTexParameterivEXT+    , glGetMultiTexLevelParameterfvEXT+    , glGetMultiTexLevelParameterivEXT+    , glMultiTexImage3DEXT+    , glMultiTexSubImage3DEXT+    , glCopyMultiTexSubImage3DEXT+    , glEnableClientStateIndexedEXT+    , glDisableClientStateIndexedEXT+    , glGetFloatIndexedvEXT+    , glGetDoubleIndexedvEXT+    , glGetPointerIndexedvEXT+    , glEnableIndexedEXT+    , glDisableIndexedEXT+    , glIsEnabledIndexedEXT+    , glGetIntegerIndexedvEXT+    , glGetBooleanIndexedvEXT+    , glCompressedTextureImage3DEXT+    , glCompressedTextureImage2DEXT+    , glCompressedTextureImage1DEXT+    , glCompressedTextureSubImage3DEXT+    , glCompressedTextureSubImage2DEXT+    , glCompressedTextureSubImage1DEXT+    , glGetCompressedTextureImageEXT+    , glCompressedMultiTexImage3DEXT+    , glCompressedMultiTexImage2DEXT+    , glCompressedMultiTexImage1DEXT+    , glCompressedMultiTexSubImage3DEXT+    , glCompressedMultiTexSubImage2DEXT+    , glCompressedMultiTexSubImage1DEXT+    , glGetCompressedMultiTexImageEXT+    , glMatrixLoadTransposefEXT+    , glMatrixLoadTransposedEXT+    , glMatrixMultTransposefEXT+    , glMatrixMultTransposedEXT+    , glNamedBufferDataEXT+    , glNamedBufferSubDataEXT+    , glMapNamedBufferEXT+    , glUnmapNamedBufferEXT+    , glGetNamedBufferParameterivEXT+    , glGetNamedBufferPointervEXT+    , glGetNamedBufferSubDataEXT+    , glProgramUniform1fEXT+    , glProgramUniform2fEXT+    , glProgramUniform3fEXT+    , glProgramUniform4fEXT+    , glProgramUniform1iEXT+    , glProgramUniform2iEXT+    , glProgramUniform3iEXT+    , glProgramUniform4iEXT+    , glProgramUniform1fvEXT+    , glProgramUniform2fvEXT+    , glProgramUniform3fvEXT+    , glProgramUniform4fvEXT+    , glProgramUniform1ivEXT+    , glProgramUniform2ivEXT+    , glProgramUniform3ivEXT+    , glProgramUniform4ivEXT+    , glProgramUniformMatrix2fvEXT+    , glProgramUniformMatrix3fvEXT+    , glProgramUniformMatrix4fvEXT+    , glProgramUniformMatrix2x3fvEXT+    , glProgramUniformMatrix3x2fvEXT+    , glProgramUniformMatrix2x4fvEXT+    , glProgramUniformMatrix4x2fvEXT+    , glProgramUniformMatrix3x4fvEXT+    , glProgramUniformMatrix4x3fvEXT+    , glTextureBufferEXT+    , glMultiTexBufferEXT+    , glTextureParameterIivEXT+    , glTextureParameterIuivEXT+    , glGetTextureParameterIivEXT+    , glGetTextureParameterIuivEXT+    , glMultiTexParameterIivEXT+    , glMultiTexParameterIuivEXT+    , glGetMultiTexParameterIivEXT+    , glGetMultiTexParameterIuivEXT+    , glProgramUniform1uiEXT+    , glProgramUniform2uiEXT+    , glProgramUniform3uiEXT+    , glProgramUniform4uiEXT+    , glProgramUniform1uivEXT+    , glProgramUniform2uivEXT+    , glProgramUniform3uivEXT+    , glProgramUniform4uivEXT+    , glNamedProgramLocalParameters4fvEXT+    , glNamedProgramLocalParameterI4iEXT+    , glNamedProgramLocalParameterI4ivEXT+    , glNamedProgramLocalParametersI4ivEXT+    , glNamedProgramLocalParameterI4uiEXT+    , glNamedProgramLocalParameterI4uivEXT+    , glNamedProgramLocalParametersI4uivEXT+    , glGetNamedProgramLocalParameterIivEXT+    , glGetNamedProgramLocalParameterIuivEXT+    , glEnableClientStateiEXT+    , glDisableClientStateiEXT+    , glGetFloati_vEXT+    , glGetDoublei_vEXT+    , glGetPointeri_vEXT+    , glNamedProgramStringEXT+    , glNamedProgramLocalParameter4dEXT+    , glNamedProgramLocalParameter4dvEXT+    , glNamedProgramLocalParameter4fEXT+    , glNamedProgramLocalParameter4fvEXT+    , glGetNamedProgramLocalParameterdvEXT+    , glGetNamedProgramLocalParameterfvEXT+    , glGetNamedProgramivEXT+    , glGetNamedProgramStringEXT+    , glNamedRenderbufferStorageEXT+    , glGetNamedRenderbufferParameterivEXT+    , glNamedRenderbufferStorageMultisampleEXT+    , glNamedRenderbufferStorageMultisampleCoverageEXT+    , glCheckNamedFramebufferStatusEXT+    , glNamedFramebufferTexture1DEXT+    , glNamedFramebufferTexture2DEXT+    , glNamedFramebufferTexture3DEXT+    , glNamedFramebufferRenderbufferEXT+    , glGetNamedFramebufferAttachmentParameterivEXT+    , glGenerateTextureMipmapEXT+    , glGenerateMultiTexMipmapEXT+    , glFramebufferDrawBufferEXT+    , glFramebufferDrawBuffersEXT+    , glFramebufferReadBufferEXT+    , glGetFramebufferParameterivEXT+    , glNamedCopyBufferSubDataEXT+    , glNamedFramebufferTextureEXT+    , glNamedFramebufferTextureLayerEXT+    , glNamedFramebufferTextureFaceEXT+    , glTextureRenderbufferEXT+    , glMultiTexRenderbufferEXT+    , glVertexArrayVertexOffsetEXT+    , glVertexArrayColorOffsetEXT+    , glVertexArrayEdgeFlagOffsetEXT+    , glVertexArrayIndexOffsetEXT+    , glVertexArrayNormalOffsetEXT+    , glVertexArrayTexCoordOffsetEXT+    , glVertexArrayMultiTexCoordOffsetEXT+    , glVertexArrayFogCoordOffsetEXT+    , glVertexArraySecondaryColorOffsetEXT+    , glVertexArrayVertexAttribOffsetEXT+    , glVertexArrayVertexAttribIOffsetEXT+    , glEnableVertexArrayEXT+    , glDisableVertexArrayEXT+    , glEnableVertexArrayAttribEXT+    , glDisableVertexArrayAttribEXT+    , glGetVertexArrayIntegervEXT+    , glGetVertexArrayPointervEXT+    , glGetVertexArrayIntegeri_vEXT+    , glGetVertexArrayPointeri_vEXT+    , glMapNamedBufferRangeEXT+    , glFlushMappedNamedBufferRangeEXT+    , glNamedBufferStorageEXT+    , glClearNamedBufferDataEXT+    , glClearNamedBufferSubDataEXT+    , glNamedFramebufferParameteriEXT+    , glGetNamedFramebufferParameterivEXT+    , glProgramUniform1dEXT+    , glProgramUniform2dEXT+    , glProgramUniform3dEXT+    , glProgramUniform4dEXT+    , glProgramUniform1dvEXT+    , glProgramUniform2dvEXT+    , glProgramUniform3dvEXT+    , glProgramUniform4dvEXT+    , glProgramUniformMatrix2dvEXT+    , glProgramUniformMatrix3dvEXT+    , glProgramUniformMatrix4dvEXT+    , glProgramUniformMatrix2x3dvEXT+    , glProgramUniformMatrix2x4dvEXT+    , glProgramUniformMatrix3x2dvEXT+    , glProgramUniformMatrix3x4dvEXT+    , glProgramUniformMatrix4x2dvEXT+    , glProgramUniformMatrix4x3dvEXT+    , glTextureBufferRangeEXT+    , glTextureStorage1DEXT+    , glTextureStorage2DEXT+    , glTextureStorage3DEXT+    , glTextureStorage2DMultisampleEXT+    , glTextureStorage3DMultisampleEXT+    , glVertexArrayBindVertexBufferEXT+    , glVertexArrayVertexAttribFormatEXT+    , glVertexArrayVertexAttribIFormatEXT+    , glVertexArrayVertexAttribLFormatEXT+    , glVertexArrayVertexAttribBindingEXT+    , glVertexArrayVertexBindingDivisorEXT+    , glVertexArrayVertexAttribLOffsetEXT+    , glTexturePageCommitmentEXT+    , glVertexArrayVertexAttribDivisorEXT+    , glBufferStorage+    , glUseProgramStages+    , glActiveShaderProgram+    , glCreateShaderProgramv+    , glBindProgramPipeline+    , glDeleteProgramPipelines+    , glGenProgramPipelines+    , glIsProgramPipeline+    , glGetProgramPipelineiv+    , glProgramUniform1i+    , glProgramUniform1iv+    , glProgramUniform1f+    , glProgramUniform1fv+    , glProgramUniform1d+    , glProgramUniform1dv+    , glProgramUniform1ui+    , glProgramUniform1uiv+    , glProgramUniform2i+    , glProgramUniform2iv+    , glProgramUniform2f+    , glProgramUniform2fv+    , glProgramUniform2d+    , glProgramUniform2dv+    , glProgramUniform2ui+    , glProgramUniform2uiv+    , glProgramUniform3i+    , glProgramUniform3iv+    , glProgramUniform3f+    , glProgramUniform3fv+    , glProgramUniform3d+    , glProgramUniform3dv+    , glProgramUniform3ui+    , glProgramUniform3uiv+    , glProgramUniform4i+    , glProgramUniform4iv+    , glProgramUniform4f+    , glProgramUniform4fv+    , glProgramUniform4d+    , glProgramUniform4dv+    , glProgramUniform4ui+    , glProgramUniform4uiv+    , glProgramUniformMatrix2fv+    , glProgramUniformMatrix3fv+    , glProgramUniformMatrix4fv+    , glProgramUniformMatrix2dv+    , glProgramUniformMatrix3dv+    , glProgramUniformMatrix4dv+    , glProgramUniformMatrix2x3fv+    , glProgramUniformMatrix3x2fv+    , glProgramUniformMatrix2x4fv+    , glProgramUniformMatrix4x2fv+    , glProgramUniformMatrix3x4fv+    , glProgramUniformMatrix4x3fv+    , glProgramUniformMatrix2x3dv+    , glProgramUniformMatrix3x2dv+    , glProgramUniformMatrix2x4dv+    , glProgramUniformMatrix4x2dv+    , glProgramUniformMatrix3x4dv+    , glProgramUniformMatrix4x3dv+    , glValidateProgramPipeline+    , glGetProgramPipelineInfoLog+    , glInvalidateTexSubImage+    , glInvalidateTexImage+    , glInvalidateBufferSubData+    , glInvalidateBufferData+    , glInvalidateFramebuffer+    , glInvalidateSubFramebuffer+    , gl_UNSIGNED_INT_10_10_10_2_EXT+    , gl_ACTIVE_RESOURCES+    , gl_MAX_GEOMETRY_SHADER_INVOCATIONS+    , gl_RESTART_PATH_NV+    , gl_MAX_DEEP_3D_TEXTURE_DEPTH_NV+    , gl_PACK_SKIP_IMAGES+    , gl_IMAGE_CLASS_2_X_16+    , gl_FRAMEBUFFER_COMPLETE+    , gl_HSL_LUMINOSITY_NV+    , gl_IMAGE_BINDING_LAYERED_EXT+    , gl_ZOOM_Y+    , gl_TEXTURE_LUMINANCE_TYPE_ARB+    , gl_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB+    , gl_TEXTURE_HEIGHT+    , gl_OUTPUT_TEXTURE_COORD0_EXT+    , gl_FLOAT_CLEAR_COLOR_VALUE_NV+    , gl_LIGHT_MODEL_AMBIENT+    , gl_INT16_VEC3_NV+    , gl_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV+    , gl_MATRIX6_NV+    , gl_COMPUTE_PROGRAM_NV+    , gl_SCALED_RESOLVE_FASTEST_EXT+    , gl_REPLACEMENT_CODE_ARRAY_SUN+    , gl_TEXTURE_DT_SIZE_NV+    , gl_NUM_SPARSE_LEVELS_ARB+    , gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR+    , gl_NO_ERROR+    , gl_INTERNALFORMAT_ALPHA_TYPE+    , gl_FONT_HEIGHT_BIT_NV+    , gl_TANGENT_ARRAY_POINTER_EXT+    , gl_LOCAL_CONSTANT_VALUE_EXT+    , gl_READ_WRITE+    , gl_TEXTURE_2D+    , gl_UNSIGNED_INT_2_10_10_10_REV_EXT+    , gl_TEXTURE_WRAP_R+    , gl_FLOAT_MAT4x2+    , gl_MAX_COMPUTE_WORK_GROUP_SIZE+    , gl_POLYGON_OFFSET_CLAMP_EXT+    , gl_SYNC_FLUSH_COMMANDS_BIT+    , gl_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB+    , gl_INT_IMAGE_BUFFER+    , gl_VERTEX_ATTRIB_ARRAY_TYPE+    , gl_ONE+    , gl_COLOR_CLEAR_UNCLAMPED_VALUE_ATI+    , gl_TRANSLATE_X_NV+    , gl_HI_SCALE_NV+    , gl_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT+    , gl_HILO_NV+    , gl_TRIANGLES+    , gl_LINEARLIGHT_NV+    , gl_MAX_3D_TEXTURE_SIZE_OES+    , gl_ANY_SAMPLES_PASSED_CONSERVATIVE+    , gl_UNIFORM_BLOCK_BINDING+    , gl_MAX_TESS_CONTROL_INPUT_COMPONENTS+    , gl_TEXTURE_ALPHA_TYPE_ARB+    , gl_MAX_CONVOLUTION_HEIGHT+    , gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS+    , gl_DEPTH_BUFFER_BIT5_QCOM+    , gl_PROGRAM_TEX_INDIRECTIONS_ARB+    , gl_BLUE+    , gl_RGBA_S3TC+    , gl_DECR+    , gl_MAJOR_VERSION+    , gl_ARRAY_STRIDE+    , gl_CONSTANT_COLOR1_NV+    , gl_SAMPLES_EXT+    , gl_MAX_SAMPLES_APPLE+    , gl_COLOR_ARRAY_SIZE+    , gl_SAMPLE_ALPHA_TO_MASK_SGIS+    , gl_DUP_LAST_CUBIC_CURVE_TO_NV+    , gl_TEXTURE10+    , gl_R1UI_T2F_C4F_N3F_V3F_SUN+    , gl_MAX_VARYING_COMPONENTS+    , gl_DRAW_BUFFER7_EXT+    , gl_MAX_COMBINED_ATOMIC_COUNTERS+    , gl_PROGRAM_ERROR_STRING_ARB+    , gl_TRACE_ALL_BITS_MESA+    , gl_DEPTH_CLAMP_NV+    , gl_REDUCE+    , gl_UNSIGNED_SHORT_4_4_4_4+    , gl_SKIP_COMPONENTS1_NV+    , gl_PIXEL_TILE_CACHE_INCREMENT_SGIX+    , gl_COLOR_ARRAY+    , gl_STATIC_VERTEX_ARRAY_IBM+    , gl_INDEX_BIT_PGI+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT+    , gl_ETC1_SRGB8_NV+    , gl_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS+    , gl_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT+    , gl_LIGHT_MODEL_COLOR_CONTROL_EXT+    , gl_PATCH_DEFAULT_OUTER_LEVEL_EXT+    , gl_SAMPLER_CUBE_ARB+    , gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT+    , gl_STORAGE_PRIVATE_APPLE+    , gl_MAP1_TEXTURE_COORD_2+    , gl_REPLACEMENT_CODE_ARRAY_STRIDE_SUN+    , gl_VERTEX_ATTRIB_ARRAY8_NV+    , gl_LUMINANCE16F_ARB+    , gl_DEPTH_COMPONENT32F_NV+    , gl_MAX_VERTEX_BINDABLE_UNIFORMS_EXT+    , gl_MATRIX28_ARB+    , gl_SYNC_FLUSH_COMMANDS_BIT_APPLE+    , gl_READ_FRAMEBUFFER_BINDING_ANGLE+    , gl_FOG_COORDINATE_ARRAY_TYPE+    , gl_RGBA32UI_EXT+    , gl_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG+    , gl_2_BYTES_NV+    , gl_TEXTURE_HI_SIZE_NV+    , gl_PACK_SWAP_BYTES+    , gl_EVAL_FRACTIONAL_TESSELLATION_NV+    , gl_RG16+    , gl_SWIZZLE_STR_ATI+    , gl_CON_6_ATI+    , gl_PATH_FOG_GEN_MODE_NV+    , gl_SRGB8_ALPHA8_EXT+    , gl_COMPRESSED_SLUMINANCE_ALPHA_EXT+    , gl_TEXTURE_COMPARE_FUNC_EXT+    , gl_UNIFORM_MATRIX_STRIDE+    , gl_INVALID_OPERATION+    , gl_DRAW_BUFFER4_ATI+    , gl_BYTE+    , gl_SECONDARY_COLOR_ARRAY_POINTER+    , gl_TEXTURE_CUBE_MAP_POSITIVE_X+    , gl_TEXTURE_2D_ARRAY+    , gl_OFFSET_TEXTURE_MATRIX_NV+    , gl_FLOAT_MAT2x4+    , gl_REG_31_ATI+    , gl_DEBUG_TYPE_PORTABILITY+    , gl_SAMPLER_2D_ARB+    , gl_DRAW_BUFFER11+    , gl_MAX_COMPUTE_WORK_GROUP_INVOCATIONS+    , gl_TEXTURE5_ARB+    , gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT+    , gl_COLOR_TABLE_SCALE+    , gl_POINT_FADE_THRESHOLD_SIZE_SGIS+    , gl_MAX_SPARSE_3D_TEXTURE_SIZE_ARB+    , gl_ACCUM_CLEAR_VALUE+    , gl_OPERAND0_ALPHA_EXT+    , gl_QUERY_NO_WAIT+    , gl_PRIMITIVE_RESTART+    , gl_STENCIL_ATTACHMENT_OES+    , gl_BUFFER_USAGE+    , gl_COLOR_TABLE_BLUE_SIZE+    , gl_VERTEX_ARRAY_SIZE_EXT+    , gl_ALPHA8+    , gl_PROXY_TEXTURE_2D+    , gl_HALF_BIT_ATI+    , gl_TRANSPOSE_MODELVIEW_MATRIX+    , gl_DRAW_BUFFER3+    , gl_4PASS_2_SGIS+    , gl_MAX_GEOMETRY_OUTPUT_COMPONENTS+    , gl_SAMPLER_2D_ARRAY_SHADOW_EXT+    , gl_TEXTURE_FORMAT_QCOM+    , gl_RGB16_SNORM+    , gl_DRAW_BUFFER8_NV+    , gl_AUX_BUFFERS+    , gl_CONVOLUTION_HINT_SGIX+    , gl_FOG_COLOR+    , gl_COLOR_TABLE_RED_SIZE_SGI+    , gl_FUNC_SUBTRACT_OES+    , gl_LUMINANCE_ALPHA16F_ARB+    , gl_MODELVIEW10_ARB+    , gl_LOGIC_OP+    , gl_PROGRAM_NATIVE_INSTRUCTIONS_ARB+    , gl_SOURCE0_ALPHA_EXT+    , gl_INDEX_SHIFT+    , gl_PIXEL_FRAGMENT_RGB_SOURCE_SGIS+    , gl_RG32F_EXT+    , gl_GEOMETRY_LINKED_VERTICES_OUT_EXT+    , gl_STACK_UNDERFLOW_KHR+    , gl_TESS_GEN_POINT_MODE_EXT+    , gl_BUFFER_ACCESS_ARB+    , gl_DOT_PRODUCT_NV+    , gl_INVERTED_SCREEN_W_REND+    , gl_REG_11_ATI+    , gl_MAX_FRAMEZOOM_FACTOR_SGIX+    , gl_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD+    , gl_MATRIX20_ARB+    , gl_EVAL_VERTEX_ATTRIB1_NV+    , gl_COLOR_ATTACHMENT10_NV+    , gl_OUTPUT_TEXTURE_COORD28_EXT+    , gl_MAX_TEXTURE_COORDS_ARB+    , gl_COLOR_ARRAY_PARALLEL_POINTERS_INTEL+    , gl_MAX_COMBINED_SHADER_OUTPUT_RESOURCES+    , gl_RENDERBUFFER_BLUE_SIZE+    , gl_MULTISAMPLE_BIT+    , gl_CURRENT_PROGRAM+    , gl_AUX_DEPTH_STENCIL_APPLE+    , gl_LUMINANCE8_ALPHA8_EXT+    , gl_VIDEO_CAPTURE_SURFACE_ORIGIN_NV+    , gl_INTERLACE_OML+    , gl_REG_27_ATI+    , gl_UNSIGNED_INT_24_8_OES+    , gl_COMBINER_AB_OUTPUT_NV+    , gl_CURRENT_RASTER_INDEX+    , gl_SYNC_FENCE_APPLE+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT+    , gl_MAX_TEXTURE_SIZE+    , gl_TEXTURE24+    , gl_STENCIL_BACK_FUNC+    , gl_LUMINANCE12+    , gl_PARAMETER_BUFFER_ARB+    , gl_AUX2+    , gl_SLICE_ACCUM_SUN+    , gl_COLOR_TABLE_ALPHA_SIZE+    , gl_TEXTURE_CUBE_MAP_POSITIVE_X_EXT+    , gl_DRAW_FRAMEBUFFER_BINDING_ANGLE+    , gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER+    , gl_SUBTRACT+    , gl_MAX_PROGRAM_IF_DEPTH_NV+    , gl_T2F_C4F_N3F_V3F+    , gl_ACTIVE_SUBROUTINE_UNIFORMS+    , gl_EMBOSS_LIGHT_NV+    , gl_POINT_SIZE_RANGE+    , gl_GEOMETRY_LINKED_OUTPUT_TYPE_EXT+    , gl_CLAMP_TO_BORDER+    , gl_TEXTURE_BUFFER_OFFSET_EXT+    , gl_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV+    , gl_COMPRESSED_INTENSITY+    , gl_MAX_PROGRAM_OUTPUT_VERTICES_NV+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES+    , gl_MAX_PROGRAM_ATTRIBS_ARB+    , gl_POST_COLOR_MATRIX_GREEN_SCALE_SGI+    , gl_TEXTURE_3D_BINDING_EXT+    , gl_SHADER_STORAGE_BUFFER_START+    , gl_MAP2_INDEX+    , gl_CONSTANT_COLOR_EXT+    , gl_RG32UI+    , gl_BGRA+    , gl_FRAGMENT_DEPTH_EXT+    , gl_GENERATE_MIPMAP_HINT_SGIS+    , gl_DIFFERENCE_NV+    , gl_UNSIGNED_SHORT_1_15_REV_MESA+    , gl_PROGRAM_BINARY_RETRIEVABLE_HINT+    , gl_RGBA32I+    , gl_UNSIGNED_INT_8_8_8_8+    , gl_DOMAIN+    , gl_COLOR_MATRIX+    , gl_PROGRAM_NATIVE_ATTRIBS_ARB+    , gl_OP_ROUND_EXT+    , gl_VIEW_CLASS_96_BITS+    , gl_TEXTURE_WRAP_R_OES+    , gl_VERTEX_ARRAY_TYPE+    , gl_VIDEO_BUFFER_INTERNAL_FORMAT_NV+    , gl_PIXEL_MAP_R_TO_R_SIZE+    , gl_UNSIGNED_NORMALIZED_ARB+    , gl_UNSIGNED_INT8_VEC3_NV+    , gl_COMPRESSED_RGBA8_ETC2_EAC_OES+    , gl_HI_BIAS_NV+    , gl_SECONDARY_COLOR_ARRAY_EXT+    , gl_BUFFER_MAP_OFFSET+    , gl_LUMINANCE4_ALPHA4_OES+    , gl_FORMAT_SUBSAMPLE_244_244_OML+    , gl_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA+    , gl_PLUS_CLAMPED_ALPHA_NV+    , gl_COLOR_ATTACHMENT0_NV+    , gl_COMPRESSED_RGB_S3TC_DXT1_EXT+    , gl_GEOMETRY_OUTPUT_TYPE+    , gl_INTENSITY8_EXT+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT+    , gl_COMPRESSED_RED_GREEN_RGTC2_EXT+    , gl_DEBUG_SOURCE_API_KHR+    , gl_BLEND_PREMULTIPLIED_SRC_NV+    , gl_CLIENT_STORAGE_BIT+    , gl_INTENSITY12_EXT+    , gl_MATRIX_INDEX_ARRAY_STRIDE_OES+    , gl_CURRENT_RASTER_SECONDARY_COLOR+    , gl_REPLACE+    , gl_LINEAR+    , gl_COMBINER_INPUT_NV+    , gl_TRANSFORM_FEEDBACK_VARYINGS+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES+    , gl_IMAGE_BINDING_ACCESS+    , gl_NUM_LOOPBACK_COMPONENTS_ATI+    , gl_ARRAY_ELEMENT_LOCK_COUNT_EXT+    , gl_REPLACEMENT_CODE_ARRAY_POINTER_SUN+    , gl_TEXTURE_4DSIZE_SGIS+    , gl_COUNTER_RANGE_AMD+    , gl_RGB8_OES+    , gl_ALPHA16F_EXT+    , gl_C4F_N3F_V3F+    , gl_NEAREST_MIPMAP_LINEAR+    , gl_DEBUG_SEVERITY_LOW_KHR+    , gl_DISCARD_ATI+    , gl_LOCAL_CONSTANT_DATATYPE_EXT+    , gl_MAX_GEOMETRY_INPUT_COMPONENTS_EXT+    , gl_LOWER_LEFT+    , gl_RENDERBUFFER_HEIGHT_OES+    , gl_SPRITE_MODE_SGIX+    , gl_REPLACEMENT_CODE_ARRAY_TYPE_SUN+    , gl_UNSIGNED_INT8_VEC2_NV+    , gl_NONE_OES+    , gl_POINT_SIZE_MIN_ARB+    , gl_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV+    , gl_RENDERBUFFER_DEPTH_SIZE_EXT+    , gl_BUFFER_MAP_LENGTH+    , gl_WRITE_ONLY+    , gl_NEAREST_CLIPMAP_NEAREST_SGIX+    , gl_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV+    , gl_ALREADY_SIGNALED_APPLE+    , gl_REPLICATE_BORDER+    , gl_SUBPIXEL_BITS+    , gl_ALPHA_MIN_SGIX+    , gl_BLUE_BIT_ATI+    , gl_UNSIGNED_INT_IMAGE_2D_EXT+    , gl_TRANSFORM_FEEDBACK_VARYINGS_EXT+    , gl_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT+    , gl_PIXEL_COUNTER_BITS_NV+    , gl_422_REV_AVERAGE_EXT+    , gl_TEXTURE_RESIDENT_EXT+    , gl_STENCIL_WRITEMASK+    , gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES+    , gl_FLOAT_VEC3_ARB+    , gl_COMPRESSED_SRGB_ALPHA_BPTC_UNORM+    , gl_DYNAMIC_STORAGE_BIT+    , gl_DRAW_FRAMEBUFFER_BINDING_APPLE+    , gl_CLIP_PLANE4_IMG+    , gl_CON_26_ATI+    , gl_COMPRESSED_SIGNED_R11_EAC_OES+    , gl_LINES_ADJACENCY_EXT+    , gl_AUTO_GENERATE_MIPMAP+    , gl_OP_EXP_BASE_2_EXT+    , gl_ATTRIB_STACK_DEPTH+    , gl_ALPHA32F_EXT+    , gl_KEEP+    , gl_TEXTURE_FILTER4_SIZE_SGIS+    , gl_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT+    , gl_INT_VEC3+    , gl_MATRIX_MODE+    , gl_UNSIGNED_NORMALIZED+    , gl_DEBUG_PRINT_MESA+    , gl_DST_OUT_NV+    , gl_CLEAR_BUFFER+    , gl_COMBINER_SCALE_NV+    , gl_WRITE_ONLY_OES+    , gl_422_AVERAGE_EXT+    , gl_COLOR_INDEX12_EXT+    , gl_COLOR_BUFFER_BIT0_QCOM+    , gl_CAVEAT_SUPPORT+    , gl_BLUE_INTEGER+    , gl_IUI_N3F_V2F_EXT+    , gl_VERTEX_DATA_HINT_PGI+    , gl_REG_13_ATI+    , gl_NEGATIVE_ONE_EXT+    , gl_CON_16_ATI+    , gl_TEXTURE_EXTERNAL_OES+    , gl_SHADER_TYPE+    , gl_OVERLAY_KHR+    , gl_LUMINANCE6_ALPHA2_EXT+    , gl_COLOR_TABLE_SGI+    , gl_TEXTURE_STENCIL_SIZE_EXT+    , gl_NEAREST+    , gl_RGB8I+    , gl_TEXTURE_SPARSE_ARB+    , gl_MATRIX9_ARB+    , gl_TEXTURE_TARGET+    , gl_SECONDARY_COLOR_ARRAY_TYPE_EXT+    , gl_RENDERER+    , gl_TEXTURE_BINDING_BUFFER+    , gl_INT_VEC3_ARB+    , gl_MATRIX12_ARB+    , gl_VERTEX_ATTRIB_ARRAY_ENABLED+    , gl_RENDERBUFFER_SAMPLES_NV+    , gl_COLOR_ATTACHMENT1_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE+    , gl_LINEAR_DETAIL_SGIS+    , gl_CURRENT_RASTER_POSITION_VALID+    , gl_LINEAR_DETAIL_COLOR_SGIS+    , gl_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT+    , gl_POINT_SIZE_MIN_EXT+    , gl_GPU_DISJOINT_EXT+    , gl_LIGHT_MODEL_COLOR_CONTROL+    , gl_MAX_TESS_PATCH_COMPONENTS+    , gl_CURRENT_PALETTE_MATRIX_OES+    , gl_SAMPLES_SGIS+    , gl_FUNC_REVERSE_SUBTRACT_OES+    , gl_TEXTURE13_ARB+    , gl_SMOOTH_CUBIC_CURVE_TO_NV+    , gl_COMPRESSED_RGBA_ASTC_3x3x3_OES+    , gl_MODELVIEW15_ARB+    , gl_EYE_PLANE_ABSOLUTE_NV+    , gl_READ_FRAMEBUFFER_BINDING_NV+    , gl_RENDERBUFFER_RED_SIZE+    , gl_PIXEL_PACK_BUFFER_BINDING_EXT+    , gl_MAX_RENDERBUFFER_SIZE+    , gl_DOUBLE_MAT4_EXT+    , gl_COMPRESSED_R11_EAC+    , gl_INT_IMAGE_2D_RECT+    , gl_MAD_ATI+    , gl_IMAGE_CLASS_4_X_32+    , gl_VIDEO_COLOR_CONVERSION_OFFSET_NV+    , gl_BOOL_VEC4+    , gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB+    , gl_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES+    , gl_HISTOGRAM_FORMAT_EXT+    , gl_UNSIGNED_INT_8_8_8_8_REV_EXT+    , gl_R1UI_C3F_V3F_SUN+    , gl_SAMPLER_1D_ARRAY_SHADOW_EXT+    , gl_TEXTURE_BINDING_2D_ARRAY+    , gl_TEXTURE_RANGE_POINTER_APPLE+    , gl_SMALL_CCW_ARC_TO_NV+    , gl_SHADER_COMPILER+    , gl_DEPTH_COMPONENT24_ARB+    , gl_COLOR_ATTACHMENT14_NV+    , gl_TIME_ELAPSED+    , gl_FRAMEBUFFER_DEFAULT_LAYERS_EXT+    , gl_MATRIX11_ARB+    , gl_XOR+    , gl_HSL_SATURATION_KHR+    , gl_R1UI_T2F_V3F_SUN+    , gl_COMPUTE_WORK_GROUP_SIZE+    , gl_BLEND_EQUATION_EXT+    , gl_SAMPLER+    , gl_NUM_FRAGMENT_REGISTERS_ATI+    , gl_REG_5_ATI+    , gl_DSDT8_MAG8_INTENSITY8_NV+    , gl_PIXEL_MAP_S_TO_S_SIZE+    , gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT+    , gl_OR_REVERSE+    , gl_QUERY_BUFFER_BARRIER_BIT+    , gl_TRANSFORM_FEEDBACK_BUFFER_BINDING+    , gl_SAMPLER_1D+    , gl_COLOR_TABLE_INTENSITY_SIZE+    , gl_TRIANGLE_FAN+    , gl_POINT_SIZE_MAX_SGIS+    , gl_ELEMENT_ARRAY_POINTER_ATI+    , gl_INT_IMAGE_1D_EXT+    , gl_CONVOLUTION_FILTER_SCALE_EXT+    , gl_EVAL_VERTEX_ATTRIB8_NV+    , gl_DYNAMIC_COPY_ARB+    , gl_REG_12_ATI+    , gl_SIGNED_NORMALIZED+    , gl_REG_8_ATI+    , gl_SAMPLE_COVERAGE_ARB+    , gl_ALLOW_DRAW_MEM_HINT_PGI+    , gl_INTENSITY16F_ARB+    , gl_PATH_FORMAT_PS_NV+    , gl_TEXTURE_FREE_MEMORY_ATI+    , gl_SYNC_FENCE+    , gl_WRITE_ONLY_ARB+    , gl_INVERT+    , gl_TRANSLATE_Y_NV+    , gl_SAMPLER_3D+    , gl_LINE_STRIP_ADJACENCY+    , gl_OPERAND2_RGB_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG+    , gl_COLOR_ARRAY_ADDRESS_NV+    , gl_POST_CONVOLUTION_BLUE_SCALE_EXT+    , gl_HIGH_FLOAT+    , gl_TESS_GEN_MODE_EXT+    , gl_DOT_PRODUCT_TEXTURE_RECTANGLE_NV+    , gl_MAX_LABEL_LENGTH+    , gl_QUERY_BY_REGION_NO_WAIT+    , gl_OP_RECIP_EXT+    , gl_PROXY_TEXTURE_2D_ARRAY+    , gl_COMPRESSED_RGBA_FXT1_3DFX+    , gl_PRIMITIVES_GENERATED+    , gl_TEXTURE26_ARB+    , gl_TESS_EVALUATION_TEXTURE+    , gl_TEXTURE1+    , gl_TRANSFORM_FEEDBACK_RECORD_NV+    , gl_DRAW_FRAMEBUFFER_NV+    , gl_MODELVIEW8_ARB+    , gl_UNSIGNED_INT_SAMPLER_BUFFER+    , gl_CONVOLUTION_1D+    , gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV+    , gl_SAMPLER_1D_ARRAY+    , gl_TRANSFORM_FEEDBACK_BINDING+    , gl_LIGHTING_BIT+    , gl_R1UI_C4F_N3F_V3F_SUN+    , gl_TEXTURE_RED_SIZE_EXT+    , gl_VERTEX_ARRAY_KHR+    , gl_ALPHA_BITS+    , gl_MAX_VERTEX_SHADER_INVARIANTS_EXT+    , gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS+    , gl_SAMPLE_MASK_INVERT_EXT+    , gl_TRANSPOSE_PROGRAM_MATRIX_EXT+    , gl_ABGR_EXT+    , gl_MULTISAMPLE_BIT_3DFX+    , gl_MATRIX0_NV+    , gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING+    , gl_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG+    , gl_RGB9_E5+    , gl_IMAGE_2D_MULTISAMPLE_ARRAY+    , gl_FRAMEBUFFER_ATTACHMENT_RED_SIZE+    , gl_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV+    , gl_GEOMETRY_PROGRAM_NV+    , gl_RGB10_EXT+    , gl_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT+    , gl_ALWAYS_SOFT_HINT_PGI+    , gl_WEIGHT_ARRAY_BUFFER_BINDING+    , gl_BLEND_DST_ALPHA_OES+    , gl_UNIFORM_BUFFER_BINDING_EXT+    , gl_CONTINUOUS_AMD+    , gl_STENCIL_BUFFER_BIT4_QCOM+    , gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV+    , gl_TESS_EVALUATION_SHADER_BIT+    , gl_TEXTURE_COORD_ARRAY_EXT+    , gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET+    , gl_PROGRAM_INSTRUCTIONS_ARB+    , gl_PROXY_TEXTURE_3D+    , gl_CLIP_PLANE0+    , gl_CURRENT_QUERY_EXT+    , gl_T4F_C4F_N3F_V4F+    , gl_ADD+    , gl_STENCIL_EXT+    , gl_TEXTURE_BLUE_TYPE+    , gl_OUTPUT_TEXTURE_COORD8_EXT+    , gl_OBJECT_TYPE_ARB+    , gl_RESET_NOTIFICATION_STRATEGY+    , gl_UNSIGNED_INT_VEC2_EXT+    , gl_DRAW_BUFFER6_NV+    , gl_ASYNC_DRAW_PIXELS_SGIX+    , gl_INTERNALFORMAT_GREEN_SIZE+    , gl_TEXTURE_GREEN_SIZE+    , gl_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL+    , gl_VIRTUAL_PAGE_SIZE_Y_AMD+    , gl_OP_MUL_EXT+    , gl_NORMAL_MAP+    , gl_ALPHA16_EXT+    , gl_POINT_SIZE+    , gl_INTERNALFORMAT_SUPPORTED+    , gl_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT+    , gl_DEBUG_SEVERITY_HIGH_ARB+    , gl_TEXTURE_MAX_LEVEL_SGIS+    , gl_SHADING_LANGUAGE_VERSION_ARB+    , gl_STANDARD_FONT_FORMAT_NV+    , gl_VERTEX_WEIGHT_ARRAY_SIZE_EXT+    , gl_IR_INSTRUMENT1_SGIX+    , gl_SIGNED_HILO8_NV+    , gl_RENDERBUFFER_GREEN_SIZE_OES+    , gl_REG_1_ATI+    , gl_CLAMP_TO_EDGE+    , gl_GEOMETRY_SHADER_BIT+    , gl_MODELVIEW7_ARB+    , gl_BUFFER_MAPPED_ARB+    , gl_DRAW_BUFFER12_EXT+    , gl_RGB565_OES+    , gl_SHORT+    , gl_STENCIL_BACK_FAIL_ATI+    , gl_UNSIGNED_INT_IMAGE_2D_RECT_EXT+    , gl_PATH_MAX_PROJECTION_STACK_DEPTH_NV+    , gl_CON_31_ATI+    , gl_RGB5+    , gl_SAMPLER_2D_RECT+    , gl_COMPRESSED_RGBA_ASTC_5x4x4_OES+    , gl_PASS_THROUGH_TOKEN+    , gl_RGBA_FLOAT32_ATI+    , gl_TEXTURE_COLOR_WRITEMASK_SGIS+    , gl_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS+    , gl_OUTPUT_TEXTURE_COORD23_EXT+    , gl_YCBYCR8_422_NV+    , gl_SRC_NV+    , gl_MAX_EXT+    , gl_UNPACK_COMPRESSED_BLOCK_DEPTH+    , gl_UNSIGNED_SHORT_5_5_5_1_EXT+    , gl_IMAGE_3D+    , gl_DEPTH_BUFFER_BIT0_QCOM+    , gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS+    , gl_DECR_WRAP_OES+    , gl_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV+    , gl_SPARSE_STORAGE_BIT_ARB+    , gl_LAST_VIDEO_CAPTURE_STATUS_NV+    , gl_LAST_VERTEX_CONVENTION+    , gl_IDENTITY_NV+    , gl_RETAINED_APPLE+    , gl_FLOAT_RGB32_NV+    , gl_DRAW_BUFFER15_ARB+    , gl_COLOR_EXT+    , gl_WEIGHT_ARRAY_TYPE_OES+    , gl_DETAIL_TEXTURE_2D_BINDING_SGIS+    , gl_BGRA8_EXT+    , gl_T2F_IUI_V3F_EXT+    , gl_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS+    , gl_VERTEX_ARRAY_LIST_IBM+    , gl_INDEX_ARRAY_STRIDE_EXT+    , gl_SCALE_BY_ONE_HALF_NV+    , gl_PROXY_TEXTURE_4D_SGIS+    , gl_HALF_FLOAT+    , gl_FIELD_UPPER_NV+    , gl_OCCLUSION_QUERY_EVENT_MASK_AMD+    , gl_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV+    , gl_VERTEX_ATTRIB_ARRAY4_NV+    , gl_CONVOLUTION_BORDER_COLOR_HP+    , gl_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT+    , gl_MODULATE+    , gl_NO_RESET_NOTIFICATION_KHR+    , gl_CURRENT_INDEX+    , gl_RED_MAX_CLAMP_INGR+    , gl_SAMPLE_ALPHA_TO_MASK_EXT+    , gl_DEBUG_CATEGORY_DEPRECATION_AMD+    , gl_EXP2+    , gl_HISTOGRAM+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR+    , gl_VERTEX_WEIGHT_ARRAY_POINTER_EXT+    , gl_READ_FRAMEBUFFER_BINDING_APPLE+    , gl_COLOR_ATTACHMENT9+    , gl_PROXY_TEXTURE_CUBE_MAP_ARB+    , gl_SIGNED_RGB8_NV+    , gl_TEXTURE_INTENSITY_SIZE+    , gl_TEXTURE_MAX_CLAMP_S_SGIX+    , gl_PATH_TRANSPOSE_PROJECTION_MATRIX_NV+    , gl_BOUNDING_BOX_OF_BOUNDING_BOXES_NV+    , gl_TEXTURE_MAX_LOD_SGIS+    , gl_LUMINANCE+    , gl_FOG_COORD_ARRAY_BUFFER_BINDING+    , gl_OFFSET_TEXTURE_2D_BIAS_NV+    , gl_FEEDBACK+    , gl_MAGNITUDE_BIAS_NV+    , gl_POST_CONVOLUTION_ALPHA_SCALE+    , gl_PATH_TERMINAL_END_CAP_NV+    , gl_GLYPH_HEIGHT_BIT_NV+    , gl_TEXTURE_STORAGE_HINT_APPLE+    , gl_MATRIX2_NV+    , gl_RGB16I+    , gl_NUM_SHADER_BINARY_FORMATS+    , gl_MULTISAMPLE_BUFFER_BIT7_QCOM+    , gl_SAMPLE_ALPHA_TO_ONE+    , gl_CON_11_ATI+    , gl_MAP2_TEXTURE_COORD_1+    , gl_DRAW_BUFFER14_ARB+    , gl_SHARPEN_TEXTURE_FUNC_POINTS_SGIS+    , gl_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB+    , gl_FLOAT_RGBA_MODE_NV+    , gl_VERTEX_ATTRIB_ARRAY9_NV+    , gl_ALPHA4+    , gl_EVAL_VERTEX_ATTRIB9_NV+    , gl_VARIANT_ARRAY_POINTER_EXT+    , gl_INDEX_TEST_EXT+    , gl_MAX_RENDERBUFFER_SIZE_EXT+    , gl_MAP1_GRID_SEGMENTS+    , gl_DETAIL_TEXTURE_MODE_SGIS+    , gl_LINEARBURN_NV+    , gl_SOURCE2_ALPHA+    , gl_COLOR_ATTACHMENT9_EXT+    , gl_RENDERBUFFER_OES+    , gl_RGBA8UI+    , gl_MIPMAP+    , gl_SMOOTH_LINE_WIDTH_RANGE+    , gl_COMBINER7_NV+    , gl_VIEW_CLASS_64_BITS+    , gl_SAMPLE_MASK_VALUE_SGIS+    , gl_MAX_SHADER_STORAGE_BUFFER_BINDINGS+    , gl_ALPHA32UI_EXT+    , gl_NONE+    , gl_MATRIX25_ARB+    , gl_DUAL_LUMINANCE_ALPHA4_SGIS+    , gl_PATCH_VERTICES+    , gl_COLOR_MATERIAL_PARAMETER+    , gl_NUM_PROGRAM_BINARY_FORMATS+    , gl_PACK_ROW_LENGTH+    , gl_RENDERBUFFER_BINDING_EXT+    , gl_FORMAT_SUBSAMPLE_24_24_OML+    , gl_RELATIVE_ROUNDED_RECT4_NV+    , gl_TEXTURE3+    , gl_DEPTH_COMPONENT16_SGIX+    , gl_SAMPLER_2D_SHADOW_EXT+    , gl_MIN_MAP_BUFFER_ALIGNMENT+    , gl_PROXY_TEXTURE_2D_ARRAY_EXT+    , gl_WEIGHT_ARRAY_TYPE_ARB+    , gl_LOW_INT+    , gl_DRAW_BUFFER11_ATI+    , gl_MAX_ELEMENTS_VERTICES_EXT+    , gl_COMPRESSED_RED_RGTC1_EXT+    , gl_RGBA+    , gl_DRAW_BUFFER0_ARB+    , gl_TEXTURE_RED_TYPE+    , gl_FENCE_APPLE+    , gl_MAX_CONVOLUTION_WIDTH_EXT+    , gl_UNSIGNED_INVERT_NV+    , gl_LIGHT6+    , gl_STREAM_COPY+    , gl_INSTRUMENT_BUFFER_POINTER_SGIX+    , gl_MODELVIEW+    , gl_RGB32F+    , gl_MAP_COLOR+    , gl_COLOR_TABLE_INTENSITY_SIZE_SGI+    , gl_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV+    , gl_LAYER_PROVOKING_VERTEX_EXT+    , gl_COMPRESSED_RGBA_ASTC_6x5x5_OES+    , gl_FOG_BIT+    , gl_NATIVE_GRAPHICS_HANDLE_PGI+    , gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT+    , gl_MAX_COMPUTE_SHARED_MEMORY_SIZE+    , gl_STENCIL_INDEX1_EXT+    , gl_COLOR_ATTACHMENT2_NV+    , gl_DRAW_BUFFER5_ARB+    , gl_TEXTURE_OBJECT_VALID_QCOM+    , gl_PHONG_HINT_WIN+    , gl_MAP1_VERTEX_ATTRIB0_4_NV+    , gl_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX+    , gl_COLOR_TABLE_WIDTH+    , gl_INT_IMAGE_1D_ARRAY+    , gl_BUFFER_MAPPED+    , gl_TEXTURE_SWIZZLE_R+    , gl_COLOR_ATTACHMENT9_NV+    , gl_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER+    , gl_LUMINANCE16_ALPHA16+    , gl_PERFQUERY_GLOBAL_CONTEXT_INTEL+    , gl_POINT_FADE_THRESHOLD_SIZE_EXT+    , gl_BLEND_EQUATION_OES+    , gl_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES+    , gl_TEXTURE_BINDING_2D_ARRAY_EXT+    , gl_CON_7_ATI+    , gl_DUAL_LUMINANCE16_SGIS+    , gl_RASTER_POSITION_UNCLIPPED_IBM+    , gl_ALLOW_DRAW_FRG_HINT_PGI+    , gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT+    , gl_TEXTURE_COORD_ARRAY+    , gl_MAX_DEBUG_LOGGED_MESSAGES_KHR+    , gl_ARRAY_BUFFER_BINDING_ARB+    , gl_PIXEL_TEXTURE_SGIS+    , gl_STENCIL_INDEX8+    , gl_IMAGE_CLASS_10_10_10_2+    , gl_DRAW_INDIRECT_LENGTH_NV+    , gl_DEBUG_CALLBACK_FUNCTION_ARB+    , gl_INT_SAMPLER_2D_ARRAY+    , gl_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB+    , gl_GENERIC_ATTRIB_NV+    , gl_TEXTURE_RED_TYPE_ARB+    , gl_MAX_VERTEX_UNITS_ARB+    , gl_DEPTH_BIAS+    , gl_SRGB+    , gl_TEXTURE_COORD_ARRAY_TYPE+    , gl_TRANSFORM_FEEDBACK_BUFFER_START_EXT+    , gl_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV+    , gl_CURRENT_TIME_NV+    , gl_TEXTURE_DEPTH_SIZE+    , gl_INDEX_ARRAY_LIST_STRIDE_IBM+    , gl_CLIP_PLANE1_IMG+    , gl_CULL_VERTEX_EYE_POSITION_EXT+    , gl_COPY_READ_BUFFER_NV+    , gl_CONTEXT_CORE_PROFILE_BIT+    , gl_ARC_TO_NV+    , gl_PACK_COMPRESSED_BLOCK_SIZE+    , gl_TRACE_NAME_MESA+    , gl_TEXTURE_CROP_RECT_OES+    , gl_MAP2_VERTEX_ATTRIB15_4_NV+    , gl_DRAW_INDIRECT_UNIFIED_NV+    , gl_MAX_TESS_EVALUATION_IMAGE_UNIFORMS+    , gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS+    , gl_CULL_FACE_MODE+    , gl_LUMINANCE_ALPHA_INTEGER_EXT+    , gl_SURFACE_MAPPED_NV+    , gl_FOG_COORD_ARRAY_LENGTH_NV+    , gl_R+    , gl_NUM_VIDEO_CAPTURE_STREAMS_NV+    , gl_VERTEX_PROGRAM_POINT_SIZE_NV+    , gl_CONSTANT_NV+    , gl_RGB10_A2+    , gl_INTENSITY16_EXT+    , gl_TEXTURE28+    , gl_COMPRESSED_RGBA_ASTC_4x4_KHR+    , gl_SRGB_READ+    , gl_LUMINANCE16_ALPHA16_SNORM+    , gl_UNSIGNED_INT_IMAGE_1D_ARRAY+    , gl_ELEMENT_ARRAY_TYPE_ATI+    , gl_PATCH_DEFAULT_OUTER_LEVEL+    , gl_LINE_STRIP_ADJACENCY_ARB+    , gl_POLYGON_OFFSET_POINT+    , gl_UNSIGNED_SHORT_8_8_APPLE+    , gl_DYNAMIC_ATI+    , gl_UNSIGNED_INT16_NV+    , gl_TEXTURE_BINDING_BUFFER_EXT+    , gl_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB+    , gl_MAP2_VERTEX_ATTRIB14_4_NV+    , gl_COMPRESSED_RGB+    , gl_VERTEX_ATTRIB_ARRAY0_NV+    , gl_MIN+    , gl_COLOR_SUM+    , gl_ATC_RGBA_INTERPOLATED_ALPHA_AMD+    , gl_RECIP_ADD_SIGNED_ALPHA_IMG+    , gl_FONT_MAX_ADVANCE_WIDTH_BIT_NV+    , gl_SPRITE_AXIAL_SGIX+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES+    , gl_TEXTURE_ENV_BIAS_SGIX+    , gl_PROGRAM_FORMAT_ASCII_ARB+    , gl_OUTPUT_COLOR1_EXT+    , gl_SELECTION_BUFFER_SIZE+    , gl_VERTEX_ATTRIB_MAP2_ORDER_APPLE+    , gl_INTENSITY_FLOAT16_ATI+    , gl_TEXTURE30_ARB+    , gl_TEXTURE_1D_STACK_MESAX+    , gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE+    , gl_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM+    , gl_SIGNED_HILO_NV+    , gl_CONTEXT_FLAG_ROBUST_ACCESS_BIT+    , gl_ACTIVE_ATTRIBUTE_MAX_LENGTH+    , gl_IMAGE_2D_RECT_EXT+    , gl_TESS_GEN_MODE+    , gl_TEXTURE_MIN_FILTER+    , gl_FLOAT_VEC4+    , gl_LIGHT2+    , gl_MODELVIEW24_ARB+    , gl_TESS_EVALUATION_SHADER+    , gl_PROXY_COLOR_TABLE_SGI+    , gl_INDEX_ARRAY_EXT+    , gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB+    , gl_FRAGMENT_INPUT_NV+    , gl_CON_13_ATI+    , gl_IMAGE_ROTATE_ORIGIN_Y_HP+    , gl_VERTEX_ARRAY_COUNT_EXT+    , gl_STENCIL_INDEX1_OES+    , gl_BUFFER_DATA_SIZE+    , gl_MAX_NAME_STACK_DEPTH+    , gl_SAMPLES_PASSED_ARB+    , gl_TEXTURE_PRE_SPECULAR_HP+    , gl_RESCALE_NORMAL_EXT+    , gl_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY+    , gl_TRANSLATE_2D_NV+    , gl_QUAD_INTENSITY8_SGIS+    , gl_LOCATION_INDEX+    , gl_MODELVIEW9_ARB+    , gl_CONTEXT_RELEASE_BEHAVIOR_KHR+    , gl_EDGE_FLAG_ARRAY_BUFFER_BINDING+    , gl_DEBUG_TYPE_PERFORMANCE_KHR+    , gl_POINT_DISTANCE_ATTENUATION+    , gl_PIXEL_TILE_GRID_HEIGHT_SGIX+    , gl_COLOR_ATTACHMENT3+    , gl_COUNT_UP_NV+    , gl_STENCIL_BACK_VALUE_MASK+    , gl_PERFQUERY_DONOT_FLUSH_INTEL+    , gl_VARIABLE_F_NV+    , gl_STENCIL_BACK_PASS_DEPTH_FAIL+    , gl_IMAGE_CUBIC_WEIGHT_HP+    , gl_STENCIL+    , gl_DRAW_BUFFER6_ARB+    , gl_MAX_COMBINED_IMAGE_UNIFORMS+    , gl_PROGRAM_STRING_NV+    , gl_STREAM_DRAW+    , gl_BGR_INTEGER_EXT+    , gl_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES+    , gl_LAYER_PROVOKING_VERTEX+    , gl_TEXTURE_ALPHA_SIZE_EXT+    , gl_QUERY_DEPTH_PASS_EVENT_BIT_AMD+    , gl_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX+    , gl_VIEW_CLASS_48_BITS+    , gl_DRAW_BUFFER15_NV+    , gl_MAX_LABEL_LENGTH_KHR+    , gl_DEBUG_TYPE_PERFORMANCE+    , gl_DEPENDENT_RGB_TEXTURE_3D_NV+    , gl_MAX_GEOMETRY_ATOMIC_COUNTERS+    , gl_DRAW_BUFFER10_ARB+    , gl_FONT_UNDERLINE_THICKNESS_BIT_NV+    , gl_DRAW_BUFFER7+    , gl_TEXTURE_GREEN_TYPE_ARB+    , gl_TEXTURE_MIN_LOD_SGIS+    , gl_UNSIGNED_INT_SAMPLER_BUFFER_EXT+    , gl_ELEMENT_ARRAY_BARRIER_BIT_EXT+    , gl_SAMPLE_COVERAGE_VALUE+    , gl_VERTEX_ATTRIB_RELATIVE_OFFSET+    , gl_COLOR_TABLE_RED_SIZE+    , gl_TRANSFORM_FEEDBACK_BUFFER_START_NV+    , gl_NAME_STACK_DEPTH+    , gl_UNSIGNED_INT_5_9_9_9_REV+    , gl_FUNC_SUBTRACT_EXT+    , gl_STENCIL_INDEX4_EXT+    , gl_TEXTURE_COMPRESSION_HINT+    , gl_DEPTH_CLAMP+    , gl_SAMPLE_COVERAGE_INVERT+    , gl_DRAW_BUFFER0_EXT+    , gl_DRAW_BUFFER4+    , gl_ALPHA_FLOAT16_ATI+    , gl_AFFINE_2D_NV+    , gl_MAX_TRACK_MATRICES_NV+    , gl_BINORMAL_ARRAY_STRIDE_EXT+    , gl_UNSIGNED_SHORT_1_5_5_5_REV+    , gl_ROUNDED_RECT4_NV+    , gl_COMMAND_BARRIER_BIT_EXT+    , gl_TEXTURE_ENV_COLOR+    , gl_READ_WRITE_ARB+    , gl_RGBA8_EXT+    , gl_EVAL_VERTEX_ATTRIB10_NV+    , gl_POST_CONVOLUTION_RED_BIAS+    , gl_INT16_VEC4_NV+    , gl_COLOR_SUM_ARB+    , gl_OUTPUT_TEXTURE_COORD5_EXT+    , gl_COMPRESSED_RGBA_ASTC_12x10_KHR+    , gl_MAX_ELEMENTS_INDICES+    , gl_REFERENCED_BY_FRAGMENT_SHADER+    , gl_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB+    , gl_WEIGHT_ARRAY_ARB+    , gl_TIME_ELAPSED_EXT+    , gl_BACK_SECONDARY_COLOR_NV+    , gl_COMPARE_REF_TO_TEXTURE_EXT+    , gl_IS_PER_PATCH_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE+    , gl_TEXTURE_LUMINANCE_SIZE_EXT+    , gl_COVERAGE_BUFFERS_NV+    , gl_MATRIX5_ARB+    , gl_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT+    , gl_COMPRESSED_RGBA_ASTC_5x5x4_OES+    , gl_CONVOLUTION_FILTER_BIAS+    , gl_TRACE_PRIMITIVES_BIT_MESA+    , gl_POINT_SPRITE+    , gl_POLYGON_STIPPLE_BIT+    , gl_DEBUG_SEVERITY_HIGH+    , gl_RENDERBUFFER_STENCIL_SIZE_EXT+    , gl_RED+    , gl_DRAW_BUFFER12_NV+    , gl_COMPRESSED_RGBA_ASTC_10x10_KHR+    , gl_ACTIVE_TEXTURE+    , gl_Q+    , gl_STRICT_LIGHTING_HINT_PGI+    , gl_INT8_VEC2_NV+    , gl_MAP2_VERTEX_ATTRIB0_4_NV+    , gl_SHADER_SOURCE_LENGTH+    , gl_FLOAT_MAT4+    , gl_COLOR_MATRIX_SGI+    , gl_SAMPLER_2D_ARRAY_EXT+    , gl_MODULATE_SUBTRACT_ATI+    , gl_TRIANGLES_ADJACENCY_ARB+    , gl_PROGRAM_TARGET_NV+    , gl_GEOMETRY_SHADER_ARB+    , gl_TEXTURE_BASE_LEVEL_SGIS+    , gl_1PASS_SGIS+    , gl_TEXTURE_HEIGHT_QCOM+    , gl_LUMINANCE12_ALPHA4_EXT+    , gl_PIXEL_TILE_HEIGHT_SGIX+    , gl_UNSIGNED_INT_S8_S8_8_8_NV+    , gl_SOURCE0_RGB+    , gl_DRAW_BUFFER6_EXT+    , gl_PATH_FILL_BOUNDING_BOX_NV+    , gl_RENDER_MODE+    , gl_X_EXT+    , gl_CON_14_ATI+    , gl_TRIANGLE_STRIP_ADJACENCY+    , gl_ROUNDED_RECT_NV+    , gl_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB+    , gl_DSDT_MAG_INTENSITY_NV+    , gl_MODELVIEW13_ARB+    , gl_MAX_COMBINED_CLIP_AND_CULL_DISTANCES+    , gl_CLIP_ORIGIN+    , gl_PATH_CLIENT_LENGTH_NV+    , gl_SAMPLE_ALPHA_TO_ONE_ARB+    , gl_RENDERBUFFER_INTERNAL_FORMAT_OES+    , gl_POINT_SPRITE_ARB+    , gl_FLOAT_MAT3_ARB+    , gl_IMAGE_CLASS_4_X_8+    , gl_PIXEL_SUBSAMPLE_4242_SGIX+    , gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT+    , gl_ROUNDED_RECT8_NV+    , gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING+    , gl_DST_NV+    , gl_MAX_TRANSFORM_FEEDBACK_BUFFERS+    , gl_FUNC_ADD_OES+    , gl_VERTEX_STREAM7_ATI+    , gl_RG_EXT+    , gl_STENCIL_BACK_PASS_DEPTH_PASS+    , gl_FRAMEBUFFER_RENDERABLE_LAYERED+    , gl_MAP2_VERTEX_ATTRIB1_4_NV+    , gl_DRAW_BUFFER2_ATI+    , gl_RGBA_FLOAT16_ATI+    , gl_EVAL_VERTEX_ATTRIB13_NV+    , gl_DRAW_BUFFER15_ATI+    , gl_MAP_WRITE_BIT+    , gl_DOT3_RGBA+    , gl_MAT_SHININESS_BIT_PGI+    , gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN+    , gl_MAX_TRACK_MATRIX_STACK_DEPTH_NV+    , gl_MATRIX30_ARB+    , gl_STENCIL_TEST+    , gl_MAX_INTEGER_SAMPLES+    , gl_COPY_READ_BUFFER_BINDING+    , gl_TRANSFORM_FEEDBACK_BUFFER+    , gl_LUMINANCE_FLOAT16_APPLE+    , gl_MAX_TESS_CONTROL_UNIFORM_BLOCKS+    , gl_MAX_VERTEX_UNIFORM_VECTORS+    , gl_WRITE_PIXEL_DATA_RANGE_LENGTH_NV+    , gl_SAMPLER_RENDERBUFFER_NV+    , gl_DRAW_BUFFER13_NV+    , gl_RGB32F_ARB+    , gl_FRAGMENT_LIGHT5_SGIX+    , gl_MAX_GENERAL_COMBINERS_NV+    , gl_TRANSPOSE_TEXTURE_MATRIX_ARB+    , gl_OPERAND1_ALPHA_ARB+    , gl_COLOR_ATTACHMENT12+    , gl_GREEN_MAX_CLAMP_INGR+    , gl_PATH_PROJECTION_STACK_DEPTH_NV+    , gl_MAP2_COLOR_4+    , gl_COLOR_SUM_EXT+    , gl_CLAMP_FRAGMENT_COLOR_ARB+    , gl_INDEX_BITS+    , gl_CON_15_ATI+    , gl_BLEND_OVERLAP_NV+    , gl_DS_SCALE_NV+    , gl_CURRENT_PALETTE_MATRIX_ARB+    , gl_IMAGE_BINDING_LAYER_EXT+    , gl_WEIGHT_SUM_UNITY_ARB+    , gl_ALPHA32I_EXT+    , gl_SHADER_STORAGE_BUFFER_SIZE+    , gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER+    , gl_MAX_UNIFORM_LOCATIONS+    , gl_DEBUG_SOURCE_OTHER_KHR+    , gl_FRACTIONAL_EVEN+    , gl_MIN_PROGRAM_TEXEL_OFFSET+    , gl_WEIGHT_ARRAY_OES+    , gl_RESET_NOTIFICATION_STRATEGY_KHR+    , gl_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV+    , gl_RGB2_EXT+    , gl_VERTEX_ATTRIB_ARRAY_BARRIER_BIT+    , gl_ELEMENT_ARRAY_BUFFER+    , gl_MEDIUM_FLOAT+    , gl_SAMPLER_1D_SHADOW_ARB+    , gl_DRAW_BUFFER5+    , gl_PARALLEL_ARRAYS_INTEL+    , gl_REG_24_ATI+    , gl_DEPTH_STENCIL_TO_BGRA_NV+    , gl_MAX_FRAMEBUFFER_WIDTH+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES+    , gl_POLYGON_OFFSET_FILL+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES+    , gl_TEXTURE_GEN_T+    , gl_TEXTURE_POST_SPECULAR_HP+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_X_OES+    , gl_MAGNITUDE_SCALE_NV+    , gl_VERTEX_SHADER_LOCALS_EXT+    , gl_INT_2_10_10_10_REV+    , gl_DOUBLE_MAT3x2_EXT+    , gl_DISCARD_NV+    , gl_MATRIX13_ARB+    , gl_GENERATE_MIPMAP_HINT+    , gl_MAX_PIXEL_MAP_TABLE+    , gl_SHADER_STORAGE_BUFFER+    , gl_BUFFER_UPDATE_BARRIER_BIT+    , gl_FRAMEBUFFER_BINDING_OES+    , gl_CONTEXT_PROFILE_MASK+    , gl_MAX_VIEWPORTS+    , gl_DRAW_BUFFER4_ARB+    , gl_RESAMPLE_DECIMATE_SGIX+    , gl_SHADER_OBJECT_ARB+    , gl_SYNC_FLAGS_APPLE+    , gl_Z4Y12Z4CB12Z4CR12_444_NV+    , gl_VERTEX_ARRAY_LENGTH_NV+    , gl_FOG_COORDINATE_ARRAY_LIST_IBM+    , gl_FRAMEBUFFER_DEFAULT_SAMPLES+    , gl_FLAT+    , gl_REG_2_ATI+    , gl_VIEWPORT_BIT+    , gl_TEXTURE_VIEW_MIN_LEVEL_EXT+    , gl_FRACTIONAL_ODD_EXT+    , gl_VIRTUAL_PAGE_SIZE_X_ARB+    , gl_GLOBAL_ALPHA_SUN+    , gl_TEXTURE_BORDER+    , gl_MAP2_VERTEX_ATTRIB7_4_NV+    , gl_BUFFER_ACCESS+    , gl_COLOR_ATTACHMENT15_EXT+    , gl_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT+    , gl_PRIMITIVE_RESTART_FIXED_INDEX+    , gl_MAX_COMBINED_DIMENSIONS+    , gl_MINUS_NV+    , gl_NORMAL_MAP_ARB+    , gl_MAT_AMBIENT_BIT_PGI+    , gl_REG_14_ATI+    , gl_SECONDARY_INTERPOLATOR_ATI+    , gl_FRAGMENT_SHADER_BIT_EXT+    , gl_CON_20_ATI+    , gl_DYNAMIC_DRAW+    , gl_STENCIL_INDEX1+    , gl_DEPTH_COMPONENTS+    , gl_SEPARATE_SPECULAR_COLOR_EXT+    , gl_CONSTANT_COLOR0_NV+    , gl_LUMINANCE16I_EXT+    , gl_TEXTURE_COORD_ARRAY_SIZE_EXT+    , gl_BLEND_DST_RGB+    , gl_VARIABLE_C_NV+    , gl_INT_VEC2_ARB+    , gl_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX+    , gl_PIXEL_MAP_G_TO_G_SIZE+    , gl_BLUE_MIN_CLAMP_INGR+    , gl_RETURN+    , gl_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD+    , gl_DOUBLE+    , gl_COMBINE4_NV+    , gl_IMAGE_ROTATE_ORIGIN_X_HP+    , gl_COMBINER5_NV+    , gl_SYNC_CONDITION+    , gl_DEBUG_LOGGED_MESSAGES_ARB+    , gl_REG_15_ATI+    , gl_BUFFER_MAP_POINTER_OES+    , gl_SM_COUNT_NV+    , gl_MAX_FRAMEBUFFER_HEIGHT+    , gl_INCR_WRAP_OES+    , gl_GCCSO_SHADER_BINARY_FJ+    , gl_DRAW_BUFFER4_NV+    , gl_RGB565+    , gl_WRITE_PIXEL_DATA_RANGE_NV+    , gl_UNIFORM_OFFSET+    , gl_UNSIGNED_INT64_ARB+    , gl_STENCIL_RENDERABLE+    , gl_COMPRESSED_RGBA_BPTC_UNORM+    , gl_FLOAT_R32_NV+    , gl_TEXTURE_CLIPMAP_OFFSET_SGIX+    , gl_TEXTURE_IMAGE_VALID_QCOM+    , gl_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC+    , gl_IMAGE_PIXEL_TYPE+    , gl_EDGE_FLAG_ARRAY_STRIDE+    , gl_RED_SCALE+    , gl_RENDERBUFFER_ALPHA_SIZE_OES+    , gl_CLIP_DISTANCE7+    , gl_INTENSITY32UI_EXT+    , gl_DEBUG_SOURCE_WINDOW_SYSTEM_KHR+    , gl_PN_TRIANGLES_ATI+    , gl_LIGHT5+    , gl_QUERY_RESULT_ARB+    , gl_LUMINANCE16+    , gl_ALPHA_TEST_QCOM+    , gl_TEXTURE_BORDER_COLOR_NV+    , gl_CULL_FRAGMENT_NV+    , gl_PATH_GEN_MODE_NV+    , gl_PROGRAM_POINT_SIZE_ARB+    , gl_INTERNALFORMAT_DEPTH_TYPE+    , gl_UNPACK_SKIP_ROWS+    , gl_DEBUG_SEVERITY_NOTIFICATION+    , gl_MAX_FRAGMENT_LIGHTS_SGIX+    , gl_COUNTER_TYPE_AMD+    , gl_TEXTURE_FETCH_BARRIER_BIT_EXT+    , gl_CURRENT_NORMAL+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES+    , gl_MULTIVIEW_EXT+    , gl_TESS_GEN_VERTEX_ORDER_EXT+    , gl_IMAGE_SCALE_X_HP+    , gl_TEXTURE_COLOR_TABLE_SGI+    , gl_DSDT_MAG_NV+    , gl_Z400_BINARY_AMD+    , gl_COLOR_INDEX8_EXT+    , gl_SRGB8_NV+    , gl_UNSIGNED_IDENTITY_NV+    , gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES+    , gl_ALPHA_SNORM+    , gl_MAX_TEXTURE_UNITS+    , gl_DEBUG_SEVERITY_MEDIUM_KHR+    , gl_TEXTURE_RECTANGLE+    , gl_CONTRAST_NV+    , gl_FILL+    , gl_BLEND_COLOR+    , gl_POINT_SMOOTH_HINT+    , gl_CONTEXT_ROBUST_ACCESS+    , gl_FRAGMENT_PROGRAM_NV+    , gl_OP_MULTIPLY_MATRIX_EXT+    , gl_DEPENDENT_GB_TEXTURE_2D_NV+    , gl_DOUBLE_EXT+    , gl_VERTEX_PROGRAM_NV+    , gl_PATH_END_CAPS_NV+    , gl_PATH_STROKE_MASK_NV+    , gl_SAMPLER_CUBE_SHADOW_EXT+    , gl_COLOR_SAMPLES_NV+    , gl_DUAL_INTENSITY16_SGIS+    , gl_IMPLEMENTATION_COLOR_READ_TYPE_OES+    , gl_MAX_DEBUG_GROUP_STACK_DEPTH_KHR+    , gl_SCISSOR_TEST+    , gl_ADJACENT_PAIRS_NV+    , gl_MAX_VERTEX_ATTRIB_BINDINGS+    , gl_TEXTURE_GATHER+    , gl_LUMINANCE_ALPHA8UI_EXT+    , gl_RELATIVE_ARC_TO_NV+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR+    , gl_TEXTURE_BINDING_CUBE_MAP_EXT+    , gl_FRAGMENT_ALPHA_MODULATE_IMG+    , gl_CURRENT_VERTEX_EXT+    , gl_MAP1_VERTEX_ATTRIB11_4_NV+    , gl_MATRIX_INDEX_ARRAY_SIZE_ARB+    , gl_TRANSFORM_FEEDBACK_BUFFER_MODE+    , gl_PIXEL_TILE_CACHE_SIZE_SGIX+    , gl_MODELVIEW0_EXT+    , gl_FONT_DESCENDER_BIT_NV+    , gl_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS+    , gl_RASTERIZER_DISCARD+    , gl_TRANSFORM_FEEDBACK_BUFFER_SIZE+    , gl_MAX_DEBUG_MESSAGE_LENGTH_ARB+    , gl_EXTENSIONS+    , gl_RESAMPLE_AVERAGE_OML+    , gl_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV+    , gl_RELATIVE_SMALL_CCW_ARC_TO_NV+    , gl_FRONT+    , gl_BLEND_COLOR_EXT+    , gl_BUFFER_ACCESS_OES+    , gl_MATRIX29_ARB+    , gl_GEOMETRY_LINKED_INPUT_TYPE_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES+    , gl_COLOR_ATTACHMENT12_EXT+    , gl_DRAW_BUFFER1+    , gl_FLOAT_32_UNSIGNED_INT_24_8_REV+    , gl_UNSIGNED_INT_SAMPLER_2D_RECT_EXT+    , gl_UNSIGNED_INT_SAMPLER_CUBE+    , gl_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI+    , gl_MAX_CULL_DISTANCES+    , gl_TEXTURE_LOD_BIAS_S_SGIX+    , gl_SPRITE_SGIX+    , gl_VERTEX_ATTRIB_ARRAY3_NV+    , gl_QUAD_INTENSITY4_SGIS+    , gl_DIFFERENCE_KHR+    , gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT+    , gl_VOLATILE_APPLE+    , gl_MAT_EMISSION_BIT_PGI+    , gl_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV+    , gl_DRAW_FRAMEBUFFER_BINDING+    , gl_TEXTURE8+    , gl_MUL_ATI+    , gl_PROGRAM_OBJECT_EXT+    , gl_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB+    , gl_MATRIX_INDEX_ARRAY_TYPE_ARB+    , gl_PIXEL_MAG_FILTER_EXT+    , gl_LESS+    , gl_SOURCE2_RGB_ARB+    , gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH+    , gl_PATH_STENCIL_VALUE_MASK_NV+    , gl_IMPLEMENTATION_COLOR_READ_TYPE+    , gl_TEXTURE_CLIPMAP_CENTER_SGIX+    , gl_BUFFER+    , gl_DEBUG_CALLBACK_USER_PARAM_ARB+    , gl_FIXED_OES+    , gl_INT_VEC2+    , gl_VARIANT_VALUE_EXT+    , gl_QUAD_STRIP+    , gl_COMPRESSED_RGB_BPTC_SIGNED_FLOAT+    , gl_ZERO_TO_ONE+    , gl_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB+    , gl_CND_ATI+    , gl_PROGRAM_POINT_SIZE+    , gl_VIEWPORT_BOUNDS_RANGE+    , gl_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL+    , gl_R1UI_T2F_N3F_V3F_SUN+    , gl_DEPTH_STENCIL_EXT+    , gl_RESCALE_NORMAL+    , gl_INDEX_CLEAR_VALUE+    , gl_VERTEX_STREAM5_ATI+    , gl_CON_4_ATI+    , gl_LAYOUT_DEFAULT_INTEL+    , gl_RGBA8I_EXT+    , gl_IMAGE_CLASS_4_X_16+    , gl_RGB8_EXT+    , gl_TEXTURE_DS_SIZE_NV+    , gl_CLAMP_VERTEX_COLOR+    , gl_DEPTH_CLEAR_VALUE+    , gl_VERTEX_ATTRIB_ARRAY_SIZE_ARB+    , gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS+    , gl_RGB_FLOAT16_APPLE+    , gl_DOT_PRODUCT_REFLECT_CUBE_MAP_NV+    , gl_COLOR_ATTACHMENT1+    , gl_MAX_TESS_GEN_LEVEL_EXT+    , gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER+    , gl_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM+    , gl_MATRIX3_ARB+    , gl_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB+    , gl_FRAGMENT_PROGRAM_BINDING_NV+    , gl_DOT2_ADD_ATI+    , gl_CON_2_ATI+    , gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES+    , gl_UNIFORM_ARRAY_STRIDE+    , gl_RECLAIM_MEMORY_HINT_PGI+    , gl_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS+    , gl_DRAW_BUFFER11_ARB+    , gl_NORMAL_ARRAY+    , gl_PATH_GEN_COMPONENTS_NV+    , gl_COLOR_FLOAT_APPLE+    , gl_WAIT_FAILED+    , gl_SAMPLER_1D_ARRAY_SHADOW+    , gl_PIXEL_TEX_GEN_Q_CEILING_SGIX+    , gl_ALWAYS_FAST_HINT_PGI+    , gl_GEOMETRY_OUTPUT_TYPE_EXT+    , gl_MAX_PROGRAM_PATCH_ATTRIBS_NV+    , gl_TEXTURE_1D_ARRAY+    , gl_LIST_MODE+    , gl_COLOR_ARRAY_TYPE+    , gl_SAMPLE_MASK_VALUE_EXT+    , gl_PIXEL_BUFFER_BARRIER_BIT+    , gl_SCISSOR_BOX+    , gl_UNSIGNED_INT_SAMPLER_3D_EXT+    , gl_MAX_ATOMIC_COUNTER_BUFFER_SIZE+    , gl_CLIENT_ALL_ATTRIB_BITS+    , gl_TRANSPOSE_MODELVIEW_MATRIX_ARB+    , gl_TEXTURE_BINDING_RECTANGLE_NV+    , gl_ALPHA_FLOAT32_ATI+    , gl_MAP1_TEXTURE_COORD_4+    , gl_CONSTANT_ALPHA+    , gl_PREVIOUS_EXT+    , gl_PACK_COMPRESSED_SIZE_SGIX+    , gl_IMAGE_2D_ARRAY_EXT+    , gl_ASYNC_TEX_IMAGE_SGIX+    , gl_QUERY_RESULT+    , gl_MATRIX0_ARB+    , gl_UNPACK_CMYK_HINT_EXT+    , gl_MAP1_TEXTURE_COORD_1+    , gl_CONTEXT_RELEASE_BEHAVIOR_FLUSH+    , gl_PN_TRIANGLES_POINT_MODE_LINEAR_ATI+    , gl_TEXTURE_BLUE_SIZE_EXT+    , gl_VARIANT_EXT+    , gl_UNPACK_ROW_LENGTH+    , gl_VARIANT_DATATYPE_EXT+    , gl_LINEAR_MIPMAP_LINEAR+    , gl_ALPHA8I_EXT+    , gl_OUTPUT_TEXTURE_COORD20_EXT+    , gl_EYE_LINEAR+    , gl_VIEWPORT+    , gl_SHADER_BINARY_DMP+    , gl_TEXTURE25_ARB+    , gl_UNSIGNED_SHORT_4_4_4_4_EXT+    , gl_PROXY_HISTOGRAM_EXT+    , gl_SCALEBIAS_HINT_SGIX+    , gl_MAP_INVALIDATE_RANGE_BIT_EXT+    , gl_FRAGMENT_PROGRAM_CALLBACK_MESA+    , gl_TRANSLATE_3D_NV+    , gl_PATH_COORD_COUNT_NV+    , gl_MAX_ACTIVE_LIGHTS_SGIX+    , gl_TRANSFORM_FEEDBACK_OVERFLOW_ARB+    , gl_REFERENCE_PLANE_EQUATION_SGIX+    , gl_PATH_TERMINAL_DASH_CAP_NV+    , gl_INDEX_ARRAY+    , gl_INNOCENT_CONTEXT_RESET_ARB+    , gl_TEXTURE_BINDING_1D+    , gl_TRANSFORM_FEEDBACK_BUFFER_STRIDE+    , gl_QUERY_OBJECT_EXT+    , gl_UNIFORM_BLOCK+    , gl_CONVOLUTION_HEIGHT+    , gl_STENCIL_FAIL+    , gl_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX+    , gl_TEXTURE_SAMPLES_IMG+    , gl_REFLECTION_MAP_NV+    , gl_GREEN_SCALE+    , gl_TRANSFORM_FEEDBACK_BUFFER_EXT+    , gl_LIGHTEN_NV+    , gl_HISTOGRAM_ALPHA_SIZE_EXT+    , gl_UNSIGNED_INT64_NV+    , gl_LINE_STIPPLE_REPEAT+    , gl_YCBCR_MESA+    , gl_LEQUAL+    , gl_BUFFER_USAGE_ARB+    , gl_MAP1_VERTEX_ATTRIB6_4_NV+    , gl_SAMPLER_BUFFER_AMD+    , gl_OBJECT_DISTANCE_TO_LINE_SGIS+    , gl_PIXEL_COUNT_NV+    , gl_VERTEX_PROGRAM_POSITION_MESA+    , gl_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI+    , gl_POST_COLOR_MATRIX_BLUE_BIAS+    , gl_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX+    , gl_VERTEX_ATTRIB_MAP2_APPLE+    , gl_PLUS_DARKER_NV+    , gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT+    , gl_FRAGMENT_SHADER_INVOCATIONS_ARB+    , gl_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT+    , gl_PROXY_TEXTURE_CUBE_MAP_ARRAY+    , gl_UNSIGNED_INT_IMAGE_CUBE_EXT+    , gl_DYNAMIC_DRAW_ARB+    , gl_RGBA_SNORM+    , gl_MAX_UNIFORM_BLOCK_SIZE+    , gl_FUNC_REVERSE_SUBTRACT_EXT+    , gl_STENCIL_BUFFER_BIT1_QCOM+    , gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER+    , gl_TEXTURE_1D_BINDING_EXT+    , gl_RGBA4_EXT+    , gl_PREFER_DOUBLEBUFFER_HINT_PGI+    , gl_UNKNOWN_CONTEXT_RESET_KHR+    , gl_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES+    , gl_REFERENCED_BY_COMPUTE_SHADER+    , gl_REG_17_ATI+    , gl_BUFFER_FLUSHING_UNMAP_APPLE+    , gl_UNIFORM+    , gl_TEXCOORD4_BIT_PGI+    , gl_BIAS_BY_NEGATIVE_ONE_HALF_NV+    , gl_OP_FLOOR_EXT+    , gl_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV+    , gl_CURRENT_QUERY+    , gl_UNIFORM_BUFFER_START+    , gl_DEBUG_SEVERITY_HIGH_KHR+    , gl_T2F_C4UB_V3F+    , gl_FONT_GLYPHS_AVAILABLE_NV+    , gl_MAX_CONVOLUTION_HEIGHT_EXT+    , gl_STENCIL_BUFFER_BIT3_QCOM+    , gl_MAP1_VERTEX_ATTRIB3_4_NV+    , gl_BLEND_EQUATION_ALPHA_EXT+    , gl_RGB_FLOAT32_APPLE+    , gl_CONSTANT_BORDER+    , gl_CON_0_ATI+    , gl_VERTEX_ARRAY_RANGE_POINTER_NV+    , gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV+    , gl_INTERLACE_SGIX+    , gl_UNPACK_CONSTANT_DATA_SUNX+    , gl_VERTEX_BINDING_STRIDE+    , gl_IS_PER_PATCH+    , gl_AVERAGE_HP+    , gl_MAX_VERTEX_ATTRIBS+    , gl_MAX_SAMPLES_ANGLE+    , gl_RED_EXT+    , gl_MAP1_NORMAL+    , gl_TEXTURE_COMPRESSED_BLOCK_HEIGHT+    , gl_MIN_SAMPLE_SHADING_VALUE_ARB+    , gl_COMPRESSED_SLUMINANCE_EXT+    , gl_RGBA4+    , gl_TEXTURE_VIEW_MIN_LAYER+    , gl_ONE_EXT+    , gl_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES+    , gl_MODELVIEW31_ARB+    , gl_MAX_TEXTURE_IMAGE_UNITS+    , gl_COLOR_ATTACHMENT3_NV+    , gl_LUMINANCE6_ALPHA2+    , gl_POINT_SPRITE_R_MODE_NV+    , gl_COMPARE_REF_TO_TEXTURE+    , gl_MAX_PROJECTION_STACK_DEPTH+    , gl_BLEND_DST_ALPHA+    , gl_TEXTURE_1D_STACK_BINDING_MESAX+    , gl_VERTEX_ATTRIB_ARRAY_LENGTH_NV+    , gl_PROGRAM_PARAMETER_NV+    , gl_VIDEO_CAPTURE_FRAME_WIDTH_NV+    , gl_MATRIX21_ARB+    , gl_LIST_BASE+    , gl_COLOR_ATTACHMENT5+    , gl_VERTEX_ARRAY_BINDING_APPLE+    , gl_RELATIVE_LARGE_CW_ARC_TO_NV+    , gl_MAX_DEFORMATION_ORDER_SGIX+    , gl_COVERAGE_AUTOMATIC_NV+    , gl_FOG_FUNC_SGIS+    , gl_SAMPLER_BUFFER_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT+    , gl_RGB8+    , gl_PRIMARY_COLOR_NV+    , gl_DEPTH_TEXTURE_MODE_ARB+    , gl_LUMINANCE12_ALPHA4+    , gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS+    , gl_TEXTURE_BUFFER_EXT+    , gl_LINK_STATUS+    , gl_VERTEX_SHADER_EXT+    , gl_VERTEX_ARRAY_POINTER+    , gl_ONE_MINUS_SRC1_ALPHA+    , gl_TEXTURE_BUFFER_SIZE_EXT+    , gl_DEBUG_SEVERITY_MEDIUM+    , gl_ASYNC_READ_PIXELS_SGIX+    , gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME+    , gl_REPLACE_EXT+    , gl_DEBUG_SOURCE_APPLICATION_ARB+    , gl_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES+    , gl_BROWSER_DEFAULT_WEBGL+    , gl_MULTISAMPLE_BUFFER_BIT0_QCOM+    , gl_DUAL_ALPHA8_SGIS+    , gl_COMPRESSED_RGB_FXT1_3DFX+    , gl_BLEND_SRC_RGB_OES+    , gl_T2F_IUI_V2F_EXT+    , gl_DRAW_BUFFER13_ARB+    , gl_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV+    , gl_TEXTURE_INTENSITY_TYPE_ARB+    , gl_DU8DV8_ATI+    , gl_MAP1_VERTEX_ATTRIB14_4_NV+    , gl_VARIANT_ARRAY_STRIDE_EXT+    , gl_RGB_S3TC+    , gl_NORMAL_ARRAY_POINTER+    , gl_CONSTANT_ALPHA_EXT+    , gl_COLOR_ATTACHMENT8_NV+    , gl_MAX_LIST_NESTING+    , gl_FRAMEBUFFER_UNDEFINED+    , gl_ACTIVE_STENCIL_FACE_EXT+    , gl_DEPTH_SCALE+    , gl_READ_PIXELS_FORMAT+    , gl_QUADS_EXT+    , gl_MAX_COMBINED_SHADER_STORAGE_BLOCKS+    , gl_OUTPUT_VERTEX_EXT+    , gl_PROGRAM_ATTRIBS_ARB+    , gl_MAP1_VERTEX_ATTRIB8_4_NV+    , gl_INVALID_ENUM+    , gl_1PASS_EXT+    , gl_FUNC_ADD_EXT+    , gl_DISTANCE_ATTENUATION_SGIS+    , gl_REG_3_ATI+    , gl_INTERPOLATE+    , gl_MITER_TRUNCATE_NV+    , gl_MAX_PROGRAM_NATIVE_ATTRIBS_ARB+    , gl_CONTEXT_COMPATIBILITY_PROFILE_BIT+    , gl_MATRIX_STRIDE+    , gl_FONT_Y_MIN_BOUNDS_BIT_NV+    , gl_COMBINER_BIAS_NV+    , gl_TEXTURE_CUBE_MAP_POSITIVE_X_ARB+    , gl_CIRCULAR_CW_ARC_TO_NV+    , gl_UNSIGNED_INT_IMAGE_1D_EXT+    , gl_BLUE_SCALE+    , gl_OFFSET_TEXTURE_SCALE_NV+    , gl_OFFSET_TEXTURE_2D_NV+    , gl_INTERNALFORMAT_DEPTH_SIZE+    , gl_TIMEOUT_IGNORED+    , gl_BGRA_EXT+    , gl_GEQUAL+    , gl_EXCLUSION_KHR+    , gl_LINES_ADJACENCY_ARB+    , gl_MAX_COMPUTE_WORK_GROUP_COUNT+    , gl_RENDERBUFFER_EXT+    , gl_GENERATE_MIPMAP+    , gl_SOURCE1_ALPHA_EXT+    , gl_VERTEX_TEXTURE+    , gl_LIGHT1+    , gl_STATIC_READ_ARB+    , gl_INTERLACE_READ_INGR+    , gl_COMPRESSED_R11_EAC_OES+    , gl_FRAGMENT_SHADER_ARB+    , gl_CURRENT_RASTER_POSITION+    , gl_WEIGHT_ARRAY_BUFFER_BINDING_OES+    , gl_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT+    , gl_RGB_FLOAT32_ATI+    , gl_LUMINANCE16_ALPHA16_EXT+    , gl_RENDERBUFFER_WIDTH_EXT+    , gl_DEPTH_RANGE+    , gl_4_BYTES+    , gl_VERTEX_WEIGHTING_EXT+    , gl_TEXTURE_SWIZZLE_B+    , gl_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV+    , gl_FEEDBACK_BUFFER_POINTER+    , gl_CULL_VERTEX_IBM+    , gl_UNPACK_SKIP_VOLUMES_SGIS+    , gl_PIXEL_CUBIC_WEIGHT_EXT+    , gl_DECR_WRAP_EXT+    , gl_TEXTURE31+    , gl_MAX_TESS_GEN_LEVEL+    , gl_YCBAYCR8A_4224_NV+    , gl_POINT_SPRITE_OES+    , gl_SAMPLER_EXTERNAL_OES+    , gl_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT+    , gl_PIXEL_PACK_BUFFER_BINDING_ARB+    , gl_DEBUG_CATEGORY_API_ERROR_AMD+    , gl_TEXCOORD3_BIT_PGI+    , gl_UNIFORM_BUFFER_EXT+    , gl_COMPRESSED_RGBA8_ETC2_EAC+    , gl_COLOR_SUM_CLAMP_NV+    , gl_SAMPLER_CUBE+    , gl_FRACTIONAL_ODD+    , gl_ONE_MINUS_DST_COLOR+    , gl_REG_9_ATI+    , gl_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV+    , gl_PIXEL_MAP_I_TO_G+    , gl_FOG_COORD_ARRAY_STRIDE+    , gl_TRIANGLES_ADJACENCY_EXT+    , gl_DRAW_BUFFER14_EXT+    , gl_TEXTURE_COMPARE_MODE_ARB+    , gl_REFLECTION_MAP_OES+    , gl_WARPS_PER_SM_NV+    , gl_QUERY_WAIT+    , gl_COMPRESSED_SLUMINANCE_ALPHA+    , gl_MAP2_TEXTURE_COORD_3+    , gl_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV+    , gl_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV+    , gl_INTENSITY_FLOAT32_ATI+    , gl_CLAMP_TO_BORDER_SGIS+    , gl_FIELDS_NV+    , gl_MAX_GEOMETRY_OUTPUT_VERTICES+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER+    , gl_INT_SAMPLER_CUBE_EXT+    , gl_SOURCE0_RGB_EXT+    , gl_DRAW_BUFFER10_ATI+    , gl_VERTEX_ATTRIB_ARRAY_INTEGER_EXT+    , gl_COPY_WRITE_BUFFER_NV+    , gl_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV+    , gl_LUMINANCE8_OES+    , gl_POST_CONVOLUTION_RED_BIAS_EXT+    , gl_HSL_COLOR_KHR+    , gl_SAMPLE_MASK_VALUE_NV+    , gl_SLUMINANCE8_NV+    , gl_ASYNC_MARKER_SGIX+    , gl_TEXTURE17+    , gl_SYNC_CL_EVENT_COMPLETE_ARB+    , gl_INVARIANT_VALUE_EXT+    , gl_BUMP_ROT_MATRIX_SIZE_ATI+    , gl_ACTIVE_VARYING_MAX_LENGTH_NV+    , gl_DEPTH_COMPONENT16+    , gl_MODELVIEW25_ARB+    , gl_SHADER_BINARY_VIV+    , gl_VERTEX_ARRAY_STRIDE_EXT+    , gl_VERTEX_ATTRIB_ARRAY_POINTER_ARB+    , gl_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB+    , gl_MAX_PALETTE_MATRICES_ARB+    , gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER+    , gl_DEPTH_COMPONENT32_ARB+    , gl_PRESERVE_ATI+    , gl_PIXEL_TEX_GEN_ALPHA_LS_SGIX+    , gl_VERTEX_PROGRAM_TWO_SIDE_NV+    , gl_MAX_ELEMENTS_INDICES_EXT+    , gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS+    , gl_CONTEXT_LOST+    , gl_VERTEX_SUBROUTINE_UNIFORM+    , gl_COMPRESSED_SRGB_EXT+    , gl_SAMPLER_2D_MULTISAMPLE_ARRAY+    , gl_MAX_PROGRAM_ADDRESS_REGISTERS_ARB+    , gl_STENCIL_INDEX_OES+    , gl_PATH_INITIAL_END_CAP_NV+    , gl_INTENSITY32F_ARB+    , gl_SAMPLES_PASSED+    , gl_INT_IMAGE_2D_RECT_EXT+    , gl_CLIP_PLANE2+    , gl_PALETTE8_RGB8_OES+    , gl_ALPHA16I_EXT+    , gl_VERTEX_ARRAY+    , gl_TEXTURE23_ARB+    , gl_AMBIENT_AND_DIFFUSE+    , gl_MULTISAMPLE_BUFFER_BIT2_QCOM+    , gl_LUMINANCE_FLOAT16_ATI+    , gl_INDEX_ARRAY_TYPE+    , gl_COMPATIBLE_SUBROUTINES+    , gl_VERTEX4_BIT_PGI+    , gl_FOG_COORD_SRC+    , gl_FULL_SUPPORT+    , gl_STEREO+    , gl_LUMINANCE_ALPHA16UI_EXT+    , gl_ONE_MINUS_SRC_COLOR+    , gl_MAX_SHADER_STORAGE_BLOCK_SIZE+    , gl_REPLICATE_BORDER_HP+    , gl_VERTEX_ATTRIB_MAP1_ORDER_APPLE+    , gl_CPU_OPTIMIZED_QCOM+    , gl_FLOAT16_VEC2_NV+    , gl_SAMPLE_ALPHA_TO_ONE_SGIS+    , gl_MAP2_VERTEX_ATTRIB12_4_NV+    , gl_COMBINER_MUX_SUM_NV+    , gl_UNSIGNED_SHORT_5_6_5_REV_EXT+    , gl_TEXTURE20_ARB+    , gl_DOT3_RGB+    , gl_STENCIL_BUFFER_BIT0_QCOM+    , gl_LO_SCALE_NV+    , gl_FONT_ASCENDER_BIT_NV+    , gl_DRAW_BUFFER9_EXT+    , gl_UNSIGNED_INT_2_10_10_10_REV+    , gl_BINNING_CONTROL_HINT_QCOM+    , gl_PROGRAM_TEMPORARIES_ARB+    , gl_MODELVIEW27_ARB+    , gl_RGBA16F_EXT+    , gl_INDEX_ARRAY_TYPE_EXT+    , gl_MAX_VERTEX_SHADER_LOCALS_EXT+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Z_OES+    , gl_COMP_BIT_ATI+    , gl_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT+    , gl_INT_IMAGE_2D_MULTISAMPLE_ARRAY+    , gl_RGB10_A2_EXT+    , gl_MAP1_VERTEX_ATTRIB4_4_NV+    , gl_FLOAT_VEC3+    , gl_DELETE_STATUS+    , gl_PN_TRIANGLES_TESSELATION_LEVEL_ATI+    , gl_UNCORRELATED_NV+    , gl_RELATIVE_SMALL_CW_ARC_TO_NV+    , gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT+    , gl_RGB_FLOAT16_ATI+    , gl_DRAW_BUFFER7_ATI+    , gl_COMBINE_ALPHA_ARB+    , gl_RESET_NOTIFICATION_STRATEGY_EXT+    , gl_DRAW_BUFFER10_NV+    , gl_READ_PIXEL_DATA_RANGE_POINTER_NV+    , gl_TRANSFORM_FEEDBACK_ACTIVE+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR+    , gl_PROGRAM_PIPELINE_BINDING+    , gl_SRGB8_ALPHA8+    , gl_COLOR_INDEX16_EXT+    , gl_PHONG_WIN+    , gl_MAX_TEXTURE_IMAGE_UNITS_NV+    , gl_DSDT8_MAG8_NV+    , gl_COPY_READ_BUFFER+    , gl_RGBA16F+    , gl_UNSIGNED_SHORT_5_6_5+    , gl_CLIP_DISTANCE5+    , gl_TEXTURE_BINDING_3D_OES+    , gl_IUI_V2F_EXT+    , gl_OFFSET_HILO_TEXTURE_RECTANGLE_NV+    , gl_ONE_MINUS_CONSTANT_ALPHA+    , gl_SMALL_CW_ARC_TO_NV+    , gl_IMAGE_BINDING_NAME_EXT+    , gl_CURRENT_FOG_COORDINATE_EXT+    , gl_SKIP_COMPONENTS4_NV+    , gl_CLIP_PLANE5_IMG+    , gl_PATH_MITER_LIMIT_NV+    , gl_TEXTURE_3D+    , gl_MAX_COMPUTE_SHADER_STORAGE_BLOCKS+    , gl_COMPRESSED_LUMINANCE_LATC1_EXT+    , gl_MULTISAMPLE_BUFFER_BIT3_QCOM+    , gl_SECONDARY_COLOR_ARRAY_SIZE+    , gl_RENDERBUFFER_SAMPLES_IMG+    , gl_R1UI_C4UB_V3F_SUN+    , gl_PIXEL_TEX_GEN_ALPHA_MS_SGIX+    , gl_TRANSFORM_FEEDBACK_NV+    , gl_FRAMEBUFFER_RENDERABLE+    , gl_HARDLIGHT_KHR+    , gl_SOURCE0_ALPHA+    , gl_COMBINER4_NV+    , gl_ELEMENT_ARRAY_BUFFER_BINDING+    , gl_TEXTURE10_ARB+    , gl_CURRENT_BINORMAL_EXT+    , gl_REG_26_ATI+    , gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS+    , gl_ACTIVE_VARYINGS_NV+    , gl_COMBINE_RGB_EXT+    , gl_FRAMEBUFFER_COMPLETE_EXT+    , gl_MAX_WIDTH+    , gl_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS+    , gl_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT+    , gl_COLORDODGE_KHR+    , gl_PATH_GEN_COEFF_NV+    , gl_FLOAT_MAT4x3_NV+    , gl_MINMAX_SINK+    , gl_FRONT_AND_BACK+    , gl_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT+    , gl_MATRIX1_ARB+    , gl_VIEWPORT_SUBPIXEL_BITS+    , gl_MAX_DUAL_SOURCE_DRAW_BUFFERS+    , gl_BOOL_VEC3_ARB+    , gl_OPERAND2_ALPHA+    , gl_MAX_DEBUG_GROUP_STACK_DEPTH+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR+    , gl_PROGRAM+    , gl_WEIGHT_ARRAY_SIZE_ARB+    , gl_BUFFER_GPU_ADDRESS_NV+    , gl_ALPHA8_EXT+    , gl_RGBA_MODE+    , gl_DUDV_ATI+    , gl_VERTEX_ATTRIB_ARRAY_INTEGER_NV+    , gl_RESAMPLE_DECIMATE_OML+    , gl_QUERY_BUFFER+    , gl_SINGLE_COLOR+    , gl_INT_SAMPLER_RENDERBUFFER_NV+    , gl_MAT_COLOR_INDEXES_BIT_PGI+    , gl_MODELVIEW3_ARB+    , gl_TESS_CONTROL_OUTPUT_VERTICES_EXT+    , gl_PIXEL_MAP_B_TO_B+    , gl_VERTEX_ATTRIB_MAP1_SIZE_APPLE+    , gl_DOUBLE_MAT3+    , gl_MAX_COMBINED_UNIFORM_BLOCKS+    , gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT+    , gl_MAX_VERTEX_IMAGE_UNIFORMS+    , gl_QUERY_RESULT_NO_WAIT_AMD+    , gl_MODELVIEW26_ARB+    , gl_DEPTH_COMPONENT24_OES+    , gl_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB+    , gl_EVAL_VERTEX_ATTRIB6_NV+    , gl_OUTPUT_TEXTURE_COORD24_EXT+    , gl_COMPUTE_SHADER_BIT+    , gl_MATRIX7_ARB+    , gl_RENDER+    , gl_VERTEX_ATTRIB_BINDING+    , gl_VIDEO_CAPTURE_TO_422_SUPPORTED_NV+    , gl_TEXTURE_COORD_ARRAY_ADDRESS_NV+    , gl_UNSIGNED_INT_SAMPLER_2D_RECT+    , gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB+    , gl_GENERATE_MIPMAP_SGIS+    , gl_SHADER_IMAGE_STORE+    , gl_INT_SAMPLER_3D+    , gl_PROGRAM_BINARY_LENGTH+    , gl_REFERENCED_BY_GEOMETRY_SHADER+    , gl_SHADER_IMAGE_ACCESS_BARRIER_BIT+    , gl_MAX_TESS_CONTROL_ATOMIC_COUNTERS+    , gl_TEXTURE_BUFFER_OFFSET_ALIGNMENT+    , gl_LINE+    , gl_RENDERBUFFER_ALPHA_SIZE_EXT+    , gl_INTENSITY+    , gl_AFFINE_3D_NV+    , gl_ADD_SIGNED_ARB+    , gl_OBJECT_COMPILE_STATUS_ARB+    , gl_RGB8I_EXT+    , gl_COMMAND_BARRIER_BIT+    , gl_COMBINE_RGB+    , gl_VERTEX_SHADER_BINDING_EXT+    , gl_SECONDARY_COLOR_ARRAY_SIZE_EXT+    , gl_DEPTH_EXT+    , gl_LINE_RESET_TOKEN+    , gl_SMOOTH_POINT_SIZE_GRANULARITY+    , gl_SAMPLER_2D_MULTISAMPLE+    , gl_PRIMARY_COLOR_ARB+    , gl_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY+    , gl_GEOMETRY_TEXTURE+    , gl_SOURCE1_RGB_ARB+    , gl_COLOR_ATTACHMENT6_EXT+    , gl_PIXEL_MAP_I_TO_I+    , gl_EVAL_VERTEX_ATTRIB7_NV+    , gl_OP_MIN_EXT+    , gl_RGB16F_EXT+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Z+    , gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS+    , gl_PACK_RESAMPLE_SGIX+    , gl_GREEN_BIAS+    , gl_DEPTH_STENCIL_NV+    , gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER+    , gl_CON_29_ATI+    , gl_COLOR_ARRAY_STRIDE_EXT+    , gl_ISOLINES_EXT+    , gl_MODELVIEW4_ARB+    , gl_LINES_ADJACENCY+    , gl_PATH_FILL_MASK_NV+    , gl_HISTOGRAM_LUMINANCE_SIZE+    , gl_TEXTURE_BINDING_RENDERBUFFER_NV+    , gl_PIXEL_UNPACK_BUFFER_EXT+    , gl_RENDERBUFFER_GREEN_SIZE+    , gl_PASS_THROUGH_NV+    , gl_GEOMETRY_VERTICES_OUT_EXT+    , gl_EVAL_VERTEX_ATTRIB12_NV+    , gl_SMOOTH_QUADRATIC_CURVE_TO_NV+    , gl_TEXTURE_BUFFER_SIZE+    , gl_READ_PIXEL_DATA_RANGE_NV+    , gl_ALIASED_LINE_WIDTH_RANGE+    , gl_TRACK_MATRIX_NV+    , gl_COLOR_ARRAY_LIST_STRIDE_IBM+    , gl_WEIGHT_ARRAY_POINTER_ARB+    , gl_SMOOTH_LINE_WIDTH_GRANULARITY+    , gl_CLIP_DISTANCE6+    , gl_FRAMEBUFFER_BINDING+    , gl_EVAL_VERTEX_ATTRIB4_NV+    , gl_CURRENT_SECONDARY_COLOR_EXT+    , gl_IMAGE_CLASS_2_X_32+    , gl_PERSPECTIVE_CORRECTION_HINT+    , gl_NATIVE_GRAPHICS_BEGIN_HINT_PGI+    , gl_SATURATE_BIT_ATI+    , gl_FONT_UNITS_PER_EM_BIT_NV+    , gl_EVAL_VERTEX_ATTRIB3_NV+    , gl_R16UI+    , gl_OUTPUT_TEXTURE_COORD17_EXT+    , gl_TEXTURE_MULTI_BUFFER_HINT_SGIX+    , gl_SKIP_MISSING_GLYPH_NV+    , gl_MIRROR_CLAMP_TO_EDGE_EXT+    , gl_TEXTURE_TYPE_QCOM+    , gl_RGB5_A1+    , gl_UNIFORM_BARRIER_BIT_EXT+    , gl_MULTISAMPLE+    , gl_SAMPLES_ARB+    , gl_RGBA_INTEGER+    , gl_STENCIL_COMPONENTS+    , gl_DEBUG_SEVERITY_LOW+    , gl_TEXTURE_COMPARE_SGIX+    , gl_COLOR_ARRAY_LIST_IBM+    , gl_COMPRESSED_SIGNED_RED_RGTC1+    , gl_MATRIX3_NV+    , gl_MAX_FRAGMENT_UNIFORM_BLOCKS+    , gl_INT_SAMPLER_3D_EXT+    , gl_MODELVIEW19_ARB+    , gl_SWIZZLE_STRQ_DQ_ATI+    , gl_COMBINE_ARB+    , gl_FRAGMENT_COLOR_EXT+    , gl_RENDERBUFFER_WIDTH+    , gl_LUMINANCE4_EXT+    , gl_UNSIGNED_INT_SAMPLER_2D_EXT+    , gl_RGB_SCALE_EXT+    , gl_PIXEL_MAP_I_TO_R+    , gl_DOT4_ATI+    , gl_MAP1_VERTEX_ATTRIB7_4_NV+    , gl_VERTEX_ATTRIB_ARRAY_ENABLED_ARB+    , gl_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB+    , gl_POST_COLOR_MATRIX_BLUE_SCALE_SGI+    , gl_NUM_VIRTUAL_PAGE_SIZES_ARB+    , gl_RENDERBUFFER_FREE_MEMORY_ATI+    , gl_FRAMEBUFFER_DEFAULT_LAYERS+    , gl_COMPUTE_SUBROUTINE+    , gl_PROGRAM_TEX_INSTRUCTIONS_ARB+    , gl_SIGNALED_APPLE+    , gl_MULTISAMPLE_3DFX+    , gl_TEXTURE_INDEX_SIZE_EXT+    , gl_LAYOUT_LINEAR_INTEL+    , gl_LERP_ATI+    , gl_FACTOR_MAX_AMD+    , gl_MATRIX2_ARB+    , gl_EQUAL+    , gl_COLOR_ATTACHMENT0_OES+    , gl_MAX_COLOR_MATRIX_STACK_DEPTH_SGI+    , gl_RGB16+    , gl_COLOR_INDEX4_EXT+    , gl_PROXY_TEXTURE_CUBE_MAP_EXT+    , gl_STENCIL_BACK_FUNC_ATI+    , gl_DRAW_BUFFER8_EXT+    , gl_DST_ALPHA+    , gl_DEBUG_SOURCE_SHADER_COMPILER_KHR+    , gl_C4UB_V2F+    , gl_INTERNALFORMAT_BLUE_TYPE+    , gl_PIXEL_TILE_GRID_DEPTH_SGIX+    , gl_DEPTH_BITS+    , gl_FLOAT16_VEC3_NV+    , gl_ARRAY_OBJECT_OFFSET_ATI+    , gl_DOUBLE_MAT2_EXT+    , gl_TEXTURE_COLOR_SAMPLES_NV+    , gl_NORMAL_ARRAY_EXT+    , gl_MIRROR_CLAMP_TO_EDGE_ATI+    , gl_EDGE_FLAG_ARRAY_POINTER+    , gl_UNSIGNED_INT_24_8_MESA+    , gl_IMAGE_COMPATIBILITY_CLASS+    , gl_BACK_LEFT+    , gl_TESS_EVALUATION_SHADER_INVOCATIONS_ARB+    , gl_COLOR_TABLE_BIAS+    , gl_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG+    , gl_DARKEN_KHR+    , gl_OCCLUSION_TEST_RESULT_HP+    , gl_DEBUG_TYPE_POP_GROUP_KHR+    , gl_CLAMP_TO_BORDER_ARB+    , gl_UNSIGNED_BYTE_2_3_3_REV+    , gl_SOURCE2_ALPHA_ARB+    , gl_SAMPLE_COVERAGE+    , gl_INTERLEAVED_ATTRIBS_EXT+    , gl_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL+    , gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING+    , gl_VERTEX_SHADER+    , gl_INDEX_ARRAY_ADDRESS_NV+    , gl_QUERY_COUNTER_BITS+    , gl_COMPRESSED_RGBA_ASTC_8x6_KHR+    , gl_FRAMEBUFFER_BINDING_EXT+    , gl_VERTEX_ELEMENT_SWIZZLE_AMD+    , gl_DEBUG_CATEGORY_SHADER_COMPILER_AMD+    , gl_ARRAY_OBJECT_BUFFER_ATI+    , gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES+    , gl_RENDERBUFFER_INTERNAL_FORMAT+    , gl_VIEW_CLASS_8_BITS+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Y_OES+    , gl_SHADER_IMAGE_ATOMIC+    , gl_MAX_GEOMETRY_OUTPUT_VERTICES_ARB+    , gl_COVERAGE_ATTACHMENT_NV+    , gl_NUM_PROGRAM_BINARY_FORMATS_OES+    , gl_CURRENT_RASTER_TEXTURE_COORDS+    , gl_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS+    , gl_PIXEL_MAP_A_TO_A+    , gl_TEXTURE_WRAP_T+    , gl_LINE_SMOOTH_HINT+    , gl_DRAW_BUFFER11_EXT+    , gl_OFFSET_TEXTURE_RECTANGLE_SCALE_NV+    , gl_LUMINANCE16_SNORM+    , gl_PERFQUERY_FLUSH_INTEL+    , gl_HISTOGRAM_SINK+    , gl_MAP1_VERTEX_ATTRIB15_4_NV+    , gl_OUTPUT_TEXTURE_COORD7_EXT+    , gl_HISTOGRAM_BLUE_SIZE+    , gl_LUMINANCE32F_EXT+    , gl_RG16UI+    , gl_TEXTURE_ALPHA_MODULATE_IMG+    , gl_INT_SAMPLER_2D_RECT+    , gl_STENCIL_BACK_WRITEMASK+    , gl_PIXEL_TRANSFORM_2D_MATRIX_EXT+    , gl_AUX3+    , gl_FRAMEBUFFER_UNSUPPORTED+    , gl_MAX_TEXTURE_MAX_ANISOTROPY_EXT+    , gl_TEXTURE_DEFORMATION_SGIX+    , gl_CON_23_ATI+    , gl_CLIP_DISTANCE0+    , gl_COLOR_ATTACHMENT10+    , gl_POINT_SIZE_MAX_EXT+    , gl_TEXTURE5+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR+    , gl_PATH_MODELVIEW_MATRIX_NV+    , gl_LINE_LOOP+    , gl_MODELVIEW17_ARB+    , gl_UNSIGNED_INT16_VEC2_NV+    , gl_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES+    , gl_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS+    , gl_DRAW_BUFFER3_EXT+    , gl_TEXTURE_SHADOW+    , gl_STENCIL_ATTACHMENT+    , gl_MAP_STENCIL+    , gl_PATH_DASH_ARRAY_COUNT_NV+    , gl_BLEND+    , gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT+    , gl_TEXTURE_TARGET_QCOM+    , gl_NORMAL_MAP_OES+    , gl_UNSIGNED_SHORT_4_4_4_4_REV_EXT+    , gl_TEXTURE20+    , gl_EDGE_FLAG_ARRAY_COUNT_EXT+    , gl_SMOOTH+    , gl_SHADER_INCLUDE_ARB+    , gl_CLAMP_TO_EDGE_SGIS+    , gl_COMPRESSED_ALPHA+    , gl_TEXTURE_IMAGE_FORMAT+    , gl_MAX_FRAMEBUFFER_LAYERS+    , gl_WRITEONLY_RENDERING_QCOM+    , gl_BACK_RIGHT+    , gl_INVARIANT_DATATYPE_EXT+    , gl_LINE_TO_NV+    , gl_PIXEL_UNPACK_BUFFER_BINDING_ARB+    , gl_LIST_BIT+    , gl_MAX_ATTRIB_STACK_DEPTH+    , gl_FRAGMENT_SHADER+    , gl_IMPLEMENTATION_COLOR_READ_FORMAT+    , gl_COLOR_TABLE_WIDTH_SGI+    , gl_DEBUG_OBJECT_MESA+    , gl_EYE_LINE_SGIS+    , gl_COMPRESSED_ALPHA_ARB+    , gl_DEPTH_BUFFER_BIT7_QCOM+    , gl_OPERAND2_RGB_ARB+    , gl_PROGRAM_BINARY_ANGLE+    , gl_MATRIX_EXT+    , gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS+    , gl_RED_NV+    , gl_LIGHT7+    , gl_LOW_FLOAT+    , gl_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT+    , gl_CON_18_ATI+    , gl_UNIFORM_BUFFER_ADDRESS_NV+    , gl_VERTEX_ARRAY_BUFFER_BINDING_ARB+    , gl_RED_BIT_ATI+    , gl_TRACE_TEXTURES_BIT_MESA+    , gl_GEOMETRY_SHADER+    , gl_VERTEX_ARRAY_ADDRESS_NV+    , gl_TIMEOUT_IGNORED_APPLE+    , gl_RENDERBUFFER_BINDING+    , gl_RGB16F+    , gl_TEXTURE_COORD_ARRAY_LENGTH_NV+    , gl_MAX_FRAMEBUFFER_LAYERS_EXT+    , gl_MODELVIEW23_ARB+    , gl_BGR_EXT+    , gl_ONE_MINUS_SRC1_COLOR+    , gl_VARIANT_ARRAY_EXT+    , gl_RGB4+    , gl_RENDERBUFFER_DEPTH_SIZE_OES+    , gl_MAX_VARYING_COMPONENTS_EXT+    , gl_CURRENT_MATRIX_NV+    , gl_T2F_IUI_N3F_V3F_EXT+    , gl_SLUMINANCE8+    , gl_MODELVIEW1_MATRIX_EXT+    , gl_MODELVIEW29_ARB+    , gl_COLOR_ATTACHMENT5_EXT+    , gl_DOUBLE_MAT2+    , gl_RGBA12_EXT+    , gl_ACCUM_BLUE_BITS+    , gl_INVARIANT_EXT+    , gl_ACTIVE_UNIFORM_MAX_LENGTH+    , gl_FOG_SPECULAR_TEXTURE_WIN+    , gl_COLOR_TABLE_SCALE_SGI+    , gl_IUI_V3F_EXT+    , gl_UNSIGNED_INT_IMAGE_3D_EXT+    , gl_MAX_DEBUG_MESSAGE_LENGTH_KHR+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Y+    , gl_DOUBLE_VEC2+    , gl_MAX_SAMPLE_MASK_WORDS+    , gl_DEBUG_OUTPUT+    , gl_OBJECT_SHADER_SOURCE_LENGTH_ARB+    , gl_R32F_EXT+    , gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV+    , gl_COPY_WRITE_BUFFER_BINDING+    , gl_TEXTURE15_ARB+    , gl_UNIFORM_BLOCK_NAME_LENGTH+    , gl_COLOR_ATTACHMENT4_NV+    , gl_DST_OVER_NV+    , gl_ATOMIC_COUNTER_BUFFER+    , gl_MAP1_VERTEX_ATTRIB12_4_NV+    , gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB+    , gl_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE+    , gl_RGB_RAW_422_APPLE+    , gl_MAX_RECTANGLE_TEXTURE_SIZE+    , gl_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT+    , gl_FRAGMENT_COLOR_MATERIAL_SGIX+    , gl_POST_COLOR_MATRIX_RED_SCALE_SGI+    , gl_VIBRANCE_SCALE_NV+    , gl_POINT_FADE_THRESHOLD_SIZE+    , gl_QUERY_NO_WAIT_NV+    , gl_FRAGMENT_SHADER_DERIVATIVE_HINT_OES+    , gl_RESAMPLE_REPLICATE_OML+    , gl_RENDERBUFFER_BINDING_ANGLE+    , gl_R1UI_V3F_SUN+    , gl_CONVOLUTION_2D+    , gl_OBJECT_TYPE+    , gl_MAX_MAP_TESSELLATION_NV+    , gl_DOUBLE_MAT4x3_EXT+    , gl_MULTISAMPLE_BUFFER_BIT4_QCOM+    , gl_UNSIGNED_INT64_AMD+    , gl_MAX_PATCH_VERTICES+    , gl_TEXTURE_COMPONENTS+    , gl_ELEMENT_ARRAY_POINTER_APPLE+    , gl_COLOR_ATTACHMENT6_NV+    , gl_MODELVIEW_PROJECTION_NV+    , gl_STATIC_ATI+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Z+    , gl_CONVOLUTION_BORDER_MODE+    , gl_2PASS_0_SGIS+    , gl_GREEN_INTEGER_EXT+    , gl_DEBUG_TYPE_OTHER+    , gl_FRAMEBUFFER_SRGB_EXT+    , gl_COLOR_WRITEMASK+    , gl_TANGENT_ARRAY_EXT+    , gl_FONT_TARGET_UNAVAILABLE_NV+    , gl_FONT_UNAVAILABLE_NV+    , gl_COMBINER2_NV+    , gl_TEXTURE22_ARB+    , gl_PATH_INITIAL_DASH_CAP_NV+    , gl_SWIZZLE_STRQ_ATI+    , gl_OBJECT_LINE_SGIS+    , gl_MAX_NUM_ACTIVE_VARIABLES+    , gl_COLOR_ATTACHMENT3_EXT+    , gl_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI+    , gl_SCREEN_KHR+    , gl_ZOOM_X+    , gl_PROGRAM_MATRIX_EXT+    , gl_TEXTURE_VIEW+    , gl_NEGATIVE_ONE_TO_ONE+    , gl_CONVOLUTION_1D_EXT+    , gl_CLAMP_READ_COLOR+    , gl_REFLECTION_MAP+    , gl_PROXY_HISTOGRAM+    , gl_MAX_TESS_EVALUATION_INPUT_COMPONENTS+    , gl_HALF_FLOAT_ARB+    , gl_LINE_QUALITY_HINT_SGIX+    , gl_MAP_WRITE_BIT_EXT+    , gl_PIXEL_TRANSFORM_2D_EXT+    , gl_INCR+    , gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES+    , gl_LUMINANCE_FLOAT32_ATI+    , gl_EVAL_VERTEX_ATTRIB11_NV+    , gl_TEXTURE_COORD_ARRAY_SIZE+    , gl_IMAGE_BINDING_LEVEL_EXT+    , gl_RGBA16I_EXT+    , gl_T2F_IUI_N3F_V2F_EXT+    , gl_MIN_PROGRAM_TEXEL_OFFSET_NV+    , gl_EQUIV+    , gl_TEXTURE_BINDING_CUBE_MAP_ARB+    , gl_DRAW_BUFFER1_NV+    , gl_INTERLACE_READ_OML+    , gl_TEXTURE15+    , gl_NAND+    , gl_VERTEX_ARRAY_RANGE_APPLE+    , gl_CONDITION_SATISFIED_APPLE+    , gl_DISPATCH_INDIRECT_BUFFER_BINDING+    , gl_RG16I+    , gl_EYE_RADIAL_NV+    , gl_SLUMINANCE_ALPHA_EXT+    , gl_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL+    , gl_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT+    , gl_RG32F+    , gl_SRC1_ALPHA+    , gl_RGBA2+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES+    , gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT+    , gl_TEXTURE_COORD_ARRAY_STRIDE_EXT+    , gl_OUTPUT_TEXTURE_COORD10_EXT+    , gl_DEPTH_ATTACHMENT+    , gl_NORMAL_ARRAY_POINTER_EXT+    , gl_OPERAND0_ALPHA_ARB+    , gl_COMPRESSED_LUMINANCE_ARB+    , gl_LIST_PRIORITY_SGIX+    , gl_BOUNDING_BOX_NV+    , gl_PATCH_VERTICES_EXT+    , gl_COPY_INVERTED+    , gl_FRAMEBUFFER_BARRIER_BIT_EXT+    , gl_OBJECT_ACTIVE_ATTRIBUTES_ARB+    , gl_DISCRETE_AMD+    , gl_DOT3_RGBA_ARB+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES+    , gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES+    , gl_SET+    , gl_TEXTURE_MAX_ANISOTROPY_EXT+    , gl_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2+    , gl_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB+    , gl_MAP2_GRID_DOMAIN+    , gl_RENDERBUFFER_SAMPLES+    , gl_MAX_TEXTURE_LOD_BIAS+    , gl_DEPTH_PASS_INSTRUMENT_SGIX+    , gl_TEXTURE_COORD_NV+    , gl_PROGRAM_ERROR_POSITION_NV+    , gl_RENDERBUFFER_RED_SIZE_EXT+    , gl_INDEX_OFFSET+    , gl_CURRENT_FOG_COORD+    , gl_MIRRORED_REPEAT+    , gl_MAP_INVALIDATE_BUFFER_BIT+    , gl_MATRIX_INDEX_ARRAY_OES+    , gl_DRAW_BUFFER6_ATI+    , gl_INTENSITY12+    , gl_FLOAT_RGBA_NV+    , gl_SMOOTH_POINT_SIZE_RANGE+    , gl_COLOR_BUFFER_BIT1_QCOM+    , gl_TEXT_FRAGMENT_SHADER_ATI+    , gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT+    , gl_CLIP_PLANE3+    , gl_NAMED_STRING_TYPE_ARB+    , gl_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB+    , gl_TEXTURE_VIEW_MIN_LEVEL+    , gl_SWIZZLE_STQ_ATI+    , gl_RGBA_FLOAT_MODE_ARB+    , gl_RG8UI+    , gl_FRAGMENT_DEPTH+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR+    , gl_MULTISAMPLE_SGIS+    , gl_PROXY_TEXTURE_1D+    , gl_MODELVIEW0_ARB+    , gl_LINE_STRIP_ADJACENCY_EXT+    , gl_RGBA16UI+    , gl_SRC_ATOP_NV+    , gl_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE+    , gl_REG_30_ATI+    , gl_4PASS_3_EXT+    , gl_INT_IMAGE_3D_EXT+    , gl_SYSTEM_FONT_NAME_NV+    , gl_DRAW_BUFFER6+    , gl_RG32I+    , gl_COLOR_BUFFER_BIT3_QCOM+    , gl_CURRENT_OCCLUSION_QUERY_ID_NV+    , gl_INTERNALFORMAT_STENCIL_SIZE+    , gl_STATIC_DRAW_ARB+    , gl_COMPRESSED_SRGB_ALPHA_EXT+    , gl_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI+    , gl_PALETTE8_RGBA4_OES+    , gl_FOG_START+    , gl_DEBUG_TYPE_POP_GROUP+    , gl_DRAW_BUFFER14_ATI+    , gl_IMAGE_1D_ARRAY+    , gl_RELATIVE_LARGE_CCW_ARC_TO_NV+    , gl_FONT_MAX_ADVANCE_HEIGHT_BIT_NV+    , gl_EXCLUSION_NV+    , gl_FONT_X_MAX_BOUNDS_BIT_NV+    , gl_PIXEL_TEX_GEN_Q_FLOOR_SGIX+    , gl_DEPTH_BUFFER_BIT2_QCOM+    , gl_UNPACK_FLIP_Y_WEBGL+    , gl_COLOR_ATTACHMENT15_NV+    , gl_RG16F_EXT+    , gl_PRIMARY_COLOR+    , gl_UNIFORM_BLOCK_DATA_SIZE+    , gl_INTERNALFORMAT_STENCIL_TYPE+    , gl_COLOR_MATRIX_STACK_DEPTH_SGI+    , gl_AND+    , gl_GEOMETRY_INPUT_TYPE_ARB+    , gl_SAMPLER_BUFFER+    , gl_COLOR_BUFFER_BIT2_QCOM+    , gl_MAX_CLIP_DISTANCES+    , gl_OUTPUT_TEXTURE_COORD25_EXT+    , gl_SLIM8U_SGIX+    , gl_OP_DOT4_EXT+    , gl_INFO_LOG_LENGTH+    , gl_REG_25_ATI+    , gl_MAX_PROGRAM_CALL_DEPTH_NV+    , gl_VIRTUAL_PAGE_SIZE_INDEX_ARB+    , gl_MAX_PROGRAM_RESULT_COMPONENTS_NV+    , gl_RELATIVE_CONIC_CURVE_TO_NV+    , gl_CLIP_DISTANCE4+    , gl_UTF8_NV+    , gl_INVALID_INDEX+    , gl_DOT3_RGBA_IMG+    , gl_FRAGMENT_MATERIAL_EXT+    , gl_PACK_CMYK_HINT_EXT+    , gl_LUMINANCE_ALPHA8I_EXT+    , gl_PIXEL_BUFFER_BARRIER_BIT_EXT+    , gl_BUFFER_KHR+    , gl_STENCIL_BACK_OP_VALUE_AMD+    , gl_DST_COLOR+    , gl_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT+    , gl_ZERO+    , gl_COORD_REPLACE+    , gl_FRAMEBUFFER_SRGB+    , gl_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES+    , gl_CONSTANT+    , gl_TEXTURE_CONSTANT_DATA_SUNX+    , gl_MAX_DEBUG_MESSAGE_LENGTH+    , gl_MAX_VARYING_FLOATS+    , gl_PLUS_NV+    , gl_UNIFORM_NAME_LENGTH+    , gl_SECONDARY_COLOR_ARRAY_STRIDE+    , gl_MAP1_VERTEX_ATTRIB13_4_NV+    , gl_TRACK_MATRIX_TRANSFORM_NV+    , gl_MAX_COMPUTE_UNIFORM_COMPONENTS+    , gl_DOUBLE_MAT4+    , gl_TEXTURE_SRGB_DECODE_EXT+    , gl_TEXTURE_BORDER_COLOR+    , gl_DISPLAY_LIST+    , gl_COLOR_ENCODING+    , gl_EXPAND_NEGATE_NV+    , gl_UNPACK_ROW_LENGTH_EXT+    , gl_RGB_SCALE_ARB+    , gl_CURRENT_ATTRIB_NV+    , gl_TEXTURE25+    , gl_DEPTH+    , gl_DRAW_BUFFER2_ARB+    , gl_FENCE_CONDITION_NV+    , gl_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB+    , gl_OP_POWER_EXT+    , gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB+    , gl_FRAMEBUFFER_DEFAULT+    , gl_COLOR_ATTACHMENT13_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE+    , gl_CUBIC_HP+    , gl_GREATER+    , gl_OP_MOV_EXT+    , gl_RED_SNORM+    , gl_ALPHA_MAX_CLAMP_INGR+    , gl_VERTEX_ATTRIB_ARRAY_LONG+    , gl_DEBUG_SEVERITY_LOW_ARB+    , gl_PURGEABLE_APPLE+    , gl_MAX_SHININESS_NV+    , gl_VERTEX_SHADER_INVARIANTS_EXT+    , gl_CLIP_DISTANCE1+    , gl_PROGRAM_NATIVE_PARAMETERS_ARB+    , gl_SRC_ALPHA_SATURATE+    , gl_COLOR_RENDERABLE+    , gl_LINE_STIPPLE+    , gl_COMPILE_AND_EXECUTE+    , gl_FOG_COORDINATE+    , gl_MULTISAMPLE_COVERAGE_MODES_NV+    , gl_OUTPUT_TEXTURE_COORD16_EXT+    , gl_SCALE_BY_FOUR_NV+    , gl_INDEX_ARRAY_BUFFER_BINDING_ARB+    , gl_MAX_TEXTURE_IMAGE_UNITS_ARB+    , gl_HALF_BIAS_NEGATE_NV+    , gl_INT_IMAGE_2D_MULTISAMPLE_EXT+    , gl_CON_30_ATI+    , gl_SAMPLE_ALPHA_TO_ONE_EXT+    , gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB+    , gl_STORAGE_CACHED_APPLE+    , gl_SAMPLER_2D_SHADOW+    , gl_ALPHA_FLOAT16_APPLE+    , gl_PERFQUERY_COUNTER_EVENT_INTEL+    , gl_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB+    , gl_BACK_PRIMARY_COLOR_NV+    , gl_PROGRAM_PARAMETERS_ARB+    , gl_MIN_SPARSE_LEVEL_AMD+    , gl_INT_SAMPLER_1D_ARRAY_EXT+    , gl_DOUBLEBUFFER+    , gl_NEGATIVE_W_EXT+    , gl_VIEW_CLASS_RGTC1_RED+    , gl_PROGRAM_KHR+    , gl_LINEARDODGE_NV+    , gl_NORMALIZED_RANGE_EXT+    , gl_BUFFER_SERIALIZED_MODIFY_APPLE+    , gl_TEXTURE3_ARB+    , gl_INDEX_TEST_FUNC_EXT+    , gl_COMPUTE_TEXTURE+    , gl_UNSIGNED_INT_IMAGE_BUFFER_EXT+    , gl_CON_9_ATI+    , gl_RELATIVE_LINE_TO_NV+    , gl_TEXTURE_RECTANGLE_NV+    , gl_COMPRESSED_RGBA_S3TC_DXT5_ANGLE+    , gl_COMPRESSED_RGBA_ASTC_6x5_KHR+    , gl_TEXTURE_LUMINANCE_SIZE+    , gl_PROJECTION_MATRIX+    , gl_VIBRANCE_BIAS_NV+    , gl_MAX_VERTEX_ATOMIC_COUNTERS+    , gl_FOG_COORD_ARRAY_POINTER+    , gl_POLYGON_OFFSET_BIAS_EXT+    , gl_DEBUG_SOURCE_OTHER+    , gl_LINEAR_SHARPEN_ALPHA_SGIS+    , gl_AVERAGE_EXT+    , gl_PACK_SKIP_IMAGES_EXT+    , gl_BITMAP_TOKEN+    , gl_TESSELLATION_MODE_AMD+    , gl_POST_CONVOLUTION_COLOR_TABLE_SGI+    , gl_MODELVIEW1_EXT+    , gl_OPERAND1_RGB_ARB+    , gl_4D_COLOR_TEXTURE+    , gl_ACTIVE_ATTRIBUTES+    , gl_BUFFER_BINDING+    , gl_VERTEX_STATE_PROGRAM_NV+    , gl_DST_ATOP_NV+    , gl_TEXTURE_DEPTH_EXT+    , gl_UNSIGNED_INT_VEC4+    , gl_GREEN_INTEGER+    , gl_DOUBLE_MAT4x2_EXT+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR+    , gl_INDEX_ARRAY_LIST_IBM+    , gl_SAMPLER_2D_ARRAY_SHADOW+    , gl_COMPRESSED_SRGB_S3TC_DXT1_NV+    , gl_COMPRESSED_RGBA_ASTC_4x3x3_OES+    , gl_DRAW_BUFFER3_ATI+    , gl_MAX_FRAGMENT_UNIFORM_COMPONENTS+    , gl_PROXY_TEXTURE_3D_EXT+    , gl_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT+    , gl_PATH_COMPUTED_LENGTH_NV+    , gl_DEPTH_STENCIL_MESA+    , gl_MAT_DIFFUSE_BIT_PGI+    , gl_TEXTURE_STENCIL_SIZE+    , gl_PATH_PROJECTION_NV+    , gl_DUAL_TEXTURE_SELECT_SGIS+    , gl_MATRIX14_ARB+    , gl_PATH_OBJECT_BOUNDING_BOX_NV+    , gl_READ_PIXELS+    , gl_TRIANGLE_LIST_SUN+    , gl_COMPARE_R_TO_TEXTURE+    , gl_INTENSITY8UI_EXT+    , gl_DEBUG_OUTPUT_SYNCHRONOUS_ARB+    , gl_COLOR_TABLE_GREEN_SIZE+    , gl_CURRENT_VERTEX_ATTRIB+    , gl_POST_COLOR_MATRIX_GREEN_BIAS+    , gl_GPU_MEMORY_INFO_EVICTION_COUNT_NVX+    , gl_SUBSAMPLE_DISTANCE_AMD+    , gl_SRGB8_EXT+    , gl_DETAIL_TEXTURE_FUNC_POINTS_SGIS+    , gl_INCR_WRAP_EXT+    , gl_UNPACK_COMPRESSED_BLOCK_SIZE+    , gl_OBJECT_VALIDATE_STATUS_ARB+    , gl_WEIGHT_ARRAY_STRIDE_ARB+    , gl_OUTPUT_TEXTURE_COORD3_EXT+    , gl_TEXTURE16_ARB+    , gl_VIDEO_COLOR_CONVERSION_MATRIX_NV+    , gl_EYE_DISTANCE_TO_POINT_SGIS+    , gl_TEXTURE_COMPARE_FUNC+    , gl_DEPTH_BUFFER_FLOAT_MODE_NV+    , gl_TEXTURE_SWIZZLE_G+    , gl_DEBUG_TYPE_OTHER_ARB+    , gl_TESS_EVALUATION_SHADER_BIT_EXT+    , gl_VERTEX_PROGRAM_CALLBACK_DATA_MESA+    , gl_INT_SAMPLER_BUFFER_EXT+    , gl_OP_CLAMP_EXT+    , gl_POINT_SIZE_MIN+    , gl_UNSIGNED_BYTE_3_3_2_EXT+    , gl_TEXTURE_CLIPMAP_DEPTH_SGIX+    , gl_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT+    , gl_DOUBLE_VEC4_EXT+    , gl_SYNC_CONDITION_APPLE+    , gl_MAX_TEXTURE_COORDS_NV+    , gl_RELATIVE_QUADRATIC_CURVE_TO_NV+    , gl_DEBUG_GROUP_STACK_DEPTH_KHR+    , gl_CONTEXT_LOST_KHR+    , gl_QUADRATIC_CURVE_TO_NV+    , gl_MIN_EXT+    , gl_VERTEX_ATTRIB_ARRAY11_NV+    , gl_FACTOR_ALPHA_MODULATE_IMG+    , gl_MAP1_GRID_DOMAIN+    , gl_COLOR_MATRIX_STACK_DEPTH+    , gl_IMAGE_PIXEL_FORMAT+    , gl_DRAW_BUFFER1_EXT+    , gl_UNSIGNED_INT_VEC2+    , gl_QUAD_LUMINANCE8_SGIS+    , gl_ELEMENT_ARRAY_UNIFIED_NV+    , gl_COLOR_LOGIC_OP+    , gl_GREEN_NV+    , gl_DEPTH_COMPONENT+    , gl_TEXTURE18+    , gl_COMBINER_SUM_OUTPUT_NV+    , gl_DUAL_LUMINANCE8_SGIS+    , gl_PATH_DASH_OFFSET_RESET_NV+    , gl_INT_SAMPLER_BUFFER+    , gl_DEBUG_SEVERITY_MEDIUM_ARB+    , gl_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT+    , gl_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX+    , gl_UNSIGNED_SHORT_15_1_MESA+    , gl_LUMINANCE32F_ARB+    , gl_TRANSPOSE_NV+    , gl_LUMINANCE8_EXT+    , gl_WRITE_DISCARD_NV+    , gl_STENCIL_BUFFER_BIT5_QCOM+    , gl_FOG_END+    , gl_DRAW_BUFFER9_NV+    , gl_PROVOKING_VERTEX_EXT+    , gl_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS+    , gl_2PASS_0_EXT+    , gl_MAP_UNSYNCHRONIZED_BIT+    , gl_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI+    , gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV+    , gl_SAMPLER_CUBE_SHADOW+    , gl_V2F+    , gl_IMAGE_2D_EXT+    , gl_LUMINANCE32UI_EXT+    , gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT+    , gl_SLUMINANCE8_ALPHA8_NV+    , gl_MAX_ASYNC_DRAW_PIXELS_SGIX+    , gl_POINT_SIZE_ARRAY_TYPE_OES+    , gl_SIGNED_LUMINANCE8_ALPHA8_NV+    , gl_UNSIGNED_INT_24_8_EXT+    , gl_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV+    , gl_CONIC_CURVE_TO_NV+    , gl_STREAM_DRAW_ARB+    , gl_ACTIVE_PROGRAM_EXT+    , gl_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB+    , gl_PROGRAM_RESIDENT_NV+    , gl_COLOR_TABLE_ALPHA_SIZE_SGI+    , gl_INT_IMAGE_2D_ARRAY_EXT+    , gl_OUTPUT_TEXTURE_COORD15_EXT+    , gl_SRC_OUT_NV+    , gl_MAP_FLUSH_EXPLICIT_BIT+    , gl_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB+    , gl_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS+    , gl_EVAL_VERTEX_ATTRIB2_NV+    , gl_PIXEL_TILE_WIDTH_SGIX+    , gl_PROXY_TEXTURE_RECTANGLE+    , gl_VERTEX_ARRAY_BINDING+    , gl_CLIP_PLANE4+    , gl_EVAL_VERTEX_ATTRIB15_NV+    , gl_POINT_FADE_THRESHOLD_SIZE_ARB+    , gl_UNSIGNED_INT_5_9_9_9_REV_EXT+    , gl_DEBUG_GROUP_STACK_DEPTH+    , gl_QUERY_WAIT_INVERTED+    , gl_DRAW_PIXEL_TOKEN+    , gl_OPERAND2_ALPHA_ARB+    , gl_STACK_UNDERFLOW+    , gl_FLOAT_VEC4_ARB+    , gl_OBJECT_INFO_LOG_LENGTH_ARB+    , gl_DRAW_BUFFER15_EXT+    , gl_PATH_PROJECTION_MATRIX_NV+    , gl_ADD_SIGNED+    , gl_FRAGMENT_INTERPOLATION_OFFSET_BITS+    , gl_VERTEX_SHADER_INSTRUCTIONS_EXT+    , gl_NEXT_BUFFER_NV+    , gl_TRIANGLE_STRIP_ADJACENCY_ARB+    , gl_UNSIGNED_BYTE_2_3_3_REV_EXT+    , gl_QUERY_RESULT_NO_WAIT+    , gl_SECONDARY_COLOR_ARRAY_ADDRESS_NV+    , gl_ALPHA16_SNORM+    , gl_COLOR_ARRAY_LENGTH_NV+    , gl_SLUMINANCE_EXT+    , gl_DOT_PRODUCT_TEXTURE_2D_NV+    , gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES+    , gl_INT_IMAGE_2D_ARRAY+    , gl_POLYGON_OFFSET_LINE+    , gl_ONE_MINUS_DST_ALPHA+    , gl_ACCUM_BUFFER_BIT+    , gl_SOURCE1_ALPHA_ARB+    , gl_HISTOGRAM_WIDTH_EXT+    , gl_RENDERBUFFER_SAMPLES_EXT+    , gl_FRAGMENT_LIGHTING_SGIX+    , gl_TEXTURE_WIDTH_QCOM+    , gl_TEXTURE_BUFFER_FORMAT_EXT+    , gl_VERTEX_PROGRAM_TWO_SIDE+    , gl_DEBUG_TYPE_OTHER_KHR+    , gl_PRIMARY_COLOR_EXT+    , gl_TEXTURE_COMPRESSED_ARB+    , gl_PROXY_TEXTURE_1D_ARRAY_EXT+    , gl_NORMAL_ARRAY_TYPE+    , gl_POST_COLOR_MATRIX_RED_BIAS_SGI+    , gl_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB+    , gl_VERTEX_ATTRIB_ARRAY7_NV+    , gl_MAX_VERTEX_ATTRIB_STRIDE+    , gl_COLOR+    , gl_YCBCR_422_APPLE+    , gl_TESS_GEN_SPACING+    , gl_VERTEX_SHADER_INVOCATIONS_ARB+    , gl_STENCIL_INDEX4_OES+    , gl_COMBINER_CD_DOT_PRODUCT_NV+    , gl_VIRTUAL_PAGE_SIZE_Z_ARB+    , gl_RIGHT+    , gl_ALPHA16F_ARB+    , gl_TANGENT_ARRAY_TYPE_EXT+    , gl_READ_FRAMEBUFFER_NV+    , gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT+    , gl_PALETTE4_RGB8_OES+    , gl_UNSIGNED_INT_IMAGE_3D+    , gl_NORMAL_ARRAY_ADDRESS_NV+    , gl_NO_RESET_NOTIFICATION_EXT+    , gl_RGB4_S3TC+    , gl_AUX1+    , gl_MODELVIEW1_ARB+    , gl_OP_NEGATE_EXT+    , gl_PACK_COMPRESSED_BLOCK_HEIGHT+    , gl_RENDERBUFFER_BINDING_OES+    , gl_INT_IMAGE_1D+    , gl_TEXTURE_GEQUAL_R_SGIX+    , gl_VERTEX_BINDING_DIVISOR+    , gl_BLEND_SRC_ALPHA_OES+    , gl_READ_BUFFER_NV+    , gl_DEBUG_TYPE_ERROR_KHR+    , gl_INT_IMAGE_CUBE_EXT+    , gl_COMPRESSED_RGBA_ASTC_6x6x6_OES+    , gl_IMAGE_MIN_FILTER_HP+    , gl_QUAD_ALPHA8_SGIS+    , gl_IMAGE_BINDING_LEVEL+    , gl_DOT3_RGB_EXT+    , gl_SAMPLER_3D_OES+    , gl_INT_VEC4+    , gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT+    , gl_NO_RESET_NOTIFICATION_ARB+    , gl_IMAGE_MAG_FILTER_HP+    , gl_COLOR4_BIT_PGI+    , gl_MAX_CLIPMAP_DEPTH_SGIX+    , gl_DEBUG_CATEGORY_OTHER_AMD+    , gl_INT_IMAGE_2D_MULTISAMPLE+    , gl_PERFQUERY_COUNTER_DATA_FLOAT_INTEL+    , gl_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB+    , gl_BINORMAL_ARRAY_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT+    , gl_DRAW_BUFFER9_ARB+    , gl_DSDT8_NV+    , gl_MAP1_VERTEX_ATTRIB9_4_NV+    , gl_PROGRAM_OBJECT_ARB+    , gl_FONT_UNDERLINE_POSITION_BIT_NV+    , gl_SHADER_OPERATION_NV+    , gl_QUERY_RESULT_AVAILABLE_EXT+    , gl_VIVIDLIGHT_NV+    , gl_HSL_HUE_NV+    , gl_EMBOSS_MAP_NV+    , gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB+    , gl_ALL_BARRIER_BITS+    , gl_TEXTURE11_ARB+    , gl_BOLD_BIT_NV+    , gl_SAMPLE_BUFFERS_3DFX+    , gl_INTERNALFORMAT_ALPHA_SIZE+    , gl_COMPRESSED_RGBA_ASTC_8x8_KHR+    , gl_VIRTUAL_PAGE_SIZE_Z_AMD+    , gl_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE+    , gl_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB+    , gl_DRAW_PIXELS_APPLE+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB+    , gl_FRAGMENT_COLOR_MATERIAL_FACE_SGIX+    , gl_DRAW_INDIRECT_ADDRESS_NV+    , gl_COVERAGE_BUFFER_BIT_NV+    , gl_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT+    , gl_BLUE_NV+    , gl_TEXTURE0_ARB+    , gl_DEBUG_SOURCE_THIRD_PARTY_ARB+    , gl_TEXTURE_NORMAL_EXT+    , gl_TEXTURE_BUFFER_FORMAT_ARB+    , gl_OPERAND0_ALPHA+    , gl_FLOAT_MAT2x3+    , gl_TEXTURE_BINDING+    , gl_INT_SAMPLER_2D+    , gl_OR+    , gl_INT16_VEC2_NV+    , gl_DUAL_ALPHA4_SGIS+    , gl_FRAMEZOOM_FACTOR_SGIX+    , gl_IMAGE_2D_MULTISAMPLE_ARRAY_EXT+    , gl_RGB_INTEGER+    , gl_UNSIGNED_INT64_VEC2_NV+    , gl_OUTPUT_TEXTURE_COORD21_EXT+    , gl_ENABLE_BIT+    , gl_POLYGON_OFFSET_EXT+    , gl_PIXEL_TEX_GEN_MODE_SGIX+    , gl_LINE_SMOOTH+    , gl_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB+    , gl_COLOR_TABLE_LUMINANCE_SIZE_SGI+    , gl_COLOR_BUFFER_BIT7_QCOM+    , gl_PATH_FILL_MODE_NV+    , gl_IMAGE_CUBE+    , gl_CON_5_ATI+    , gl_COLOR_ATTACHMENT2_EXT+    , gl_FAILURE_NV+    , gl_VERTEX_ARRAY_LIST_STRIDE_IBM+    , gl_MAX_SPARSE_TEXTURE_SIZE_ARB+    , gl_VERSION_ES_CL_1_1+    , gl_PERFMON_GLOBAL_MODE_QCOM+    , gl_DEPTH_COMPONENT32F+    , gl_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT+    , gl_MAX_TESS_CONTROL_UNIFORM_COMPONENTS+    , gl_IMAGE_2D_MULTISAMPLE_EXT+    , gl_FRAMEBUFFER_OES+    , gl_TRANSPOSE_PROJECTION_MATRIX+    , gl_BUFFER_MAP_POINTER+    , gl_INT_10_10_10_2_OES+    , gl_PROGRAM_PIPELINE_OBJECT_EXT+    , gl_GEOMETRY_SHADER_INVOCATIONS_EXT+    , gl_SPRITE_AXIS_SGIX+    , gl_RED_INTEGER_EXT+    , gl_COMPRESSED_RGBA_ASTC_10x6_KHR+    , gl_TEXTURE_COORD_ARRAY_COUNT_EXT+    , gl_SIGNED_RGB_NV+    , gl_CW+    , gl_PACK_SUBSAMPLE_RATE_SGIX+    , gl_TEXTURE14_ARB+    , gl_OUTPUT_TEXTURE_COORD26_EXT+    , gl_DRAW_BUFFER+    , gl_PACK_ROW_BYTES_APPLE+    , gl_BLUE_INTEGER_EXT+    , gl_STORAGE_CLIENT_APPLE+    , gl_ALL_SHADER_BITS+    , gl_FOG_COORDINATE_ARRAY_POINTER+    , gl_ACTIVE_PROGRAM+    , gl_RGBA32F_ARB+    , gl_VERTEX_ATTRIB_ARRAY_INTEGER+    , gl_MAP2_VERTEX_ATTRIB13_4_NV+    , gl_SAMPLER_2D+    , gl_QUERY+    , gl_GEOMETRY_INPUT_TYPE_EXT+    , gl_RGB5_A1_OES+    , gl_MATRIX15_ARB+    , gl_INT_IMAGE_CUBE_MAP_ARRAY+    , gl_STACK_OVERFLOW+    , gl_NORMAL_ARRAY_LENGTH_NV+    , gl_RENDERBUFFER_BLUE_SIZE_EXT+    , gl_TEXTURE_INTENSITY_SIZE_EXT+    , gl_POINT_SIZE_MIN_SGIS+    , gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW+    , gl_BEVEL_NV+    , gl_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX+    , gl_SIGNED_RGBA_NV+    , gl_COLOR_CLEAR_VALUE+    , gl_ARRAY_BUFFER+    , gl_CLIP_PLANE2_IMG+    , gl_POLYGON_OFFSET_UNITS+    , gl_COLOR_ARRAY_POINTER_EXT+    , gl_POST_COLOR_MATRIX_COLOR_TABLE+    , gl_SHADOW_AMBIENT_SGIX+    , gl_SAMPLES+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES+    , gl_MIRRORED_REPEAT_IBM+    , gl_TEXTURE_2D_MULTISAMPLE_ARRAY_OES+    , gl_FRAMEBUFFER_DEFAULT_WIDTH+    , gl_TEXTURE_GEN_MODE_OES+    , gl_BLEND_SRC_ALPHA_EXT+    , gl_OUTPUT_COLOR0_EXT+    , gl_SLUMINANCE8_ALPHA8+    , gl_SAMPLER_3D_ARB+    , gl_UNSIGNED_INT_SAMPLER_3D+    , gl_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT+    , gl_PATH_FORMAT_SVG_NV+    , gl_MAP1_BINORMAL_EXT+    , gl_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX+    , gl_COLOR_ARRAY_BUFFER_BINDING+    , gl_MATRIX_INDEX_ARRAY_TYPE_OES+    , gl_PROJECTION_STACK_DEPTH+    , gl_AUTO_NORMAL+    , gl_FRAGMENT_SHADER_ATI+    , gl_SAMPLE_BUFFERS_EXT+    , gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT+    , gl_UNSIGNED_INT_10_10_10_2+    , gl_COMPRESSED_RG11_EAC_OES+    , gl_LUMINANCE8I_EXT+    , gl_VERTEX_ATTRIB_ARRAY13_NV+    , gl_UNIFORM_BUFFER_SIZE+    , gl_TEXTURE2_ARB+    , gl_COMPRESSED_RGBA_BPTC_UNORM_ARB+    , gl_POLYGON+    , gl_CLIENT_MAPPED_BUFFER_BARRIER_BIT+    , gl_ELEMENT_ARRAY_BUFFER_BINDING_ARB+    , gl_SAMPLE_BUFFERS_ARB+    , gl_RGBA4_DXT5_S3TC+    , gl_STREAM_READ+    , gl_STATIC_READ+    , gl_MAX_FRAGMENT_ATOMIC_COUNTERS+    , gl_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT+    , gl_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST+    , gl_COUNT_DOWN_NV+    , gl_SLUMINANCE+    , gl_INNOCENT_CONTEXT_RESET+    , gl_DRAW_FRAMEBUFFER_BINDING_NV+    , gl_VERTEX_STREAM3_ATI+    , gl_TRIANGULAR_NV+    , gl_SAMPLER_2D_RECT_ARB+    , gl_POST_CONVOLUTION_GREEN_SCALE_EXT+    , gl_SKIP_COMPONENTS2_NV+    , gl_IMAGE_1D+    , gl_ATTRIB_ARRAY_TYPE_NV+    , gl_ORDER+    , gl_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB+    , gl_RGB4_EXT+    , gl_COMPRESSED_TEXTURE_FORMATS_ARB+    , gl_STENCIL_INDEX16_EXT+    , gl_OP_RECIP_SQRT_EXT+    , gl_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS+    , gl_MAX_PROGRAM_TEXEL_OFFSET+    , gl_POST_TEXTURE_FILTER_BIAS_SGIX+    , gl_RGB32F_EXT+    , gl_SURFACE_REGISTERED_NV+    , gl_RGBA_FLOAT16_APPLE+    , gl_VIDEO_BUFFER_BINDING_NV+    , gl_PRIMITIVE_RESTART_INDEX+    , gl_DOT3_RGB_ARB+    , gl_INT64_VEC4_NV+    , gl_DRAW_BUFFER12_ATI+    , gl_RESAMPLE_REPLICATE_SGIX+    , gl_ALPHA+    , gl_MATRIX22_ARB+    , gl_DEPTH_TEST+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR+    , gl_BLEND_SRC_ALPHA+    , gl_MIRROR_CLAMP_ATI+    , gl_COMBINER3_NV+    , gl_TEXTURE_BINDING_1D_ARRAY_EXT+    , gl_MIRROR_CLAMP_TO_BORDER_EXT+    , gl_MAP1_INDEX+    , gl_VIEW_CLASS_BPTC_FLOAT+    , gl_TRANSPOSE_AFFINE_2D_NV+    , gl_IMAGE_CLASS_2_X_8+    , gl_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB+    , gl_EYE_POINT_SGIS+    , gl_TEXTURE_DEPTH_SIZE_ARB+    , gl_GLYPH_HAS_KERNING_BIT_NV+    , gl_ACTIVE_SUBROUTINES+    , gl_MVP_MATRIX_EXT+    , gl_READ_FRAMEBUFFER_BINDING+    , gl_GUILTY_CONTEXT_RESET_EXT+    , gl_ALPHA16UI_EXT+    , gl_TEXTURE_SWIZZLE_B_EXT+    , gl_RGB16I_EXT+    , gl_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB+    , gl_VERTEX_WEIGHT_ARRAY_EXT+    , gl_SWIZZLE_STR_DR_ATI+    , gl_READ_FRAMEBUFFER+    , gl_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI+    , gl_COORD_REPLACE_NV+    , gl_MAX_CLIP_PLANES+    , gl_DRAW_BUFFER0+    , gl_SPRITE_OBJECT_ALIGNED_SGIX+    , gl_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX+    , gl_CONSERVE_MEMORY_HINT_PGI+    , gl_GET_TEXTURE_IMAGE_FORMAT+    , gl_MOVE_TO_RESETS_NV+    , gl_SHADER_CONSISTENT_NV+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT+    , gl_PACK_ALIGNMENT+    , gl_HISTOGRAM_ALPHA_SIZE+    , gl_SHARED_TEXTURE_PALETTE_EXT+    , gl_MODELVIEW0_MATRIX_EXT+    , gl_MAX_NAME_LENGTH+    , gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY+    , gl_IMAGE_2D+    , gl_QUERY_BUFFER_AMD+    , gl_BUMP_ENVMAP_ATI+    , gl_POINTS+    , gl_ARRAY_SIZE+    , gl_MAX_CLIP_PLANES_IMG+    , gl_TRIANGLE_STRIP_ADJACENCY_EXT+    , gl_VERTEX_STREAM6_ATI+    , gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR+    , gl_TEXTURE22+    , gl_CURRENT_FOG_COORDINATE+    , gl_CON_27_ATI+    , gl_MAX_VERTEX_UNITS_OES+    , gl_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT+    , gl_SIGNED_INTENSITY8_NV+    , gl_MAX_EVAL_ORDER+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT+    , gl_DYNAMIC_READ_ARB+    , gl_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV+    , gl_FLOAT16_NV+    , gl_COMPUTE_SHADER_INVOCATIONS_ARB+    , gl_VERTEX_SHADER_OPTIMIZED_EXT+    , gl_TEXTURE_LOD_BIAS_EXT+    , gl_INT8_VEC3_NV+    , gl_4PASS_0_SGIS+    , gl_HISTOGRAM_EXT+    , gl_ALLOW_DRAW_WIN_HINT_PGI+    , gl_TEXTURE_GREEN_SIZE_EXT+    , gl_R32I+    , gl_REG_22_ATI+    , gl_UNSIGNED_INT_ATOMIC_COUNTER+    , gl_COLOR_ATTACHMENT2+    , gl_INTENSITY8+    , gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS+    , gl_FOG_DENSITY+    , gl_RENDERBUFFER_HEIGHT_EXT+    , gl_Z_EXT+    , gl_TEXTURE_FETCH_BARRIER_BIT+    , gl_PROGRAM_BINARY_FORMATS+    , gl_UNSIGNED_INT_IMAGE_BUFFER+    , gl_OPERAND0_RGB+    , gl_COVERAGE_COMPONENT_NV+    , gl_NEGATE_BIT_ATI+    , gl_DEBUG_TYPE_PUSH_GROUP+    , gl_SELECT+    , gl_IMAGE_BINDING_ACCESS_EXT+    , gl_TEXTURE_GEN_STR_OES+    , gl_OCCLUSION_TEST_HP+    , gl_BLEND_DST_RGB_OES+    , gl_IMAGE_BINDING_NAME+    , gl_DUAL_LUMINANCE_ALPHA8_SGIS+    , gl_POLYGON_BIT+    , gl_POST_COLOR_MATRIX_GREEN_BIAS_SGI+    , gl_COLOR_ATTACHMENT8_EXT+    , gl_BLUE_BIAS+    , gl_EMISSION+    , gl_DEPTH_ATTACHMENT_OES+    , gl_POLYGON_OFFSET_FACTOR_EXT+    , gl_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT+    , gl_TEXTURE_MATERIAL_FACE_EXT+    , gl_PN_TRIANGLES_POINT_MODE_CUBIC_ATI+    , gl_DRAW_FRAMEBUFFER_ANGLE+    , gl_DEPTH_BUFFER_BIT3_QCOM+    , gl_DISTANCE_ATTENUATION_EXT+    , gl_TRACE_ARRAYS_BIT_MESA+    , gl_MOVE_TO_NV+    , gl_2PASS_1_SGIS+    , gl_DUAL_LUMINANCE4_SGIS+    , gl_PRIMITIVES_SUBMITTED_ARB+    , gl_TOP_LEVEL_ARRAY_STRIDE+    , gl_NORMAL_ARRAY_STRIDE+    , gl_TEXTURE_2D_ARRAY_EXT+    , gl_UNPACK_COMPRESSED_BLOCK_WIDTH+    , gl_TEXTURE_FIXED_SAMPLE_LOCATIONS+    , gl_YCRCBA_SGIX+    , gl_LOCATION_COMPONENT+    , gl_TEXTURE27+    , gl_CONTEXT_FLAG_DEBUG_BIT_KHR+    , gl_FOG_COORDINATE_EXT+    , gl_DEBUG_CALLBACK_USER_PARAM_KHR+    , gl_MIRRORED_REPEAT_OES+    , gl_SYNC_GPU_COMMANDS_COMPLETE+    , gl_SLUMINANCE8_ALPHA8_EXT+    , gl_TEXTURE_BUFFER_OFFSET+    , gl_PROXY_COLOR_TABLE+    , gl_FIXED+    , gl_SRGB8+    , gl_COMPRESSED_RGBA+    , gl_IMAGE_BINDING_FORMAT+    , gl_MAX_RENDERBUFFER_SIZE_OES+    , gl_DEBUG_SOURCE_API+    , gl_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH+    , gl_CLIP_PLANE3_IMG+    , gl_TEXTURE16+    , gl_FRAGMENTS_INSTRUMENT_SGIX+    , gl_MATRIX8_ARB+    , gl_DOUBLE_MAT2x4+    , gl_DRAW_BUFFER9_ATI+    , gl_CURRENT_TEXTURE_COORDS+    , gl_DOT_PRODUCT_TEXTURE_3D_NV+    , gl_SECONDARY_COLOR_ARRAY_STRIDE_EXT+    , gl_UNSIGNED_INT_IMAGE_2D_ARRAY+    , gl_FRAMEBUFFER_BARRIER_BIT+    , gl_MAX_SAMPLES_IMG+    , gl_TESS_CONTROL_SHADER_BIT_EXT+    , gl_PROGRAM_NATIVE_TEMPORARIES_ARB+    , gl_COMPRESSED_RGB_PVRTC_4BPPV1_IMG+    , gl_VERTEX_PROGRAM_ARB+    , gl_MAP2_BINORMAL_EXT+    , gl_ETC1_RGB8_OES+    , gl_PROGRAM_MATRIX_STACK_DEPTH_EXT+    , gl_TEXTURE_USAGE_ANGLE+    , gl_TEXTURE_MATRIX+    , gl_INT_SAMPLER_CUBE_MAP_ARRAY_EXT+    , gl_INDEX_ARRAY_STRIDE+    , gl_POST_COLOR_MATRIX_BLUE_SCALE+    , gl_TESS_CONTROL_OUTPUT_VERTICES+    , gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET+    , gl_COMPRESSED_RGBA_ASTC_6x6_KHR+    , gl_INTERNALFORMAT_SHARED_SIZE+    , gl_SOURCE1_RGB_EXT+    , gl_STENCIL_PASS_DEPTH_FAIL+    , gl_MATRIX_PALETTE_OES+    , gl_MIN_FRAGMENT_INTERPOLATION_OFFSET+    , gl_DOT3_RGBA_EXT+    , gl_CLIP_VOLUME_CLIPPING_HINT_EXT+    , gl_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV+    , gl_FONT_X_MIN_BOUNDS_BIT_NV+    , gl_WRAP_BORDER_SUN+    , gl_MAP_INVALIDATE_RANGE_BIT+    , gl_PATH_MODELVIEW_NV+    , gl_TESS_CONTROL_SHADER+    , gl_VERTEX_STREAM1_ATI+    , gl_R3_G3_B2+    , gl_LARGE_CW_ARC_TO_NV+    , gl_PRIMITIVE_BOUNDING_BOX_EXT+    , gl_ALPHA_BIAS+    , gl_DST_IN_NV+    , gl_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT+    , gl_NUM_FILL_STREAMS_NV+    , gl_ATTRIB_ARRAY_POINTER_NV+    , gl_SOURCE0_RGB_ARB+    , gl_MAX_PROGRAM_TEXEL_OFFSET_EXT+    , gl_MATRIX27_ARB+    , gl_R11F_G11F_B10F+    , gl_ATOMIC_COUNTER_BUFFER_INDEX+    , gl_TEXTURE_SWIZZLE_R_EXT+    , gl_MAX_ASYNC_READ_PIXELS_SGIX+    , gl_ACTIVE_TEXTURE_ARB+    , gl_VERTEX_SHADER_LOCAL_CONSTANTS_EXT+    , gl_REFERENCE_PLANE_SGIX+    , gl_UNPACK_CLIENT_STORAGE_APPLE+    , gl_SKIP_DECODE_EXT+    , gl_MAP2_VERTEX_ATTRIB10_4_NV+    , gl_ALIASED_POINT_SIZE_RANGE+    , gl_MATRIX1_NV+    , gl_CCW+    , gl_SIGNED_RGB_UNSIGNED_ALPHA_NV+    , gl_TEXTURE_BUFFER_BINDING_EXT+    , gl_LINEAR_ATTENUATION+    , gl_FACTOR_MIN_AMD+    , gl_POINT_SPRITE_NV+    , gl_IMAGE_FORMAT_COMPATIBILITY_TYPE+    , gl_QUERY_DEPTH_FAIL_EVENT_BIT_AMD+    , gl_MAP2_VERTEX_ATTRIB4_4_NV+    , gl_PATCHES_EXT+    , gl_MAX_TESS_EVALUATION_UNIFORM_BLOCKS+    , gl_OUTPUT_TEXTURE_COORD14_EXT+    , gl_V3F+    , gl_4PASS_2_EXT+    , gl_SAMPLES_3DFX+    , gl_MINOR_VERSION+    , gl_MAX_DEBUG_LOGGED_MESSAGES_ARB+    , gl_FUNC_REVERSE_SUBTRACT+    , gl_LAYOUT_LINEAR_CPU_CACHED_INTEL+    , gl_MULTISAMPLE_BUFFER_BIT1_QCOM+    , gl_SIGNED_RGB8_UNSIGNED_ALPHA8_NV+    , gl_PATH_COVER_DEPTH_FUNC_NV+    , gl_MAX_FRAGMENT_IMAGE_UNIFORMS+    , gl_PROXY_TEXTURE_COLOR_TABLE_SGI+    , gl_PIXEL_MAP_I_TO_A_SIZE+    , gl_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR+    , gl_FRAME_NV+    , gl_FLOAT_R_NV+    , gl_REFLECTION_MAP_EXT+    , gl_RG_SNORM+    , gl_REPLACE_MIDDLE_SUN+    , gl_COMBINER_MAPPING_NV+    , gl_ELEMENT_ARRAY_BUFFER_ARB+    , gl_SECONDARY_COLOR_ARRAY_LENGTH_NV+    , gl_INTERPOLATE_ARB+    , gl_POSITION+    , gl_PIXEL_MAP_S_TO_S+    , gl_READ_ONLY_ARB+    , gl_INVALID_FRAMEBUFFER_OPERATION_OES+    , gl_3DC_X_AMD+    , gl_FRAGMENT_LIGHT2_SGIX+    , gl_IMAGE_SCALE_Y_HP+    , gl_READ_FRAMEBUFFER_APPLE+    , gl_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES+    , gl_INDEX_MATERIAL_PARAMETER_EXT+    , gl_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH+    , gl_CUBIC_CURVE_TO_NV+    , gl_QUAD_ALPHA4_SGIS+    , gl_FORCE_BLUE_TO_ONE_NV+    , gl_DOT_PRODUCT_DEPTH_REPLACE_NV+    , gl_MAX_VERTEX_OUTPUT_COMPONENTS+    , gl_COMPRESSED_RGBA_ASTC_4x4x3_OES+    , gl_COLOR_INDEX1_EXT+    , gl_RELATIVE_CUBIC_CURVE_TO_NV+    , gl_NOR+    , gl_CLIPPING_OUTPUT_PRIMITIVES_ARB+    , gl_VERTEX_ATTRIB_ARRAY12_NV+    , gl_LINE_BIT+    , gl_FOG_COORDINATE_ARRAY_STRIDE+    , gl_DUP_FIRST_CUBIC_CURVE_TO_NV+    , gl_FRAMEBUFFER_INCOMPLETE_FORMATS_OES+    , gl_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS+    , gl_PATH_MAX_MODELVIEW_STACK_DEPTH_NV+    , gl_FRAGMENT_LIGHT1_SGIX+    , gl_PALETTE8_R5_G6_B5_OES+    , gl_DUAL_INTENSITY4_SGIS+    , gl_TEXTURE_RANGE_LENGTH_APPLE+    , gl_TEXTURE_RECTANGLE_ARB+    , gl_LUMINANCE16F_EXT+    , gl_DEPTH_COMPONENT16_ARB+    , gl_BUMP_TARGET_ATI+    , gl_MAX_CUBE_MAP_TEXTURE_SIZE_ARB+    , gl_DOUBLE_MAT3_EXT+    , gl_QUERY_BY_REGION_NO_WAIT_INVERTED+    , gl_MAX_PROGRAM_TEX_INDIRECTIONS_ARB+    , gl_QUADS+    , gl_ALPHA_INTEGER_EXT+    , gl_VERTEX_SHADER_BIT_EXT+    , gl_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX+    , gl_COLOR_MATERIAL_FACE+    , gl_LIGHT_MODEL_TWO_SIDE+    , gl_INTERLEAVED_ATTRIBS+    , gl_RGBA16I+    , gl_VERTEX_ATTRIB_ARRAY_TYPE_ARB+    , gl_DEBUG_SEVERITY_LOW_AMD+    , gl_POINT_SPRITE_COORD_ORIGIN+    , gl_DRAW_BUFFER8+    , gl_SPOT_DIRECTION+    , gl_SAMPLE_COVERAGE_INVERT_ARB+    , gl_PERFQUERY_COUNTER_RAW_INTEL+    , gl_STRICT_SCISSOR_HINT_PGI+    , gl_LUMINANCE16_EXT+    , gl_UNPACK_ALIGNMENT+    , gl_BIAS_BIT_ATI+    , gl_LARGE_CCW_ARC_TO_NV+    , gl_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB+    , gl_FASTEST+    , gl_LUMINANCE8_ALPHA8+    , gl_CONVOLUTION_FILTER_BIAS_EXT+    , gl_VIEW_CLASS_S3TC_DXT5_RGBA+    , gl_DEPTH32F_STENCIL8_NV+    , gl_TRACE_OPERATIONS_BIT_MESA+    , gl_QUERY_RESULT_EXT+    , gl_TRANSFORM_FEEDBACK_BINDING_NV+    , gl_REG_10_ATI+    , gl_MATRIX16_ARB+    , gl_FONT_HAS_KERNING_BIT_NV+    , gl_INNOCENT_CONTEXT_RESET_EXT+    , gl_VIDEO_CAPTURE_FRAME_HEIGHT_NV+    , gl_NATIVE_GRAPHICS_END_HINT_PGI+    , gl_HISTOGRAM_LUMINANCE_SIZE_EXT+    , gl_COMBINER0_NV+    , gl_COORD_REPLACE_OES+    , gl_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT+    , gl_TIMESTAMP_EXT+    , gl_MAX_IMAGE_UNITS_EXT+    , gl_POINT_SIZE_MAX_ARB+    , gl_DEPTH_WRITEMASK+    , gl_FOG_COORDINATE_ARRAY_STRIDE_EXT+    , gl_BUMP_NUM_TEX_UNITS_ATI+    , gl_INT_SAMPLER_1D_EXT+    , gl_INDEX_MODE+    , gl_422_EXT+    , gl_ATOMIC_COUNTER_BUFFER_START+    , gl_GPU_ADDRESS_NV+    , gl_REG_19_ATI+    , gl_IMAGE_BUFFER+    , gl_HISTOGRAM_GREEN_SIZE+    , gl_VERTEX_ATTRIB_ARRAY_ADDRESS_NV+    , gl_INTENSITY8_SNORM+    , gl_DEBUG_TYPE_MARKER+    , gl_VERTEX_PROGRAM_TWO_SIDE_ARB+    , gl_INDEX_MATERIAL_FACE_EXT+    , gl_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB+    , gl_CMYKA_EXT+    , gl_MAP_ATTRIB_V_ORDER_NV+    , gl_OFFSET_HILO_TEXTURE_2D_NV+    , gl_CALLIGRAPHIC_FRAGMENT_SGIX+    , gl_MAX_PROGRAM_PARAMETERS_ARB+    , gl_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV+    , gl_MAP_READ_BIT+    , gl_IMAGE_1D_EXT+    , gl_READ_BUFFER+    , gl_POST_CONVOLUTION_RED_SCALE+    , gl_MATRIX23_ARB+    , gl_MAX_SAMPLES_NV+    , gl_RGB8_SNORM+    , gl_MATRIX5_NV+    , gl_UNPACK_SWAP_BYTES+    , gl_TABLE_TOO_LARGE+    , gl_MIN_SAMPLE_SHADING_VALUE_OES+    , gl_SWIZZLE_STQ_DQ_ATI+    , gl_BUFFER_IMMUTABLE_STORAGE+    , gl_ELEMENT_ARRAY_TYPE_APPLE+    , gl_POST_COLOR_MATRIX_BLUE_BIAS_SGI+    , gl_PARTIAL_SUCCESS_NV+    , gl_LOCAL_CONSTANT_EXT+    , gl_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB+    , gl_GEOMETRY_DEFORMATION_SGIX+    , gl_SAMPLER_CUBE_MAP_ARRAY_EXT+    , gl_STENCIL_BACK_PASS_DEPTH_PASS_ATI+    , gl_DISJOINT_NV+    , gl_FLOAT_MAT4x3+    , gl_TRANSFORM_FEEDBACK_PAUSED+    , gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION+    , gl_RG8_EXT+    , gl_RECT_NV+    , gl_GEOMETRY_OUTPUT_TYPE_ARB+    , gl_DEBUG_SOURCE_API_ARB+    , gl_COLOR_ATTACHMENT15+    , gl_MAX_VARYING_FLOATS_ARB+    , gl_MAX_DRAW_BUFFERS_NV+    , gl_VERTEX_BLEND_ARB+    , gl_DOUBLE_MAT2x3_EXT+    , gl_MAX_DEBUG_LOGGED_MESSAGES_AMD+    , gl_VERTICES_SUBMITTED_ARB+    , gl_UNSIGNED_SHORT_4_4_4_4_REV_IMG+    , gl_STATE_RESTORE+    , gl_MAX_COLOR_ATTACHMENTS_EXT+    , gl_INDEX_LOGIC_OP+    , gl_PRIMITIVE_RESTART_NV+    , gl_FLOAT_MAT3x2_NV+    , gl_VERTEX_CONSISTENT_HINT_PGI+    , gl_LUMINANCE_ALPHA16F_EXT+    , gl_FLOAT_VEC2_ARB+    , gl_TEXTURE_SWIZZLE_RGBA+    , gl_PROGRAM_SEPARABLE_EXT+    , gl_COMPRESSED_RGBA_ASTC_10x8_KHR+    , gl_DEPTH_ATTACHMENT_EXT+    , gl_FRAMEBUFFER_UNSUPPORTED_OES+    , gl_OPERAND1_ALPHA+    , gl_PIXEL_MAP_I_TO_B_SIZE+    , gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT+    , gl_EVAL_2D_NV+    , gl_GREEN_MIN_CLAMP_INGR+    , gl_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS+    , gl_VERTEX_ARRAY_RANGE_NV+    , gl_CONTEXT_LOST_WEBGL+    , gl_MAX_VERTEX_UNIFORM_BLOCKS+    , gl_VERTEX_ATTRIB_MAP2_COEFF_APPLE+    , gl_TEXTURE_MAX_CLAMP_T_SGIX+    , gl_LUMINANCE_SNORM+    , gl_PIXEL_UNPACK_BUFFER_BINDING+    , gl_RGBA8_SNORM+    , gl_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX+    , gl_PIXEL_SUBSAMPLE_2424_SGIX+    , gl_TEXTURE_GATHER_SHADOW+    , gl_VIEWPORT_INDEX_PROVOKING_VERTEX+    , gl_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT+    , gl_UNSIGNED_INT_IMAGE_CUBE+    , gl_WEIGHT_ARRAY_POINTER_OES+    , gl_ALL_ATTRIB_BITS+    , gl_PERFQUERY_COUNTER_TIMESTAMP_INTEL+    , gl_TESS_EVALUATION_SHADER_EXT+    , gl_BUFFER_OBJECT_EXT+    , gl_TIMESTAMP+    , gl_RGBA_INTEGER_EXT+    , gl_RGB16UI+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT+    , gl_SAMPLE_SHADING_OES+    , gl_CONVOLUTION_BORDER_COLOR+    , gl_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV+    , gl_VERTEX_ARRAY_BUFFER_BINDING+    , gl_DEPTH_CLAMP_NEAR_AMD+    , gl_POLYGON_TOKEN+    , gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB+    , gl_R8_SNORM+    , gl_DS_BIAS_NV+    , gl_2X_BIT_ATI+    , gl_ALREADY_SIGNALED+    , gl_2D+    , gl_MAX_VERTEX_UNIFORM_COMPONENTS+    , gl_DEBUG_CATEGORY_PERFORMANCE_AMD+    , gl_OVERLAY_NV+    , gl_ATOMIC_COUNTER_BUFFER_SIZE+    , gl_COLOR_ATTACHMENT10_EXT+    , gl_COLOR_TABLE_BLUE_SIZE_SGI+    , gl_ADD_SIGNED_EXT+    , gl_INT_SAMPLER_2D_ARRAY_EXT+    , gl_TRANSFORM_FEEDBACK_BUFFER_INDEX+    , gl_REFERENCED_BY_TESS_CONTROL_SHADER+    , gl_FIELD_LOWER_NV+    , gl_POST_COLOR_MATRIX_RED_SCALE+    , gl_IMAGE_BUFFER_EXT+    , gl_3D_COLOR_TEXTURE+    , gl_DEBUG_CALLBACK_FUNCTION_KHR+    , gl_SCISSOR_BIT+    , gl_IMAGE_TRANSLATE_X_HP+    , gl_PIXEL_MAP_I_TO_A+    , gl_VERTEX_SUBROUTINE+    , gl_TEXTURE4_ARB+    , gl_PACK_COMPRESSED_BLOCK_DEPTH+    , gl_SHADER_STORAGE_BLOCK+    , gl_SIGNED_ALPHA_NV+    , gl_BLEND_DST_ALPHA_EXT+    , gl_MAP2_VERTEX_ATTRIB9_4_NV+    , gl_HILO8_NV+    , gl_SHADER_BINARY_FORMATS+    , gl_DEBUG_OUTPUT_SYNCHRONOUS+    , gl_TEXTURE_GEN_R+    , gl_PERFORMANCE_MONITOR_AMD+    , gl_INTENSITY_FLOAT16_APPLE+    , gl_PROGRAM_PIPELINE+    , gl_COLOR_BUFFER_BIT5_QCOM+    , gl_MAX_GEOMETRY_VARYING_COMPONENTS_EXT+    , gl_DEBUG_TYPE_PORTABILITY_KHR+    , gl_RGB16F_ARB+    , gl_PRIMITIVES_GENERATED_EXT+    , gl_PROGRAM_BINARY_FORMATS_OES+    , gl_AMBIENT+    , gl_QUERY_BY_REGION_NO_WAIT_NV+    , gl_VIEW_CLASS_RGTC2_RG+    , gl_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT+    , gl_DRAW_BUFFER2_EXT+    , gl_TEXTURE_BUFFER_BINDING+    , gl_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT+    , gl_OPERAND3_ALPHA_NV+    , gl_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV+    , gl_LINEAR_SHARPEN_SGIS+    , gl_MAP_UNSYNCHRONIZED_BIT_EXT+    , gl_MODELVIEW28_ARB+    , gl_EDGE_FLAG_ARRAY_LIST_IBM+    , gl_PALETTE4_RGB5_A1_OES+    , gl_MULTIPLY_KHR+    , gl_GPU_OPTIMIZED_QCOM+    , gl_FOG_FUNC_POINTS_SGIS+    , gl_MAX_IMAGE_SAMPLES+    , gl_DRAW_BUFFER3_NV+    , gl_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS+    , gl_RESET_NOTIFICATION_STRATEGY_ARB+    , gl_MAX_TEXTURE_STACK_DEPTH+    , gl_INT64_NV+    , gl_DEBUG_SOURCE_APPLICATION+    , gl_STENCIL_CLEAR_VALUE+    , gl_SRC1_COLOR+    , gl_LIGHT4+    , gl_PIXEL_PACK_BUFFER_BINDING+    , gl_MAX_LIGHTS+    , gl_OPERAND1_ALPHA_EXT+    , gl_PIXEL_MAP_B_TO_B_SIZE+    , gl_COLOR_TABLE_FORMAT_SGI+    , gl_MODELVIEW22_ARB+    , gl_UNSIGNED_INT64_VEC4_NV+    , gl_COLOR_ARRAY_TYPE_EXT+    , gl_LOSE_CONTEXT_ON_RESET_EXT+    , gl_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV+    , gl_TEXTURE_PRIORITY_EXT+    , gl_UNPACK_COMPRESSED_SIZE_SGIX+    , gl_SEPARATE_ATTRIBS_EXT+    , gl_IMAGE_BINDING_LAYERED+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR+    , gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE+    , gl_READ_ONLY+    , gl_TEXTURE_3D_BINDING_OES+    , gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER+    , gl_COVERAGE_ALL_FRAGMENTS_NV+    , gl_SRC2_ALPHA+    , gl_PRIMITIVE_ID_NV+    , gl_VIDEO_COLOR_CONVERSION_MAX_NV+    , gl_MAP2_TANGENT_EXT+    , gl_LIGHTING+    , gl_PROGRAM_UNDER_NATIVE_LIMITS_ARB+    , gl_VERTEX_ATTRIB_ARRAY2_NV+    , gl_PRESENT_TIME_NV+    , gl_PATCH_DEFAULT_INNER_LEVEL+    , gl_NEVER+    , gl_PATH_STROKE_WIDTH_NV+    , gl_INVERT_RGB_NV+    , gl_BUFFER_MAP_POINTER_ARB+    , gl_MAP2_GRID_SEGMENTS+    , gl_INVALID_VALUE+    , gl_BLEND_EQUATION_ALPHA_OES+    , gl_MAX_RATIONAL_EVAL_ORDER_NV+    , gl_VERTEX_ATTRIB_ARRAY10_NV+    , gl_UNPACK_IMAGE_DEPTH_SGIS+    , gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES+    , gl_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS+    , gl_TRANSPOSE_PROJECTION_MATRIX_ARB+    , gl_REDUCE_EXT+    , gl_RGB8UI_EXT+    , gl_MAX_CLIENT_ATTRIB_STACK_DEPTH+    , gl_RGB9_E5_EXT+    , gl_OUTPUT_TEXTURE_COORD18_EXT+    , gl_COLOR_ATTACHMENT0_EXT+    , gl_ALPHA_SCALE+    , gl_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV+    , gl_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE+    , gl_BLEND_SRC+    , gl_TEXTURE_MAX_CLAMP_R_SGIX+    , gl_MAX_PROGRAM_TEXEL_OFFSET_NV+    , gl_TEXTURE_LOD_BIAS_R_SGIX+    , gl_UNSIGNED_INT_SAMPLER_2D+    , gl_TEXTURE_FILTER_CONTROL_EXT+    , gl_VARIABLE_G_NV+    , gl_SELECTION_BUFFER_POINTER+    , gl_INT_SAMPLER_1D+    , gl_COMBINE_ALPHA+    , gl_FONT_Y_MAX_BOUNDS_BIT_NV+    , gl_UNIFORM_BARRIER_BIT+    , gl_TEXTURE_BLUE_TYPE_ARB+    , gl_STENCIL_INDEX16+    , gl_SRC_OVER_NV+    , gl_INT_SAMPLER_2D_MULTISAMPLE+    , gl_COLOR_TABLE_GREEN_SIZE_SGI+    , gl_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV+    , gl_TEXTURE_COMPRESSED_IMAGE_SIZE+    , gl_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV+    , gl_REFERENCED_BY_TESS_EVALUATION_SHADER+    , gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT+    , gl_MAX_HEIGHT+    , gl_ALPHA32F_ARB+    , gl_COLOR_ATTACHMENT13+    , gl_OP_SET_GE_EXT+    , gl_RGBA16_EXT+    , gl_OPERAND3_RGB_NV+    , gl_RENDERBUFFER_BLUE_SIZE_OES+    , gl_LUMINANCE_ALPHA_FLOAT16_ATI+    , gl_VERTEX_ATTRIB_ARRAY_DIVISOR_NV+    , gl_PERFQUERY_COUNTER_DURATION_RAW_INTEL+    , gl_MAX_DEPTH+    , gl_LINEAR_MIPMAP_NEAREST+    , gl_UNSIGNED_INT_8_8_S8_S8_REV_NV+    , gl_N3F_V3F+    , gl_PACK_MAX_COMPRESSED_SIZE_SGIX+    , gl_QUERY_BUFFER_BINDING_AMD+    , gl_FOG_MODE+    , gl_RGBA32F+    , gl_FRAGMENT_SHADER_DERIVATIVE_HINT+    , gl_UNPACK_SKIP_ROWS_EXT+    , gl_LINES+    , gl_SPOT_EXPONENT+    , gl_MAX_NUM_COMPATIBLE_SUBROUTINES+    , gl_RGBA_FLOAT32_APPLE+    , gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT+    , gl_BLEND_EQUATION_ALPHA+    , gl_PATH_MODELVIEW_STACK_DEPTH_NV+    , gl_TEXTURE_SHARED_SIZE_EXT+    , gl_RGBA16+    , gl_UNDEFINED_VERTEX_EXT+    , gl_PALETTE8_RGB5_A1_OES+    , gl_MAX_GEOMETRY_OUTPUT_VERTICES_EXT+    , gl_IMAGE_CLASS_11_11_10+    , gl_HISTOGRAM_GREEN_SIZE_EXT+    , gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT+    , gl_MAX_COMPUTE_IMAGE_UNIFORMS+    , gl_MAX_PATCH_VERTICES_EXT+    , gl_ISOLINES+    , gl_LUMINANCE_ALPHA_SNORM+    , gl_PROGRAM_PIPELINE_BINDING_EXT+    , gl_FIRST_VERTEX_CONVENTION_EXT+    , gl_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT+    , gl_UTF16_NV+    , gl_PRESENT_DURATION_NV+    , gl_TEXTURE_SAMPLES+    , gl_BGR+    , gl_CULL_VERTEX_OBJECT_POSITION_EXT+    , gl_FRAGMENT_PROGRAM_POSITION_MESA+    , gl_FLOAT_RG_NV+    , gl_PROXY_TEXTURE_2D_MULTISAMPLE+    , gl_CON_21_ATI+    , gl_MAX_GEOMETRY_IMAGE_UNIFORMS+    , gl_FLOAT_MAT3x4_NV+    , gl_BUFFER_VARIABLE+    , gl_ANY_SAMPLES_PASSED_EXT+    , gl_TEXTURE_GEN_Q+    , gl_GEOMETRY_VERTICES_OUT_ARB+    , gl_POLYGON_SMOOTH_HINT+    , gl_TEXTURE_BINDING_CUBE_MAP_ARRAY+    , gl_SEPARABLE_2D_EXT+    , gl_VERSION_ES_CL_1_0+    , gl_VERTEX_PROGRAM_PARAMETER_BUFFER_NV+    , gl_RED_INTEGER+    , gl_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD+    , gl_OFFSET_TEXTURE_RECTANGLE_NV+    , gl_TEXTURE_COORD_ARRAY_TYPE_EXT+    , gl_INT8_NV+    , gl_VIDEO_COLOR_CONVERSION_MIN_NV+    , gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV+    , gl_FRAMEBUFFER_ATTACHMENT_ANGLE+    , gl_SRC1_RGB+    , gl_CON_24_ATI+    , gl_DEBUG_CALLBACK_USER_PARAM+    , gl_MALI_SHADER_BINARY_ARM+    , gl_VIEW_CLASS_16_BITS+    , gl_DITHER+    , gl_PATH_STROKE_COVER_MODE_NV+    , gl_BGR_INTEGER+    , gl_TEXTURE_MATERIAL_PARAMETER_EXT+    , gl_COMPRESSED_RGBA_ASTC_5x4_KHR+    , gl_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT+    , gl_POST_CONVOLUTION_GREEN_BIAS_EXT+    , gl_PATH_ERROR_POSITION_NV+    , gl_SAMPLE_ALPHA_TO_COVERAGE+    , gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY+    , gl_NUM_COMPATIBLE_SUBROUTINES+    , gl_RGBA16UI_EXT+    , gl_VERTEX_SHADER_ARB+    , gl_RGB+    , gl_MAP_PERSISTENT_BIT+    , gl_QUERY_COUNTER_BITS_ARB+    , gl_BLEND_EQUATION_RGB_OES+    , gl_FRAGMENT_SHADER_BIT+    , gl_MATRIX_INDEX_ARRAY_ARB+    , gl_OUTPUT_TEXTURE_COORD29_EXT+    , gl_HISTOGRAM_FORMAT+    , gl_MAX_ASYNC_HISTOGRAM_SGIX+    , gl_MAX_VERTEX_ATTRIBS_ARB+    , gl_SAMPLE_MASK_NV+    , gl_COLOR_INDEXES+    , gl_QUAD_TEXTURE_SELECT_SGIS+    , gl_RG16_SNORM+    , gl_ACTIVE_SUBROUTINE_MAX_LENGTH+    , gl_LOGIC_OP_MODE+    , gl_DEPTH_COMPONENT16_NONLINEAR_NV+    , gl_PRIMITIVE_RESTART_INDEX_NV+    , gl_UNKNOWN_CONTEXT_RESET+    , gl_VBO_FREE_MEMORY_ATI+    , gl_TEXTURE_CUBE_MAP_POSITIVE_X_OES+    , gl_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR+    , gl_TEXTURE_2D_STACK_MESAX+    , gl_DRAW_BUFFER10+    , gl_FLOAT16_VEC4_NV+    , gl_SIGNED_HILO16_NV+    , gl_BUFFER_MAPPED_OES+    , gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT+    , gl_DRAW_BUFFER5_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB+    , gl_NUM_EXTENSIONS+    , gl_WARP_SIZE_NV+    , gl_TEXTURE23+    , gl_INT_SAMPLER_2D_RECT_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES+    , gl_REG_4_ATI+    , gl_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG+    , gl_FOG_INDEX+    , gl_QUADRATIC_ATTENUATION+    , gl_COLOR_MATERIAL+    , gl_SAMPLE_MASK+    , gl_DRAW_FRAMEBUFFER_BINDING_EXT+    , gl_MULTISAMPLE_BUFFER_BIT5_QCOM+    , gl_DEPTH_STENCIL_OES+    , gl_STENCIL_BITS+    , gl_CURRENT_VERTEX_ATTRIB_ARB+    , gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB+    , gl_COORD_REPLACE_ARB+    , gl_RGBA32I_EXT+    , gl_TEXTURE6+    , gl_FLOAT_RGB16_NV+    , gl_TEXTURE_IMMUTABLE_FORMAT+    , gl_ZERO_EXT+    , gl_SOFTLIGHT_NV+    , gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT+    , gl_TEXTURE_BASE_LEVEL+    , gl_COMPRESSED_SRGB_ALPHA+    , gl_TEXTURE18_ARB+    , gl_AND_INVERTED+    , gl_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT+    , gl_ARRAY_BUFFER_ARB+    , gl_RGBA32F_EXT+    , gl_BLEND_EQUATION_RGB_EXT+    , gl_FRONT_FACE+    , gl_SINGLE_COLOR_EXT+    , gl_QUERY_COUNTER_BITS_EXT+    , gl_TESS_CONTROL_SHADER_PATCHES_ARB+    , gl_SPOT_CUTOFF+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB+    , gl_OUTPUT_TEXTURE_COORD6_EXT+    , gl_COLOR_ATTACHMENT13_NV+    , gl_COMPRESSED_RGBA_S3TC_DXT3_EXT+    , gl_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV+    , gl_TRANSPOSE_TEXTURE_MATRIX+    , gl_MULTISAMPLE_ARB+    , gl_DEPTH_COMPONENT24+    , gl_PIXEL_MAP_G_TO_G+    , gl_NAMED_STRING_LENGTH_ARB+    , gl_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT+    , gl_UNIFORM_SIZE+    , gl_MODELVIEW21_ARB+    , gl_FRAGMENT_LIGHT7_SGIX+    , gl_DRAW_BUFFER3_ARB+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES+    , gl_UNSIGNED_SHORT+    , gl_MULTISAMPLE_BIT_ARB+    , gl_FOG+    , gl_TEXTURE_COMPARE_MODE+    , gl_SPHERE_MAP+    , gl_TIMEOUT_EXPIRED_APPLE+    , gl_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT+    , gl_PROXY_TEXTURE_1D_ARRAY+    , gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT+    , gl_TEXTURE_BINDING_CUBE_MAP+    , gl_COLOR_ATTACHMENT14+    , gl_STENCIL_BUFFER_BIT+    , gl_SIGNALED+    , gl_TEXTURE_WIDTH+    , gl_EVAL_BIT+    , gl_REG_28_ATI+    , gl_TEXTURE_BIT+    , gl_CONTEXT_ROBUST_ACCESS_EXT+    , gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV+    , gl_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB+    , gl_DEPTH_BUFFER_BIT+    , gl_TEXCOORD2_BIT_PGI+    , gl_POST_CONVOLUTION_RED_SCALE_EXT+    , gl_QUERY_KHR+    , gl_PACK_IMAGE_HEIGHT_EXT+    , gl_COMPRESSED_RGBA_ASTC_5x5_KHR+    , gl_MAX_VERTEX_UNIFORM_COMPONENTS_ARB+    , gl_DEPTH_STENCIL_ATTACHMENT+    , gl_HSL_HUE_KHR+    , gl_ATC_RGB_AMD+    , gl_DECR_WRAP+    , gl_GEOMETRY_VERTICES_OUT+    , gl_OFFSET_TEXTURE_BIAS_NV+    , gl_COLOR_ATTACHMENT5_NV+    , gl_POINT_SIZE_ARRAY_POINTER_OES+    , gl_TEXTURE_COMPARE_FAIL_VALUE_ARB+    , gl_RENDERBUFFER_COLOR_SAMPLES_NV+    , gl_CON_10_ATI+    , gl_IMAGE_ROTATE_ANGLE_HP+    , gl_UNIFORM_BUFFER_UNIFIED_NV+    , gl_INTENSITY4+    , gl_DEBUG_LOGGED_MESSAGES_KHR+    , gl_MINUS_CLAMPED_NV+    , gl_BUFFER_SIZE+    , gl_SRGB_EXT+    , gl_PIXEL_TEX_GEN_Q_ROUND_SGIX+    , gl_R16I+    , gl_COLOR_COMPONENTS+    , gl_TEXTURE_VIEW_NUM_LEVELS+    , gl_COLOR_ATTACHMENT11+    , gl_OBJECT_PLANE+    , gl_IMAGE_3D_EXT+    , gl_MAX_GEOMETRY_INPUT_COMPONENTS+    , gl_TEXTURE_COORD_ARRAY_LIST_IBM+    , gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS+    , gl_CLIENT_ACTIVE_TEXTURE+    , gl_MAX_GEOMETRY_VARYING_COMPONENTS_ARB+    , gl_OPERAND1_RGB+    , gl_POINT_SIZE_ARRAY_OES+    , gl_GLYPH_VERTICAL_BEARING_Y_BIT_NV+    , gl_MODELVIEW6_ARB+    , gl_DEBUG_OUTPUT_SYNCHRONOUS_KHR+    , gl_AND_REVERSE+    , gl_CLAMP_TO_BORDER_NV+    , gl_GUILTY_CONTEXT_RESET_ARB+    , gl_INT64_VEC2_NV+    , gl_C3F_V3F+    , gl_OBJECT_LINEAR_NV+    , gl_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT+    , gl_TEXTURE_FLOAT_COMPONENTS_NV+    , gl_SOURCE3_ALPHA_NV+    , gl_OPERAND2_ALPHA_EXT+    , gl_CON_12_ATI+    , gl_SYNC_STATUS+    , gl_BLEND_SRC_RGB_EXT+    , gl_DEBUG_SOURCE_WINDOW_SYSTEM_ARB+    , gl_TEXTURE_2D_MULTISAMPLE_ARRAY+    , gl_LEFT+    , gl_UNSIGNED_INT_SAMPLER_1D+    , gl_PIXEL_MAP_I_TO_R_SIZE+    , gl_VERTEX_ARRAY_BINDING_OES+    , gl_COMBINE_ALPHA_EXT+    , gl_TRANSFORM_FEEDBACK_ATTRIBS_NV+    , gl_CURRENT_WEIGHT_ARB+    , gl_RASTERIZER_DISCARD_NV+    , gl_SRC_IN_NV+    , gl_OBJECT_DISTANCE_TO_POINT_SGIS+    , gl_COMPRESSED_RGB8_ETC2+    , gl_MAX_VERTEX_SHADER_STORAGE_BLOCKS+    , gl_RGB_SNORM+    , gl_INTENSITY4_EXT+    , gl_R8I+    , gl_MAX_SUBROUTINE_UNIFORM_LOCATIONS+    , gl_EDGEFLAG_BIT_PGI+    , gl_MAX_FRAMEBUFFER_SAMPLES+    , gl_SECONDARY_COLOR_ARRAY_TYPE+    , gl_ALL_BARRIER_BITS_EXT+    , gl_TEXTURE14+    , gl_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER+    , gl_SRC0_ALPHA+    , gl_MODELVIEW16_ARB+    , gl_DARKEN_NV+    , gl_INTENSITY_EXT+    , gl_CURRENT_BIT+    , gl_FLOAT_RGBA32_NV+    , gl_SHADOW_ATTENUATION_EXT+    , gl_COMPRESSED_SRGB8_ETC2+    , gl_DRAW_BUFFER15+    , gl_COMPARE_R_TO_TEXTURE_ARB+    , gl_R11F_G11F_B10F_EXT+    , gl_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG+    , gl_MULTISAMPLE_BUFFER_BIT6_QCOM+    , gl_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT+    , gl_FEEDBACK_BUFFER_TYPE+    , gl_IMAGE_BINDING_FORMAT_EXT+    , gl_PROXY_TEXTURE_2D_EXT+    , gl_DEPTH32F_STENCIL8+    , gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS+    , gl_TESS_EVALUATION_SUBROUTINE+    , gl_TEXTURE_LOD_BIAS_T_SGIX+    , gl_COVERAGE_COMPONENT4_NV+    , gl_TEXTURE6_ARB+    , gl_MAX_3D_TEXTURE_SIZE_EXT+    , gl_TEXTURE_RESIDENT+    , gl_FOG_COORD_ARRAY_TYPE+    , gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR+    , gl_QUERY_BY_REGION_WAIT+    , gl_SLUMINANCE_ALPHA+    , gl_INT_SAMPLER_CUBE+    , gl_UNSIGNED_SHORT_4_4_4_4_REV+    , gl_MAX_PROGRAM_NATIVE_PARAMETERS_ARB+    , gl_LUMINANCE4_ALPHA4_EXT+    , gl_OPERAND0_RGB_ARB+    , gl_PROXY_TEXTURE_2D_STACK_MESAX+    , gl_TEXTURE_3D_EXT+    , gl_STREAM_RASTERIZATION_AMD+    , gl_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT+    , gl_DEPTH_COMPONENT32_SGIX+    , gl_LINE_STRIP+    , gl_CON_25_ATI+    , gl_SLIM10U_SGIX+    , gl_COLOR_INDEX2_EXT+    , gl_CON_22_ATI+    , gl_DEFORMATIONS_MASK_SGIX+    , gl_INVERSE_TRANSPOSE_NV+    , gl_MULT+    , gl_ATTRIB_ARRAY_STRIDE_NV+    , gl_RGBA16_SNORM+    , gl_MIN_SAMPLE_SHADING_VALUE+    , gl_RG8_SNORM+    , gl_OBJECT_ATTACHED_OBJECTS_ARB+    , gl_UNPACK_SKIP_PIXELS_EXT+    , gl_ACTIVE_VERTEX_UNITS_ARB+    , gl_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT+    , gl_INTERNALFORMAT_RED_TYPE+    , gl_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV+    , gl_FLOAT_RGB_NV+    , gl_MAP_FLUSH_EXPLICIT_BIT_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS+    , gl_HALF_FLOAT_NV+    , gl_DEPTH_STENCIL+    , gl_PROGRAM_ERROR_POSITION_ARB+    , gl_TRACE_ERRORS_BIT_MESA+    , gl_STENCIL_OP_VALUE_AMD+    , gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES+    , gl_COMPRESSED_SIGNED_R11_EAC+    , gl_FLOAT_MAT3x2+    , gl_PROGRAM_ERROR_STRING_NV+    , gl_VERTEX_ID_NV+    , gl_VERTEX_BINDING_OFFSET+    , gl_RESTART_SUN+    , gl_INT_IMAGE_CUBE_MAP_ARRAY_EXT+    , gl_COLOR_INDEX+    , gl_TEXTURE31_ARB+    , gl_MAX_DRAW_BUFFERS_ARB+    , gl_MAX_IMAGE_UNITS+    , gl_OUTPUT_TEXTURE_COORD4_EXT+    , gl_COLOR_ARRAY_POINTER+    , gl_MAX_COLOR_TEXTURE_SAMPLES+    , gl_SIGNED_NEGATE_NV+    , gl_MAX_GEOMETRY_UNIFORM_BLOCKS+    , gl_DEBUG_TYPE_ERROR+    , gl_HISTOGRAM_RED_SIZE_EXT+    , gl_SECONDARY_COLOR_ARRAY_POINTER_EXT+    , gl_UNSIGNALED+    , gl_CON_8_ATI+    , gl_COMPRESSED_RED+    , gl_RGBA2_EXT+    , gl_T2F_C3F_V3F+    , gl_SECONDARY_COLOR_ARRAY+    , gl_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT+    , gl_COLOR3_BIT_PGI+    , gl_CLIP_DISTANCE3+    , gl_TEXTURE_SWIZZLE_G_EXT+    , gl_SAMPLER_CUBE_MAP_ARRAY+    , gl_4PASS_3_SGIS+    , gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT+    , gl_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT+    , gl_VERTEX_ARRAY_STRIDE+    , gl_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS+    , gl_TEXTURE_SWIZZLE_A+    , gl_DOUBLE_MAT3x2+    , gl_TEXTURE_UPDATE_BARRIER_BIT_EXT+    , gl_SHADING_LANGUAGE_VERSION+    , gl_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP+    , gl_FIXED_ONLY_ARB+    , gl_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI+    , gl_CON_19_ATI+    , gl_CONTEXT_RELEASE_BEHAVIOR+    , gl_ARRAY_BUFFER_BINDING+    , gl_UNPACK_COLORSPACE_CONVERSION_WEBGL+    , gl_CONVEX_HULL_NV+    , gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB+    , gl_FIRST_TO_REST_NV+    , gl_MAX_TEXTURE_COORDS+    , gl_TEXTURE_DEPTH+    , gl_LIGHT0+    , gl_VERTEX_STREAM4_ATI+    , gl_POST_COLOR_MATRIX_ALPHA_BIAS_SGI+    , gl_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS+    , gl_SAMPLER_2D_RECT_SHADOW_ARB+    , gl_DRAW_BUFFER1_ATI+    , gl_SAMPLE_BUFFERS_SGIS+    , gl_SIGNED_LUMINANCE_ALPHA_NV+    , gl_R16_SNORM+    , gl_DRAW_BUFFER13_ATI+    , gl_TEXTURE_LIGHT_EXT+    , gl_BOOL_ARB+    , gl_BGRA_IMG+    , gl_SRGB_ALPHA_EXT+    , gl_RELATIVE_ROUNDED_RECT2_NV+    , gl_LUMINANCE16UI_EXT+    , gl_MATRIX7_NV+    , gl_INTENSITY16+    , gl_DRAW_INDIRECT_BUFFER+    , gl_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM+    , gl_MAX_IMAGE_SAMPLES_EXT+    , gl_DEBUG_SOURCE_OTHER_ARB+    , gl_POINT_BIT+    , gl_MAX_VARYING_VECTORS+    , gl_SUBTRACT_ARB+    , gl_INT_SAMPLER_BUFFER_AMD+    , gl_SAMPLE_MASK_INVERT_SGIS+    , gl_POINT_DISTANCE_ATTENUATION_ARB+    , gl_GREEN_BIT_ATI+    , gl_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT+    , gl_FRAMEBUFFER+    , gl_TEXTURE_COMPRESSION_HINT_ARB+    , gl_PROGRAM_INPUT+    , gl_SCREEN_NV+    , gl_TEXTURE_CUBE_MAP_ARRAY_EXT+    , gl_FENCE_STATUS_NV+    , gl_MAX_BINDABLE_UNIFORM_SIZE_EXT+    , gl_PACK_COMPRESSED_BLOCK_WIDTH+    , gl_RELATIVE_VERTICAL_LINE_TO_NV+    , gl_POST_COLOR_MATRIX_COLOR_TABLE_SGI+    , gl_ALPHA_INTEGER+    , gl_MAX_SUBROUTINES+    , gl_UNSIGNED_INT_VEC3_EXT+    , gl_ELEMENT_ARRAY_ATI+    , gl_ONE_MINUS_CONSTANT_COLOR+    , gl_MODELVIEW18_ARB+    , gl_CONSTANT_ARB+    , gl_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV+    , gl_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL+    , gl_DRAW_BUFFER_EXT+    , gl_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT+    , gl_FLOAT_MAT2x4_NV+    , gl_CULL_VERTEX_EXT+    , gl_MATRIX_PALETTE_ARB+    , gl_VERTEX_PROGRAM_POINT_SIZE_ARB+    , gl_FLOAT_RG16_NV+    , gl_CON_1_ATI+    , gl_BLEND_EQUATION_RGB+    , gl_OP_CROSS_PRODUCT_EXT+    , gl_VERTEX_WEIGHT_ARRAY_STRIDE_EXT+    , gl_TESS_CONTROL_PROGRAM_NV+    , gl_FIXED_ONLY+    , gl_4PASS_1_EXT+    , gl_SAMPLER_2D_MULTISAMPLE_ARRAY_OES+    , gl_UNSIGNED_INT_8_8_8_8_REV+    , gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS+    , gl_SLUMINANCE_ALPHA_NV+    , gl_PROXY_TEXTURE_CUBE_MAP+    , gl_IMAGE_CLASS_1_X_32+    , gl_STACK_OVERFLOW_KHR+    , gl_COMPRESSED_RGBA_ASTC_5x5x5_OES+    , gl_CLOSE_PATH_NV+    , gl_PIXEL_COUNT_AVAILABLE_NV+    , gl_PATH_DASH_OFFSET_NV+    , gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV+    , gl_GLOBAL_ALPHA_FACTOR_SUN+    , gl_INDEX_ARRAY_COUNT_EXT+    , gl_PACK_RESAMPLE_OML+    , gl_LAYER_NV+    , gl_DRAW_FRAMEBUFFER+    , gl_LINEAR_DETAIL_ALPHA_SGIS+    , gl_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT+    , gl_EDGE_FLAG_ARRAY+    , gl_TEXTURE_DEFORMATION_BIT_SGIX+    , gl_SOURCE1_RGB+    , gl_TEXTURE_3D_OES+    , gl_ALLOW_DRAW_OBJ_HINT_PGI+    , gl_PATH_STROKE_BOUNDING_BOX_NV+    , gl_HINT_BIT+    , gl_VERTICAL_LINE_TO_NV+    , gl_MAX_TEXTURE_BUFFER_SIZE_EXT+    , gl_MAX_DRAW_BUFFERS_ATI+    , gl_R8_EXT+    , gl_TEXTURE_COVERAGE_SAMPLES_NV+    , gl_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV+    , gl_REFERENCED_BY_VERTEX_SHADER+    , gl_FLOAT_RG32_NV+    , gl_TESSELLATION_FACTOR_AMD+    , gl_MAX_PROGRAM_TEMPORARIES_ARB+    , gl_COMPRESSED_RGBA_ASTC_12x12_KHR+    , gl_PROJECTION+    , gl_S+    , gl_ALPHA_FLOAT32_APPLE+    , gl_LUMINANCE8_ALPHA8_OES+    , gl_4_BYTES_NV+    , gl_CONST_EYE_NV+    , gl_MAT_SPECULAR_BIT_PGI+    , gl_TEXTURE1_ARB+    , gl_LINE_WIDTH_GRANULARITY+    , gl_DRAW_INDIRECT_BUFFER_BINDING+    , gl_BLEND_EQUATION+    , gl_RGBA8UI_EXT+    , gl_NORMALIZE+    , gl_LUMINANCE_ALPHA_FLOAT16_APPLE+    , gl_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX+    , gl_INVERSE_NV+    , gl_TEXTURE_SWIZZLE_A_EXT+    , gl_DEPTH24_STENCIL8_OES+    , gl_UNPACK_COMPRESSED_BLOCK_HEIGHT+    , gl_RGBA32UI+    , gl_MAP1_COLOR_4+    , gl_MAX_ELEMENTS_VERTICES+    , gl_CLIENT_VERTEX_ARRAY_BIT+    , gl_TEXTURE_GREEN_TYPE+    , gl_TEXTURE_BINDING_BUFFER_ARB+    , gl_MAX_RECTANGLE_TEXTURE_SIZE_NV+    , gl_INTERNALFORMAT_GREEN_TYPE+    , gl_OP_ADD_EXT+    , gl_UNSIGNED_INT_24_8+    , gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS+    , gl_3D_COLOR+    , gl_MODULATE_COLOR_IMG+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB+    , gl_TEXTURE_CLIPMAP_FRAME_SGIX+    , gl_NORMAL_ARRAY_STRIDE_EXT+    , gl_R16+    , gl_PIXEL_PACK_BUFFER+    , gl_SOFTLIGHT_KHR+    , gl_POST_CONVOLUTION_BLUE_SCALE+    , gl_INTERLEAVED_ATTRIBS_NV+    , gl_COLOR_ATTACHMENT8+    , gl_DEBUG_TYPE_PUSH_GROUP_KHR+    , gl_PERFQUERY_COUNTER_DATA_UINT64_INTEL+    , gl_MOV_ATI+    , gl_PROGRAM_SEPARABLE+    , gl_REG_20_ATI+    , gl_DOUBLE_VEC3+    , gl_8X_BIT_ATI+    , gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY+    , gl_MATRIX26_ARB+    , gl_PROXY_TEXTURE_RECTANGLE_ARB+    , gl_TRANSFORM_HINT_APPLE+    , gl_UNPACK_ROW_BYTES_APPLE+    , gl_POST_COLOR_MATRIX_ALPHA_SCALE_SGI+    , gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB+    , gl_ONE_MINUS_CONSTANT_COLOR_EXT+    , gl_TEXTURE_BINDING_CUBE_MAP_OES+    , gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT+    , gl_VERTEX_ARRAY_STORAGE_HINT_APPLE+    , gl_VERTEX_BINDING_BUFFER+    , gl_FRAGMENT_LIGHT0_SGIX+    , gl_GLYPH_HORIZONTAL_BEARING_X_BIT_NV+    , gl_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT+    , gl_SRC2_RGB+    , gl_NUM_COMPRESSED_TEXTURE_FORMATS+    , gl_OUTPUT_TEXTURE_COORD2_EXT+    , gl_DEPTH_TEXTURE_MODE+    , gl_SAMPLE_PATTERN_EXT+    , gl_ELEMENT_ARRAY_APPLE+    , gl_MAX_FOG_FUNC_POINTS_SGIS+    , gl_TEXTURE_APPLICATION_MODE_EXT+    , gl_COLOR_ARRAY_SIZE_EXT+    , gl_VERTEX_SOURCE_ATI+    , gl_MAP2_VERTEX_ATTRIB3_4_NV+    , gl_LIGHTEN_KHR+    , gl_INT_SAMPLER_1D_ARRAY+    , gl_UNSIGNED_INT_10F_11F_11F_REV_EXT+    , gl_LUMINANCE8+    , gl_ACCUM_ALPHA_BITS+    , gl_MINMAX_FORMAT+    , gl_NOOP+    , gl_READ_FRAMEBUFFER_EXT+    , gl_SHADER+    , gl_UNSIGNED_INT_10_10_10_2_OES+    , gl_TEXTURE_COMPRESSED_BLOCK_WIDTH+    , gl_DEBUG_OUTPUT_KHR+    , gl_SOURCE0_ALPHA_ARB+    , gl_SAMPLER_1D_ARRAY_EXT+    , gl_T2F_V3F+    , gl_SAMPLE_MASK_SGIS+    , gl_CIRCULAR_TANGENT_ARC_TO_NV+    , gl_MAX_TESS_CONTROL_OUTPUT_COMPONENTS+    , gl_MAX_DEBUG_LOGGED_MESSAGES+    , gl_SOURCE1_ALPHA+    , gl_RGB_422_APPLE+    , gl_COLOR_TABLE+    , gl_MAP1_TEXTURE_COORD_3+    , gl_DEBUG_SEVERITY_HIGH_AMD+    , gl_UNSIGNED_INT+    , gl_VERTEX_PROGRAM_CALLBACK_MESA+    , gl_BLOCK_INDEX+    , gl_FLOAT+    , gl_TRACE_PIXELS_BIT_MESA+    , gl_BACK+    , gl_PATH_JOIN_STYLE_NV+    , gl_LUMINANCE_ALPHA16I_EXT+    , gl_FLOAT_MAT2+    , gl_SIGNED_IDENTITY_NV+    , gl_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA+    , gl_DEPTH_PASS_INSTRUMENT_MAX_SGIX+    , gl_CLIP_DEPTH_MODE+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT+    , gl_CULL_FACE+    , gl_DETAIL_TEXTURE_LEVEL_SGIS+    , gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB+    , gl_PACK_SKIP_ROWS+    , gl_COEFF+    , gl_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT+    , gl_NUM_INSTRUCTIONS_PER_PASS_ATI+    , gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB+    , gl_RGBA8+    , gl_TESS_GEN_VERTEX_ORDER+    , gl_TEXTURE_CUBE_MAP+    , gl_VERTEX_PRECLIP_HINT_SGIX+    , gl_NUM_SHADING_LANGUAGE_VERSIONS+    , gl_OUTPUT_TEXTURE_COORD9_EXT+    , gl_MAX_PROGRAM_GENERIC_RESULTS_NV+    , gl_COLOR_ATTACHMENT7_NV+    , gl_OUT_OF_MEMORY+    , gl_TEXTURE_COORD_ARRAY_POINTER_EXT+    , gl_FLOAT_MAT2_ARB+    , gl_COMBINER_AB_DOT_PRODUCT_NV+    , gl_INDEX_ARRAY_POINTER_EXT+    , gl_WRITE_PIXEL_DATA_RANGE_POINTER_NV+    , gl_3D+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES+    , gl_UPPER_LEFT+    , gl_IMAGE_1D_ARRAY_EXT+    , gl_GREEN+    , gl_RGB12+    , gl_GEOMETRY_DEFORMATION_BIT_SGIX+    , gl_LUMINANCE_ALPHA_FLOAT32_ATI+    , gl_INT_SAMPLER_CUBE_MAP_ARRAY+    , gl_EVAL_TRIANGULAR_2D_NV+    , gl_QUERY_BY_REGION_WAIT_INVERTED+    , gl_CONTEXT_ROBUST_ACCESS_KHR+    , gl_STREAM_READ_ARB+    , gl_INT_IMAGE_1D_ARRAY_EXT+    , gl_QUERY_NO_WAIT_INVERTED+    , gl_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT+    , gl_COLOR_ATTACHMENT4_EXT+    , gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR+    , gl_LOSE_CONTEXT_ON_RESET+    , gl_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM+    , gl_REPLACEMENT_CODE_SUN+    , gl_422_REV_EXT+    , gl_COMPILE_STATUS+    , gl_VERTEX_ATTRIB_MAP1_COEFF_APPLE+    , gl_TRANSPOSE_COLOR_MATRIX+    , gl_COLOR_TABLE_FORMAT+    , gl_VERSION_ES_CM_1_1+    , gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE+    , gl_BUFFER_STORAGE_FLAGS+    , gl_UNSIGNED_NORMALIZED_EXT+    , gl_LIGHT_MODEL_SPECULAR_VECTOR_APPLE+    , gl_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT+    , gl_3_BYTES+    , gl_CND0_ATI+    , gl_TEXTURE_MAX_LEVEL_APPLE+    , gl_POINT+    , gl_MODELVIEW11_ARB+    , gl_RED_BITS+    , gl_PIXEL_TILE_GRID_WIDTH_SGIX+    , gl_DRAW_BUFFER7_NV+    , gl_OP_SET_LT_EXT+    , gl_TEXTURE24_ARB+    , gl_TESS_GEN_POINT_MODE+    , gl_INTERNALFORMAT_PREFERRED+    , gl_VERTEX_SHADER_VARIANTS_EXT+    , gl_COMBINER_CD_OUTPUT_NV+    , gl_TRANSPOSE_CURRENT_MATRIX_ARB+    , gl_MAX_ARRAY_TEXTURE_LAYERS_EXT+    , gl_UNSIGNED_SHORT_8_8_MESA+    , gl_BLEND_ADVANCED_COHERENT_NV+    , gl_VERTEX_ARRAY_EXT+    , gl_BOOL_VEC4_ARB+    , gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV+    , gl_UNSIGNED_SHORT_5_5_5_1+    , gl_SHADE_MODEL+    , gl_MIRROR_CLAMP_TO_EDGE+    , gl_RGB5_EXT+    , gl_TEXTURE_GEN_S+    , gl_TEXTURE_COMPRESSED+    , gl_FRAMEBUFFER_BLEND+    , gl_REPLACE_VALUE_AMD+    , gl_YCRCB_SGIX+    , gl_UNIFORM_BLOCK_INDEX+    , gl_TEXTURE_TOO_LARGE_EXT+    , gl_MIRRORED_REPEAT_ARB+    , gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER+    , gl_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB+    , gl_MAX_SAMPLES+    , gl_ATTENUATION_EXT+    , gl_MIRROR_CLAMP_EXT+    , gl_DEBUG_LOGGED_MESSAGES+    , gl_DOT3_ATI+    , gl_EMBOSS_CONSTANT_NV+    , gl_OUTPUT_TEXTURE_COORD11_EXT+    , gl_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL+    , gl_INDEX+    , gl_CURRENT_MATRIX_ARB+    , gl_MAX_TESS_EVALUATION_ATOMIC_COUNTERS+    , gl_MAX_DRAW_BUFFERS_EXT+    , gl_ADD_BLEND_IMG+    , gl_CLIP_FAR_HINT_PGI+    , gl_POST_CONVOLUTION_COLOR_TABLE+    , gl_RGBA4_OES+    , gl_QUERY_RESULT_AVAILABLE_ARB+    , gl_RGB8UI+    , gl_DYNAMIC_READ+    , gl_TEXTURE_BINDING_2D_MULTISAMPLE+    , gl_OBJECT_TYPE_APPLE+    , gl_PERCENTAGE_AMD+    , gl_LIGHT_MODEL_LOCAL_VIEWER+    , gl_SPARE0_PLUS_SECONDARY_COLOR_NV+    , gl_OP_INDEX_EXT+    , gl_VIEW_CLASS_S3TC_DXT3_RGBA+    , gl_TEXTURE_DEPTH_TYPE_ARB+    , gl_TEXTURE_ALPHA_SIZE+    , gl_YCRCB_422_SGIX+    , gl_INDEX_ARRAY_LENGTH_NV+    , gl_TRANSPOSE_AFFINE_3D_NV+    , gl_MATRIX17_ARB+    , gl_SRGB_ALPHA+    , gl_MAP_TESSELLATION_NV+    , gl_PACK_SKIP_VOLUMES_SGIS+    , gl_COLOR_BUFFER_BIT+    , gl_REG_6_ATI+    , gl_ATOMIC_COUNTER_BUFFER_BINDING+    , gl_POST_CONVOLUTION_ALPHA_BIAS+    , gl_HARDLIGHT_NV+    , gl_INTENSITY16_SNORM+    , gl_TEXCOORD1_BIT_PGI+    , gl_DEBUG_CALLBACK_FUNCTION+    , gl_TEXTURE8_ARB+    , gl_DOUBLE_VEC2_EXT+    , gl_TRIANGLES_ADJACENCY+    , gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER+    , gl_R16F+    , gl_OUTPUT_TEXTURE_COORD19_EXT+    , gl_QUAD_LUMINANCE4_SGIS+    , gl_SAMPLER_OBJECT_AMD+    , gl_COMPRESSED_RGBA_S3TC_DXT3_ANGLE+    , gl_UNSIGNED_INT_IMAGE_2D+    , gl_ALPHA_TEST+    , gl_CONVOLUTION_WIDTH+    , gl_SLUMINANCE_NV+    , gl_FRAMEBUFFER_UNDEFINED_OES+    , gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED+    , gl_HALF_FLOAT_OES+    , gl_CONVOLUTION_FORMAT_EXT+    , gl_FALSE+    , gl_ADD_ATI+    , gl_STENCIL_BACK_FAIL+    , gl_DOUBLE_VEC4+    , gl_STANDARD_FONT_NAME_NV+    , gl_ALPHA4_EXT+    , gl_EXPAND_NORMAL_NV+    , gl_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB+    , gl_TRACE_MASK_MESA+    , gl_VARIABLE_B_NV+    , gl_RGB16_EXT+    , gl_TEXTURE+    , gl_PIXEL_UNPACK_BUFFER_BINDING_EXT+    , gl_IMAGE_CLASS_1_X_8+    , gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE+    , gl_BOOL_VEC2_ARB+    , gl_MAP2_VERTEX_3+    , gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH+    , gl_TEXTURE_WRAP_S+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_X+    , gl_TEXTURE_CUBE_MAP_ARRAY+    , gl_TEXTURE_ALPHA_TYPE+    , gl_MAX_COLOR_ATTACHMENTS_NV+    , gl_MAX_CUBE_MAP_TEXTURE_SIZE+    , gl_ANY_SAMPLES_PASSED+    , gl_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE+    , gl_COLOR_ARRAY_STRIDE+    , gl_MULTISAMPLE_BIT_EXT+    , gl_VERTEX_ATTRIB_ARRAY_DIVISOR+    , gl_UNSIGNED_INT64_VEC3_NV+    , gl_WAIT_FAILED_APPLE+    , gl_DRAW_BUFFER5_ATI+    , gl_MAX_CUBE_MAP_TEXTURE_SIZE_EXT+    , gl_ONE_MINUS_CONSTANT_ALPHA_EXT+    , gl_UNSIGNED_INT_8_24_REV_MESA+    , gl_MAX_PROGRAM_ENV_PARAMETERS_ARB+    , gl_MAX_VERTEX_VARYING_COMPONENTS_EXT+    , gl_CURRENT_TANGENT_EXT+    , gl_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB+    , gl_ALPHA16+    , gl_MAP1_VERTEX_4+    , gl_SAMPLER_CUBE_SHADOW_NV+    , gl_SAMPLER_2D_SHADOW_ARB+    , gl_PROGRAM_LENGTH_NV+    , gl_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM+    , gl_IGNORE_BORDER_HP+    , gl_DEBUG_SOURCE_SHADER_COMPILER+    , gl_TEXTURE_BORDER_VALUES_NV+    , gl_FRAGMENT_SUBROUTINE+    , gl_MAX_DEPTH_TEXTURE_SAMPLES+    , gl_VERTEX_ATTRIB_ARRAY_POINTER+    , gl_COLOR_ATTACHMENT7+    , gl_LAST_VERTEX_CONVENTION_EXT+    , gl_TEXTURE_LO_SIZE_NV+    , gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER+    , gl_COMPRESSED_RGB8_ETC2_OES+    , gl_NORMAL_MAP_NV+    , gl_COLOR_ARRAY_COUNT_EXT+    , gl_TEXTURE_COMPARE_MODE_EXT+    , gl_BINORMAL_ARRAY_TYPE_EXT+    , gl_OPERAND0_RGB_EXT+    , gl_MAX_VERTEX_VARYING_COMPONENTS_ARB+    , gl_PIXEL_MIN_FILTER_EXT+    , gl_ACCUM_ADJACENT_PAIRS_NV+    , gl_BLEND_DST+    , gl_W_EXT+    , gl_RENDERBUFFER_COVERAGE_SAMPLES_NV+    , gl_STENCIL_FUNC+    , gl_MAX_VERTEX_STREAMS+    , gl_GEOMETRY_INPUT_TYPE+    , gl_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV+    , gl_MINMAX_SINK_EXT+    , gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER+    , gl_DOUBLE_MAT2x3+    , gl_FRACTIONAL_EVEN_EXT+    , gl_VERTEX_ARRAY_TYPE_EXT+    , gl_BINORMAL_ARRAY_POINTER_EXT+    , gl_SAMPLE_MASK_EXT+    , gl_TESS_CONTROL_SHADER_EXT+    , gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT+    , gl_TANGENT_ARRAY_STRIDE_EXT+    , gl_GET_TEXTURE_IMAGE_TYPE+    , gl_OFFSET+    , gl_ALL_STATIC_DATA_IBM+    , gl_READ_PIXEL_DATA_RANGE_LENGTH_NV+    , gl_CONSTANT_COLOR+    , gl_UNSIGNED_SHORT_1_5_5_5_REV_EXT+    , gl_MATERIAL_SIDE_HINT_PGI+    , gl_UNPACK_RESAMPLE_OML+    , gl_SAMPLE_SHADING+    , gl_OUTPUT_TEXTURE_COORD13_EXT+    , gl_MAX_COLOR_MATRIX_STACK_DEPTH+    , gl_INT64_VEC3_NV+    , gl_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV+    , gl_TEXTURE_STACK_DEPTH+    , gl_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL+    , gl_FRAMEBUFFER_UNSUPPORTED_EXT+    , gl_QUERY_TARGET+    , gl_LUMINANCE4_ALPHA4+    , gl_TRANSFORM_FEEDBACK_BARRIER_BIT+    , gl_RGB32UI+    , gl_STATIC_DRAW+    , gl_MAX_COMPUTE_UNIFORM_BLOCKS+    , gl_PALETTE4_RGBA8_OES+    , gl_UNPACK_PREMULTIPLY_ALPHA_WEBGL+    , gl_TEXTURE21+    , gl_RGB32I+    , gl_MAX_TEXTURE_LOD_BIAS_EXT+    , gl_PATH_GEN_COLOR_FORMAT_NV+    , gl_RGB10_A2UI+    , gl_GREEN_BITS+    , gl_POLYGON_MODE+    , gl_SUCCESS_NV+    , gl_RGBA12+    , gl_PATCHES+    , gl_ACCUM+    , gl_NUM_PASSES_ATI+    , gl_DEBUG_TYPE_ERROR_ARB+    , gl_TEXTURE_LIGHTING_MODE_HP+    , gl_HISTOGRAM_SINK_EXT+    , gl_POINT_SIZE_GRANULARITY+    , gl_R32F+    , gl_STATIC_COPY+    , gl_FOG_COORDINATE_ARRAY_TYPE_EXT+    , gl_SPARE0_NV+    , gl_3DC_XY_AMD+    , gl_LUMINANCE_ALPHA32F_ARB+    , gl_VERTEX_ARRAY_RANGE_VALID_NV+    , gl_DEPTH_BUFFER_BIT6_QCOM+    , gl_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX+    , gl_LINE_WIDTH+    , gl_FOG_OFFSET_SGIX+    , gl_GEOMETRY_SHADER_BIT_EXT+    , gl_TEXTURE_BLUE_SIZE+    , gl_TEXTURE_SHADER_NV+    , gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV+    , gl_FRAMEZOOM_SGIX+    , gl_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT+    , gl_DEPTH_RENDERABLE+    , gl_MAX_TEXTURE_BUFFER_SIZE+    , gl_COLOR_ALPHA_PAIRING_ATI+    , gl_PACK_REVERSE_ROW_ORDER_ANGLE+    , gl_VERTEX_ATTRIB_ARRAY_NORMALIZED+    , gl_OP_MADD_EXT+    , gl_TEXTURE7+    , gl_RGB32I_EXT+    , gl_RED_BIAS+    , gl_FLOAT_VEC2+    , gl_HALF_APPLE+    , gl_SGX_BINARY_IMG+    , gl_CON_28_ATI+    , gl_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP+    , gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV+    , gl_MAP2_VERTEX_ATTRIB2_4_NV+    , gl_TRANSFORM_BIT+    , gl_R8+    , gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV+    , gl_T+    , gl_TEXTURE_ENV_MODE+    , gl_HIGH_INT+    , gl_TEXTURE_UNSIGNED_REMAP_MODE_NV+    , gl_MAX_PROGRAM_LOOP_COUNT_NV+    , gl_PERFQUERY_WAIT_INTEL+    , gl_INVALID_FRAMEBUFFER_OPERATION_EXT+    , gl_TEXTURE_2D_BINDING_EXT+    , gl_TEXTURE_NUM_LEVELS_QCOM+    , gl_TEXTURE_BUFFER_ARB+    , gl_TRUE+    , gl_MAX_LAYERS+    , gl_MAX_TEXTURE_UNITS_ARB+    , gl_MAP2_NORMAL+    , gl_DUAL_ALPHA16_SGIS+    , gl_PROGRAM_OUTPUT+    , gl_OUTPUT_TEXTURE_COORD22_EXT+    , gl_SAMPLER_1D_ARB+    , gl_POST_CONVOLUTION_GREEN_BIAS+    , gl_INT_IMAGE_CUBE+    , gl_CURRENT_VERTEX_WEIGHT_EXT+    , gl_SIGNED_LUMINANCE8_NV+    , gl_TEXTURE_VIEW_NUM_LAYERS_EXT+    , gl_RG16F+    , gl_PROGRAM_POINT_SIZE_EXT+    , gl_FILE_NAME_NV+    , gl_INT_IMAGE_BUFFER_EXT+    , gl_TEXTURE_UPDATE_BARRIER_BIT+    , gl_HARDMIX_NV+    , gl_FLOAT_MAT3x4+    , gl_TEXTURE_INTERNAL_FORMAT_QCOM+    , gl_INTERNALFORMAT_BLUE_SIZE+    , gl_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV+    , gl_HSL_COLOR_NV+    , gl_CONDITION_SATISFIED+    , gl_UNIFORM_BUFFER_LENGTH_NV+    , gl_ALPHA8UI_EXT+    , gl_REG_23_ATI+    , gl_UNSIGNED_SHORT_5_6_5_EXT+    , gl_EDGE_FLAG_ARRAY_LENGTH_NV+    , gl_IMAGE_CLASS_1_X_16+    , gl_LUMINANCE8_ALPHA8_SNORM+    , gl_PATH_FILL_COVER_MODE_NV+    , gl_LUMINANCE_ALPHA_FLOAT32_APPLE+    , gl_INTENSITY16UI_EXT+    , gl_RENDERBUFFER_SAMPLES_APPLE+    , gl_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE+    , gl_LUMINANCE_ALPHA32I_EXT+    , gl_REGISTER_COMBINERS_NV+    , gl_R1UI_N3F_V3F_SUN+    , gl_FOG_COORDINATE_SOURCE+    , gl_DEBUG_SEVERITY_MEDIUM_AMD+    , gl_MODELVIEW30_ARB+    , gl_COMPRESSED_RGBA_S3TC_DXT5_EXT+    , gl_DRAW_BUFFER0_NV+    , gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT+    , gl_ELEMENT_ARRAY_BARRIER_BIT+    , gl_SHADER_PIXEL_LOCAL_STORAGE_EXT+    , gl_FRONT_LEFT+    , gl_UNIFORM_BUFFER_BINDING+    , gl_SIGNED_RGBA8_NV+    , gl_EYE_PLANE+    , gl_TEXTURE_1D+    , gl_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT+    , gl_MALI_PROGRAM_BINARY_ARM+    , gl_SKIP_COMPONENTS3_NV+    , gl_LUMINANCE_ALPHA+    , gl_ACCUM_RED_BITS+    , gl_POLYGON_OFFSET_FACTOR+    , gl_SAMPLER_2D_ARRAY_SHADOW_NV+    , gl_VARIABLE_D_NV+    , gl_TEXTURE_LEQUAL_R_SGIX+    , gl_INT+    , gl_IMAGE_TRANSLATE_Y_HP+    , gl_POINT_TOKEN+    , gl_RESAMPLE_ZERO_FILL_OML+    , gl_DEBUG_SOURCE_THIRD_PARTY_KHR+    , gl_TEXTURE_MAG_SIZE_NV+    , gl_PER_STAGE_CONSTANTS_NV+    , gl_VIRTUAL_PAGE_SIZE_Y_ARB+    , gl_SPRITE_EYE_ALIGNED_SGIX+    , gl_EVAL_VERTEX_ATTRIB14_NV+    , gl_TRANSFORM_FEEDBACK_VARYINGS_NV+    , gl_RGB10+    , gl_MAX_VIEWPORT_DIMS+    , gl_BLUE_MAX_CLAMP_INGR+    , gl_INCR_WRAP+    , gl_VIRTUAL_PAGE_SIZE_X_AMD+    , gl_BOOL_VEC3+    , gl_CON_17_ATI+    , gl_MAX_CUBE_MAP_TEXTURE_SIZE_OES+    , gl_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT+    , gl_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI+    , gl_MINMAX+    , gl_CONSTANT_BORDER_HP+    , gl_SRGB_WRITE+    , gl_MAX_TEXTURE_BUFFER_SIZE_ARB+    , gl_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV+    , gl_DECAL+    , gl_REG_7_ATI+    , gl_TESS_GEN_SPACING_EXT+    , gl_ELEMENT_ARRAY_LENGTH_NV+    , gl_MATRIX31_ARB+    , gl_TRANSFORM_FEEDBACK_VARYING+    , gl_VERTEX_ATTRIB_ARRAY_SIZE+    , gl_NOTEQUAL+    , gl_READ_PIXELS_TYPE+    , gl_MODELVIEW_STACK_DEPTH+    , gl_COMPRESSED_RGBA_ASTC_6x6x5_OES+    , gl_COMBINE_EXT+    , gl_NICEST+    , gl_MODELVIEW2_ARB+    , gl_UNPACK_IMAGE_HEIGHT+    , gl_TEXTURE_CUBE_MAP_ARRAY_ARB+    , gl_DRAW_BUFFER12+    , gl_MAX_FRAGMENT_INTERPOLATION_OFFSET+    , gl_FRAMEBUFFER_DEFAULT_HEIGHT+    , gl_DT_BIAS_NV+    , gl_DSDT_NV+    , gl_IMAGE_CUBE_MAP_ARRAY+    , gl_STENCIL_INDEX4+    , gl_ROUND_NV+    , gl_Y_EXT+    , gl_PATH_DASH_CAPS_NV+    , gl_TEXTURE_PRIORITY+    , gl_TEXTURE_4D_BINDING_SGIS+    , gl_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD+    , gl_CULL_MODES_NV+    , gl_VERTEX_ATTRIB_MAP2_SIZE_APPLE+    , gl_REFERENCED_BY_GEOMETRY_SHADER_EXT+    , gl_MODELVIEW_MATRIX+    , gl_VIDEO_BUFFER_NV+    , gl_TEXTURE12+    , gl_COLORBURN_NV+    , gl_COLOR_ARRAY_BUFFER_BINDING_ARB+    , gl_READ_BUFFER_EXT+    , gl_RENDERBUFFER_RED_SIZE_OES+    , gl_TEXTURE_SHARED_SIZE+    , gl_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS+    , gl_ALL_SHADER_BITS_EXT+    , gl_PERFQUERY_SINGLE_CONTEXT_INTEL+    , gl_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT+    , gl_PERFMON_RESULT_AMD+    , gl_GUILTY_CONTEXT_RESET+    , gl_PREVIOUS+    , gl_UNSIGNED_INT16_VEC3_NV+    , gl_VERTEX_ATTRIB_MAP1_APPLE+    , gl_LIGHT3+    , gl_TESS_EVALUATION_SUBROUTINE_UNIFORM+    , gl_DUAL_INTENSITY8_SGIS+    , gl_PARAMETER_BUFFER_BINDING_ARB+    , gl_CURRENT_SECONDARY_COLOR+    , gl_RENDERBUFFER_ALPHA_SIZE+    , gl_DUAL_INTENSITY12_SGIS+    , gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING+    , gl_OP_MAX_EXT+    , gl_EDGE_FLAG_ARRAY_EXT+    , gl_COLOR_TABLE_LUMINANCE_SIZE+    , gl_FOG_COORD_ARRAY_ADDRESS_NV+    , gl_COPY+    , gl_DRAW_BUFFER2_NV+    , gl_SAMPLER_BINDING+    , gl_COPY_WRITE_BUFFER+    , gl_PIXEL_UNPACK_BUFFER+    , gl_VIEW_CLASS_S3TC_DXT1_RGBA+    , gl_DRAW_FRAMEBUFFER_APPLE+    , gl_PIXEL_MAP_A_TO_A_SIZE+    , gl_EDGE_FLAG+    , gl_CLIP_DISTANCE2+    , gl_TEXTURE_GEN_MODE+    , gl_HALF_BIAS_NORMAL_NV+    , gl_RESAMPLE_ZERO_FILL_SGIX+    , gl_OUTPUT_TEXTURE_COORD12_EXT+    , gl_UNSIGNED_SHORT_8_8_REV_MESA+    , gl_PALETTE8_RGBA8_OES+    , gl_TEXTURE_4D_SGIS+    , gl_PIXEL_PACK_BUFFER_EXT+    , gl_MAP_ATTRIB_U_ORDER_NV+    , gl_FUNC_SUBTRACT+    , gl_PIXEL_SUBSAMPLE_4444_SGIX+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Y+    , gl_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT+    , gl_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT+    , gl_DYNAMIC_COPY+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT+    , gl_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT+    , gl_PROGRAM_LENGTH_ARB+    , gl_MODELVIEW14_ARB+    , gl_ITALIC_BIT_NV+    , gl_OR_INVERTED+    , gl_CLIP_NEAR_HINT_PGI+    , gl_COVERAGE_EDGE_FRAGMENTS_NV+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR+    , gl_PROGRAM_BINARY_LENGTH_OES+    , gl_DRAW_BUFFER8_ARB+    , gl_DRAW_FRAMEBUFFER_EXT+    , gl_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET+    , gl_SYNC_CL_EVENT_ARB+    , gl_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE+    , gl_MAX_VERTEX_HINT_PGI+    , gl_UNPACK_IMAGE_HEIGHT_EXT+    , gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV+    , gl_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE+    , gl_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB+    , gl_STENCIL_BACK_REF+    , gl_CLAMP_READ_COLOR_ARB+    , gl_INTERNALFORMAT_RED_SIZE+    , gl_PATCH_DEFAULT_INNER_LEVEL_EXT+    , gl_OUTPUT_TEXTURE_COORD27_EXT+    , gl_QUERY_STENCIL_FAIL_EVENT_BIT_AMD+    , gl_MAX_COMPUTE_TEXTURE_IMAGE_UNITS+    , gl_LOCATION+    , gl_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS+    , gl_POST_COLOR_MATRIX_GREEN_SCALE+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR+    , gl_POST_COLOR_MATRIX_ALPHA_SCALE+    , gl_HORIZONTAL_LINE_TO_NV+    , gl_MAX_FRAGMENT_INPUT_COMPONENTS+    , gl_PROGRAM_STRING_ARB+    , gl_EDGE_FLAG_ARRAY_ADDRESS_NV+    , gl_VENDOR+    , gl_CLIPPING_INPUT_PRIMITIVES_ARB+    , gl_TEXTURE_RENDERBUFFER_NV+    , gl_ELEMENT_ARRAY_ADDRESS_NV+    , gl_LOCAL_EXT+    , gl_GEOMETRY_SHADER_INVOCATIONS+    , gl_INT_VEC4_ARB+    , gl_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE+    , gl_SEPARATE_ATTRIBS_NV+    , gl_FLOAT_MAT4_ARB+    , gl_COLOR_ATTACHMENT_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE+    , gl_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB+    , gl_SHININESS+    , gl_INTERPOLATE_EXT+    , gl_TRANSFORM_FEEDBACK+    , gl_TEXTURE_DEPTH_QCOM+    , gl_DOUBLE_MAT4x2+    , gl_NORMAL_ARRAY_BUFFER_BINDING_ARB+    , gl_PIXEL_TEX_GEN_SGIX+    , gl_TRANSFORM_FEEDBACK_BUFFER_START+    , gl_GLYPH_WIDTH_BIT_NV+    , gl_STENCIL_ATTACHMENT_EXT+    , gl_VERTEX_ARRAY_RANGE_POINTER_APPLE+    , gl_VERTEX_WEIGHT_ARRAY_TYPE_EXT+    , gl_MATRIX4_NV+    , gl_READ_FRAMEBUFFER_ANGLE+    , gl_MAX_SPARSE_ARRAY_TEXTURE_LAYERS+    , gl_VERTEX_ARRAY_POINTER_EXT+    , gl_RELATIVE_ROUNDED_RECT_NV+    , gl_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV+    , gl_MAX_PROGRAM_GENERIC_ATTRIBS_NV+    , gl_TEXTURE_MEMORY_LAYOUT_INTEL+    , gl_REG_0_ATI+    , gl_VERTEX_ATTRIB_ARRAY15_NV+    , gl_RGB12_EXT+    , gl_FRAGMENT_LIGHT6_SGIX+    , gl_MAX_PROGRAM_ATTRIB_COMPONENTS_NV+    , gl_QUERY_ALL_EVENT_BITS_AMD+    , gl_INTENSITY_FLOAT32_APPLE+    , gl_LIST_INDEX+    , gl_COMPRESSED_RGB_PVRTC_2BPPV1_IMG+    , gl_REG_18_ATI+    , gl_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT+    , gl_COMPILE+    , gl_VIEW_CLASS_128_BITS+    , gl_4X_BIT_ATI+    , gl_CLIENT_PIXEL_STORE_BIT+    , gl_OPERAND2_RGB+    , gl_MINMAX_FORMAT_EXT+    , gl_UNSIGNED_INT_IMAGE_1D+    , gl_INSTRUMENT_MEASUREMENTS_SGIX+    , gl_VALIDATE_STATUS+    , gl_NORMAL_ARRAY_COUNT_EXT+    , gl_PATH_STENCIL_REF_NV+    , gl_DRAW_BUFFER5_NV+    , gl_COMPRESSED_RGBA_ARB+    , gl_MAX_MULTISAMPLE_COVERAGE_MODES_NV+    , gl_MAX_3D_TEXTURE_SIZE+    , gl_FRAGMENT_NORMAL_EXT+    , gl_SHADER_KHR+    , gl_TEXTURE_DEPTH_TYPE+    , gl_VERTEX_PROGRAM_CALLBACK_FUNC_MESA+    , gl_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE+    , gl_TEXTURE_2D_STACK_BINDING_MESAX+    , gl_NUM_COMPRESSED_TEXTURE_FORMATS_ARB+    , gl_INT_SAMPLER_2D_EXT+    , gl_RGBA4_S3TC+    , gl_MAX_SPOT_EXPONENT_NV+    , gl_NEGATIVE_X_EXT+    , gl_SYNC_X11_FENCE_EXT+    , gl_OP_DOT3_EXT+    , gl_LUMINANCE8_SNORM+    , gl_SAMPLE_SHADING_ARB+    , gl_CONVOLUTION_2D_EXT+    , gl_MAP2_TEXTURE_COORD_2+    , gl_SHADER_IMAGE_LOAD+    , gl_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV+    , gl_TEXTURE_VIEW_NUM_LEVELS_EXT+    , gl_ACTIVE_UNIFORMS+    , gl_ACCUM_GREEN_BITS+    , gl_TESS_EVALUATION_PROGRAM_NV+    , gl_COMPRESSED_SLUMINANCE+    , gl_COLOR_ATTACHMENT14_EXT+    , gl_VERTEX23_BIT_PGI+    , gl_BUMP_ROT_MATRIX_ATI+    , gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT+    , gl_MAX_PALETTE_MATRICES_OES+    , gl_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV+    , gl_CONVOLUTION_BORDER_MODE_EXT+    , gl_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE+    , gl_INTENSITY32I_EXT+    , gl_RASTERIZER_DISCARD_EXT+    , gl_MAX_SAMPLES_EXT+    , gl_DRAW_BUFFER10_EXT+    , gl_INT_IMAGE_2D+    , gl_PROVOKING_VERTEX+    , gl_UNPACK_RESAMPLE_SGIX+    , gl_SAMPLE_POSITION_NV+    , gl_MAX_PROGRAM_MATRICES_ARB+    , gl_SHADER_STORAGE_BUFFER_BINDING+    , gl_TEXTURE0+    , gl_DSDT_MAG_VIB_NV+    , gl_DOUBLE_MAT4x3+    , gl_TEXTURE27_ARB+    , gl_ACTIVE_ATOMIC_COUNTER_BUFFERS+    , gl_LUMINANCE32I_EXT+    , gl_SAMPLER_KHR+    , gl_MITER_REVERT_NV+    , gl_RGB32UI_EXT+    , gl_DUAL_LUMINANCE12_SGIS+    , gl_BOOL_VEC2+    , gl_COLOR_ATTACHMENT1_NV+    , gl_MAX_CONVOLUTION_WIDTH+    , gl_DRAW_BUFFER14_NV+    , gl_BLEND_DST_RGB_EXT+    , gl_LUMINANCE12_ALPHA12_EXT+    , gl_DEPTH_BOUNDS_EXT+    , gl_CIRCULAR_CCW_ARC_TO_NV+    , gl_COMPRESSED_LUMINANCE_ALPHA+    , gl_SAMPLE_COVERAGE_VALUE_ARB+    , gl_DEPTH_STENCIL_TO_RGBA_NV+    , gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING+    , gl_NAME_LENGTH+    , gl_STENCIL_TEST_TWO_SIDE_EXT+    , gl_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES+    , gl_VERTEX_ATTRIB_ARRAY_STRIDE_ARB+    , gl_OUTPUT_TEXTURE_COORD30_EXT+    , gl_MAX_PROGRAM_SUBROUTINE_NUM_NV+    , gl_MULTIPLY_NV+    , gl_TEXTURE19+    , gl_INVERT_OVG_NV+    , gl_IMPLEMENTATION_COLOR_READ_FORMAT_OES+    , gl_NEAREST_CLIPMAP_LINEAR_SGIX+    , gl_VARIABLE_A_NV+    , gl_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT+    , gl_TEXTURE_2D_MULTISAMPLE+    , gl_DEBUG_SOURCE_THIRD_PARTY+    , gl_DRAW_BUFFER7_ARB+    , gl_MAX_DRAW_BUFFERS+    , gl_MAX_SERVER_WAIT_TIMEOUT+    , gl_COMPRESSED_SIGNED_RG11_EAC+    , gl_VERTEX_PROGRAM_POINT_SIZE+    , gl_STENCIL_PASS_DEPTH_PASS+    , gl_RENDERBUFFER_STENCIL_SIZE+    , gl_TEXTURE_BINDING_2D+    , gl_DATA_BUFFER_AMD+    , gl_DEBUG_CATEGORY_APPLICATION_AMD+    , gl_ASYNC_HISTOGRAM_SGIX+    , gl_UNPACK_LSB_FIRST+    , gl_UNSIGNED_INT_SAMPLER_CUBE_EXT+    , gl_DEPTH_CLAMP_FAR_AMD+    , gl_TRANSFORM_FEEDBACK_BUFFER_MODE_NV+    , gl_VERTEX_ATTRIB_ARRAY_STRIDE+    , gl_UNSIGNED_INT16_VEC4_NV+    , gl_OBJECT_BUFFER_SIZE_ATI+    , gl_YCRCB_444_SGIX+    , gl_LOSE_CONTEXT_ON_RESET_KHR+    , gl_TEXTURE_VIEW_NUM_LAYERS+    , gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB+    , gl_PERFQUERY_COUNTER_DATA_BOOL32_INTEL+    , gl_OBJECT_DELETE_STATUS_ARB+    , gl_SQUARE_NV+    , gl_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT+    , gl_DEBUG_SEVERITY_NOTIFICATION_KHR+    , gl_EYE_LINEAR_NV+    , gl_REG_16_ATI+    , gl_LUMINANCE_ALPHA32UI_EXT+    , gl_OUTPUT_TEXTURE_COORD31_EXT+    , gl_COMPRESSED_RG_RGTC2+    , gl_FLOAT_MAT3+    , gl_INDEX_ARRAY_POINTER+    , gl_FOG_COORD+    , gl_DRAW_BUFFER13+    , gl_SCALED_RESOLVE_NICEST_EXT+    , gl_QUERY_RESULT_AVAILABLE+    , gl_UNPACK_SUBSAMPLE_RATE_SGIX+    , gl_3_BYTES_NV+    , gl_CLEAR+    , gl_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT+    , gl_R8UI+    , gl_OFFSET_TEXTURE_2D_MATRIX_NV+    , gl_BGRA_INTEGER+    , gl_MAX_ARRAY_TEXTURE_LAYERS+    , gl_COMPRESSED_RGB_ARB+    , gl_FOG_COORDINATE_ARRAY_POINTER_EXT+    , gl_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT+    , gl_TEXTURE_MAG_FILTER+    , gl_DEPTH_COMPONENT32+    , gl_VIEW_CLASS_S3TC_DXT1_RGB+    , gl_FRONT_RIGHT+    , gl_HISTOGRAM_WIDTH+    , gl_SAMPLER_CUBE_MAP_ARRAY_ARB+    , gl_WEIGHT_ARRAY_STRIDE_OES+    , gl_PIXEL_PACK_BUFFER_ARB+    , gl_DOT_PRODUCT_PASS_THROUGH_NV+    , gl_COMPRESSED_RG11_EAC+    , gl_SRGB_DECODE_ARB+    , gl_OP_SUB_EXT+    , gl_SLIM12S_SGIX+    , gl_SECONDARY_COLOR_NV+    , gl_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS+    , gl_MAP1_VERTEX_3+    , gl_RELATIVE_ROUNDED_RECT8_NV+    , gl_PALETTE4_R5_G6_B5_OES+    , gl_UNSIGNED_INT8_NV+    , gl_CURRENT_MATRIX_STACK_DEPTH_ARB+    , gl_PIXEL_MODE_BIT+    , gl_FONT_UNINTELLIGIBLE_NV+    , gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT+    , gl_LUMINANCE8UI_EXT+    , gl_HILO16_NV+    , gl_MAP2_VERTEX_ATTRIB8_4_NV+    , gl_ATTACHED_SHADERS+    , gl_OBJECT_POINT_SGIS+    , gl_TEXTURE_CUBE_MAP_SEAMLESS+    , gl_COLOR_ATTACHMENT0+    , gl_POST_CONVOLUTION_ALPHA_BIAS_EXT+    , gl_SAMPLE_PATTERN_SGIS+    , gl_COPY_PIXEL_TOKEN+    , gl_BUFFER_SIZE_ARB+    , gl_DEPTH_BOUNDS_TEST_EXT+    , gl_SAMPLE_POSITION+    , gl_FULL_STIPPLE_HINT_PGI+    , gl_DEBUG_ASSERT_MESA+    , gl_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB+    , gl_RENDERBUFFER_WIDTH_OES+    , gl_FLOAT_RGBA16_NV+    , gl_MODELVIEW5_ARB+    , gl_VERSION+    , gl_TEXTURE17_ARB+    , gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT+    , gl_MODELVIEW0_STACK_DEPTH_EXT+    , gl_OUTPUT_TEXTURE_COORD1_EXT+    , gl_REQUIRED_TEXTURE_IMAGE_UNITS_OES+    , gl_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX+    , gl_IMAGE_TRANSFORM_2D_HP+    , gl_HSL_SATURATION_NV+    , gl_UNSIGNED_SHORT_5_6_5_REV+    , gl_LINEAR_CLIPMAP_NEAREST_SGIX+    , gl_PREVIOUS_ARB+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT+    , gl_PERFQUERY_COUNTER_DURATION_NORM_INTEL+    , gl_SLUMINANCE8_EXT+    , gl_RGBA16F_ARB+    , gl_PIXEL_UNPACK_BUFFER_ARB+    , gl_STENCIL_REF+    , gl_TEXTURE_VIEW_MIN_LAYER_EXT+    , gl_HISTOGRAM_RED_SIZE+    , gl_CLIP_PLANE1+    , gl_UNKNOWN_CONTEXT_RESET_ARB+    , gl_CMYK_EXT+    , gl_TEXTURE_COMPRESSED_BLOCK_SIZE+    , gl_RGBA8I+    , gl_TEXTURE29_ARB+    , gl_STENCIL_BUFFER_BIT2_QCOM+    , gl_RED_MIN_CLAMP_INGR+    , gl_ATC_RGBA_EXPLICIT_ALPHA_AMD+    , gl_ALL_COMPLETED_NV+    , gl_PROXY_POST_COLOR_MATRIX_COLOR_TABLE+    , gl_MATRIX10_ARB+    , gl_MAP1_VERTEX_ATTRIB1_4_NV+    , gl_MAX_4D_TEXTURE_SIZE_SGIS+    , gl_VIEW_CLASS_32_BITS+    , gl_TEXTURE7_ARB+    , gl_DEBUG_TYPE_PERFORMANCE_ARB+    , gl_ACTIVE_VARIABLES+    , gl_SOURCE2_RGB_EXT+    , gl_PACK_INVERT_MESA+    , gl_QUERY_BY_REGION_WAIT_NV+    , gl_VERTEX_ID_SWIZZLE_AMD+    , gl_SPRITE_TRANSLATION_SGIX+    , gl_RENDERBUFFER_HEIGHT+    , gl_CUBIC_EXT+    , gl_TEXTURE19_ARB+    , gl_T2F_N3F_V3F+    , gl_ATOMIC_COUNTER_BARRIER_BIT_EXT+    , gl_ARRAY_ELEMENT_LOCK_FIRST_EXT+    , gl_PROGRAM_RESULT_COMPONENTS_NV+    , gl_MAX_RECTANGLE_TEXTURE_SIZE_ARB+    , gl_TRIANGLE_MESH_SUN+    , gl_TEXTURE_WRAP_Q_SGIS+    , gl_ATTRIB_ARRAY_SIZE_NV+    , gl_DEBUG_LOGGED_MESSAGES_AMD+    , gl_BOOL+    , gl_MIN_LOD_WARNING_AMD+    , gl_PACK_SKIP_PIXELS+    , gl_IMAGE_TEXEL_SIZE+    , gl_SRC_ALPHA+    , gl_DEPENDENT_HILO_TEXTURE_2D_NV+    , gl_FRAMEBUFFER_ATTACHMENT_LAYERED+    , gl_PERFQUERY_COUNTER_DATA_UINT32_INTEL+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR+    , gl_VERTEX_ARRAY_RANGE_LENGTH_NV+    , gl_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS+    , gl_POST_CONVOLUTION_GREEN_SCALE+    , gl_SEPARATE_ATTRIBS+    , gl_UNSIGNED_BYTE_3_3_2+    , gl_SCALAR_EXT+    , gl_POINT_SIZE_ARRAY_STRIDE_OES+    , gl_DOUBLE_MAT3x4+    , gl_SRC0_RGB+    , gl_VIEW_CLASS_BPTC_UNORM+    , gl_SYNC_FLAGS+    , gl_TEXTURE_SWIZZLE_RGBA_EXT+    , gl_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX+    , gl_TEXTURE29+    , gl_MEDIUM_INT+    , gl_CURRENT_QUERY_ARB+    , gl_DT_SCALE_NV+    , gl_CLAMP_VERTEX_COLOR_ARB+    , gl_DEPTH_BUFFER_BIT4_QCOM+    , gl_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2+    , gl_USE_MISSING_GLYPH_NV+    , gl_MAX_ASYNC_TEX_IMAGE_SGIX+    , gl_TESS_CONTROL_TEXTURE+    , gl_DEPTH_FUNC+    , gl_RG8I+    , gl_MAX_VERTEX_SHADER_VARIANTS_EXT+    , gl_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB+    , gl_COMPRESSED_SRGB+    , gl_PROGRAM_BINDING_ARB+    , gl_SAMPLER_2D_ARRAY+    , gl_IMAGE_CUBE_MAP_ARRAY_EXT+    , gl_BUFFER_ACCESS_FLAGS+    , gl_EIGHTH_BIT_ATI+    , gl_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV+    , gl_INT8_VEC4_NV+    , gl_CLEAR_TEXTURE+    , gl_TEXTURE_CUBE_MAP_OES+    , gl_FONT_NUM_GLYPH_INDICES_BIT_NV+    , gl_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV+    , gl_RENDERBUFFER_DEPTH_SIZE+    , gl_DOT_PRODUCT_TEXTURE_1D_NV+    , gl_DOUBLE_VEC3_EXT+    , gl_VERTEX_ATTRIB_ARRAY_UNIFIED_NV+    , gl_TEXTURE_LUMINANCE_TYPE+    , gl_CONTEXT_FLAGS+    , gl_NORMAL_ARRAY_BUFFER_BINDING+    , gl_PROGRAM_FORMAT_ARB+    , gl_MOVE_TO_CONTINUES_NV+    , gl_LO_BIAS_NV+    , gl_CONVOLUTION_WIDTH_EXT+    , gl_FRAGMENT_TEXTURE+    , gl_NORMAL_BIT_PGI+    , gl_COMPRESSED_SIGNED_RG11_EAC_OES+    , gl_FIRST_VERTEX_CONVENTION+    , gl_ROUNDED_RECT2_NV+    , gl_POST_COLOR_MATRIX_RED_BIAS+    , gl_UNIFORM_BUFFER+    , gl_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT+    , gl_NUM_SAMPLE_COUNTS+    , gl_FOG_OFFSET_VALUE_SGIX+    , gl_DIFFUSE+    , gl_CLIP_PLANE5+    , gl_OUTPUT_FOG_EXT+    , gl_PROGRAM_ATTRIB_COMPONENTS_NV+    , gl_RGBA_SIGNED_COMPONENTS_EXT+    , gl_COLOR_ARRAY_EXT+    , gl_PROXY_TEXTURE_1D_STACK_MESAX+    , gl_TEXTURE_COORD_ARRAY_POINTER+    , gl_MAX_COLOR_ATTACHMENTS+    , gl_TEXTURE28_ARB+    , gl_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX+    , gl_DEPTH24_STENCIL8_EXT+    , gl_MAX+    , gl_MODELVIEW12_ARB+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES+    , gl_PIXEL_MAP_I_TO_I_SIZE+    , gl_NORMAL_ARRAY_LIST_STRIDE_IBM+    , gl_SOURCE3_RGB_NV+    , gl_ALPHA12_EXT+    , gl_STREAM_COPY_ARB+    , gl_STENCIL_BACK_PASS_DEPTH_FAIL_ATI+    , gl_FRAGMENT_SUBROUTINE_UNIFORM+    , gl_IS_ROW_MAJOR+    , gl_UNPACK_SKIP_IMAGES+    , gl_NUM_GENERAL_COMBINERS_NV+    , gl_STENCIL_CLEAR_TAG_VALUE_EXT+    , gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS+    , gl_DRAW_BUFFER12_ARB+    , gl_OFFSET_PROJECTIVE_TEXTURE_2D_NV+    , gl_VERTEX_ARRAY_OBJECT_EXT+    , gl_PN_TRIANGLES_NORMAL_MODE_ATI+    , gl_C4UB_V3F+    , gl_REPEAT+    , gl_MAX_SAMPLE_MASK_WORDS_NV+    , gl_STORAGE_SHARED_APPLE+    , gl_TEXTURE9_ARB+    , gl_QUERY_BUFFER_BINDING+    , gl_UNSIGNED_SHORT_8_8_REV_APPLE+    , gl_MAX_FRAGMENT_UNIFORM_VECTORS+    , gl_UNDEFINED_APPLE+    , gl_TABLE_TOO_LARGE_EXT+    , gl_MAX_TESS_PATCH_COMPONENTS_EXT+    , gl_XOR_NV+    , gl_MAX_SHADER_BUFFER_ADDRESS_NV+    , gl_DEBUG_SOURCE_WINDOW_SYSTEM+    , gl_UNSIGNALED_APPLE+    , gl_SIGNED_LUMINANCE_NV+    , gl_FOG_DISTANCE_MODE_NV+    , gl_PN_TRIANGLES_POINT_MODE_ATI+    , gl_GEOMETRY_SUBROUTINE_UNIFORM+    , gl_NEGATIVE_Z_EXT+    , gl_PIXEL_MAP_R_TO_R+    , gl_OBJECT_LINK_STATUS_ARB+    , gl_NUM_ACTIVE_VARIABLES+    , gl_BUFFER_UPDATE_BARRIER_BIT_EXT+    , gl_IMAGE_CUBE_EXT+    , gl_RGB_INTEGER_EXT+    , gl_DRAW_BUFFER13_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT+    , gl_SYNC_GPU_COMMANDS_COMPLETE_APPLE+    , gl_RGB_SCALE+    , gl_DOUBLE_MAT3x4_EXT+    , gl_EXP+    , gl_PERFMON_RESULT_AVAILABLE_AMD+    , gl_STENCIL_VALUE_MASK+    , gl_COLOR_ATTACHMENT12_NV+    , gl_VERTEX_STREAM2_ATI+    , gl_MAP_COHERENT_BIT+    , gl_COMPRESSED_SIGNED_RG_RGTC2+    , gl_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER+    , gl_FRAGMENT_PROGRAM_ARB+    , gl_COLOR_BUFFER_BIT6_QCOM+    , gl_FLOAT_32_UNSIGNED_INT_24_8_REV_NV+    , gl_WIDE_LINE_HINT_PGI+    , gl_FRAGMENT_LIGHT4_SGIX+    , gl_RGBA_FLOAT_MODE_ATI+    , gl_UNSIGNED_INT_10F_11F_11F_REV+    , gl_MODELVIEW1_STACK_DEPTH_EXT+    , gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV+    , gl_POINT_SIZE_MAX+    , gl_ALPHA_TEST_REF_QCOM+    , gl_RELATIVE_HORIZONTAL_LINE_TO_NV+    , gl_FILTER4_SGIS+    , gl_TEXTURE4+    , gl_INDEX_MATERIAL_EXT+    , gl_FETCH_PER_SAMPLE_ARM+    , gl_VARIANT_ARRAY_TYPE_EXT+    , gl_ALPHA_MAX_SGIX+    , gl_NUM_INSTRUCTIONS_TOTAL_ATI+    , gl_TEXTURE_IMAGE_TYPE+    , gl_MAX_TESS_CONTROL_IMAGE_UNIFORMS+    , gl_DRAW_BUFFER11_NV+    , gl_SURFACE_STATE_NV+    , gl_BLEND_SRC_RGB+    , gl_OBJECT_ACTIVE_UNIFORMS_ARB+    , gl_COLORDODGE_NV+    , gl_PRIMITIVES_GENERATED_NV+    , gl_IMAGE_2D_ARRAY+    , gl_LOSE_CONTEXT_ON_RESET_ARB+    , gl_RG_INTEGER+    , gl_UNSIGNED_INT_SAMPLER_1D_EXT+    , gl_REFLECTION_MAP_ARB+    , gl_NORMAL_ARRAY_TYPE_EXT+    , gl_BLUE_BITS+    , gl_ATOMIC_COUNTER_BARRIER_BIT+    , gl_INTENSITY8I_EXT+    , gl_TEXTURE_BINDING_RECTANGLE_ARB+    , gl_SCALE_BY_TWO_NV+    , gl_PACK_IMAGE_HEIGHT+    , gl_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL+    , gl_DEPTH_COMPONENT24_SGIX+    , gl_NUM_FRAGMENT_CONSTANTS_ATI+    , gl_EDGE_FLAG_ARRAY_STRIDE_EXT+    , gl_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT+    , gl_SAMPLE_ALPHA_TO_COVERAGE_ARB+    , gl_UNPACK_SKIP_IMAGES_EXT+    , gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL+    , gl_RGBA8_OES+    , gl_STENCIL_INDEX8_OES+    , gl_MAX_SPARSE_3D_TEXTURE_SIZE_AMD+    , gl_COMPUTE_SHADER+    , gl_QUERY_WAIT_NV+    , gl_TEXTURE_COMPARE_FUNC_ARB+    , gl_SCREEN_COORDINATES_REND+    , gl_DRAW_BUFFER4_EXT+    , gl_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT+    , gl_TOP_LEVEL_ARRAY_SIZE+    , gl_STATIC_COPY_ARB+    , gl_MAP1_TANGENT_EXT+    , gl_MAP2_VERTEX_ATTRIB11_4_NV+    , gl_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX+    , gl_DRAW_BUFFER9+    , gl_COMPRESSED_INTENSITY_ARB+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB+    , gl_MATRIX19_ARB+    , gl_MAX_MULTIVIEW_BUFFERS_EXT+    , gl_CONJOINT_NV+    , gl_INTENSITY_SNORM+    , gl_DRAW_BUFFER14+    , gl_MAX_PROGRAM_INSTRUCTIONS_ARB+    , gl_TEXTURE_BINDING_RECTANGLE+    , gl_DEBUG_SOURCE_SHADER_COMPILER_ARB+    , gl_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR+    , gl_MULTISAMPLE_EXT+    , gl_NEAREST_MIPMAP_NEAREST+    , gl_COLOR_ATTACHMENT7_EXT+    , gl_STENCIL_BUFFER_BIT6_QCOM+    , gl_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT+    , gl_REG_29_ATI+    , gl_COVERAGE_SAMPLES_NV+    , gl_RELEASED_APPLE+    , gl_ALPHA_TEST_FUNC+    , gl_DRAW_BUFFER2+    , gl_VERTEX_PROGRAM_BINDING_NV+    , gl_IMAGE_2D_RECT+    , gl_COLOR_TABLE_BIAS_SGI+    , gl_CLIENT_ACTIVE_TEXTURE_ARB+    , gl_CURRENT_MATRIX_INDEX_ARB+    , gl_TEXTURE_COORD_ARRAY_STRIDE+    , gl_FILTER+    , gl_MAX_MODELVIEW_STACK_DEPTH+    , gl_VERTEX_ATTRIB_ARRAY5_NV+    , gl_UNSIGNED_BYTE+    , gl_DETAIL_TEXTURE_2D_SGIS+    , gl_POST_CONVOLUTION_BLUE_BIAS+    , gl_TYPE+    , gl_COMPRESSED_RG+    , gl_4PASS_1_SGIS+    , gl_SOURCE2_RGB+    , gl_TEXTURE_MAX_LOD+    , gl_EYE_DISTANCE_TO_LINE_SGIS+    , gl_LUMINANCE_ALPHA32F_EXT+    , gl_MATRIX_INDEX_ARRAY_STRIDE_ARB+    , gl_COLOR_ATTACHMENT4+    , gl_INDEX_ARRAY_BUFFER_BINDING+    , gl_UNSIGNED_INT_SAMPLER_2D_ARRAY+    , gl_PIXEL_TILE_BEST_ALIGNMENT_SGIX+    , gl_SPECULAR+    , gl_PACK_IMAGE_DEPTH_SGIS+    , gl_PLUS_CLAMPED_NV+    , gl_INVALID_FRAMEBUFFER_OPERATION+    , gl_RG+    , gl_COLOR_ATTACHMENT11_NV+    , gl_UNPACK_SKIP_PIXELS+    , gl_SAMPLE_BUFFERS+    , gl_DRAW_BUFFER1_ARB+    , gl_COMBINER6_NV+    , gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES+    , gl_TEXTURE_ENV+    , gl_QUAD_MESH_SUN+    , gl_REFERENCED_BY_TESS_CONTROL_SHADER_EXT+    , gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV+    , gl_TIMEOUT_EXPIRED+    , gl_FLOAT_MAT4x2_NV+    , gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES+    , gl_COMBINER1_NV+    , gl_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB+    , gl_RENDERBUFFER_SAMPLES_ANGLE+    , gl_VERTEX_ARRAY_SIZE+    , gl_TEXTURE2+    , gl_RELATIVE_MOVE_TO_NV+    , gl_ALPHA_TEST_FUNC_QCOM+    , gl_INNOCENT_CONTEXT_RESET_KHR+    , gl_MAP1_VERTEX_ATTRIB5_4_NV+    , gl_SAMPLER_1D_SHADOW+    , gl_TEXTURE_1D_ARRAY_EXT+    , gl_STENCIL_INDEX+    , gl_SOURCE2_ALPHA_EXT+    , gl_NORMAL_MAP_EXT+    , gl_FOG_COORDINATE_SOURCE_EXT+    , gl_TEXTURE_FILTER_CONTROL+    , gl_REPLACE_OLDEST_SUN+    , gl_PROGRAM_ADDRESS_REGISTERS_ARB+    , gl_2PASS_1_EXT+    , gl_LIGHT_ENV_MODE_SGIX+    , gl_OP_FRAC_EXT+    , gl_PROXY_TEXTURE_RECTANGLE_NV+    , gl_RENDERBUFFER+    , gl_MAP2_TEXTURE_COORD_4+    , gl_TEXTURE_BORDER_COLOR_EXT+    , gl_SEPARABLE_2D+    , gl_COMPRESSED_SRGB_S3TC_DXT1_EXT+    , gl_DRAW_BUFFER0_ATI+    , gl_TEXTURE_IMMUTABLE_LEVELS+    , gl_E_TIMES_F_NV+    , gl_MATRIX24_ARB+    , gl_PIXEL_GROUP_COLOR_SGIS+    , gl_CURRENT_RASTER_COLOR+    , gl_DOUBLE_MAT2x4_EXT+    , gl_BUMP_TEX_UNITS_ATI+    , gl_FOG_COORDINATE_ARRAY_EXT+    , gl_ALWAYS+    , gl_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES+    , gl_MAP2_VERTEX_4+    , gl_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG+    , gl_MODULATE_SIGNED_ADD_ATI+    , gl_RG8+    , gl_ACTIVE_UNIFORM_BLOCKS+    , gl_MAX_SPARSE_TEXTURE_SIZE_AMD+    , gl_COLOR_ATTACHMENT11_EXT+    , gl_POST_CONVOLUTION_BLUE_BIAS_EXT+    , gl_BUFFER_OBJECT_APPLE+    , gl_UNIFORM_TYPE+    , gl_VARIABLE_E_NV+    , gl_MAX_COMPUTE_ATOMIC_COUNTERS+    , gl_COMPRESSED_RED_RGTC1+    , gl_LUMINANCE_INTEGER_EXT+    , gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY+    , gl_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE+    , gl_R16F_EXT+    , gl_MATRIX4_ARB+    , gl_MATRIX_INDEX_ARRAY_SIZE_OES+    , gl_POLYGON_STIPPLE+    , gl_DUAL_ALPHA12_SGIS+    , gl_PIXEL_MAP_I_TO_B+    , gl_VERTEX_ATTRIB_ARRAY6_NV+    , gl_REG_21_ATI+    , gl_PERFMON_RESULT_SIZE_AMD+    , gl_ALPHA8_OES+    , gl_OBJECT_BUFFER_USAGE_ATI+    , gl_PATH_STENCIL_FUNC_NV+    , gl_TEXTURE12_ARB+    , gl_DEPTH_COMPONENT16_OES+    , gl_MODELVIEW20_ARB+    , gl_ALPHA12+    , gl_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT+    , gl_MODULATE_ADD_ATI+    , gl_CLAMP_TO_BORDER_EXT+    , gl_CONSTANT_EXT+    , gl_OP_LOG_BASE_2_EXT+    , gl_SET_AMD+    , gl_ONE_MINUS_SRC_ALPHA+    , gl_COMPRESSED_LUMINANCE_ALPHA_ARB+    , gl_MAX_SERVER_WAIT_TIMEOUT_APPLE+    , gl_LINE_TOKEN+    , gl_PROXY_POST_CONVOLUTION_COLOR_TABLE+    , gl_TEXTURE_BINDING_3D+    , gl_INTENSITY16I_EXT+    , gl_DEPENDENT_AR_TEXTURE_2D_NV+    , gl_CURRENT_RASTER_NORMAL_SGIX+    , gl_TEXTURE_INTENSITY_TYPE+    , gl_TEXTURE_STORAGE_SPARSE_BIT_AMD+    , gl_RENDERBUFFER_INTERNAL_FORMAT_EXT+    , gl_VERTEX_ATTRIB_ARRAY1_NV+    , gl_TEXTURE_RED_SIZE+    , gl_CURRENT_COLOR+    , gl_COMPRESSED_RGBA_ASTC_8x5_KHR+    , gl_STENCIL_BUFFER_BIT7_QCOM+    , gl_CLIP_PLANE0_IMG+    , gl_ALPHA_TEST_REF+    , gl_POINT_SMOOTH+    , gl_WEIGHT_ARRAY_SIZE_OES+    , gl_DECODE_EXT+    , gl_SPARSE_BUFFER_PAGE_SIZE_ARB+    , gl_CLIENT_ATTRIB_STACK_DEPTH+    , gl_TEXTURE_BINDING_EXTERNAL_OES+    , gl_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT+    , gl_RENDERBUFFER_STENCIL_SIZE_OES+    , gl_POST_COLOR_MATRIX_ALPHA_BIAS+    , gl_COMPARE_REF_DEPTH_TO_TEXTURE_EXT+    , gl_HSL_LUMINOSITY_KHR+    , gl_MAX_VERTEX_STREAMS_ATI+    , gl_PERFQUERY_COUNTER_THROUGHPUT_INTEL+    , gl_COMPRESSED_SIGNED_RED_RGTC1_EXT+    , gl_DEPTH_COMPONENT32_OES+    , gl_CON_3_ATI+    , gl_COMPRESSED_RGBA_S3TC_DXT1_EXT+    , gl_MATRIX6_ARB+    , gl_MAP2_VERTEX_ATTRIB5_4_NV+    , gl_LINE_WIDTH_RANGE+    , gl_GLYPH_VERTICAL_BEARING_X_BIT_NV+    , gl_FOG_COORDINATE_ARRAY+    , gl_VERTEX_ARRAY_RANGE_LENGTH_APPLE+    , gl_CLAMP_FRAGMENT_COLOR+    , gl_COMPRESSED_RGBA_ASTC_10x5_KHR+    , gl_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB+    , gl_COLOR_BUFFER_BIT4_QCOM+    , gl_TEXTURE13+    , gl_MAX_DEBUG_MESSAGE_LENGTH_AMD+    , gl_EVAL_VERTEX_ATTRIB0_NV+    , gl_ALPHA_MIN_CLAMP_INGR+    , gl_SUB_ATI+    , gl_SECONDARY_COLOR_ARRAY_LIST_IBM+    , gl_RGBA_INTEGER_MODE_EXT+    , gl_DEBUG_TYPE_MARKER_KHR+    , gl_VERTEX_ATTRIB_ARRAY14_NV+    , gl_TEXTURE_MIN_LOD+    , gl_INDEX_TEST_REF_EXT+    , gl_AUX0+    , gl_UNSIGNED_INT_IMAGE_2D_RECT+    , gl_2_BYTES+    , gl_UNDEFINED_VERTEX+    , gl_LINE_STIPPLE_PATTERN+    , gl_FRAMEBUFFER_SRGB_CAPABLE_EXT+    , gl_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB+    , gl_UNSIGNED_INT_SAMPLER_1D_ARRAY+    , gl_LOAD+    , gl_SIGNED_ALPHA8_NV+    , gl_STENCIL_INDEX8_EXT+    , gl_VIEW_CLASS_24_BITS+    , gl_SHADER_STORAGE_BARRIER_BIT+    , gl_UNSIGNED_INT_SAMPLER_BUFFER_AMD+    , gl_IMAGE_BINDING_LAYER+    , gl_MULTISAMPLE_FILTER_HINT_NV+    , gl_SPARE1_NV+    , gl_MAP_READ_BIT_EXT+    , gl_COMPRESSED_LUMINANCE+    , gl_COMPRESSED_TEXTURE_FORMATS+    , gl_UNIFORM_IS_ROW_MAJOR+    , gl_OFFSET_TEXTURE_2D_SCALE_NV+    , gl_RGBA_DXT5_S3TC+    , gl_MAX_PROGRAM_LOCAL_PARAMETERS_ARB+    , gl_MAX_UNIFORM_BUFFER_BINDINGS+    , gl_RGB16UI_EXT+    , gl_TEXTURE_COMPARE_OPERATOR_SGIX+    , gl_VIDEO_BUFFER_PITCH_NV+    , gl_RELATIVE_RECT_NV+    , gl_DRAW_BUFFER8_ATI+    , gl_SRC_COLOR+    , gl_SHADER_OBJECT_EXT+    , gl_GUILTY_CONTEXT_RESET_KHR+    , gl_EVAL_VERTEX_ATTRIB5_NV+    , gl_PALETTE4_RGBA4_OES+    , gl_LUMINANCE12_EXT+    , gl_DONT_CARE+    , gl_TEXTURE_BUFFER+    , gl_COMPRESSED_RGBA_ASTC_4x4x4_OES+    , gl_TEXTURE_BINDING_1D_ARRAY+    , gl_SEPARATE_SPECULAR_COLOR+    , gl_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED+    , gl_NORMAL_ARRAY_LIST_IBM+    , gl_CURRENT_MATRIX_STACK_DEPTH_NV+    , gl_INT_IMAGE_3D+    , gl_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV+    , gl_CONTEXT_FLAG_DEBUG_BIT+    , gl_WEIGHT_ARRAY_BUFFER_BINDING_ARB+    , gl_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX+    , gl_VECTOR_EXT+    , gl_TEXTURE_BUFFER_DATA_STORE_BINDING+    , gl_TEXTURE_LOD_BIAS+    , gl_GEOMETRY_SHADER_EXT+    , gl_TEXTURE30+    , gl_VERTEX_SHADER_BIT+    , gl_HISTOGRAM_BLUE_SIZE_EXT+    , gl_PATH_COMMAND_COUNT_NV+    , gl_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV+    , gl_STENCIL_TAG_BITS_EXT+    , gl_MAX_PROGRAM_LOOP_DEPTH_NV+    , gl_FLOAT_MAT2x3_NV+    , gl_CURRENT_RASTER_DISTANCE+    , gl_COMPRESSED_SRGB8_ETC2_OES+    , gl_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES+    , gl_PIXEL_MAP_I_TO_G_SIZE+    , gl_COMBINE+    , gl_FOG_HINT+    , gl_COMPUTE_SUBROUTINE_UNIFORM+    , gl_FRAGMENT_LIGHT3_SGIX+    , gl_DEBUG_TYPE_PORTABILITY_ARB+    , gl_MIN_PROGRAM_TEXEL_OFFSET_EXT+    , gl_TRANSFORM_FEEDBACK_BUFFER_NV+    , gl_UNKNOWN_CONTEXT_RESET_EXT+    , gl_INT_SAMPLER_CUBE_MAP_ARRAY_ARB+    , gl_UNSIGNED_INT_24_8_NV+    , gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY+    , gl_MANUAL_GENERATE_MIPMAP+    , gl_MAP2_VERTEX_ATTRIB6_4_NV+    , gl_FRAMEBUFFER_EXT+    , gl_INT16_NV+    , gl_FULL_RANGE_EXT+    , gl_MAP1_VERTEX_ATTRIB2_4_NV+    , gl_UNSIGNED_INT_8_8_8_8_EXT+    , gl_TESS_CONTROL_SUBROUTINE_UNIFORM+    , gl_PREVIOUS_TEXTURE_INPUT_NV+    , gl_ATOMIC_COUNTER_BUFFER_DATA_SIZE+    , gl_SYNC_STATUS_APPLE+    , gl_4PASS_0_EXT+    , gl_POLYGON_SMOOTH+    , gl_FEEDBACK_BUFFER_SIZE+    , gl_COLORBURN_KHR+    , gl_DEPTH24_STENCIL8+    , gl_LINEAR_CLIPMAP_LINEAR_SGIX+    , gl_TEXTURE_MAX_LEVEL+    , gl_TEXTURE_WRAP_R_EXT+    , gl_OBJECT_SUBTYPE_ARB+    , gl_MATRIX18_ARB+    , gl_MATRIX_INDEX_ARRAY_POINTER_OES+    , gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB+    , gl_ALPHA8_SNORM+    , gl_TESS_CONTROL_SUBROUTINE+    , gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB+    , gl_POST_CONVOLUTION_ALPHA_SCALE_EXT+    , gl_RGB5_A1_EXT+    , gl_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS+    , gl_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM+    , gl_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV+    , gl_TEXTURE21_ARB+    , gl_SAMPLER_2D_RECT_SHADOW+    , gl_DEPTH_STENCIL_TEXTURE_MODE+    , gl_MAP1_VERTEX_ATTRIB10_4_NV+    , gl_PINLIGHT_NV+    , gl_TEXTURE_INTERNAL_FORMAT+    , gl_VERTEX_ARRAY_OBJECT_AMD+    , gl_OBJECT_LINEAR+    , gl_TEXTURE_IMMUTABLE_FORMAT_EXT+    , gl_COMBINER_COMPONENT_USAGE_NV+    , gl_RENDERBUFFER_GREEN_SIZE_EXT+    , gl_CONVOLUTION_FILTER_SCALE+    , gl_TEXTURE11+    , gl_BITMAP+    , gl_VIEW_COMPATIBILITY_CLASS+    , gl_TEXTURE26+    , gl_UNSIGNED_INT8_VEC4_NV+    , gl_UNSIGNED_INT_VEC3+    , gl_VERTEX_PRECLIP_SGIX+    , gl_PACK_LSB_FIRST+    , gl_NEGATIVE_Y_EXT+    , gl_FRAMEBUFFER_BINDING_ANGLE+    , gl_MAP_INVALIDATE_BUFFER_BIT_EXT+    , gl_NO_RESET_NOTIFICATION+    , gl_MINMAX_EXT+    , gl_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST+    , gl_QUARTER_BIT_ATI+    , gl_TEXTURE9+    , gl_FLOAT_R16_NV+    , gl_BLEND_ADVANCED_COHERENT_KHR+    , gl_MATRIX_INDEX_ARRAY_POINTER_ARB+    , gl_PROXY_TEXTURE_1D_EXT+    , gl_PERTURB_EXT+    , gl_IUI_N3F_V3F_EXT+    , gl_COMBINE_RGB_ARB+    , gl_DEBUG_SOURCE_APPLICATION_KHR+    , gl_MAX_GEOMETRY_UNIFORM_COMPONENTS+    , gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE+    , gl_PROGRAM_ALU_INSTRUCTIONS_ARB+    , gl_VERTEX_STREAM0_ATI+    , gl_EDGE_FLAG_ARRAY_POINTER_EXT+    , gl_INT_IMAGE_2D_EXT+    , gl_READ_FRAMEBUFFER_BINDING_EXT+    , gl_TEXTURE_CUBE_MAP_ARB+    , gl_LUMINANCE12_ALPHA12+    , gl_FUNC_ADD+    , gl_TRANSPOSE_COLOR_MATRIX_ARB+    , gl_COLOR_ATTACHMENT6+    , gl_GEOMETRY_SUBROUTINE+    , gl_MAX_ELEMENT_INDEX+    , gl_QUERY_OBJECT_AMD+    , gl_TEXTURE_CUBE_MAP_EXT+    , gl_CONSTANT_ATTENUATION+    , gl_LUMINANCE_FLOAT32_APPLE+    , gl_R32UI+    , gl_UNSIGNED_INT_VEC4_EXT+    , gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT+    , gl_SAMPLE_MASK_VALUE+    , gl_STRICT_DEPTHFUNC_HINT_PGI+    , gl_CONVOLUTION_HEIGHT_EXT+    , gl_DEPTH_BUFFER_BIT1_QCOM+    , gl_CLIP_DISTANCE_NV+    , gl_DISPATCH_INDIRECT_BUFFER+    , gl_LUMINANCE4+    , gl_CLAMP+    , gl_CONVOLUTION_FORMAT+    , gl_IMAGE_2D_MULTISAMPLE+    , gl_TRIANGLE_STRIP+    , gl_BGRA_INTEGER_EXT+    , gl_FRAGMENTS_INSTRUMENT_MAX_SGIX+    , gl_TESS_CONTROL_SHADER_BIT+    , gl_POINT_SIZE_ARRAY_BUFFER_BINDING_OES+    , gl_BACK_NORMALS_HINT_PGI+    , gl_FOG_COORD_ARRAY+    , gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR+    , gl_OPERAND1_RGB_EXT+    , gl_LINEAR_SHARPEN_COLOR_SGIS+    , gl_POST_TEXTURE_FILTER_SCALE_SGIX+    , gl_FRAMEBUFFER_COMPLETE_OES+    , gl_SYNC_OBJECT_APPLE+    , gl_INDEX_WRITEMASK+    , gl_SIGNED_INTENSITY_NV+    , gl_SGX_PROGRAM_BINARY_IMG+    , gl_T4F_V4F+    , GLsync+    , GLsyncob()+    , GLhalf+    , GLhalfARB+    , GLintptrARB+    , GLsizeiptrARB+    , GLDEBUGPROC+    , GLDEBUGPROCARB+    , GLDEBUGPROCKHR+    , GLDEBUGPROCAMD+    , GLbyte+    , GLubyte+    , GLfloat+    , GLclampf+    , GLfixed+    , GLint64+    , GLuint64+    , GLint64EXT+    , GLuint64EXT+    , GLintptr+    , GLsizeiptr+    , GLhalfNV+    , GLvdpauSurfaceNV+    , GLenum+    , GLboolean+    , GLvoid+    , GLbitfield+    , GLshort+    , GLint+    , GLclampx+    , GLushort+    , GLuint+    , GLsizei+    , GLdouble+    , GLclampd+    , GLeglImageOESob()+    , GLeglImageOES+    , GLchar+    , GLcharARB+    , GLhandleARB+    )+    where++import Data.Typeable+import Data.IORef+import Data.Int+import Data.Word+import System.IO.Unsafe+import Control.Applicative+import Control.Exception+import Control.Monad+import Control.Monad.IO.Class+import Control.Monad.Trans.Except+import Foreign.C.Types+import Foreign.Ptr++#ifdef mingw32_HOST_OS+#define APIENTRY stdcall+#else+#define APIENTRY+#endif++data FlextInitResult = Failure { why :: String }+                     | Success+                     deriving ( Eq, Ord, Show, Read )++#ifdef __GLASGOW_HASKELL__+deriving instance Typeable FlextInitResult+instance Exception FlextInitResult+#endif++proc :: Either a a -> a+proc (Left x) = x+proc (Right x) = x++-- | Initializes OpenGL entry points in the current OpenGL context.+flextInit :: (String -> IO (Ptr ()))+          -> (String -> IO Bool)+          -> IO FlextInitResult+flextInit get_proc_address is_supported = fmap proc $ runExceptT $ do+    -- GL_VERSION_1_0++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCullFace"+        writeIORef glrefCullFace $ gldynCullFace addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFrontFace"+        writeIORef glrefFrontFace $ gldynFrontFace addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glHint"+        writeIORef glrefHint $ gldynHint addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glLineWidth"+        writeIORef glrefLineWidth $ gldynLineWidth addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPointSize"+        writeIORef glrefPointSize $ gldynPointSize addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPolygonMode"+        writeIORef glrefPolygonMode $ gldynPolygonMode addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glScissor"+        writeIORef glrefScissor $ gldynScissor addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexParameterf"+        writeIORef glrefTexParameterf $ gldynTexParameterf addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexParameterfv"+        writeIORef glrefTexParameterfv $ gldynTexParameterfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexParameteri"+        writeIORef glrefTexParameteri $ gldynTexParameteri addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexParameteriv"+        writeIORef glrefTexParameteriv $ gldynTexParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexImage1D"+        writeIORef glrefTexImage1D $ gldynTexImage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexImage2D"+        writeIORef glrefTexImage2D $ gldynTexImage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawBuffer"+        writeIORef glrefDrawBuffer $ gldynDrawBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClear"+        writeIORef glrefClear $ gldynClear addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearColor"+        writeIORef glrefClearColor $ gldynClearColor addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearStencil"+        writeIORef glrefClearStencil $ gldynClearStencil addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearDepth"+        writeIORef glrefClearDepth $ gldynClearDepth addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glStencilMask"+        writeIORef glrefStencilMask $ gldynStencilMask addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glColorMask"+        writeIORef glrefColorMask $ gldynColorMask addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDepthMask"+        writeIORef glrefDepthMask $ gldynDepthMask addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisable"+        writeIORef glrefDisable $ gldynDisable addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnable"+        writeIORef glrefEnable $ gldynEnable addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFinish"+        writeIORef glrefFinish $ gldynFinish addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFlush"+        writeIORef glrefFlush $ gldynFlush addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBlendFunc"+        writeIORef glrefBlendFunc $ gldynBlendFunc addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glLogicOp"+        writeIORef glrefLogicOp $ gldynLogicOp addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glStencilFunc"+        writeIORef glrefStencilFunc $ gldynStencilFunc addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glStencilOp"+        writeIORef glrefStencilOp $ gldynStencilOp addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDepthFunc"+        writeIORef glrefDepthFunc $ gldynDepthFunc addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPixelStoref"+        writeIORef glrefPixelStoref $ gldynPixelStoref addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPixelStorei"+        writeIORef glrefPixelStorei $ gldynPixelStorei addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glReadBuffer"+        writeIORef glrefReadBuffer $ gldynReadBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glReadPixels"+        writeIORef glrefReadPixels $ gldynReadPixels addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBooleanv"+        writeIORef glrefGetBooleanv $ gldynGetBooleanv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetDoublev"+        writeIORef glrefGetDoublev $ gldynGetDoublev addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetError"+        writeIORef glrefGetError $ gldynGetError addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFloatv"+        writeIORef glrefGetFloatv $ gldynGetFloatv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetIntegerv"+        writeIORef glrefGetIntegerv $ gldynGetIntegerv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetString"+        writeIORef glrefGetString $ gldynGetString addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexImage"+        writeIORef glrefGetTexImage $ gldynGetTexImage addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexParameterfv"+        writeIORef glrefGetTexParameterfv $ gldynGetTexParameterfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexParameteriv"+        writeIORef glrefGetTexParameteriv $ gldynGetTexParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexLevelParameterfv"+        writeIORef glrefGetTexLevelParameterfv $ gldynGetTexLevelParameterfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexLevelParameteriv"+        writeIORef glrefGetTexLevelParameteriv $ gldynGetTexLevelParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsEnabled"+        writeIORef glrefIsEnabled $ gldynIsEnabled addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDepthRange"+        writeIORef glrefDepthRange $ gldynDepthRange addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glViewport"+        writeIORef glrefViewport $ gldynViewport addr++    -- GL_VERSION_1_1++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawArrays"+        writeIORef glrefDrawArrays $ gldynDrawArrays addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawElements"+        writeIORef glrefDrawElements $ gldynDrawElements addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPolygonOffset"+        writeIORef glrefPolygonOffset $ gldynPolygonOffset addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTexImage1D"+        writeIORef glrefCopyTexImage1D $ gldynCopyTexImage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTexImage2D"+        writeIORef glrefCopyTexImage2D $ gldynCopyTexImage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTexSubImage1D"+        writeIORef glrefCopyTexSubImage1D $ gldynCopyTexSubImage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTexSubImage2D"+        writeIORef glrefCopyTexSubImage2D $ gldynCopyTexSubImage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexSubImage1D"+        writeIORef glrefTexSubImage1D $ gldynTexSubImage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexSubImage2D"+        writeIORef glrefTexSubImage2D $ gldynTexSubImage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindTexture"+        writeIORef glrefBindTexture $ gldynBindTexture addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteTextures"+        writeIORef glrefDeleteTextures $ gldynDeleteTextures addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenTextures"+        writeIORef glrefGenTextures $ gldynGenTextures addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsTexture"+        writeIORef glrefIsTexture $ gldynIsTexture addr++    -- GL_VERSION_1_2++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawRangeElements"+        writeIORef glrefDrawRangeElements $ gldynDrawRangeElements addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexImage3D"+        writeIORef glrefTexImage3D $ gldynTexImage3D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexSubImage3D"+        writeIORef glrefTexSubImage3D $ gldynTexSubImage3D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTexSubImage3D"+        writeIORef glrefCopyTexSubImage3D $ gldynCopyTexSubImage3D addr++    -- GL_VERSION_1_3++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glActiveTexture"+        writeIORef glrefActiveTexture $ gldynActiveTexture addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSampleCoverage"+        writeIORef glrefSampleCoverage $ gldynSampleCoverage addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTexImage3D"+        writeIORef glrefCompressedTexImage3D $ gldynCompressedTexImage3D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTexImage2D"+        writeIORef glrefCompressedTexImage2D $ gldynCompressedTexImage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTexImage1D"+        writeIORef glrefCompressedTexImage1D $ gldynCompressedTexImage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTexSubImage3D"+        writeIORef glrefCompressedTexSubImage3D $ gldynCompressedTexSubImage3D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTexSubImage2D"+        writeIORef glrefCompressedTexSubImage2D $ gldynCompressedTexSubImage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTexSubImage1D"+        writeIORef glrefCompressedTexSubImage1D $ gldynCompressedTexSubImage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetCompressedTexImage"+        writeIORef glrefGetCompressedTexImage $ gldynGetCompressedTexImage addr++    -- GL_VERSION_1_4++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBlendFuncSeparate"+        writeIORef glrefBlendFuncSeparate $ gldynBlendFuncSeparate addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiDrawArrays"+        writeIORef glrefMultiDrawArrays $ gldynMultiDrawArrays addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiDrawElements"+        writeIORef glrefMultiDrawElements $ gldynMultiDrawElements addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPointParameterf"+        writeIORef glrefPointParameterf $ gldynPointParameterf addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPointParameterfv"+        writeIORef glrefPointParameterfv $ gldynPointParameterfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPointParameteri"+        writeIORef glrefPointParameteri $ gldynPointParameteri addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPointParameteriv"+        writeIORef glrefPointParameteriv $ gldynPointParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBlendColor"+        writeIORef glrefBlendColor $ gldynBlendColor addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBlendEquation"+        writeIORef glrefBlendEquation $ gldynBlendEquation addr++    -- GL_VERSION_1_5++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenQueries"+        writeIORef glrefGenQueries $ gldynGenQueries addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteQueries"+        writeIORef glrefDeleteQueries $ gldynDeleteQueries addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsQuery"+        writeIORef glrefIsQuery $ gldynIsQuery addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBeginQuery"+        writeIORef glrefBeginQuery $ gldynBeginQuery addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEndQuery"+        writeIORef glrefEndQuery $ gldynEndQuery addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetQueryiv"+        writeIORef glrefGetQueryiv $ gldynGetQueryiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetQueryObjectiv"+        writeIORef glrefGetQueryObjectiv $ gldynGetQueryObjectiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetQueryObjectuiv"+        writeIORef glrefGetQueryObjectuiv $ gldynGetQueryObjectuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindBuffer"+        writeIORef glrefBindBuffer $ gldynBindBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteBuffers"+        writeIORef glrefDeleteBuffers $ gldynDeleteBuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenBuffers"+        writeIORef glrefGenBuffers $ gldynGenBuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsBuffer"+        writeIORef glrefIsBuffer $ gldynIsBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBufferData"+        writeIORef glrefBufferData $ gldynBufferData addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBufferSubData"+        writeIORef glrefBufferSubData $ gldynBufferSubData addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBufferSubData"+        writeIORef glrefGetBufferSubData $ gldynGetBufferSubData addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMapBuffer"+        writeIORef glrefMapBuffer $ gldynMapBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUnmapBuffer"+        writeIORef glrefUnmapBuffer $ gldynUnmapBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBufferParameteriv"+        writeIORef glrefGetBufferParameteriv $ gldynGetBufferParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBufferPointerv"+        writeIORef glrefGetBufferPointerv $ gldynGetBufferPointerv addr++    -- GL_VERSION_2_0++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBlendEquationSeparate"+        writeIORef glrefBlendEquationSeparate $ gldynBlendEquationSeparate addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawBuffers"+        writeIORef glrefDrawBuffers $ gldynDrawBuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glStencilOpSeparate"+        writeIORef glrefStencilOpSeparate $ gldynStencilOpSeparate addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glStencilFuncSeparate"+        writeIORef glrefStencilFuncSeparate $ gldynStencilFuncSeparate addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glStencilMaskSeparate"+        writeIORef glrefStencilMaskSeparate $ gldynStencilMaskSeparate addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glAttachShader"+        writeIORef glrefAttachShader $ gldynAttachShader addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindAttribLocation"+        writeIORef glrefBindAttribLocation $ gldynBindAttribLocation addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompileShader"+        writeIORef glrefCompileShader $ gldynCompileShader addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCreateProgram"+        writeIORef glrefCreateProgram $ gldynCreateProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCreateShader"+        writeIORef glrefCreateShader $ gldynCreateShader addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteProgram"+        writeIORef glrefDeleteProgram $ gldynDeleteProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteShader"+        writeIORef glrefDeleteShader $ gldynDeleteShader addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDetachShader"+        writeIORef glrefDetachShader $ gldynDetachShader addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisableVertexAttribArray"+        writeIORef glrefDisableVertexAttribArray $ gldynDisableVertexAttribArray addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnableVertexAttribArray"+        writeIORef glrefEnableVertexAttribArray $ gldynEnableVertexAttribArray addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetActiveAttrib"+        writeIORef glrefGetActiveAttrib $ gldynGetActiveAttrib addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetActiveUniform"+        writeIORef glrefGetActiveUniform $ gldynGetActiveUniform addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetAttachedShaders"+        writeIORef glrefGetAttachedShaders $ gldynGetAttachedShaders addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetAttribLocation"+        writeIORef glrefGetAttribLocation $ gldynGetAttribLocation addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetProgramiv"+        writeIORef glrefGetProgramiv $ gldynGetProgramiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetProgramInfoLog"+        writeIORef glrefGetProgramInfoLog $ gldynGetProgramInfoLog addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetShaderiv"+        writeIORef glrefGetShaderiv $ gldynGetShaderiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetShaderInfoLog"+        writeIORef glrefGetShaderInfoLog $ gldynGetShaderInfoLog addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetShaderSource"+        writeIORef glrefGetShaderSource $ gldynGetShaderSource addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetUniformLocation"+        writeIORef glrefGetUniformLocation $ gldynGetUniformLocation addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetUniformfv"+        writeIORef glrefGetUniformfv $ gldynGetUniformfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetUniformiv"+        writeIORef glrefGetUniformiv $ gldynGetUniformiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexAttribdv"+        writeIORef glrefGetVertexAttribdv $ gldynGetVertexAttribdv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexAttribfv"+        writeIORef glrefGetVertexAttribfv $ gldynGetVertexAttribfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexAttribiv"+        writeIORef glrefGetVertexAttribiv $ gldynGetVertexAttribiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexAttribPointerv"+        writeIORef glrefGetVertexAttribPointerv $ gldynGetVertexAttribPointerv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsProgram"+        writeIORef glrefIsProgram $ gldynIsProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsShader"+        writeIORef glrefIsShader $ gldynIsShader addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glLinkProgram"+        writeIORef glrefLinkProgram $ gldynLinkProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glShaderSource"+        writeIORef glrefShaderSource $ gldynShaderSource addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUseProgram"+        writeIORef glrefUseProgram $ gldynUseProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform1f"+        writeIORef glrefUniform1f $ gldynUniform1f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform2f"+        writeIORef glrefUniform2f $ gldynUniform2f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform3f"+        writeIORef glrefUniform3f $ gldynUniform3f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform4f"+        writeIORef glrefUniform4f $ gldynUniform4f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform1i"+        writeIORef glrefUniform1i $ gldynUniform1i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform2i"+        writeIORef glrefUniform2i $ gldynUniform2i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform3i"+        writeIORef glrefUniform3i $ gldynUniform3i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform4i"+        writeIORef glrefUniform4i $ gldynUniform4i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform1fv"+        writeIORef glrefUniform1fv $ gldynUniform1fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform2fv"+        writeIORef glrefUniform2fv $ gldynUniform2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform3fv"+        writeIORef glrefUniform3fv $ gldynUniform3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform4fv"+        writeIORef glrefUniform4fv $ gldynUniform4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform1iv"+        writeIORef glrefUniform1iv $ gldynUniform1iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform2iv"+        writeIORef glrefUniform2iv $ gldynUniform2iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform3iv"+        writeIORef glrefUniform3iv $ gldynUniform3iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform4iv"+        writeIORef glrefUniform4iv $ gldynUniform4iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix2fv"+        writeIORef glrefUniformMatrix2fv $ gldynUniformMatrix2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix3fv"+        writeIORef glrefUniformMatrix3fv $ gldynUniformMatrix3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix4fv"+        writeIORef glrefUniformMatrix4fv $ gldynUniformMatrix4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glValidateProgram"+        writeIORef glrefValidateProgram $ gldynValidateProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib1d"+        writeIORef glrefVertexAttrib1d $ gldynVertexAttrib1d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib1dv"+        writeIORef glrefVertexAttrib1dv $ gldynVertexAttrib1dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib1f"+        writeIORef glrefVertexAttrib1f $ gldynVertexAttrib1f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib1fv"+        writeIORef glrefVertexAttrib1fv $ gldynVertexAttrib1fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib1s"+        writeIORef glrefVertexAttrib1s $ gldynVertexAttrib1s addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib1sv"+        writeIORef glrefVertexAttrib1sv $ gldynVertexAttrib1sv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib2d"+        writeIORef glrefVertexAttrib2d $ gldynVertexAttrib2d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib2dv"+        writeIORef glrefVertexAttrib2dv $ gldynVertexAttrib2dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib2f"+        writeIORef glrefVertexAttrib2f $ gldynVertexAttrib2f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib2fv"+        writeIORef glrefVertexAttrib2fv $ gldynVertexAttrib2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib2s"+        writeIORef glrefVertexAttrib2s $ gldynVertexAttrib2s addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib2sv"+        writeIORef glrefVertexAttrib2sv $ gldynVertexAttrib2sv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib3d"+        writeIORef glrefVertexAttrib3d $ gldynVertexAttrib3d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib3dv"+        writeIORef glrefVertexAttrib3dv $ gldynVertexAttrib3dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib3f"+        writeIORef glrefVertexAttrib3f $ gldynVertexAttrib3f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib3fv"+        writeIORef glrefVertexAttrib3fv $ gldynVertexAttrib3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib3s"+        writeIORef glrefVertexAttrib3s $ gldynVertexAttrib3s addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib3sv"+        writeIORef glrefVertexAttrib3sv $ gldynVertexAttrib3sv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Nbv"+        writeIORef glrefVertexAttrib4Nbv $ gldynVertexAttrib4Nbv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Niv"+        writeIORef glrefVertexAttrib4Niv $ gldynVertexAttrib4Niv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Nsv"+        writeIORef glrefVertexAttrib4Nsv $ gldynVertexAttrib4Nsv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Nub"+        writeIORef glrefVertexAttrib4Nub $ gldynVertexAttrib4Nub addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Nubv"+        writeIORef glrefVertexAttrib4Nubv $ gldynVertexAttrib4Nubv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Nuiv"+        writeIORef glrefVertexAttrib4Nuiv $ gldynVertexAttrib4Nuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4Nusv"+        writeIORef glrefVertexAttrib4Nusv $ gldynVertexAttrib4Nusv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4bv"+        writeIORef glrefVertexAttrib4bv $ gldynVertexAttrib4bv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4d"+        writeIORef glrefVertexAttrib4d $ gldynVertexAttrib4d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4dv"+        writeIORef glrefVertexAttrib4dv $ gldynVertexAttrib4dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4f"+        writeIORef glrefVertexAttrib4f $ gldynVertexAttrib4f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4fv"+        writeIORef glrefVertexAttrib4fv $ gldynVertexAttrib4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4iv"+        writeIORef glrefVertexAttrib4iv $ gldynVertexAttrib4iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4s"+        writeIORef glrefVertexAttrib4s $ gldynVertexAttrib4s addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4sv"+        writeIORef glrefVertexAttrib4sv $ gldynVertexAttrib4sv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4ubv"+        writeIORef glrefVertexAttrib4ubv $ gldynVertexAttrib4ubv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4uiv"+        writeIORef glrefVertexAttrib4uiv $ gldynVertexAttrib4uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttrib4usv"+        writeIORef glrefVertexAttrib4usv $ gldynVertexAttrib4usv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribPointer"+        writeIORef glrefVertexAttribPointer $ gldynVertexAttribPointer addr++    -- GL_VERSION_2_1++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix2x3fv"+        writeIORef glrefUniformMatrix2x3fv $ gldynUniformMatrix2x3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix3x2fv"+        writeIORef glrefUniformMatrix3x2fv $ gldynUniformMatrix3x2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix2x4fv"+        writeIORef glrefUniformMatrix2x4fv $ gldynUniformMatrix2x4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix4x2fv"+        writeIORef glrefUniformMatrix4x2fv $ gldynUniformMatrix4x2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix3x4fv"+        writeIORef glrefUniformMatrix3x4fv $ gldynUniformMatrix3x4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformMatrix4x3fv"+        writeIORef glrefUniformMatrix4x3fv $ gldynUniformMatrix4x3fv addr++    -- GL_VERSION_3_0++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glColorMaski"+        writeIORef glrefColorMaski $ gldynColorMaski addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBooleani_v"+        writeIORef glrefGetBooleani_v $ gldynGetBooleani_v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetIntegeri_v"+        writeIORef glrefGetIntegeri_v $ gldynGetIntegeri_v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnablei"+        writeIORef glrefEnablei $ gldynEnablei addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisablei"+        writeIORef glrefDisablei $ gldynDisablei addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsEnabledi"+        writeIORef glrefIsEnabledi $ gldynIsEnabledi addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBeginTransformFeedback"+        writeIORef glrefBeginTransformFeedback $ gldynBeginTransformFeedback addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEndTransformFeedback"+        writeIORef glrefEndTransformFeedback $ gldynEndTransformFeedback addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindBufferRange"+        writeIORef glrefBindBufferRange $ gldynBindBufferRange addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindBufferBase"+        writeIORef glrefBindBufferBase $ gldynBindBufferBase addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTransformFeedbackVaryings"+        writeIORef glrefTransformFeedbackVaryings $ gldynTransformFeedbackVaryings addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTransformFeedbackVarying"+        writeIORef glrefGetTransformFeedbackVarying $ gldynGetTransformFeedbackVarying addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClampColor"+        writeIORef glrefClampColor $ gldynClampColor addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBeginConditionalRender"+        writeIORef glrefBeginConditionalRender $ gldynBeginConditionalRender addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEndConditionalRender"+        writeIORef glrefEndConditionalRender $ gldynEndConditionalRender addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribIPointer"+        writeIORef glrefVertexAttribIPointer $ gldynVertexAttribIPointer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexAttribIiv"+        writeIORef glrefGetVertexAttribIiv $ gldynGetVertexAttribIiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexAttribIuiv"+        writeIORef glrefGetVertexAttribIuiv $ gldynGetVertexAttribIuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI1i"+        writeIORef glrefVertexAttribI1i $ gldynVertexAttribI1i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI2i"+        writeIORef glrefVertexAttribI2i $ gldynVertexAttribI2i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI3i"+        writeIORef glrefVertexAttribI3i $ gldynVertexAttribI3i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4i"+        writeIORef glrefVertexAttribI4i $ gldynVertexAttribI4i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI1ui"+        writeIORef glrefVertexAttribI1ui $ gldynVertexAttribI1ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI2ui"+        writeIORef glrefVertexAttribI2ui $ gldynVertexAttribI2ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI3ui"+        writeIORef glrefVertexAttribI3ui $ gldynVertexAttribI3ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4ui"+        writeIORef glrefVertexAttribI4ui $ gldynVertexAttribI4ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI1iv"+        writeIORef glrefVertexAttribI1iv $ gldynVertexAttribI1iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI2iv"+        writeIORef glrefVertexAttribI2iv $ gldynVertexAttribI2iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI3iv"+        writeIORef glrefVertexAttribI3iv $ gldynVertexAttribI3iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4iv"+        writeIORef glrefVertexAttribI4iv $ gldynVertexAttribI4iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI1uiv"+        writeIORef glrefVertexAttribI1uiv $ gldynVertexAttribI1uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI2uiv"+        writeIORef glrefVertexAttribI2uiv $ gldynVertexAttribI2uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI3uiv"+        writeIORef glrefVertexAttribI3uiv $ gldynVertexAttribI3uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4uiv"+        writeIORef glrefVertexAttribI4uiv $ gldynVertexAttribI4uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4bv"+        writeIORef glrefVertexAttribI4bv $ gldynVertexAttribI4bv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4sv"+        writeIORef glrefVertexAttribI4sv $ gldynVertexAttribI4sv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4ubv"+        writeIORef glrefVertexAttribI4ubv $ gldynVertexAttribI4ubv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribI4usv"+        writeIORef glrefVertexAttribI4usv $ gldynVertexAttribI4usv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetUniformuiv"+        writeIORef glrefGetUniformuiv $ gldynGetUniformuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindFragDataLocation"+        writeIORef glrefBindFragDataLocation $ gldynBindFragDataLocation addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFragDataLocation"+        writeIORef glrefGetFragDataLocation $ gldynGetFragDataLocation addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform1ui"+        writeIORef glrefUniform1ui $ gldynUniform1ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform2ui"+        writeIORef glrefUniform2ui $ gldynUniform2ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform3ui"+        writeIORef glrefUniform3ui $ gldynUniform3ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform4ui"+        writeIORef glrefUniform4ui $ gldynUniform4ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform1uiv"+        writeIORef glrefUniform1uiv $ gldynUniform1uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform2uiv"+        writeIORef glrefUniform2uiv $ gldynUniform2uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform3uiv"+        writeIORef glrefUniform3uiv $ gldynUniform3uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniform4uiv"+        writeIORef glrefUniform4uiv $ gldynUniform4uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexParameterIiv"+        writeIORef glrefTexParameterIiv $ gldynTexParameterIiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexParameterIuiv"+        writeIORef glrefTexParameterIuiv $ gldynTexParameterIuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexParameterIiv"+        writeIORef glrefGetTexParameterIiv $ gldynGetTexParameterIiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTexParameterIuiv"+        writeIORef glrefGetTexParameterIuiv $ gldynGetTexParameterIuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearBufferiv"+        writeIORef glrefClearBufferiv $ gldynClearBufferiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearBufferuiv"+        writeIORef glrefClearBufferuiv $ gldynClearBufferuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearBufferfv"+        writeIORef glrefClearBufferfv $ gldynClearBufferfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearBufferfi"+        writeIORef glrefClearBufferfi $ gldynClearBufferfi addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetStringi"+        writeIORef glrefGetStringi $ gldynGetStringi addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsRenderbuffer"+        writeIORef glrefIsRenderbuffer $ gldynIsRenderbuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindRenderbuffer"+        writeIORef glrefBindRenderbuffer $ gldynBindRenderbuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteRenderbuffers"+        writeIORef glrefDeleteRenderbuffers $ gldynDeleteRenderbuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenRenderbuffers"+        writeIORef glrefGenRenderbuffers $ gldynGenRenderbuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glRenderbufferStorage"+        writeIORef glrefRenderbufferStorage $ gldynRenderbufferStorage addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetRenderbufferParameteriv"+        writeIORef glrefGetRenderbufferParameteriv $ gldynGetRenderbufferParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsFramebuffer"+        writeIORef glrefIsFramebuffer $ gldynIsFramebuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindFramebuffer"+        writeIORef glrefBindFramebuffer $ gldynBindFramebuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteFramebuffers"+        writeIORef glrefDeleteFramebuffers $ gldynDeleteFramebuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenFramebuffers"+        writeIORef glrefGenFramebuffers $ gldynGenFramebuffers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCheckFramebufferStatus"+        writeIORef glrefCheckFramebufferStatus $ gldynCheckFramebufferStatus addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferTexture1D"+        writeIORef glrefFramebufferTexture1D $ gldynFramebufferTexture1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferTexture2D"+        writeIORef glrefFramebufferTexture2D $ gldynFramebufferTexture2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferTexture3D"+        writeIORef glrefFramebufferTexture3D $ gldynFramebufferTexture3D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferRenderbuffer"+        writeIORef glrefFramebufferRenderbuffer $ gldynFramebufferRenderbuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFramebufferAttachmentParameteriv"+        writeIORef glrefGetFramebufferAttachmentParameteriv $ gldynGetFramebufferAttachmentParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenerateMipmap"+        writeIORef glrefGenerateMipmap $ gldynGenerateMipmap addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBlitFramebuffer"+        writeIORef glrefBlitFramebuffer $ gldynBlitFramebuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glRenderbufferStorageMultisample"+        writeIORef glrefRenderbufferStorageMultisample $ gldynRenderbufferStorageMultisample addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferTextureLayer"+        writeIORef glrefFramebufferTextureLayer $ gldynFramebufferTextureLayer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMapBufferRange"+        writeIORef glrefMapBufferRange $ gldynMapBufferRange addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFlushMappedBufferRange"+        writeIORef glrefFlushMappedBufferRange $ gldynFlushMappedBufferRange addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindVertexArray"+        writeIORef glrefBindVertexArray $ gldynBindVertexArray addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteVertexArrays"+        writeIORef glrefDeleteVertexArrays $ gldynDeleteVertexArrays addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenVertexArrays"+        writeIORef glrefGenVertexArrays $ gldynGenVertexArrays addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsVertexArray"+        writeIORef glrefIsVertexArray $ gldynIsVertexArray addr++    -- GL_VERSION_3_1++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawArraysInstanced"+        writeIORef glrefDrawArraysInstanced $ gldynDrawArraysInstanced addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawElementsInstanced"+        writeIORef glrefDrawElementsInstanced $ gldynDrawElementsInstanced addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexBuffer"+        writeIORef glrefTexBuffer $ gldynTexBuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPrimitiveRestartIndex"+        writeIORef glrefPrimitiveRestartIndex $ gldynPrimitiveRestartIndex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyBufferSubData"+        writeIORef glrefCopyBufferSubData $ gldynCopyBufferSubData addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetUniformIndices"+        writeIORef glrefGetUniformIndices $ gldynGetUniformIndices addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetActiveUniformsiv"+        writeIORef glrefGetActiveUniformsiv $ gldynGetActiveUniformsiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetActiveUniformName"+        writeIORef glrefGetActiveUniformName $ gldynGetActiveUniformName addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetUniformBlockIndex"+        writeIORef glrefGetUniformBlockIndex $ gldynGetUniformBlockIndex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetActiveUniformBlockiv"+        writeIORef glrefGetActiveUniformBlockiv $ gldynGetActiveUniformBlockiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetActiveUniformBlockName"+        writeIORef glrefGetActiveUniformBlockName $ gldynGetActiveUniformBlockName addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUniformBlockBinding"+        writeIORef glrefUniformBlockBinding $ gldynUniformBlockBinding addr++    -- GL_VERSION_3_2++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawElementsBaseVertex"+        writeIORef glrefDrawElementsBaseVertex $ gldynDrawElementsBaseVertex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawRangeElementsBaseVertex"+        writeIORef glrefDrawRangeElementsBaseVertex $ gldynDrawRangeElementsBaseVertex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDrawElementsInstancedBaseVertex"+        writeIORef glrefDrawElementsInstancedBaseVertex $ gldynDrawElementsInstancedBaseVertex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiDrawElementsBaseVertex"+        writeIORef glrefMultiDrawElementsBaseVertex $ gldynMultiDrawElementsBaseVertex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProvokingVertex"+        writeIORef glrefProvokingVertex $ gldynProvokingVertex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFenceSync"+        writeIORef glrefFenceSync $ gldynFenceSync addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsSync"+        writeIORef glrefIsSync $ gldynIsSync addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteSync"+        writeIORef glrefDeleteSync $ gldynDeleteSync addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClientWaitSync"+        writeIORef glrefClientWaitSync $ gldynClientWaitSync addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glWaitSync"+        writeIORef glrefWaitSync $ gldynWaitSync addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetInteger64v"+        writeIORef glrefGetInteger64v $ gldynGetInteger64v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetSynciv"+        writeIORef glrefGetSynciv $ gldynGetSynciv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetInteger64i_v"+        writeIORef glrefGetInteger64i_v $ gldynGetInteger64i_v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBufferParameteri64v"+        writeIORef glrefGetBufferParameteri64v $ gldynGetBufferParameteri64v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferTexture"+        writeIORef glrefFramebufferTexture $ gldynFramebufferTexture addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexImage2DMultisample"+        writeIORef glrefTexImage2DMultisample $ gldynTexImage2DMultisample addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexImage3DMultisample"+        writeIORef glrefTexImage3DMultisample $ gldynTexImage3DMultisample addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultisamplefv"+        writeIORef glrefGetMultisamplefv $ gldynGetMultisamplefv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSampleMaski"+        writeIORef glrefSampleMaski $ gldynSampleMaski addr++    -- GL_VERSION_3_3++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindFragDataLocationIndexed"+        writeIORef glrefBindFragDataLocationIndexed $ gldynBindFragDataLocationIndexed addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFragDataIndex"+        writeIORef glrefGetFragDataIndex $ gldynGetFragDataIndex addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenSamplers"+        writeIORef glrefGenSamplers $ gldynGenSamplers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteSamplers"+        writeIORef glrefDeleteSamplers $ gldynDeleteSamplers addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsSampler"+        writeIORef glrefIsSampler $ gldynIsSampler addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindSampler"+        writeIORef glrefBindSampler $ gldynBindSampler addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSamplerParameteri"+        writeIORef glrefSamplerParameteri $ gldynSamplerParameteri addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSamplerParameteriv"+        writeIORef glrefSamplerParameteriv $ gldynSamplerParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSamplerParameterf"+        writeIORef glrefSamplerParameterf $ gldynSamplerParameterf addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSamplerParameterfv"+        writeIORef glrefSamplerParameterfv $ gldynSamplerParameterfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSamplerParameterIiv"+        writeIORef glrefSamplerParameterIiv $ gldynSamplerParameterIiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glSamplerParameterIuiv"+        writeIORef glrefSamplerParameterIuiv $ gldynSamplerParameterIuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetSamplerParameteriv"+        writeIORef glrefGetSamplerParameteriv $ gldynGetSamplerParameteriv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetSamplerParameterIiv"+        writeIORef glrefGetSamplerParameterIiv $ gldynGetSamplerParameterIiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetSamplerParameterfv"+        writeIORef glrefGetSamplerParameterfv $ gldynGetSamplerParameterfv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetSamplerParameterIuiv"+        writeIORef glrefGetSamplerParameterIuiv $ gldynGetSamplerParameterIuiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glQueryCounter"+        writeIORef glrefQueryCounter $ gldynQueryCounter addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetQueryObjecti64v"+        writeIORef glrefGetQueryObjecti64v $ gldynGetQueryObjecti64v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetQueryObjectui64v"+        writeIORef glrefGetQueryObjectui64v $ gldynGetQueryObjectui64v addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribDivisor"+        writeIORef glrefVertexAttribDivisor $ gldynVertexAttribDivisor addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP1ui"+        writeIORef glrefVertexAttribP1ui $ gldynVertexAttribP1ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP1uiv"+        writeIORef glrefVertexAttribP1uiv $ gldynVertexAttribP1uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP2ui"+        writeIORef glrefVertexAttribP2ui $ gldynVertexAttribP2ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP2uiv"+        writeIORef glrefVertexAttribP2uiv $ gldynVertexAttribP2uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP3ui"+        writeIORef glrefVertexAttribP3ui $ gldynVertexAttribP3ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP3uiv"+        writeIORef glrefVertexAttribP3uiv $ gldynVertexAttribP3uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP4ui"+        writeIORef glrefVertexAttribP4ui $ gldynVertexAttribP4ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexAttribP4uiv"+        writeIORef glrefVertexAttribP4uiv $ gldynVertexAttribP4uiv addr++    -- GL_ARB_texture_storage++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexStorage1D"+        writeIORef glrefTexStorage1D $ gldynTexStorage1D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexStorage2D"+        writeIORef glrefTexStorage2D $ gldynTexStorage2D addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexStorage3D"+        writeIORef glrefTexStorage3D $ gldynTexStorage3D addr++    -- GL_KHR_debug++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDebugMessageControl"+        writeIORef glrefDebugMessageControl $ gldynDebugMessageControl addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDebugMessageInsert"+        writeIORef glrefDebugMessageInsert $ gldynDebugMessageInsert addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDebugMessageCallback"+        writeIORef glrefDebugMessageCallback $ gldynDebugMessageCallback addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetDebugMessageLog"+        writeIORef glrefGetDebugMessageLog $ gldynGetDebugMessageLog addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPushDebugGroup"+        writeIORef glrefPushDebugGroup $ gldynPushDebugGroup addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPopDebugGroup"+        writeIORef glrefPopDebugGroup $ gldynPopDebugGroup addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glObjectLabel"+        writeIORef glrefObjectLabel $ gldynObjectLabel addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetObjectLabel"+        writeIORef glrefGetObjectLabel $ gldynGetObjectLabel addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glObjectPtrLabel"+        writeIORef glrefObjectPtrLabel $ gldynObjectPtrLabel addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetObjectPtrLabel"+        writeIORef glrefGetObjectPtrLabel $ gldynGetObjectPtrLabel addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetPointerv"+        writeIORef glrefGetPointerv $ gldynGetPointerv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDebugMessageControlKHR"+        writeIORef glrefDebugMessageControlKHR $ gldynDebugMessageControlKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDebugMessageInsertKHR"+        writeIORef glrefDebugMessageInsertKHR $ gldynDebugMessageInsertKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDebugMessageCallbackKHR"+        writeIORef glrefDebugMessageCallbackKHR $ gldynDebugMessageCallbackKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetDebugMessageLogKHR"+        writeIORef glrefGetDebugMessageLogKHR $ gldynGetDebugMessageLogKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPushDebugGroupKHR"+        writeIORef glrefPushDebugGroupKHR $ gldynPushDebugGroupKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPopDebugGroupKHR"+        writeIORef glrefPopDebugGroupKHR $ gldynPopDebugGroupKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glObjectLabelKHR"+        writeIORef glrefObjectLabelKHR $ gldynObjectLabelKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetObjectLabelKHR"+        writeIORef glrefGetObjectLabelKHR $ gldynGetObjectLabelKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glObjectPtrLabelKHR"+        writeIORef glrefObjectPtrLabelKHR $ gldynObjectPtrLabelKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetObjectPtrLabelKHR"+        writeIORef glrefGetObjectPtrLabelKHR $ gldynGetObjectPtrLabelKHR addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetPointervKHR"+        writeIORef glrefGetPointervKHR $ gldynGetPointervKHR addr++    -- GL_EXT_direct_state_access++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixLoadfEXT"+        writeIORef glrefMatrixLoadfEXT $ gldynMatrixLoadfEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixLoaddEXT"+        writeIORef glrefMatrixLoaddEXT $ gldynMatrixLoaddEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixMultfEXT"+        writeIORef glrefMatrixMultfEXT $ gldynMatrixMultfEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixMultdEXT"+        writeIORef glrefMatrixMultdEXT $ gldynMatrixMultdEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixLoadIdentityEXT"+        writeIORef glrefMatrixLoadIdentityEXT $ gldynMatrixLoadIdentityEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixRotatefEXT"+        writeIORef glrefMatrixRotatefEXT $ gldynMatrixRotatefEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixRotatedEXT"+        writeIORef glrefMatrixRotatedEXT $ gldynMatrixRotatedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixScalefEXT"+        writeIORef glrefMatrixScalefEXT $ gldynMatrixScalefEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixScaledEXT"+        writeIORef glrefMatrixScaledEXT $ gldynMatrixScaledEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixTranslatefEXT"+        writeIORef glrefMatrixTranslatefEXT $ gldynMatrixTranslatefEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixTranslatedEXT"+        writeIORef glrefMatrixTranslatedEXT $ gldynMatrixTranslatedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixFrustumEXT"+        writeIORef glrefMatrixFrustumEXT $ gldynMatrixFrustumEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixOrthoEXT"+        writeIORef glrefMatrixOrthoEXT $ gldynMatrixOrthoEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixPopEXT"+        writeIORef glrefMatrixPopEXT $ gldynMatrixPopEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixPushEXT"+        writeIORef glrefMatrixPushEXT $ gldynMatrixPushEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClientAttribDefaultEXT"+        writeIORef glrefClientAttribDefaultEXT $ gldynClientAttribDefaultEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glPushClientAttribDefaultEXT"+        writeIORef glrefPushClientAttribDefaultEXT $ gldynPushClientAttribDefaultEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureParameterfEXT"+        writeIORef glrefTextureParameterfEXT $ gldynTextureParameterfEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureParameterfvEXT"+        writeIORef glrefTextureParameterfvEXT $ gldynTextureParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureParameteriEXT"+        writeIORef glrefTextureParameteriEXT $ gldynTextureParameteriEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureParameterivEXT"+        writeIORef glrefTextureParameterivEXT $ gldynTextureParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureImage1DEXT"+        writeIORef glrefTextureImage1DEXT $ gldynTextureImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureImage2DEXT"+        writeIORef glrefTextureImage2DEXT $ gldynTextureImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureSubImage1DEXT"+        writeIORef glrefTextureSubImage1DEXT $ gldynTextureSubImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureSubImage2DEXT"+        writeIORef glrefTextureSubImage2DEXT $ gldynTextureSubImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTextureImage1DEXT"+        writeIORef glrefCopyTextureImage1DEXT $ gldynCopyTextureImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTextureImage2DEXT"+        writeIORef glrefCopyTextureImage2DEXT $ gldynCopyTextureImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTextureSubImage1DEXT"+        writeIORef glrefCopyTextureSubImage1DEXT $ gldynCopyTextureSubImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTextureSubImage2DEXT"+        writeIORef glrefCopyTextureSubImage2DEXT $ gldynCopyTextureSubImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureImageEXT"+        writeIORef glrefGetTextureImageEXT $ gldynGetTextureImageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureParameterfvEXT"+        writeIORef glrefGetTextureParameterfvEXT $ gldynGetTextureParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureParameterivEXT"+        writeIORef glrefGetTextureParameterivEXT $ gldynGetTextureParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureLevelParameterfvEXT"+        writeIORef glrefGetTextureLevelParameterfvEXT $ gldynGetTextureLevelParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureLevelParameterivEXT"+        writeIORef glrefGetTextureLevelParameterivEXT $ gldynGetTextureLevelParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureImage3DEXT"+        writeIORef glrefTextureImage3DEXT $ gldynTextureImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureSubImage3DEXT"+        writeIORef glrefTextureSubImage3DEXT $ gldynTextureSubImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyTextureSubImage3DEXT"+        writeIORef glrefCopyTextureSubImage3DEXT $ gldynCopyTextureSubImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindMultiTextureEXT"+        writeIORef glrefBindMultiTextureEXT $ gldynBindMultiTextureEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexCoordPointerEXT"+        writeIORef glrefMultiTexCoordPointerEXT $ gldynMultiTexCoordPointerEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexEnvfEXT"+        writeIORef glrefMultiTexEnvfEXT $ gldynMultiTexEnvfEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexEnvfvEXT"+        writeIORef glrefMultiTexEnvfvEXT $ gldynMultiTexEnvfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexEnviEXT"+        writeIORef glrefMultiTexEnviEXT $ gldynMultiTexEnviEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexEnvivEXT"+        writeIORef glrefMultiTexEnvivEXT $ gldynMultiTexEnvivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexGendEXT"+        writeIORef glrefMultiTexGendEXT $ gldynMultiTexGendEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexGendvEXT"+        writeIORef glrefMultiTexGendvEXT $ gldynMultiTexGendvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexGenfEXT"+        writeIORef glrefMultiTexGenfEXT $ gldynMultiTexGenfEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexGenfvEXT"+        writeIORef glrefMultiTexGenfvEXT $ gldynMultiTexGenfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexGeniEXT"+        writeIORef glrefMultiTexGeniEXT $ gldynMultiTexGeniEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexGenivEXT"+        writeIORef glrefMultiTexGenivEXT $ gldynMultiTexGenivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexEnvfvEXT"+        writeIORef glrefGetMultiTexEnvfvEXT $ gldynGetMultiTexEnvfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexEnvivEXT"+        writeIORef glrefGetMultiTexEnvivEXT $ gldynGetMultiTexEnvivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexGendvEXT"+        writeIORef glrefGetMultiTexGendvEXT $ gldynGetMultiTexGendvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexGenfvEXT"+        writeIORef glrefGetMultiTexGenfvEXT $ gldynGetMultiTexGenfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexGenivEXT"+        writeIORef glrefGetMultiTexGenivEXT $ gldynGetMultiTexGenivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexParameteriEXT"+        writeIORef glrefMultiTexParameteriEXT $ gldynMultiTexParameteriEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexParameterivEXT"+        writeIORef glrefMultiTexParameterivEXT $ gldynMultiTexParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexParameterfEXT"+        writeIORef glrefMultiTexParameterfEXT $ gldynMultiTexParameterfEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexParameterfvEXT"+        writeIORef glrefMultiTexParameterfvEXT $ gldynMultiTexParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexImage1DEXT"+        writeIORef glrefMultiTexImage1DEXT $ gldynMultiTexImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexImage2DEXT"+        writeIORef glrefMultiTexImage2DEXT $ gldynMultiTexImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexSubImage1DEXT"+        writeIORef glrefMultiTexSubImage1DEXT $ gldynMultiTexSubImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexSubImage2DEXT"+        writeIORef glrefMultiTexSubImage2DEXT $ gldynMultiTexSubImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyMultiTexImage1DEXT"+        writeIORef glrefCopyMultiTexImage1DEXT $ gldynCopyMultiTexImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyMultiTexImage2DEXT"+        writeIORef glrefCopyMultiTexImage2DEXT $ gldynCopyMultiTexImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyMultiTexSubImage1DEXT"+        writeIORef glrefCopyMultiTexSubImage1DEXT $ gldynCopyMultiTexSubImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyMultiTexSubImage2DEXT"+        writeIORef glrefCopyMultiTexSubImage2DEXT $ gldynCopyMultiTexSubImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexImageEXT"+        writeIORef glrefGetMultiTexImageEXT $ gldynGetMultiTexImageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexParameterfvEXT"+        writeIORef glrefGetMultiTexParameterfvEXT $ gldynGetMultiTexParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexParameterivEXT"+        writeIORef glrefGetMultiTexParameterivEXT $ gldynGetMultiTexParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexLevelParameterfvEXT"+        writeIORef glrefGetMultiTexLevelParameterfvEXT $ gldynGetMultiTexLevelParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexLevelParameterivEXT"+        writeIORef glrefGetMultiTexLevelParameterivEXT $ gldynGetMultiTexLevelParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexImage3DEXT"+        writeIORef glrefMultiTexImage3DEXT $ gldynMultiTexImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexSubImage3DEXT"+        writeIORef glrefMultiTexSubImage3DEXT $ gldynMultiTexSubImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCopyMultiTexSubImage3DEXT"+        writeIORef glrefCopyMultiTexSubImage3DEXT $ gldynCopyMultiTexSubImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnableClientStateIndexedEXT"+        writeIORef glrefEnableClientStateIndexedEXT $ gldynEnableClientStateIndexedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisableClientStateIndexedEXT"+        writeIORef glrefDisableClientStateIndexedEXT $ gldynDisableClientStateIndexedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFloatIndexedvEXT"+        writeIORef glrefGetFloatIndexedvEXT $ gldynGetFloatIndexedvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetDoubleIndexedvEXT"+        writeIORef glrefGetDoubleIndexedvEXT $ gldynGetDoubleIndexedvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetPointerIndexedvEXT"+        writeIORef glrefGetPointerIndexedvEXT $ gldynGetPointerIndexedvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnableIndexedEXT"+        writeIORef glrefEnableIndexedEXT $ gldynEnableIndexedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisableIndexedEXT"+        writeIORef glrefDisableIndexedEXT $ gldynDisableIndexedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsEnabledIndexedEXT"+        writeIORef glrefIsEnabledIndexedEXT $ gldynIsEnabledIndexedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetIntegerIndexedvEXT"+        writeIORef glrefGetIntegerIndexedvEXT $ gldynGetIntegerIndexedvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetBooleanIndexedvEXT"+        writeIORef glrefGetBooleanIndexedvEXT $ gldynGetBooleanIndexedvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTextureImage3DEXT"+        writeIORef glrefCompressedTextureImage3DEXT $ gldynCompressedTextureImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTextureImage2DEXT"+        writeIORef glrefCompressedTextureImage2DEXT $ gldynCompressedTextureImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTextureImage1DEXT"+        writeIORef glrefCompressedTextureImage1DEXT $ gldynCompressedTextureImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTextureSubImage3DEXT"+        writeIORef glrefCompressedTextureSubImage3DEXT $ gldynCompressedTextureSubImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTextureSubImage2DEXT"+        writeIORef glrefCompressedTextureSubImage2DEXT $ gldynCompressedTextureSubImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedTextureSubImage1DEXT"+        writeIORef glrefCompressedTextureSubImage1DEXT $ gldynCompressedTextureSubImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetCompressedTextureImageEXT"+        writeIORef glrefGetCompressedTextureImageEXT $ gldynGetCompressedTextureImageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedMultiTexImage3DEXT"+        writeIORef glrefCompressedMultiTexImage3DEXT $ gldynCompressedMultiTexImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedMultiTexImage2DEXT"+        writeIORef glrefCompressedMultiTexImage2DEXT $ gldynCompressedMultiTexImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedMultiTexImage1DEXT"+        writeIORef glrefCompressedMultiTexImage1DEXT $ gldynCompressedMultiTexImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedMultiTexSubImage3DEXT"+        writeIORef glrefCompressedMultiTexSubImage3DEXT $ gldynCompressedMultiTexSubImage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedMultiTexSubImage2DEXT"+        writeIORef glrefCompressedMultiTexSubImage2DEXT $ gldynCompressedMultiTexSubImage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCompressedMultiTexSubImage1DEXT"+        writeIORef glrefCompressedMultiTexSubImage1DEXT $ gldynCompressedMultiTexSubImage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetCompressedMultiTexImageEXT"+        writeIORef glrefGetCompressedMultiTexImageEXT $ gldynGetCompressedMultiTexImageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixLoadTransposefEXT"+        writeIORef glrefMatrixLoadTransposefEXT $ gldynMatrixLoadTransposefEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixLoadTransposedEXT"+        writeIORef glrefMatrixLoadTransposedEXT $ gldynMatrixLoadTransposedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixMultTransposefEXT"+        writeIORef glrefMatrixMultTransposefEXT $ gldynMatrixMultTransposefEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMatrixMultTransposedEXT"+        writeIORef glrefMatrixMultTransposedEXT $ gldynMatrixMultTransposedEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedBufferDataEXT"+        writeIORef glrefNamedBufferDataEXT $ gldynNamedBufferDataEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedBufferSubDataEXT"+        writeIORef glrefNamedBufferSubDataEXT $ gldynNamedBufferSubDataEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMapNamedBufferEXT"+        writeIORef glrefMapNamedBufferEXT $ gldynMapNamedBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUnmapNamedBufferEXT"+        writeIORef glrefUnmapNamedBufferEXT $ gldynUnmapNamedBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedBufferParameterivEXT"+        writeIORef glrefGetNamedBufferParameterivEXT $ gldynGetNamedBufferParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedBufferPointervEXT"+        writeIORef glrefGetNamedBufferPointervEXT $ gldynGetNamedBufferPointervEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedBufferSubDataEXT"+        writeIORef glrefGetNamedBufferSubDataEXT $ gldynGetNamedBufferSubDataEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1fEXT"+        writeIORef glrefProgramUniform1fEXT $ gldynProgramUniform1fEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2fEXT"+        writeIORef glrefProgramUniform2fEXT $ gldynProgramUniform2fEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3fEXT"+        writeIORef glrefProgramUniform3fEXT $ gldynProgramUniform3fEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4fEXT"+        writeIORef glrefProgramUniform4fEXT $ gldynProgramUniform4fEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1iEXT"+        writeIORef glrefProgramUniform1iEXT $ gldynProgramUniform1iEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2iEXT"+        writeIORef glrefProgramUniform2iEXT $ gldynProgramUniform2iEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3iEXT"+        writeIORef glrefProgramUniform3iEXT $ gldynProgramUniform3iEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4iEXT"+        writeIORef glrefProgramUniform4iEXT $ gldynProgramUniform4iEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1fvEXT"+        writeIORef glrefProgramUniform1fvEXT $ gldynProgramUniform1fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2fvEXT"+        writeIORef glrefProgramUniform2fvEXT $ gldynProgramUniform2fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3fvEXT"+        writeIORef glrefProgramUniform3fvEXT $ gldynProgramUniform3fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4fvEXT"+        writeIORef glrefProgramUniform4fvEXT $ gldynProgramUniform4fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1ivEXT"+        writeIORef glrefProgramUniform1ivEXT $ gldynProgramUniform1ivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2ivEXT"+        writeIORef glrefProgramUniform2ivEXT $ gldynProgramUniform2ivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3ivEXT"+        writeIORef glrefProgramUniform3ivEXT $ gldynProgramUniform3ivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4ivEXT"+        writeIORef glrefProgramUniform4ivEXT $ gldynProgramUniform4ivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2fvEXT"+        writeIORef glrefProgramUniformMatrix2fvEXT $ gldynProgramUniformMatrix2fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3fvEXT"+        writeIORef glrefProgramUniformMatrix3fvEXT $ gldynProgramUniformMatrix3fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4fvEXT"+        writeIORef glrefProgramUniformMatrix4fvEXT $ gldynProgramUniformMatrix4fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x3fvEXT"+        writeIORef glrefProgramUniformMatrix2x3fvEXT $ gldynProgramUniformMatrix2x3fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x2fvEXT"+        writeIORef glrefProgramUniformMatrix3x2fvEXT $ gldynProgramUniformMatrix3x2fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x4fvEXT"+        writeIORef glrefProgramUniformMatrix2x4fvEXT $ gldynProgramUniformMatrix2x4fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x2fvEXT"+        writeIORef glrefProgramUniformMatrix4x2fvEXT $ gldynProgramUniformMatrix4x2fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x4fvEXT"+        writeIORef glrefProgramUniformMatrix3x4fvEXT $ gldynProgramUniformMatrix3x4fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x3fvEXT"+        writeIORef glrefProgramUniformMatrix4x3fvEXT $ gldynProgramUniformMatrix4x3fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureBufferEXT"+        writeIORef glrefTextureBufferEXT $ gldynTextureBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexBufferEXT"+        writeIORef glrefMultiTexBufferEXT $ gldynMultiTexBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureParameterIivEXT"+        writeIORef glrefTextureParameterIivEXT $ gldynTextureParameterIivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureParameterIuivEXT"+        writeIORef glrefTextureParameterIuivEXT $ gldynTextureParameterIuivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureParameterIivEXT"+        writeIORef glrefGetTextureParameterIivEXT $ gldynGetTextureParameterIivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetTextureParameterIuivEXT"+        writeIORef glrefGetTextureParameterIuivEXT $ gldynGetTextureParameterIuivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexParameterIivEXT"+        writeIORef glrefMultiTexParameterIivEXT $ gldynMultiTexParameterIivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexParameterIuivEXT"+        writeIORef glrefMultiTexParameterIuivEXT $ gldynMultiTexParameterIuivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexParameterIivEXT"+        writeIORef glrefGetMultiTexParameterIivEXT $ gldynGetMultiTexParameterIivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetMultiTexParameterIuivEXT"+        writeIORef glrefGetMultiTexParameterIuivEXT $ gldynGetMultiTexParameterIuivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1uiEXT"+        writeIORef glrefProgramUniform1uiEXT $ gldynProgramUniform1uiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2uiEXT"+        writeIORef glrefProgramUniform2uiEXT $ gldynProgramUniform2uiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3uiEXT"+        writeIORef glrefProgramUniform3uiEXT $ gldynProgramUniform3uiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4uiEXT"+        writeIORef glrefProgramUniform4uiEXT $ gldynProgramUniform4uiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1uivEXT"+        writeIORef glrefProgramUniform1uivEXT $ gldynProgramUniform1uivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2uivEXT"+        writeIORef glrefProgramUniform2uivEXT $ gldynProgramUniform2uivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3uivEXT"+        writeIORef glrefProgramUniform3uivEXT $ gldynProgramUniform3uivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4uivEXT"+        writeIORef glrefProgramUniform4uivEXT $ gldynProgramUniform4uivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameters4fvEXT"+        writeIORef glrefNamedProgramLocalParameters4fvEXT $ gldynNamedProgramLocalParameters4fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameterI4iEXT"+        writeIORef glrefNamedProgramLocalParameterI4iEXT $ gldynNamedProgramLocalParameterI4iEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameterI4ivEXT"+        writeIORef glrefNamedProgramLocalParameterI4ivEXT $ gldynNamedProgramLocalParameterI4ivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParametersI4ivEXT"+        writeIORef glrefNamedProgramLocalParametersI4ivEXT $ gldynNamedProgramLocalParametersI4ivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameterI4uiEXT"+        writeIORef glrefNamedProgramLocalParameterI4uiEXT $ gldynNamedProgramLocalParameterI4uiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameterI4uivEXT"+        writeIORef glrefNamedProgramLocalParameterI4uivEXT $ gldynNamedProgramLocalParameterI4uivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParametersI4uivEXT"+        writeIORef glrefNamedProgramLocalParametersI4uivEXT $ gldynNamedProgramLocalParametersI4uivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedProgramLocalParameterIivEXT"+        writeIORef glrefGetNamedProgramLocalParameterIivEXT $ gldynGetNamedProgramLocalParameterIivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedProgramLocalParameterIuivEXT"+        writeIORef glrefGetNamedProgramLocalParameterIuivEXT $ gldynGetNamedProgramLocalParameterIuivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnableClientStateiEXT"+        writeIORef glrefEnableClientStateiEXT $ gldynEnableClientStateiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisableClientStateiEXT"+        writeIORef glrefDisableClientStateiEXT $ gldynDisableClientStateiEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFloati_vEXT"+        writeIORef glrefGetFloati_vEXT $ gldynGetFloati_vEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetDoublei_vEXT"+        writeIORef glrefGetDoublei_vEXT $ gldynGetDoublei_vEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetPointeri_vEXT"+        writeIORef glrefGetPointeri_vEXT $ gldynGetPointeri_vEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramStringEXT"+        writeIORef glrefNamedProgramStringEXT $ gldynNamedProgramStringEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameter4dEXT"+        writeIORef glrefNamedProgramLocalParameter4dEXT $ gldynNamedProgramLocalParameter4dEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameter4dvEXT"+        writeIORef glrefNamedProgramLocalParameter4dvEXT $ gldynNamedProgramLocalParameter4dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameter4fEXT"+        writeIORef glrefNamedProgramLocalParameter4fEXT $ gldynNamedProgramLocalParameter4fEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedProgramLocalParameter4fvEXT"+        writeIORef glrefNamedProgramLocalParameter4fvEXT $ gldynNamedProgramLocalParameter4fvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedProgramLocalParameterdvEXT"+        writeIORef glrefGetNamedProgramLocalParameterdvEXT $ gldynGetNamedProgramLocalParameterdvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedProgramLocalParameterfvEXT"+        writeIORef glrefGetNamedProgramLocalParameterfvEXT $ gldynGetNamedProgramLocalParameterfvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedProgramivEXT"+        writeIORef glrefGetNamedProgramivEXT $ gldynGetNamedProgramivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedProgramStringEXT"+        writeIORef glrefGetNamedProgramStringEXT $ gldynGetNamedProgramStringEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedRenderbufferStorageEXT"+        writeIORef glrefNamedRenderbufferStorageEXT $ gldynNamedRenderbufferStorageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedRenderbufferParameterivEXT"+        writeIORef glrefGetNamedRenderbufferParameterivEXT $ gldynGetNamedRenderbufferParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedRenderbufferStorageMultisampleEXT"+        writeIORef glrefNamedRenderbufferStorageMultisampleEXT $ gldynNamedRenderbufferStorageMultisampleEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedRenderbufferStorageMultisampleCoverageEXT"+        writeIORef glrefNamedRenderbufferStorageMultisampleCoverageEXT $ gldynNamedRenderbufferStorageMultisampleCoverageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCheckNamedFramebufferStatusEXT"+        writeIORef glrefCheckNamedFramebufferStatusEXT $ gldynCheckNamedFramebufferStatusEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferTexture1DEXT"+        writeIORef glrefNamedFramebufferTexture1DEXT $ gldynNamedFramebufferTexture1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferTexture2DEXT"+        writeIORef glrefNamedFramebufferTexture2DEXT $ gldynNamedFramebufferTexture2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferTexture3DEXT"+        writeIORef glrefNamedFramebufferTexture3DEXT $ gldynNamedFramebufferTexture3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferRenderbufferEXT"+        writeIORef glrefNamedFramebufferRenderbufferEXT $ gldynNamedFramebufferRenderbufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedFramebufferAttachmentParameterivEXT"+        writeIORef glrefGetNamedFramebufferAttachmentParameterivEXT $ gldynGetNamedFramebufferAttachmentParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenerateTextureMipmapEXT"+        writeIORef glrefGenerateTextureMipmapEXT $ gldynGenerateTextureMipmapEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenerateMultiTexMipmapEXT"+        writeIORef glrefGenerateMultiTexMipmapEXT $ gldynGenerateMultiTexMipmapEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferDrawBufferEXT"+        writeIORef glrefFramebufferDrawBufferEXT $ gldynFramebufferDrawBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferDrawBuffersEXT"+        writeIORef glrefFramebufferDrawBuffersEXT $ gldynFramebufferDrawBuffersEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFramebufferReadBufferEXT"+        writeIORef glrefFramebufferReadBufferEXT $ gldynFramebufferReadBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetFramebufferParameterivEXT"+        writeIORef glrefGetFramebufferParameterivEXT $ gldynGetFramebufferParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedCopyBufferSubDataEXT"+        writeIORef glrefNamedCopyBufferSubDataEXT $ gldynNamedCopyBufferSubDataEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferTextureEXT"+        writeIORef glrefNamedFramebufferTextureEXT $ gldynNamedFramebufferTextureEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferTextureLayerEXT"+        writeIORef glrefNamedFramebufferTextureLayerEXT $ gldynNamedFramebufferTextureLayerEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferTextureFaceEXT"+        writeIORef glrefNamedFramebufferTextureFaceEXT $ gldynNamedFramebufferTextureFaceEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureRenderbufferEXT"+        writeIORef glrefTextureRenderbufferEXT $ gldynTextureRenderbufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMultiTexRenderbufferEXT"+        writeIORef glrefMultiTexRenderbufferEXT $ gldynMultiTexRenderbufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexOffsetEXT"+        writeIORef glrefVertexArrayVertexOffsetEXT $ gldynVertexArrayVertexOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayColorOffsetEXT"+        writeIORef glrefVertexArrayColorOffsetEXT $ gldynVertexArrayColorOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayEdgeFlagOffsetEXT"+        writeIORef glrefVertexArrayEdgeFlagOffsetEXT $ gldynVertexArrayEdgeFlagOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayIndexOffsetEXT"+        writeIORef glrefVertexArrayIndexOffsetEXT $ gldynVertexArrayIndexOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayNormalOffsetEXT"+        writeIORef glrefVertexArrayNormalOffsetEXT $ gldynVertexArrayNormalOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayTexCoordOffsetEXT"+        writeIORef glrefVertexArrayTexCoordOffsetEXT $ gldynVertexArrayTexCoordOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayMultiTexCoordOffsetEXT"+        writeIORef glrefVertexArrayMultiTexCoordOffsetEXT $ gldynVertexArrayMultiTexCoordOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayFogCoordOffsetEXT"+        writeIORef glrefVertexArrayFogCoordOffsetEXT $ gldynVertexArrayFogCoordOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArraySecondaryColorOffsetEXT"+        writeIORef glrefVertexArraySecondaryColorOffsetEXT $ gldynVertexArraySecondaryColorOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribOffsetEXT"+        writeIORef glrefVertexArrayVertexAttribOffsetEXT $ gldynVertexArrayVertexAttribOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribIOffsetEXT"+        writeIORef glrefVertexArrayVertexAttribIOffsetEXT $ gldynVertexArrayVertexAttribIOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnableVertexArrayEXT"+        writeIORef glrefEnableVertexArrayEXT $ gldynEnableVertexArrayEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisableVertexArrayEXT"+        writeIORef glrefDisableVertexArrayEXT $ gldynDisableVertexArrayEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glEnableVertexArrayAttribEXT"+        writeIORef glrefEnableVertexArrayAttribEXT $ gldynEnableVertexArrayAttribEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDisableVertexArrayAttribEXT"+        writeIORef glrefDisableVertexArrayAttribEXT $ gldynDisableVertexArrayAttribEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexArrayIntegervEXT"+        writeIORef glrefGetVertexArrayIntegervEXT $ gldynGetVertexArrayIntegervEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexArrayPointervEXT"+        writeIORef glrefGetVertexArrayPointervEXT $ gldynGetVertexArrayPointervEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexArrayIntegeri_vEXT"+        writeIORef glrefGetVertexArrayIntegeri_vEXT $ gldynGetVertexArrayIntegeri_vEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetVertexArrayPointeri_vEXT"+        writeIORef glrefGetVertexArrayPointeri_vEXT $ gldynGetVertexArrayPointeri_vEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glMapNamedBufferRangeEXT"+        writeIORef glrefMapNamedBufferRangeEXT $ gldynMapNamedBufferRangeEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glFlushMappedNamedBufferRangeEXT"+        writeIORef glrefFlushMappedNamedBufferRangeEXT $ gldynFlushMappedNamedBufferRangeEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedBufferStorageEXT"+        writeIORef glrefNamedBufferStorageEXT $ gldynNamedBufferStorageEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearNamedBufferDataEXT"+        writeIORef glrefClearNamedBufferDataEXT $ gldynClearNamedBufferDataEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glClearNamedBufferSubDataEXT"+        writeIORef glrefClearNamedBufferSubDataEXT $ gldynClearNamedBufferSubDataEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glNamedFramebufferParameteriEXT"+        writeIORef glrefNamedFramebufferParameteriEXT $ gldynNamedFramebufferParameteriEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetNamedFramebufferParameterivEXT"+        writeIORef glrefGetNamedFramebufferParameterivEXT $ gldynGetNamedFramebufferParameterivEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1dEXT"+        writeIORef glrefProgramUniform1dEXT $ gldynProgramUniform1dEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2dEXT"+        writeIORef glrefProgramUniform2dEXT $ gldynProgramUniform2dEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3dEXT"+        writeIORef glrefProgramUniform3dEXT $ gldynProgramUniform3dEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4dEXT"+        writeIORef glrefProgramUniform4dEXT $ gldynProgramUniform4dEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1dvEXT"+        writeIORef glrefProgramUniform1dvEXT $ gldynProgramUniform1dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2dvEXT"+        writeIORef glrefProgramUniform2dvEXT $ gldynProgramUniform2dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3dvEXT"+        writeIORef glrefProgramUniform3dvEXT $ gldynProgramUniform3dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4dvEXT"+        writeIORef glrefProgramUniform4dvEXT $ gldynProgramUniform4dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2dvEXT"+        writeIORef glrefProgramUniformMatrix2dvEXT $ gldynProgramUniformMatrix2dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3dvEXT"+        writeIORef glrefProgramUniformMatrix3dvEXT $ gldynProgramUniformMatrix3dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4dvEXT"+        writeIORef glrefProgramUniformMatrix4dvEXT $ gldynProgramUniformMatrix4dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x3dvEXT"+        writeIORef glrefProgramUniformMatrix2x3dvEXT $ gldynProgramUniformMatrix2x3dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x4dvEXT"+        writeIORef glrefProgramUniformMatrix2x4dvEXT $ gldynProgramUniformMatrix2x4dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x2dvEXT"+        writeIORef glrefProgramUniformMatrix3x2dvEXT $ gldynProgramUniformMatrix3x2dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x4dvEXT"+        writeIORef glrefProgramUniformMatrix3x4dvEXT $ gldynProgramUniformMatrix3x4dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x2dvEXT"+        writeIORef glrefProgramUniformMatrix4x2dvEXT $ gldynProgramUniformMatrix4x2dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x3dvEXT"+        writeIORef glrefProgramUniformMatrix4x3dvEXT $ gldynProgramUniformMatrix4x3dvEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureBufferRangeEXT"+        writeIORef glrefTextureBufferRangeEXT $ gldynTextureBufferRangeEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureStorage1DEXT"+        writeIORef glrefTextureStorage1DEXT $ gldynTextureStorage1DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureStorage2DEXT"+        writeIORef glrefTextureStorage2DEXT $ gldynTextureStorage2DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureStorage3DEXT"+        writeIORef glrefTextureStorage3DEXT $ gldynTextureStorage3DEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureStorage2DMultisampleEXT"+        writeIORef glrefTextureStorage2DMultisampleEXT $ gldynTextureStorage2DMultisampleEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTextureStorage3DMultisampleEXT"+        writeIORef glrefTextureStorage3DMultisampleEXT $ gldynTextureStorage3DMultisampleEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayBindVertexBufferEXT"+        writeIORef glrefVertexArrayBindVertexBufferEXT $ gldynVertexArrayBindVertexBufferEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribFormatEXT"+        writeIORef glrefVertexArrayVertexAttribFormatEXT $ gldynVertexArrayVertexAttribFormatEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribIFormatEXT"+        writeIORef glrefVertexArrayVertexAttribIFormatEXT $ gldynVertexArrayVertexAttribIFormatEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribLFormatEXT"+        writeIORef glrefVertexArrayVertexAttribLFormatEXT $ gldynVertexArrayVertexAttribLFormatEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribBindingEXT"+        writeIORef glrefVertexArrayVertexAttribBindingEXT $ gldynVertexArrayVertexAttribBindingEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexBindingDivisorEXT"+        writeIORef glrefVertexArrayVertexBindingDivisorEXT $ gldynVertexArrayVertexBindingDivisorEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribLOffsetEXT"+        writeIORef glrefVertexArrayVertexAttribLOffsetEXT $ gldynVertexArrayVertexAttribLOffsetEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glTexturePageCommitmentEXT"+        writeIORef glrefTexturePageCommitmentEXT $ gldynTexturePageCommitmentEXT addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glVertexArrayVertexAttribDivisorEXT"+        writeIORef glrefVertexArrayVertexAttribDivisorEXT $ gldynVertexArrayVertexAttribDivisorEXT addr++    -- GL_ARB_buffer_storage++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBufferStorage"+        writeIORef glrefBufferStorage $ gldynBufferStorage addr++    -- GL_ARB_separate_shader_objects++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glUseProgramStages"+        writeIORef glrefUseProgramStages $ gldynUseProgramStages addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glActiveShaderProgram"+        writeIORef glrefActiveShaderProgram $ gldynActiveShaderProgram addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glCreateShaderProgramv"+        writeIORef glrefCreateShaderProgramv $ gldynCreateShaderProgramv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glBindProgramPipeline"+        writeIORef glrefBindProgramPipeline $ gldynBindProgramPipeline addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glDeleteProgramPipelines"+        writeIORef glrefDeleteProgramPipelines $ gldynDeleteProgramPipelines addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGenProgramPipelines"+        writeIORef glrefGenProgramPipelines $ gldynGenProgramPipelines addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glIsProgramPipeline"+        writeIORef glrefIsProgramPipeline $ gldynIsProgramPipeline addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetProgramPipelineiv"+        writeIORef glrefGetProgramPipelineiv $ gldynGetProgramPipelineiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1i"+        writeIORef glrefProgramUniform1i $ gldynProgramUniform1i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1iv"+        writeIORef glrefProgramUniform1iv $ gldynProgramUniform1iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1f"+        writeIORef glrefProgramUniform1f $ gldynProgramUniform1f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1fv"+        writeIORef glrefProgramUniform1fv $ gldynProgramUniform1fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1d"+        writeIORef glrefProgramUniform1d $ gldynProgramUniform1d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1dv"+        writeIORef glrefProgramUniform1dv $ gldynProgramUniform1dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1ui"+        writeIORef glrefProgramUniform1ui $ gldynProgramUniform1ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform1uiv"+        writeIORef glrefProgramUniform1uiv $ gldynProgramUniform1uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2i"+        writeIORef glrefProgramUniform2i $ gldynProgramUniform2i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2iv"+        writeIORef glrefProgramUniform2iv $ gldynProgramUniform2iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2f"+        writeIORef glrefProgramUniform2f $ gldynProgramUniform2f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2fv"+        writeIORef glrefProgramUniform2fv $ gldynProgramUniform2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2d"+        writeIORef glrefProgramUniform2d $ gldynProgramUniform2d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2dv"+        writeIORef glrefProgramUniform2dv $ gldynProgramUniform2dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2ui"+        writeIORef glrefProgramUniform2ui $ gldynProgramUniform2ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform2uiv"+        writeIORef glrefProgramUniform2uiv $ gldynProgramUniform2uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3i"+        writeIORef glrefProgramUniform3i $ gldynProgramUniform3i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3iv"+        writeIORef glrefProgramUniform3iv $ gldynProgramUniform3iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3f"+        writeIORef glrefProgramUniform3f $ gldynProgramUniform3f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3fv"+        writeIORef glrefProgramUniform3fv $ gldynProgramUniform3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3d"+        writeIORef glrefProgramUniform3d $ gldynProgramUniform3d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3dv"+        writeIORef glrefProgramUniform3dv $ gldynProgramUniform3dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3ui"+        writeIORef glrefProgramUniform3ui $ gldynProgramUniform3ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform3uiv"+        writeIORef glrefProgramUniform3uiv $ gldynProgramUniform3uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4i"+        writeIORef glrefProgramUniform4i $ gldynProgramUniform4i addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4iv"+        writeIORef glrefProgramUniform4iv $ gldynProgramUniform4iv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4f"+        writeIORef glrefProgramUniform4f $ gldynProgramUniform4f addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4fv"+        writeIORef glrefProgramUniform4fv $ gldynProgramUniform4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4d"+        writeIORef glrefProgramUniform4d $ gldynProgramUniform4d addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4dv"+        writeIORef glrefProgramUniform4dv $ gldynProgramUniform4dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4ui"+        writeIORef glrefProgramUniform4ui $ gldynProgramUniform4ui addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniform4uiv"+        writeIORef glrefProgramUniform4uiv $ gldynProgramUniform4uiv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2fv"+        writeIORef glrefProgramUniformMatrix2fv $ gldynProgramUniformMatrix2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3fv"+        writeIORef glrefProgramUniformMatrix3fv $ gldynProgramUniformMatrix3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4fv"+        writeIORef glrefProgramUniformMatrix4fv $ gldynProgramUniformMatrix4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2dv"+        writeIORef glrefProgramUniformMatrix2dv $ gldynProgramUniformMatrix2dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3dv"+        writeIORef glrefProgramUniformMatrix3dv $ gldynProgramUniformMatrix3dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4dv"+        writeIORef glrefProgramUniformMatrix4dv $ gldynProgramUniformMatrix4dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x3fv"+        writeIORef glrefProgramUniformMatrix2x3fv $ gldynProgramUniformMatrix2x3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x2fv"+        writeIORef glrefProgramUniformMatrix3x2fv $ gldynProgramUniformMatrix3x2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x4fv"+        writeIORef glrefProgramUniformMatrix2x4fv $ gldynProgramUniformMatrix2x4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x2fv"+        writeIORef glrefProgramUniformMatrix4x2fv $ gldynProgramUniformMatrix4x2fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x4fv"+        writeIORef glrefProgramUniformMatrix3x4fv $ gldynProgramUniformMatrix3x4fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x3fv"+        writeIORef glrefProgramUniformMatrix4x3fv $ gldynProgramUniformMatrix4x3fv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x3dv"+        writeIORef glrefProgramUniformMatrix2x3dv $ gldynProgramUniformMatrix2x3dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x2dv"+        writeIORef glrefProgramUniformMatrix3x2dv $ gldynProgramUniformMatrix3x2dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix2x4dv"+        writeIORef glrefProgramUniformMatrix2x4dv $ gldynProgramUniformMatrix2x4dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x2dv"+        writeIORef glrefProgramUniformMatrix4x2dv $ gldynProgramUniformMatrix4x2dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix3x4dv"+        writeIORef glrefProgramUniformMatrix3x4dv $ gldynProgramUniformMatrix3x4dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glProgramUniformMatrix4x3dv"+        writeIORef glrefProgramUniformMatrix4x3dv $ gldynProgramUniformMatrix4x3dv addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glValidateProgramPipeline"+        writeIORef glrefValidateProgramPipeline $ gldynValidateProgramPipeline addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glGetProgramPipelineInfoLog"+        writeIORef glrefGetProgramPipelineInfoLog $ gldynGetProgramPipelineInfoLog addr++    -- GL_ATI_meminfo+++    -- GL_NVX_gpu_memory_info+++    -- GL_ARB_invalidate_subdata++    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glInvalidateTexSubImage"+        writeIORef glrefInvalidateTexSubImage $ gldynInvalidateTexSubImage addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glInvalidateTexImage"+        writeIORef glrefInvalidateTexImage $ gldynInvalidateTexImage addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glInvalidateBufferSubData"+        writeIORef glrefInvalidateBufferSubData $ gldynInvalidateBufferSubData addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glInvalidateBufferData"+        writeIORef glrefInvalidateBufferData $ gldynInvalidateBufferData addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glInvalidateFramebuffer"+        writeIORef glrefInvalidateFramebuffer $ gldynInvalidateFramebuffer addr+    when True $ liftIO $ do+        addr <- castPtrToFunPtr . castPtr <$> get_proc_address "glInvalidateSubFramebuffer"+        writeIORef glrefInvalidateSubFramebuffer $ gldynInvalidateSubFramebuffer addr++++    when True $ do+        result <- liftIO $ is_supported "GL_ARB_texture_storage"+        unless result $ do+            throwE $ Failure $ "Missing OpenGL extension: " ++ "GL_ARB_texture_storage"+    when True $ do+        result <- liftIO $ is_supported "GL_KHR_debug"+        liftIO $ writeIORef hasref_GL_KHR_debug result+    when True $ do+        result <- liftIO $ is_supported "GL_EXT_direct_state_access"+        liftIO $ writeIORef hasref_GL_EXT_direct_state_access result+    when True $ do+        result <- liftIO $ is_supported "GL_ARB_buffer_storage"+        liftIO $ writeIORef hasref_GL_ARB_buffer_storage result+    when True $ do+        result <- liftIO $ is_supported "GL_ARB_separate_shader_objects"+        liftIO $ writeIORef hasref_GL_ARB_separate_shader_objects result+    when True $ do+        result <- liftIO $ is_supported "GL_ATI_meminfo"+        liftIO $ writeIORef hasref_GL_ATI_meminfo result+    when True $ do+        result <- liftIO $ is_supported "GL_NVX_gpu_memory_info"+        liftIO $ writeIORef hasref_GL_NVX_gpu_memory_info result+    when True $ do+        result <- liftIO $ is_supported "GL_ARB_invalidate_subdata"+        liftIO $ writeIORef hasref_GL_ARB_invalidate_subdata result++    return Success++has_GL_ARB_texture_storage :: IO Bool+has_GL_ARB_texture_storage = readIORef hasref_GL_ARB_texture_storage+{-# INLINE has_GL_ARB_texture_storage #-}+hasref_GL_ARB_texture_storage :: IORef Bool+hasref_GL_ARB_texture_storage = unsafePerformIO $ newIORef True+{-# NOINLINE hasref_GL_ARB_texture_storage #-}+has_GL_KHR_debug :: IO Bool+has_GL_KHR_debug = readIORef hasref_GL_KHR_debug+{-# INLINE has_GL_KHR_debug #-}+hasref_GL_KHR_debug :: IORef Bool+hasref_GL_KHR_debug = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_KHR_debug #-}+has_GL_EXT_direct_state_access :: IO Bool+has_GL_EXT_direct_state_access = readIORef hasref_GL_EXT_direct_state_access+{-# INLINE has_GL_EXT_direct_state_access #-}+hasref_GL_EXT_direct_state_access :: IORef Bool+hasref_GL_EXT_direct_state_access = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_EXT_direct_state_access #-}+has_GL_ARB_buffer_storage :: IO Bool+has_GL_ARB_buffer_storage = readIORef hasref_GL_ARB_buffer_storage+{-# INLINE has_GL_ARB_buffer_storage #-}+hasref_GL_ARB_buffer_storage :: IORef Bool+hasref_GL_ARB_buffer_storage = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_ARB_buffer_storage #-}+has_GL_ARB_separate_shader_objects :: IO Bool+has_GL_ARB_separate_shader_objects = readIORef hasref_GL_ARB_separate_shader_objects+{-# INLINE has_GL_ARB_separate_shader_objects #-}+hasref_GL_ARB_separate_shader_objects :: IORef Bool+hasref_GL_ARB_separate_shader_objects = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_ARB_separate_shader_objects #-}+has_GL_ATI_meminfo :: IO Bool+has_GL_ATI_meminfo = readIORef hasref_GL_ATI_meminfo+{-# INLINE has_GL_ATI_meminfo #-}+hasref_GL_ATI_meminfo :: IORef Bool+hasref_GL_ATI_meminfo = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_ATI_meminfo #-}+has_GL_NVX_gpu_memory_info :: IO Bool+has_GL_NVX_gpu_memory_info = readIORef hasref_GL_NVX_gpu_memory_info+{-# INLINE has_GL_NVX_gpu_memory_info #-}+hasref_GL_NVX_gpu_memory_info :: IORef Bool+hasref_GL_NVX_gpu_memory_info = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_NVX_gpu_memory_info #-}+has_GL_ARB_invalidate_subdata :: IO Bool+has_GL_ARB_invalidate_subdata = readIORef hasref_GL_ARB_invalidate_subdata+{-# INLINE has_GL_ARB_invalidate_subdata #-}+hasref_GL_ARB_invalidate_subdata :: IORef Bool+hasref_GL_ARB_invalidate_subdata = unsafePerformIO $ newIORef False+{-# NOINLINE hasref_GL_ARB_invalidate_subdata #-}+++-- GL_VERSION_1_0++type FuntypeCullFace =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCullFace :: FunPtr FuntypeCullFace -> FuntypeCullFace+glrefCullFace :: IORef FuntypeCullFace+glrefCullFace = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCullFace #-}+glCullFace :: FuntypeCullFace+glCullFace = unsafePerformIO $ readIORef glrefCullFace+{-# INLINE glCullFace #-}+type FuntypeFrontFace =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFrontFace :: FunPtr FuntypeFrontFace -> FuntypeFrontFace+glrefFrontFace :: IORef FuntypeFrontFace+glrefFrontFace = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFrontFace #-}+glFrontFace :: FuntypeFrontFace+glFrontFace = unsafePerformIO $ readIORef glrefFrontFace+{-# INLINE glFrontFace #-}+type FuntypeHint =+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynHint :: FunPtr FuntypeHint -> FuntypeHint+glrefHint :: IORef FuntypeHint+glrefHint = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefHint #-}+glHint :: FuntypeHint+glHint = unsafePerformIO $ readIORef glrefHint+{-# INLINE glHint #-}+type FuntypeLineWidth =+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynLineWidth :: FunPtr FuntypeLineWidth -> FuntypeLineWidth+glrefLineWidth :: IORef FuntypeLineWidth+glrefLineWidth = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefLineWidth #-}+glLineWidth :: FuntypeLineWidth+glLineWidth = unsafePerformIO $ readIORef glrefLineWidth+{-# INLINE glLineWidth #-}+type FuntypePointSize =+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPointSize :: FunPtr FuntypePointSize -> FuntypePointSize+glrefPointSize :: IORef FuntypePointSize+glrefPointSize = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPointSize #-}+glPointSize :: FuntypePointSize+glPointSize = unsafePerformIO $ readIORef glrefPointSize+{-# INLINE glPointSize #-}+type FuntypePolygonMode =+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPolygonMode :: FunPtr FuntypePolygonMode -> FuntypePolygonMode+glrefPolygonMode :: IORef FuntypePolygonMode+glrefPolygonMode = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPolygonMode #-}+glPolygonMode :: FuntypePolygonMode+glPolygonMode = unsafePerformIO $ readIORef glrefPolygonMode+{-# INLINE glPolygonMode #-}+type FuntypeScissor =+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynScissor :: FunPtr FuntypeScissor -> FuntypeScissor+glrefScissor :: IORef FuntypeScissor+glrefScissor = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefScissor #-}+glScissor :: FuntypeScissor+glScissor = unsafePerformIO $ readIORef glrefScissor+{-# INLINE glScissor #-}+type FuntypeTexParameterf =+    GLenum ->+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexParameterf :: FunPtr FuntypeTexParameterf -> FuntypeTexParameterf+glrefTexParameterf :: IORef FuntypeTexParameterf+glrefTexParameterf = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexParameterf #-}+glTexParameterf :: FuntypeTexParameterf+glTexParameterf = unsafePerformIO $ readIORef glrefTexParameterf+{-# INLINE glTexParameterf #-}+type FuntypeTexParameterfv =+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexParameterfv :: FunPtr FuntypeTexParameterfv -> FuntypeTexParameterfv+glrefTexParameterfv :: IORef FuntypeTexParameterfv+glrefTexParameterfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexParameterfv #-}+glTexParameterfv :: FuntypeTexParameterfv+glTexParameterfv = unsafePerformIO $ readIORef glrefTexParameterfv+{-# INLINE glTexParameterfv #-}+type FuntypeTexParameteri =+    GLenum ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexParameteri :: FunPtr FuntypeTexParameteri -> FuntypeTexParameteri+glrefTexParameteri :: IORef FuntypeTexParameteri+glrefTexParameteri = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexParameteri #-}+glTexParameteri :: FuntypeTexParameteri+glTexParameteri = unsafePerformIO $ readIORef glrefTexParameteri+{-# INLINE glTexParameteri #-}+type FuntypeTexParameteriv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexParameteriv :: FunPtr FuntypeTexParameteriv -> FuntypeTexParameteriv+glrefTexParameteriv :: IORef FuntypeTexParameteriv+glrefTexParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexParameteriv #-}+glTexParameteriv :: FuntypeTexParameteriv+glTexParameteriv = unsafePerformIO $ readIORef glrefTexParameteriv+{-# INLINE glTexParameteriv #-}+type FuntypeTexImage1D =+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexImage1D :: FunPtr FuntypeTexImage1D -> FuntypeTexImage1D+glrefTexImage1D :: IORef FuntypeTexImage1D+glrefTexImage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexImage1D #-}+glTexImage1D :: FuntypeTexImage1D+glTexImage1D = unsafePerformIO $ readIORef glrefTexImage1D+{-# INLINE glTexImage1D #-}+type FuntypeTexImage2D =+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexImage2D :: FunPtr FuntypeTexImage2D -> FuntypeTexImage2D+glrefTexImage2D :: IORef FuntypeTexImage2D+glrefTexImage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexImage2D #-}+glTexImage2D :: FuntypeTexImage2D+glTexImage2D = unsafePerformIO $ readIORef glrefTexImage2D+{-# INLINE glTexImage2D #-}+type FuntypeDrawBuffer =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawBuffer :: FunPtr FuntypeDrawBuffer -> FuntypeDrawBuffer+glrefDrawBuffer :: IORef FuntypeDrawBuffer+glrefDrawBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawBuffer #-}+glDrawBuffer :: FuntypeDrawBuffer+glDrawBuffer = unsafePerformIO $ readIORef glrefDrawBuffer+{-# INLINE glDrawBuffer #-}+type FuntypeClear =+    GLbitfield ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClear :: FunPtr FuntypeClear -> FuntypeClear+glrefClear :: IORef FuntypeClear+glrefClear = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClear #-}+glClear :: FuntypeClear+glClear = unsafePerformIO $ readIORef glrefClear+{-# INLINE glClear #-}+type FuntypeClearColor =+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearColor :: FunPtr FuntypeClearColor -> FuntypeClearColor+glrefClearColor :: IORef FuntypeClearColor+glrefClearColor = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearColor #-}+glClearColor :: FuntypeClearColor+glClearColor = unsafePerformIO $ readIORef glrefClearColor+{-# INLINE glClearColor #-}+type FuntypeClearStencil =+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearStencil :: FunPtr FuntypeClearStencil -> FuntypeClearStencil+glrefClearStencil :: IORef FuntypeClearStencil+glrefClearStencil = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearStencil #-}+glClearStencil :: FuntypeClearStencil+glClearStencil = unsafePerformIO $ readIORef glrefClearStencil+{-# INLINE glClearStencil #-}+type FuntypeClearDepth =+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearDepth :: FunPtr FuntypeClearDepth -> FuntypeClearDepth+glrefClearDepth :: IORef FuntypeClearDepth+glrefClearDepth = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearDepth #-}+glClearDepth :: FuntypeClearDepth+glClearDepth = unsafePerformIO $ readIORef glrefClearDepth+{-# INLINE glClearDepth #-}+type FuntypeStencilMask =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynStencilMask :: FunPtr FuntypeStencilMask -> FuntypeStencilMask+glrefStencilMask :: IORef FuntypeStencilMask+glrefStencilMask = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefStencilMask #-}+glStencilMask :: FuntypeStencilMask+glStencilMask = unsafePerformIO $ readIORef glrefStencilMask+{-# INLINE glStencilMask #-}+type FuntypeColorMask =+    GLboolean ->+    GLboolean ->+    GLboolean ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynColorMask :: FunPtr FuntypeColorMask -> FuntypeColorMask+glrefColorMask :: IORef FuntypeColorMask+glrefColorMask = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefColorMask #-}+glColorMask :: FuntypeColorMask+glColorMask = unsafePerformIO $ readIORef glrefColorMask+{-# INLINE glColorMask #-}+type FuntypeDepthMask =+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDepthMask :: FunPtr FuntypeDepthMask -> FuntypeDepthMask+glrefDepthMask :: IORef FuntypeDepthMask+glrefDepthMask = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDepthMask #-}+glDepthMask :: FuntypeDepthMask+glDepthMask = unsafePerformIO $ readIORef glrefDepthMask+{-# INLINE glDepthMask #-}+type FuntypeDisable =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisable :: FunPtr FuntypeDisable -> FuntypeDisable+glrefDisable :: IORef FuntypeDisable+glrefDisable = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisable #-}+glDisable :: FuntypeDisable+glDisable = unsafePerformIO $ readIORef glrefDisable+{-# INLINE glDisable #-}+type FuntypeEnable =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnable :: FunPtr FuntypeEnable -> FuntypeEnable+glrefEnable :: IORef FuntypeEnable+glrefEnable = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnable #-}+glEnable :: FuntypeEnable+glEnable = unsafePerformIO $ readIORef glrefEnable+{-# INLINE glEnable #-}+type FuntypeFinish =+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFinish :: FunPtr FuntypeFinish -> FuntypeFinish+glrefFinish :: IORef FuntypeFinish+glrefFinish = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFinish #-}+glFinish :: FuntypeFinish+glFinish = unsafePerformIO $ readIORef glrefFinish+{-# INLINE glFinish #-}+type FuntypeFlush =+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFlush :: FunPtr FuntypeFlush -> FuntypeFlush+glrefFlush :: IORef FuntypeFlush+glrefFlush = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFlush #-}+glFlush :: FuntypeFlush+glFlush = unsafePerformIO $ readIORef glrefFlush+{-# INLINE glFlush #-}+type FuntypeBlendFunc =+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBlendFunc :: FunPtr FuntypeBlendFunc -> FuntypeBlendFunc+glrefBlendFunc :: IORef FuntypeBlendFunc+glrefBlendFunc = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBlendFunc #-}+glBlendFunc :: FuntypeBlendFunc+glBlendFunc = unsafePerformIO $ readIORef glrefBlendFunc+{-# INLINE glBlendFunc #-}+type FuntypeLogicOp =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynLogicOp :: FunPtr FuntypeLogicOp -> FuntypeLogicOp+glrefLogicOp :: IORef FuntypeLogicOp+glrefLogicOp = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefLogicOp #-}+glLogicOp :: FuntypeLogicOp+glLogicOp = unsafePerformIO $ readIORef glrefLogicOp+{-# INLINE glLogicOp #-}+type FuntypeStencilFunc =+    GLenum ->+    GLint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynStencilFunc :: FunPtr FuntypeStencilFunc -> FuntypeStencilFunc+glrefStencilFunc :: IORef FuntypeStencilFunc+glrefStencilFunc = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefStencilFunc #-}+glStencilFunc :: FuntypeStencilFunc+glStencilFunc = unsafePerformIO $ readIORef glrefStencilFunc+{-# INLINE glStencilFunc #-}+type FuntypeStencilOp =+    GLenum ->+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynStencilOp :: FunPtr FuntypeStencilOp -> FuntypeStencilOp+glrefStencilOp :: IORef FuntypeStencilOp+glrefStencilOp = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefStencilOp #-}+glStencilOp :: FuntypeStencilOp+glStencilOp = unsafePerformIO $ readIORef glrefStencilOp+{-# INLINE glStencilOp #-}+type FuntypeDepthFunc =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDepthFunc :: FunPtr FuntypeDepthFunc -> FuntypeDepthFunc+glrefDepthFunc :: IORef FuntypeDepthFunc+glrefDepthFunc = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDepthFunc #-}+glDepthFunc :: FuntypeDepthFunc+glDepthFunc = unsafePerformIO $ readIORef glrefDepthFunc+{-# INLINE glDepthFunc #-}+type FuntypePixelStoref =+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPixelStoref :: FunPtr FuntypePixelStoref -> FuntypePixelStoref+glrefPixelStoref :: IORef FuntypePixelStoref+glrefPixelStoref = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPixelStoref #-}+glPixelStoref :: FuntypePixelStoref+glPixelStoref = unsafePerformIO $ readIORef glrefPixelStoref+{-# INLINE glPixelStoref #-}+type FuntypePixelStorei =+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPixelStorei :: FunPtr FuntypePixelStorei -> FuntypePixelStorei+glrefPixelStorei :: IORef FuntypePixelStorei+glrefPixelStorei = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPixelStorei #-}+glPixelStorei :: FuntypePixelStorei+glPixelStorei = unsafePerformIO $ readIORef glrefPixelStorei+{-# INLINE glPixelStorei #-}+type FuntypeReadBuffer =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynReadBuffer :: FunPtr FuntypeReadBuffer -> FuntypeReadBuffer+glrefReadBuffer :: IORef FuntypeReadBuffer+glrefReadBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefReadBuffer #-}+glReadBuffer :: FuntypeReadBuffer+glReadBuffer = unsafePerformIO $ readIORef glrefReadBuffer+{-# INLINE glReadBuffer #-}+type FuntypeReadPixels =+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynReadPixels :: FunPtr FuntypeReadPixels -> FuntypeReadPixels+glrefReadPixels :: IORef FuntypeReadPixels+glrefReadPixels = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefReadPixels #-}+glReadPixels :: FuntypeReadPixels+glReadPixels = unsafePerformIO $ readIORef glrefReadPixels+{-# INLINE glReadPixels #-}+type FuntypeGetBooleanv =+    GLenum ->+    Ptr (GLboolean) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBooleanv :: FunPtr FuntypeGetBooleanv -> FuntypeGetBooleanv+glrefGetBooleanv :: IORef FuntypeGetBooleanv+glrefGetBooleanv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBooleanv #-}+glGetBooleanv :: FuntypeGetBooleanv+glGetBooleanv = unsafePerformIO $ readIORef glrefGetBooleanv+{-# INLINE glGetBooleanv #-}+type FuntypeGetDoublev =+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetDoublev :: FunPtr FuntypeGetDoublev -> FuntypeGetDoublev+glrefGetDoublev :: IORef FuntypeGetDoublev+glrefGetDoublev = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetDoublev #-}+glGetDoublev :: FuntypeGetDoublev+glGetDoublev = unsafePerformIO $ readIORef glrefGetDoublev+{-# INLINE glGetDoublev #-}+type FuntypeGetError =+    IO ( GLenum )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetError :: FunPtr FuntypeGetError -> FuntypeGetError+glrefGetError :: IORef FuntypeGetError+glrefGetError = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetError #-}+glGetError :: FuntypeGetError+glGetError = unsafePerformIO $ readIORef glrefGetError+{-# INLINE glGetError #-}+type FuntypeGetFloatv =+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFloatv :: FunPtr FuntypeGetFloatv -> FuntypeGetFloatv+glrefGetFloatv :: IORef FuntypeGetFloatv+glrefGetFloatv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFloatv #-}+glGetFloatv :: FuntypeGetFloatv+glGetFloatv = unsafePerformIO $ readIORef glrefGetFloatv+{-# INLINE glGetFloatv #-}+type FuntypeGetIntegerv =+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetIntegerv :: FunPtr FuntypeGetIntegerv -> FuntypeGetIntegerv+glrefGetIntegerv :: IORef FuntypeGetIntegerv+glrefGetIntegerv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetIntegerv #-}+glGetIntegerv :: FuntypeGetIntegerv+glGetIntegerv = unsafePerformIO $ readIORef glrefGetIntegerv+{-# INLINE glGetIntegerv #-}+type FuntypeGetString =+    GLenum ->+    IO ( Ptr (GLubyte) )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetString :: FunPtr FuntypeGetString -> FuntypeGetString+glrefGetString :: IORef FuntypeGetString+glrefGetString = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetString #-}+glGetString :: FuntypeGetString+glGetString = unsafePerformIO $ readIORef glrefGetString+{-# INLINE glGetString #-}+type FuntypeGetTexImage =+    GLenum ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexImage :: FunPtr FuntypeGetTexImage -> FuntypeGetTexImage+glrefGetTexImage :: IORef FuntypeGetTexImage+glrefGetTexImage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexImage #-}+glGetTexImage :: FuntypeGetTexImage+glGetTexImage = unsafePerformIO $ readIORef glrefGetTexImage+{-# INLINE glGetTexImage #-}+type FuntypeGetTexParameterfv =+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexParameterfv :: FunPtr FuntypeGetTexParameterfv -> FuntypeGetTexParameterfv+glrefGetTexParameterfv :: IORef FuntypeGetTexParameterfv+glrefGetTexParameterfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexParameterfv #-}+glGetTexParameterfv :: FuntypeGetTexParameterfv+glGetTexParameterfv = unsafePerformIO $ readIORef glrefGetTexParameterfv+{-# INLINE glGetTexParameterfv #-}+type FuntypeGetTexParameteriv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexParameteriv :: FunPtr FuntypeGetTexParameteriv -> FuntypeGetTexParameteriv+glrefGetTexParameteriv :: IORef FuntypeGetTexParameteriv+glrefGetTexParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexParameteriv #-}+glGetTexParameteriv :: FuntypeGetTexParameteriv+glGetTexParameteriv = unsafePerformIO $ readIORef glrefGetTexParameteriv+{-# INLINE glGetTexParameteriv #-}+type FuntypeGetTexLevelParameterfv =+    GLenum ->+    GLint ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexLevelParameterfv :: FunPtr FuntypeGetTexLevelParameterfv -> FuntypeGetTexLevelParameterfv+glrefGetTexLevelParameterfv :: IORef FuntypeGetTexLevelParameterfv+glrefGetTexLevelParameterfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexLevelParameterfv #-}+glGetTexLevelParameterfv :: FuntypeGetTexLevelParameterfv+glGetTexLevelParameterfv = unsafePerformIO $ readIORef glrefGetTexLevelParameterfv+{-# INLINE glGetTexLevelParameterfv #-}+type FuntypeGetTexLevelParameteriv =+    GLenum ->+    GLint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexLevelParameteriv :: FunPtr FuntypeGetTexLevelParameteriv -> FuntypeGetTexLevelParameteriv+glrefGetTexLevelParameteriv :: IORef FuntypeGetTexLevelParameteriv+glrefGetTexLevelParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexLevelParameteriv #-}+glGetTexLevelParameteriv :: FuntypeGetTexLevelParameteriv+glGetTexLevelParameteriv = unsafePerformIO $ readIORef glrefGetTexLevelParameteriv+{-# INLINE glGetTexLevelParameteriv #-}+type FuntypeIsEnabled =+    GLenum ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsEnabled :: FunPtr FuntypeIsEnabled -> FuntypeIsEnabled+glrefIsEnabled :: IORef FuntypeIsEnabled+glrefIsEnabled = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsEnabled #-}+glIsEnabled :: FuntypeIsEnabled+glIsEnabled = unsafePerformIO $ readIORef glrefIsEnabled+{-# INLINE glIsEnabled #-}+type FuntypeDepthRange =+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDepthRange :: FunPtr FuntypeDepthRange -> FuntypeDepthRange+glrefDepthRange :: IORef FuntypeDepthRange+glrefDepthRange = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDepthRange #-}+glDepthRange :: FuntypeDepthRange+glDepthRange = unsafePerformIO $ readIORef glrefDepthRange+{-# INLINE glDepthRange #-}+type FuntypeViewport =+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynViewport :: FunPtr FuntypeViewport -> FuntypeViewport+glrefViewport :: IORef FuntypeViewport+glrefViewport = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefViewport #-}+glViewport :: FuntypeViewport+glViewport = unsafePerformIO $ readIORef glrefViewport+{-# INLINE glViewport #-}++-- GL_VERSION_1_1++type FuntypeDrawArrays =+    GLenum ->+    GLint ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawArrays :: FunPtr FuntypeDrawArrays -> FuntypeDrawArrays+glrefDrawArrays :: IORef FuntypeDrawArrays+glrefDrawArrays = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawArrays #-}+glDrawArrays :: FuntypeDrawArrays+glDrawArrays = unsafePerformIO $ readIORef glrefDrawArrays+{-# INLINE glDrawArrays #-}+type FuntypeDrawElements =+    GLenum ->+    GLsizei ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawElements :: FunPtr FuntypeDrawElements -> FuntypeDrawElements+glrefDrawElements :: IORef FuntypeDrawElements+glrefDrawElements = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawElements #-}+glDrawElements :: FuntypeDrawElements+glDrawElements = unsafePerformIO $ readIORef glrefDrawElements+{-# INLINE glDrawElements #-}+type FuntypePolygonOffset =+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPolygonOffset :: FunPtr FuntypePolygonOffset -> FuntypePolygonOffset+glrefPolygonOffset :: IORef FuntypePolygonOffset+glrefPolygonOffset = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPolygonOffset #-}+glPolygonOffset :: FuntypePolygonOffset+glPolygonOffset = unsafePerformIO $ readIORef glrefPolygonOffset+{-# INLINE glPolygonOffset #-}+type FuntypeCopyTexImage1D =+    GLenum ->+    GLint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTexImage1D :: FunPtr FuntypeCopyTexImage1D -> FuntypeCopyTexImage1D+glrefCopyTexImage1D :: IORef FuntypeCopyTexImage1D+glrefCopyTexImage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTexImage1D #-}+glCopyTexImage1D :: FuntypeCopyTexImage1D+glCopyTexImage1D = unsafePerformIO $ readIORef glrefCopyTexImage1D+{-# INLINE glCopyTexImage1D #-}+type FuntypeCopyTexImage2D =+    GLenum ->+    GLint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTexImage2D :: FunPtr FuntypeCopyTexImage2D -> FuntypeCopyTexImage2D+glrefCopyTexImage2D :: IORef FuntypeCopyTexImage2D+glrefCopyTexImage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTexImage2D #-}+glCopyTexImage2D :: FuntypeCopyTexImage2D+glCopyTexImage2D = unsafePerformIO $ readIORef glrefCopyTexImage2D+{-# INLINE glCopyTexImage2D #-}+type FuntypeCopyTexSubImage1D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTexSubImage1D :: FunPtr FuntypeCopyTexSubImage1D -> FuntypeCopyTexSubImage1D+glrefCopyTexSubImage1D :: IORef FuntypeCopyTexSubImage1D+glrefCopyTexSubImage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTexSubImage1D #-}+glCopyTexSubImage1D :: FuntypeCopyTexSubImage1D+glCopyTexSubImage1D = unsafePerformIO $ readIORef glrefCopyTexSubImage1D+{-# INLINE glCopyTexSubImage1D #-}+type FuntypeCopyTexSubImage2D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTexSubImage2D :: FunPtr FuntypeCopyTexSubImage2D -> FuntypeCopyTexSubImage2D+glrefCopyTexSubImage2D :: IORef FuntypeCopyTexSubImage2D+glrefCopyTexSubImage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTexSubImage2D #-}+glCopyTexSubImage2D :: FuntypeCopyTexSubImage2D+glCopyTexSubImage2D = unsafePerformIO $ readIORef glrefCopyTexSubImage2D+{-# INLINE glCopyTexSubImage2D #-}+type FuntypeTexSubImage1D =+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexSubImage1D :: FunPtr FuntypeTexSubImage1D -> FuntypeTexSubImage1D+glrefTexSubImage1D :: IORef FuntypeTexSubImage1D+glrefTexSubImage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexSubImage1D #-}+glTexSubImage1D :: FuntypeTexSubImage1D+glTexSubImage1D = unsafePerformIO $ readIORef glrefTexSubImage1D+{-# INLINE glTexSubImage1D #-}+type FuntypeTexSubImage2D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexSubImage2D :: FunPtr FuntypeTexSubImage2D -> FuntypeTexSubImage2D+glrefTexSubImage2D :: IORef FuntypeTexSubImage2D+glrefTexSubImage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexSubImage2D #-}+glTexSubImage2D :: FuntypeTexSubImage2D+glTexSubImage2D = unsafePerformIO $ readIORef glrefTexSubImage2D+{-# INLINE glTexSubImage2D #-}+type FuntypeBindTexture =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindTexture :: FunPtr FuntypeBindTexture -> FuntypeBindTexture+glrefBindTexture :: IORef FuntypeBindTexture+glrefBindTexture = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindTexture #-}+glBindTexture :: FuntypeBindTexture+glBindTexture = unsafePerformIO $ readIORef glrefBindTexture+{-# INLINE glBindTexture #-}+type FuntypeDeleteTextures =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteTextures :: FunPtr FuntypeDeleteTextures -> FuntypeDeleteTextures+glrefDeleteTextures :: IORef FuntypeDeleteTextures+glrefDeleteTextures = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteTextures #-}+glDeleteTextures :: FuntypeDeleteTextures+glDeleteTextures = unsafePerformIO $ readIORef glrefDeleteTextures+{-# INLINE glDeleteTextures #-}+type FuntypeGenTextures =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenTextures :: FunPtr FuntypeGenTextures -> FuntypeGenTextures+glrefGenTextures :: IORef FuntypeGenTextures+glrefGenTextures = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenTextures #-}+glGenTextures :: FuntypeGenTextures+glGenTextures = unsafePerformIO $ readIORef glrefGenTextures+{-# INLINE glGenTextures #-}+type FuntypeIsTexture =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsTexture :: FunPtr FuntypeIsTexture -> FuntypeIsTexture+glrefIsTexture :: IORef FuntypeIsTexture+glrefIsTexture = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsTexture #-}+glIsTexture :: FuntypeIsTexture+glIsTexture = unsafePerformIO $ readIORef glrefIsTexture+{-# INLINE glIsTexture #-}++-- GL_VERSION_1_2++type FuntypeDrawRangeElements =+    GLenum ->+    GLuint ->+    GLuint ->+    GLsizei ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawRangeElements :: FunPtr FuntypeDrawRangeElements -> FuntypeDrawRangeElements+glrefDrawRangeElements :: IORef FuntypeDrawRangeElements+glrefDrawRangeElements = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawRangeElements #-}+glDrawRangeElements :: FuntypeDrawRangeElements+glDrawRangeElements = unsafePerformIO $ readIORef glrefDrawRangeElements+{-# INLINE glDrawRangeElements #-}+type FuntypeTexImage3D =+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexImage3D :: FunPtr FuntypeTexImage3D -> FuntypeTexImage3D+glrefTexImage3D :: IORef FuntypeTexImage3D+glrefTexImage3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexImage3D #-}+glTexImage3D :: FuntypeTexImage3D+glTexImage3D = unsafePerformIO $ readIORef glrefTexImage3D+{-# INLINE glTexImage3D #-}+type FuntypeTexSubImage3D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexSubImage3D :: FunPtr FuntypeTexSubImage3D -> FuntypeTexSubImage3D+glrefTexSubImage3D :: IORef FuntypeTexSubImage3D+glrefTexSubImage3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexSubImage3D #-}+glTexSubImage3D :: FuntypeTexSubImage3D+glTexSubImage3D = unsafePerformIO $ readIORef glrefTexSubImage3D+{-# INLINE glTexSubImage3D #-}+type FuntypeCopyTexSubImage3D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTexSubImage3D :: FunPtr FuntypeCopyTexSubImage3D -> FuntypeCopyTexSubImage3D+glrefCopyTexSubImage3D :: IORef FuntypeCopyTexSubImage3D+glrefCopyTexSubImage3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTexSubImage3D #-}+glCopyTexSubImage3D :: FuntypeCopyTexSubImage3D+glCopyTexSubImage3D = unsafePerformIO $ readIORef glrefCopyTexSubImage3D+{-# INLINE glCopyTexSubImage3D #-}++-- GL_VERSION_1_3++type FuntypeActiveTexture =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynActiveTexture :: FunPtr FuntypeActiveTexture -> FuntypeActiveTexture+glrefActiveTexture :: IORef FuntypeActiveTexture+glrefActiveTexture = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefActiveTexture #-}+glActiveTexture :: FuntypeActiveTexture+glActiveTexture = unsafePerformIO $ readIORef glrefActiveTexture+{-# INLINE glActiveTexture #-}+type FuntypeSampleCoverage =+    GLfloat ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSampleCoverage :: FunPtr FuntypeSampleCoverage -> FuntypeSampleCoverage+glrefSampleCoverage :: IORef FuntypeSampleCoverage+glrefSampleCoverage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSampleCoverage #-}+glSampleCoverage :: FuntypeSampleCoverage+glSampleCoverage = unsafePerformIO $ readIORef glrefSampleCoverage+{-# INLINE glSampleCoverage #-}+type FuntypeCompressedTexImage3D =+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTexImage3D :: FunPtr FuntypeCompressedTexImage3D -> FuntypeCompressedTexImage3D+glrefCompressedTexImage3D :: IORef FuntypeCompressedTexImage3D+glrefCompressedTexImage3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTexImage3D #-}+glCompressedTexImage3D :: FuntypeCompressedTexImage3D+glCompressedTexImage3D = unsafePerformIO $ readIORef glrefCompressedTexImage3D+{-# INLINE glCompressedTexImage3D #-}+type FuntypeCompressedTexImage2D =+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTexImage2D :: FunPtr FuntypeCompressedTexImage2D -> FuntypeCompressedTexImage2D+glrefCompressedTexImage2D :: IORef FuntypeCompressedTexImage2D+glrefCompressedTexImage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTexImage2D #-}+glCompressedTexImage2D :: FuntypeCompressedTexImage2D+glCompressedTexImage2D = unsafePerformIO $ readIORef glrefCompressedTexImage2D+{-# INLINE glCompressedTexImage2D #-}+type FuntypeCompressedTexImage1D =+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTexImage1D :: FunPtr FuntypeCompressedTexImage1D -> FuntypeCompressedTexImage1D+glrefCompressedTexImage1D :: IORef FuntypeCompressedTexImage1D+glrefCompressedTexImage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTexImage1D #-}+glCompressedTexImage1D :: FuntypeCompressedTexImage1D+glCompressedTexImage1D = unsafePerformIO $ readIORef glrefCompressedTexImage1D+{-# INLINE glCompressedTexImage1D #-}+type FuntypeCompressedTexSubImage3D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTexSubImage3D :: FunPtr FuntypeCompressedTexSubImage3D -> FuntypeCompressedTexSubImage3D+glrefCompressedTexSubImage3D :: IORef FuntypeCompressedTexSubImage3D+glrefCompressedTexSubImage3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTexSubImage3D #-}+glCompressedTexSubImage3D :: FuntypeCompressedTexSubImage3D+glCompressedTexSubImage3D = unsafePerformIO $ readIORef glrefCompressedTexSubImage3D+{-# INLINE glCompressedTexSubImage3D #-}+type FuntypeCompressedTexSubImage2D =+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTexSubImage2D :: FunPtr FuntypeCompressedTexSubImage2D -> FuntypeCompressedTexSubImage2D+glrefCompressedTexSubImage2D :: IORef FuntypeCompressedTexSubImage2D+glrefCompressedTexSubImage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTexSubImage2D #-}+glCompressedTexSubImage2D :: FuntypeCompressedTexSubImage2D+glCompressedTexSubImage2D = unsafePerformIO $ readIORef glrefCompressedTexSubImage2D+{-# INLINE glCompressedTexSubImage2D #-}+type FuntypeCompressedTexSubImage1D =+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTexSubImage1D :: FunPtr FuntypeCompressedTexSubImage1D -> FuntypeCompressedTexSubImage1D+glrefCompressedTexSubImage1D :: IORef FuntypeCompressedTexSubImage1D+glrefCompressedTexSubImage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTexSubImage1D #-}+glCompressedTexSubImage1D :: FuntypeCompressedTexSubImage1D+glCompressedTexSubImage1D = unsafePerformIO $ readIORef glrefCompressedTexSubImage1D+{-# INLINE glCompressedTexSubImage1D #-}+type FuntypeGetCompressedTexImage =+    GLenum ->+    GLint ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetCompressedTexImage :: FunPtr FuntypeGetCompressedTexImage -> FuntypeGetCompressedTexImage+glrefGetCompressedTexImage :: IORef FuntypeGetCompressedTexImage+glrefGetCompressedTexImage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetCompressedTexImage #-}+glGetCompressedTexImage :: FuntypeGetCompressedTexImage+glGetCompressedTexImage = unsafePerformIO $ readIORef glrefGetCompressedTexImage+{-# INLINE glGetCompressedTexImage #-}++-- GL_VERSION_1_4++type FuntypeBlendFuncSeparate =+    GLenum ->+    GLenum ->+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBlendFuncSeparate :: FunPtr FuntypeBlendFuncSeparate -> FuntypeBlendFuncSeparate+glrefBlendFuncSeparate :: IORef FuntypeBlendFuncSeparate+glrefBlendFuncSeparate = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBlendFuncSeparate #-}+glBlendFuncSeparate :: FuntypeBlendFuncSeparate+glBlendFuncSeparate = unsafePerformIO $ readIORef glrefBlendFuncSeparate+{-# INLINE glBlendFuncSeparate #-}+type FuntypeMultiDrawArrays =+    GLenum ->+    Ptr (GLint) ->+    Ptr (GLsizei) ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiDrawArrays :: FunPtr FuntypeMultiDrawArrays -> FuntypeMultiDrawArrays+glrefMultiDrawArrays :: IORef FuntypeMultiDrawArrays+glrefMultiDrawArrays = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiDrawArrays #-}+glMultiDrawArrays :: FuntypeMultiDrawArrays+glMultiDrawArrays = unsafePerformIO $ readIORef glrefMultiDrawArrays+{-# INLINE glMultiDrawArrays #-}+type FuntypeMultiDrawElements =+    GLenum ->+    Ptr (GLsizei) ->+    GLenum ->+    Ptr (Ptr ()) ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiDrawElements :: FunPtr FuntypeMultiDrawElements -> FuntypeMultiDrawElements+glrefMultiDrawElements :: IORef FuntypeMultiDrawElements+glrefMultiDrawElements = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiDrawElements #-}+glMultiDrawElements :: FuntypeMultiDrawElements+glMultiDrawElements = unsafePerformIO $ readIORef glrefMultiDrawElements+{-# INLINE glMultiDrawElements #-}+type FuntypePointParameterf =+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPointParameterf :: FunPtr FuntypePointParameterf -> FuntypePointParameterf+glrefPointParameterf :: IORef FuntypePointParameterf+glrefPointParameterf = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPointParameterf #-}+glPointParameterf :: FuntypePointParameterf+glPointParameterf = unsafePerformIO $ readIORef glrefPointParameterf+{-# INLINE glPointParameterf #-}+type FuntypePointParameterfv =+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPointParameterfv :: FunPtr FuntypePointParameterfv -> FuntypePointParameterfv+glrefPointParameterfv :: IORef FuntypePointParameterfv+glrefPointParameterfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPointParameterfv #-}+glPointParameterfv :: FuntypePointParameterfv+glPointParameterfv = unsafePerformIO $ readIORef glrefPointParameterfv+{-# INLINE glPointParameterfv #-}+type FuntypePointParameteri =+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPointParameteri :: FunPtr FuntypePointParameteri -> FuntypePointParameteri+glrefPointParameteri :: IORef FuntypePointParameteri+glrefPointParameteri = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPointParameteri #-}+glPointParameteri :: FuntypePointParameteri+glPointParameteri = unsafePerformIO $ readIORef glrefPointParameteri+{-# INLINE glPointParameteri #-}+type FuntypePointParameteriv =+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPointParameteriv :: FunPtr FuntypePointParameteriv -> FuntypePointParameteriv+glrefPointParameteriv :: IORef FuntypePointParameteriv+glrefPointParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPointParameteriv #-}+glPointParameteriv :: FuntypePointParameteriv+glPointParameteriv = unsafePerformIO $ readIORef glrefPointParameteriv+{-# INLINE glPointParameteriv #-}+type FuntypeBlendColor =+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBlendColor :: FunPtr FuntypeBlendColor -> FuntypeBlendColor+glrefBlendColor :: IORef FuntypeBlendColor+glrefBlendColor = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBlendColor #-}+glBlendColor :: FuntypeBlendColor+glBlendColor = unsafePerformIO $ readIORef glrefBlendColor+{-# INLINE glBlendColor #-}+type FuntypeBlendEquation =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBlendEquation :: FunPtr FuntypeBlendEquation -> FuntypeBlendEquation+glrefBlendEquation :: IORef FuntypeBlendEquation+glrefBlendEquation = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBlendEquation #-}+glBlendEquation :: FuntypeBlendEquation+glBlendEquation = unsafePerformIO $ readIORef glrefBlendEquation+{-# INLINE glBlendEquation #-}++-- GL_VERSION_1_5++type FuntypeGenQueries =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenQueries :: FunPtr FuntypeGenQueries -> FuntypeGenQueries+glrefGenQueries :: IORef FuntypeGenQueries+glrefGenQueries = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenQueries #-}+glGenQueries :: FuntypeGenQueries+glGenQueries = unsafePerformIO $ readIORef glrefGenQueries+{-# INLINE glGenQueries #-}+type FuntypeDeleteQueries =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteQueries :: FunPtr FuntypeDeleteQueries -> FuntypeDeleteQueries+glrefDeleteQueries :: IORef FuntypeDeleteQueries+glrefDeleteQueries = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteQueries #-}+glDeleteQueries :: FuntypeDeleteQueries+glDeleteQueries = unsafePerformIO $ readIORef glrefDeleteQueries+{-# INLINE glDeleteQueries #-}+type FuntypeIsQuery =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsQuery :: FunPtr FuntypeIsQuery -> FuntypeIsQuery+glrefIsQuery :: IORef FuntypeIsQuery+glrefIsQuery = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsQuery #-}+glIsQuery :: FuntypeIsQuery+glIsQuery = unsafePerformIO $ readIORef glrefIsQuery+{-# INLINE glIsQuery #-}+type FuntypeBeginQuery =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBeginQuery :: FunPtr FuntypeBeginQuery -> FuntypeBeginQuery+glrefBeginQuery :: IORef FuntypeBeginQuery+glrefBeginQuery = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBeginQuery #-}+glBeginQuery :: FuntypeBeginQuery+glBeginQuery = unsafePerformIO $ readIORef glrefBeginQuery+{-# INLINE glBeginQuery #-}+type FuntypeEndQuery =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEndQuery :: FunPtr FuntypeEndQuery -> FuntypeEndQuery+glrefEndQuery :: IORef FuntypeEndQuery+glrefEndQuery = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEndQuery #-}+glEndQuery :: FuntypeEndQuery+glEndQuery = unsafePerformIO $ readIORef glrefEndQuery+{-# INLINE glEndQuery #-}+type FuntypeGetQueryiv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetQueryiv :: FunPtr FuntypeGetQueryiv -> FuntypeGetQueryiv+glrefGetQueryiv :: IORef FuntypeGetQueryiv+glrefGetQueryiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetQueryiv #-}+glGetQueryiv :: FuntypeGetQueryiv+glGetQueryiv = unsafePerformIO $ readIORef glrefGetQueryiv+{-# INLINE glGetQueryiv #-}+type FuntypeGetQueryObjectiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetQueryObjectiv :: FunPtr FuntypeGetQueryObjectiv -> FuntypeGetQueryObjectiv+glrefGetQueryObjectiv :: IORef FuntypeGetQueryObjectiv+glrefGetQueryObjectiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetQueryObjectiv #-}+glGetQueryObjectiv :: FuntypeGetQueryObjectiv+glGetQueryObjectiv = unsafePerformIO $ readIORef glrefGetQueryObjectiv+{-# INLINE glGetQueryObjectiv #-}+type FuntypeGetQueryObjectuiv =+    GLuint ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetQueryObjectuiv :: FunPtr FuntypeGetQueryObjectuiv -> FuntypeGetQueryObjectuiv+glrefGetQueryObjectuiv :: IORef FuntypeGetQueryObjectuiv+glrefGetQueryObjectuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetQueryObjectuiv #-}+glGetQueryObjectuiv :: FuntypeGetQueryObjectuiv+glGetQueryObjectuiv = unsafePerformIO $ readIORef glrefGetQueryObjectuiv+{-# INLINE glGetQueryObjectuiv #-}+type FuntypeBindBuffer =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindBuffer :: FunPtr FuntypeBindBuffer -> FuntypeBindBuffer+glrefBindBuffer :: IORef FuntypeBindBuffer+glrefBindBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindBuffer #-}+glBindBuffer :: FuntypeBindBuffer+glBindBuffer = unsafePerformIO $ readIORef glrefBindBuffer+{-# INLINE glBindBuffer #-}+type FuntypeDeleteBuffers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteBuffers :: FunPtr FuntypeDeleteBuffers -> FuntypeDeleteBuffers+glrefDeleteBuffers :: IORef FuntypeDeleteBuffers+glrefDeleteBuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteBuffers #-}+glDeleteBuffers :: FuntypeDeleteBuffers+glDeleteBuffers = unsafePerformIO $ readIORef glrefDeleteBuffers+{-# INLINE glDeleteBuffers #-}+type FuntypeGenBuffers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenBuffers :: FunPtr FuntypeGenBuffers -> FuntypeGenBuffers+glrefGenBuffers :: IORef FuntypeGenBuffers+glrefGenBuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenBuffers #-}+glGenBuffers :: FuntypeGenBuffers+glGenBuffers = unsafePerformIO $ readIORef glrefGenBuffers+{-# INLINE glGenBuffers #-}+type FuntypeIsBuffer =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsBuffer :: FunPtr FuntypeIsBuffer -> FuntypeIsBuffer+glrefIsBuffer :: IORef FuntypeIsBuffer+glrefIsBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsBuffer #-}+glIsBuffer :: FuntypeIsBuffer+glIsBuffer = unsafePerformIO $ readIORef glrefIsBuffer+{-# INLINE glIsBuffer #-}+type FuntypeBufferData =+    GLenum ->+    GLsizeiptr ->+    Ptr () ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBufferData :: FunPtr FuntypeBufferData -> FuntypeBufferData+glrefBufferData :: IORef FuntypeBufferData+glrefBufferData = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBufferData #-}+glBufferData :: FuntypeBufferData+glBufferData = unsafePerformIO $ readIORef glrefBufferData+{-# INLINE glBufferData #-}+type FuntypeBufferSubData =+    GLenum ->+    GLintptr ->+    GLsizeiptr ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBufferSubData :: FunPtr FuntypeBufferSubData -> FuntypeBufferSubData+glrefBufferSubData :: IORef FuntypeBufferSubData+glrefBufferSubData = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBufferSubData #-}+glBufferSubData :: FuntypeBufferSubData+glBufferSubData = unsafePerformIO $ readIORef glrefBufferSubData+{-# INLINE glBufferSubData #-}+type FuntypeGetBufferSubData =+    GLenum ->+    GLintptr ->+    GLsizeiptr ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBufferSubData :: FunPtr FuntypeGetBufferSubData -> FuntypeGetBufferSubData+glrefGetBufferSubData :: IORef FuntypeGetBufferSubData+glrefGetBufferSubData = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBufferSubData #-}+glGetBufferSubData :: FuntypeGetBufferSubData+glGetBufferSubData = unsafePerformIO $ readIORef glrefGetBufferSubData+{-# INLINE glGetBufferSubData #-}+type FuntypeMapBuffer =+    GLenum ->+    GLenum ->+    IO ( Ptr () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMapBuffer :: FunPtr FuntypeMapBuffer -> FuntypeMapBuffer+glrefMapBuffer :: IORef FuntypeMapBuffer+glrefMapBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMapBuffer #-}+glMapBuffer :: FuntypeMapBuffer+glMapBuffer = unsafePerformIO $ readIORef glrefMapBuffer+{-# INLINE glMapBuffer #-}+type FuntypeUnmapBuffer =+    GLenum ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUnmapBuffer :: FunPtr FuntypeUnmapBuffer -> FuntypeUnmapBuffer+glrefUnmapBuffer :: IORef FuntypeUnmapBuffer+glrefUnmapBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUnmapBuffer #-}+glUnmapBuffer :: FuntypeUnmapBuffer+glUnmapBuffer = unsafePerformIO $ readIORef glrefUnmapBuffer+{-# INLINE glUnmapBuffer #-}+type FuntypeGetBufferParameteriv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBufferParameteriv :: FunPtr FuntypeGetBufferParameteriv -> FuntypeGetBufferParameteriv+glrefGetBufferParameteriv :: IORef FuntypeGetBufferParameteriv+glrefGetBufferParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBufferParameteriv #-}+glGetBufferParameteriv :: FuntypeGetBufferParameteriv+glGetBufferParameteriv = unsafePerformIO $ readIORef glrefGetBufferParameteriv+{-# INLINE glGetBufferParameteriv #-}+type FuntypeGetBufferPointerv =+    GLenum ->+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBufferPointerv :: FunPtr FuntypeGetBufferPointerv -> FuntypeGetBufferPointerv+glrefGetBufferPointerv :: IORef FuntypeGetBufferPointerv+glrefGetBufferPointerv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBufferPointerv #-}+glGetBufferPointerv :: FuntypeGetBufferPointerv+glGetBufferPointerv = unsafePerformIO $ readIORef glrefGetBufferPointerv+{-# INLINE glGetBufferPointerv #-}++-- GL_VERSION_2_0++type FuntypeBlendEquationSeparate =+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBlendEquationSeparate :: FunPtr FuntypeBlendEquationSeparate -> FuntypeBlendEquationSeparate+glrefBlendEquationSeparate :: IORef FuntypeBlendEquationSeparate+glrefBlendEquationSeparate = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBlendEquationSeparate #-}+glBlendEquationSeparate :: FuntypeBlendEquationSeparate+glBlendEquationSeparate = unsafePerformIO $ readIORef glrefBlendEquationSeparate+{-# INLINE glBlendEquationSeparate #-}+type FuntypeDrawBuffers =+    GLsizei ->+    Ptr (GLenum) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawBuffers :: FunPtr FuntypeDrawBuffers -> FuntypeDrawBuffers+glrefDrawBuffers :: IORef FuntypeDrawBuffers+glrefDrawBuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawBuffers #-}+glDrawBuffers :: FuntypeDrawBuffers+glDrawBuffers = unsafePerformIO $ readIORef glrefDrawBuffers+{-# INLINE glDrawBuffers #-}+type FuntypeStencilOpSeparate =+    GLenum ->+    GLenum ->+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynStencilOpSeparate :: FunPtr FuntypeStencilOpSeparate -> FuntypeStencilOpSeparate+glrefStencilOpSeparate :: IORef FuntypeStencilOpSeparate+glrefStencilOpSeparate = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefStencilOpSeparate #-}+glStencilOpSeparate :: FuntypeStencilOpSeparate+glStencilOpSeparate = unsafePerformIO $ readIORef glrefStencilOpSeparate+{-# INLINE glStencilOpSeparate #-}+type FuntypeStencilFuncSeparate =+    GLenum ->+    GLenum ->+    GLint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynStencilFuncSeparate :: FunPtr FuntypeStencilFuncSeparate -> FuntypeStencilFuncSeparate+glrefStencilFuncSeparate :: IORef FuntypeStencilFuncSeparate+glrefStencilFuncSeparate = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefStencilFuncSeparate #-}+glStencilFuncSeparate :: FuntypeStencilFuncSeparate+glStencilFuncSeparate = unsafePerformIO $ readIORef glrefStencilFuncSeparate+{-# INLINE glStencilFuncSeparate #-}+type FuntypeStencilMaskSeparate =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynStencilMaskSeparate :: FunPtr FuntypeStencilMaskSeparate -> FuntypeStencilMaskSeparate+glrefStencilMaskSeparate :: IORef FuntypeStencilMaskSeparate+glrefStencilMaskSeparate = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefStencilMaskSeparate #-}+glStencilMaskSeparate :: FuntypeStencilMaskSeparate+glStencilMaskSeparate = unsafePerformIO $ readIORef glrefStencilMaskSeparate+{-# INLINE glStencilMaskSeparate #-}+type FuntypeAttachShader =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynAttachShader :: FunPtr FuntypeAttachShader -> FuntypeAttachShader+glrefAttachShader :: IORef FuntypeAttachShader+glrefAttachShader = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefAttachShader #-}+glAttachShader :: FuntypeAttachShader+glAttachShader = unsafePerformIO $ readIORef glrefAttachShader+{-# INLINE glAttachShader #-}+type FuntypeBindAttribLocation =+    GLuint ->+    GLuint ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindAttribLocation :: FunPtr FuntypeBindAttribLocation -> FuntypeBindAttribLocation+glrefBindAttribLocation :: IORef FuntypeBindAttribLocation+glrefBindAttribLocation = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindAttribLocation #-}+glBindAttribLocation :: FuntypeBindAttribLocation+glBindAttribLocation = unsafePerformIO $ readIORef glrefBindAttribLocation+{-# INLINE glBindAttribLocation #-}+type FuntypeCompileShader =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompileShader :: FunPtr FuntypeCompileShader -> FuntypeCompileShader+glrefCompileShader :: IORef FuntypeCompileShader+glrefCompileShader = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompileShader #-}+glCompileShader :: FuntypeCompileShader+glCompileShader = unsafePerformIO $ readIORef glrefCompileShader+{-# INLINE glCompileShader #-}+type FuntypeCreateProgram =+    IO ( GLuint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCreateProgram :: FunPtr FuntypeCreateProgram -> FuntypeCreateProgram+glrefCreateProgram :: IORef FuntypeCreateProgram+glrefCreateProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCreateProgram #-}+glCreateProgram :: FuntypeCreateProgram+glCreateProgram = unsafePerformIO $ readIORef glrefCreateProgram+{-# INLINE glCreateProgram #-}+type FuntypeCreateShader =+    GLenum ->+    IO ( GLuint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCreateShader :: FunPtr FuntypeCreateShader -> FuntypeCreateShader+glrefCreateShader :: IORef FuntypeCreateShader+glrefCreateShader = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCreateShader #-}+glCreateShader :: FuntypeCreateShader+glCreateShader = unsafePerformIO $ readIORef glrefCreateShader+{-# INLINE glCreateShader #-}+type FuntypeDeleteProgram =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteProgram :: FunPtr FuntypeDeleteProgram -> FuntypeDeleteProgram+glrefDeleteProgram :: IORef FuntypeDeleteProgram+glrefDeleteProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteProgram #-}+glDeleteProgram :: FuntypeDeleteProgram+glDeleteProgram = unsafePerformIO $ readIORef glrefDeleteProgram+{-# INLINE glDeleteProgram #-}+type FuntypeDeleteShader =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteShader :: FunPtr FuntypeDeleteShader -> FuntypeDeleteShader+glrefDeleteShader :: IORef FuntypeDeleteShader+glrefDeleteShader = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteShader #-}+glDeleteShader :: FuntypeDeleteShader+glDeleteShader = unsafePerformIO $ readIORef glrefDeleteShader+{-# INLINE glDeleteShader #-}+type FuntypeDetachShader =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDetachShader :: FunPtr FuntypeDetachShader -> FuntypeDetachShader+glrefDetachShader :: IORef FuntypeDetachShader+glrefDetachShader = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDetachShader #-}+glDetachShader :: FuntypeDetachShader+glDetachShader = unsafePerformIO $ readIORef glrefDetachShader+{-# INLINE glDetachShader #-}+type FuntypeDisableVertexAttribArray =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisableVertexAttribArray :: FunPtr FuntypeDisableVertexAttribArray -> FuntypeDisableVertexAttribArray+glrefDisableVertexAttribArray :: IORef FuntypeDisableVertexAttribArray+glrefDisableVertexAttribArray = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisableVertexAttribArray #-}+glDisableVertexAttribArray :: FuntypeDisableVertexAttribArray+glDisableVertexAttribArray = unsafePerformIO $ readIORef glrefDisableVertexAttribArray+{-# INLINE glDisableVertexAttribArray #-}+type FuntypeEnableVertexAttribArray =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnableVertexAttribArray :: FunPtr FuntypeEnableVertexAttribArray -> FuntypeEnableVertexAttribArray+glrefEnableVertexAttribArray :: IORef FuntypeEnableVertexAttribArray+glrefEnableVertexAttribArray = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnableVertexAttribArray #-}+glEnableVertexAttribArray :: FuntypeEnableVertexAttribArray+glEnableVertexAttribArray = unsafePerformIO $ readIORef glrefEnableVertexAttribArray+{-# INLINE glEnableVertexAttribArray #-}+type FuntypeGetActiveAttrib =+    GLuint ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLint) ->+    Ptr (GLenum) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetActiveAttrib :: FunPtr FuntypeGetActiveAttrib -> FuntypeGetActiveAttrib+glrefGetActiveAttrib :: IORef FuntypeGetActiveAttrib+glrefGetActiveAttrib = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetActiveAttrib #-}+glGetActiveAttrib :: FuntypeGetActiveAttrib+glGetActiveAttrib = unsafePerformIO $ readIORef glrefGetActiveAttrib+{-# INLINE glGetActiveAttrib #-}+type FuntypeGetActiveUniform =+    GLuint ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLint) ->+    Ptr (GLenum) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetActiveUniform :: FunPtr FuntypeGetActiveUniform -> FuntypeGetActiveUniform+glrefGetActiveUniform :: IORef FuntypeGetActiveUniform+glrefGetActiveUniform = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetActiveUniform #-}+glGetActiveUniform :: FuntypeGetActiveUniform+glGetActiveUniform = unsafePerformIO $ readIORef glrefGetActiveUniform+{-# INLINE glGetActiveUniform #-}+type FuntypeGetAttachedShaders =+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetAttachedShaders :: FunPtr FuntypeGetAttachedShaders -> FuntypeGetAttachedShaders+glrefGetAttachedShaders :: IORef FuntypeGetAttachedShaders+glrefGetAttachedShaders = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetAttachedShaders #-}+glGetAttachedShaders :: FuntypeGetAttachedShaders+glGetAttachedShaders = unsafePerformIO $ readIORef glrefGetAttachedShaders+{-# INLINE glGetAttachedShaders #-}+type FuntypeGetAttribLocation =+    GLuint ->+    Ptr (GLchar) ->+    IO ( GLint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetAttribLocation :: FunPtr FuntypeGetAttribLocation -> FuntypeGetAttribLocation+glrefGetAttribLocation :: IORef FuntypeGetAttribLocation+glrefGetAttribLocation = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetAttribLocation #-}+glGetAttribLocation :: FuntypeGetAttribLocation+glGetAttribLocation = unsafePerformIO $ readIORef glrefGetAttribLocation+{-# INLINE glGetAttribLocation #-}+type FuntypeGetProgramiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetProgramiv :: FunPtr FuntypeGetProgramiv -> FuntypeGetProgramiv+glrefGetProgramiv :: IORef FuntypeGetProgramiv+glrefGetProgramiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetProgramiv #-}+glGetProgramiv :: FuntypeGetProgramiv+glGetProgramiv = unsafePerformIO $ readIORef glrefGetProgramiv+{-# INLINE glGetProgramiv #-}+type FuntypeGetProgramInfoLog =+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetProgramInfoLog :: FunPtr FuntypeGetProgramInfoLog -> FuntypeGetProgramInfoLog+glrefGetProgramInfoLog :: IORef FuntypeGetProgramInfoLog+glrefGetProgramInfoLog = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetProgramInfoLog #-}+glGetProgramInfoLog :: FuntypeGetProgramInfoLog+glGetProgramInfoLog = unsafePerformIO $ readIORef glrefGetProgramInfoLog+{-# INLINE glGetProgramInfoLog #-}+type FuntypeGetShaderiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetShaderiv :: FunPtr FuntypeGetShaderiv -> FuntypeGetShaderiv+glrefGetShaderiv :: IORef FuntypeGetShaderiv+glrefGetShaderiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetShaderiv #-}+glGetShaderiv :: FuntypeGetShaderiv+glGetShaderiv = unsafePerformIO $ readIORef glrefGetShaderiv+{-# INLINE glGetShaderiv #-}+type FuntypeGetShaderInfoLog =+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetShaderInfoLog :: FunPtr FuntypeGetShaderInfoLog -> FuntypeGetShaderInfoLog+glrefGetShaderInfoLog :: IORef FuntypeGetShaderInfoLog+glrefGetShaderInfoLog = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetShaderInfoLog #-}+glGetShaderInfoLog :: FuntypeGetShaderInfoLog+glGetShaderInfoLog = unsafePerformIO $ readIORef glrefGetShaderInfoLog+{-# INLINE glGetShaderInfoLog #-}+type FuntypeGetShaderSource =+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetShaderSource :: FunPtr FuntypeGetShaderSource -> FuntypeGetShaderSource+glrefGetShaderSource :: IORef FuntypeGetShaderSource+glrefGetShaderSource = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetShaderSource #-}+glGetShaderSource :: FuntypeGetShaderSource+glGetShaderSource = unsafePerformIO $ readIORef glrefGetShaderSource+{-# INLINE glGetShaderSource #-}+type FuntypeGetUniformLocation =+    GLuint ->+    Ptr (GLchar) ->+    IO ( GLint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetUniformLocation :: FunPtr FuntypeGetUniformLocation -> FuntypeGetUniformLocation+glrefGetUniformLocation :: IORef FuntypeGetUniformLocation+glrefGetUniformLocation = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetUniformLocation #-}+glGetUniformLocation :: FuntypeGetUniformLocation+glGetUniformLocation = unsafePerformIO $ readIORef glrefGetUniformLocation+{-# INLINE glGetUniformLocation #-}+type FuntypeGetUniformfv =+    GLuint ->+    GLint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetUniformfv :: FunPtr FuntypeGetUniformfv -> FuntypeGetUniformfv+glrefGetUniformfv :: IORef FuntypeGetUniformfv+glrefGetUniformfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetUniformfv #-}+glGetUniformfv :: FuntypeGetUniformfv+glGetUniformfv = unsafePerformIO $ readIORef glrefGetUniformfv+{-# INLINE glGetUniformfv #-}+type FuntypeGetUniformiv =+    GLuint ->+    GLint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetUniformiv :: FunPtr FuntypeGetUniformiv -> FuntypeGetUniformiv+glrefGetUniformiv :: IORef FuntypeGetUniformiv+glrefGetUniformiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetUniformiv #-}+glGetUniformiv :: FuntypeGetUniformiv+glGetUniformiv = unsafePerformIO $ readIORef glrefGetUniformiv+{-# INLINE glGetUniformiv #-}+type FuntypeGetVertexAttribdv =+    GLuint ->+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexAttribdv :: FunPtr FuntypeGetVertexAttribdv -> FuntypeGetVertexAttribdv+glrefGetVertexAttribdv :: IORef FuntypeGetVertexAttribdv+glrefGetVertexAttribdv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexAttribdv #-}+glGetVertexAttribdv :: FuntypeGetVertexAttribdv+glGetVertexAttribdv = unsafePerformIO $ readIORef glrefGetVertexAttribdv+{-# INLINE glGetVertexAttribdv #-}+type FuntypeGetVertexAttribfv =+    GLuint ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexAttribfv :: FunPtr FuntypeGetVertexAttribfv -> FuntypeGetVertexAttribfv+glrefGetVertexAttribfv :: IORef FuntypeGetVertexAttribfv+glrefGetVertexAttribfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexAttribfv #-}+glGetVertexAttribfv :: FuntypeGetVertexAttribfv+glGetVertexAttribfv = unsafePerformIO $ readIORef glrefGetVertexAttribfv+{-# INLINE glGetVertexAttribfv #-}+type FuntypeGetVertexAttribiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexAttribiv :: FunPtr FuntypeGetVertexAttribiv -> FuntypeGetVertexAttribiv+glrefGetVertexAttribiv :: IORef FuntypeGetVertexAttribiv+glrefGetVertexAttribiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexAttribiv #-}+glGetVertexAttribiv :: FuntypeGetVertexAttribiv+glGetVertexAttribiv = unsafePerformIO $ readIORef glrefGetVertexAttribiv+{-# INLINE glGetVertexAttribiv #-}+type FuntypeGetVertexAttribPointerv =+    GLuint ->+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexAttribPointerv :: FunPtr FuntypeGetVertexAttribPointerv -> FuntypeGetVertexAttribPointerv+glrefGetVertexAttribPointerv :: IORef FuntypeGetVertexAttribPointerv+glrefGetVertexAttribPointerv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexAttribPointerv #-}+glGetVertexAttribPointerv :: FuntypeGetVertexAttribPointerv+glGetVertexAttribPointerv = unsafePerformIO $ readIORef glrefGetVertexAttribPointerv+{-# INLINE glGetVertexAttribPointerv #-}+type FuntypeIsProgram =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsProgram :: FunPtr FuntypeIsProgram -> FuntypeIsProgram+glrefIsProgram :: IORef FuntypeIsProgram+glrefIsProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsProgram #-}+glIsProgram :: FuntypeIsProgram+glIsProgram = unsafePerformIO $ readIORef glrefIsProgram+{-# INLINE glIsProgram #-}+type FuntypeIsShader =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsShader :: FunPtr FuntypeIsShader -> FuntypeIsShader+glrefIsShader :: IORef FuntypeIsShader+glrefIsShader = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsShader #-}+glIsShader :: FuntypeIsShader+glIsShader = unsafePerformIO $ readIORef glrefIsShader+{-# INLINE glIsShader #-}+type FuntypeLinkProgram =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynLinkProgram :: FunPtr FuntypeLinkProgram -> FuntypeLinkProgram+glrefLinkProgram :: IORef FuntypeLinkProgram+glrefLinkProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefLinkProgram #-}+glLinkProgram :: FuntypeLinkProgram+glLinkProgram = unsafePerformIO $ readIORef glrefLinkProgram+{-# INLINE glLinkProgram #-}+type FuntypeShaderSource =+    GLuint ->+    GLsizei ->+    Ptr (Ptr (GLchar)) ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynShaderSource :: FunPtr FuntypeShaderSource -> FuntypeShaderSource+glrefShaderSource :: IORef FuntypeShaderSource+glrefShaderSource = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefShaderSource #-}+glShaderSource :: FuntypeShaderSource+glShaderSource = unsafePerformIO $ readIORef glrefShaderSource+{-# INLINE glShaderSource #-}+type FuntypeUseProgram =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUseProgram :: FunPtr FuntypeUseProgram -> FuntypeUseProgram+glrefUseProgram :: IORef FuntypeUseProgram+glrefUseProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUseProgram #-}+glUseProgram :: FuntypeUseProgram+glUseProgram = unsafePerformIO $ readIORef glrefUseProgram+{-# INLINE glUseProgram #-}+type FuntypeUniform1f =+    GLint ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform1f :: FunPtr FuntypeUniform1f -> FuntypeUniform1f+glrefUniform1f :: IORef FuntypeUniform1f+glrefUniform1f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform1f #-}+glUniform1f :: FuntypeUniform1f+glUniform1f = unsafePerformIO $ readIORef glrefUniform1f+{-# INLINE glUniform1f #-}+type FuntypeUniform2f =+    GLint ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform2f :: FunPtr FuntypeUniform2f -> FuntypeUniform2f+glrefUniform2f :: IORef FuntypeUniform2f+glrefUniform2f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform2f #-}+glUniform2f :: FuntypeUniform2f+glUniform2f = unsafePerformIO $ readIORef glrefUniform2f+{-# INLINE glUniform2f #-}+type FuntypeUniform3f =+    GLint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform3f :: FunPtr FuntypeUniform3f -> FuntypeUniform3f+glrefUniform3f :: IORef FuntypeUniform3f+glrefUniform3f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform3f #-}+glUniform3f :: FuntypeUniform3f+glUniform3f = unsafePerformIO $ readIORef glrefUniform3f+{-# INLINE glUniform3f #-}+type FuntypeUniform4f =+    GLint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform4f :: FunPtr FuntypeUniform4f -> FuntypeUniform4f+glrefUniform4f :: IORef FuntypeUniform4f+glrefUniform4f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform4f #-}+glUniform4f :: FuntypeUniform4f+glUniform4f = unsafePerformIO $ readIORef glrefUniform4f+{-# INLINE glUniform4f #-}+type FuntypeUniform1i =+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform1i :: FunPtr FuntypeUniform1i -> FuntypeUniform1i+glrefUniform1i :: IORef FuntypeUniform1i+glrefUniform1i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform1i #-}+glUniform1i :: FuntypeUniform1i+glUniform1i = unsafePerformIO $ readIORef glrefUniform1i+{-# INLINE glUniform1i #-}+type FuntypeUniform2i =+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform2i :: FunPtr FuntypeUniform2i -> FuntypeUniform2i+glrefUniform2i :: IORef FuntypeUniform2i+glrefUniform2i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform2i #-}+glUniform2i :: FuntypeUniform2i+glUniform2i = unsafePerformIO $ readIORef glrefUniform2i+{-# INLINE glUniform2i #-}+type FuntypeUniform3i =+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform3i :: FunPtr FuntypeUniform3i -> FuntypeUniform3i+glrefUniform3i :: IORef FuntypeUniform3i+glrefUniform3i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform3i #-}+glUniform3i :: FuntypeUniform3i+glUniform3i = unsafePerformIO $ readIORef glrefUniform3i+{-# INLINE glUniform3i #-}+type FuntypeUniform4i =+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform4i :: FunPtr FuntypeUniform4i -> FuntypeUniform4i+glrefUniform4i :: IORef FuntypeUniform4i+glrefUniform4i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform4i #-}+glUniform4i :: FuntypeUniform4i+glUniform4i = unsafePerformIO $ readIORef glrefUniform4i+{-# INLINE glUniform4i #-}+type FuntypeUniform1fv =+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform1fv :: FunPtr FuntypeUniform1fv -> FuntypeUniform1fv+glrefUniform1fv :: IORef FuntypeUniform1fv+glrefUniform1fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform1fv #-}+glUniform1fv :: FuntypeUniform1fv+glUniform1fv = unsafePerformIO $ readIORef glrefUniform1fv+{-# INLINE glUniform1fv #-}+type FuntypeUniform2fv =+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform2fv :: FunPtr FuntypeUniform2fv -> FuntypeUniform2fv+glrefUniform2fv :: IORef FuntypeUniform2fv+glrefUniform2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform2fv #-}+glUniform2fv :: FuntypeUniform2fv+glUniform2fv = unsafePerformIO $ readIORef glrefUniform2fv+{-# INLINE glUniform2fv #-}+type FuntypeUniform3fv =+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform3fv :: FunPtr FuntypeUniform3fv -> FuntypeUniform3fv+glrefUniform3fv :: IORef FuntypeUniform3fv+glrefUniform3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform3fv #-}+glUniform3fv :: FuntypeUniform3fv+glUniform3fv = unsafePerformIO $ readIORef glrefUniform3fv+{-# INLINE glUniform3fv #-}+type FuntypeUniform4fv =+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform4fv :: FunPtr FuntypeUniform4fv -> FuntypeUniform4fv+glrefUniform4fv :: IORef FuntypeUniform4fv+glrefUniform4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform4fv #-}+glUniform4fv :: FuntypeUniform4fv+glUniform4fv = unsafePerformIO $ readIORef glrefUniform4fv+{-# INLINE glUniform4fv #-}+type FuntypeUniform1iv =+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform1iv :: FunPtr FuntypeUniform1iv -> FuntypeUniform1iv+glrefUniform1iv :: IORef FuntypeUniform1iv+glrefUniform1iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform1iv #-}+glUniform1iv :: FuntypeUniform1iv+glUniform1iv = unsafePerformIO $ readIORef glrefUniform1iv+{-# INLINE glUniform1iv #-}+type FuntypeUniform2iv =+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform2iv :: FunPtr FuntypeUniform2iv -> FuntypeUniform2iv+glrefUniform2iv :: IORef FuntypeUniform2iv+glrefUniform2iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform2iv #-}+glUniform2iv :: FuntypeUniform2iv+glUniform2iv = unsafePerformIO $ readIORef glrefUniform2iv+{-# INLINE glUniform2iv #-}+type FuntypeUniform3iv =+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform3iv :: FunPtr FuntypeUniform3iv -> FuntypeUniform3iv+glrefUniform3iv :: IORef FuntypeUniform3iv+glrefUniform3iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform3iv #-}+glUniform3iv :: FuntypeUniform3iv+glUniform3iv = unsafePerformIO $ readIORef glrefUniform3iv+{-# INLINE glUniform3iv #-}+type FuntypeUniform4iv =+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform4iv :: FunPtr FuntypeUniform4iv -> FuntypeUniform4iv+glrefUniform4iv :: IORef FuntypeUniform4iv+glrefUniform4iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform4iv #-}+glUniform4iv :: FuntypeUniform4iv+glUniform4iv = unsafePerformIO $ readIORef glrefUniform4iv+{-# INLINE glUniform4iv #-}+type FuntypeUniformMatrix2fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix2fv :: FunPtr FuntypeUniformMatrix2fv -> FuntypeUniformMatrix2fv+glrefUniformMatrix2fv :: IORef FuntypeUniformMatrix2fv+glrefUniformMatrix2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix2fv #-}+glUniformMatrix2fv :: FuntypeUniformMatrix2fv+glUniformMatrix2fv = unsafePerformIO $ readIORef glrefUniformMatrix2fv+{-# INLINE glUniformMatrix2fv #-}+type FuntypeUniformMatrix3fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix3fv :: FunPtr FuntypeUniformMatrix3fv -> FuntypeUniformMatrix3fv+glrefUniformMatrix3fv :: IORef FuntypeUniformMatrix3fv+glrefUniformMatrix3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix3fv #-}+glUniformMatrix3fv :: FuntypeUniformMatrix3fv+glUniformMatrix3fv = unsafePerformIO $ readIORef glrefUniformMatrix3fv+{-# INLINE glUniformMatrix3fv #-}+type FuntypeUniformMatrix4fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix4fv :: FunPtr FuntypeUniformMatrix4fv -> FuntypeUniformMatrix4fv+glrefUniformMatrix4fv :: IORef FuntypeUniformMatrix4fv+glrefUniformMatrix4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix4fv #-}+glUniformMatrix4fv :: FuntypeUniformMatrix4fv+glUniformMatrix4fv = unsafePerformIO $ readIORef glrefUniformMatrix4fv+{-# INLINE glUniformMatrix4fv #-}+type FuntypeValidateProgram =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynValidateProgram :: FunPtr FuntypeValidateProgram -> FuntypeValidateProgram+glrefValidateProgram :: IORef FuntypeValidateProgram+glrefValidateProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefValidateProgram #-}+glValidateProgram :: FuntypeValidateProgram+glValidateProgram = unsafePerformIO $ readIORef glrefValidateProgram+{-# INLINE glValidateProgram #-}+type FuntypeVertexAttrib1d =+    GLuint ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib1d :: FunPtr FuntypeVertexAttrib1d -> FuntypeVertexAttrib1d+glrefVertexAttrib1d :: IORef FuntypeVertexAttrib1d+glrefVertexAttrib1d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib1d #-}+glVertexAttrib1d :: FuntypeVertexAttrib1d+glVertexAttrib1d = unsafePerformIO $ readIORef glrefVertexAttrib1d+{-# INLINE glVertexAttrib1d #-}+type FuntypeVertexAttrib1dv =+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib1dv :: FunPtr FuntypeVertexAttrib1dv -> FuntypeVertexAttrib1dv+glrefVertexAttrib1dv :: IORef FuntypeVertexAttrib1dv+glrefVertexAttrib1dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib1dv #-}+glVertexAttrib1dv :: FuntypeVertexAttrib1dv+glVertexAttrib1dv = unsafePerformIO $ readIORef glrefVertexAttrib1dv+{-# INLINE glVertexAttrib1dv #-}+type FuntypeVertexAttrib1f =+    GLuint ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib1f :: FunPtr FuntypeVertexAttrib1f -> FuntypeVertexAttrib1f+glrefVertexAttrib1f :: IORef FuntypeVertexAttrib1f+glrefVertexAttrib1f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib1f #-}+glVertexAttrib1f :: FuntypeVertexAttrib1f+glVertexAttrib1f = unsafePerformIO $ readIORef glrefVertexAttrib1f+{-# INLINE glVertexAttrib1f #-}+type FuntypeVertexAttrib1fv =+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib1fv :: FunPtr FuntypeVertexAttrib1fv -> FuntypeVertexAttrib1fv+glrefVertexAttrib1fv :: IORef FuntypeVertexAttrib1fv+glrefVertexAttrib1fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib1fv #-}+glVertexAttrib1fv :: FuntypeVertexAttrib1fv+glVertexAttrib1fv = unsafePerformIO $ readIORef glrefVertexAttrib1fv+{-# INLINE glVertexAttrib1fv #-}+type FuntypeVertexAttrib1s =+    GLuint ->+    GLshort ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib1s :: FunPtr FuntypeVertexAttrib1s -> FuntypeVertexAttrib1s+glrefVertexAttrib1s :: IORef FuntypeVertexAttrib1s+glrefVertexAttrib1s = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib1s #-}+glVertexAttrib1s :: FuntypeVertexAttrib1s+glVertexAttrib1s = unsafePerformIO $ readIORef glrefVertexAttrib1s+{-# INLINE glVertexAttrib1s #-}+type FuntypeVertexAttrib1sv =+    GLuint ->+    Ptr (GLshort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib1sv :: FunPtr FuntypeVertexAttrib1sv -> FuntypeVertexAttrib1sv+glrefVertexAttrib1sv :: IORef FuntypeVertexAttrib1sv+glrefVertexAttrib1sv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib1sv #-}+glVertexAttrib1sv :: FuntypeVertexAttrib1sv+glVertexAttrib1sv = unsafePerformIO $ readIORef glrefVertexAttrib1sv+{-# INLINE glVertexAttrib1sv #-}+type FuntypeVertexAttrib2d =+    GLuint ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib2d :: FunPtr FuntypeVertexAttrib2d -> FuntypeVertexAttrib2d+glrefVertexAttrib2d :: IORef FuntypeVertexAttrib2d+glrefVertexAttrib2d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib2d #-}+glVertexAttrib2d :: FuntypeVertexAttrib2d+glVertexAttrib2d = unsafePerformIO $ readIORef glrefVertexAttrib2d+{-# INLINE glVertexAttrib2d #-}+type FuntypeVertexAttrib2dv =+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib2dv :: FunPtr FuntypeVertexAttrib2dv -> FuntypeVertexAttrib2dv+glrefVertexAttrib2dv :: IORef FuntypeVertexAttrib2dv+glrefVertexAttrib2dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib2dv #-}+glVertexAttrib2dv :: FuntypeVertexAttrib2dv+glVertexAttrib2dv = unsafePerformIO $ readIORef glrefVertexAttrib2dv+{-# INLINE glVertexAttrib2dv #-}+type FuntypeVertexAttrib2f =+    GLuint ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib2f :: FunPtr FuntypeVertexAttrib2f -> FuntypeVertexAttrib2f+glrefVertexAttrib2f :: IORef FuntypeVertexAttrib2f+glrefVertexAttrib2f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib2f #-}+glVertexAttrib2f :: FuntypeVertexAttrib2f+glVertexAttrib2f = unsafePerformIO $ readIORef glrefVertexAttrib2f+{-# INLINE glVertexAttrib2f #-}+type FuntypeVertexAttrib2fv =+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib2fv :: FunPtr FuntypeVertexAttrib2fv -> FuntypeVertexAttrib2fv+glrefVertexAttrib2fv :: IORef FuntypeVertexAttrib2fv+glrefVertexAttrib2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib2fv #-}+glVertexAttrib2fv :: FuntypeVertexAttrib2fv+glVertexAttrib2fv = unsafePerformIO $ readIORef glrefVertexAttrib2fv+{-# INLINE glVertexAttrib2fv #-}+type FuntypeVertexAttrib2s =+    GLuint ->+    GLshort ->+    GLshort ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib2s :: FunPtr FuntypeVertexAttrib2s -> FuntypeVertexAttrib2s+glrefVertexAttrib2s :: IORef FuntypeVertexAttrib2s+glrefVertexAttrib2s = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib2s #-}+glVertexAttrib2s :: FuntypeVertexAttrib2s+glVertexAttrib2s = unsafePerformIO $ readIORef glrefVertexAttrib2s+{-# INLINE glVertexAttrib2s #-}+type FuntypeVertexAttrib2sv =+    GLuint ->+    Ptr (GLshort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib2sv :: FunPtr FuntypeVertexAttrib2sv -> FuntypeVertexAttrib2sv+glrefVertexAttrib2sv :: IORef FuntypeVertexAttrib2sv+glrefVertexAttrib2sv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib2sv #-}+glVertexAttrib2sv :: FuntypeVertexAttrib2sv+glVertexAttrib2sv = unsafePerformIO $ readIORef glrefVertexAttrib2sv+{-# INLINE glVertexAttrib2sv #-}+type FuntypeVertexAttrib3d =+    GLuint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib3d :: FunPtr FuntypeVertexAttrib3d -> FuntypeVertexAttrib3d+glrefVertexAttrib3d :: IORef FuntypeVertexAttrib3d+glrefVertexAttrib3d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib3d #-}+glVertexAttrib3d :: FuntypeVertexAttrib3d+glVertexAttrib3d = unsafePerformIO $ readIORef glrefVertexAttrib3d+{-# INLINE glVertexAttrib3d #-}+type FuntypeVertexAttrib3dv =+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib3dv :: FunPtr FuntypeVertexAttrib3dv -> FuntypeVertexAttrib3dv+glrefVertexAttrib3dv :: IORef FuntypeVertexAttrib3dv+glrefVertexAttrib3dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib3dv #-}+glVertexAttrib3dv :: FuntypeVertexAttrib3dv+glVertexAttrib3dv = unsafePerformIO $ readIORef glrefVertexAttrib3dv+{-# INLINE glVertexAttrib3dv #-}+type FuntypeVertexAttrib3f =+    GLuint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib3f :: FunPtr FuntypeVertexAttrib3f -> FuntypeVertexAttrib3f+glrefVertexAttrib3f :: IORef FuntypeVertexAttrib3f+glrefVertexAttrib3f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib3f #-}+glVertexAttrib3f :: FuntypeVertexAttrib3f+glVertexAttrib3f = unsafePerformIO $ readIORef glrefVertexAttrib3f+{-# INLINE glVertexAttrib3f #-}+type FuntypeVertexAttrib3fv =+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib3fv :: FunPtr FuntypeVertexAttrib3fv -> FuntypeVertexAttrib3fv+glrefVertexAttrib3fv :: IORef FuntypeVertexAttrib3fv+glrefVertexAttrib3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib3fv #-}+glVertexAttrib3fv :: FuntypeVertexAttrib3fv+glVertexAttrib3fv = unsafePerformIO $ readIORef glrefVertexAttrib3fv+{-# INLINE glVertexAttrib3fv #-}+type FuntypeVertexAttrib3s =+    GLuint ->+    GLshort ->+    GLshort ->+    GLshort ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib3s :: FunPtr FuntypeVertexAttrib3s -> FuntypeVertexAttrib3s+glrefVertexAttrib3s :: IORef FuntypeVertexAttrib3s+glrefVertexAttrib3s = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib3s #-}+glVertexAttrib3s :: FuntypeVertexAttrib3s+glVertexAttrib3s = unsafePerformIO $ readIORef glrefVertexAttrib3s+{-# INLINE glVertexAttrib3s #-}+type FuntypeVertexAttrib3sv =+    GLuint ->+    Ptr (GLshort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib3sv :: FunPtr FuntypeVertexAttrib3sv -> FuntypeVertexAttrib3sv+glrefVertexAttrib3sv :: IORef FuntypeVertexAttrib3sv+glrefVertexAttrib3sv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib3sv #-}+glVertexAttrib3sv :: FuntypeVertexAttrib3sv+glVertexAttrib3sv = unsafePerformIO $ readIORef glrefVertexAttrib3sv+{-# INLINE glVertexAttrib3sv #-}+type FuntypeVertexAttrib4Nbv =+    GLuint ->+    Ptr (GLbyte) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Nbv :: FunPtr FuntypeVertexAttrib4Nbv -> FuntypeVertexAttrib4Nbv+glrefVertexAttrib4Nbv :: IORef FuntypeVertexAttrib4Nbv+glrefVertexAttrib4Nbv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Nbv #-}+glVertexAttrib4Nbv :: FuntypeVertexAttrib4Nbv+glVertexAttrib4Nbv = unsafePerformIO $ readIORef glrefVertexAttrib4Nbv+{-# INLINE glVertexAttrib4Nbv #-}+type FuntypeVertexAttrib4Niv =+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Niv :: FunPtr FuntypeVertexAttrib4Niv -> FuntypeVertexAttrib4Niv+glrefVertexAttrib4Niv :: IORef FuntypeVertexAttrib4Niv+glrefVertexAttrib4Niv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Niv #-}+glVertexAttrib4Niv :: FuntypeVertexAttrib4Niv+glVertexAttrib4Niv = unsafePerformIO $ readIORef glrefVertexAttrib4Niv+{-# INLINE glVertexAttrib4Niv #-}+type FuntypeVertexAttrib4Nsv =+    GLuint ->+    Ptr (GLshort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Nsv :: FunPtr FuntypeVertexAttrib4Nsv -> FuntypeVertexAttrib4Nsv+glrefVertexAttrib4Nsv :: IORef FuntypeVertexAttrib4Nsv+glrefVertexAttrib4Nsv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Nsv #-}+glVertexAttrib4Nsv :: FuntypeVertexAttrib4Nsv+glVertexAttrib4Nsv = unsafePerformIO $ readIORef glrefVertexAttrib4Nsv+{-# INLINE glVertexAttrib4Nsv #-}+type FuntypeVertexAttrib4Nub =+    GLuint ->+    GLubyte ->+    GLubyte ->+    GLubyte ->+    GLubyte ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Nub :: FunPtr FuntypeVertexAttrib4Nub -> FuntypeVertexAttrib4Nub+glrefVertexAttrib4Nub :: IORef FuntypeVertexAttrib4Nub+glrefVertexAttrib4Nub = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Nub #-}+glVertexAttrib4Nub :: FuntypeVertexAttrib4Nub+glVertexAttrib4Nub = unsafePerformIO $ readIORef glrefVertexAttrib4Nub+{-# INLINE glVertexAttrib4Nub #-}+type FuntypeVertexAttrib4Nubv =+    GLuint ->+    Ptr (GLubyte) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Nubv :: FunPtr FuntypeVertexAttrib4Nubv -> FuntypeVertexAttrib4Nubv+glrefVertexAttrib4Nubv :: IORef FuntypeVertexAttrib4Nubv+glrefVertexAttrib4Nubv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Nubv #-}+glVertexAttrib4Nubv :: FuntypeVertexAttrib4Nubv+glVertexAttrib4Nubv = unsafePerformIO $ readIORef glrefVertexAttrib4Nubv+{-# INLINE glVertexAttrib4Nubv #-}+type FuntypeVertexAttrib4Nuiv =+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Nuiv :: FunPtr FuntypeVertexAttrib4Nuiv -> FuntypeVertexAttrib4Nuiv+glrefVertexAttrib4Nuiv :: IORef FuntypeVertexAttrib4Nuiv+glrefVertexAttrib4Nuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Nuiv #-}+glVertexAttrib4Nuiv :: FuntypeVertexAttrib4Nuiv+glVertexAttrib4Nuiv = unsafePerformIO $ readIORef glrefVertexAttrib4Nuiv+{-# INLINE glVertexAttrib4Nuiv #-}+type FuntypeVertexAttrib4Nusv =+    GLuint ->+    Ptr (GLushort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4Nusv :: FunPtr FuntypeVertexAttrib4Nusv -> FuntypeVertexAttrib4Nusv+glrefVertexAttrib4Nusv :: IORef FuntypeVertexAttrib4Nusv+glrefVertexAttrib4Nusv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4Nusv #-}+glVertexAttrib4Nusv :: FuntypeVertexAttrib4Nusv+glVertexAttrib4Nusv = unsafePerformIO $ readIORef glrefVertexAttrib4Nusv+{-# INLINE glVertexAttrib4Nusv #-}+type FuntypeVertexAttrib4bv =+    GLuint ->+    Ptr (GLbyte) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4bv :: FunPtr FuntypeVertexAttrib4bv -> FuntypeVertexAttrib4bv+glrefVertexAttrib4bv :: IORef FuntypeVertexAttrib4bv+glrefVertexAttrib4bv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4bv #-}+glVertexAttrib4bv :: FuntypeVertexAttrib4bv+glVertexAttrib4bv = unsafePerformIO $ readIORef glrefVertexAttrib4bv+{-# INLINE glVertexAttrib4bv #-}+type FuntypeVertexAttrib4d =+    GLuint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4d :: FunPtr FuntypeVertexAttrib4d -> FuntypeVertexAttrib4d+glrefVertexAttrib4d :: IORef FuntypeVertexAttrib4d+glrefVertexAttrib4d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4d #-}+glVertexAttrib4d :: FuntypeVertexAttrib4d+glVertexAttrib4d = unsafePerformIO $ readIORef glrefVertexAttrib4d+{-# INLINE glVertexAttrib4d #-}+type FuntypeVertexAttrib4dv =+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4dv :: FunPtr FuntypeVertexAttrib4dv -> FuntypeVertexAttrib4dv+glrefVertexAttrib4dv :: IORef FuntypeVertexAttrib4dv+glrefVertexAttrib4dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4dv #-}+glVertexAttrib4dv :: FuntypeVertexAttrib4dv+glVertexAttrib4dv = unsafePerformIO $ readIORef glrefVertexAttrib4dv+{-# INLINE glVertexAttrib4dv #-}+type FuntypeVertexAttrib4f =+    GLuint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4f :: FunPtr FuntypeVertexAttrib4f -> FuntypeVertexAttrib4f+glrefVertexAttrib4f :: IORef FuntypeVertexAttrib4f+glrefVertexAttrib4f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4f #-}+glVertexAttrib4f :: FuntypeVertexAttrib4f+glVertexAttrib4f = unsafePerformIO $ readIORef glrefVertexAttrib4f+{-# INLINE glVertexAttrib4f #-}+type FuntypeVertexAttrib4fv =+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4fv :: FunPtr FuntypeVertexAttrib4fv -> FuntypeVertexAttrib4fv+glrefVertexAttrib4fv :: IORef FuntypeVertexAttrib4fv+glrefVertexAttrib4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4fv #-}+glVertexAttrib4fv :: FuntypeVertexAttrib4fv+glVertexAttrib4fv = unsafePerformIO $ readIORef glrefVertexAttrib4fv+{-# INLINE glVertexAttrib4fv #-}+type FuntypeVertexAttrib4iv =+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4iv :: FunPtr FuntypeVertexAttrib4iv -> FuntypeVertexAttrib4iv+glrefVertexAttrib4iv :: IORef FuntypeVertexAttrib4iv+glrefVertexAttrib4iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4iv #-}+glVertexAttrib4iv :: FuntypeVertexAttrib4iv+glVertexAttrib4iv = unsafePerformIO $ readIORef glrefVertexAttrib4iv+{-# INLINE glVertexAttrib4iv #-}+type FuntypeVertexAttrib4s =+    GLuint ->+    GLshort ->+    GLshort ->+    GLshort ->+    GLshort ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4s :: FunPtr FuntypeVertexAttrib4s -> FuntypeVertexAttrib4s+glrefVertexAttrib4s :: IORef FuntypeVertexAttrib4s+glrefVertexAttrib4s = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4s #-}+glVertexAttrib4s :: FuntypeVertexAttrib4s+glVertexAttrib4s = unsafePerformIO $ readIORef glrefVertexAttrib4s+{-# INLINE glVertexAttrib4s #-}+type FuntypeVertexAttrib4sv =+    GLuint ->+    Ptr (GLshort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4sv :: FunPtr FuntypeVertexAttrib4sv -> FuntypeVertexAttrib4sv+glrefVertexAttrib4sv :: IORef FuntypeVertexAttrib4sv+glrefVertexAttrib4sv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4sv #-}+glVertexAttrib4sv :: FuntypeVertexAttrib4sv+glVertexAttrib4sv = unsafePerformIO $ readIORef glrefVertexAttrib4sv+{-# INLINE glVertexAttrib4sv #-}+type FuntypeVertexAttrib4ubv =+    GLuint ->+    Ptr (GLubyte) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4ubv :: FunPtr FuntypeVertexAttrib4ubv -> FuntypeVertexAttrib4ubv+glrefVertexAttrib4ubv :: IORef FuntypeVertexAttrib4ubv+glrefVertexAttrib4ubv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4ubv #-}+glVertexAttrib4ubv :: FuntypeVertexAttrib4ubv+glVertexAttrib4ubv = unsafePerformIO $ readIORef glrefVertexAttrib4ubv+{-# INLINE glVertexAttrib4ubv #-}+type FuntypeVertexAttrib4uiv =+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4uiv :: FunPtr FuntypeVertexAttrib4uiv -> FuntypeVertexAttrib4uiv+glrefVertexAttrib4uiv :: IORef FuntypeVertexAttrib4uiv+glrefVertexAttrib4uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4uiv #-}+glVertexAttrib4uiv :: FuntypeVertexAttrib4uiv+glVertexAttrib4uiv = unsafePerformIO $ readIORef glrefVertexAttrib4uiv+{-# INLINE glVertexAttrib4uiv #-}+type FuntypeVertexAttrib4usv =+    GLuint ->+    Ptr (GLushort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttrib4usv :: FunPtr FuntypeVertexAttrib4usv -> FuntypeVertexAttrib4usv+glrefVertexAttrib4usv :: IORef FuntypeVertexAttrib4usv+glrefVertexAttrib4usv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttrib4usv #-}+glVertexAttrib4usv :: FuntypeVertexAttrib4usv+glVertexAttrib4usv = unsafePerformIO $ readIORef glrefVertexAttrib4usv+{-# INLINE glVertexAttrib4usv #-}+type FuntypeVertexAttribPointer =+    GLuint ->+    GLint ->+    GLenum ->+    GLboolean ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribPointer :: FunPtr FuntypeVertexAttribPointer -> FuntypeVertexAttribPointer+glrefVertexAttribPointer :: IORef FuntypeVertexAttribPointer+glrefVertexAttribPointer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribPointer #-}+glVertexAttribPointer :: FuntypeVertexAttribPointer+glVertexAttribPointer = unsafePerformIO $ readIORef glrefVertexAttribPointer+{-# INLINE glVertexAttribPointer #-}++-- GL_VERSION_2_1++type FuntypeUniformMatrix2x3fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix2x3fv :: FunPtr FuntypeUniformMatrix2x3fv -> FuntypeUniformMatrix2x3fv+glrefUniformMatrix2x3fv :: IORef FuntypeUniformMatrix2x3fv+glrefUniformMatrix2x3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix2x3fv #-}+glUniformMatrix2x3fv :: FuntypeUniformMatrix2x3fv+glUniformMatrix2x3fv = unsafePerformIO $ readIORef glrefUniformMatrix2x3fv+{-# INLINE glUniformMatrix2x3fv #-}+type FuntypeUniformMatrix3x2fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix3x2fv :: FunPtr FuntypeUniformMatrix3x2fv -> FuntypeUniformMatrix3x2fv+glrefUniformMatrix3x2fv :: IORef FuntypeUniformMatrix3x2fv+glrefUniformMatrix3x2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix3x2fv #-}+glUniformMatrix3x2fv :: FuntypeUniformMatrix3x2fv+glUniformMatrix3x2fv = unsafePerformIO $ readIORef glrefUniformMatrix3x2fv+{-# INLINE glUniformMatrix3x2fv #-}+type FuntypeUniformMatrix2x4fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix2x4fv :: FunPtr FuntypeUniformMatrix2x4fv -> FuntypeUniformMatrix2x4fv+glrefUniformMatrix2x4fv :: IORef FuntypeUniformMatrix2x4fv+glrefUniformMatrix2x4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix2x4fv #-}+glUniformMatrix2x4fv :: FuntypeUniformMatrix2x4fv+glUniformMatrix2x4fv = unsafePerformIO $ readIORef glrefUniformMatrix2x4fv+{-# INLINE glUniformMatrix2x4fv #-}+type FuntypeUniformMatrix4x2fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix4x2fv :: FunPtr FuntypeUniformMatrix4x2fv -> FuntypeUniformMatrix4x2fv+glrefUniformMatrix4x2fv :: IORef FuntypeUniformMatrix4x2fv+glrefUniformMatrix4x2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix4x2fv #-}+glUniformMatrix4x2fv :: FuntypeUniformMatrix4x2fv+glUniformMatrix4x2fv = unsafePerformIO $ readIORef glrefUniformMatrix4x2fv+{-# INLINE glUniformMatrix4x2fv #-}+type FuntypeUniformMatrix3x4fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix3x4fv :: FunPtr FuntypeUniformMatrix3x4fv -> FuntypeUniformMatrix3x4fv+glrefUniformMatrix3x4fv :: IORef FuntypeUniformMatrix3x4fv+glrefUniformMatrix3x4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix3x4fv #-}+glUniformMatrix3x4fv :: FuntypeUniformMatrix3x4fv+glUniformMatrix3x4fv = unsafePerformIO $ readIORef glrefUniformMatrix3x4fv+{-# INLINE glUniformMatrix3x4fv #-}+type FuntypeUniformMatrix4x3fv =+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformMatrix4x3fv :: FunPtr FuntypeUniformMatrix4x3fv -> FuntypeUniformMatrix4x3fv+glrefUniformMatrix4x3fv :: IORef FuntypeUniformMatrix4x3fv+glrefUniformMatrix4x3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformMatrix4x3fv #-}+glUniformMatrix4x3fv :: FuntypeUniformMatrix4x3fv+glUniformMatrix4x3fv = unsafePerformIO $ readIORef glrefUniformMatrix4x3fv+{-# INLINE glUniformMatrix4x3fv #-}++-- GL_VERSION_3_0++type FuntypeColorMaski =+    GLuint ->+    GLboolean ->+    GLboolean ->+    GLboolean ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynColorMaski :: FunPtr FuntypeColorMaski -> FuntypeColorMaski+glrefColorMaski :: IORef FuntypeColorMaski+glrefColorMaski = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefColorMaski #-}+glColorMaski :: FuntypeColorMaski+glColorMaski = unsafePerformIO $ readIORef glrefColorMaski+{-# INLINE glColorMaski #-}+type FuntypeGetBooleani_v =+    GLenum ->+    GLuint ->+    Ptr (GLboolean) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBooleani_v :: FunPtr FuntypeGetBooleani_v -> FuntypeGetBooleani_v+glrefGetBooleani_v :: IORef FuntypeGetBooleani_v+glrefGetBooleani_v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBooleani_v #-}+glGetBooleani_v :: FuntypeGetBooleani_v+glGetBooleani_v = unsafePerformIO $ readIORef glrefGetBooleani_v+{-# INLINE glGetBooleani_v #-}+type FuntypeGetIntegeri_v =+    GLenum ->+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetIntegeri_v :: FunPtr FuntypeGetIntegeri_v -> FuntypeGetIntegeri_v+glrefGetIntegeri_v :: IORef FuntypeGetIntegeri_v+glrefGetIntegeri_v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetIntegeri_v #-}+glGetIntegeri_v :: FuntypeGetIntegeri_v+glGetIntegeri_v = unsafePerformIO $ readIORef glrefGetIntegeri_v+{-# INLINE glGetIntegeri_v #-}+type FuntypeEnablei =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnablei :: FunPtr FuntypeEnablei -> FuntypeEnablei+glrefEnablei :: IORef FuntypeEnablei+glrefEnablei = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnablei #-}+glEnablei :: FuntypeEnablei+glEnablei = unsafePerformIO $ readIORef glrefEnablei+{-# INLINE glEnablei #-}+type FuntypeDisablei =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisablei :: FunPtr FuntypeDisablei -> FuntypeDisablei+glrefDisablei :: IORef FuntypeDisablei+glrefDisablei = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisablei #-}+glDisablei :: FuntypeDisablei+glDisablei = unsafePerformIO $ readIORef glrefDisablei+{-# INLINE glDisablei #-}+type FuntypeIsEnabledi =+    GLenum ->+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsEnabledi :: FunPtr FuntypeIsEnabledi -> FuntypeIsEnabledi+glrefIsEnabledi :: IORef FuntypeIsEnabledi+glrefIsEnabledi = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsEnabledi #-}+glIsEnabledi :: FuntypeIsEnabledi+glIsEnabledi = unsafePerformIO $ readIORef glrefIsEnabledi+{-# INLINE glIsEnabledi #-}+type FuntypeBeginTransformFeedback =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBeginTransformFeedback :: FunPtr FuntypeBeginTransformFeedback -> FuntypeBeginTransformFeedback+glrefBeginTransformFeedback :: IORef FuntypeBeginTransformFeedback+glrefBeginTransformFeedback = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBeginTransformFeedback #-}+glBeginTransformFeedback :: FuntypeBeginTransformFeedback+glBeginTransformFeedback = unsafePerformIO $ readIORef glrefBeginTransformFeedback+{-# INLINE glBeginTransformFeedback #-}+type FuntypeEndTransformFeedback =+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEndTransformFeedback :: FunPtr FuntypeEndTransformFeedback -> FuntypeEndTransformFeedback+glrefEndTransformFeedback :: IORef FuntypeEndTransformFeedback+glrefEndTransformFeedback = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEndTransformFeedback #-}+glEndTransformFeedback :: FuntypeEndTransformFeedback+glEndTransformFeedback = unsafePerformIO $ readIORef glrefEndTransformFeedback+{-# INLINE glEndTransformFeedback #-}+type FuntypeBindBufferRange =+    GLenum ->+    GLuint ->+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindBufferRange :: FunPtr FuntypeBindBufferRange -> FuntypeBindBufferRange+glrefBindBufferRange :: IORef FuntypeBindBufferRange+glrefBindBufferRange = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindBufferRange #-}+glBindBufferRange :: FuntypeBindBufferRange+glBindBufferRange = unsafePerformIO $ readIORef glrefBindBufferRange+{-# INLINE glBindBufferRange #-}+type FuntypeBindBufferBase =+    GLenum ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindBufferBase :: FunPtr FuntypeBindBufferBase -> FuntypeBindBufferBase+glrefBindBufferBase :: IORef FuntypeBindBufferBase+glrefBindBufferBase = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindBufferBase #-}+glBindBufferBase :: FuntypeBindBufferBase+glBindBufferBase = unsafePerformIO $ readIORef glrefBindBufferBase+{-# INLINE glBindBufferBase #-}+type FuntypeTransformFeedbackVaryings =+    GLuint ->+    GLsizei ->+    Ptr (Ptr (GLchar)) ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTransformFeedbackVaryings :: FunPtr FuntypeTransformFeedbackVaryings -> FuntypeTransformFeedbackVaryings+glrefTransformFeedbackVaryings :: IORef FuntypeTransformFeedbackVaryings+glrefTransformFeedbackVaryings = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTransformFeedbackVaryings #-}+glTransformFeedbackVaryings :: FuntypeTransformFeedbackVaryings+glTransformFeedbackVaryings = unsafePerformIO $ readIORef glrefTransformFeedbackVaryings+{-# INLINE glTransformFeedbackVaryings #-}+type FuntypeGetTransformFeedbackVarying =+    GLuint ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLsizei) ->+    Ptr (GLenum) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTransformFeedbackVarying :: FunPtr FuntypeGetTransformFeedbackVarying -> FuntypeGetTransformFeedbackVarying+glrefGetTransformFeedbackVarying :: IORef FuntypeGetTransformFeedbackVarying+glrefGetTransformFeedbackVarying = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTransformFeedbackVarying #-}+glGetTransformFeedbackVarying :: FuntypeGetTransformFeedbackVarying+glGetTransformFeedbackVarying = unsafePerformIO $ readIORef glrefGetTransformFeedbackVarying+{-# INLINE glGetTransformFeedbackVarying #-}+type FuntypeClampColor =+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClampColor :: FunPtr FuntypeClampColor -> FuntypeClampColor+glrefClampColor :: IORef FuntypeClampColor+glrefClampColor = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClampColor #-}+glClampColor :: FuntypeClampColor+glClampColor = unsafePerformIO $ readIORef glrefClampColor+{-# INLINE glClampColor #-}+type FuntypeBeginConditionalRender =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBeginConditionalRender :: FunPtr FuntypeBeginConditionalRender -> FuntypeBeginConditionalRender+glrefBeginConditionalRender :: IORef FuntypeBeginConditionalRender+glrefBeginConditionalRender = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBeginConditionalRender #-}+glBeginConditionalRender :: FuntypeBeginConditionalRender+glBeginConditionalRender = unsafePerformIO $ readIORef glrefBeginConditionalRender+{-# INLINE glBeginConditionalRender #-}+type FuntypeEndConditionalRender =+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEndConditionalRender :: FunPtr FuntypeEndConditionalRender -> FuntypeEndConditionalRender+glrefEndConditionalRender :: IORef FuntypeEndConditionalRender+glrefEndConditionalRender = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEndConditionalRender #-}+glEndConditionalRender :: FuntypeEndConditionalRender+glEndConditionalRender = unsafePerformIO $ readIORef glrefEndConditionalRender+{-# INLINE glEndConditionalRender #-}+type FuntypeVertexAttribIPointer =+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribIPointer :: FunPtr FuntypeVertexAttribIPointer -> FuntypeVertexAttribIPointer+glrefVertexAttribIPointer :: IORef FuntypeVertexAttribIPointer+glrefVertexAttribIPointer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribIPointer #-}+glVertexAttribIPointer :: FuntypeVertexAttribIPointer+glVertexAttribIPointer = unsafePerformIO $ readIORef glrefVertexAttribIPointer+{-# INLINE glVertexAttribIPointer #-}+type FuntypeGetVertexAttribIiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexAttribIiv :: FunPtr FuntypeGetVertexAttribIiv -> FuntypeGetVertexAttribIiv+glrefGetVertexAttribIiv :: IORef FuntypeGetVertexAttribIiv+glrefGetVertexAttribIiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexAttribIiv #-}+glGetVertexAttribIiv :: FuntypeGetVertexAttribIiv+glGetVertexAttribIiv = unsafePerformIO $ readIORef glrefGetVertexAttribIiv+{-# INLINE glGetVertexAttribIiv #-}+type FuntypeGetVertexAttribIuiv =+    GLuint ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexAttribIuiv :: FunPtr FuntypeGetVertexAttribIuiv -> FuntypeGetVertexAttribIuiv+glrefGetVertexAttribIuiv :: IORef FuntypeGetVertexAttribIuiv+glrefGetVertexAttribIuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexAttribIuiv #-}+glGetVertexAttribIuiv :: FuntypeGetVertexAttribIuiv+glGetVertexAttribIuiv = unsafePerformIO $ readIORef glrefGetVertexAttribIuiv+{-# INLINE glGetVertexAttribIuiv #-}+type FuntypeVertexAttribI1i =+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI1i :: FunPtr FuntypeVertexAttribI1i -> FuntypeVertexAttribI1i+glrefVertexAttribI1i :: IORef FuntypeVertexAttribI1i+glrefVertexAttribI1i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI1i #-}+glVertexAttribI1i :: FuntypeVertexAttribI1i+glVertexAttribI1i = unsafePerformIO $ readIORef glrefVertexAttribI1i+{-# INLINE glVertexAttribI1i #-}+type FuntypeVertexAttribI2i =+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI2i :: FunPtr FuntypeVertexAttribI2i -> FuntypeVertexAttribI2i+glrefVertexAttribI2i :: IORef FuntypeVertexAttribI2i+glrefVertexAttribI2i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI2i #-}+glVertexAttribI2i :: FuntypeVertexAttribI2i+glVertexAttribI2i = unsafePerformIO $ readIORef glrefVertexAttribI2i+{-# INLINE glVertexAttribI2i #-}+type FuntypeVertexAttribI3i =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI3i :: FunPtr FuntypeVertexAttribI3i -> FuntypeVertexAttribI3i+glrefVertexAttribI3i :: IORef FuntypeVertexAttribI3i+glrefVertexAttribI3i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI3i #-}+glVertexAttribI3i :: FuntypeVertexAttribI3i+glVertexAttribI3i = unsafePerformIO $ readIORef glrefVertexAttribI3i+{-# INLINE glVertexAttribI3i #-}+type FuntypeVertexAttribI4i =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4i :: FunPtr FuntypeVertexAttribI4i -> FuntypeVertexAttribI4i+glrefVertexAttribI4i :: IORef FuntypeVertexAttribI4i+glrefVertexAttribI4i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4i #-}+glVertexAttribI4i :: FuntypeVertexAttribI4i+glVertexAttribI4i = unsafePerformIO $ readIORef glrefVertexAttribI4i+{-# INLINE glVertexAttribI4i #-}+type FuntypeVertexAttribI1ui =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI1ui :: FunPtr FuntypeVertexAttribI1ui -> FuntypeVertexAttribI1ui+glrefVertexAttribI1ui :: IORef FuntypeVertexAttribI1ui+glrefVertexAttribI1ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI1ui #-}+glVertexAttribI1ui :: FuntypeVertexAttribI1ui+glVertexAttribI1ui = unsafePerformIO $ readIORef glrefVertexAttribI1ui+{-# INLINE glVertexAttribI1ui #-}+type FuntypeVertexAttribI2ui =+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI2ui :: FunPtr FuntypeVertexAttribI2ui -> FuntypeVertexAttribI2ui+glrefVertexAttribI2ui :: IORef FuntypeVertexAttribI2ui+glrefVertexAttribI2ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI2ui #-}+glVertexAttribI2ui :: FuntypeVertexAttribI2ui+glVertexAttribI2ui = unsafePerformIO $ readIORef glrefVertexAttribI2ui+{-# INLINE glVertexAttribI2ui #-}+type FuntypeVertexAttribI3ui =+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI3ui :: FunPtr FuntypeVertexAttribI3ui -> FuntypeVertexAttribI3ui+glrefVertexAttribI3ui :: IORef FuntypeVertexAttribI3ui+glrefVertexAttribI3ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI3ui #-}+glVertexAttribI3ui :: FuntypeVertexAttribI3ui+glVertexAttribI3ui = unsafePerformIO $ readIORef glrefVertexAttribI3ui+{-# INLINE glVertexAttribI3ui #-}+type FuntypeVertexAttribI4ui =+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4ui :: FunPtr FuntypeVertexAttribI4ui -> FuntypeVertexAttribI4ui+glrefVertexAttribI4ui :: IORef FuntypeVertexAttribI4ui+glrefVertexAttribI4ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4ui #-}+glVertexAttribI4ui :: FuntypeVertexAttribI4ui+glVertexAttribI4ui = unsafePerformIO $ readIORef glrefVertexAttribI4ui+{-# INLINE glVertexAttribI4ui #-}+type FuntypeVertexAttribI1iv =+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI1iv :: FunPtr FuntypeVertexAttribI1iv -> FuntypeVertexAttribI1iv+glrefVertexAttribI1iv :: IORef FuntypeVertexAttribI1iv+glrefVertexAttribI1iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI1iv #-}+glVertexAttribI1iv :: FuntypeVertexAttribI1iv+glVertexAttribI1iv = unsafePerformIO $ readIORef glrefVertexAttribI1iv+{-# INLINE glVertexAttribI1iv #-}+type FuntypeVertexAttribI2iv =+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI2iv :: FunPtr FuntypeVertexAttribI2iv -> FuntypeVertexAttribI2iv+glrefVertexAttribI2iv :: IORef FuntypeVertexAttribI2iv+glrefVertexAttribI2iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI2iv #-}+glVertexAttribI2iv :: FuntypeVertexAttribI2iv+glVertexAttribI2iv = unsafePerformIO $ readIORef glrefVertexAttribI2iv+{-# INLINE glVertexAttribI2iv #-}+type FuntypeVertexAttribI3iv =+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI3iv :: FunPtr FuntypeVertexAttribI3iv -> FuntypeVertexAttribI3iv+glrefVertexAttribI3iv :: IORef FuntypeVertexAttribI3iv+glrefVertexAttribI3iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI3iv #-}+glVertexAttribI3iv :: FuntypeVertexAttribI3iv+glVertexAttribI3iv = unsafePerformIO $ readIORef glrefVertexAttribI3iv+{-# INLINE glVertexAttribI3iv #-}+type FuntypeVertexAttribI4iv =+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4iv :: FunPtr FuntypeVertexAttribI4iv -> FuntypeVertexAttribI4iv+glrefVertexAttribI4iv :: IORef FuntypeVertexAttribI4iv+glrefVertexAttribI4iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4iv #-}+glVertexAttribI4iv :: FuntypeVertexAttribI4iv+glVertexAttribI4iv = unsafePerformIO $ readIORef glrefVertexAttribI4iv+{-# INLINE glVertexAttribI4iv #-}+type FuntypeVertexAttribI1uiv =+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI1uiv :: FunPtr FuntypeVertexAttribI1uiv -> FuntypeVertexAttribI1uiv+glrefVertexAttribI1uiv :: IORef FuntypeVertexAttribI1uiv+glrefVertexAttribI1uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI1uiv #-}+glVertexAttribI1uiv :: FuntypeVertexAttribI1uiv+glVertexAttribI1uiv = unsafePerformIO $ readIORef glrefVertexAttribI1uiv+{-# INLINE glVertexAttribI1uiv #-}+type FuntypeVertexAttribI2uiv =+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI2uiv :: FunPtr FuntypeVertexAttribI2uiv -> FuntypeVertexAttribI2uiv+glrefVertexAttribI2uiv :: IORef FuntypeVertexAttribI2uiv+glrefVertexAttribI2uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI2uiv #-}+glVertexAttribI2uiv :: FuntypeVertexAttribI2uiv+glVertexAttribI2uiv = unsafePerformIO $ readIORef glrefVertexAttribI2uiv+{-# INLINE glVertexAttribI2uiv #-}+type FuntypeVertexAttribI3uiv =+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI3uiv :: FunPtr FuntypeVertexAttribI3uiv -> FuntypeVertexAttribI3uiv+glrefVertexAttribI3uiv :: IORef FuntypeVertexAttribI3uiv+glrefVertexAttribI3uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI3uiv #-}+glVertexAttribI3uiv :: FuntypeVertexAttribI3uiv+glVertexAttribI3uiv = unsafePerformIO $ readIORef glrefVertexAttribI3uiv+{-# INLINE glVertexAttribI3uiv #-}+type FuntypeVertexAttribI4uiv =+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4uiv :: FunPtr FuntypeVertexAttribI4uiv -> FuntypeVertexAttribI4uiv+glrefVertexAttribI4uiv :: IORef FuntypeVertexAttribI4uiv+glrefVertexAttribI4uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4uiv #-}+glVertexAttribI4uiv :: FuntypeVertexAttribI4uiv+glVertexAttribI4uiv = unsafePerformIO $ readIORef glrefVertexAttribI4uiv+{-# INLINE glVertexAttribI4uiv #-}+type FuntypeVertexAttribI4bv =+    GLuint ->+    Ptr (GLbyte) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4bv :: FunPtr FuntypeVertexAttribI4bv -> FuntypeVertexAttribI4bv+glrefVertexAttribI4bv :: IORef FuntypeVertexAttribI4bv+glrefVertexAttribI4bv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4bv #-}+glVertexAttribI4bv :: FuntypeVertexAttribI4bv+glVertexAttribI4bv = unsafePerformIO $ readIORef glrefVertexAttribI4bv+{-# INLINE glVertexAttribI4bv #-}+type FuntypeVertexAttribI4sv =+    GLuint ->+    Ptr (GLshort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4sv :: FunPtr FuntypeVertexAttribI4sv -> FuntypeVertexAttribI4sv+glrefVertexAttribI4sv :: IORef FuntypeVertexAttribI4sv+glrefVertexAttribI4sv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4sv #-}+glVertexAttribI4sv :: FuntypeVertexAttribI4sv+glVertexAttribI4sv = unsafePerformIO $ readIORef glrefVertexAttribI4sv+{-# INLINE glVertexAttribI4sv #-}+type FuntypeVertexAttribI4ubv =+    GLuint ->+    Ptr (GLubyte) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4ubv :: FunPtr FuntypeVertexAttribI4ubv -> FuntypeVertexAttribI4ubv+glrefVertexAttribI4ubv :: IORef FuntypeVertexAttribI4ubv+glrefVertexAttribI4ubv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4ubv #-}+glVertexAttribI4ubv :: FuntypeVertexAttribI4ubv+glVertexAttribI4ubv = unsafePerformIO $ readIORef glrefVertexAttribI4ubv+{-# INLINE glVertexAttribI4ubv #-}+type FuntypeVertexAttribI4usv =+    GLuint ->+    Ptr (GLushort) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribI4usv :: FunPtr FuntypeVertexAttribI4usv -> FuntypeVertexAttribI4usv+glrefVertexAttribI4usv :: IORef FuntypeVertexAttribI4usv+glrefVertexAttribI4usv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribI4usv #-}+glVertexAttribI4usv :: FuntypeVertexAttribI4usv+glVertexAttribI4usv = unsafePerformIO $ readIORef glrefVertexAttribI4usv+{-# INLINE glVertexAttribI4usv #-}+type FuntypeGetUniformuiv =+    GLuint ->+    GLint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetUniformuiv :: FunPtr FuntypeGetUniformuiv -> FuntypeGetUniformuiv+glrefGetUniformuiv :: IORef FuntypeGetUniformuiv+glrefGetUniformuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetUniformuiv #-}+glGetUniformuiv :: FuntypeGetUniformuiv+glGetUniformuiv = unsafePerformIO $ readIORef glrefGetUniformuiv+{-# INLINE glGetUniformuiv #-}+type FuntypeBindFragDataLocation =+    GLuint ->+    GLuint ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindFragDataLocation :: FunPtr FuntypeBindFragDataLocation -> FuntypeBindFragDataLocation+glrefBindFragDataLocation :: IORef FuntypeBindFragDataLocation+glrefBindFragDataLocation = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindFragDataLocation #-}+glBindFragDataLocation :: FuntypeBindFragDataLocation+glBindFragDataLocation = unsafePerformIO $ readIORef glrefBindFragDataLocation+{-# INLINE glBindFragDataLocation #-}+type FuntypeGetFragDataLocation =+    GLuint ->+    Ptr (GLchar) ->+    IO ( GLint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFragDataLocation :: FunPtr FuntypeGetFragDataLocation -> FuntypeGetFragDataLocation+glrefGetFragDataLocation :: IORef FuntypeGetFragDataLocation+glrefGetFragDataLocation = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFragDataLocation #-}+glGetFragDataLocation :: FuntypeGetFragDataLocation+glGetFragDataLocation = unsafePerformIO $ readIORef glrefGetFragDataLocation+{-# INLINE glGetFragDataLocation #-}+type FuntypeUniform1ui =+    GLint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform1ui :: FunPtr FuntypeUniform1ui -> FuntypeUniform1ui+glrefUniform1ui :: IORef FuntypeUniform1ui+glrefUniform1ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform1ui #-}+glUniform1ui :: FuntypeUniform1ui+glUniform1ui = unsafePerformIO $ readIORef glrefUniform1ui+{-# INLINE glUniform1ui #-}+type FuntypeUniform2ui =+    GLint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform2ui :: FunPtr FuntypeUniform2ui -> FuntypeUniform2ui+glrefUniform2ui :: IORef FuntypeUniform2ui+glrefUniform2ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform2ui #-}+glUniform2ui :: FuntypeUniform2ui+glUniform2ui = unsafePerformIO $ readIORef glrefUniform2ui+{-# INLINE glUniform2ui #-}+type FuntypeUniform3ui =+    GLint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform3ui :: FunPtr FuntypeUniform3ui -> FuntypeUniform3ui+glrefUniform3ui :: IORef FuntypeUniform3ui+glrefUniform3ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform3ui #-}+glUniform3ui :: FuntypeUniform3ui+glUniform3ui = unsafePerformIO $ readIORef glrefUniform3ui+{-# INLINE glUniform3ui #-}+type FuntypeUniform4ui =+    GLint ->+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform4ui :: FunPtr FuntypeUniform4ui -> FuntypeUniform4ui+glrefUniform4ui :: IORef FuntypeUniform4ui+glrefUniform4ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform4ui #-}+glUniform4ui :: FuntypeUniform4ui+glUniform4ui = unsafePerformIO $ readIORef glrefUniform4ui+{-# INLINE glUniform4ui #-}+type FuntypeUniform1uiv =+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform1uiv :: FunPtr FuntypeUniform1uiv -> FuntypeUniform1uiv+glrefUniform1uiv :: IORef FuntypeUniform1uiv+glrefUniform1uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform1uiv #-}+glUniform1uiv :: FuntypeUniform1uiv+glUniform1uiv = unsafePerformIO $ readIORef glrefUniform1uiv+{-# INLINE glUniform1uiv #-}+type FuntypeUniform2uiv =+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform2uiv :: FunPtr FuntypeUniform2uiv -> FuntypeUniform2uiv+glrefUniform2uiv :: IORef FuntypeUniform2uiv+glrefUniform2uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform2uiv #-}+glUniform2uiv :: FuntypeUniform2uiv+glUniform2uiv = unsafePerformIO $ readIORef glrefUniform2uiv+{-# INLINE glUniform2uiv #-}+type FuntypeUniform3uiv =+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform3uiv :: FunPtr FuntypeUniform3uiv -> FuntypeUniform3uiv+glrefUniform3uiv :: IORef FuntypeUniform3uiv+glrefUniform3uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform3uiv #-}+glUniform3uiv :: FuntypeUniform3uiv+glUniform3uiv = unsafePerformIO $ readIORef glrefUniform3uiv+{-# INLINE glUniform3uiv #-}+type FuntypeUniform4uiv =+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniform4uiv :: FunPtr FuntypeUniform4uiv -> FuntypeUniform4uiv+glrefUniform4uiv :: IORef FuntypeUniform4uiv+glrefUniform4uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniform4uiv #-}+glUniform4uiv :: FuntypeUniform4uiv+glUniform4uiv = unsafePerformIO $ readIORef glrefUniform4uiv+{-# INLINE glUniform4uiv #-}+type FuntypeTexParameterIiv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexParameterIiv :: FunPtr FuntypeTexParameterIiv -> FuntypeTexParameterIiv+glrefTexParameterIiv :: IORef FuntypeTexParameterIiv+glrefTexParameterIiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexParameterIiv #-}+glTexParameterIiv :: FuntypeTexParameterIiv+glTexParameterIiv = unsafePerformIO $ readIORef glrefTexParameterIiv+{-# INLINE glTexParameterIiv #-}+type FuntypeTexParameterIuiv =+    GLenum ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexParameterIuiv :: FunPtr FuntypeTexParameterIuiv -> FuntypeTexParameterIuiv+glrefTexParameterIuiv :: IORef FuntypeTexParameterIuiv+glrefTexParameterIuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexParameterIuiv #-}+glTexParameterIuiv :: FuntypeTexParameterIuiv+glTexParameterIuiv = unsafePerformIO $ readIORef glrefTexParameterIuiv+{-# INLINE glTexParameterIuiv #-}+type FuntypeGetTexParameterIiv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexParameterIiv :: FunPtr FuntypeGetTexParameterIiv -> FuntypeGetTexParameterIiv+glrefGetTexParameterIiv :: IORef FuntypeGetTexParameterIiv+glrefGetTexParameterIiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexParameterIiv #-}+glGetTexParameterIiv :: FuntypeGetTexParameterIiv+glGetTexParameterIiv = unsafePerformIO $ readIORef glrefGetTexParameterIiv+{-# INLINE glGetTexParameterIiv #-}+type FuntypeGetTexParameterIuiv =+    GLenum ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTexParameterIuiv :: FunPtr FuntypeGetTexParameterIuiv -> FuntypeGetTexParameterIuiv+glrefGetTexParameterIuiv :: IORef FuntypeGetTexParameterIuiv+glrefGetTexParameterIuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTexParameterIuiv #-}+glGetTexParameterIuiv :: FuntypeGetTexParameterIuiv+glGetTexParameterIuiv = unsafePerformIO $ readIORef glrefGetTexParameterIuiv+{-# INLINE glGetTexParameterIuiv #-}+type FuntypeClearBufferiv =+    GLenum ->+    GLint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearBufferiv :: FunPtr FuntypeClearBufferiv -> FuntypeClearBufferiv+glrefClearBufferiv :: IORef FuntypeClearBufferiv+glrefClearBufferiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearBufferiv #-}+glClearBufferiv :: FuntypeClearBufferiv+glClearBufferiv = unsafePerformIO $ readIORef glrefClearBufferiv+{-# INLINE glClearBufferiv #-}+type FuntypeClearBufferuiv =+    GLenum ->+    GLint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearBufferuiv :: FunPtr FuntypeClearBufferuiv -> FuntypeClearBufferuiv+glrefClearBufferuiv :: IORef FuntypeClearBufferuiv+glrefClearBufferuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearBufferuiv #-}+glClearBufferuiv :: FuntypeClearBufferuiv+glClearBufferuiv = unsafePerformIO $ readIORef glrefClearBufferuiv+{-# INLINE glClearBufferuiv #-}+type FuntypeClearBufferfv =+    GLenum ->+    GLint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearBufferfv :: FunPtr FuntypeClearBufferfv -> FuntypeClearBufferfv+glrefClearBufferfv :: IORef FuntypeClearBufferfv+glrefClearBufferfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearBufferfv #-}+glClearBufferfv :: FuntypeClearBufferfv+glClearBufferfv = unsafePerformIO $ readIORef glrefClearBufferfv+{-# INLINE glClearBufferfv #-}+type FuntypeClearBufferfi =+    GLenum ->+    GLint ->+    GLfloat ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearBufferfi :: FunPtr FuntypeClearBufferfi -> FuntypeClearBufferfi+glrefClearBufferfi :: IORef FuntypeClearBufferfi+glrefClearBufferfi = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearBufferfi #-}+glClearBufferfi :: FuntypeClearBufferfi+glClearBufferfi = unsafePerformIO $ readIORef glrefClearBufferfi+{-# INLINE glClearBufferfi #-}+type FuntypeGetStringi =+    GLenum ->+    GLuint ->+    IO ( Ptr (GLubyte) )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetStringi :: FunPtr FuntypeGetStringi -> FuntypeGetStringi+glrefGetStringi :: IORef FuntypeGetStringi+glrefGetStringi = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetStringi #-}+glGetStringi :: FuntypeGetStringi+glGetStringi = unsafePerformIO $ readIORef glrefGetStringi+{-# INLINE glGetStringi #-}+type FuntypeIsRenderbuffer =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsRenderbuffer :: FunPtr FuntypeIsRenderbuffer -> FuntypeIsRenderbuffer+glrefIsRenderbuffer :: IORef FuntypeIsRenderbuffer+glrefIsRenderbuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsRenderbuffer #-}+glIsRenderbuffer :: FuntypeIsRenderbuffer+glIsRenderbuffer = unsafePerformIO $ readIORef glrefIsRenderbuffer+{-# INLINE glIsRenderbuffer #-}+type FuntypeBindRenderbuffer =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindRenderbuffer :: FunPtr FuntypeBindRenderbuffer -> FuntypeBindRenderbuffer+glrefBindRenderbuffer :: IORef FuntypeBindRenderbuffer+glrefBindRenderbuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindRenderbuffer #-}+glBindRenderbuffer :: FuntypeBindRenderbuffer+glBindRenderbuffer = unsafePerformIO $ readIORef glrefBindRenderbuffer+{-# INLINE glBindRenderbuffer #-}+type FuntypeDeleteRenderbuffers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteRenderbuffers :: FunPtr FuntypeDeleteRenderbuffers -> FuntypeDeleteRenderbuffers+glrefDeleteRenderbuffers :: IORef FuntypeDeleteRenderbuffers+glrefDeleteRenderbuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteRenderbuffers #-}+glDeleteRenderbuffers :: FuntypeDeleteRenderbuffers+glDeleteRenderbuffers = unsafePerformIO $ readIORef glrefDeleteRenderbuffers+{-# INLINE glDeleteRenderbuffers #-}+type FuntypeGenRenderbuffers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenRenderbuffers :: FunPtr FuntypeGenRenderbuffers -> FuntypeGenRenderbuffers+glrefGenRenderbuffers :: IORef FuntypeGenRenderbuffers+glrefGenRenderbuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenRenderbuffers #-}+glGenRenderbuffers :: FuntypeGenRenderbuffers+glGenRenderbuffers = unsafePerformIO $ readIORef glrefGenRenderbuffers+{-# INLINE glGenRenderbuffers #-}+type FuntypeRenderbufferStorage =+    GLenum ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynRenderbufferStorage :: FunPtr FuntypeRenderbufferStorage -> FuntypeRenderbufferStorage+glrefRenderbufferStorage :: IORef FuntypeRenderbufferStorage+glrefRenderbufferStorage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefRenderbufferStorage #-}+glRenderbufferStorage :: FuntypeRenderbufferStorage+glRenderbufferStorage = unsafePerformIO $ readIORef glrefRenderbufferStorage+{-# INLINE glRenderbufferStorage #-}+type FuntypeGetRenderbufferParameteriv =+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetRenderbufferParameteriv :: FunPtr FuntypeGetRenderbufferParameteriv -> FuntypeGetRenderbufferParameteriv+glrefGetRenderbufferParameteriv :: IORef FuntypeGetRenderbufferParameteriv+glrefGetRenderbufferParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetRenderbufferParameteriv #-}+glGetRenderbufferParameteriv :: FuntypeGetRenderbufferParameteriv+glGetRenderbufferParameteriv = unsafePerformIO $ readIORef glrefGetRenderbufferParameteriv+{-# INLINE glGetRenderbufferParameteriv #-}+type FuntypeIsFramebuffer =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsFramebuffer :: FunPtr FuntypeIsFramebuffer -> FuntypeIsFramebuffer+glrefIsFramebuffer :: IORef FuntypeIsFramebuffer+glrefIsFramebuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsFramebuffer #-}+glIsFramebuffer :: FuntypeIsFramebuffer+glIsFramebuffer = unsafePerformIO $ readIORef glrefIsFramebuffer+{-# INLINE glIsFramebuffer #-}+type FuntypeBindFramebuffer =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindFramebuffer :: FunPtr FuntypeBindFramebuffer -> FuntypeBindFramebuffer+glrefBindFramebuffer :: IORef FuntypeBindFramebuffer+glrefBindFramebuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindFramebuffer #-}+glBindFramebuffer :: FuntypeBindFramebuffer+glBindFramebuffer = unsafePerformIO $ readIORef glrefBindFramebuffer+{-# INLINE glBindFramebuffer #-}+type FuntypeDeleteFramebuffers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteFramebuffers :: FunPtr FuntypeDeleteFramebuffers -> FuntypeDeleteFramebuffers+glrefDeleteFramebuffers :: IORef FuntypeDeleteFramebuffers+glrefDeleteFramebuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteFramebuffers #-}+glDeleteFramebuffers :: FuntypeDeleteFramebuffers+glDeleteFramebuffers = unsafePerformIO $ readIORef glrefDeleteFramebuffers+{-# INLINE glDeleteFramebuffers #-}+type FuntypeGenFramebuffers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenFramebuffers :: FunPtr FuntypeGenFramebuffers -> FuntypeGenFramebuffers+glrefGenFramebuffers :: IORef FuntypeGenFramebuffers+glrefGenFramebuffers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenFramebuffers #-}+glGenFramebuffers :: FuntypeGenFramebuffers+glGenFramebuffers = unsafePerformIO $ readIORef glrefGenFramebuffers+{-# INLINE glGenFramebuffers #-}+type FuntypeCheckFramebufferStatus =+    GLenum ->+    IO ( GLenum )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCheckFramebufferStatus :: FunPtr FuntypeCheckFramebufferStatus -> FuntypeCheckFramebufferStatus+glrefCheckFramebufferStatus :: IORef FuntypeCheckFramebufferStatus+glrefCheckFramebufferStatus = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCheckFramebufferStatus #-}+glCheckFramebufferStatus :: FuntypeCheckFramebufferStatus+glCheckFramebufferStatus = unsafePerformIO $ readIORef glrefCheckFramebufferStatus+{-# INLINE glCheckFramebufferStatus #-}+type FuntypeFramebufferTexture1D =+    GLenum ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferTexture1D :: FunPtr FuntypeFramebufferTexture1D -> FuntypeFramebufferTexture1D+glrefFramebufferTexture1D :: IORef FuntypeFramebufferTexture1D+glrefFramebufferTexture1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferTexture1D #-}+glFramebufferTexture1D :: FuntypeFramebufferTexture1D+glFramebufferTexture1D = unsafePerformIO $ readIORef glrefFramebufferTexture1D+{-# INLINE glFramebufferTexture1D #-}+type FuntypeFramebufferTexture2D =+    GLenum ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferTexture2D :: FunPtr FuntypeFramebufferTexture2D -> FuntypeFramebufferTexture2D+glrefFramebufferTexture2D :: IORef FuntypeFramebufferTexture2D+glrefFramebufferTexture2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferTexture2D #-}+glFramebufferTexture2D :: FuntypeFramebufferTexture2D+glFramebufferTexture2D = unsafePerformIO $ readIORef glrefFramebufferTexture2D+{-# INLINE glFramebufferTexture2D #-}+type FuntypeFramebufferTexture3D =+    GLenum ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferTexture3D :: FunPtr FuntypeFramebufferTexture3D -> FuntypeFramebufferTexture3D+glrefFramebufferTexture3D :: IORef FuntypeFramebufferTexture3D+glrefFramebufferTexture3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferTexture3D #-}+glFramebufferTexture3D :: FuntypeFramebufferTexture3D+glFramebufferTexture3D = unsafePerformIO $ readIORef glrefFramebufferTexture3D+{-# INLINE glFramebufferTexture3D #-}+type FuntypeFramebufferRenderbuffer =+    GLenum ->+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferRenderbuffer :: FunPtr FuntypeFramebufferRenderbuffer -> FuntypeFramebufferRenderbuffer+glrefFramebufferRenderbuffer :: IORef FuntypeFramebufferRenderbuffer+glrefFramebufferRenderbuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferRenderbuffer #-}+glFramebufferRenderbuffer :: FuntypeFramebufferRenderbuffer+glFramebufferRenderbuffer = unsafePerformIO $ readIORef glrefFramebufferRenderbuffer+{-# INLINE glFramebufferRenderbuffer #-}+type FuntypeGetFramebufferAttachmentParameteriv =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFramebufferAttachmentParameteriv :: FunPtr FuntypeGetFramebufferAttachmentParameteriv -> FuntypeGetFramebufferAttachmentParameteriv+glrefGetFramebufferAttachmentParameteriv :: IORef FuntypeGetFramebufferAttachmentParameteriv+glrefGetFramebufferAttachmentParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFramebufferAttachmentParameteriv #-}+glGetFramebufferAttachmentParameteriv :: FuntypeGetFramebufferAttachmentParameteriv+glGetFramebufferAttachmentParameteriv = unsafePerformIO $ readIORef glrefGetFramebufferAttachmentParameteriv+{-# INLINE glGetFramebufferAttachmentParameteriv #-}+type FuntypeGenerateMipmap =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenerateMipmap :: FunPtr FuntypeGenerateMipmap -> FuntypeGenerateMipmap+glrefGenerateMipmap :: IORef FuntypeGenerateMipmap+glrefGenerateMipmap = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenerateMipmap #-}+glGenerateMipmap :: FuntypeGenerateMipmap+glGenerateMipmap = unsafePerformIO $ readIORef glrefGenerateMipmap+{-# INLINE glGenerateMipmap #-}+type FuntypeBlitFramebuffer =+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLbitfield ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBlitFramebuffer :: FunPtr FuntypeBlitFramebuffer -> FuntypeBlitFramebuffer+glrefBlitFramebuffer :: IORef FuntypeBlitFramebuffer+glrefBlitFramebuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBlitFramebuffer #-}+glBlitFramebuffer :: FuntypeBlitFramebuffer+glBlitFramebuffer = unsafePerformIO $ readIORef glrefBlitFramebuffer+{-# INLINE glBlitFramebuffer #-}+type FuntypeRenderbufferStorageMultisample =+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynRenderbufferStorageMultisample :: FunPtr FuntypeRenderbufferStorageMultisample -> FuntypeRenderbufferStorageMultisample+glrefRenderbufferStorageMultisample :: IORef FuntypeRenderbufferStorageMultisample+glrefRenderbufferStorageMultisample = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefRenderbufferStorageMultisample #-}+glRenderbufferStorageMultisample :: FuntypeRenderbufferStorageMultisample+glRenderbufferStorageMultisample = unsafePerformIO $ readIORef glrefRenderbufferStorageMultisample+{-# INLINE glRenderbufferStorageMultisample #-}+type FuntypeFramebufferTextureLayer =+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferTextureLayer :: FunPtr FuntypeFramebufferTextureLayer -> FuntypeFramebufferTextureLayer+glrefFramebufferTextureLayer :: IORef FuntypeFramebufferTextureLayer+glrefFramebufferTextureLayer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferTextureLayer #-}+glFramebufferTextureLayer :: FuntypeFramebufferTextureLayer+glFramebufferTextureLayer = unsafePerformIO $ readIORef glrefFramebufferTextureLayer+{-# INLINE glFramebufferTextureLayer #-}+type FuntypeMapBufferRange =+    GLenum ->+    GLintptr ->+    GLsizeiptr ->+    GLbitfield ->+    IO ( Ptr () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMapBufferRange :: FunPtr FuntypeMapBufferRange -> FuntypeMapBufferRange+glrefMapBufferRange :: IORef FuntypeMapBufferRange+glrefMapBufferRange = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMapBufferRange #-}+glMapBufferRange :: FuntypeMapBufferRange+glMapBufferRange = unsafePerformIO $ readIORef glrefMapBufferRange+{-# INLINE glMapBufferRange #-}+type FuntypeFlushMappedBufferRange =+    GLenum ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFlushMappedBufferRange :: FunPtr FuntypeFlushMappedBufferRange -> FuntypeFlushMappedBufferRange+glrefFlushMappedBufferRange :: IORef FuntypeFlushMappedBufferRange+glrefFlushMappedBufferRange = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFlushMappedBufferRange #-}+glFlushMappedBufferRange :: FuntypeFlushMappedBufferRange+glFlushMappedBufferRange = unsafePerformIO $ readIORef glrefFlushMappedBufferRange+{-# INLINE glFlushMappedBufferRange #-}+type FuntypeBindVertexArray =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindVertexArray :: FunPtr FuntypeBindVertexArray -> FuntypeBindVertexArray+glrefBindVertexArray :: IORef FuntypeBindVertexArray+glrefBindVertexArray = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindVertexArray #-}+glBindVertexArray :: FuntypeBindVertexArray+glBindVertexArray = unsafePerformIO $ readIORef glrefBindVertexArray+{-# INLINE glBindVertexArray #-}+type FuntypeDeleteVertexArrays =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteVertexArrays :: FunPtr FuntypeDeleteVertexArrays -> FuntypeDeleteVertexArrays+glrefDeleteVertexArrays :: IORef FuntypeDeleteVertexArrays+glrefDeleteVertexArrays = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteVertexArrays #-}+glDeleteVertexArrays :: FuntypeDeleteVertexArrays+glDeleteVertexArrays = unsafePerformIO $ readIORef glrefDeleteVertexArrays+{-# INLINE glDeleteVertexArrays #-}+type FuntypeGenVertexArrays =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenVertexArrays :: FunPtr FuntypeGenVertexArrays -> FuntypeGenVertexArrays+glrefGenVertexArrays :: IORef FuntypeGenVertexArrays+glrefGenVertexArrays = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenVertexArrays #-}+glGenVertexArrays :: FuntypeGenVertexArrays+glGenVertexArrays = unsafePerformIO $ readIORef glrefGenVertexArrays+{-# INLINE glGenVertexArrays #-}+type FuntypeIsVertexArray =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsVertexArray :: FunPtr FuntypeIsVertexArray -> FuntypeIsVertexArray+glrefIsVertexArray :: IORef FuntypeIsVertexArray+glrefIsVertexArray = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsVertexArray #-}+glIsVertexArray :: FuntypeIsVertexArray+glIsVertexArray = unsafePerformIO $ readIORef glrefIsVertexArray+{-# INLINE glIsVertexArray #-}++-- GL_VERSION_3_1++type FuntypeDrawArraysInstanced =+    GLenum ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawArraysInstanced :: FunPtr FuntypeDrawArraysInstanced -> FuntypeDrawArraysInstanced+glrefDrawArraysInstanced :: IORef FuntypeDrawArraysInstanced+glrefDrawArraysInstanced = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawArraysInstanced #-}+glDrawArraysInstanced :: FuntypeDrawArraysInstanced+glDrawArraysInstanced = unsafePerformIO $ readIORef glrefDrawArraysInstanced+{-# INLINE glDrawArraysInstanced #-}+type FuntypeDrawElementsInstanced =+    GLenum ->+    GLsizei ->+    GLenum ->+    Ptr () ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawElementsInstanced :: FunPtr FuntypeDrawElementsInstanced -> FuntypeDrawElementsInstanced+glrefDrawElementsInstanced :: IORef FuntypeDrawElementsInstanced+glrefDrawElementsInstanced = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawElementsInstanced #-}+glDrawElementsInstanced :: FuntypeDrawElementsInstanced+glDrawElementsInstanced = unsafePerformIO $ readIORef glrefDrawElementsInstanced+{-# INLINE glDrawElementsInstanced #-}+type FuntypeTexBuffer =+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexBuffer :: FunPtr FuntypeTexBuffer -> FuntypeTexBuffer+glrefTexBuffer :: IORef FuntypeTexBuffer+glrefTexBuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexBuffer #-}+glTexBuffer :: FuntypeTexBuffer+glTexBuffer = unsafePerformIO $ readIORef glrefTexBuffer+{-# INLINE glTexBuffer #-}+type FuntypePrimitiveRestartIndex =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPrimitiveRestartIndex :: FunPtr FuntypePrimitiveRestartIndex -> FuntypePrimitiveRestartIndex+glrefPrimitiveRestartIndex :: IORef FuntypePrimitiveRestartIndex+glrefPrimitiveRestartIndex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPrimitiveRestartIndex #-}+glPrimitiveRestartIndex :: FuntypePrimitiveRestartIndex+glPrimitiveRestartIndex = unsafePerformIO $ readIORef glrefPrimitiveRestartIndex+{-# INLINE glPrimitiveRestartIndex #-}+type FuntypeCopyBufferSubData =+    GLenum ->+    GLenum ->+    GLintptr ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyBufferSubData :: FunPtr FuntypeCopyBufferSubData -> FuntypeCopyBufferSubData+glrefCopyBufferSubData :: IORef FuntypeCopyBufferSubData+glrefCopyBufferSubData = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyBufferSubData #-}+glCopyBufferSubData :: FuntypeCopyBufferSubData+glCopyBufferSubData = unsafePerformIO $ readIORef glrefCopyBufferSubData+{-# INLINE glCopyBufferSubData #-}+type FuntypeGetUniformIndices =+    GLuint ->+    GLsizei ->+    Ptr (Ptr (GLchar)) ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetUniformIndices :: FunPtr FuntypeGetUniformIndices -> FuntypeGetUniformIndices+glrefGetUniformIndices :: IORef FuntypeGetUniformIndices+glrefGetUniformIndices = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetUniformIndices #-}+glGetUniformIndices :: FuntypeGetUniformIndices+glGetUniformIndices = unsafePerformIO $ readIORef glrefGetUniformIndices+{-# INLINE glGetUniformIndices #-}+type FuntypeGetActiveUniformsiv =+    GLuint ->+    GLsizei ->+    Ptr (GLuint) ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetActiveUniformsiv :: FunPtr FuntypeGetActiveUniformsiv -> FuntypeGetActiveUniformsiv+glrefGetActiveUniformsiv :: IORef FuntypeGetActiveUniformsiv+glrefGetActiveUniformsiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetActiveUniformsiv #-}+glGetActiveUniformsiv :: FuntypeGetActiveUniformsiv+glGetActiveUniformsiv = unsafePerformIO $ readIORef glrefGetActiveUniformsiv+{-# INLINE glGetActiveUniformsiv #-}+type FuntypeGetActiveUniformName =+    GLuint ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetActiveUniformName :: FunPtr FuntypeGetActiveUniformName -> FuntypeGetActiveUniformName+glrefGetActiveUniformName :: IORef FuntypeGetActiveUniformName+glrefGetActiveUniformName = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetActiveUniformName #-}+glGetActiveUniformName :: FuntypeGetActiveUniformName+glGetActiveUniformName = unsafePerformIO $ readIORef glrefGetActiveUniformName+{-# INLINE glGetActiveUniformName #-}+type FuntypeGetUniformBlockIndex =+    GLuint ->+    Ptr (GLchar) ->+    IO ( GLuint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetUniformBlockIndex :: FunPtr FuntypeGetUniformBlockIndex -> FuntypeGetUniformBlockIndex+glrefGetUniformBlockIndex :: IORef FuntypeGetUniformBlockIndex+glrefGetUniformBlockIndex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetUniformBlockIndex #-}+glGetUniformBlockIndex :: FuntypeGetUniformBlockIndex+glGetUniformBlockIndex = unsafePerformIO $ readIORef glrefGetUniformBlockIndex+{-# INLINE glGetUniformBlockIndex #-}+type FuntypeGetActiveUniformBlockiv =+    GLuint ->+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetActiveUniformBlockiv :: FunPtr FuntypeGetActiveUniformBlockiv -> FuntypeGetActiveUniformBlockiv+glrefGetActiveUniformBlockiv :: IORef FuntypeGetActiveUniformBlockiv+glrefGetActiveUniformBlockiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetActiveUniformBlockiv #-}+glGetActiveUniformBlockiv :: FuntypeGetActiveUniformBlockiv+glGetActiveUniformBlockiv = unsafePerformIO $ readIORef glrefGetActiveUniformBlockiv+{-# INLINE glGetActiveUniformBlockiv #-}+type FuntypeGetActiveUniformBlockName =+    GLuint ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetActiveUniformBlockName :: FunPtr FuntypeGetActiveUniformBlockName -> FuntypeGetActiveUniformBlockName+glrefGetActiveUniformBlockName :: IORef FuntypeGetActiveUniformBlockName+glrefGetActiveUniformBlockName = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetActiveUniformBlockName #-}+glGetActiveUniformBlockName :: FuntypeGetActiveUniformBlockName+glGetActiveUniformBlockName = unsafePerformIO $ readIORef glrefGetActiveUniformBlockName+{-# INLINE glGetActiveUniformBlockName #-}+type FuntypeUniformBlockBinding =+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUniformBlockBinding :: FunPtr FuntypeUniformBlockBinding -> FuntypeUniformBlockBinding+glrefUniformBlockBinding :: IORef FuntypeUniformBlockBinding+glrefUniformBlockBinding = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUniformBlockBinding #-}+glUniformBlockBinding :: FuntypeUniformBlockBinding+glUniformBlockBinding = unsafePerformIO $ readIORef glrefUniformBlockBinding+{-# INLINE glUniformBlockBinding #-}++-- GL_VERSION_3_2++type FuntypeDrawElementsBaseVertex =+    GLenum ->+    GLsizei ->+    GLenum ->+    Ptr () ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawElementsBaseVertex :: FunPtr FuntypeDrawElementsBaseVertex -> FuntypeDrawElementsBaseVertex+glrefDrawElementsBaseVertex :: IORef FuntypeDrawElementsBaseVertex+glrefDrawElementsBaseVertex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawElementsBaseVertex #-}+glDrawElementsBaseVertex :: FuntypeDrawElementsBaseVertex+glDrawElementsBaseVertex = unsafePerformIO $ readIORef glrefDrawElementsBaseVertex+{-# INLINE glDrawElementsBaseVertex #-}+type FuntypeDrawRangeElementsBaseVertex =+    GLenum ->+    GLuint ->+    GLuint ->+    GLsizei ->+    GLenum ->+    Ptr () ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawRangeElementsBaseVertex :: FunPtr FuntypeDrawRangeElementsBaseVertex -> FuntypeDrawRangeElementsBaseVertex+glrefDrawRangeElementsBaseVertex :: IORef FuntypeDrawRangeElementsBaseVertex+glrefDrawRangeElementsBaseVertex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawRangeElementsBaseVertex #-}+glDrawRangeElementsBaseVertex :: FuntypeDrawRangeElementsBaseVertex+glDrawRangeElementsBaseVertex = unsafePerformIO $ readIORef glrefDrawRangeElementsBaseVertex+{-# INLINE glDrawRangeElementsBaseVertex #-}+type FuntypeDrawElementsInstancedBaseVertex =+    GLenum ->+    GLsizei ->+    GLenum ->+    Ptr () ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDrawElementsInstancedBaseVertex :: FunPtr FuntypeDrawElementsInstancedBaseVertex -> FuntypeDrawElementsInstancedBaseVertex+glrefDrawElementsInstancedBaseVertex :: IORef FuntypeDrawElementsInstancedBaseVertex+glrefDrawElementsInstancedBaseVertex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDrawElementsInstancedBaseVertex #-}+glDrawElementsInstancedBaseVertex :: FuntypeDrawElementsInstancedBaseVertex+glDrawElementsInstancedBaseVertex = unsafePerformIO $ readIORef glrefDrawElementsInstancedBaseVertex+{-# INLINE glDrawElementsInstancedBaseVertex #-}+type FuntypeMultiDrawElementsBaseVertex =+    GLenum ->+    Ptr (GLsizei) ->+    GLenum ->+    Ptr (Ptr ()) ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiDrawElementsBaseVertex :: FunPtr FuntypeMultiDrawElementsBaseVertex -> FuntypeMultiDrawElementsBaseVertex+glrefMultiDrawElementsBaseVertex :: IORef FuntypeMultiDrawElementsBaseVertex+glrefMultiDrawElementsBaseVertex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiDrawElementsBaseVertex #-}+glMultiDrawElementsBaseVertex :: FuntypeMultiDrawElementsBaseVertex+glMultiDrawElementsBaseVertex = unsafePerformIO $ readIORef glrefMultiDrawElementsBaseVertex+{-# INLINE glMultiDrawElementsBaseVertex #-}+type FuntypeProvokingVertex =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProvokingVertex :: FunPtr FuntypeProvokingVertex -> FuntypeProvokingVertex+glrefProvokingVertex :: IORef FuntypeProvokingVertex+glrefProvokingVertex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProvokingVertex #-}+glProvokingVertex :: FuntypeProvokingVertex+glProvokingVertex = unsafePerformIO $ readIORef glrefProvokingVertex+{-# INLINE glProvokingVertex #-}+type FuntypeFenceSync =+    GLenum ->+    GLbitfield ->+    IO ( GLsync )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFenceSync :: FunPtr FuntypeFenceSync -> FuntypeFenceSync+glrefFenceSync :: IORef FuntypeFenceSync+glrefFenceSync = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFenceSync #-}+glFenceSync :: FuntypeFenceSync+glFenceSync = unsafePerformIO $ readIORef glrefFenceSync+{-# INLINE glFenceSync #-}+type FuntypeIsSync =+    GLsync ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsSync :: FunPtr FuntypeIsSync -> FuntypeIsSync+glrefIsSync :: IORef FuntypeIsSync+glrefIsSync = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsSync #-}+glIsSync :: FuntypeIsSync+glIsSync = unsafePerformIO $ readIORef glrefIsSync+{-# INLINE glIsSync #-}+type FuntypeDeleteSync =+    GLsync ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteSync :: FunPtr FuntypeDeleteSync -> FuntypeDeleteSync+glrefDeleteSync :: IORef FuntypeDeleteSync+glrefDeleteSync = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteSync #-}+glDeleteSync :: FuntypeDeleteSync+glDeleteSync = unsafePerformIO $ readIORef glrefDeleteSync+{-# INLINE glDeleteSync #-}+type FuntypeClientWaitSync =+    GLsync ->+    GLbitfield ->+    GLuint64 ->+    IO ( GLenum )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClientWaitSync :: FunPtr FuntypeClientWaitSync -> FuntypeClientWaitSync+glrefClientWaitSync :: IORef FuntypeClientWaitSync+glrefClientWaitSync = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClientWaitSync #-}+glClientWaitSync :: FuntypeClientWaitSync+glClientWaitSync = unsafePerformIO $ readIORef glrefClientWaitSync+{-# INLINE glClientWaitSync #-}+type FuntypeWaitSync =+    GLsync ->+    GLbitfield ->+    GLuint64 ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynWaitSync :: FunPtr FuntypeWaitSync -> FuntypeWaitSync+glrefWaitSync :: IORef FuntypeWaitSync+glrefWaitSync = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefWaitSync #-}+glWaitSync :: FuntypeWaitSync+glWaitSync = unsafePerformIO $ readIORef glrefWaitSync+{-# INLINE glWaitSync #-}+type FuntypeGetInteger64v =+    GLenum ->+    Ptr (GLint64) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetInteger64v :: FunPtr FuntypeGetInteger64v -> FuntypeGetInteger64v+glrefGetInteger64v :: IORef FuntypeGetInteger64v+glrefGetInteger64v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetInteger64v #-}+glGetInteger64v :: FuntypeGetInteger64v+glGetInteger64v = unsafePerformIO $ readIORef glrefGetInteger64v+{-# INLINE glGetInteger64v #-}+type FuntypeGetSynciv =+    GLsync ->+    GLenum ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetSynciv :: FunPtr FuntypeGetSynciv -> FuntypeGetSynciv+glrefGetSynciv :: IORef FuntypeGetSynciv+glrefGetSynciv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetSynciv #-}+glGetSynciv :: FuntypeGetSynciv+glGetSynciv = unsafePerformIO $ readIORef glrefGetSynciv+{-# INLINE glGetSynciv #-}+type FuntypeGetInteger64i_v =+    GLenum ->+    GLuint ->+    Ptr (GLint64) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetInteger64i_v :: FunPtr FuntypeGetInteger64i_v -> FuntypeGetInteger64i_v+glrefGetInteger64i_v :: IORef FuntypeGetInteger64i_v+glrefGetInteger64i_v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetInteger64i_v #-}+glGetInteger64i_v :: FuntypeGetInteger64i_v+glGetInteger64i_v = unsafePerformIO $ readIORef glrefGetInteger64i_v+{-# INLINE glGetInteger64i_v #-}+type FuntypeGetBufferParameteri64v =+    GLenum ->+    GLenum ->+    Ptr (GLint64) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBufferParameteri64v :: FunPtr FuntypeGetBufferParameteri64v -> FuntypeGetBufferParameteri64v+glrefGetBufferParameteri64v :: IORef FuntypeGetBufferParameteri64v+glrefGetBufferParameteri64v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBufferParameteri64v #-}+glGetBufferParameteri64v :: FuntypeGetBufferParameteri64v+glGetBufferParameteri64v = unsafePerformIO $ readIORef glrefGetBufferParameteri64v+{-# INLINE glGetBufferParameteri64v #-}+type FuntypeFramebufferTexture =+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferTexture :: FunPtr FuntypeFramebufferTexture -> FuntypeFramebufferTexture+glrefFramebufferTexture :: IORef FuntypeFramebufferTexture+glrefFramebufferTexture = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferTexture #-}+glFramebufferTexture :: FuntypeFramebufferTexture+glFramebufferTexture = unsafePerformIO $ readIORef glrefFramebufferTexture+{-# INLINE glFramebufferTexture #-}+type FuntypeTexImage2DMultisample =+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexImage2DMultisample :: FunPtr FuntypeTexImage2DMultisample -> FuntypeTexImage2DMultisample+glrefTexImage2DMultisample :: IORef FuntypeTexImage2DMultisample+glrefTexImage2DMultisample = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexImage2DMultisample #-}+glTexImage2DMultisample :: FuntypeTexImage2DMultisample+glTexImage2DMultisample = unsafePerformIO $ readIORef glrefTexImage2DMultisample+{-# INLINE glTexImage2DMultisample #-}+type FuntypeTexImage3DMultisample =+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexImage3DMultisample :: FunPtr FuntypeTexImage3DMultisample -> FuntypeTexImage3DMultisample+glrefTexImage3DMultisample :: IORef FuntypeTexImage3DMultisample+glrefTexImage3DMultisample = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexImage3DMultisample #-}+glTexImage3DMultisample :: FuntypeTexImage3DMultisample+glTexImage3DMultisample = unsafePerformIO $ readIORef glrefTexImage3DMultisample+{-# INLINE glTexImage3DMultisample #-}+type FuntypeGetMultisamplefv =+    GLenum ->+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultisamplefv :: FunPtr FuntypeGetMultisamplefv -> FuntypeGetMultisamplefv+glrefGetMultisamplefv :: IORef FuntypeGetMultisamplefv+glrefGetMultisamplefv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultisamplefv #-}+glGetMultisamplefv :: FuntypeGetMultisamplefv+glGetMultisamplefv = unsafePerformIO $ readIORef glrefGetMultisamplefv+{-# INLINE glGetMultisamplefv #-}+type FuntypeSampleMaski =+    GLuint ->+    GLbitfield ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSampleMaski :: FunPtr FuntypeSampleMaski -> FuntypeSampleMaski+glrefSampleMaski :: IORef FuntypeSampleMaski+glrefSampleMaski = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSampleMaski #-}+glSampleMaski :: FuntypeSampleMaski+glSampleMaski = unsafePerformIO $ readIORef glrefSampleMaski+{-# INLINE glSampleMaski #-}++-- GL_VERSION_3_3++type FuntypeBindFragDataLocationIndexed =+    GLuint ->+    GLuint ->+    GLuint ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindFragDataLocationIndexed :: FunPtr FuntypeBindFragDataLocationIndexed -> FuntypeBindFragDataLocationIndexed+glrefBindFragDataLocationIndexed :: IORef FuntypeBindFragDataLocationIndexed+glrefBindFragDataLocationIndexed = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindFragDataLocationIndexed #-}+glBindFragDataLocationIndexed :: FuntypeBindFragDataLocationIndexed+glBindFragDataLocationIndexed = unsafePerformIO $ readIORef glrefBindFragDataLocationIndexed+{-# INLINE glBindFragDataLocationIndexed #-}+type FuntypeGetFragDataIndex =+    GLuint ->+    Ptr (GLchar) ->+    IO ( GLint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFragDataIndex :: FunPtr FuntypeGetFragDataIndex -> FuntypeGetFragDataIndex+glrefGetFragDataIndex :: IORef FuntypeGetFragDataIndex+glrefGetFragDataIndex = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFragDataIndex #-}+glGetFragDataIndex :: FuntypeGetFragDataIndex+glGetFragDataIndex = unsafePerformIO $ readIORef glrefGetFragDataIndex+{-# INLINE glGetFragDataIndex #-}+type FuntypeGenSamplers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenSamplers :: FunPtr FuntypeGenSamplers -> FuntypeGenSamplers+glrefGenSamplers :: IORef FuntypeGenSamplers+glrefGenSamplers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenSamplers #-}+glGenSamplers :: FuntypeGenSamplers+glGenSamplers = unsafePerformIO $ readIORef glrefGenSamplers+{-# INLINE glGenSamplers #-}+type FuntypeDeleteSamplers =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteSamplers :: FunPtr FuntypeDeleteSamplers -> FuntypeDeleteSamplers+glrefDeleteSamplers :: IORef FuntypeDeleteSamplers+glrefDeleteSamplers = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteSamplers #-}+glDeleteSamplers :: FuntypeDeleteSamplers+glDeleteSamplers = unsafePerformIO $ readIORef glrefDeleteSamplers+{-# INLINE glDeleteSamplers #-}+type FuntypeIsSampler =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsSampler :: FunPtr FuntypeIsSampler -> FuntypeIsSampler+glrefIsSampler :: IORef FuntypeIsSampler+glrefIsSampler = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsSampler #-}+glIsSampler :: FuntypeIsSampler+glIsSampler = unsafePerformIO $ readIORef glrefIsSampler+{-# INLINE glIsSampler #-}+type FuntypeBindSampler =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindSampler :: FunPtr FuntypeBindSampler -> FuntypeBindSampler+glrefBindSampler :: IORef FuntypeBindSampler+glrefBindSampler = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindSampler #-}+glBindSampler :: FuntypeBindSampler+glBindSampler = unsafePerformIO $ readIORef glrefBindSampler+{-# INLINE glBindSampler #-}+type FuntypeSamplerParameteri =+    GLuint ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSamplerParameteri :: FunPtr FuntypeSamplerParameteri -> FuntypeSamplerParameteri+glrefSamplerParameteri :: IORef FuntypeSamplerParameteri+glrefSamplerParameteri = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSamplerParameteri #-}+glSamplerParameteri :: FuntypeSamplerParameteri+glSamplerParameteri = unsafePerformIO $ readIORef glrefSamplerParameteri+{-# INLINE glSamplerParameteri #-}+type FuntypeSamplerParameteriv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSamplerParameteriv :: FunPtr FuntypeSamplerParameteriv -> FuntypeSamplerParameteriv+glrefSamplerParameteriv :: IORef FuntypeSamplerParameteriv+glrefSamplerParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSamplerParameteriv #-}+glSamplerParameteriv :: FuntypeSamplerParameteriv+glSamplerParameteriv = unsafePerformIO $ readIORef glrefSamplerParameteriv+{-# INLINE glSamplerParameteriv #-}+type FuntypeSamplerParameterf =+    GLuint ->+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSamplerParameterf :: FunPtr FuntypeSamplerParameterf -> FuntypeSamplerParameterf+glrefSamplerParameterf :: IORef FuntypeSamplerParameterf+glrefSamplerParameterf = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSamplerParameterf #-}+glSamplerParameterf :: FuntypeSamplerParameterf+glSamplerParameterf = unsafePerformIO $ readIORef glrefSamplerParameterf+{-# INLINE glSamplerParameterf #-}+type FuntypeSamplerParameterfv =+    GLuint ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSamplerParameterfv :: FunPtr FuntypeSamplerParameterfv -> FuntypeSamplerParameterfv+glrefSamplerParameterfv :: IORef FuntypeSamplerParameterfv+glrefSamplerParameterfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSamplerParameterfv #-}+glSamplerParameterfv :: FuntypeSamplerParameterfv+glSamplerParameterfv = unsafePerformIO $ readIORef glrefSamplerParameterfv+{-# INLINE glSamplerParameterfv #-}+type FuntypeSamplerParameterIiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSamplerParameterIiv :: FunPtr FuntypeSamplerParameterIiv -> FuntypeSamplerParameterIiv+glrefSamplerParameterIiv :: IORef FuntypeSamplerParameterIiv+glrefSamplerParameterIiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSamplerParameterIiv #-}+glSamplerParameterIiv :: FuntypeSamplerParameterIiv+glSamplerParameterIiv = unsafePerformIO $ readIORef glrefSamplerParameterIiv+{-# INLINE glSamplerParameterIiv #-}+type FuntypeSamplerParameterIuiv =+    GLuint ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynSamplerParameterIuiv :: FunPtr FuntypeSamplerParameterIuiv -> FuntypeSamplerParameterIuiv+glrefSamplerParameterIuiv :: IORef FuntypeSamplerParameterIuiv+glrefSamplerParameterIuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefSamplerParameterIuiv #-}+glSamplerParameterIuiv :: FuntypeSamplerParameterIuiv+glSamplerParameterIuiv = unsafePerformIO $ readIORef glrefSamplerParameterIuiv+{-# INLINE glSamplerParameterIuiv #-}+type FuntypeGetSamplerParameteriv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetSamplerParameteriv :: FunPtr FuntypeGetSamplerParameteriv -> FuntypeGetSamplerParameteriv+glrefGetSamplerParameteriv :: IORef FuntypeGetSamplerParameteriv+glrefGetSamplerParameteriv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetSamplerParameteriv #-}+glGetSamplerParameteriv :: FuntypeGetSamplerParameteriv+glGetSamplerParameteriv = unsafePerformIO $ readIORef glrefGetSamplerParameteriv+{-# INLINE glGetSamplerParameteriv #-}+type FuntypeGetSamplerParameterIiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetSamplerParameterIiv :: FunPtr FuntypeGetSamplerParameterIiv -> FuntypeGetSamplerParameterIiv+glrefGetSamplerParameterIiv :: IORef FuntypeGetSamplerParameterIiv+glrefGetSamplerParameterIiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetSamplerParameterIiv #-}+glGetSamplerParameterIiv :: FuntypeGetSamplerParameterIiv+glGetSamplerParameterIiv = unsafePerformIO $ readIORef glrefGetSamplerParameterIiv+{-# INLINE glGetSamplerParameterIiv #-}+type FuntypeGetSamplerParameterfv =+    GLuint ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetSamplerParameterfv :: FunPtr FuntypeGetSamplerParameterfv -> FuntypeGetSamplerParameterfv+glrefGetSamplerParameterfv :: IORef FuntypeGetSamplerParameterfv+glrefGetSamplerParameterfv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetSamplerParameterfv #-}+glGetSamplerParameterfv :: FuntypeGetSamplerParameterfv+glGetSamplerParameterfv = unsafePerformIO $ readIORef glrefGetSamplerParameterfv+{-# INLINE glGetSamplerParameterfv #-}+type FuntypeGetSamplerParameterIuiv =+    GLuint ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetSamplerParameterIuiv :: FunPtr FuntypeGetSamplerParameterIuiv -> FuntypeGetSamplerParameterIuiv+glrefGetSamplerParameterIuiv :: IORef FuntypeGetSamplerParameterIuiv+glrefGetSamplerParameterIuiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetSamplerParameterIuiv #-}+glGetSamplerParameterIuiv :: FuntypeGetSamplerParameterIuiv+glGetSamplerParameterIuiv = unsafePerformIO $ readIORef glrefGetSamplerParameterIuiv+{-# INLINE glGetSamplerParameterIuiv #-}+type FuntypeQueryCounter =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynQueryCounter :: FunPtr FuntypeQueryCounter -> FuntypeQueryCounter+glrefQueryCounter :: IORef FuntypeQueryCounter+glrefQueryCounter = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefQueryCounter #-}+glQueryCounter :: FuntypeQueryCounter+glQueryCounter = unsafePerformIO $ readIORef glrefQueryCounter+{-# INLINE glQueryCounter #-}+type FuntypeGetQueryObjecti64v =+    GLuint ->+    GLenum ->+    Ptr (GLint64) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetQueryObjecti64v :: FunPtr FuntypeGetQueryObjecti64v -> FuntypeGetQueryObjecti64v+glrefGetQueryObjecti64v :: IORef FuntypeGetQueryObjecti64v+glrefGetQueryObjecti64v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetQueryObjecti64v #-}+glGetQueryObjecti64v :: FuntypeGetQueryObjecti64v+glGetQueryObjecti64v = unsafePerformIO $ readIORef glrefGetQueryObjecti64v+{-# INLINE glGetQueryObjecti64v #-}+type FuntypeGetQueryObjectui64v =+    GLuint ->+    GLenum ->+    Ptr (GLuint64) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetQueryObjectui64v :: FunPtr FuntypeGetQueryObjectui64v -> FuntypeGetQueryObjectui64v+glrefGetQueryObjectui64v :: IORef FuntypeGetQueryObjectui64v+glrefGetQueryObjectui64v = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetQueryObjectui64v #-}+glGetQueryObjectui64v :: FuntypeGetQueryObjectui64v+glGetQueryObjectui64v = unsafePerformIO $ readIORef glrefGetQueryObjectui64v+{-# INLINE glGetQueryObjectui64v #-}+type FuntypeVertexAttribDivisor =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribDivisor :: FunPtr FuntypeVertexAttribDivisor -> FuntypeVertexAttribDivisor+glrefVertexAttribDivisor :: IORef FuntypeVertexAttribDivisor+glrefVertexAttribDivisor = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribDivisor #-}+glVertexAttribDivisor :: FuntypeVertexAttribDivisor+glVertexAttribDivisor = unsafePerformIO $ readIORef glrefVertexAttribDivisor+{-# INLINE glVertexAttribDivisor #-}+type FuntypeVertexAttribP1ui =+    GLuint ->+    GLenum ->+    GLboolean ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP1ui :: FunPtr FuntypeVertexAttribP1ui -> FuntypeVertexAttribP1ui+glrefVertexAttribP1ui :: IORef FuntypeVertexAttribP1ui+glrefVertexAttribP1ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP1ui #-}+glVertexAttribP1ui :: FuntypeVertexAttribP1ui+glVertexAttribP1ui = unsafePerformIO $ readIORef glrefVertexAttribP1ui+{-# INLINE glVertexAttribP1ui #-}+type FuntypeVertexAttribP1uiv =+    GLuint ->+    GLenum ->+    GLboolean ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP1uiv :: FunPtr FuntypeVertexAttribP1uiv -> FuntypeVertexAttribP1uiv+glrefVertexAttribP1uiv :: IORef FuntypeVertexAttribP1uiv+glrefVertexAttribP1uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP1uiv #-}+glVertexAttribP1uiv :: FuntypeVertexAttribP1uiv+glVertexAttribP1uiv = unsafePerformIO $ readIORef glrefVertexAttribP1uiv+{-# INLINE glVertexAttribP1uiv #-}+type FuntypeVertexAttribP2ui =+    GLuint ->+    GLenum ->+    GLboolean ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP2ui :: FunPtr FuntypeVertexAttribP2ui -> FuntypeVertexAttribP2ui+glrefVertexAttribP2ui :: IORef FuntypeVertexAttribP2ui+glrefVertexAttribP2ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP2ui #-}+glVertexAttribP2ui :: FuntypeVertexAttribP2ui+glVertexAttribP2ui = unsafePerformIO $ readIORef glrefVertexAttribP2ui+{-# INLINE glVertexAttribP2ui #-}+type FuntypeVertexAttribP2uiv =+    GLuint ->+    GLenum ->+    GLboolean ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP2uiv :: FunPtr FuntypeVertexAttribP2uiv -> FuntypeVertexAttribP2uiv+glrefVertexAttribP2uiv :: IORef FuntypeVertexAttribP2uiv+glrefVertexAttribP2uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP2uiv #-}+glVertexAttribP2uiv :: FuntypeVertexAttribP2uiv+glVertexAttribP2uiv = unsafePerformIO $ readIORef glrefVertexAttribP2uiv+{-# INLINE glVertexAttribP2uiv #-}+type FuntypeVertexAttribP3ui =+    GLuint ->+    GLenum ->+    GLboolean ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP3ui :: FunPtr FuntypeVertexAttribP3ui -> FuntypeVertexAttribP3ui+glrefVertexAttribP3ui :: IORef FuntypeVertexAttribP3ui+glrefVertexAttribP3ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP3ui #-}+glVertexAttribP3ui :: FuntypeVertexAttribP3ui+glVertexAttribP3ui = unsafePerformIO $ readIORef glrefVertexAttribP3ui+{-# INLINE glVertexAttribP3ui #-}+type FuntypeVertexAttribP3uiv =+    GLuint ->+    GLenum ->+    GLboolean ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP3uiv :: FunPtr FuntypeVertexAttribP3uiv -> FuntypeVertexAttribP3uiv+glrefVertexAttribP3uiv :: IORef FuntypeVertexAttribP3uiv+glrefVertexAttribP3uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP3uiv #-}+glVertexAttribP3uiv :: FuntypeVertexAttribP3uiv+glVertexAttribP3uiv = unsafePerformIO $ readIORef glrefVertexAttribP3uiv+{-# INLINE glVertexAttribP3uiv #-}+type FuntypeVertexAttribP4ui =+    GLuint ->+    GLenum ->+    GLboolean ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP4ui :: FunPtr FuntypeVertexAttribP4ui -> FuntypeVertexAttribP4ui+glrefVertexAttribP4ui :: IORef FuntypeVertexAttribP4ui+glrefVertexAttribP4ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP4ui #-}+glVertexAttribP4ui :: FuntypeVertexAttribP4ui+glVertexAttribP4ui = unsafePerformIO $ readIORef glrefVertexAttribP4ui+{-# INLINE glVertexAttribP4ui #-}+type FuntypeVertexAttribP4uiv =+    GLuint ->+    GLenum ->+    GLboolean ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexAttribP4uiv :: FunPtr FuntypeVertexAttribP4uiv -> FuntypeVertexAttribP4uiv+glrefVertexAttribP4uiv :: IORef FuntypeVertexAttribP4uiv+glrefVertexAttribP4uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexAttribP4uiv #-}+glVertexAttribP4uiv :: FuntypeVertexAttribP4uiv+glVertexAttribP4uiv = unsafePerformIO $ readIORef glrefVertexAttribP4uiv+{-# INLINE glVertexAttribP4uiv #-}++-- GL_ARB_texture_storage++type FuntypeTexStorage1D =+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexStorage1D :: FunPtr FuntypeTexStorage1D -> FuntypeTexStorage1D+glrefTexStorage1D :: IORef FuntypeTexStorage1D+glrefTexStorage1D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexStorage1D #-}+glTexStorage1D :: FuntypeTexStorage1D+glTexStorage1D = unsafePerformIO $ readIORef glrefTexStorage1D+{-# INLINE glTexStorage1D #-}+type FuntypeTexStorage2D =+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexStorage2D :: FunPtr FuntypeTexStorage2D -> FuntypeTexStorage2D+glrefTexStorage2D :: IORef FuntypeTexStorage2D+glrefTexStorage2D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexStorage2D #-}+glTexStorage2D :: FuntypeTexStorage2D+glTexStorage2D = unsafePerformIO $ readIORef glrefTexStorage2D+{-# INLINE glTexStorage2D #-}+type FuntypeTexStorage3D =+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexStorage3D :: FunPtr FuntypeTexStorage3D -> FuntypeTexStorage3D+glrefTexStorage3D :: IORef FuntypeTexStorage3D+glrefTexStorage3D = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexStorage3D #-}+glTexStorage3D :: FuntypeTexStorage3D+glTexStorage3D = unsafePerformIO $ readIORef glrefTexStorage3D+{-# INLINE glTexStorage3D #-}++-- GL_KHR_debug++type FuntypeDebugMessageControl =+    GLenum ->+    GLenum ->+    GLenum ->+    GLsizei ->+    Ptr (GLuint) ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDebugMessageControl :: FunPtr FuntypeDebugMessageControl -> FuntypeDebugMessageControl+glrefDebugMessageControl :: IORef FuntypeDebugMessageControl+glrefDebugMessageControl = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDebugMessageControl #-}+glDebugMessageControl :: FuntypeDebugMessageControl+glDebugMessageControl = unsafePerformIO $ readIORef glrefDebugMessageControl+{-# INLINE glDebugMessageControl #-}+type FuntypeDebugMessageInsert =+    GLenum ->+    GLenum ->+    GLuint ->+    GLenum ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDebugMessageInsert :: FunPtr FuntypeDebugMessageInsert -> FuntypeDebugMessageInsert+glrefDebugMessageInsert :: IORef FuntypeDebugMessageInsert+glrefDebugMessageInsert = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDebugMessageInsert #-}+glDebugMessageInsert :: FuntypeDebugMessageInsert+glDebugMessageInsert = unsafePerformIO $ readIORef glrefDebugMessageInsert+{-# INLINE glDebugMessageInsert #-}+type FuntypeDebugMessageCallback =+    GLDEBUGPROC ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDebugMessageCallback :: FunPtr FuntypeDebugMessageCallback -> FuntypeDebugMessageCallback+glrefDebugMessageCallback :: IORef FuntypeDebugMessageCallback+glrefDebugMessageCallback = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDebugMessageCallback #-}+glDebugMessageCallback :: FuntypeDebugMessageCallback+glDebugMessageCallback = unsafePerformIO $ readIORef glrefDebugMessageCallback+{-# INLINE glDebugMessageCallback #-}+type FuntypeGetDebugMessageLog =+    GLuint ->+    GLsizei ->+    Ptr (GLenum) ->+    Ptr (GLenum) ->+    Ptr (GLuint) ->+    Ptr (GLenum) ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( GLuint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetDebugMessageLog :: FunPtr FuntypeGetDebugMessageLog -> FuntypeGetDebugMessageLog+glrefGetDebugMessageLog :: IORef FuntypeGetDebugMessageLog+glrefGetDebugMessageLog = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetDebugMessageLog #-}+glGetDebugMessageLog :: FuntypeGetDebugMessageLog+glGetDebugMessageLog = unsafePerformIO $ readIORef glrefGetDebugMessageLog+{-# INLINE glGetDebugMessageLog #-}+type FuntypePushDebugGroup =+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPushDebugGroup :: FunPtr FuntypePushDebugGroup -> FuntypePushDebugGroup+glrefPushDebugGroup :: IORef FuntypePushDebugGroup+glrefPushDebugGroup = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPushDebugGroup #-}+glPushDebugGroup :: FuntypePushDebugGroup+glPushDebugGroup = unsafePerformIO $ readIORef glrefPushDebugGroup+{-# INLINE glPushDebugGroup #-}+type FuntypePopDebugGroup =+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPopDebugGroup :: FunPtr FuntypePopDebugGroup -> FuntypePopDebugGroup+glrefPopDebugGroup :: IORef FuntypePopDebugGroup+glrefPopDebugGroup = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPopDebugGroup #-}+glPopDebugGroup :: FuntypePopDebugGroup+glPopDebugGroup = unsafePerformIO $ readIORef glrefPopDebugGroup+{-# INLINE glPopDebugGroup #-}+type FuntypeObjectLabel =+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynObjectLabel :: FunPtr FuntypeObjectLabel -> FuntypeObjectLabel+glrefObjectLabel :: IORef FuntypeObjectLabel+glrefObjectLabel = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefObjectLabel #-}+glObjectLabel :: FuntypeObjectLabel+glObjectLabel = unsafePerformIO $ readIORef glrefObjectLabel+{-# INLINE glObjectLabel #-}+type FuntypeGetObjectLabel =+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetObjectLabel :: FunPtr FuntypeGetObjectLabel -> FuntypeGetObjectLabel+glrefGetObjectLabel :: IORef FuntypeGetObjectLabel+glrefGetObjectLabel = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetObjectLabel #-}+glGetObjectLabel :: FuntypeGetObjectLabel+glGetObjectLabel = unsafePerformIO $ readIORef glrefGetObjectLabel+{-# INLINE glGetObjectLabel #-}+type FuntypeObjectPtrLabel =+    Ptr () ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynObjectPtrLabel :: FunPtr FuntypeObjectPtrLabel -> FuntypeObjectPtrLabel+glrefObjectPtrLabel :: IORef FuntypeObjectPtrLabel+glrefObjectPtrLabel = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefObjectPtrLabel #-}+glObjectPtrLabel :: FuntypeObjectPtrLabel+glObjectPtrLabel = unsafePerformIO $ readIORef glrefObjectPtrLabel+{-# INLINE glObjectPtrLabel #-}+type FuntypeGetObjectPtrLabel =+    Ptr () ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetObjectPtrLabel :: FunPtr FuntypeGetObjectPtrLabel -> FuntypeGetObjectPtrLabel+glrefGetObjectPtrLabel :: IORef FuntypeGetObjectPtrLabel+glrefGetObjectPtrLabel = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetObjectPtrLabel #-}+glGetObjectPtrLabel :: FuntypeGetObjectPtrLabel+glGetObjectPtrLabel = unsafePerformIO $ readIORef glrefGetObjectPtrLabel+{-# INLINE glGetObjectPtrLabel #-}+type FuntypeGetPointerv =+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetPointerv :: FunPtr FuntypeGetPointerv -> FuntypeGetPointerv+glrefGetPointerv :: IORef FuntypeGetPointerv+glrefGetPointerv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetPointerv #-}+glGetPointerv :: FuntypeGetPointerv+glGetPointerv = unsafePerformIO $ readIORef glrefGetPointerv+{-# INLINE glGetPointerv #-}+type FuntypeDebugMessageControlKHR =+    GLenum ->+    GLenum ->+    GLenum ->+    GLsizei ->+    Ptr (GLuint) ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDebugMessageControlKHR :: FunPtr FuntypeDebugMessageControlKHR -> FuntypeDebugMessageControlKHR+glrefDebugMessageControlKHR :: IORef FuntypeDebugMessageControlKHR+glrefDebugMessageControlKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDebugMessageControlKHR #-}+glDebugMessageControlKHR :: FuntypeDebugMessageControlKHR+glDebugMessageControlKHR = unsafePerformIO $ readIORef glrefDebugMessageControlKHR+{-# INLINE glDebugMessageControlKHR #-}+type FuntypeDebugMessageInsertKHR =+    GLenum ->+    GLenum ->+    GLuint ->+    GLenum ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDebugMessageInsertKHR :: FunPtr FuntypeDebugMessageInsertKHR -> FuntypeDebugMessageInsertKHR+glrefDebugMessageInsertKHR :: IORef FuntypeDebugMessageInsertKHR+glrefDebugMessageInsertKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDebugMessageInsertKHR #-}+glDebugMessageInsertKHR :: FuntypeDebugMessageInsertKHR+glDebugMessageInsertKHR = unsafePerformIO $ readIORef glrefDebugMessageInsertKHR+{-# INLINE glDebugMessageInsertKHR #-}+type FuntypeDebugMessageCallbackKHR =+    GLDEBUGPROCKHR ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDebugMessageCallbackKHR :: FunPtr FuntypeDebugMessageCallbackKHR -> FuntypeDebugMessageCallbackKHR+glrefDebugMessageCallbackKHR :: IORef FuntypeDebugMessageCallbackKHR+glrefDebugMessageCallbackKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDebugMessageCallbackKHR #-}+glDebugMessageCallbackKHR :: FuntypeDebugMessageCallbackKHR+glDebugMessageCallbackKHR = unsafePerformIO $ readIORef glrefDebugMessageCallbackKHR+{-# INLINE glDebugMessageCallbackKHR #-}+type FuntypeGetDebugMessageLogKHR =+    GLuint ->+    GLsizei ->+    Ptr (GLenum) ->+    Ptr (GLenum) ->+    Ptr (GLuint) ->+    Ptr (GLenum) ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( GLuint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetDebugMessageLogKHR :: FunPtr FuntypeGetDebugMessageLogKHR -> FuntypeGetDebugMessageLogKHR+glrefGetDebugMessageLogKHR :: IORef FuntypeGetDebugMessageLogKHR+glrefGetDebugMessageLogKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetDebugMessageLogKHR #-}+glGetDebugMessageLogKHR :: FuntypeGetDebugMessageLogKHR+glGetDebugMessageLogKHR = unsafePerformIO $ readIORef glrefGetDebugMessageLogKHR+{-# INLINE glGetDebugMessageLogKHR #-}+type FuntypePushDebugGroupKHR =+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPushDebugGroupKHR :: FunPtr FuntypePushDebugGroupKHR -> FuntypePushDebugGroupKHR+glrefPushDebugGroupKHR :: IORef FuntypePushDebugGroupKHR+glrefPushDebugGroupKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPushDebugGroupKHR #-}+glPushDebugGroupKHR :: FuntypePushDebugGroupKHR+glPushDebugGroupKHR = unsafePerformIO $ readIORef glrefPushDebugGroupKHR+{-# INLINE glPushDebugGroupKHR #-}+type FuntypePopDebugGroupKHR =+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPopDebugGroupKHR :: FunPtr FuntypePopDebugGroupKHR -> FuntypePopDebugGroupKHR+glrefPopDebugGroupKHR :: IORef FuntypePopDebugGroupKHR+glrefPopDebugGroupKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPopDebugGroupKHR #-}+glPopDebugGroupKHR :: FuntypePopDebugGroupKHR+glPopDebugGroupKHR = unsafePerformIO $ readIORef glrefPopDebugGroupKHR+{-# INLINE glPopDebugGroupKHR #-}+type FuntypeObjectLabelKHR =+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynObjectLabelKHR :: FunPtr FuntypeObjectLabelKHR -> FuntypeObjectLabelKHR+glrefObjectLabelKHR :: IORef FuntypeObjectLabelKHR+glrefObjectLabelKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefObjectLabelKHR #-}+glObjectLabelKHR :: FuntypeObjectLabelKHR+glObjectLabelKHR = unsafePerformIO $ readIORef glrefObjectLabelKHR+{-# INLINE glObjectLabelKHR #-}+type FuntypeGetObjectLabelKHR =+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetObjectLabelKHR :: FunPtr FuntypeGetObjectLabelKHR -> FuntypeGetObjectLabelKHR+glrefGetObjectLabelKHR :: IORef FuntypeGetObjectLabelKHR+glrefGetObjectLabelKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetObjectLabelKHR #-}+glGetObjectLabelKHR :: FuntypeGetObjectLabelKHR+glGetObjectLabelKHR = unsafePerformIO $ readIORef glrefGetObjectLabelKHR+{-# INLINE glGetObjectLabelKHR #-}+type FuntypeObjectPtrLabelKHR =+    Ptr () ->+    GLsizei ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynObjectPtrLabelKHR :: FunPtr FuntypeObjectPtrLabelKHR -> FuntypeObjectPtrLabelKHR+glrefObjectPtrLabelKHR :: IORef FuntypeObjectPtrLabelKHR+glrefObjectPtrLabelKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefObjectPtrLabelKHR #-}+glObjectPtrLabelKHR :: FuntypeObjectPtrLabelKHR+glObjectPtrLabelKHR = unsafePerformIO $ readIORef glrefObjectPtrLabelKHR+{-# INLINE glObjectPtrLabelKHR #-}+type FuntypeGetObjectPtrLabelKHR =+    Ptr () ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetObjectPtrLabelKHR :: FunPtr FuntypeGetObjectPtrLabelKHR -> FuntypeGetObjectPtrLabelKHR+glrefGetObjectPtrLabelKHR :: IORef FuntypeGetObjectPtrLabelKHR+glrefGetObjectPtrLabelKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetObjectPtrLabelKHR #-}+glGetObjectPtrLabelKHR :: FuntypeGetObjectPtrLabelKHR+glGetObjectPtrLabelKHR = unsafePerformIO $ readIORef glrefGetObjectPtrLabelKHR+{-# INLINE glGetObjectPtrLabelKHR #-}+type FuntypeGetPointervKHR =+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetPointervKHR :: FunPtr FuntypeGetPointervKHR -> FuntypeGetPointervKHR+glrefGetPointervKHR :: IORef FuntypeGetPointervKHR+glrefGetPointervKHR = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetPointervKHR #-}+glGetPointervKHR :: FuntypeGetPointervKHR+glGetPointervKHR = unsafePerformIO $ readIORef glrefGetPointervKHR+{-# INLINE glGetPointervKHR #-}++-- GL_EXT_direct_state_access++type FuntypeMatrixLoadfEXT =+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixLoadfEXT :: FunPtr FuntypeMatrixLoadfEXT -> FuntypeMatrixLoadfEXT+glrefMatrixLoadfEXT :: IORef FuntypeMatrixLoadfEXT+glrefMatrixLoadfEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixLoadfEXT #-}+glMatrixLoadfEXT :: FuntypeMatrixLoadfEXT+glMatrixLoadfEXT = unsafePerformIO $ readIORef glrefMatrixLoadfEXT+{-# INLINE glMatrixLoadfEXT #-}+type FuntypeMatrixLoaddEXT =+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixLoaddEXT :: FunPtr FuntypeMatrixLoaddEXT -> FuntypeMatrixLoaddEXT+glrefMatrixLoaddEXT :: IORef FuntypeMatrixLoaddEXT+glrefMatrixLoaddEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixLoaddEXT #-}+glMatrixLoaddEXT :: FuntypeMatrixLoaddEXT+glMatrixLoaddEXT = unsafePerformIO $ readIORef glrefMatrixLoaddEXT+{-# INLINE glMatrixLoaddEXT #-}+type FuntypeMatrixMultfEXT =+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixMultfEXT :: FunPtr FuntypeMatrixMultfEXT -> FuntypeMatrixMultfEXT+glrefMatrixMultfEXT :: IORef FuntypeMatrixMultfEXT+glrefMatrixMultfEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixMultfEXT #-}+glMatrixMultfEXT :: FuntypeMatrixMultfEXT+glMatrixMultfEXT = unsafePerformIO $ readIORef glrefMatrixMultfEXT+{-# INLINE glMatrixMultfEXT #-}+type FuntypeMatrixMultdEXT =+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixMultdEXT :: FunPtr FuntypeMatrixMultdEXT -> FuntypeMatrixMultdEXT+glrefMatrixMultdEXT :: IORef FuntypeMatrixMultdEXT+glrefMatrixMultdEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixMultdEXT #-}+glMatrixMultdEXT :: FuntypeMatrixMultdEXT+glMatrixMultdEXT = unsafePerformIO $ readIORef glrefMatrixMultdEXT+{-# INLINE glMatrixMultdEXT #-}+type FuntypeMatrixLoadIdentityEXT =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixLoadIdentityEXT :: FunPtr FuntypeMatrixLoadIdentityEXT -> FuntypeMatrixLoadIdentityEXT+glrefMatrixLoadIdentityEXT :: IORef FuntypeMatrixLoadIdentityEXT+glrefMatrixLoadIdentityEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixLoadIdentityEXT #-}+glMatrixLoadIdentityEXT :: FuntypeMatrixLoadIdentityEXT+glMatrixLoadIdentityEXT = unsafePerformIO $ readIORef glrefMatrixLoadIdentityEXT+{-# INLINE glMatrixLoadIdentityEXT #-}+type FuntypeMatrixRotatefEXT =+    GLenum ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixRotatefEXT :: FunPtr FuntypeMatrixRotatefEXT -> FuntypeMatrixRotatefEXT+glrefMatrixRotatefEXT :: IORef FuntypeMatrixRotatefEXT+glrefMatrixRotatefEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixRotatefEXT #-}+glMatrixRotatefEXT :: FuntypeMatrixRotatefEXT+glMatrixRotatefEXT = unsafePerformIO $ readIORef glrefMatrixRotatefEXT+{-# INLINE glMatrixRotatefEXT #-}+type FuntypeMatrixRotatedEXT =+    GLenum ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixRotatedEXT :: FunPtr FuntypeMatrixRotatedEXT -> FuntypeMatrixRotatedEXT+glrefMatrixRotatedEXT :: IORef FuntypeMatrixRotatedEXT+glrefMatrixRotatedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixRotatedEXT #-}+glMatrixRotatedEXT :: FuntypeMatrixRotatedEXT+glMatrixRotatedEXT = unsafePerformIO $ readIORef glrefMatrixRotatedEXT+{-# INLINE glMatrixRotatedEXT #-}+type FuntypeMatrixScalefEXT =+    GLenum ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixScalefEXT :: FunPtr FuntypeMatrixScalefEXT -> FuntypeMatrixScalefEXT+glrefMatrixScalefEXT :: IORef FuntypeMatrixScalefEXT+glrefMatrixScalefEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixScalefEXT #-}+glMatrixScalefEXT :: FuntypeMatrixScalefEXT+glMatrixScalefEXT = unsafePerformIO $ readIORef glrefMatrixScalefEXT+{-# INLINE glMatrixScalefEXT #-}+type FuntypeMatrixScaledEXT =+    GLenum ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixScaledEXT :: FunPtr FuntypeMatrixScaledEXT -> FuntypeMatrixScaledEXT+glrefMatrixScaledEXT :: IORef FuntypeMatrixScaledEXT+glrefMatrixScaledEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixScaledEXT #-}+glMatrixScaledEXT :: FuntypeMatrixScaledEXT+glMatrixScaledEXT = unsafePerformIO $ readIORef glrefMatrixScaledEXT+{-# INLINE glMatrixScaledEXT #-}+type FuntypeMatrixTranslatefEXT =+    GLenum ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixTranslatefEXT :: FunPtr FuntypeMatrixTranslatefEXT -> FuntypeMatrixTranslatefEXT+glrefMatrixTranslatefEXT :: IORef FuntypeMatrixTranslatefEXT+glrefMatrixTranslatefEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixTranslatefEXT #-}+glMatrixTranslatefEXT :: FuntypeMatrixTranslatefEXT+glMatrixTranslatefEXT = unsafePerformIO $ readIORef glrefMatrixTranslatefEXT+{-# INLINE glMatrixTranslatefEXT #-}+type FuntypeMatrixTranslatedEXT =+    GLenum ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixTranslatedEXT :: FunPtr FuntypeMatrixTranslatedEXT -> FuntypeMatrixTranslatedEXT+glrefMatrixTranslatedEXT :: IORef FuntypeMatrixTranslatedEXT+glrefMatrixTranslatedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixTranslatedEXT #-}+glMatrixTranslatedEXT :: FuntypeMatrixTranslatedEXT+glMatrixTranslatedEXT = unsafePerformIO $ readIORef glrefMatrixTranslatedEXT+{-# INLINE glMatrixTranslatedEXT #-}+type FuntypeMatrixFrustumEXT =+    GLenum ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixFrustumEXT :: FunPtr FuntypeMatrixFrustumEXT -> FuntypeMatrixFrustumEXT+glrefMatrixFrustumEXT :: IORef FuntypeMatrixFrustumEXT+glrefMatrixFrustumEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixFrustumEXT #-}+glMatrixFrustumEXT :: FuntypeMatrixFrustumEXT+glMatrixFrustumEXT = unsafePerformIO $ readIORef glrefMatrixFrustumEXT+{-# INLINE glMatrixFrustumEXT #-}+type FuntypeMatrixOrthoEXT =+    GLenum ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixOrthoEXT :: FunPtr FuntypeMatrixOrthoEXT -> FuntypeMatrixOrthoEXT+glrefMatrixOrthoEXT :: IORef FuntypeMatrixOrthoEXT+glrefMatrixOrthoEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixOrthoEXT #-}+glMatrixOrthoEXT :: FuntypeMatrixOrthoEXT+glMatrixOrthoEXT = unsafePerformIO $ readIORef glrefMatrixOrthoEXT+{-# INLINE glMatrixOrthoEXT #-}+type FuntypeMatrixPopEXT =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixPopEXT :: FunPtr FuntypeMatrixPopEXT -> FuntypeMatrixPopEXT+glrefMatrixPopEXT :: IORef FuntypeMatrixPopEXT+glrefMatrixPopEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixPopEXT #-}+glMatrixPopEXT :: FuntypeMatrixPopEXT+glMatrixPopEXT = unsafePerformIO $ readIORef glrefMatrixPopEXT+{-# INLINE glMatrixPopEXT #-}+type FuntypeMatrixPushEXT =+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixPushEXT :: FunPtr FuntypeMatrixPushEXT -> FuntypeMatrixPushEXT+glrefMatrixPushEXT :: IORef FuntypeMatrixPushEXT+glrefMatrixPushEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixPushEXT #-}+glMatrixPushEXT :: FuntypeMatrixPushEXT+glMatrixPushEXT = unsafePerformIO $ readIORef glrefMatrixPushEXT+{-# INLINE glMatrixPushEXT #-}+type FuntypeClientAttribDefaultEXT =+    GLbitfield ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClientAttribDefaultEXT :: FunPtr FuntypeClientAttribDefaultEXT -> FuntypeClientAttribDefaultEXT+glrefClientAttribDefaultEXT :: IORef FuntypeClientAttribDefaultEXT+glrefClientAttribDefaultEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClientAttribDefaultEXT #-}+glClientAttribDefaultEXT :: FuntypeClientAttribDefaultEXT+glClientAttribDefaultEXT = unsafePerformIO $ readIORef glrefClientAttribDefaultEXT+{-# INLINE glClientAttribDefaultEXT #-}+type FuntypePushClientAttribDefaultEXT =+    GLbitfield ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynPushClientAttribDefaultEXT :: FunPtr FuntypePushClientAttribDefaultEXT -> FuntypePushClientAttribDefaultEXT+glrefPushClientAttribDefaultEXT :: IORef FuntypePushClientAttribDefaultEXT+glrefPushClientAttribDefaultEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefPushClientAttribDefaultEXT #-}+glPushClientAttribDefaultEXT :: FuntypePushClientAttribDefaultEXT+glPushClientAttribDefaultEXT = unsafePerformIO $ readIORef glrefPushClientAttribDefaultEXT+{-# INLINE glPushClientAttribDefaultEXT #-}+type FuntypeTextureParameterfEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureParameterfEXT :: FunPtr FuntypeTextureParameterfEXT -> FuntypeTextureParameterfEXT+glrefTextureParameterfEXT :: IORef FuntypeTextureParameterfEXT+glrefTextureParameterfEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureParameterfEXT #-}+glTextureParameterfEXT :: FuntypeTextureParameterfEXT+glTextureParameterfEXT = unsafePerformIO $ readIORef glrefTextureParameterfEXT+{-# INLINE glTextureParameterfEXT #-}+type FuntypeTextureParameterfvEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureParameterfvEXT :: FunPtr FuntypeTextureParameterfvEXT -> FuntypeTextureParameterfvEXT+glrefTextureParameterfvEXT :: IORef FuntypeTextureParameterfvEXT+glrefTextureParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureParameterfvEXT #-}+glTextureParameterfvEXT :: FuntypeTextureParameterfvEXT+glTextureParameterfvEXT = unsafePerformIO $ readIORef glrefTextureParameterfvEXT+{-# INLINE glTextureParameterfvEXT #-}+type FuntypeTextureParameteriEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureParameteriEXT :: FunPtr FuntypeTextureParameteriEXT -> FuntypeTextureParameteriEXT+glrefTextureParameteriEXT :: IORef FuntypeTextureParameteriEXT+glrefTextureParameteriEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureParameteriEXT #-}+glTextureParameteriEXT :: FuntypeTextureParameteriEXT+glTextureParameteriEXT = unsafePerformIO $ readIORef glrefTextureParameteriEXT+{-# INLINE glTextureParameteriEXT #-}+type FuntypeTextureParameterivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureParameterivEXT :: FunPtr FuntypeTextureParameterivEXT -> FuntypeTextureParameterivEXT+glrefTextureParameterivEXT :: IORef FuntypeTextureParameterivEXT+glrefTextureParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureParameterivEXT #-}+glTextureParameterivEXT :: FuntypeTextureParameterivEXT+glTextureParameterivEXT = unsafePerformIO $ readIORef glrefTextureParameterivEXT+{-# INLINE glTextureParameterivEXT #-}+type FuntypeTextureImage1DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureImage1DEXT :: FunPtr FuntypeTextureImage1DEXT -> FuntypeTextureImage1DEXT+glrefTextureImage1DEXT :: IORef FuntypeTextureImage1DEXT+glrefTextureImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureImage1DEXT #-}+glTextureImage1DEXT :: FuntypeTextureImage1DEXT+glTextureImage1DEXT = unsafePerformIO $ readIORef glrefTextureImage1DEXT+{-# INLINE glTextureImage1DEXT #-}+type FuntypeTextureImage2DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureImage2DEXT :: FunPtr FuntypeTextureImage2DEXT -> FuntypeTextureImage2DEXT+glrefTextureImage2DEXT :: IORef FuntypeTextureImage2DEXT+glrefTextureImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureImage2DEXT #-}+glTextureImage2DEXT :: FuntypeTextureImage2DEXT+glTextureImage2DEXT = unsafePerformIO $ readIORef glrefTextureImage2DEXT+{-# INLINE glTextureImage2DEXT #-}+type FuntypeTextureSubImage1DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureSubImage1DEXT :: FunPtr FuntypeTextureSubImage1DEXT -> FuntypeTextureSubImage1DEXT+glrefTextureSubImage1DEXT :: IORef FuntypeTextureSubImage1DEXT+glrefTextureSubImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureSubImage1DEXT #-}+glTextureSubImage1DEXT :: FuntypeTextureSubImage1DEXT+glTextureSubImage1DEXT = unsafePerformIO $ readIORef glrefTextureSubImage1DEXT+{-# INLINE glTextureSubImage1DEXT #-}+type FuntypeTextureSubImage2DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureSubImage2DEXT :: FunPtr FuntypeTextureSubImage2DEXT -> FuntypeTextureSubImage2DEXT+glrefTextureSubImage2DEXT :: IORef FuntypeTextureSubImage2DEXT+glrefTextureSubImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureSubImage2DEXT #-}+glTextureSubImage2DEXT :: FuntypeTextureSubImage2DEXT+glTextureSubImage2DEXT = unsafePerformIO $ readIORef glrefTextureSubImage2DEXT+{-# INLINE glTextureSubImage2DEXT #-}+type FuntypeCopyTextureImage1DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTextureImage1DEXT :: FunPtr FuntypeCopyTextureImage1DEXT -> FuntypeCopyTextureImage1DEXT+glrefCopyTextureImage1DEXT :: IORef FuntypeCopyTextureImage1DEXT+glrefCopyTextureImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTextureImage1DEXT #-}+glCopyTextureImage1DEXT :: FuntypeCopyTextureImage1DEXT+glCopyTextureImage1DEXT = unsafePerformIO $ readIORef glrefCopyTextureImage1DEXT+{-# INLINE glCopyTextureImage1DEXT #-}+type FuntypeCopyTextureImage2DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTextureImage2DEXT :: FunPtr FuntypeCopyTextureImage2DEXT -> FuntypeCopyTextureImage2DEXT+glrefCopyTextureImage2DEXT :: IORef FuntypeCopyTextureImage2DEXT+glrefCopyTextureImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTextureImage2DEXT #-}+glCopyTextureImage2DEXT :: FuntypeCopyTextureImage2DEXT+glCopyTextureImage2DEXT = unsafePerformIO $ readIORef glrefCopyTextureImage2DEXT+{-# INLINE glCopyTextureImage2DEXT #-}+type FuntypeCopyTextureSubImage1DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTextureSubImage1DEXT :: FunPtr FuntypeCopyTextureSubImage1DEXT -> FuntypeCopyTextureSubImage1DEXT+glrefCopyTextureSubImage1DEXT :: IORef FuntypeCopyTextureSubImage1DEXT+glrefCopyTextureSubImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTextureSubImage1DEXT #-}+glCopyTextureSubImage1DEXT :: FuntypeCopyTextureSubImage1DEXT+glCopyTextureSubImage1DEXT = unsafePerformIO $ readIORef glrefCopyTextureSubImage1DEXT+{-# INLINE glCopyTextureSubImage1DEXT #-}+type FuntypeCopyTextureSubImage2DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTextureSubImage2DEXT :: FunPtr FuntypeCopyTextureSubImage2DEXT -> FuntypeCopyTextureSubImage2DEXT+glrefCopyTextureSubImage2DEXT :: IORef FuntypeCopyTextureSubImage2DEXT+glrefCopyTextureSubImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTextureSubImage2DEXT #-}+glCopyTextureSubImage2DEXT :: FuntypeCopyTextureSubImage2DEXT+glCopyTextureSubImage2DEXT = unsafePerformIO $ readIORef glrefCopyTextureSubImage2DEXT+{-# INLINE glCopyTextureSubImage2DEXT #-}+type FuntypeGetTextureImageEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureImageEXT :: FunPtr FuntypeGetTextureImageEXT -> FuntypeGetTextureImageEXT+glrefGetTextureImageEXT :: IORef FuntypeGetTextureImageEXT+glrefGetTextureImageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureImageEXT #-}+glGetTextureImageEXT :: FuntypeGetTextureImageEXT+glGetTextureImageEXT = unsafePerformIO $ readIORef glrefGetTextureImageEXT+{-# INLINE glGetTextureImageEXT #-}+type FuntypeGetTextureParameterfvEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureParameterfvEXT :: FunPtr FuntypeGetTextureParameterfvEXT -> FuntypeGetTextureParameterfvEXT+glrefGetTextureParameterfvEXT :: IORef FuntypeGetTextureParameterfvEXT+glrefGetTextureParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureParameterfvEXT #-}+glGetTextureParameterfvEXT :: FuntypeGetTextureParameterfvEXT+glGetTextureParameterfvEXT = unsafePerformIO $ readIORef glrefGetTextureParameterfvEXT+{-# INLINE glGetTextureParameterfvEXT #-}+type FuntypeGetTextureParameterivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureParameterivEXT :: FunPtr FuntypeGetTextureParameterivEXT -> FuntypeGetTextureParameterivEXT+glrefGetTextureParameterivEXT :: IORef FuntypeGetTextureParameterivEXT+glrefGetTextureParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureParameterivEXT #-}+glGetTextureParameterivEXT :: FuntypeGetTextureParameterivEXT+glGetTextureParameterivEXT = unsafePerformIO $ readIORef glrefGetTextureParameterivEXT+{-# INLINE glGetTextureParameterivEXT #-}+type FuntypeGetTextureLevelParameterfvEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureLevelParameterfvEXT :: FunPtr FuntypeGetTextureLevelParameterfvEXT -> FuntypeGetTextureLevelParameterfvEXT+glrefGetTextureLevelParameterfvEXT :: IORef FuntypeGetTextureLevelParameterfvEXT+glrefGetTextureLevelParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureLevelParameterfvEXT #-}+glGetTextureLevelParameterfvEXT :: FuntypeGetTextureLevelParameterfvEXT+glGetTextureLevelParameterfvEXT = unsafePerformIO $ readIORef glrefGetTextureLevelParameterfvEXT+{-# INLINE glGetTextureLevelParameterfvEXT #-}+type FuntypeGetTextureLevelParameterivEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureLevelParameterivEXT :: FunPtr FuntypeGetTextureLevelParameterivEXT -> FuntypeGetTextureLevelParameterivEXT+glrefGetTextureLevelParameterivEXT :: IORef FuntypeGetTextureLevelParameterivEXT+glrefGetTextureLevelParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureLevelParameterivEXT #-}+glGetTextureLevelParameterivEXT :: FuntypeGetTextureLevelParameterivEXT+glGetTextureLevelParameterivEXT = unsafePerformIO $ readIORef glrefGetTextureLevelParameterivEXT+{-# INLINE glGetTextureLevelParameterivEXT #-}+type FuntypeTextureImage3DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureImage3DEXT :: FunPtr FuntypeTextureImage3DEXT -> FuntypeTextureImage3DEXT+glrefTextureImage3DEXT :: IORef FuntypeTextureImage3DEXT+glrefTextureImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureImage3DEXT #-}+glTextureImage3DEXT :: FuntypeTextureImage3DEXT+glTextureImage3DEXT = unsafePerformIO $ readIORef glrefTextureImage3DEXT+{-# INLINE glTextureImage3DEXT #-}+type FuntypeTextureSubImage3DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureSubImage3DEXT :: FunPtr FuntypeTextureSubImage3DEXT -> FuntypeTextureSubImage3DEXT+glrefTextureSubImage3DEXT :: IORef FuntypeTextureSubImage3DEXT+glrefTextureSubImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureSubImage3DEXT #-}+glTextureSubImage3DEXT :: FuntypeTextureSubImage3DEXT+glTextureSubImage3DEXT = unsafePerformIO $ readIORef glrefTextureSubImage3DEXT+{-# INLINE glTextureSubImage3DEXT #-}+type FuntypeCopyTextureSubImage3DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyTextureSubImage3DEXT :: FunPtr FuntypeCopyTextureSubImage3DEXT -> FuntypeCopyTextureSubImage3DEXT+glrefCopyTextureSubImage3DEXT :: IORef FuntypeCopyTextureSubImage3DEXT+glrefCopyTextureSubImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyTextureSubImage3DEXT #-}+glCopyTextureSubImage3DEXT :: FuntypeCopyTextureSubImage3DEXT+glCopyTextureSubImage3DEXT = unsafePerformIO $ readIORef glrefCopyTextureSubImage3DEXT+{-# INLINE glCopyTextureSubImage3DEXT #-}+type FuntypeBindMultiTextureEXT =+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindMultiTextureEXT :: FunPtr FuntypeBindMultiTextureEXT -> FuntypeBindMultiTextureEXT+glrefBindMultiTextureEXT :: IORef FuntypeBindMultiTextureEXT+glrefBindMultiTextureEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindMultiTextureEXT #-}+glBindMultiTextureEXT :: FuntypeBindMultiTextureEXT+glBindMultiTextureEXT = unsafePerformIO $ readIORef glrefBindMultiTextureEXT+{-# INLINE glBindMultiTextureEXT #-}+type FuntypeMultiTexCoordPointerEXT =+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexCoordPointerEXT :: FunPtr FuntypeMultiTexCoordPointerEXT -> FuntypeMultiTexCoordPointerEXT+glrefMultiTexCoordPointerEXT :: IORef FuntypeMultiTexCoordPointerEXT+glrefMultiTexCoordPointerEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexCoordPointerEXT #-}+glMultiTexCoordPointerEXT :: FuntypeMultiTexCoordPointerEXT+glMultiTexCoordPointerEXT = unsafePerformIO $ readIORef glrefMultiTexCoordPointerEXT+{-# INLINE glMultiTexCoordPointerEXT #-}+type FuntypeMultiTexEnvfEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexEnvfEXT :: FunPtr FuntypeMultiTexEnvfEXT -> FuntypeMultiTexEnvfEXT+glrefMultiTexEnvfEXT :: IORef FuntypeMultiTexEnvfEXT+glrefMultiTexEnvfEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexEnvfEXT #-}+glMultiTexEnvfEXT :: FuntypeMultiTexEnvfEXT+glMultiTexEnvfEXT = unsafePerformIO $ readIORef glrefMultiTexEnvfEXT+{-# INLINE glMultiTexEnvfEXT #-}+type FuntypeMultiTexEnvfvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexEnvfvEXT :: FunPtr FuntypeMultiTexEnvfvEXT -> FuntypeMultiTexEnvfvEXT+glrefMultiTexEnvfvEXT :: IORef FuntypeMultiTexEnvfvEXT+glrefMultiTexEnvfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexEnvfvEXT #-}+glMultiTexEnvfvEXT :: FuntypeMultiTexEnvfvEXT+glMultiTexEnvfvEXT = unsafePerformIO $ readIORef glrefMultiTexEnvfvEXT+{-# INLINE glMultiTexEnvfvEXT #-}+type FuntypeMultiTexEnviEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexEnviEXT :: FunPtr FuntypeMultiTexEnviEXT -> FuntypeMultiTexEnviEXT+glrefMultiTexEnviEXT :: IORef FuntypeMultiTexEnviEXT+glrefMultiTexEnviEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexEnviEXT #-}+glMultiTexEnviEXT :: FuntypeMultiTexEnviEXT+glMultiTexEnviEXT = unsafePerformIO $ readIORef glrefMultiTexEnviEXT+{-# INLINE glMultiTexEnviEXT #-}+type FuntypeMultiTexEnvivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexEnvivEXT :: FunPtr FuntypeMultiTexEnvivEXT -> FuntypeMultiTexEnvivEXT+glrefMultiTexEnvivEXT :: IORef FuntypeMultiTexEnvivEXT+glrefMultiTexEnvivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexEnvivEXT #-}+glMultiTexEnvivEXT :: FuntypeMultiTexEnvivEXT+glMultiTexEnvivEXT = unsafePerformIO $ readIORef glrefMultiTexEnvivEXT+{-# INLINE glMultiTexEnvivEXT #-}+type FuntypeMultiTexGendEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexGendEXT :: FunPtr FuntypeMultiTexGendEXT -> FuntypeMultiTexGendEXT+glrefMultiTexGendEXT :: IORef FuntypeMultiTexGendEXT+glrefMultiTexGendEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexGendEXT #-}+glMultiTexGendEXT :: FuntypeMultiTexGendEXT+glMultiTexGendEXT = unsafePerformIO $ readIORef glrefMultiTexGendEXT+{-# INLINE glMultiTexGendEXT #-}+type FuntypeMultiTexGendvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexGendvEXT :: FunPtr FuntypeMultiTexGendvEXT -> FuntypeMultiTexGendvEXT+glrefMultiTexGendvEXT :: IORef FuntypeMultiTexGendvEXT+glrefMultiTexGendvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexGendvEXT #-}+glMultiTexGendvEXT :: FuntypeMultiTexGendvEXT+glMultiTexGendvEXT = unsafePerformIO $ readIORef glrefMultiTexGendvEXT+{-# INLINE glMultiTexGendvEXT #-}+type FuntypeMultiTexGenfEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexGenfEXT :: FunPtr FuntypeMultiTexGenfEXT -> FuntypeMultiTexGenfEXT+glrefMultiTexGenfEXT :: IORef FuntypeMultiTexGenfEXT+glrefMultiTexGenfEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexGenfEXT #-}+glMultiTexGenfEXT :: FuntypeMultiTexGenfEXT+glMultiTexGenfEXT = unsafePerformIO $ readIORef glrefMultiTexGenfEXT+{-# INLINE glMultiTexGenfEXT #-}+type FuntypeMultiTexGenfvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexGenfvEXT :: FunPtr FuntypeMultiTexGenfvEXT -> FuntypeMultiTexGenfvEXT+glrefMultiTexGenfvEXT :: IORef FuntypeMultiTexGenfvEXT+glrefMultiTexGenfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexGenfvEXT #-}+glMultiTexGenfvEXT :: FuntypeMultiTexGenfvEXT+glMultiTexGenfvEXT = unsafePerformIO $ readIORef glrefMultiTexGenfvEXT+{-# INLINE glMultiTexGenfvEXT #-}+type FuntypeMultiTexGeniEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexGeniEXT :: FunPtr FuntypeMultiTexGeniEXT -> FuntypeMultiTexGeniEXT+glrefMultiTexGeniEXT :: IORef FuntypeMultiTexGeniEXT+glrefMultiTexGeniEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexGeniEXT #-}+glMultiTexGeniEXT :: FuntypeMultiTexGeniEXT+glMultiTexGeniEXT = unsafePerformIO $ readIORef glrefMultiTexGeniEXT+{-# INLINE glMultiTexGeniEXT #-}+type FuntypeMultiTexGenivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexGenivEXT :: FunPtr FuntypeMultiTexGenivEXT -> FuntypeMultiTexGenivEXT+glrefMultiTexGenivEXT :: IORef FuntypeMultiTexGenivEXT+glrefMultiTexGenivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexGenivEXT #-}+glMultiTexGenivEXT :: FuntypeMultiTexGenivEXT+glMultiTexGenivEXT = unsafePerformIO $ readIORef glrefMultiTexGenivEXT+{-# INLINE glMultiTexGenivEXT #-}+type FuntypeGetMultiTexEnvfvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexEnvfvEXT :: FunPtr FuntypeGetMultiTexEnvfvEXT -> FuntypeGetMultiTexEnvfvEXT+glrefGetMultiTexEnvfvEXT :: IORef FuntypeGetMultiTexEnvfvEXT+glrefGetMultiTexEnvfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexEnvfvEXT #-}+glGetMultiTexEnvfvEXT :: FuntypeGetMultiTexEnvfvEXT+glGetMultiTexEnvfvEXT = unsafePerformIO $ readIORef glrefGetMultiTexEnvfvEXT+{-# INLINE glGetMultiTexEnvfvEXT #-}+type FuntypeGetMultiTexEnvivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexEnvivEXT :: FunPtr FuntypeGetMultiTexEnvivEXT -> FuntypeGetMultiTexEnvivEXT+glrefGetMultiTexEnvivEXT :: IORef FuntypeGetMultiTexEnvivEXT+glrefGetMultiTexEnvivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexEnvivEXT #-}+glGetMultiTexEnvivEXT :: FuntypeGetMultiTexEnvivEXT+glGetMultiTexEnvivEXT = unsafePerformIO $ readIORef glrefGetMultiTexEnvivEXT+{-# INLINE glGetMultiTexEnvivEXT #-}+type FuntypeGetMultiTexGendvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexGendvEXT :: FunPtr FuntypeGetMultiTexGendvEXT -> FuntypeGetMultiTexGendvEXT+glrefGetMultiTexGendvEXT :: IORef FuntypeGetMultiTexGendvEXT+glrefGetMultiTexGendvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexGendvEXT #-}+glGetMultiTexGendvEXT :: FuntypeGetMultiTexGendvEXT+glGetMultiTexGendvEXT = unsafePerformIO $ readIORef glrefGetMultiTexGendvEXT+{-# INLINE glGetMultiTexGendvEXT #-}+type FuntypeGetMultiTexGenfvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexGenfvEXT :: FunPtr FuntypeGetMultiTexGenfvEXT -> FuntypeGetMultiTexGenfvEXT+glrefGetMultiTexGenfvEXT :: IORef FuntypeGetMultiTexGenfvEXT+glrefGetMultiTexGenfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexGenfvEXT #-}+glGetMultiTexGenfvEXT :: FuntypeGetMultiTexGenfvEXT+glGetMultiTexGenfvEXT = unsafePerformIO $ readIORef glrefGetMultiTexGenfvEXT+{-# INLINE glGetMultiTexGenfvEXT #-}+type FuntypeGetMultiTexGenivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexGenivEXT :: FunPtr FuntypeGetMultiTexGenivEXT -> FuntypeGetMultiTexGenivEXT+glrefGetMultiTexGenivEXT :: IORef FuntypeGetMultiTexGenivEXT+glrefGetMultiTexGenivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexGenivEXT #-}+glGetMultiTexGenivEXT :: FuntypeGetMultiTexGenivEXT+glGetMultiTexGenivEXT = unsafePerformIO $ readIORef glrefGetMultiTexGenivEXT+{-# INLINE glGetMultiTexGenivEXT #-}+type FuntypeMultiTexParameteriEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexParameteriEXT :: FunPtr FuntypeMultiTexParameteriEXT -> FuntypeMultiTexParameteriEXT+glrefMultiTexParameteriEXT :: IORef FuntypeMultiTexParameteriEXT+glrefMultiTexParameteriEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexParameteriEXT #-}+glMultiTexParameteriEXT :: FuntypeMultiTexParameteriEXT+glMultiTexParameteriEXT = unsafePerformIO $ readIORef glrefMultiTexParameteriEXT+{-# INLINE glMultiTexParameteriEXT #-}+type FuntypeMultiTexParameterivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexParameterivEXT :: FunPtr FuntypeMultiTexParameterivEXT -> FuntypeMultiTexParameterivEXT+glrefMultiTexParameterivEXT :: IORef FuntypeMultiTexParameterivEXT+glrefMultiTexParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexParameterivEXT #-}+glMultiTexParameterivEXT :: FuntypeMultiTexParameterivEXT+glMultiTexParameterivEXT = unsafePerformIO $ readIORef glrefMultiTexParameterivEXT+{-# INLINE glMultiTexParameterivEXT #-}+type FuntypeMultiTexParameterfEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexParameterfEXT :: FunPtr FuntypeMultiTexParameterfEXT -> FuntypeMultiTexParameterfEXT+glrefMultiTexParameterfEXT :: IORef FuntypeMultiTexParameterfEXT+glrefMultiTexParameterfEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexParameterfEXT #-}+glMultiTexParameterfEXT :: FuntypeMultiTexParameterfEXT+glMultiTexParameterfEXT = unsafePerformIO $ readIORef glrefMultiTexParameterfEXT+{-# INLINE glMultiTexParameterfEXT #-}+type FuntypeMultiTexParameterfvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexParameterfvEXT :: FunPtr FuntypeMultiTexParameterfvEXT -> FuntypeMultiTexParameterfvEXT+glrefMultiTexParameterfvEXT :: IORef FuntypeMultiTexParameterfvEXT+glrefMultiTexParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexParameterfvEXT #-}+glMultiTexParameterfvEXT :: FuntypeMultiTexParameterfvEXT+glMultiTexParameterfvEXT = unsafePerformIO $ readIORef glrefMultiTexParameterfvEXT+{-# INLINE glMultiTexParameterfvEXT #-}+type FuntypeMultiTexImage1DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexImage1DEXT :: FunPtr FuntypeMultiTexImage1DEXT -> FuntypeMultiTexImage1DEXT+glrefMultiTexImage1DEXT :: IORef FuntypeMultiTexImage1DEXT+glrefMultiTexImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexImage1DEXT #-}+glMultiTexImage1DEXT :: FuntypeMultiTexImage1DEXT+glMultiTexImage1DEXT = unsafePerformIO $ readIORef glrefMultiTexImage1DEXT+{-# INLINE glMultiTexImage1DEXT #-}+type FuntypeMultiTexImage2DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexImage2DEXT :: FunPtr FuntypeMultiTexImage2DEXT -> FuntypeMultiTexImage2DEXT+glrefMultiTexImage2DEXT :: IORef FuntypeMultiTexImage2DEXT+glrefMultiTexImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexImage2DEXT #-}+glMultiTexImage2DEXT :: FuntypeMultiTexImage2DEXT+glMultiTexImage2DEXT = unsafePerformIO $ readIORef glrefMultiTexImage2DEXT+{-# INLINE glMultiTexImage2DEXT #-}+type FuntypeMultiTexSubImage1DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexSubImage1DEXT :: FunPtr FuntypeMultiTexSubImage1DEXT -> FuntypeMultiTexSubImage1DEXT+glrefMultiTexSubImage1DEXT :: IORef FuntypeMultiTexSubImage1DEXT+glrefMultiTexSubImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexSubImage1DEXT #-}+glMultiTexSubImage1DEXT :: FuntypeMultiTexSubImage1DEXT+glMultiTexSubImage1DEXT = unsafePerformIO $ readIORef glrefMultiTexSubImage1DEXT+{-# INLINE glMultiTexSubImage1DEXT #-}+type FuntypeMultiTexSubImage2DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexSubImage2DEXT :: FunPtr FuntypeMultiTexSubImage2DEXT -> FuntypeMultiTexSubImage2DEXT+glrefMultiTexSubImage2DEXT :: IORef FuntypeMultiTexSubImage2DEXT+glrefMultiTexSubImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexSubImage2DEXT #-}+glMultiTexSubImage2DEXT :: FuntypeMultiTexSubImage2DEXT+glMultiTexSubImage2DEXT = unsafePerformIO $ readIORef glrefMultiTexSubImage2DEXT+{-# INLINE glMultiTexSubImage2DEXT #-}+type FuntypeCopyMultiTexImage1DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyMultiTexImage1DEXT :: FunPtr FuntypeCopyMultiTexImage1DEXT -> FuntypeCopyMultiTexImage1DEXT+glrefCopyMultiTexImage1DEXT :: IORef FuntypeCopyMultiTexImage1DEXT+glrefCopyMultiTexImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyMultiTexImage1DEXT #-}+glCopyMultiTexImage1DEXT :: FuntypeCopyMultiTexImage1DEXT+glCopyMultiTexImage1DEXT = unsafePerformIO $ readIORef glrefCopyMultiTexImage1DEXT+{-# INLINE glCopyMultiTexImage1DEXT #-}+type FuntypeCopyMultiTexImage2DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyMultiTexImage2DEXT :: FunPtr FuntypeCopyMultiTexImage2DEXT -> FuntypeCopyMultiTexImage2DEXT+glrefCopyMultiTexImage2DEXT :: IORef FuntypeCopyMultiTexImage2DEXT+glrefCopyMultiTexImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyMultiTexImage2DEXT #-}+glCopyMultiTexImage2DEXT :: FuntypeCopyMultiTexImage2DEXT+glCopyMultiTexImage2DEXT = unsafePerformIO $ readIORef glrefCopyMultiTexImage2DEXT+{-# INLINE glCopyMultiTexImage2DEXT #-}+type FuntypeCopyMultiTexSubImage1DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyMultiTexSubImage1DEXT :: FunPtr FuntypeCopyMultiTexSubImage1DEXT -> FuntypeCopyMultiTexSubImage1DEXT+glrefCopyMultiTexSubImage1DEXT :: IORef FuntypeCopyMultiTexSubImage1DEXT+glrefCopyMultiTexSubImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyMultiTexSubImage1DEXT #-}+glCopyMultiTexSubImage1DEXT :: FuntypeCopyMultiTexSubImage1DEXT+glCopyMultiTexSubImage1DEXT = unsafePerformIO $ readIORef glrefCopyMultiTexSubImage1DEXT+{-# INLINE glCopyMultiTexSubImage1DEXT #-}+type FuntypeCopyMultiTexSubImage2DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyMultiTexSubImage2DEXT :: FunPtr FuntypeCopyMultiTexSubImage2DEXT -> FuntypeCopyMultiTexSubImage2DEXT+glrefCopyMultiTexSubImage2DEXT :: IORef FuntypeCopyMultiTexSubImage2DEXT+glrefCopyMultiTexSubImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyMultiTexSubImage2DEXT #-}+glCopyMultiTexSubImage2DEXT :: FuntypeCopyMultiTexSubImage2DEXT+glCopyMultiTexSubImage2DEXT = unsafePerformIO $ readIORef glrefCopyMultiTexSubImage2DEXT+{-# INLINE glCopyMultiTexSubImage2DEXT #-}+type FuntypeGetMultiTexImageEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexImageEXT :: FunPtr FuntypeGetMultiTexImageEXT -> FuntypeGetMultiTexImageEXT+glrefGetMultiTexImageEXT :: IORef FuntypeGetMultiTexImageEXT+glrefGetMultiTexImageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexImageEXT #-}+glGetMultiTexImageEXT :: FuntypeGetMultiTexImageEXT+glGetMultiTexImageEXT = unsafePerformIO $ readIORef glrefGetMultiTexImageEXT+{-# INLINE glGetMultiTexImageEXT #-}+type FuntypeGetMultiTexParameterfvEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexParameterfvEXT :: FunPtr FuntypeGetMultiTexParameterfvEXT -> FuntypeGetMultiTexParameterfvEXT+glrefGetMultiTexParameterfvEXT :: IORef FuntypeGetMultiTexParameterfvEXT+glrefGetMultiTexParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexParameterfvEXT #-}+glGetMultiTexParameterfvEXT :: FuntypeGetMultiTexParameterfvEXT+glGetMultiTexParameterfvEXT = unsafePerformIO $ readIORef glrefGetMultiTexParameterfvEXT+{-# INLINE glGetMultiTexParameterfvEXT #-}+type FuntypeGetMultiTexParameterivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexParameterivEXT :: FunPtr FuntypeGetMultiTexParameterivEXT -> FuntypeGetMultiTexParameterivEXT+glrefGetMultiTexParameterivEXT :: IORef FuntypeGetMultiTexParameterivEXT+glrefGetMultiTexParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexParameterivEXT #-}+glGetMultiTexParameterivEXT :: FuntypeGetMultiTexParameterivEXT+glGetMultiTexParameterivEXT = unsafePerformIO $ readIORef glrefGetMultiTexParameterivEXT+{-# INLINE glGetMultiTexParameterivEXT #-}+type FuntypeGetMultiTexLevelParameterfvEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexLevelParameterfvEXT :: FunPtr FuntypeGetMultiTexLevelParameterfvEXT -> FuntypeGetMultiTexLevelParameterfvEXT+glrefGetMultiTexLevelParameterfvEXT :: IORef FuntypeGetMultiTexLevelParameterfvEXT+glrefGetMultiTexLevelParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexLevelParameterfvEXT #-}+glGetMultiTexLevelParameterfvEXT :: FuntypeGetMultiTexLevelParameterfvEXT+glGetMultiTexLevelParameterfvEXT = unsafePerformIO $ readIORef glrefGetMultiTexLevelParameterfvEXT+{-# INLINE glGetMultiTexLevelParameterfvEXT #-}+type FuntypeGetMultiTexLevelParameterivEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexLevelParameterivEXT :: FunPtr FuntypeGetMultiTexLevelParameterivEXT -> FuntypeGetMultiTexLevelParameterivEXT+glrefGetMultiTexLevelParameterivEXT :: IORef FuntypeGetMultiTexLevelParameterivEXT+glrefGetMultiTexLevelParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexLevelParameterivEXT #-}+glGetMultiTexLevelParameterivEXT :: FuntypeGetMultiTexLevelParameterivEXT+glGetMultiTexLevelParameterivEXT = unsafePerformIO $ readIORef glrefGetMultiTexLevelParameterivEXT+{-# INLINE glGetMultiTexLevelParameterivEXT #-}+type FuntypeMultiTexImage3DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexImage3DEXT :: FunPtr FuntypeMultiTexImage3DEXT -> FuntypeMultiTexImage3DEXT+glrefMultiTexImage3DEXT :: IORef FuntypeMultiTexImage3DEXT+glrefMultiTexImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexImage3DEXT #-}+glMultiTexImage3DEXT :: FuntypeMultiTexImage3DEXT+glMultiTexImage3DEXT = unsafePerformIO $ readIORef glrefMultiTexImage3DEXT+{-# INLINE glMultiTexImage3DEXT #-}+type FuntypeMultiTexSubImage3DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexSubImage3DEXT :: FunPtr FuntypeMultiTexSubImage3DEXT -> FuntypeMultiTexSubImage3DEXT+glrefMultiTexSubImage3DEXT :: IORef FuntypeMultiTexSubImage3DEXT+glrefMultiTexSubImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexSubImage3DEXT #-}+glMultiTexSubImage3DEXT :: FuntypeMultiTexSubImage3DEXT+glMultiTexSubImage3DEXT = unsafePerformIO $ readIORef glrefMultiTexSubImage3DEXT+{-# INLINE glMultiTexSubImage3DEXT #-}+type FuntypeCopyMultiTexSubImage3DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCopyMultiTexSubImage3DEXT :: FunPtr FuntypeCopyMultiTexSubImage3DEXT -> FuntypeCopyMultiTexSubImage3DEXT+glrefCopyMultiTexSubImage3DEXT :: IORef FuntypeCopyMultiTexSubImage3DEXT+glrefCopyMultiTexSubImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCopyMultiTexSubImage3DEXT #-}+glCopyMultiTexSubImage3DEXT :: FuntypeCopyMultiTexSubImage3DEXT+glCopyMultiTexSubImage3DEXT = unsafePerformIO $ readIORef glrefCopyMultiTexSubImage3DEXT+{-# INLINE glCopyMultiTexSubImage3DEXT #-}+type FuntypeEnableClientStateIndexedEXT =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnableClientStateIndexedEXT :: FunPtr FuntypeEnableClientStateIndexedEXT -> FuntypeEnableClientStateIndexedEXT+glrefEnableClientStateIndexedEXT :: IORef FuntypeEnableClientStateIndexedEXT+glrefEnableClientStateIndexedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnableClientStateIndexedEXT #-}+glEnableClientStateIndexedEXT :: FuntypeEnableClientStateIndexedEXT+glEnableClientStateIndexedEXT = unsafePerformIO $ readIORef glrefEnableClientStateIndexedEXT+{-# INLINE glEnableClientStateIndexedEXT #-}+type FuntypeDisableClientStateIndexedEXT =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisableClientStateIndexedEXT :: FunPtr FuntypeDisableClientStateIndexedEXT -> FuntypeDisableClientStateIndexedEXT+glrefDisableClientStateIndexedEXT :: IORef FuntypeDisableClientStateIndexedEXT+glrefDisableClientStateIndexedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisableClientStateIndexedEXT #-}+glDisableClientStateIndexedEXT :: FuntypeDisableClientStateIndexedEXT+glDisableClientStateIndexedEXT = unsafePerformIO $ readIORef glrefDisableClientStateIndexedEXT+{-# INLINE glDisableClientStateIndexedEXT #-}+type FuntypeGetFloatIndexedvEXT =+    GLenum ->+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFloatIndexedvEXT :: FunPtr FuntypeGetFloatIndexedvEXT -> FuntypeGetFloatIndexedvEXT+glrefGetFloatIndexedvEXT :: IORef FuntypeGetFloatIndexedvEXT+glrefGetFloatIndexedvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFloatIndexedvEXT #-}+glGetFloatIndexedvEXT :: FuntypeGetFloatIndexedvEXT+glGetFloatIndexedvEXT = unsafePerformIO $ readIORef glrefGetFloatIndexedvEXT+{-# INLINE glGetFloatIndexedvEXT #-}+type FuntypeGetDoubleIndexedvEXT =+    GLenum ->+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetDoubleIndexedvEXT :: FunPtr FuntypeGetDoubleIndexedvEXT -> FuntypeGetDoubleIndexedvEXT+glrefGetDoubleIndexedvEXT :: IORef FuntypeGetDoubleIndexedvEXT+glrefGetDoubleIndexedvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetDoubleIndexedvEXT #-}+glGetDoubleIndexedvEXT :: FuntypeGetDoubleIndexedvEXT+glGetDoubleIndexedvEXT = unsafePerformIO $ readIORef glrefGetDoubleIndexedvEXT+{-# INLINE glGetDoubleIndexedvEXT #-}+type FuntypeGetPointerIndexedvEXT =+    GLenum ->+    GLuint ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetPointerIndexedvEXT :: FunPtr FuntypeGetPointerIndexedvEXT -> FuntypeGetPointerIndexedvEXT+glrefGetPointerIndexedvEXT :: IORef FuntypeGetPointerIndexedvEXT+glrefGetPointerIndexedvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetPointerIndexedvEXT #-}+glGetPointerIndexedvEXT :: FuntypeGetPointerIndexedvEXT+glGetPointerIndexedvEXT = unsafePerformIO $ readIORef glrefGetPointerIndexedvEXT+{-# INLINE glGetPointerIndexedvEXT #-}+type FuntypeEnableIndexedEXT =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnableIndexedEXT :: FunPtr FuntypeEnableIndexedEXT -> FuntypeEnableIndexedEXT+glrefEnableIndexedEXT :: IORef FuntypeEnableIndexedEXT+glrefEnableIndexedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnableIndexedEXT #-}+glEnableIndexedEXT :: FuntypeEnableIndexedEXT+glEnableIndexedEXT = unsafePerformIO $ readIORef glrefEnableIndexedEXT+{-# INLINE glEnableIndexedEXT #-}+type FuntypeDisableIndexedEXT =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisableIndexedEXT :: FunPtr FuntypeDisableIndexedEXT -> FuntypeDisableIndexedEXT+glrefDisableIndexedEXT :: IORef FuntypeDisableIndexedEXT+glrefDisableIndexedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisableIndexedEXT #-}+glDisableIndexedEXT :: FuntypeDisableIndexedEXT+glDisableIndexedEXT = unsafePerformIO $ readIORef glrefDisableIndexedEXT+{-# INLINE glDisableIndexedEXT #-}+type FuntypeIsEnabledIndexedEXT =+    GLenum ->+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsEnabledIndexedEXT :: FunPtr FuntypeIsEnabledIndexedEXT -> FuntypeIsEnabledIndexedEXT+glrefIsEnabledIndexedEXT :: IORef FuntypeIsEnabledIndexedEXT+glrefIsEnabledIndexedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsEnabledIndexedEXT #-}+glIsEnabledIndexedEXT :: FuntypeIsEnabledIndexedEXT+glIsEnabledIndexedEXT = unsafePerformIO $ readIORef glrefIsEnabledIndexedEXT+{-# INLINE glIsEnabledIndexedEXT #-}+type FuntypeGetIntegerIndexedvEXT =+    GLenum ->+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetIntegerIndexedvEXT :: FunPtr FuntypeGetIntegerIndexedvEXT -> FuntypeGetIntegerIndexedvEXT+glrefGetIntegerIndexedvEXT :: IORef FuntypeGetIntegerIndexedvEXT+glrefGetIntegerIndexedvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetIntegerIndexedvEXT #-}+glGetIntegerIndexedvEXT :: FuntypeGetIntegerIndexedvEXT+glGetIntegerIndexedvEXT = unsafePerformIO $ readIORef glrefGetIntegerIndexedvEXT+{-# INLINE glGetIntegerIndexedvEXT #-}+type FuntypeGetBooleanIndexedvEXT =+    GLenum ->+    GLuint ->+    Ptr (GLboolean) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetBooleanIndexedvEXT :: FunPtr FuntypeGetBooleanIndexedvEXT -> FuntypeGetBooleanIndexedvEXT+glrefGetBooleanIndexedvEXT :: IORef FuntypeGetBooleanIndexedvEXT+glrefGetBooleanIndexedvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetBooleanIndexedvEXT #-}+glGetBooleanIndexedvEXT :: FuntypeGetBooleanIndexedvEXT+glGetBooleanIndexedvEXT = unsafePerformIO $ readIORef glrefGetBooleanIndexedvEXT+{-# INLINE glGetBooleanIndexedvEXT #-}+type FuntypeCompressedTextureImage3DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTextureImage3DEXT :: FunPtr FuntypeCompressedTextureImage3DEXT -> FuntypeCompressedTextureImage3DEXT+glrefCompressedTextureImage3DEXT :: IORef FuntypeCompressedTextureImage3DEXT+glrefCompressedTextureImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTextureImage3DEXT #-}+glCompressedTextureImage3DEXT :: FuntypeCompressedTextureImage3DEXT+glCompressedTextureImage3DEXT = unsafePerformIO $ readIORef glrefCompressedTextureImage3DEXT+{-# INLINE glCompressedTextureImage3DEXT #-}+type FuntypeCompressedTextureImage2DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTextureImage2DEXT :: FunPtr FuntypeCompressedTextureImage2DEXT -> FuntypeCompressedTextureImage2DEXT+glrefCompressedTextureImage2DEXT :: IORef FuntypeCompressedTextureImage2DEXT+glrefCompressedTextureImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTextureImage2DEXT #-}+glCompressedTextureImage2DEXT :: FuntypeCompressedTextureImage2DEXT+glCompressedTextureImage2DEXT = unsafePerformIO $ readIORef glrefCompressedTextureImage2DEXT+{-# INLINE glCompressedTextureImage2DEXT #-}+type FuntypeCompressedTextureImage1DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTextureImage1DEXT :: FunPtr FuntypeCompressedTextureImage1DEXT -> FuntypeCompressedTextureImage1DEXT+glrefCompressedTextureImage1DEXT :: IORef FuntypeCompressedTextureImage1DEXT+glrefCompressedTextureImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTextureImage1DEXT #-}+glCompressedTextureImage1DEXT :: FuntypeCompressedTextureImage1DEXT+glCompressedTextureImage1DEXT = unsafePerformIO $ readIORef glrefCompressedTextureImage1DEXT+{-# INLINE glCompressedTextureImage1DEXT #-}+type FuntypeCompressedTextureSubImage3DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTextureSubImage3DEXT :: FunPtr FuntypeCompressedTextureSubImage3DEXT -> FuntypeCompressedTextureSubImage3DEXT+glrefCompressedTextureSubImage3DEXT :: IORef FuntypeCompressedTextureSubImage3DEXT+glrefCompressedTextureSubImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTextureSubImage3DEXT #-}+glCompressedTextureSubImage3DEXT :: FuntypeCompressedTextureSubImage3DEXT+glCompressedTextureSubImage3DEXT = unsafePerformIO $ readIORef glrefCompressedTextureSubImage3DEXT+{-# INLINE glCompressedTextureSubImage3DEXT #-}+type FuntypeCompressedTextureSubImage2DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTextureSubImage2DEXT :: FunPtr FuntypeCompressedTextureSubImage2DEXT -> FuntypeCompressedTextureSubImage2DEXT+glrefCompressedTextureSubImage2DEXT :: IORef FuntypeCompressedTextureSubImage2DEXT+glrefCompressedTextureSubImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTextureSubImage2DEXT #-}+glCompressedTextureSubImage2DEXT :: FuntypeCompressedTextureSubImage2DEXT+glCompressedTextureSubImage2DEXT = unsafePerformIO $ readIORef glrefCompressedTextureSubImage2DEXT+{-# INLINE glCompressedTextureSubImage2DEXT #-}+type FuntypeCompressedTextureSubImage1DEXT =+    GLuint ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedTextureSubImage1DEXT :: FunPtr FuntypeCompressedTextureSubImage1DEXT -> FuntypeCompressedTextureSubImage1DEXT+glrefCompressedTextureSubImage1DEXT :: IORef FuntypeCompressedTextureSubImage1DEXT+glrefCompressedTextureSubImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedTextureSubImage1DEXT #-}+glCompressedTextureSubImage1DEXT :: FuntypeCompressedTextureSubImage1DEXT+glCompressedTextureSubImage1DEXT = unsafePerformIO $ readIORef glrefCompressedTextureSubImage1DEXT+{-# INLINE glCompressedTextureSubImage1DEXT #-}+type FuntypeGetCompressedTextureImageEXT =+    GLuint ->+    GLenum ->+    GLint ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetCompressedTextureImageEXT :: FunPtr FuntypeGetCompressedTextureImageEXT -> FuntypeGetCompressedTextureImageEXT+glrefGetCompressedTextureImageEXT :: IORef FuntypeGetCompressedTextureImageEXT+glrefGetCompressedTextureImageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetCompressedTextureImageEXT #-}+glGetCompressedTextureImageEXT :: FuntypeGetCompressedTextureImageEXT+glGetCompressedTextureImageEXT = unsafePerformIO $ readIORef glrefGetCompressedTextureImageEXT+{-# INLINE glGetCompressedTextureImageEXT #-}+type FuntypeCompressedMultiTexImage3DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedMultiTexImage3DEXT :: FunPtr FuntypeCompressedMultiTexImage3DEXT -> FuntypeCompressedMultiTexImage3DEXT+glrefCompressedMultiTexImage3DEXT :: IORef FuntypeCompressedMultiTexImage3DEXT+glrefCompressedMultiTexImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedMultiTexImage3DEXT #-}+glCompressedMultiTexImage3DEXT :: FuntypeCompressedMultiTexImage3DEXT+glCompressedMultiTexImage3DEXT = unsafePerformIO $ readIORef glrefCompressedMultiTexImage3DEXT+{-# INLINE glCompressedMultiTexImage3DEXT #-}+type FuntypeCompressedMultiTexImage2DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedMultiTexImage2DEXT :: FunPtr FuntypeCompressedMultiTexImage2DEXT -> FuntypeCompressedMultiTexImage2DEXT+glrefCompressedMultiTexImage2DEXT :: IORef FuntypeCompressedMultiTexImage2DEXT+glrefCompressedMultiTexImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedMultiTexImage2DEXT #-}+glCompressedMultiTexImage2DEXT :: FuntypeCompressedMultiTexImage2DEXT+glCompressedMultiTexImage2DEXT = unsafePerformIO $ readIORef glrefCompressedMultiTexImage2DEXT+{-# INLINE glCompressedMultiTexImage2DEXT #-}+type FuntypeCompressedMultiTexImage1DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLint ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedMultiTexImage1DEXT :: FunPtr FuntypeCompressedMultiTexImage1DEXT -> FuntypeCompressedMultiTexImage1DEXT+glrefCompressedMultiTexImage1DEXT :: IORef FuntypeCompressedMultiTexImage1DEXT+glrefCompressedMultiTexImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedMultiTexImage1DEXT #-}+glCompressedMultiTexImage1DEXT :: FuntypeCompressedMultiTexImage1DEXT+glCompressedMultiTexImage1DEXT = unsafePerformIO $ readIORef glrefCompressedMultiTexImage1DEXT+{-# INLINE glCompressedMultiTexImage1DEXT #-}+type FuntypeCompressedMultiTexSubImage3DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedMultiTexSubImage3DEXT :: FunPtr FuntypeCompressedMultiTexSubImage3DEXT -> FuntypeCompressedMultiTexSubImage3DEXT+glrefCompressedMultiTexSubImage3DEXT :: IORef FuntypeCompressedMultiTexSubImage3DEXT+glrefCompressedMultiTexSubImage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedMultiTexSubImage3DEXT #-}+glCompressedMultiTexSubImage3DEXT :: FuntypeCompressedMultiTexSubImage3DEXT+glCompressedMultiTexSubImage3DEXT = unsafePerformIO $ readIORef glrefCompressedMultiTexSubImage3DEXT+{-# INLINE glCompressedMultiTexSubImage3DEXT #-}+type FuntypeCompressedMultiTexSubImage2DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedMultiTexSubImage2DEXT :: FunPtr FuntypeCompressedMultiTexSubImage2DEXT -> FuntypeCompressedMultiTexSubImage2DEXT+glrefCompressedMultiTexSubImage2DEXT :: IORef FuntypeCompressedMultiTexSubImage2DEXT+glrefCompressedMultiTexSubImage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedMultiTexSubImage2DEXT #-}+glCompressedMultiTexSubImage2DEXT :: FuntypeCompressedMultiTexSubImage2DEXT+glCompressedMultiTexSubImage2DEXT = unsafePerformIO $ readIORef glrefCompressedMultiTexSubImage2DEXT+{-# INLINE glCompressedMultiTexSubImage2DEXT #-}+type FuntypeCompressedMultiTexSubImage1DEXT =+    GLenum ->+    GLenum ->+    GLint ->+    GLint ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCompressedMultiTexSubImage1DEXT :: FunPtr FuntypeCompressedMultiTexSubImage1DEXT -> FuntypeCompressedMultiTexSubImage1DEXT+glrefCompressedMultiTexSubImage1DEXT :: IORef FuntypeCompressedMultiTexSubImage1DEXT+glrefCompressedMultiTexSubImage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCompressedMultiTexSubImage1DEXT #-}+glCompressedMultiTexSubImage1DEXT :: FuntypeCompressedMultiTexSubImage1DEXT+glCompressedMultiTexSubImage1DEXT = unsafePerformIO $ readIORef glrefCompressedMultiTexSubImage1DEXT+{-# INLINE glCompressedMultiTexSubImage1DEXT #-}+type FuntypeGetCompressedMultiTexImageEXT =+    GLenum ->+    GLenum ->+    GLint ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetCompressedMultiTexImageEXT :: FunPtr FuntypeGetCompressedMultiTexImageEXT -> FuntypeGetCompressedMultiTexImageEXT+glrefGetCompressedMultiTexImageEXT :: IORef FuntypeGetCompressedMultiTexImageEXT+glrefGetCompressedMultiTexImageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetCompressedMultiTexImageEXT #-}+glGetCompressedMultiTexImageEXT :: FuntypeGetCompressedMultiTexImageEXT+glGetCompressedMultiTexImageEXT = unsafePerformIO $ readIORef glrefGetCompressedMultiTexImageEXT+{-# INLINE glGetCompressedMultiTexImageEXT #-}+type FuntypeMatrixLoadTransposefEXT =+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixLoadTransposefEXT :: FunPtr FuntypeMatrixLoadTransposefEXT -> FuntypeMatrixLoadTransposefEXT+glrefMatrixLoadTransposefEXT :: IORef FuntypeMatrixLoadTransposefEXT+glrefMatrixLoadTransposefEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixLoadTransposefEXT #-}+glMatrixLoadTransposefEXT :: FuntypeMatrixLoadTransposefEXT+glMatrixLoadTransposefEXT = unsafePerformIO $ readIORef glrefMatrixLoadTransposefEXT+{-# INLINE glMatrixLoadTransposefEXT #-}+type FuntypeMatrixLoadTransposedEXT =+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixLoadTransposedEXT :: FunPtr FuntypeMatrixLoadTransposedEXT -> FuntypeMatrixLoadTransposedEXT+glrefMatrixLoadTransposedEXT :: IORef FuntypeMatrixLoadTransposedEXT+glrefMatrixLoadTransposedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixLoadTransposedEXT #-}+glMatrixLoadTransposedEXT :: FuntypeMatrixLoadTransposedEXT+glMatrixLoadTransposedEXT = unsafePerformIO $ readIORef glrefMatrixLoadTransposedEXT+{-# INLINE glMatrixLoadTransposedEXT #-}+type FuntypeMatrixMultTransposefEXT =+    GLenum ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixMultTransposefEXT :: FunPtr FuntypeMatrixMultTransposefEXT -> FuntypeMatrixMultTransposefEXT+glrefMatrixMultTransposefEXT :: IORef FuntypeMatrixMultTransposefEXT+glrefMatrixMultTransposefEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixMultTransposefEXT #-}+glMatrixMultTransposefEXT :: FuntypeMatrixMultTransposefEXT+glMatrixMultTransposefEXT = unsafePerformIO $ readIORef glrefMatrixMultTransposefEXT+{-# INLINE glMatrixMultTransposefEXT #-}+type FuntypeMatrixMultTransposedEXT =+    GLenum ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMatrixMultTransposedEXT :: FunPtr FuntypeMatrixMultTransposedEXT -> FuntypeMatrixMultTransposedEXT+glrefMatrixMultTransposedEXT :: IORef FuntypeMatrixMultTransposedEXT+glrefMatrixMultTransposedEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMatrixMultTransposedEXT #-}+glMatrixMultTransposedEXT :: FuntypeMatrixMultTransposedEXT+glMatrixMultTransposedEXT = unsafePerformIO $ readIORef glrefMatrixMultTransposedEXT+{-# INLINE glMatrixMultTransposedEXT #-}+type FuntypeNamedBufferDataEXT =+    GLuint ->+    GLsizeiptr ->+    Ptr () ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedBufferDataEXT :: FunPtr FuntypeNamedBufferDataEXT -> FuntypeNamedBufferDataEXT+glrefNamedBufferDataEXT :: IORef FuntypeNamedBufferDataEXT+glrefNamedBufferDataEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedBufferDataEXT #-}+glNamedBufferDataEXT :: FuntypeNamedBufferDataEXT+glNamedBufferDataEXT = unsafePerformIO $ readIORef glrefNamedBufferDataEXT+{-# INLINE glNamedBufferDataEXT #-}+type FuntypeNamedBufferSubDataEXT =+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedBufferSubDataEXT :: FunPtr FuntypeNamedBufferSubDataEXT -> FuntypeNamedBufferSubDataEXT+glrefNamedBufferSubDataEXT :: IORef FuntypeNamedBufferSubDataEXT+glrefNamedBufferSubDataEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedBufferSubDataEXT #-}+glNamedBufferSubDataEXT :: FuntypeNamedBufferSubDataEXT+glNamedBufferSubDataEXT = unsafePerformIO $ readIORef glrefNamedBufferSubDataEXT+{-# INLINE glNamedBufferSubDataEXT #-}+type FuntypeMapNamedBufferEXT =+    GLuint ->+    GLenum ->+    IO ( Ptr () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMapNamedBufferEXT :: FunPtr FuntypeMapNamedBufferEXT -> FuntypeMapNamedBufferEXT+glrefMapNamedBufferEXT :: IORef FuntypeMapNamedBufferEXT+glrefMapNamedBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMapNamedBufferEXT #-}+glMapNamedBufferEXT :: FuntypeMapNamedBufferEXT+glMapNamedBufferEXT = unsafePerformIO $ readIORef glrefMapNamedBufferEXT+{-# INLINE glMapNamedBufferEXT #-}+type FuntypeUnmapNamedBufferEXT =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUnmapNamedBufferEXT :: FunPtr FuntypeUnmapNamedBufferEXT -> FuntypeUnmapNamedBufferEXT+glrefUnmapNamedBufferEXT :: IORef FuntypeUnmapNamedBufferEXT+glrefUnmapNamedBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUnmapNamedBufferEXT #-}+glUnmapNamedBufferEXT :: FuntypeUnmapNamedBufferEXT+glUnmapNamedBufferEXT = unsafePerformIO $ readIORef glrefUnmapNamedBufferEXT+{-# INLINE glUnmapNamedBufferEXT #-}+type FuntypeGetNamedBufferParameterivEXT =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedBufferParameterivEXT :: FunPtr FuntypeGetNamedBufferParameterivEXT -> FuntypeGetNamedBufferParameterivEXT+glrefGetNamedBufferParameterivEXT :: IORef FuntypeGetNamedBufferParameterivEXT+glrefGetNamedBufferParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedBufferParameterivEXT #-}+glGetNamedBufferParameterivEXT :: FuntypeGetNamedBufferParameterivEXT+glGetNamedBufferParameterivEXT = unsafePerformIO $ readIORef glrefGetNamedBufferParameterivEXT+{-# INLINE glGetNamedBufferParameterivEXT #-}+type FuntypeGetNamedBufferPointervEXT =+    GLuint ->+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedBufferPointervEXT :: FunPtr FuntypeGetNamedBufferPointervEXT -> FuntypeGetNamedBufferPointervEXT+glrefGetNamedBufferPointervEXT :: IORef FuntypeGetNamedBufferPointervEXT+glrefGetNamedBufferPointervEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedBufferPointervEXT #-}+glGetNamedBufferPointervEXT :: FuntypeGetNamedBufferPointervEXT+glGetNamedBufferPointervEXT = unsafePerformIO $ readIORef glrefGetNamedBufferPointervEXT+{-# INLINE glGetNamedBufferPointervEXT #-}+type FuntypeGetNamedBufferSubDataEXT =+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedBufferSubDataEXT :: FunPtr FuntypeGetNamedBufferSubDataEXT -> FuntypeGetNamedBufferSubDataEXT+glrefGetNamedBufferSubDataEXT :: IORef FuntypeGetNamedBufferSubDataEXT+glrefGetNamedBufferSubDataEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedBufferSubDataEXT #-}+glGetNamedBufferSubDataEXT :: FuntypeGetNamedBufferSubDataEXT+glGetNamedBufferSubDataEXT = unsafePerformIO $ readIORef glrefGetNamedBufferSubDataEXT+{-# INLINE glGetNamedBufferSubDataEXT #-}+type FuntypeProgramUniform1fEXT =+    GLuint ->+    GLint ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1fEXT :: FunPtr FuntypeProgramUniform1fEXT -> FuntypeProgramUniform1fEXT+glrefProgramUniform1fEXT :: IORef FuntypeProgramUniform1fEXT+glrefProgramUniform1fEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1fEXT #-}+glProgramUniform1fEXT :: FuntypeProgramUniform1fEXT+glProgramUniform1fEXT = unsafePerformIO $ readIORef glrefProgramUniform1fEXT+{-# INLINE glProgramUniform1fEXT #-}+type FuntypeProgramUniform2fEXT =+    GLuint ->+    GLint ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2fEXT :: FunPtr FuntypeProgramUniform2fEXT -> FuntypeProgramUniform2fEXT+glrefProgramUniform2fEXT :: IORef FuntypeProgramUniform2fEXT+glrefProgramUniform2fEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2fEXT #-}+glProgramUniform2fEXT :: FuntypeProgramUniform2fEXT+glProgramUniform2fEXT = unsafePerformIO $ readIORef glrefProgramUniform2fEXT+{-# INLINE glProgramUniform2fEXT #-}+type FuntypeProgramUniform3fEXT =+    GLuint ->+    GLint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3fEXT :: FunPtr FuntypeProgramUniform3fEXT -> FuntypeProgramUniform3fEXT+glrefProgramUniform3fEXT :: IORef FuntypeProgramUniform3fEXT+glrefProgramUniform3fEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3fEXT #-}+glProgramUniform3fEXT :: FuntypeProgramUniform3fEXT+glProgramUniform3fEXT = unsafePerformIO $ readIORef glrefProgramUniform3fEXT+{-# INLINE glProgramUniform3fEXT #-}+type FuntypeProgramUniform4fEXT =+    GLuint ->+    GLint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4fEXT :: FunPtr FuntypeProgramUniform4fEXT -> FuntypeProgramUniform4fEXT+glrefProgramUniform4fEXT :: IORef FuntypeProgramUniform4fEXT+glrefProgramUniform4fEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4fEXT #-}+glProgramUniform4fEXT :: FuntypeProgramUniform4fEXT+glProgramUniform4fEXT = unsafePerformIO $ readIORef glrefProgramUniform4fEXT+{-# INLINE glProgramUniform4fEXT #-}+type FuntypeProgramUniform1iEXT =+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1iEXT :: FunPtr FuntypeProgramUniform1iEXT -> FuntypeProgramUniform1iEXT+glrefProgramUniform1iEXT :: IORef FuntypeProgramUniform1iEXT+glrefProgramUniform1iEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1iEXT #-}+glProgramUniform1iEXT :: FuntypeProgramUniform1iEXT+glProgramUniform1iEXT = unsafePerformIO $ readIORef glrefProgramUniform1iEXT+{-# INLINE glProgramUniform1iEXT #-}+type FuntypeProgramUniform2iEXT =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2iEXT :: FunPtr FuntypeProgramUniform2iEXT -> FuntypeProgramUniform2iEXT+glrefProgramUniform2iEXT :: IORef FuntypeProgramUniform2iEXT+glrefProgramUniform2iEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2iEXT #-}+glProgramUniform2iEXT :: FuntypeProgramUniform2iEXT+glProgramUniform2iEXT = unsafePerformIO $ readIORef glrefProgramUniform2iEXT+{-# INLINE glProgramUniform2iEXT #-}+type FuntypeProgramUniform3iEXT =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3iEXT :: FunPtr FuntypeProgramUniform3iEXT -> FuntypeProgramUniform3iEXT+glrefProgramUniform3iEXT :: IORef FuntypeProgramUniform3iEXT+glrefProgramUniform3iEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3iEXT #-}+glProgramUniform3iEXT :: FuntypeProgramUniform3iEXT+glProgramUniform3iEXT = unsafePerformIO $ readIORef glrefProgramUniform3iEXT+{-# INLINE glProgramUniform3iEXT #-}+type FuntypeProgramUniform4iEXT =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4iEXT :: FunPtr FuntypeProgramUniform4iEXT -> FuntypeProgramUniform4iEXT+glrefProgramUniform4iEXT :: IORef FuntypeProgramUniform4iEXT+glrefProgramUniform4iEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4iEXT #-}+glProgramUniform4iEXT :: FuntypeProgramUniform4iEXT+glProgramUniform4iEXT = unsafePerformIO $ readIORef glrefProgramUniform4iEXT+{-# INLINE glProgramUniform4iEXT #-}+type FuntypeProgramUniform1fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1fvEXT :: FunPtr FuntypeProgramUniform1fvEXT -> FuntypeProgramUniform1fvEXT+glrefProgramUniform1fvEXT :: IORef FuntypeProgramUniform1fvEXT+glrefProgramUniform1fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1fvEXT #-}+glProgramUniform1fvEXT :: FuntypeProgramUniform1fvEXT+glProgramUniform1fvEXT = unsafePerformIO $ readIORef glrefProgramUniform1fvEXT+{-# INLINE glProgramUniform1fvEXT #-}+type FuntypeProgramUniform2fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2fvEXT :: FunPtr FuntypeProgramUniform2fvEXT -> FuntypeProgramUniform2fvEXT+glrefProgramUniform2fvEXT :: IORef FuntypeProgramUniform2fvEXT+glrefProgramUniform2fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2fvEXT #-}+glProgramUniform2fvEXT :: FuntypeProgramUniform2fvEXT+glProgramUniform2fvEXT = unsafePerformIO $ readIORef glrefProgramUniform2fvEXT+{-# INLINE glProgramUniform2fvEXT #-}+type FuntypeProgramUniform3fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3fvEXT :: FunPtr FuntypeProgramUniform3fvEXT -> FuntypeProgramUniform3fvEXT+glrefProgramUniform3fvEXT :: IORef FuntypeProgramUniform3fvEXT+glrefProgramUniform3fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3fvEXT #-}+glProgramUniform3fvEXT :: FuntypeProgramUniform3fvEXT+glProgramUniform3fvEXT = unsafePerformIO $ readIORef glrefProgramUniform3fvEXT+{-# INLINE glProgramUniform3fvEXT #-}+type FuntypeProgramUniform4fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4fvEXT :: FunPtr FuntypeProgramUniform4fvEXT -> FuntypeProgramUniform4fvEXT+glrefProgramUniform4fvEXT :: IORef FuntypeProgramUniform4fvEXT+glrefProgramUniform4fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4fvEXT #-}+glProgramUniform4fvEXT :: FuntypeProgramUniform4fvEXT+glProgramUniform4fvEXT = unsafePerformIO $ readIORef glrefProgramUniform4fvEXT+{-# INLINE glProgramUniform4fvEXT #-}+type FuntypeProgramUniform1ivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1ivEXT :: FunPtr FuntypeProgramUniform1ivEXT -> FuntypeProgramUniform1ivEXT+glrefProgramUniform1ivEXT :: IORef FuntypeProgramUniform1ivEXT+glrefProgramUniform1ivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1ivEXT #-}+glProgramUniform1ivEXT :: FuntypeProgramUniform1ivEXT+glProgramUniform1ivEXT = unsafePerformIO $ readIORef glrefProgramUniform1ivEXT+{-# INLINE glProgramUniform1ivEXT #-}+type FuntypeProgramUniform2ivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2ivEXT :: FunPtr FuntypeProgramUniform2ivEXT -> FuntypeProgramUniform2ivEXT+glrefProgramUniform2ivEXT :: IORef FuntypeProgramUniform2ivEXT+glrefProgramUniform2ivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2ivEXT #-}+glProgramUniform2ivEXT :: FuntypeProgramUniform2ivEXT+glProgramUniform2ivEXT = unsafePerformIO $ readIORef glrefProgramUniform2ivEXT+{-# INLINE glProgramUniform2ivEXT #-}+type FuntypeProgramUniform3ivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3ivEXT :: FunPtr FuntypeProgramUniform3ivEXT -> FuntypeProgramUniform3ivEXT+glrefProgramUniform3ivEXT :: IORef FuntypeProgramUniform3ivEXT+glrefProgramUniform3ivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3ivEXT #-}+glProgramUniform3ivEXT :: FuntypeProgramUniform3ivEXT+glProgramUniform3ivEXT = unsafePerformIO $ readIORef glrefProgramUniform3ivEXT+{-# INLINE glProgramUniform3ivEXT #-}+type FuntypeProgramUniform4ivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4ivEXT :: FunPtr FuntypeProgramUniform4ivEXT -> FuntypeProgramUniform4ivEXT+glrefProgramUniform4ivEXT :: IORef FuntypeProgramUniform4ivEXT+glrefProgramUniform4ivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4ivEXT #-}+glProgramUniform4ivEXT :: FuntypeProgramUniform4ivEXT+glProgramUniform4ivEXT = unsafePerformIO $ readIORef glrefProgramUniform4ivEXT+{-# INLINE glProgramUniform4ivEXT #-}+type FuntypeProgramUniformMatrix2fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2fvEXT :: FunPtr FuntypeProgramUniformMatrix2fvEXT -> FuntypeProgramUniformMatrix2fvEXT+glrefProgramUniformMatrix2fvEXT :: IORef FuntypeProgramUniformMatrix2fvEXT+glrefProgramUniformMatrix2fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2fvEXT #-}+glProgramUniformMatrix2fvEXT :: FuntypeProgramUniformMatrix2fvEXT+glProgramUniformMatrix2fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix2fvEXT+{-# INLINE glProgramUniformMatrix2fvEXT #-}+type FuntypeProgramUniformMatrix3fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3fvEXT :: FunPtr FuntypeProgramUniformMatrix3fvEXT -> FuntypeProgramUniformMatrix3fvEXT+glrefProgramUniformMatrix3fvEXT :: IORef FuntypeProgramUniformMatrix3fvEXT+glrefProgramUniformMatrix3fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3fvEXT #-}+glProgramUniformMatrix3fvEXT :: FuntypeProgramUniformMatrix3fvEXT+glProgramUniformMatrix3fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix3fvEXT+{-# INLINE glProgramUniformMatrix3fvEXT #-}+type FuntypeProgramUniformMatrix4fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4fvEXT :: FunPtr FuntypeProgramUniformMatrix4fvEXT -> FuntypeProgramUniformMatrix4fvEXT+glrefProgramUniformMatrix4fvEXT :: IORef FuntypeProgramUniformMatrix4fvEXT+glrefProgramUniformMatrix4fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4fvEXT #-}+glProgramUniformMatrix4fvEXT :: FuntypeProgramUniformMatrix4fvEXT+glProgramUniformMatrix4fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix4fvEXT+{-# INLINE glProgramUniformMatrix4fvEXT #-}+type FuntypeProgramUniformMatrix2x3fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x3fvEXT :: FunPtr FuntypeProgramUniformMatrix2x3fvEXT -> FuntypeProgramUniformMatrix2x3fvEXT+glrefProgramUniformMatrix2x3fvEXT :: IORef FuntypeProgramUniformMatrix2x3fvEXT+glrefProgramUniformMatrix2x3fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x3fvEXT #-}+glProgramUniformMatrix2x3fvEXT :: FuntypeProgramUniformMatrix2x3fvEXT+glProgramUniformMatrix2x3fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x3fvEXT+{-# INLINE glProgramUniformMatrix2x3fvEXT #-}+type FuntypeProgramUniformMatrix3x2fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x2fvEXT :: FunPtr FuntypeProgramUniformMatrix3x2fvEXT -> FuntypeProgramUniformMatrix3x2fvEXT+glrefProgramUniformMatrix3x2fvEXT :: IORef FuntypeProgramUniformMatrix3x2fvEXT+glrefProgramUniformMatrix3x2fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x2fvEXT #-}+glProgramUniformMatrix3x2fvEXT :: FuntypeProgramUniformMatrix3x2fvEXT+glProgramUniformMatrix3x2fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x2fvEXT+{-# INLINE glProgramUniformMatrix3x2fvEXT #-}+type FuntypeProgramUniformMatrix2x4fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x4fvEXT :: FunPtr FuntypeProgramUniformMatrix2x4fvEXT -> FuntypeProgramUniformMatrix2x4fvEXT+glrefProgramUniformMatrix2x4fvEXT :: IORef FuntypeProgramUniformMatrix2x4fvEXT+glrefProgramUniformMatrix2x4fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x4fvEXT #-}+glProgramUniformMatrix2x4fvEXT :: FuntypeProgramUniformMatrix2x4fvEXT+glProgramUniformMatrix2x4fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x4fvEXT+{-# INLINE glProgramUniformMatrix2x4fvEXT #-}+type FuntypeProgramUniformMatrix4x2fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x2fvEXT :: FunPtr FuntypeProgramUniformMatrix4x2fvEXT -> FuntypeProgramUniformMatrix4x2fvEXT+glrefProgramUniformMatrix4x2fvEXT :: IORef FuntypeProgramUniformMatrix4x2fvEXT+glrefProgramUniformMatrix4x2fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x2fvEXT #-}+glProgramUniformMatrix4x2fvEXT :: FuntypeProgramUniformMatrix4x2fvEXT+glProgramUniformMatrix4x2fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x2fvEXT+{-# INLINE glProgramUniformMatrix4x2fvEXT #-}+type FuntypeProgramUniformMatrix3x4fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x4fvEXT :: FunPtr FuntypeProgramUniformMatrix3x4fvEXT -> FuntypeProgramUniformMatrix3x4fvEXT+glrefProgramUniformMatrix3x4fvEXT :: IORef FuntypeProgramUniformMatrix3x4fvEXT+glrefProgramUniformMatrix3x4fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x4fvEXT #-}+glProgramUniformMatrix3x4fvEXT :: FuntypeProgramUniformMatrix3x4fvEXT+glProgramUniformMatrix3x4fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x4fvEXT+{-# INLINE glProgramUniformMatrix3x4fvEXT #-}+type FuntypeProgramUniformMatrix4x3fvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x3fvEXT :: FunPtr FuntypeProgramUniformMatrix4x3fvEXT -> FuntypeProgramUniformMatrix4x3fvEXT+glrefProgramUniformMatrix4x3fvEXT :: IORef FuntypeProgramUniformMatrix4x3fvEXT+glrefProgramUniformMatrix4x3fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x3fvEXT #-}+glProgramUniformMatrix4x3fvEXT :: FuntypeProgramUniformMatrix4x3fvEXT+glProgramUniformMatrix4x3fvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x3fvEXT+{-# INLINE glProgramUniformMatrix4x3fvEXT #-}+type FuntypeTextureBufferEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureBufferEXT :: FunPtr FuntypeTextureBufferEXT -> FuntypeTextureBufferEXT+glrefTextureBufferEXT :: IORef FuntypeTextureBufferEXT+glrefTextureBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureBufferEXT #-}+glTextureBufferEXT :: FuntypeTextureBufferEXT+glTextureBufferEXT = unsafePerformIO $ readIORef glrefTextureBufferEXT+{-# INLINE glTextureBufferEXT #-}+type FuntypeMultiTexBufferEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexBufferEXT :: FunPtr FuntypeMultiTexBufferEXT -> FuntypeMultiTexBufferEXT+glrefMultiTexBufferEXT :: IORef FuntypeMultiTexBufferEXT+glrefMultiTexBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexBufferEXT #-}+glMultiTexBufferEXT :: FuntypeMultiTexBufferEXT+glMultiTexBufferEXT = unsafePerformIO $ readIORef glrefMultiTexBufferEXT+{-# INLINE glMultiTexBufferEXT #-}+type FuntypeTextureParameterIivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureParameterIivEXT :: FunPtr FuntypeTextureParameterIivEXT -> FuntypeTextureParameterIivEXT+glrefTextureParameterIivEXT :: IORef FuntypeTextureParameterIivEXT+glrefTextureParameterIivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureParameterIivEXT #-}+glTextureParameterIivEXT :: FuntypeTextureParameterIivEXT+glTextureParameterIivEXT = unsafePerformIO $ readIORef glrefTextureParameterIivEXT+{-# INLINE glTextureParameterIivEXT #-}+type FuntypeTextureParameterIuivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureParameterIuivEXT :: FunPtr FuntypeTextureParameterIuivEXT -> FuntypeTextureParameterIuivEXT+glrefTextureParameterIuivEXT :: IORef FuntypeTextureParameterIuivEXT+glrefTextureParameterIuivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureParameterIuivEXT #-}+glTextureParameterIuivEXT :: FuntypeTextureParameterIuivEXT+glTextureParameterIuivEXT = unsafePerformIO $ readIORef glrefTextureParameterIuivEXT+{-# INLINE glTextureParameterIuivEXT #-}+type FuntypeGetTextureParameterIivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureParameterIivEXT :: FunPtr FuntypeGetTextureParameterIivEXT -> FuntypeGetTextureParameterIivEXT+glrefGetTextureParameterIivEXT :: IORef FuntypeGetTextureParameterIivEXT+glrefGetTextureParameterIivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureParameterIivEXT #-}+glGetTextureParameterIivEXT :: FuntypeGetTextureParameterIivEXT+glGetTextureParameterIivEXT = unsafePerformIO $ readIORef glrefGetTextureParameterIivEXT+{-# INLINE glGetTextureParameterIivEXT #-}+type FuntypeGetTextureParameterIuivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetTextureParameterIuivEXT :: FunPtr FuntypeGetTextureParameterIuivEXT -> FuntypeGetTextureParameterIuivEXT+glrefGetTextureParameterIuivEXT :: IORef FuntypeGetTextureParameterIuivEXT+glrefGetTextureParameterIuivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetTextureParameterIuivEXT #-}+glGetTextureParameterIuivEXT :: FuntypeGetTextureParameterIuivEXT+glGetTextureParameterIuivEXT = unsafePerformIO $ readIORef glrefGetTextureParameterIuivEXT+{-# INLINE glGetTextureParameterIuivEXT #-}+type FuntypeMultiTexParameterIivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexParameterIivEXT :: FunPtr FuntypeMultiTexParameterIivEXT -> FuntypeMultiTexParameterIivEXT+glrefMultiTexParameterIivEXT :: IORef FuntypeMultiTexParameterIivEXT+glrefMultiTexParameterIivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexParameterIivEXT #-}+glMultiTexParameterIivEXT :: FuntypeMultiTexParameterIivEXT+glMultiTexParameterIivEXT = unsafePerformIO $ readIORef glrefMultiTexParameterIivEXT+{-# INLINE glMultiTexParameterIivEXT #-}+type FuntypeMultiTexParameterIuivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexParameterIuivEXT :: FunPtr FuntypeMultiTexParameterIuivEXT -> FuntypeMultiTexParameterIuivEXT+glrefMultiTexParameterIuivEXT :: IORef FuntypeMultiTexParameterIuivEXT+glrefMultiTexParameterIuivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexParameterIuivEXT #-}+glMultiTexParameterIuivEXT :: FuntypeMultiTexParameterIuivEXT+glMultiTexParameterIuivEXT = unsafePerformIO $ readIORef glrefMultiTexParameterIuivEXT+{-# INLINE glMultiTexParameterIuivEXT #-}+type FuntypeGetMultiTexParameterIivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexParameterIivEXT :: FunPtr FuntypeGetMultiTexParameterIivEXT -> FuntypeGetMultiTexParameterIivEXT+glrefGetMultiTexParameterIivEXT :: IORef FuntypeGetMultiTexParameterIivEXT+glrefGetMultiTexParameterIivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexParameterIivEXT #-}+glGetMultiTexParameterIivEXT :: FuntypeGetMultiTexParameterIivEXT+glGetMultiTexParameterIivEXT = unsafePerformIO $ readIORef glrefGetMultiTexParameterIivEXT+{-# INLINE glGetMultiTexParameterIivEXT #-}+type FuntypeGetMultiTexParameterIuivEXT =+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetMultiTexParameterIuivEXT :: FunPtr FuntypeGetMultiTexParameterIuivEXT -> FuntypeGetMultiTexParameterIuivEXT+glrefGetMultiTexParameterIuivEXT :: IORef FuntypeGetMultiTexParameterIuivEXT+glrefGetMultiTexParameterIuivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetMultiTexParameterIuivEXT #-}+glGetMultiTexParameterIuivEXT :: FuntypeGetMultiTexParameterIuivEXT+glGetMultiTexParameterIuivEXT = unsafePerformIO $ readIORef glrefGetMultiTexParameterIuivEXT+{-# INLINE glGetMultiTexParameterIuivEXT #-}+type FuntypeProgramUniform1uiEXT =+    GLuint ->+    GLint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1uiEXT :: FunPtr FuntypeProgramUniform1uiEXT -> FuntypeProgramUniform1uiEXT+glrefProgramUniform1uiEXT :: IORef FuntypeProgramUniform1uiEXT+glrefProgramUniform1uiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1uiEXT #-}+glProgramUniform1uiEXT :: FuntypeProgramUniform1uiEXT+glProgramUniform1uiEXT = unsafePerformIO $ readIORef glrefProgramUniform1uiEXT+{-# INLINE glProgramUniform1uiEXT #-}+type FuntypeProgramUniform2uiEXT =+    GLuint ->+    GLint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2uiEXT :: FunPtr FuntypeProgramUniform2uiEXT -> FuntypeProgramUniform2uiEXT+glrefProgramUniform2uiEXT :: IORef FuntypeProgramUniform2uiEXT+glrefProgramUniform2uiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2uiEXT #-}+glProgramUniform2uiEXT :: FuntypeProgramUniform2uiEXT+glProgramUniform2uiEXT = unsafePerformIO $ readIORef glrefProgramUniform2uiEXT+{-# INLINE glProgramUniform2uiEXT #-}+type FuntypeProgramUniform3uiEXT =+    GLuint ->+    GLint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3uiEXT :: FunPtr FuntypeProgramUniform3uiEXT -> FuntypeProgramUniform3uiEXT+glrefProgramUniform3uiEXT :: IORef FuntypeProgramUniform3uiEXT+glrefProgramUniform3uiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3uiEXT #-}+glProgramUniform3uiEXT :: FuntypeProgramUniform3uiEXT+glProgramUniform3uiEXT = unsafePerformIO $ readIORef glrefProgramUniform3uiEXT+{-# INLINE glProgramUniform3uiEXT #-}+type FuntypeProgramUniform4uiEXT =+    GLuint ->+    GLint ->+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4uiEXT :: FunPtr FuntypeProgramUniform4uiEXT -> FuntypeProgramUniform4uiEXT+glrefProgramUniform4uiEXT :: IORef FuntypeProgramUniform4uiEXT+glrefProgramUniform4uiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4uiEXT #-}+glProgramUniform4uiEXT :: FuntypeProgramUniform4uiEXT+glProgramUniform4uiEXT = unsafePerformIO $ readIORef glrefProgramUniform4uiEXT+{-# INLINE glProgramUniform4uiEXT #-}+type FuntypeProgramUniform1uivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1uivEXT :: FunPtr FuntypeProgramUniform1uivEXT -> FuntypeProgramUniform1uivEXT+glrefProgramUniform1uivEXT :: IORef FuntypeProgramUniform1uivEXT+glrefProgramUniform1uivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1uivEXT #-}+glProgramUniform1uivEXT :: FuntypeProgramUniform1uivEXT+glProgramUniform1uivEXT = unsafePerformIO $ readIORef glrefProgramUniform1uivEXT+{-# INLINE glProgramUniform1uivEXT #-}+type FuntypeProgramUniform2uivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2uivEXT :: FunPtr FuntypeProgramUniform2uivEXT -> FuntypeProgramUniform2uivEXT+glrefProgramUniform2uivEXT :: IORef FuntypeProgramUniform2uivEXT+glrefProgramUniform2uivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2uivEXT #-}+glProgramUniform2uivEXT :: FuntypeProgramUniform2uivEXT+glProgramUniform2uivEXT = unsafePerformIO $ readIORef glrefProgramUniform2uivEXT+{-# INLINE glProgramUniform2uivEXT #-}+type FuntypeProgramUniform3uivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3uivEXT :: FunPtr FuntypeProgramUniform3uivEXT -> FuntypeProgramUniform3uivEXT+glrefProgramUniform3uivEXT :: IORef FuntypeProgramUniform3uivEXT+glrefProgramUniform3uivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3uivEXT #-}+glProgramUniform3uivEXT :: FuntypeProgramUniform3uivEXT+glProgramUniform3uivEXT = unsafePerformIO $ readIORef glrefProgramUniform3uivEXT+{-# INLINE glProgramUniform3uivEXT #-}+type FuntypeProgramUniform4uivEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4uivEXT :: FunPtr FuntypeProgramUniform4uivEXT -> FuntypeProgramUniform4uivEXT+glrefProgramUniform4uivEXT :: IORef FuntypeProgramUniform4uivEXT+glrefProgramUniform4uivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4uivEXT #-}+glProgramUniform4uivEXT :: FuntypeProgramUniform4uivEXT+glProgramUniform4uivEXT = unsafePerformIO $ readIORef glrefProgramUniform4uivEXT+{-# INLINE glProgramUniform4uivEXT #-}+type FuntypeNamedProgramLocalParameters4fvEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameters4fvEXT :: FunPtr FuntypeNamedProgramLocalParameters4fvEXT -> FuntypeNamedProgramLocalParameters4fvEXT+glrefNamedProgramLocalParameters4fvEXT :: IORef FuntypeNamedProgramLocalParameters4fvEXT+glrefNamedProgramLocalParameters4fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameters4fvEXT #-}+glNamedProgramLocalParameters4fvEXT :: FuntypeNamedProgramLocalParameters4fvEXT+glNamedProgramLocalParameters4fvEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameters4fvEXT+{-# INLINE glNamedProgramLocalParameters4fvEXT #-}+type FuntypeNamedProgramLocalParameterI4iEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameterI4iEXT :: FunPtr FuntypeNamedProgramLocalParameterI4iEXT -> FuntypeNamedProgramLocalParameterI4iEXT+glrefNamedProgramLocalParameterI4iEXT :: IORef FuntypeNamedProgramLocalParameterI4iEXT+glrefNamedProgramLocalParameterI4iEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameterI4iEXT #-}+glNamedProgramLocalParameterI4iEXT :: FuntypeNamedProgramLocalParameterI4iEXT+glNamedProgramLocalParameterI4iEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameterI4iEXT+{-# INLINE glNamedProgramLocalParameterI4iEXT #-}+type FuntypeNamedProgramLocalParameterI4ivEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameterI4ivEXT :: FunPtr FuntypeNamedProgramLocalParameterI4ivEXT -> FuntypeNamedProgramLocalParameterI4ivEXT+glrefNamedProgramLocalParameterI4ivEXT :: IORef FuntypeNamedProgramLocalParameterI4ivEXT+glrefNamedProgramLocalParameterI4ivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameterI4ivEXT #-}+glNamedProgramLocalParameterI4ivEXT :: FuntypeNamedProgramLocalParameterI4ivEXT+glNamedProgramLocalParameterI4ivEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameterI4ivEXT+{-# INLINE glNamedProgramLocalParameterI4ivEXT #-}+type FuntypeNamedProgramLocalParametersI4ivEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParametersI4ivEXT :: FunPtr FuntypeNamedProgramLocalParametersI4ivEXT -> FuntypeNamedProgramLocalParametersI4ivEXT+glrefNamedProgramLocalParametersI4ivEXT :: IORef FuntypeNamedProgramLocalParametersI4ivEXT+glrefNamedProgramLocalParametersI4ivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParametersI4ivEXT #-}+glNamedProgramLocalParametersI4ivEXT :: FuntypeNamedProgramLocalParametersI4ivEXT+glNamedProgramLocalParametersI4ivEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParametersI4ivEXT+{-# INLINE glNamedProgramLocalParametersI4ivEXT #-}+type FuntypeNamedProgramLocalParameterI4uiEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameterI4uiEXT :: FunPtr FuntypeNamedProgramLocalParameterI4uiEXT -> FuntypeNamedProgramLocalParameterI4uiEXT+glrefNamedProgramLocalParameterI4uiEXT :: IORef FuntypeNamedProgramLocalParameterI4uiEXT+glrefNamedProgramLocalParameterI4uiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameterI4uiEXT #-}+glNamedProgramLocalParameterI4uiEXT :: FuntypeNamedProgramLocalParameterI4uiEXT+glNamedProgramLocalParameterI4uiEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameterI4uiEXT+{-# INLINE glNamedProgramLocalParameterI4uiEXT #-}+type FuntypeNamedProgramLocalParameterI4uivEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameterI4uivEXT :: FunPtr FuntypeNamedProgramLocalParameterI4uivEXT -> FuntypeNamedProgramLocalParameterI4uivEXT+glrefNamedProgramLocalParameterI4uivEXT :: IORef FuntypeNamedProgramLocalParameterI4uivEXT+glrefNamedProgramLocalParameterI4uivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameterI4uivEXT #-}+glNamedProgramLocalParameterI4uivEXT :: FuntypeNamedProgramLocalParameterI4uivEXT+glNamedProgramLocalParameterI4uivEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameterI4uivEXT+{-# INLINE glNamedProgramLocalParameterI4uivEXT #-}+type FuntypeNamedProgramLocalParametersI4uivEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParametersI4uivEXT :: FunPtr FuntypeNamedProgramLocalParametersI4uivEXT -> FuntypeNamedProgramLocalParametersI4uivEXT+glrefNamedProgramLocalParametersI4uivEXT :: IORef FuntypeNamedProgramLocalParametersI4uivEXT+glrefNamedProgramLocalParametersI4uivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParametersI4uivEXT #-}+glNamedProgramLocalParametersI4uivEXT :: FuntypeNamedProgramLocalParametersI4uivEXT+glNamedProgramLocalParametersI4uivEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParametersI4uivEXT+{-# INLINE glNamedProgramLocalParametersI4uivEXT #-}+type FuntypeGetNamedProgramLocalParameterIivEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedProgramLocalParameterIivEXT :: FunPtr FuntypeGetNamedProgramLocalParameterIivEXT -> FuntypeGetNamedProgramLocalParameterIivEXT+glrefGetNamedProgramLocalParameterIivEXT :: IORef FuntypeGetNamedProgramLocalParameterIivEXT+glrefGetNamedProgramLocalParameterIivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedProgramLocalParameterIivEXT #-}+glGetNamedProgramLocalParameterIivEXT :: FuntypeGetNamedProgramLocalParameterIivEXT+glGetNamedProgramLocalParameterIivEXT = unsafePerformIO $ readIORef glrefGetNamedProgramLocalParameterIivEXT+{-# INLINE glGetNamedProgramLocalParameterIivEXT #-}+type FuntypeGetNamedProgramLocalParameterIuivEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedProgramLocalParameterIuivEXT :: FunPtr FuntypeGetNamedProgramLocalParameterIuivEXT -> FuntypeGetNamedProgramLocalParameterIuivEXT+glrefGetNamedProgramLocalParameterIuivEXT :: IORef FuntypeGetNamedProgramLocalParameterIuivEXT+glrefGetNamedProgramLocalParameterIuivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedProgramLocalParameterIuivEXT #-}+glGetNamedProgramLocalParameterIuivEXT :: FuntypeGetNamedProgramLocalParameterIuivEXT+glGetNamedProgramLocalParameterIuivEXT = unsafePerformIO $ readIORef glrefGetNamedProgramLocalParameterIuivEXT+{-# INLINE glGetNamedProgramLocalParameterIuivEXT #-}+type FuntypeEnableClientStateiEXT =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnableClientStateiEXT :: FunPtr FuntypeEnableClientStateiEXT -> FuntypeEnableClientStateiEXT+glrefEnableClientStateiEXT :: IORef FuntypeEnableClientStateiEXT+glrefEnableClientStateiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnableClientStateiEXT #-}+glEnableClientStateiEXT :: FuntypeEnableClientStateiEXT+glEnableClientStateiEXT = unsafePerformIO $ readIORef glrefEnableClientStateiEXT+{-# INLINE glEnableClientStateiEXT #-}+type FuntypeDisableClientStateiEXT =+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisableClientStateiEXT :: FunPtr FuntypeDisableClientStateiEXT -> FuntypeDisableClientStateiEXT+glrefDisableClientStateiEXT :: IORef FuntypeDisableClientStateiEXT+glrefDisableClientStateiEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisableClientStateiEXT #-}+glDisableClientStateiEXT :: FuntypeDisableClientStateiEXT+glDisableClientStateiEXT = unsafePerformIO $ readIORef glrefDisableClientStateiEXT+{-# INLINE glDisableClientStateiEXT #-}+type FuntypeGetFloati_vEXT =+    GLenum ->+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFloati_vEXT :: FunPtr FuntypeGetFloati_vEXT -> FuntypeGetFloati_vEXT+glrefGetFloati_vEXT :: IORef FuntypeGetFloati_vEXT+glrefGetFloati_vEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFloati_vEXT #-}+glGetFloati_vEXT :: FuntypeGetFloati_vEXT+glGetFloati_vEXT = unsafePerformIO $ readIORef glrefGetFloati_vEXT+{-# INLINE glGetFloati_vEXT #-}+type FuntypeGetDoublei_vEXT =+    GLenum ->+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetDoublei_vEXT :: FunPtr FuntypeGetDoublei_vEXT -> FuntypeGetDoublei_vEXT+glrefGetDoublei_vEXT :: IORef FuntypeGetDoublei_vEXT+glrefGetDoublei_vEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetDoublei_vEXT #-}+glGetDoublei_vEXT :: FuntypeGetDoublei_vEXT+glGetDoublei_vEXT = unsafePerformIO $ readIORef glrefGetDoublei_vEXT+{-# INLINE glGetDoublei_vEXT #-}+type FuntypeGetPointeri_vEXT =+    GLenum ->+    GLuint ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetPointeri_vEXT :: FunPtr FuntypeGetPointeri_vEXT -> FuntypeGetPointeri_vEXT+glrefGetPointeri_vEXT :: IORef FuntypeGetPointeri_vEXT+glrefGetPointeri_vEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetPointeri_vEXT #-}+glGetPointeri_vEXT :: FuntypeGetPointeri_vEXT+glGetPointeri_vEXT = unsafePerformIO $ readIORef glrefGetPointeri_vEXT+{-# INLINE glGetPointeri_vEXT #-}+type FuntypeNamedProgramStringEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLsizei ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramStringEXT :: FunPtr FuntypeNamedProgramStringEXT -> FuntypeNamedProgramStringEXT+glrefNamedProgramStringEXT :: IORef FuntypeNamedProgramStringEXT+glrefNamedProgramStringEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramStringEXT #-}+glNamedProgramStringEXT :: FuntypeNamedProgramStringEXT+glNamedProgramStringEXT = unsafePerformIO $ readIORef glrefNamedProgramStringEXT+{-# INLINE glNamedProgramStringEXT #-}+type FuntypeNamedProgramLocalParameter4dEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameter4dEXT :: FunPtr FuntypeNamedProgramLocalParameter4dEXT -> FuntypeNamedProgramLocalParameter4dEXT+glrefNamedProgramLocalParameter4dEXT :: IORef FuntypeNamedProgramLocalParameter4dEXT+glrefNamedProgramLocalParameter4dEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameter4dEXT #-}+glNamedProgramLocalParameter4dEXT :: FuntypeNamedProgramLocalParameter4dEXT+glNamedProgramLocalParameter4dEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameter4dEXT+{-# INLINE glNamedProgramLocalParameter4dEXT #-}+type FuntypeNamedProgramLocalParameter4dvEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameter4dvEXT :: FunPtr FuntypeNamedProgramLocalParameter4dvEXT -> FuntypeNamedProgramLocalParameter4dvEXT+glrefNamedProgramLocalParameter4dvEXT :: IORef FuntypeNamedProgramLocalParameter4dvEXT+glrefNamedProgramLocalParameter4dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameter4dvEXT #-}+glNamedProgramLocalParameter4dvEXT :: FuntypeNamedProgramLocalParameter4dvEXT+glNamedProgramLocalParameter4dvEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameter4dvEXT+{-# INLINE glNamedProgramLocalParameter4dvEXT #-}+type FuntypeNamedProgramLocalParameter4fEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameter4fEXT :: FunPtr FuntypeNamedProgramLocalParameter4fEXT -> FuntypeNamedProgramLocalParameter4fEXT+glrefNamedProgramLocalParameter4fEXT :: IORef FuntypeNamedProgramLocalParameter4fEXT+glrefNamedProgramLocalParameter4fEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameter4fEXT #-}+glNamedProgramLocalParameter4fEXT :: FuntypeNamedProgramLocalParameter4fEXT+glNamedProgramLocalParameter4fEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameter4fEXT+{-# INLINE glNamedProgramLocalParameter4fEXT #-}+type FuntypeNamedProgramLocalParameter4fvEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedProgramLocalParameter4fvEXT :: FunPtr FuntypeNamedProgramLocalParameter4fvEXT -> FuntypeNamedProgramLocalParameter4fvEXT+glrefNamedProgramLocalParameter4fvEXT :: IORef FuntypeNamedProgramLocalParameter4fvEXT+glrefNamedProgramLocalParameter4fvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedProgramLocalParameter4fvEXT #-}+glNamedProgramLocalParameter4fvEXT :: FuntypeNamedProgramLocalParameter4fvEXT+glNamedProgramLocalParameter4fvEXT = unsafePerformIO $ readIORef glrefNamedProgramLocalParameter4fvEXT+{-# INLINE glNamedProgramLocalParameter4fvEXT #-}+type FuntypeGetNamedProgramLocalParameterdvEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedProgramLocalParameterdvEXT :: FunPtr FuntypeGetNamedProgramLocalParameterdvEXT -> FuntypeGetNamedProgramLocalParameterdvEXT+glrefGetNamedProgramLocalParameterdvEXT :: IORef FuntypeGetNamedProgramLocalParameterdvEXT+glrefGetNamedProgramLocalParameterdvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedProgramLocalParameterdvEXT #-}+glGetNamedProgramLocalParameterdvEXT :: FuntypeGetNamedProgramLocalParameterdvEXT+glGetNamedProgramLocalParameterdvEXT = unsafePerformIO $ readIORef glrefGetNamedProgramLocalParameterdvEXT+{-# INLINE glGetNamedProgramLocalParameterdvEXT #-}+type FuntypeGetNamedProgramLocalParameterfvEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedProgramLocalParameterfvEXT :: FunPtr FuntypeGetNamedProgramLocalParameterfvEXT -> FuntypeGetNamedProgramLocalParameterfvEXT+glrefGetNamedProgramLocalParameterfvEXT :: IORef FuntypeGetNamedProgramLocalParameterfvEXT+glrefGetNamedProgramLocalParameterfvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedProgramLocalParameterfvEXT #-}+glGetNamedProgramLocalParameterfvEXT :: FuntypeGetNamedProgramLocalParameterfvEXT+glGetNamedProgramLocalParameterfvEXT = unsafePerformIO $ readIORef glrefGetNamedProgramLocalParameterfvEXT+{-# INLINE glGetNamedProgramLocalParameterfvEXT #-}+type FuntypeGetNamedProgramivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedProgramivEXT :: FunPtr FuntypeGetNamedProgramivEXT -> FuntypeGetNamedProgramivEXT+glrefGetNamedProgramivEXT :: IORef FuntypeGetNamedProgramivEXT+glrefGetNamedProgramivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedProgramivEXT #-}+glGetNamedProgramivEXT :: FuntypeGetNamedProgramivEXT+glGetNamedProgramivEXT = unsafePerformIO $ readIORef glrefGetNamedProgramivEXT+{-# INLINE glGetNamedProgramivEXT #-}+type FuntypeGetNamedProgramStringEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedProgramStringEXT :: FunPtr FuntypeGetNamedProgramStringEXT -> FuntypeGetNamedProgramStringEXT+glrefGetNamedProgramStringEXT :: IORef FuntypeGetNamedProgramStringEXT+glrefGetNamedProgramStringEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedProgramStringEXT #-}+glGetNamedProgramStringEXT :: FuntypeGetNamedProgramStringEXT+glGetNamedProgramStringEXT = unsafePerformIO $ readIORef glrefGetNamedProgramStringEXT+{-# INLINE glGetNamedProgramStringEXT #-}+type FuntypeNamedRenderbufferStorageEXT =+    GLuint ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedRenderbufferStorageEXT :: FunPtr FuntypeNamedRenderbufferStorageEXT -> FuntypeNamedRenderbufferStorageEXT+glrefNamedRenderbufferStorageEXT :: IORef FuntypeNamedRenderbufferStorageEXT+glrefNamedRenderbufferStorageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedRenderbufferStorageEXT #-}+glNamedRenderbufferStorageEXT :: FuntypeNamedRenderbufferStorageEXT+glNamedRenderbufferStorageEXT = unsafePerformIO $ readIORef glrefNamedRenderbufferStorageEXT+{-# INLINE glNamedRenderbufferStorageEXT #-}+type FuntypeGetNamedRenderbufferParameterivEXT =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedRenderbufferParameterivEXT :: FunPtr FuntypeGetNamedRenderbufferParameterivEXT -> FuntypeGetNamedRenderbufferParameterivEXT+glrefGetNamedRenderbufferParameterivEXT :: IORef FuntypeGetNamedRenderbufferParameterivEXT+glrefGetNamedRenderbufferParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedRenderbufferParameterivEXT #-}+glGetNamedRenderbufferParameterivEXT :: FuntypeGetNamedRenderbufferParameterivEXT+glGetNamedRenderbufferParameterivEXT = unsafePerformIO $ readIORef glrefGetNamedRenderbufferParameterivEXT+{-# INLINE glGetNamedRenderbufferParameterivEXT #-}+type FuntypeNamedRenderbufferStorageMultisampleEXT =+    GLuint ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedRenderbufferStorageMultisampleEXT :: FunPtr FuntypeNamedRenderbufferStorageMultisampleEXT -> FuntypeNamedRenderbufferStorageMultisampleEXT+glrefNamedRenderbufferStorageMultisampleEXT :: IORef FuntypeNamedRenderbufferStorageMultisampleEXT+glrefNamedRenderbufferStorageMultisampleEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedRenderbufferStorageMultisampleEXT #-}+glNamedRenderbufferStorageMultisampleEXT :: FuntypeNamedRenderbufferStorageMultisampleEXT+glNamedRenderbufferStorageMultisampleEXT = unsafePerformIO $ readIORef glrefNamedRenderbufferStorageMultisampleEXT+{-# INLINE glNamedRenderbufferStorageMultisampleEXT #-}+type FuntypeNamedRenderbufferStorageMultisampleCoverageEXT =+    GLuint ->+    GLsizei ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedRenderbufferStorageMultisampleCoverageEXT :: FunPtr FuntypeNamedRenderbufferStorageMultisampleCoverageEXT -> FuntypeNamedRenderbufferStorageMultisampleCoverageEXT+glrefNamedRenderbufferStorageMultisampleCoverageEXT :: IORef FuntypeNamedRenderbufferStorageMultisampleCoverageEXT+glrefNamedRenderbufferStorageMultisampleCoverageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedRenderbufferStorageMultisampleCoverageEXT #-}+glNamedRenderbufferStorageMultisampleCoverageEXT :: FuntypeNamedRenderbufferStorageMultisampleCoverageEXT+glNamedRenderbufferStorageMultisampleCoverageEXT = unsafePerformIO $ readIORef glrefNamedRenderbufferStorageMultisampleCoverageEXT+{-# INLINE glNamedRenderbufferStorageMultisampleCoverageEXT #-}+type FuntypeCheckNamedFramebufferStatusEXT =+    GLuint ->+    GLenum ->+    IO ( GLenum )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCheckNamedFramebufferStatusEXT :: FunPtr FuntypeCheckNamedFramebufferStatusEXT -> FuntypeCheckNamedFramebufferStatusEXT+glrefCheckNamedFramebufferStatusEXT :: IORef FuntypeCheckNamedFramebufferStatusEXT+glrefCheckNamedFramebufferStatusEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCheckNamedFramebufferStatusEXT #-}+glCheckNamedFramebufferStatusEXT :: FuntypeCheckNamedFramebufferStatusEXT+glCheckNamedFramebufferStatusEXT = unsafePerformIO $ readIORef glrefCheckNamedFramebufferStatusEXT+{-# INLINE glCheckNamedFramebufferStatusEXT #-}+type FuntypeNamedFramebufferTexture1DEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferTexture1DEXT :: FunPtr FuntypeNamedFramebufferTexture1DEXT -> FuntypeNamedFramebufferTexture1DEXT+glrefNamedFramebufferTexture1DEXT :: IORef FuntypeNamedFramebufferTexture1DEXT+glrefNamedFramebufferTexture1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferTexture1DEXT #-}+glNamedFramebufferTexture1DEXT :: FuntypeNamedFramebufferTexture1DEXT+glNamedFramebufferTexture1DEXT = unsafePerformIO $ readIORef glrefNamedFramebufferTexture1DEXT+{-# INLINE glNamedFramebufferTexture1DEXT #-}+type FuntypeNamedFramebufferTexture2DEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferTexture2DEXT :: FunPtr FuntypeNamedFramebufferTexture2DEXT -> FuntypeNamedFramebufferTexture2DEXT+glrefNamedFramebufferTexture2DEXT :: IORef FuntypeNamedFramebufferTexture2DEXT+glrefNamedFramebufferTexture2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferTexture2DEXT #-}+glNamedFramebufferTexture2DEXT :: FuntypeNamedFramebufferTexture2DEXT+glNamedFramebufferTexture2DEXT = unsafePerformIO $ readIORef glrefNamedFramebufferTexture2DEXT+{-# INLINE glNamedFramebufferTexture2DEXT #-}+type FuntypeNamedFramebufferTexture3DEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferTexture3DEXT :: FunPtr FuntypeNamedFramebufferTexture3DEXT -> FuntypeNamedFramebufferTexture3DEXT+glrefNamedFramebufferTexture3DEXT :: IORef FuntypeNamedFramebufferTexture3DEXT+glrefNamedFramebufferTexture3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferTexture3DEXT #-}+glNamedFramebufferTexture3DEXT :: FuntypeNamedFramebufferTexture3DEXT+glNamedFramebufferTexture3DEXT = unsafePerformIO $ readIORef glrefNamedFramebufferTexture3DEXT+{-# INLINE glNamedFramebufferTexture3DEXT #-}+type FuntypeNamedFramebufferRenderbufferEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferRenderbufferEXT :: FunPtr FuntypeNamedFramebufferRenderbufferEXT -> FuntypeNamedFramebufferRenderbufferEXT+glrefNamedFramebufferRenderbufferEXT :: IORef FuntypeNamedFramebufferRenderbufferEXT+glrefNamedFramebufferRenderbufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferRenderbufferEXT #-}+glNamedFramebufferRenderbufferEXT :: FuntypeNamedFramebufferRenderbufferEXT+glNamedFramebufferRenderbufferEXT = unsafePerformIO $ readIORef glrefNamedFramebufferRenderbufferEXT+{-# INLINE glNamedFramebufferRenderbufferEXT #-}+type FuntypeGetNamedFramebufferAttachmentParameterivEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedFramebufferAttachmentParameterivEXT :: FunPtr FuntypeGetNamedFramebufferAttachmentParameterivEXT -> FuntypeGetNamedFramebufferAttachmentParameterivEXT+glrefGetNamedFramebufferAttachmentParameterivEXT :: IORef FuntypeGetNamedFramebufferAttachmentParameterivEXT+glrefGetNamedFramebufferAttachmentParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedFramebufferAttachmentParameterivEXT #-}+glGetNamedFramebufferAttachmentParameterivEXT :: FuntypeGetNamedFramebufferAttachmentParameterivEXT+glGetNamedFramebufferAttachmentParameterivEXT = unsafePerformIO $ readIORef glrefGetNamedFramebufferAttachmentParameterivEXT+{-# INLINE glGetNamedFramebufferAttachmentParameterivEXT #-}+type FuntypeGenerateTextureMipmapEXT =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenerateTextureMipmapEXT :: FunPtr FuntypeGenerateTextureMipmapEXT -> FuntypeGenerateTextureMipmapEXT+glrefGenerateTextureMipmapEXT :: IORef FuntypeGenerateTextureMipmapEXT+glrefGenerateTextureMipmapEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenerateTextureMipmapEXT #-}+glGenerateTextureMipmapEXT :: FuntypeGenerateTextureMipmapEXT+glGenerateTextureMipmapEXT = unsafePerformIO $ readIORef glrefGenerateTextureMipmapEXT+{-# INLINE glGenerateTextureMipmapEXT #-}+type FuntypeGenerateMultiTexMipmapEXT =+    GLenum ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenerateMultiTexMipmapEXT :: FunPtr FuntypeGenerateMultiTexMipmapEXT -> FuntypeGenerateMultiTexMipmapEXT+glrefGenerateMultiTexMipmapEXT :: IORef FuntypeGenerateMultiTexMipmapEXT+glrefGenerateMultiTexMipmapEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenerateMultiTexMipmapEXT #-}+glGenerateMultiTexMipmapEXT :: FuntypeGenerateMultiTexMipmapEXT+glGenerateMultiTexMipmapEXT = unsafePerformIO $ readIORef glrefGenerateMultiTexMipmapEXT+{-# INLINE glGenerateMultiTexMipmapEXT #-}+type FuntypeFramebufferDrawBufferEXT =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferDrawBufferEXT :: FunPtr FuntypeFramebufferDrawBufferEXT -> FuntypeFramebufferDrawBufferEXT+glrefFramebufferDrawBufferEXT :: IORef FuntypeFramebufferDrawBufferEXT+glrefFramebufferDrawBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferDrawBufferEXT #-}+glFramebufferDrawBufferEXT :: FuntypeFramebufferDrawBufferEXT+glFramebufferDrawBufferEXT = unsafePerformIO $ readIORef glrefFramebufferDrawBufferEXT+{-# INLINE glFramebufferDrawBufferEXT #-}+type FuntypeFramebufferDrawBuffersEXT =+    GLuint ->+    GLsizei ->+    Ptr (GLenum) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferDrawBuffersEXT :: FunPtr FuntypeFramebufferDrawBuffersEXT -> FuntypeFramebufferDrawBuffersEXT+glrefFramebufferDrawBuffersEXT :: IORef FuntypeFramebufferDrawBuffersEXT+glrefFramebufferDrawBuffersEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferDrawBuffersEXT #-}+glFramebufferDrawBuffersEXT :: FuntypeFramebufferDrawBuffersEXT+glFramebufferDrawBuffersEXT = unsafePerformIO $ readIORef glrefFramebufferDrawBuffersEXT+{-# INLINE glFramebufferDrawBuffersEXT #-}+type FuntypeFramebufferReadBufferEXT =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFramebufferReadBufferEXT :: FunPtr FuntypeFramebufferReadBufferEXT -> FuntypeFramebufferReadBufferEXT+glrefFramebufferReadBufferEXT :: IORef FuntypeFramebufferReadBufferEXT+glrefFramebufferReadBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFramebufferReadBufferEXT #-}+glFramebufferReadBufferEXT :: FuntypeFramebufferReadBufferEXT+glFramebufferReadBufferEXT = unsafePerformIO $ readIORef glrefFramebufferReadBufferEXT+{-# INLINE glFramebufferReadBufferEXT #-}+type FuntypeGetFramebufferParameterivEXT =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetFramebufferParameterivEXT :: FunPtr FuntypeGetFramebufferParameterivEXT -> FuntypeGetFramebufferParameterivEXT+glrefGetFramebufferParameterivEXT :: IORef FuntypeGetFramebufferParameterivEXT+glrefGetFramebufferParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetFramebufferParameterivEXT #-}+glGetFramebufferParameterivEXT :: FuntypeGetFramebufferParameterivEXT+glGetFramebufferParameterivEXT = unsafePerformIO $ readIORef glrefGetFramebufferParameterivEXT+{-# INLINE glGetFramebufferParameterivEXT #-}+type FuntypeNamedCopyBufferSubDataEXT =+    GLuint ->+    GLuint ->+    GLintptr ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedCopyBufferSubDataEXT :: FunPtr FuntypeNamedCopyBufferSubDataEXT -> FuntypeNamedCopyBufferSubDataEXT+glrefNamedCopyBufferSubDataEXT :: IORef FuntypeNamedCopyBufferSubDataEXT+glrefNamedCopyBufferSubDataEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedCopyBufferSubDataEXT #-}+glNamedCopyBufferSubDataEXT :: FuntypeNamedCopyBufferSubDataEXT+glNamedCopyBufferSubDataEXT = unsafePerformIO $ readIORef glrefNamedCopyBufferSubDataEXT+{-# INLINE glNamedCopyBufferSubDataEXT #-}+type FuntypeNamedFramebufferTextureEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferTextureEXT :: FunPtr FuntypeNamedFramebufferTextureEXT -> FuntypeNamedFramebufferTextureEXT+glrefNamedFramebufferTextureEXT :: IORef FuntypeNamedFramebufferTextureEXT+glrefNamedFramebufferTextureEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferTextureEXT #-}+glNamedFramebufferTextureEXT :: FuntypeNamedFramebufferTextureEXT+glNamedFramebufferTextureEXT = unsafePerformIO $ readIORef glrefNamedFramebufferTextureEXT+{-# INLINE glNamedFramebufferTextureEXT #-}+type FuntypeNamedFramebufferTextureLayerEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferTextureLayerEXT :: FunPtr FuntypeNamedFramebufferTextureLayerEXT -> FuntypeNamedFramebufferTextureLayerEXT+glrefNamedFramebufferTextureLayerEXT :: IORef FuntypeNamedFramebufferTextureLayerEXT+glrefNamedFramebufferTextureLayerEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferTextureLayerEXT #-}+glNamedFramebufferTextureLayerEXT :: FuntypeNamedFramebufferTextureLayerEXT+glNamedFramebufferTextureLayerEXT = unsafePerformIO $ readIORef glrefNamedFramebufferTextureLayerEXT+{-# INLINE glNamedFramebufferTextureLayerEXT #-}+type FuntypeNamedFramebufferTextureFaceEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    GLint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferTextureFaceEXT :: FunPtr FuntypeNamedFramebufferTextureFaceEXT -> FuntypeNamedFramebufferTextureFaceEXT+glrefNamedFramebufferTextureFaceEXT :: IORef FuntypeNamedFramebufferTextureFaceEXT+glrefNamedFramebufferTextureFaceEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferTextureFaceEXT #-}+glNamedFramebufferTextureFaceEXT :: FuntypeNamedFramebufferTextureFaceEXT+glNamedFramebufferTextureFaceEXT = unsafePerformIO $ readIORef glrefNamedFramebufferTextureFaceEXT+{-# INLINE glNamedFramebufferTextureFaceEXT #-}+type FuntypeTextureRenderbufferEXT =+    GLuint ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureRenderbufferEXT :: FunPtr FuntypeTextureRenderbufferEXT -> FuntypeTextureRenderbufferEXT+glrefTextureRenderbufferEXT :: IORef FuntypeTextureRenderbufferEXT+glrefTextureRenderbufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureRenderbufferEXT #-}+glTextureRenderbufferEXT :: FuntypeTextureRenderbufferEXT+glTextureRenderbufferEXT = unsafePerformIO $ readIORef glrefTextureRenderbufferEXT+{-# INLINE glTextureRenderbufferEXT #-}+type FuntypeMultiTexRenderbufferEXT =+    GLenum ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMultiTexRenderbufferEXT :: FunPtr FuntypeMultiTexRenderbufferEXT -> FuntypeMultiTexRenderbufferEXT+glrefMultiTexRenderbufferEXT :: IORef FuntypeMultiTexRenderbufferEXT+glrefMultiTexRenderbufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMultiTexRenderbufferEXT #-}+glMultiTexRenderbufferEXT :: FuntypeMultiTexRenderbufferEXT+glMultiTexRenderbufferEXT = unsafePerformIO $ readIORef glrefMultiTexRenderbufferEXT+{-# INLINE glMultiTexRenderbufferEXT #-}+type FuntypeVertexArrayVertexOffsetEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexOffsetEXT :: FunPtr FuntypeVertexArrayVertexOffsetEXT -> FuntypeVertexArrayVertexOffsetEXT+glrefVertexArrayVertexOffsetEXT :: IORef FuntypeVertexArrayVertexOffsetEXT+glrefVertexArrayVertexOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexOffsetEXT #-}+glVertexArrayVertexOffsetEXT :: FuntypeVertexArrayVertexOffsetEXT+glVertexArrayVertexOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexOffsetEXT+{-# INLINE glVertexArrayVertexOffsetEXT #-}+type FuntypeVertexArrayColorOffsetEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayColorOffsetEXT :: FunPtr FuntypeVertexArrayColorOffsetEXT -> FuntypeVertexArrayColorOffsetEXT+glrefVertexArrayColorOffsetEXT :: IORef FuntypeVertexArrayColorOffsetEXT+glrefVertexArrayColorOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayColorOffsetEXT #-}+glVertexArrayColorOffsetEXT :: FuntypeVertexArrayColorOffsetEXT+glVertexArrayColorOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayColorOffsetEXT+{-# INLINE glVertexArrayColorOffsetEXT #-}+type FuntypeVertexArrayEdgeFlagOffsetEXT =+    GLuint ->+    GLuint ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayEdgeFlagOffsetEXT :: FunPtr FuntypeVertexArrayEdgeFlagOffsetEXT -> FuntypeVertexArrayEdgeFlagOffsetEXT+glrefVertexArrayEdgeFlagOffsetEXT :: IORef FuntypeVertexArrayEdgeFlagOffsetEXT+glrefVertexArrayEdgeFlagOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayEdgeFlagOffsetEXT #-}+glVertexArrayEdgeFlagOffsetEXT :: FuntypeVertexArrayEdgeFlagOffsetEXT+glVertexArrayEdgeFlagOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayEdgeFlagOffsetEXT+{-# INLINE glVertexArrayEdgeFlagOffsetEXT #-}+type FuntypeVertexArrayIndexOffsetEXT =+    GLuint ->+    GLuint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayIndexOffsetEXT :: FunPtr FuntypeVertexArrayIndexOffsetEXT -> FuntypeVertexArrayIndexOffsetEXT+glrefVertexArrayIndexOffsetEXT :: IORef FuntypeVertexArrayIndexOffsetEXT+glrefVertexArrayIndexOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayIndexOffsetEXT #-}+glVertexArrayIndexOffsetEXT :: FuntypeVertexArrayIndexOffsetEXT+glVertexArrayIndexOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayIndexOffsetEXT+{-# INLINE glVertexArrayIndexOffsetEXT #-}+type FuntypeVertexArrayNormalOffsetEXT =+    GLuint ->+    GLuint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayNormalOffsetEXT :: FunPtr FuntypeVertexArrayNormalOffsetEXT -> FuntypeVertexArrayNormalOffsetEXT+glrefVertexArrayNormalOffsetEXT :: IORef FuntypeVertexArrayNormalOffsetEXT+glrefVertexArrayNormalOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayNormalOffsetEXT #-}+glVertexArrayNormalOffsetEXT :: FuntypeVertexArrayNormalOffsetEXT+glVertexArrayNormalOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayNormalOffsetEXT+{-# INLINE glVertexArrayNormalOffsetEXT #-}+type FuntypeVertexArrayTexCoordOffsetEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayTexCoordOffsetEXT :: FunPtr FuntypeVertexArrayTexCoordOffsetEXT -> FuntypeVertexArrayTexCoordOffsetEXT+glrefVertexArrayTexCoordOffsetEXT :: IORef FuntypeVertexArrayTexCoordOffsetEXT+glrefVertexArrayTexCoordOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayTexCoordOffsetEXT #-}+glVertexArrayTexCoordOffsetEXT :: FuntypeVertexArrayTexCoordOffsetEXT+glVertexArrayTexCoordOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayTexCoordOffsetEXT+{-# INLINE glVertexArrayTexCoordOffsetEXT #-}+type FuntypeVertexArrayMultiTexCoordOffsetEXT =+    GLuint ->+    GLuint ->+    GLenum ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayMultiTexCoordOffsetEXT :: FunPtr FuntypeVertexArrayMultiTexCoordOffsetEXT -> FuntypeVertexArrayMultiTexCoordOffsetEXT+glrefVertexArrayMultiTexCoordOffsetEXT :: IORef FuntypeVertexArrayMultiTexCoordOffsetEXT+glrefVertexArrayMultiTexCoordOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayMultiTexCoordOffsetEXT #-}+glVertexArrayMultiTexCoordOffsetEXT :: FuntypeVertexArrayMultiTexCoordOffsetEXT+glVertexArrayMultiTexCoordOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayMultiTexCoordOffsetEXT+{-# INLINE glVertexArrayMultiTexCoordOffsetEXT #-}+type FuntypeVertexArrayFogCoordOffsetEXT =+    GLuint ->+    GLuint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayFogCoordOffsetEXT :: FunPtr FuntypeVertexArrayFogCoordOffsetEXT -> FuntypeVertexArrayFogCoordOffsetEXT+glrefVertexArrayFogCoordOffsetEXT :: IORef FuntypeVertexArrayFogCoordOffsetEXT+glrefVertexArrayFogCoordOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayFogCoordOffsetEXT #-}+glVertexArrayFogCoordOffsetEXT :: FuntypeVertexArrayFogCoordOffsetEXT+glVertexArrayFogCoordOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayFogCoordOffsetEXT+{-# INLINE glVertexArrayFogCoordOffsetEXT #-}+type FuntypeVertexArraySecondaryColorOffsetEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArraySecondaryColorOffsetEXT :: FunPtr FuntypeVertexArraySecondaryColorOffsetEXT -> FuntypeVertexArraySecondaryColorOffsetEXT+glrefVertexArraySecondaryColorOffsetEXT :: IORef FuntypeVertexArraySecondaryColorOffsetEXT+glrefVertexArraySecondaryColorOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArraySecondaryColorOffsetEXT #-}+glVertexArraySecondaryColorOffsetEXT :: FuntypeVertexArraySecondaryColorOffsetEXT+glVertexArraySecondaryColorOffsetEXT = unsafePerformIO $ readIORef glrefVertexArraySecondaryColorOffsetEXT+{-# INLINE glVertexArraySecondaryColorOffsetEXT #-}+type FuntypeVertexArrayVertexAttribOffsetEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLboolean ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribOffsetEXT :: FunPtr FuntypeVertexArrayVertexAttribOffsetEXT -> FuntypeVertexArrayVertexAttribOffsetEXT+glrefVertexArrayVertexAttribOffsetEXT :: IORef FuntypeVertexArrayVertexAttribOffsetEXT+glrefVertexArrayVertexAttribOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribOffsetEXT #-}+glVertexArrayVertexAttribOffsetEXT :: FuntypeVertexArrayVertexAttribOffsetEXT+glVertexArrayVertexAttribOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribOffsetEXT+{-# INLINE glVertexArrayVertexAttribOffsetEXT #-}+type FuntypeVertexArrayVertexAttribIOffsetEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribIOffsetEXT :: FunPtr FuntypeVertexArrayVertexAttribIOffsetEXT -> FuntypeVertexArrayVertexAttribIOffsetEXT+glrefVertexArrayVertexAttribIOffsetEXT :: IORef FuntypeVertexArrayVertexAttribIOffsetEXT+glrefVertexArrayVertexAttribIOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribIOffsetEXT #-}+glVertexArrayVertexAttribIOffsetEXT :: FuntypeVertexArrayVertexAttribIOffsetEXT+glVertexArrayVertexAttribIOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribIOffsetEXT+{-# INLINE glVertexArrayVertexAttribIOffsetEXT #-}+type FuntypeEnableVertexArrayEXT =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnableVertexArrayEXT :: FunPtr FuntypeEnableVertexArrayEXT -> FuntypeEnableVertexArrayEXT+glrefEnableVertexArrayEXT :: IORef FuntypeEnableVertexArrayEXT+glrefEnableVertexArrayEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnableVertexArrayEXT #-}+glEnableVertexArrayEXT :: FuntypeEnableVertexArrayEXT+glEnableVertexArrayEXT = unsafePerformIO $ readIORef glrefEnableVertexArrayEXT+{-# INLINE glEnableVertexArrayEXT #-}+type FuntypeDisableVertexArrayEXT =+    GLuint ->+    GLenum ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisableVertexArrayEXT :: FunPtr FuntypeDisableVertexArrayEXT -> FuntypeDisableVertexArrayEXT+glrefDisableVertexArrayEXT :: IORef FuntypeDisableVertexArrayEXT+glrefDisableVertexArrayEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisableVertexArrayEXT #-}+glDisableVertexArrayEXT :: FuntypeDisableVertexArrayEXT+glDisableVertexArrayEXT = unsafePerformIO $ readIORef glrefDisableVertexArrayEXT+{-# INLINE glDisableVertexArrayEXT #-}+type FuntypeEnableVertexArrayAttribEXT =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynEnableVertexArrayAttribEXT :: FunPtr FuntypeEnableVertexArrayAttribEXT -> FuntypeEnableVertexArrayAttribEXT+glrefEnableVertexArrayAttribEXT :: IORef FuntypeEnableVertexArrayAttribEXT+glrefEnableVertexArrayAttribEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefEnableVertexArrayAttribEXT #-}+glEnableVertexArrayAttribEXT :: FuntypeEnableVertexArrayAttribEXT+glEnableVertexArrayAttribEXT = unsafePerformIO $ readIORef glrefEnableVertexArrayAttribEXT+{-# INLINE glEnableVertexArrayAttribEXT #-}+type FuntypeDisableVertexArrayAttribEXT =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDisableVertexArrayAttribEXT :: FunPtr FuntypeDisableVertexArrayAttribEXT -> FuntypeDisableVertexArrayAttribEXT+glrefDisableVertexArrayAttribEXT :: IORef FuntypeDisableVertexArrayAttribEXT+glrefDisableVertexArrayAttribEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDisableVertexArrayAttribEXT #-}+glDisableVertexArrayAttribEXT :: FuntypeDisableVertexArrayAttribEXT+glDisableVertexArrayAttribEXT = unsafePerformIO $ readIORef glrefDisableVertexArrayAttribEXT+{-# INLINE glDisableVertexArrayAttribEXT #-}+type FuntypeGetVertexArrayIntegervEXT =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexArrayIntegervEXT :: FunPtr FuntypeGetVertexArrayIntegervEXT -> FuntypeGetVertexArrayIntegervEXT+glrefGetVertexArrayIntegervEXT :: IORef FuntypeGetVertexArrayIntegervEXT+glrefGetVertexArrayIntegervEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexArrayIntegervEXT #-}+glGetVertexArrayIntegervEXT :: FuntypeGetVertexArrayIntegervEXT+glGetVertexArrayIntegervEXT = unsafePerformIO $ readIORef glrefGetVertexArrayIntegervEXT+{-# INLINE glGetVertexArrayIntegervEXT #-}+type FuntypeGetVertexArrayPointervEXT =+    GLuint ->+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexArrayPointervEXT :: FunPtr FuntypeGetVertexArrayPointervEXT -> FuntypeGetVertexArrayPointervEXT+glrefGetVertexArrayPointervEXT :: IORef FuntypeGetVertexArrayPointervEXT+glrefGetVertexArrayPointervEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexArrayPointervEXT #-}+glGetVertexArrayPointervEXT :: FuntypeGetVertexArrayPointervEXT+glGetVertexArrayPointervEXT = unsafePerformIO $ readIORef glrefGetVertexArrayPointervEXT+{-# INLINE glGetVertexArrayPointervEXT #-}+type FuntypeGetVertexArrayIntegeri_vEXT =+    GLuint ->+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexArrayIntegeri_vEXT :: FunPtr FuntypeGetVertexArrayIntegeri_vEXT -> FuntypeGetVertexArrayIntegeri_vEXT+glrefGetVertexArrayIntegeri_vEXT :: IORef FuntypeGetVertexArrayIntegeri_vEXT+glrefGetVertexArrayIntegeri_vEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexArrayIntegeri_vEXT #-}+glGetVertexArrayIntegeri_vEXT :: FuntypeGetVertexArrayIntegeri_vEXT+glGetVertexArrayIntegeri_vEXT = unsafePerformIO $ readIORef glrefGetVertexArrayIntegeri_vEXT+{-# INLINE glGetVertexArrayIntegeri_vEXT #-}+type FuntypeGetVertexArrayPointeri_vEXT =+    GLuint ->+    GLuint ->+    GLenum ->+    Ptr (Ptr ()) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetVertexArrayPointeri_vEXT :: FunPtr FuntypeGetVertexArrayPointeri_vEXT -> FuntypeGetVertexArrayPointeri_vEXT+glrefGetVertexArrayPointeri_vEXT :: IORef FuntypeGetVertexArrayPointeri_vEXT+glrefGetVertexArrayPointeri_vEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetVertexArrayPointeri_vEXT #-}+glGetVertexArrayPointeri_vEXT :: FuntypeGetVertexArrayPointeri_vEXT+glGetVertexArrayPointeri_vEXT = unsafePerformIO $ readIORef glrefGetVertexArrayPointeri_vEXT+{-# INLINE glGetVertexArrayPointeri_vEXT #-}+type FuntypeMapNamedBufferRangeEXT =+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    GLbitfield ->+    IO ( Ptr () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynMapNamedBufferRangeEXT :: FunPtr FuntypeMapNamedBufferRangeEXT -> FuntypeMapNamedBufferRangeEXT+glrefMapNamedBufferRangeEXT :: IORef FuntypeMapNamedBufferRangeEXT+glrefMapNamedBufferRangeEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefMapNamedBufferRangeEXT #-}+glMapNamedBufferRangeEXT :: FuntypeMapNamedBufferRangeEXT+glMapNamedBufferRangeEXT = unsafePerformIO $ readIORef glrefMapNamedBufferRangeEXT+{-# INLINE glMapNamedBufferRangeEXT #-}+type FuntypeFlushMappedNamedBufferRangeEXT =+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynFlushMappedNamedBufferRangeEXT :: FunPtr FuntypeFlushMappedNamedBufferRangeEXT -> FuntypeFlushMappedNamedBufferRangeEXT+glrefFlushMappedNamedBufferRangeEXT :: IORef FuntypeFlushMappedNamedBufferRangeEXT+glrefFlushMappedNamedBufferRangeEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefFlushMappedNamedBufferRangeEXT #-}+glFlushMappedNamedBufferRangeEXT :: FuntypeFlushMappedNamedBufferRangeEXT+glFlushMappedNamedBufferRangeEXT = unsafePerformIO $ readIORef glrefFlushMappedNamedBufferRangeEXT+{-# INLINE glFlushMappedNamedBufferRangeEXT #-}+type FuntypeNamedBufferStorageEXT =+    GLuint ->+    GLsizeiptr ->+    Ptr () ->+    GLbitfield ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedBufferStorageEXT :: FunPtr FuntypeNamedBufferStorageEXT -> FuntypeNamedBufferStorageEXT+glrefNamedBufferStorageEXT :: IORef FuntypeNamedBufferStorageEXT+glrefNamedBufferStorageEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedBufferStorageEXT #-}+glNamedBufferStorageEXT :: FuntypeNamedBufferStorageEXT+glNamedBufferStorageEXT = unsafePerformIO $ readIORef glrefNamedBufferStorageEXT+{-# INLINE glNamedBufferStorageEXT #-}+type FuntypeClearNamedBufferDataEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearNamedBufferDataEXT :: FunPtr FuntypeClearNamedBufferDataEXT -> FuntypeClearNamedBufferDataEXT+glrefClearNamedBufferDataEXT :: IORef FuntypeClearNamedBufferDataEXT+glrefClearNamedBufferDataEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearNamedBufferDataEXT #-}+glClearNamedBufferDataEXT :: FuntypeClearNamedBufferDataEXT+glClearNamedBufferDataEXT = unsafePerformIO $ readIORef glrefClearNamedBufferDataEXT+{-# INLINE glClearNamedBufferDataEXT #-}+type FuntypeClearNamedBufferSubDataEXT =+    GLuint ->+    GLenum ->+    GLsizeiptr ->+    GLsizeiptr ->+    GLenum ->+    GLenum ->+    Ptr () ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynClearNamedBufferSubDataEXT :: FunPtr FuntypeClearNamedBufferSubDataEXT -> FuntypeClearNamedBufferSubDataEXT+glrefClearNamedBufferSubDataEXT :: IORef FuntypeClearNamedBufferSubDataEXT+glrefClearNamedBufferSubDataEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefClearNamedBufferSubDataEXT #-}+glClearNamedBufferSubDataEXT :: FuntypeClearNamedBufferSubDataEXT+glClearNamedBufferSubDataEXT = unsafePerformIO $ readIORef glrefClearNamedBufferSubDataEXT+{-# INLINE glClearNamedBufferSubDataEXT #-}+type FuntypeNamedFramebufferParameteriEXT =+    GLuint ->+    GLenum ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynNamedFramebufferParameteriEXT :: FunPtr FuntypeNamedFramebufferParameteriEXT -> FuntypeNamedFramebufferParameteriEXT+glrefNamedFramebufferParameteriEXT :: IORef FuntypeNamedFramebufferParameteriEXT+glrefNamedFramebufferParameteriEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefNamedFramebufferParameteriEXT #-}+glNamedFramebufferParameteriEXT :: FuntypeNamedFramebufferParameteriEXT+glNamedFramebufferParameteriEXT = unsafePerformIO $ readIORef glrefNamedFramebufferParameteriEXT+{-# INLINE glNamedFramebufferParameteriEXT #-}+type FuntypeGetNamedFramebufferParameterivEXT =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetNamedFramebufferParameterivEXT :: FunPtr FuntypeGetNamedFramebufferParameterivEXT -> FuntypeGetNamedFramebufferParameterivEXT+glrefGetNamedFramebufferParameterivEXT :: IORef FuntypeGetNamedFramebufferParameterivEXT+glrefGetNamedFramebufferParameterivEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetNamedFramebufferParameterivEXT #-}+glGetNamedFramebufferParameterivEXT :: FuntypeGetNamedFramebufferParameterivEXT+glGetNamedFramebufferParameterivEXT = unsafePerformIO $ readIORef glrefGetNamedFramebufferParameterivEXT+{-# INLINE glGetNamedFramebufferParameterivEXT #-}+type FuntypeProgramUniform1dEXT =+    GLuint ->+    GLint ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1dEXT :: FunPtr FuntypeProgramUniform1dEXT -> FuntypeProgramUniform1dEXT+glrefProgramUniform1dEXT :: IORef FuntypeProgramUniform1dEXT+glrefProgramUniform1dEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1dEXT #-}+glProgramUniform1dEXT :: FuntypeProgramUniform1dEXT+glProgramUniform1dEXT = unsafePerformIO $ readIORef glrefProgramUniform1dEXT+{-# INLINE glProgramUniform1dEXT #-}+type FuntypeProgramUniform2dEXT =+    GLuint ->+    GLint ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2dEXT :: FunPtr FuntypeProgramUniform2dEXT -> FuntypeProgramUniform2dEXT+glrefProgramUniform2dEXT :: IORef FuntypeProgramUniform2dEXT+glrefProgramUniform2dEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2dEXT #-}+glProgramUniform2dEXT :: FuntypeProgramUniform2dEXT+glProgramUniform2dEXT = unsafePerformIO $ readIORef glrefProgramUniform2dEXT+{-# INLINE glProgramUniform2dEXT #-}+type FuntypeProgramUniform3dEXT =+    GLuint ->+    GLint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3dEXT :: FunPtr FuntypeProgramUniform3dEXT -> FuntypeProgramUniform3dEXT+glrefProgramUniform3dEXT :: IORef FuntypeProgramUniform3dEXT+glrefProgramUniform3dEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3dEXT #-}+glProgramUniform3dEXT :: FuntypeProgramUniform3dEXT+glProgramUniform3dEXT = unsafePerformIO $ readIORef glrefProgramUniform3dEXT+{-# INLINE glProgramUniform3dEXT #-}+type FuntypeProgramUniform4dEXT =+    GLuint ->+    GLint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4dEXT :: FunPtr FuntypeProgramUniform4dEXT -> FuntypeProgramUniform4dEXT+glrefProgramUniform4dEXT :: IORef FuntypeProgramUniform4dEXT+glrefProgramUniform4dEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4dEXT #-}+glProgramUniform4dEXT :: FuntypeProgramUniform4dEXT+glProgramUniform4dEXT = unsafePerformIO $ readIORef glrefProgramUniform4dEXT+{-# INLINE glProgramUniform4dEXT #-}+type FuntypeProgramUniform1dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1dvEXT :: FunPtr FuntypeProgramUniform1dvEXT -> FuntypeProgramUniform1dvEXT+glrefProgramUniform1dvEXT :: IORef FuntypeProgramUniform1dvEXT+glrefProgramUniform1dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1dvEXT #-}+glProgramUniform1dvEXT :: FuntypeProgramUniform1dvEXT+glProgramUniform1dvEXT = unsafePerformIO $ readIORef glrefProgramUniform1dvEXT+{-# INLINE glProgramUniform1dvEXT #-}+type FuntypeProgramUniform2dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2dvEXT :: FunPtr FuntypeProgramUniform2dvEXT -> FuntypeProgramUniform2dvEXT+glrefProgramUniform2dvEXT :: IORef FuntypeProgramUniform2dvEXT+glrefProgramUniform2dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2dvEXT #-}+glProgramUniform2dvEXT :: FuntypeProgramUniform2dvEXT+glProgramUniform2dvEXT = unsafePerformIO $ readIORef glrefProgramUniform2dvEXT+{-# INLINE glProgramUniform2dvEXT #-}+type FuntypeProgramUniform3dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3dvEXT :: FunPtr FuntypeProgramUniform3dvEXT -> FuntypeProgramUniform3dvEXT+glrefProgramUniform3dvEXT :: IORef FuntypeProgramUniform3dvEXT+glrefProgramUniform3dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3dvEXT #-}+glProgramUniform3dvEXT :: FuntypeProgramUniform3dvEXT+glProgramUniform3dvEXT = unsafePerformIO $ readIORef glrefProgramUniform3dvEXT+{-# INLINE glProgramUniform3dvEXT #-}+type FuntypeProgramUniform4dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4dvEXT :: FunPtr FuntypeProgramUniform4dvEXT -> FuntypeProgramUniform4dvEXT+glrefProgramUniform4dvEXT :: IORef FuntypeProgramUniform4dvEXT+glrefProgramUniform4dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4dvEXT #-}+glProgramUniform4dvEXT :: FuntypeProgramUniform4dvEXT+glProgramUniform4dvEXT = unsafePerformIO $ readIORef glrefProgramUniform4dvEXT+{-# INLINE glProgramUniform4dvEXT #-}+type FuntypeProgramUniformMatrix2dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2dvEXT :: FunPtr FuntypeProgramUniformMatrix2dvEXT -> FuntypeProgramUniformMatrix2dvEXT+glrefProgramUniformMatrix2dvEXT :: IORef FuntypeProgramUniformMatrix2dvEXT+glrefProgramUniformMatrix2dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2dvEXT #-}+glProgramUniformMatrix2dvEXT :: FuntypeProgramUniformMatrix2dvEXT+glProgramUniformMatrix2dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix2dvEXT+{-# INLINE glProgramUniformMatrix2dvEXT #-}+type FuntypeProgramUniformMatrix3dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3dvEXT :: FunPtr FuntypeProgramUniformMatrix3dvEXT -> FuntypeProgramUniformMatrix3dvEXT+glrefProgramUniformMatrix3dvEXT :: IORef FuntypeProgramUniformMatrix3dvEXT+glrefProgramUniformMatrix3dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3dvEXT #-}+glProgramUniformMatrix3dvEXT :: FuntypeProgramUniformMatrix3dvEXT+glProgramUniformMatrix3dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix3dvEXT+{-# INLINE glProgramUniformMatrix3dvEXT #-}+type FuntypeProgramUniformMatrix4dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4dvEXT :: FunPtr FuntypeProgramUniformMatrix4dvEXT -> FuntypeProgramUniformMatrix4dvEXT+glrefProgramUniformMatrix4dvEXT :: IORef FuntypeProgramUniformMatrix4dvEXT+glrefProgramUniformMatrix4dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4dvEXT #-}+glProgramUniformMatrix4dvEXT :: FuntypeProgramUniformMatrix4dvEXT+glProgramUniformMatrix4dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix4dvEXT+{-# INLINE glProgramUniformMatrix4dvEXT #-}+type FuntypeProgramUniformMatrix2x3dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x3dvEXT :: FunPtr FuntypeProgramUniformMatrix2x3dvEXT -> FuntypeProgramUniformMatrix2x3dvEXT+glrefProgramUniformMatrix2x3dvEXT :: IORef FuntypeProgramUniformMatrix2x3dvEXT+glrefProgramUniformMatrix2x3dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x3dvEXT #-}+glProgramUniformMatrix2x3dvEXT :: FuntypeProgramUniformMatrix2x3dvEXT+glProgramUniformMatrix2x3dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x3dvEXT+{-# INLINE glProgramUniformMatrix2x3dvEXT #-}+type FuntypeProgramUniformMatrix2x4dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x4dvEXT :: FunPtr FuntypeProgramUniformMatrix2x4dvEXT -> FuntypeProgramUniformMatrix2x4dvEXT+glrefProgramUniformMatrix2x4dvEXT :: IORef FuntypeProgramUniformMatrix2x4dvEXT+glrefProgramUniformMatrix2x4dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x4dvEXT #-}+glProgramUniformMatrix2x4dvEXT :: FuntypeProgramUniformMatrix2x4dvEXT+glProgramUniformMatrix2x4dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x4dvEXT+{-# INLINE glProgramUniformMatrix2x4dvEXT #-}+type FuntypeProgramUniformMatrix3x2dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x2dvEXT :: FunPtr FuntypeProgramUniformMatrix3x2dvEXT -> FuntypeProgramUniformMatrix3x2dvEXT+glrefProgramUniformMatrix3x2dvEXT :: IORef FuntypeProgramUniformMatrix3x2dvEXT+glrefProgramUniformMatrix3x2dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x2dvEXT #-}+glProgramUniformMatrix3x2dvEXT :: FuntypeProgramUniformMatrix3x2dvEXT+glProgramUniformMatrix3x2dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x2dvEXT+{-# INLINE glProgramUniformMatrix3x2dvEXT #-}+type FuntypeProgramUniformMatrix3x4dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x4dvEXT :: FunPtr FuntypeProgramUniformMatrix3x4dvEXT -> FuntypeProgramUniformMatrix3x4dvEXT+glrefProgramUniformMatrix3x4dvEXT :: IORef FuntypeProgramUniformMatrix3x4dvEXT+glrefProgramUniformMatrix3x4dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x4dvEXT #-}+glProgramUniformMatrix3x4dvEXT :: FuntypeProgramUniformMatrix3x4dvEXT+glProgramUniformMatrix3x4dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x4dvEXT+{-# INLINE glProgramUniformMatrix3x4dvEXT #-}+type FuntypeProgramUniformMatrix4x2dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x2dvEXT :: FunPtr FuntypeProgramUniformMatrix4x2dvEXT -> FuntypeProgramUniformMatrix4x2dvEXT+glrefProgramUniformMatrix4x2dvEXT :: IORef FuntypeProgramUniformMatrix4x2dvEXT+glrefProgramUniformMatrix4x2dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x2dvEXT #-}+glProgramUniformMatrix4x2dvEXT :: FuntypeProgramUniformMatrix4x2dvEXT+glProgramUniformMatrix4x2dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x2dvEXT+{-# INLINE glProgramUniformMatrix4x2dvEXT #-}+type FuntypeProgramUniformMatrix4x3dvEXT =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x3dvEXT :: FunPtr FuntypeProgramUniformMatrix4x3dvEXT -> FuntypeProgramUniformMatrix4x3dvEXT+glrefProgramUniformMatrix4x3dvEXT :: IORef FuntypeProgramUniformMatrix4x3dvEXT+glrefProgramUniformMatrix4x3dvEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x3dvEXT #-}+glProgramUniformMatrix4x3dvEXT :: FuntypeProgramUniformMatrix4x3dvEXT+glProgramUniformMatrix4x3dvEXT = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x3dvEXT+{-# INLINE glProgramUniformMatrix4x3dvEXT #-}+type FuntypeTextureBufferRangeEXT =+    GLuint ->+    GLenum ->+    GLenum ->+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureBufferRangeEXT :: FunPtr FuntypeTextureBufferRangeEXT -> FuntypeTextureBufferRangeEXT+glrefTextureBufferRangeEXT :: IORef FuntypeTextureBufferRangeEXT+glrefTextureBufferRangeEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureBufferRangeEXT #-}+glTextureBufferRangeEXT :: FuntypeTextureBufferRangeEXT+glTextureBufferRangeEXT = unsafePerformIO $ readIORef glrefTextureBufferRangeEXT+{-# INLINE glTextureBufferRangeEXT #-}+type FuntypeTextureStorage1DEXT =+    GLuint ->+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureStorage1DEXT :: FunPtr FuntypeTextureStorage1DEXT -> FuntypeTextureStorage1DEXT+glrefTextureStorage1DEXT :: IORef FuntypeTextureStorage1DEXT+glrefTextureStorage1DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureStorage1DEXT #-}+glTextureStorage1DEXT :: FuntypeTextureStorage1DEXT+glTextureStorage1DEXT = unsafePerformIO $ readIORef glrefTextureStorage1DEXT+{-# INLINE glTextureStorage1DEXT #-}+type FuntypeTextureStorage2DEXT =+    GLuint ->+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureStorage2DEXT :: FunPtr FuntypeTextureStorage2DEXT -> FuntypeTextureStorage2DEXT+glrefTextureStorage2DEXT :: IORef FuntypeTextureStorage2DEXT+glrefTextureStorage2DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureStorage2DEXT #-}+glTextureStorage2DEXT :: FuntypeTextureStorage2DEXT+glTextureStorage2DEXT = unsafePerformIO $ readIORef glrefTextureStorage2DEXT+{-# INLINE glTextureStorage2DEXT #-}+type FuntypeTextureStorage3DEXT =+    GLuint ->+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureStorage3DEXT :: FunPtr FuntypeTextureStorage3DEXT -> FuntypeTextureStorage3DEXT+glrefTextureStorage3DEXT :: IORef FuntypeTextureStorage3DEXT+glrefTextureStorage3DEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureStorage3DEXT #-}+glTextureStorage3DEXT :: FuntypeTextureStorage3DEXT+glTextureStorage3DEXT = unsafePerformIO $ readIORef glrefTextureStorage3DEXT+{-# INLINE glTextureStorage3DEXT #-}+type FuntypeTextureStorage2DMultisampleEXT =+    GLuint ->+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureStorage2DMultisampleEXT :: FunPtr FuntypeTextureStorage2DMultisampleEXT -> FuntypeTextureStorage2DMultisampleEXT+glrefTextureStorage2DMultisampleEXT :: IORef FuntypeTextureStorage2DMultisampleEXT+glrefTextureStorage2DMultisampleEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureStorage2DMultisampleEXT #-}+glTextureStorage2DMultisampleEXT :: FuntypeTextureStorage2DMultisampleEXT+glTextureStorage2DMultisampleEXT = unsafePerformIO $ readIORef glrefTextureStorage2DMultisampleEXT+{-# INLINE glTextureStorage2DMultisampleEXT #-}+type FuntypeTextureStorage3DMultisampleEXT =+    GLuint ->+    GLenum ->+    GLsizei ->+    GLenum ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTextureStorage3DMultisampleEXT :: FunPtr FuntypeTextureStorage3DMultisampleEXT -> FuntypeTextureStorage3DMultisampleEXT+glrefTextureStorage3DMultisampleEXT :: IORef FuntypeTextureStorage3DMultisampleEXT+glrefTextureStorage3DMultisampleEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTextureStorage3DMultisampleEXT #-}+glTextureStorage3DMultisampleEXT :: FuntypeTextureStorage3DMultisampleEXT+glTextureStorage3DMultisampleEXT = unsafePerformIO $ readIORef glrefTextureStorage3DMultisampleEXT+{-# INLINE glTextureStorage3DMultisampleEXT #-}+type FuntypeVertexArrayBindVertexBufferEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    GLintptr ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayBindVertexBufferEXT :: FunPtr FuntypeVertexArrayBindVertexBufferEXT -> FuntypeVertexArrayBindVertexBufferEXT+glrefVertexArrayBindVertexBufferEXT :: IORef FuntypeVertexArrayBindVertexBufferEXT+glrefVertexArrayBindVertexBufferEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayBindVertexBufferEXT #-}+glVertexArrayBindVertexBufferEXT :: FuntypeVertexArrayBindVertexBufferEXT+glVertexArrayBindVertexBufferEXT = unsafePerformIO $ readIORef glrefVertexArrayBindVertexBufferEXT+{-# INLINE glVertexArrayBindVertexBufferEXT #-}+type FuntypeVertexArrayVertexAttribFormatEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLboolean ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribFormatEXT :: FunPtr FuntypeVertexArrayVertexAttribFormatEXT -> FuntypeVertexArrayVertexAttribFormatEXT+glrefVertexArrayVertexAttribFormatEXT :: IORef FuntypeVertexArrayVertexAttribFormatEXT+glrefVertexArrayVertexAttribFormatEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribFormatEXT #-}+glVertexArrayVertexAttribFormatEXT :: FuntypeVertexArrayVertexAttribFormatEXT+glVertexArrayVertexAttribFormatEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribFormatEXT+{-# INLINE glVertexArrayVertexAttribFormatEXT #-}+type FuntypeVertexArrayVertexAttribIFormatEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribIFormatEXT :: FunPtr FuntypeVertexArrayVertexAttribIFormatEXT -> FuntypeVertexArrayVertexAttribIFormatEXT+glrefVertexArrayVertexAttribIFormatEXT :: IORef FuntypeVertexArrayVertexAttribIFormatEXT+glrefVertexArrayVertexAttribIFormatEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribIFormatEXT #-}+glVertexArrayVertexAttribIFormatEXT :: FuntypeVertexArrayVertexAttribIFormatEXT+glVertexArrayVertexAttribIFormatEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribIFormatEXT+{-# INLINE glVertexArrayVertexAttribIFormatEXT #-}+type FuntypeVertexArrayVertexAttribLFormatEXT =+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribLFormatEXT :: FunPtr FuntypeVertexArrayVertexAttribLFormatEXT -> FuntypeVertexArrayVertexAttribLFormatEXT+glrefVertexArrayVertexAttribLFormatEXT :: IORef FuntypeVertexArrayVertexAttribLFormatEXT+glrefVertexArrayVertexAttribLFormatEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribLFormatEXT #-}+glVertexArrayVertexAttribLFormatEXT :: FuntypeVertexArrayVertexAttribLFormatEXT+glVertexArrayVertexAttribLFormatEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribLFormatEXT+{-# INLINE glVertexArrayVertexAttribLFormatEXT #-}+type FuntypeVertexArrayVertexAttribBindingEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribBindingEXT :: FunPtr FuntypeVertexArrayVertexAttribBindingEXT -> FuntypeVertexArrayVertexAttribBindingEXT+glrefVertexArrayVertexAttribBindingEXT :: IORef FuntypeVertexArrayVertexAttribBindingEXT+glrefVertexArrayVertexAttribBindingEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribBindingEXT #-}+glVertexArrayVertexAttribBindingEXT :: FuntypeVertexArrayVertexAttribBindingEXT+glVertexArrayVertexAttribBindingEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribBindingEXT+{-# INLINE glVertexArrayVertexAttribBindingEXT #-}+type FuntypeVertexArrayVertexBindingDivisorEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexBindingDivisorEXT :: FunPtr FuntypeVertexArrayVertexBindingDivisorEXT -> FuntypeVertexArrayVertexBindingDivisorEXT+glrefVertexArrayVertexBindingDivisorEXT :: IORef FuntypeVertexArrayVertexBindingDivisorEXT+glrefVertexArrayVertexBindingDivisorEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexBindingDivisorEXT #-}+glVertexArrayVertexBindingDivisorEXT :: FuntypeVertexArrayVertexBindingDivisorEXT+glVertexArrayVertexBindingDivisorEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexBindingDivisorEXT+{-# INLINE glVertexArrayVertexBindingDivisorEXT #-}+type FuntypeVertexArrayVertexAttribLOffsetEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    GLint ->+    GLenum ->+    GLsizei ->+    GLintptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribLOffsetEXT :: FunPtr FuntypeVertexArrayVertexAttribLOffsetEXT -> FuntypeVertexArrayVertexAttribLOffsetEXT+glrefVertexArrayVertexAttribLOffsetEXT :: IORef FuntypeVertexArrayVertexAttribLOffsetEXT+glrefVertexArrayVertexAttribLOffsetEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribLOffsetEXT #-}+glVertexArrayVertexAttribLOffsetEXT :: FuntypeVertexArrayVertexAttribLOffsetEXT+glVertexArrayVertexAttribLOffsetEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribLOffsetEXT+{-# INLINE glVertexArrayVertexAttribLOffsetEXT #-}+type FuntypeTexturePageCommitmentEXT =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    GLboolean ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynTexturePageCommitmentEXT :: FunPtr FuntypeTexturePageCommitmentEXT -> FuntypeTexturePageCommitmentEXT+glrefTexturePageCommitmentEXT :: IORef FuntypeTexturePageCommitmentEXT+glrefTexturePageCommitmentEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefTexturePageCommitmentEXT #-}+glTexturePageCommitmentEXT :: FuntypeTexturePageCommitmentEXT+glTexturePageCommitmentEXT = unsafePerformIO $ readIORef glrefTexturePageCommitmentEXT+{-# INLINE glTexturePageCommitmentEXT #-}+type FuntypeVertexArrayVertexAttribDivisorEXT =+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynVertexArrayVertexAttribDivisorEXT :: FunPtr FuntypeVertexArrayVertexAttribDivisorEXT -> FuntypeVertexArrayVertexAttribDivisorEXT+glrefVertexArrayVertexAttribDivisorEXT :: IORef FuntypeVertexArrayVertexAttribDivisorEXT+glrefVertexArrayVertexAttribDivisorEXT = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefVertexArrayVertexAttribDivisorEXT #-}+glVertexArrayVertexAttribDivisorEXT :: FuntypeVertexArrayVertexAttribDivisorEXT+glVertexArrayVertexAttribDivisorEXT = unsafePerformIO $ readIORef glrefVertexArrayVertexAttribDivisorEXT+{-# INLINE glVertexArrayVertexAttribDivisorEXT #-}++-- GL_ARB_buffer_storage++type FuntypeBufferStorage =+    GLenum ->+    GLsizeiptr ->+    Ptr () ->+    GLbitfield ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBufferStorage :: FunPtr FuntypeBufferStorage -> FuntypeBufferStorage+glrefBufferStorage :: IORef FuntypeBufferStorage+glrefBufferStorage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBufferStorage #-}+glBufferStorage :: FuntypeBufferStorage+glBufferStorage = unsafePerformIO $ readIORef glrefBufferStorage+{-# INLINE glBufferStorage #-}++-- GL_ARB_separate_shader_objects++type FuntypeUseProgramStages =+    GLuint ->+    GLbitfield ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynUseProgramStages :: FunPtr FuntypeUseProgramStages -> FuntypeUseProgramStages+glrefUseProgramStages :: IORef FuntypeUseProgramStages+glrefUseProgramStages = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefUseProgramStages #-}+glUseProgramStages :: FuntypeUseProgramStages+glUseProgramStages = unsafePerformIO $ readIORef glrefUseProgramStages+{-# INLINE glUseProgramStages #-}+type FuntypeActiveShaderProgram =+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynActiveShaderProgram :: FunPtr FuntypeActiveShaderProgram -> FuntypeActiveShaderProgram+glrefActiveShaderProgram :: IORef FuntypeActiveShaderProgram+glrefActiveShaderProgram = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefActiveShaderProgram #-}+glActiveShaderProgram :: FuntypeActiveShaderProgram+glActiveShaderProgram = unsafePerformIO $ readIORef glrefActiveShaderProgram+{-# INLINE glActiveShaderProgram #-}+type FuntypeCreateShaderProgramv =+    GLenum ->+    GLsizei ->+    Ptr (Ptr (GLchar)) ->+    IO ( GLuint )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynCreateShaderProgramv :: FunPtr FuntypeCreateShaderProgramv -> FuntypeCreateShaderProgramv+glrefCreateShaderProgramv :: IORef FuntypeCreateShaderProgramv+glrefCreateShaderProgramv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefCreateShaderProgramv #-}+glCreateShaderProgramv :: FuntypeCreateShaderProgramv+glCreateShaderProgramv = unsafePerformIO $ readIORef glrefCreateShaderProgramv+{-# INLINE glCreateShaderProgramv #-}+type FuntypeBindProgramPipeline =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynBindProgramPipeline :: FunPtr FuntypeBindProgramPipeline -> FuntypeBindProgramPipeline+glrefBindProgramPipeline :: IORef FuntypeBindProgramPipeline+glrefBindProgramPipeline = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefBindProgramPipeline #-}+glBindProgramPipeline :: FuntypeBindProgramPipeline+glBindProgramPipeline = unsafePerformIO $ readIORef glrefBindProgramPipeline+{-# INLINE glBindProgramPipeline #-}+type FuntypeDeleteProgramPipelines =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynDeleteProgramPipelines :: FunPtr FuntypeDeleteProgramPipelines -> FuntypeDeleteProgramPipelines+glrefDeleteProgramPipelines :: IORef FuntypeDeleteProgramPipelines+glrefDeleteProgramPipelines = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefDeleteProgramPipelines #-}+glDeleteProgramPipelines :: FuntypeDeleteProgramPipelines+glDeleteProgramPipelines = unsafePerformIO $ readIORef glrefDeleteProgramPipelines+{-# INLINE glDeleteProgramPipelines #-}+type FuntypeGenProgramPipelines =+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGenProgramPipelines :: FunPtr FuntypeGenProgramPipelines -> FuntypeGenProgramPipelines+glrefGenProgramPipelines :: IORef FuntypeGenProgramPipelines+glrefGenProgramPipelines = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGenProgramPipelines #-}+glGenProgramPipelines :: FuntypeGenProgramPipelines+glGenProgramPipelines = unsafePerformIO $ readIORef glrefGenProgramPipelines+{-# INLINE glGenProgramPipelines #-}+type FuntypeIsProgramPipeline =+    GLuint ->+    IO ( GLboolean )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynIsProgramPipeline :: FunPtr FuntypeIsProgramPipeline -> FuntypeIsProgramPipeline+glrefIsProgramPipeline :: IORef FuntypeIsProgramPipeline+glrefIsProgramPipeline = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefIsProgramPipeline #-}+glIsProgramPipeline :: FuntypeIsProgramPipeline+glIsProgramPipeline = unsafePerformIO $ readIORef glrefIsProgramPipeline+{-# INLINE glIsProgramPipeline #-}+type FuntypeGetProgramPipelineiv =+    GLuint ->+    GLenum ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetProgramPipelineiv :: FunPtr FuntypeGetProgramPipelineiv -> FuntypeGetProgramPipelineiv+glrefGetProgramPipelineiv :: IORef FuntypeGetProgramPipelineiv+glrefGetProgramPipelineiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetProgramPipelineiv #-}+glGetProgramPipelineiv :: FuntypeGetProgramPipelineiv+glGetProgramPipelineiv = unsafePerformIO $ readIORef glrefGetProgramPipelineiv+{-# INLINE glGetProgramPipelineiv #-}+type FuntypeProgramUniform1i =+    GLuint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1i :: FunPtr FuntypeProgramUniform1i -> FuntypeProgramUniform1i+glrefProgramUniform1i :: IORef FuntypeProgramUniform1i+glrefProgramUniform1i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1i #-}+glProgramUniform1i :: FuntypeProgramUniform1i+glProgramUniform1i = unsafePerformIO $ readIORef glrefProgramUniform1i+{-# INLINE glProgramUniform1i #-}+type FuntypeProgramUniform1iv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1iv :: FunPtr FuntypeProgramUniform1iv -> FuntypeProgramUniform1iv+glrefProgramUniform1iv :: IORef FuntypeProgramUniform1iv+glrefProgramUniform1iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1iv #-}+glProgramUniform1iv :: FuntypeProgramUniform1iv+glProgramUniform1iv = unsafePerformIO $ readIORef glrefProgramUniform1iv+{-# INLINE glProgramUniform1iv #-}+type FuntypeProgramUniform1f =+    GLuint ->+    GLint ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1f :: FunPtr FuntypeProgramUniform1f -> FuntypeProgramUniform1f+glrefProgramUniform1f :: IORef FuntypeProgramUniform1f+glrefProgramUniform1f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1f #-}+glProgramUniform1f :: FuntypeProgramUniform1f+glProgramUniform1f = unsafePerformIO $ readIORef glrefProgramUniform1f+{-# INLINE glProgramUniform1f #-}+type FuntypeProgramUniform1fv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1fv :: FunPtr FuntypeProgramUniform1fv -> FuntypeProgramUniform1fv+glrefProgramUniform1fv :: IORef FuntypeProgramUniform1fv+glrefProgramUniform1fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1fv #-}+glProgramUniform1fv :: FuntypeProgramUniform1fv+glProgramUniform1fv = unsafePerformIO $ readIORef glrefProgramUniform1fv+{-# INLINE glProgramUniform1fv #-}+type FuntypeProgramUniform1d =+    GLuint ->+    GLint ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1d :: FunPtr FuntypeProgramUniform1d -> FuntypeProgramUniform1d+glrefProgramUniform1d :: IORef FuntypeProgramUniform1d+glrefProgramUniform1d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1d #-}+glProgramUniform1d :: FuntypeProgramUniform1d+glProgramUniform1d = unsafePerformIO $ readIORef glrefProgramUniform1d+{-# INLINE glProgramUniform1d #-}+type FuntypeProgramUniform1dv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1dv :: FunPtr FuntypeProgramUniform1dv -> FuntypeProgramUniform1dv+glrefProgramUniform1dv :: IORef FuntypeProgramUniform1dv+glrefProgramUniform1dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1dv #-}+glProgramUniform1dv :: FuntypeProgramUniform1dv+glProgramUniform1dv = unsafePerformIO $ readIORef glrefProgramUniform1dv+{-# INLINE glProgramUniform1dv #-}+type FuntypeProgramUniform1ui =+    GLuint ->+    GLint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1ui :: FunPtr FuntypeProgramUniform1ui -> FuntypeProgramUniform1ui+glrefProgramUniform1ui :: IORef FuntypeProgramUniform1ui+glrefProgramUniform1ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1ui #-}+glProgramUniform1ui :: FuntypeProgramUniform1ui+glProgramUniform1ui = unsafePerformIO $ readIORef glrefProgramUniform1ui+{-# INLINE glProgramUniform1ui #-}+type FuntypeProgramUniform1uiv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform1uiv :: FunPtr FuntypeProgramUniform1uiv -> FuntypeProgramUniform1uiv+glrefProgramUniform1uiv :: IORef FuntypeProgramUniform1uiv+glrefProgramUniform1uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform1uiv #-}+glProgramUniform1uiv :: FuntypeProgramUniform1uiv+glProgramUniform1uiv = unsafePerformIO $ readIORef glrefProgramUniform1uiv+{-# INLINE glProgramUniform1uiv #-}+type FuntypeProgramUniform2i =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2i :: FunPtr FuntypeProgramUniform2i -> FuntypeProgramUniform2i+glrefProgramUniform2i :: IORef FuntypeProgramUniform2i+glrefProgramUniform2i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2i #-}+glProgramUniform2i :: FuntypeProgramUniform2i+glProgramUniform2i = unsafePerformIO $ readIORef glrefProgramUniform2i+{-# INLINE glProgramUniform2i #-}+type FuntypeProgramUniform2iv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2iv :: FunPtr FuntypeProgramUniform2iv -> FuntypeProgramUniform2iv+glrefProgramUniform2iv :: IORef FuntypeProgramUniform2iv+glrefProgramUniform2iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2iv #-}+glProgramUniform2iv :: FuntypeProgramUniform2iv+glProgramUniform2iv = unsafePerformIO $ readIORef glrefProgramUniform2iv+{-# INLINE glProgramUniform2iv #-}+type FuntypeProgramUniform2f =+    GLuint ->+    GLint ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2f :: FunPtr FuntypeProgramUniform2f -> FuntypeProgramUniform2f+glrefProgramUniform2f :: IORef FuntypeProgramUniform2f+glrefProgramUniform2f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2f #-}+glProgramUniform2f :: FuntypeProgramUniform2f+glProgramUniform2f = unsafePerformIO $ readIORef glrefProgramUniform2f+{-# INLINE glProgramUniform2f #-}+type FuntypeProgramUniform2fv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2fv :: FunPtr FuntypeProgramUniform2fv -> FuntypeProgramUniform2fv+glrefProgramUniform2fv :: IORef FuntypeProgramUniform2fv+glrefProgramUniform2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2fv #-}+glProgramUniform2fv :: FuntypeProgramUniform2fv+glProgramUniform2fv = unsafePerformIO $ readIORef glrefProgramUniform2fv+{-# INLINE glProgramUniform2fv #-}+type FuntypeProgramUniform2d =+    GLuint ->+    GLint ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2d :: FunPtr FuntypeProgramUniform2d -> FuntypeProgramUniform2d+glrefProgramUniform2d :: IORef FuntypeProgramUniform2d+glrefProgramUniform2d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2d #-}+glProgramUniform2d :: FuntypeProgramUniform2d+glProgramUniform2d = unsafePerformIO $ readIORef glrefProgramUniform2d+{-# INLINE glProgramUniform2d #-}+type FuntypeProgramUniform2dv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2dv :: FunPtr FuntypeProgramUniform2dv -> FuntypeProgramUniform2dv+glrefProgramUniform2dv :: IORef FuntypeProgramUniform2dv+glrefProgramUniform2dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2dv #-}+glProgramUniform2dv :: FuntypeProgramUniform2dv+glProgramUniform2dv = unsafePerformIO $ readIORef glrefProgramUniform2dv+{-# INLINE glProgramUniform2dv #-}+type FuntypeProgramUniform2ui =+    GLuint ->+    GLint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2ui :: FunPtr FuntypeProgramUniform2ui -> FuntypeProgramUniform2ui+glrefProgramUniform2ui :: IORef FuntypeProgramUniform2ui+glrefProgramUniform2ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2ui #-}+glProgramUniform2ui :: FuntypeProgramUniform2ui+glProgramUniform2ui = unsafePerformIO $ readIORef glrefProgramUniform2ui+{-# INLINE glProgramUniform2ui #-}+type FuntypeProgramUniform2uiv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform2uiv :: FunPtr FuntypeProgramUniform2uiv -> FuntypeProgramUniform2uiv+glrefProgramUniform2uiv :: IORef FuntypeProgramUniform2uiv+glrefProgramUniform2uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform2uiv #-}+glProgramUniform2uiv :: FuntypeProgramUniform2uiv+glProgramUniform2uiv = unsafePerformIO $ readIORef glrefProgramUniform2uiv+{-# INLINE glProgramUniform2uiv #-}+type FuntypeProgramUniform3i =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3i :: FunPtr FuntypeProgramUniform3i -> FuntypeProgramUniform3i+glrefProgramUniform3i :: IORef FuntypeProgramUniform3i+glrefProgramUniform3i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3i #-}+glProgramUniform3i :: FuntypeProgramUniform3i+glProgramUniform3i = unsafePerformIO $ readIORef glrefProgramUniform3i+{-# INLINE glProgramUniform3i #-}+type FuntypeProgramUniform3iv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3iv :: FunPtr FuntypeProgramUniform3iv -> FuntypeProgramUniform3iv+glrefProgramUniform3iv :: IORef FuntypeProgramUniform3iv+glrefProgramUniform3iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3iv #-}+glProgramUniform3iv :: FuntypeProgramUniform3iv+glProgramUniform3iv = unsafePerformIO $ readIORef glrefProgramUniform3iv+{-# INLINE glProgramUniform3iv #-}+type FuntypeProgramUniform3f =+    GLuint ->+    GLint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3f :: FunPtr FuntypeProgramUniform3f -> FuntypeProgramUniform3f+glrefProgramUniform3f :: IORef FuntypeProgramUniform3f+glrefProgramUniform3f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3f #-}+glProgramUniform3f :: FuntypeProgramUniform3f+glProgramUniform3f = unsafePerformIO $ readIORef glrefProgramUniform3f+{-# INLINE glProgramUniform3f #-}+type FuntypeProgramUniform3fv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3fv :: FunPtr FuntypeProgramUniform3fv -> FuntypeProgramUniform3fv+glrefProgramUniform3fv :: IORef FuntypeProgramUniform3fv+glrefProgramUniform3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3fv #-}+glProgramUniform3fv :: FuntypeProgramUniform3fv+glProgramUniform3fv = unsafePerformIO $ readIORef glrefProgramUniform3fv+{-# INLINE glProgramUniform3fv #-}+type FuntypeProgramUniform3d =+    GLuint ->+    GLint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3d :: FunPtr FuntypeProgramUniform3d -> FuntypeProgramUniform3d+glrefProgramUniform3d :: IORef FuntypeProgramUniform3d+glrefProgramUniform3d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3d #-}+glProgramUniform3d :: FuntypeProgramUniform3d+glProgramUniform3d = unsafePerformIO $ readIORef glrefProgramUniform3d+{-# INLINE glProgramUniform3d #-}+type FuntypeProgramUniform3dv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3dv :: FunPtr FuntypeProgramUniform3dv -> FuntypeProgramUniform3dv+glrefProgramUniform3dv :: IORef FuntypeProgramUniform3dv+glrefProgramUniform3dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3dv #-}+glProgramUniform3dv :: FuntypeProgramUniform3dv+glProgramUniform3dv = unsafePerformIO $ readIORef glrefProgramUniform3dv+{-# INLINE glProgramUniform3dv #-}+type FuntypeProgramUniform3ui =+    GLuint ->+    GLint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3ui :: FunPtr FuntypeProgramUniform3ui -> FuntypeProgramUniform3ui+glrefProgramUniform3ui :: IORef FuntypeProgramUniform3ui+glrefProgramUniform3ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3ui #-}+glProgramUniform3ui :: FuntypeProgramUniform3ui+glProgramUniform3ui = unsafePerformIO $ readIORef glrefProgramUniform3ui+{-# INLINE glProgramUniform3ui #-}+type FuntypeProgramUniform3uiv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform3uiv :: FunPtr FuntypeProgramUniform3uiv -> FuntypeProgramUniform3uiv+glrefProgramUniform3uiv :: IORef FuntypeProgramUniform3uiv+glrefProgramUniform3uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform3uiv #-}+glProgramUniform3uiv :: FuntypeProgramUniform3uiv+glProgramUniform3uiv = unsafePerformIO $ readIORef glrefProgramUniform3uiv+{-# INLINE glProgramUniform3uiv #-}+type FuntypeProgramUniform4i =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4i :: FunPtr FuntypeProgramUniform4i -> FuntypeProgramUniform4i+glrefProgramUniform4i :: IORef FuntypeProgramUniform4i+glrefProgramUniform4i = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4i #-}+glProgramUniform4i :: FuntypeProgramUniform4i+glProgramUniform4i = unsafePerformIO $ readIORef glrefProgramUniform4i+{-# INLINE glProgramUniform4i #-}+type FuntypeProgramUniform4iv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4iv :: FunPtr FuntypeProgramUniform4iv -> FuntypeProgramUniform4iv+glrefProgramUniform4iv :: IORef FuntypeProgramUniform4iv+glrefProgramUniform4iv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4iv #-}+glProgramUniform4iv :: FuntypeProgramUniform4iv+glProgramUniform4iv = unsafePerformIO $ readIORef glrefProgramUniform4iv+{-# INLINE glProgramUniform4iv #-}+type FuntypeProgramUniform4f =+    GLuint ->+    GLint ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    GLfloat ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4f :: FunPtr FuntypeProgramUniform4f -> FuntypeProgramUniform4f+glrefProgramUniform4f :: IORef FuntypeProgramUniform4f+glrefProgramUniform4f = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4f #-}+glProgramUniform4f :: FuntypeProgramUniform4f+glProgramUniform4f = unsafePerformIO $ readIORef glrefProgramUniform4f+{-# INLINE glProgramUniform4f #-}+type FuntypeProgramUniform4fv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4fv :: FunPtr FuntypeProgramUniform4fv -> FuntypeProgramUniform4fv+glrefProgramUniform4fv :: IORef FuntypeProgramUniform4fv+glrefProgramUniform4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4fv #-}+glProgramUniform4fv :: FuntypeProgramUniform4fv+glProgramUniform4fv = unsafePerformIO $ readIORef glrefProgramUniform4fv+{-# INLINE glProgramUniform4fv #-}+type FuntypeProgramUniform4d =+    GLuint ->+    GLint ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    GLdouble ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4d :: FunPtr FuntypeProgramUniform4d -> FuntypeProgramUniform4d+glrefProgramUniform4d :: IORef FuntypeProgramUniform4d+glrefProgramUniform4d = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4d #-}+glProgramUniform4d :: FuntypeProgramUniform4d+glProgramUniform4d = unsafePerformIO $ readIORef glrefProgramUniform4d+{-# INLINE glProgramUniform4d #-}+type FuntypeProgramUniform4dv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4dv :: FunPtr FuntypeProgramUniform4dv -> FuntypeProgramUniform4dv+glrefProgramUniform4dv :: IORef FuntypeProgramUniform4dv+glrefProgramUniform4dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4dv #-}+glProgramUniform4dv :: FuntypeProgramUniform4dv+glProgramUniform4dv = unsafePerformIO $ readIORef glrefProgramUniform4dv+{-# INLINE glProgramUniform4dv #-}+type FuntypeProgramUniform4ui =+    GLuint ->+    GLint ->+    GLuint ->+    GLuint ->+    GLuint ->+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4ui :: FunPtr FuntypeProgramUniform4ui -> FuntypeProgramUniform4ui+glrefProgramUniform4ui :: IORef FuntypeProgramUniform4ui+glrefProgramUniform4ui = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4ui #-}+glProgramUniform4ui :: FuntypeProgramUniform4ui+glProgramUniform4ui = unsafePerformIO $ readIORef glrefProgramUniform4ui+{-# INLINE glProgramUniform4ui #-}+type FuntypeProgramUniform4uiv =+    GLuint ->+    GLint ->+    GLsizei ->+    Ptr (GLuint) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniform4uiv :: FunPtr FuntypeProgramUniform4uiv -> FuntypeProgramUniform4uiv+glrefProgramUniform4uiv :: IORef FuntypeProgramUniform4uiv+glrefProgramUniform4uiv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniform4uiv #-}+glProgramUniform4uiv :: FuntypeProgramUniform4uiv+glProgramUniform4uiv = unsafePerformIO $ readIORef glrefProgramUniform4uiv+{-# INLINE glProgramUniform4uiv #-}+type FuntypeProgramUniformMatrix2fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2fv :: FunPtr FuntypeProgramUniformMatrix2fv -> FuntypeProgramUniformMatrix2fv+glrefProgramUniformMatrix2fv :: IORef FuntypeProgramUniformMatrix2fv+glrefProgramUniformMatrix2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2fv #-}+glProgramUniformMatrix2fv :: FuntypeProgramUniformMatrix2fv+glProgramUniformMatrix2fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix2fv+{-# INLINE glProgramUniformMatrix2fv #-}+type FuntypeProgramUniformMatrix3fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3fv :: FunPtr FuntypeProgramUniformMatrix3fv -> FuntypeProgramUniformMatrix3fv+glrefProgramUniformMatrix3fv :: IORef FuntypeProgramUniformMatrix3fv+glrefProgramUniformMatrix3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3fv #-}+glProgramUniformMatrix3fv :: FuntypeProgramUniformMatrix3fv+glProgramUniformMatrix3fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix3fv+{-# INLINE glProgramUniformMatrix3fv #-}+type FuntypeProgramUniformMatrix4fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4fv :: FunPtr FuntypeProgramUniformMatrix4fv -> FuntypeProgramUniformMatrix4fv+glrefProgramUniformMatrix4fv :: IORef FuntypeProgramUniformMatrix4fv+glrefProgramUniformMatrix4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4fv #-}+glProgramUniformMatrix4fv :: FuntypeProgramUniformMatrix4fv+glProgramUniformMatrix4fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix4fv+{-# INLINE glProgramUniformMatrix4fv #-}+type FuntypeProgramUniformMatrix2dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2dv :: FunPtr FuntypeProgramUniformMatrix2dv -> FuntypeProgramUniformMatrix2dv+glrefProgramUniformMatrix2dv :: IORef FuntypeProgramUniformMatrix2dv+glrefProgramUniformMatrix2dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2dv #-}+glProgramUniformMatrix2dv :: FuntypeProgramUniformMatrix2dv+glProgramUniformMatrix2dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix2dv+{-# INLINE glProgramUniformMatrix2dv #-}+type FuntypeProgramUniformMatrix3dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3dv :: FunPtr FuntypeProgramUniformMatrix3dv -> FuntypeProgramUniformMatrix3dv+glrefProgramUniformMatrix3dv :: IORef FuntypeProgramUniformMatrix3dv+glrefProgramUniformMatrix3dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3dv #-}+glProgramUniformMatrix3dv :: FuntypeProgramUniformMatrix3dv+glProgramUniformMatrix3dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix3dv+{-# INLINE glProgramUniformMatrix3dv #-}+type FuntypeProgramUniformMatrix4dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4dv :: FunPtr FuntypeProgramUniformMatrix4dv -> FuntypeProgramUniformMatrix4dv+glrefProgramUniformMatrix4dv :: IORef FuntypeProgramUniformMatrix4dv+glrefProgramUniformMatrix4dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4dv #-}+glProgramUniformMatrix4dv :: FuntypeProgramUniformMatrix4dv+glProgramUniformMatrix4dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix4dv+{-# INLINE glProgramUniformMatrix4dv #-}+type FuntypeProgramUniformMatrix2x3fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x3fv :: FunPtr FuntypeProgramUniformMatrix2x3fv -> FuntypeProgramUniformMatrix2x3fv+glrefProgramUniformMatrix2x3fv :: IORef FuntypeProgramUniformMatrix2x3fv+glrefProgramUniformMatrix2x3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x3fv #-}+glProgramUniformMatrix2x3fv :: FuntypeProgramUniformMatrix2x3fv+glProgramUniformMatrix2x3fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x3fv+{-# INLINE glProgramUniformMatrix2x3fv #-}+type FuntypeProgramUniformMatrix3x2fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x2fv :: FunPtr FuntypeProgramUniformMatrix3x2fv -> FuntypeProgramUniformMatrix3x2fv+glrefProgramUniformMatrix3x2fv :: IORef FuntypeProgramUniformMatrix3x2fv+glrefProgramUniformMatrix3x2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x2fv #-}+glProgramUniformMatrix3x2fv :: FuntypeProgramUniformMatrix3x2fv+glProgramUniformMatrix3x2fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x2fv+{-# INLINE glProgramUniformMatrix3x2fv #-}+type FuntypeProgramUniformMatrix2x4fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x4fv :: FunPtr FuntypeProgramUniformMatrix2x4fv -> FuntypeProgramUniformMatrix2x4fv+glrefProgramUniformMatrix2x4fv :: IORef FuntypeProgramUniformMatrix2x4fv+glrefProgramUniformMatrix2x4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x4fv #-}+glProgramUniformMatrix2x4fv :: FuntypeProgramUniformMatrix2x4fv+glProgramUniformMatrix2x4fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x4fv+{-# INLINE glProgramUniformMatrix2x4fv #-}+type FuntypeProgramUniformMatrix4x2fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x2fv :: FunPtr FuntypeProgramUniformMatrix4x2fv -> FuntypeProgramUniformMatrix4x2fv+glrefProgramUniformMatrix4x2fv :: IORef FuntypeProgramUniformMatrix4x2fv+glrefProgramUniformMatrix4x2fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x2fv #-}+glProgramUniformMatrix4x2fv :: FuntypeProgramUniformMatrix4x2fv+glProgramUniformMatrix4x2fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x2fv+{-# INLINE glProgramUniformMatrix4x2fv #-}+type FuntypeProgramUniformMatrix3x4fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x4fv :: FunPtr FuntypeProgramUniformMatrix3x4fv -> FuntypeProgramUniformMatrix3x4fv+glrefProgramUniformMatrix3x4fv :: IORef FuntypeProgramUniformMatrix3x4fv+glrefProgramUniformMatrix3x4fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x4fv #-}+glProgramUniformMatrix3x4fv :: FuntypeProgramUniformMatrix3x4fv+glProgramUniformMatrix3x4fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x4fv+{-# INLINE glProgramUniformMatrix3x4fv #-}+type FuntypeProgramUniformMatrix4x3fv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLfloat) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x3fv :: FunPtr FuntypeProgramUniformMatrix4x3fv -> FuntypeProgramUniformMatrix4x3fv+glrefProgramUniformMatrix4x3fv :: IORef FuntypeProgramUniformMatrix4x3fv+glrefProgramUniformMatrix4x3fv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x3fv #-}+glProgramUniformMatrix4x3fv :: FuntypeProgramUniformMatrix4x3fv+glProgramUniformMatrix4x3fv = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x3fv+{-# INLINE glProgramUniformMatrix4x3fv #-}+type FuntypeProgramUniformMatrix2x3dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x3dv :: FunPtr FuntypeProgramUniformMatrix2x3dv -> FuntypeProgramUniformMatrix2x3dv+glrefProgramUniformMatrix2x3dv :: IORef FuntypeProgramUniformMatrix2x3dv+glrefProgramUniformMatrix2x3dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x3dv #-}+glProgramUniformMatrix2x3dv :: FuntypeProgramUniformMatrix2x3dv+glProgramUniformMatrix2x3dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x3dv+{-# INLINE glProgramUniformMatrix2x3dv #-}+type FuntypeProgramUniformMatrix3x2dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x2dv :: FunPtr FuntypeProgramUniformMatrix3x2dv -> FuntypeProgramUniformMatrix3x2dv+glrefProgramUniformMatrix3x2dv :: IORef FuntypeProgramUniformMatrix3x2dv+glrefProgramUniformMatrix3x2dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x2dv #-}+glProgramUniformMatrix3x2dv :: FuntypeProgramUniformMatrix3x2dv+glProgramUniformMatrix3x2dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x2dv+{-# INLINE glProgramUniformMatrix3x2dv #-}+type FuntypeProgramUniformMatrix2x4dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix2x4dv :: FunPtr FuntypeProgramUniformMatrix2x4dv -> FuntypeProgramUniformMatrix2x4dv+glrefProgramUniformMatrix2x4dv :: IORef FuntypeProgramUniformMatrix2x4dv+glrefProgramUniformMatrix2x4dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix2x4dv #-}+glProgramUniformMatrix2x4dv :: FuntypeProgramUniformMatrix2x4dv+glProgramUniformMatrix2x4dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix2x4dv+{-# INLINE glProgramUniformMatrix2x4dv #-}+type FuntypeProgramUniformMatrix4x2dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x2dv :: FunPtr FuntypeProgramUniformMatrix4x2dv -> FuntypeProgramUniformMatrix4x2dv+glrefProgramUniformMatrix4x2dv :: IORef FuntypeProgramUniformMatrix4x2dv+glrefProgramUniformMatrix4x2dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x2dv #-}+glProgramUniformMatrix4x2dv :: FuntypeProgramUniformMatrix4x2dv+glProgramUniformMatrix4x2dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x2dv+{-# INLINE glProgramUniformMatrix4x2dv #-}+type FuntypeProgramUniformMatrix3x4dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix3x4dv :: FunPtr FuntypeProgramUniformMatrix3x4dv -> FuntypeProgramUniformMatrix3x4dv+glrefProgramUniformMatrix3x4dv :: IORef FuntypeProgramUniformMatrix3x4dv+glrefProgramUniformMatrix3x4dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix3x4dv #-}+glProgramUniformMatrix3x4dv :: FuntypeProgramUniformMatrix3x4dv+glProgramUniformMatrix3x4dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix3x4dv+{-# INLINE glProgramUniformMatrix3x4dv #-}+type FuntypeProgramUniformMatrix4x3dv =+    GLuint ->+    GLint ->+    GLsizei ->+    GLboolean ->+    Ptr (GLdouble) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynProgramUniformMatrix4x3dv :: FunPtr FuntypeProgramUniformMatrix4x3dv -> FuntypeProgramUniformMatrix4x3dv+glrefProgramUniformMatrix4x3dv :: IORef FuntypeProgramUniformMatrix4x3dv+glrefProgramUniformMatrix4x3dv = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefProgramUniformMatrix4x3dv #-}+glProgramUniformMatrix4x3dv :: FuntypeProgramUniformMatrix4x3dv+glProgramUniformMatrix4x3dv = unsafePerformIO $ readIORef glrefProgramUniformMatrix4x3dv+{-# INLINE glProgramUniformMatrix4x3dv #-}+type FuntypeValidateProgramPipeline =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynValidateProgramPipeline :: FunPtr FuntypeValidateProgramPipeline -> FuntypeValidateProgramPipeline+glrefValidateProgramPipeline :: IORef FuntypeValidateProgramPipeline+glrefValidateProgramPipeline = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefValidateProgramPipeline #-}+glValidateProgramPipeline :: FuntypeValidateProgramPipeline+glValidateProgramPipeline = unsafePerformIO $ readIORef glrefValidateProgramPipeline+{-# INLINE glValidateProgramPipeline #-}+type FuntypeGetProgramPipelineInfoLog =+    GLuint ->+    GLsizei ->+    Ptr (GLsizei) ->+    Ptr (GLchar) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynGetProgramPipelineInfoLog :: FunPtr FuntypeGetProgramPipelineInfoLog -> FuntypeGetProgramPipelineInfoLog+glrefGetProgramPipelineInfoLog :: IORef FuntypeGetProgramPipelineInfoLog+glrefGetProgramPipelineInfoLog = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefGetProgramPipelineInfoLog #-}+glGetProgramPipelineInfoLog :: FuntypeGetProgramPipelineInfoLog+glGetProgramPipelineInfoLog = unsafePerformIO $ readIORef glrefGetProgramPipelineInfoLog+{-# INLINE glGetProgramPipelineInfoLog #-}++-- GL_ATI_meminfo+++-- GL_NVX_gpu_memory_info+++-- GL_ARB_invalidate_subdata++type FuntypeInvalidateTexSubImage =+    GLuint ->+    GLint ->+    GLint ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynInvalidateTexSubImage :: FunPtr FuntypeInvalidateTexSubImage -> FuntypeInvalidateTexSubImage+glrefInvalidateTexSubImage :: IORef FuntypeInvalidateTexSubImage+glrefInvalidateTexSubImage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefInvalidateTexSubImage #-}+glInvalidateTexSubImage :: FuntypeInvalidateTexSubImage+glInvalidateTexSubImage = unsafePerformIO $ readIORef glrefInvalidateTexSubImage+{-# INLINE glInvalidateTexSubImage #-}+type FuntypeInvalidateTexImage =+    GLuint ->+    GLint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynInvalidateTexImage :: FunPtr FuntypeInvalidateTexImage -> FuntypeInvalidateTexImage+glrefInvalidateTexImage :: IORef FuntypeInvalidateTexImage+glrefInvalidateTexImage = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefInvalidateTexImage #-}+glInvalidateTexImage :: FuntypeInvalidateTexImage+glInvalidateTexImage = unsafePerformIO $ readIORef glrefInvalidateTexImage+{-# INLINE glInvalidateTexImage #-}+type FuntypeInvalidateBufferSubData =+    GLuint ->+    GLintptr ->+    GLsizeiptr ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynInvalidateBufferSubData :: FunPtr FuntypeInvalidateBufferSubData -> FuntypeInvalidateBufferSubData+glrefInvalidateBufferSubData :: IORef FuntypeInvalidateBufferSubData+glrefInvalidateBufferSubData = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefInvalidateBufferSubData #-}+glInvalidateBufferSubData :: FuntypeInvalidateBufferSubData+glInvalidateBufferSubData = unsafePerformIO $ readIORef glrefInvalidateBufferSubData+{-# INLINE glInvalidateBufferSubData #-}+type FuntypeInvalidateBufferData =+    GLuint ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynInvalidateBufferData :: FunPtr FuntypeInvalidateBufferData -> FuntypeInvalidateBufferData+glrefInvalidateBufferData :: IORef FuntypeInvalidateBufferData+glrefInvalidateBufferData = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefInvalidateBufferData #-}+glInvalidateBufferData :: FuntypeInvalidateBufferData+glInvalidateBufferData = unsafePerformIO $ readIORef glrefInvalidateBufferData+{-# INLINE glInvalidateBufferData #-}+type FuntypeInvalidateFramebuffer =+    GLenum ->+    GLsizei ->+    Ptr (GLenum) ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynInvalidateFramebuffer :: FunPtr FuntypeInvalidateFramebuffer -> FuntypeInvalidateFramebuffer+glrefInvalidateFramebuffer :: IORef FuntypeInvalidateFramebuffer+glrefInvalidateFramebuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefInvalidateFramebuffer #-}+glInvalidateFramebuffer :: FuntypeInvalidateFramebuffer+glInvalidateFramebuffer = unsafePerformIO $ readIORef glrefInvalidateFramebuffer+{-# INLINE glInvalidateFramebuffer #-}+type FuntypeInvalidateSubFramebuffer =+    GLenum ->+    GLsizei ->+    Ptr (GLenum) ->+    GLint ->+    GLint ->+    GLsizei ->+    GLsizei ->+    IO ( () )+foreign import ccall APIENTRY unsafe "dynamic"+    gldynInvalidateSubFramebuffer :: FunPtr FuntypeInvalidateSubFramebuffer -> FuntypeInvalidateSubFramebuffer+glrefInvalidateSubFramebuffer :: IORef FuntypeInvalidateSubFramebuffer+glrefInvalidateSubFramebuffer = unsafePerformIO $ newIORef $ error "No function retrieved."+{-# NOINLINE glrefInvalidateSubFramebuffer #-}+glInvalidateSubFramebuffer :: FuntypeInvalidateSubFramebuffer+glInvalidateSubFramebuffer = unsafePerformIO $ readIORef glrefInvalidateSubFramebuffer+{-# INLINE glInvalidateSubFramebuffer #-}++gl_UNSIGNED_INT_10_10_10_2_EXT :: GLenum+gl_UNSIGNED_INT_10_10_10_2_EXT = 0x8036+gl_ACTIVE_RESOURCES :: GLenum+gl_ACTIVE_RESOURCES = 0x92F5+gl_MAX_GEOMETRY_SHADER_INVOCATIONS :: GLenum+gl_MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A+gl_RESTART_PATH_NV :: GLenum+gl_RESTART_PATH_NV = 0xF0+gl_MAX_DEEP_3D_TEXTURE_DEPTH_NV :: GLenum+gl_MAX_DEEP_3D_TEXTURE_DEPTH_NV = 0x90D1+gl_PACK_SKIP_IMAGES :: GLenum+gl_PACK_SKIP_IMAGES = 0x806B+gl_IMAGE_CLASS_2_X_16 :: GLenum+gl_IMAGE_CLASS_2_X_16 = 0x82BD+gl_FRAMEBUFFER_COMPLETE :: GLenum+gl_FRAMEBUFFER_COMPLETE = 0x8CD5+gl_HSL_LUMINOSITY_NV :: GLenum+gl_HSL_LUMINOSITY_NV = 0x92B0+gl_IMAGE_BINDING_LAYERED_EXT :: GLenum+gl_IMAGE_BINDING_LAYERED_EXT = 0x8F3C+gl_ZOOM_Y :: GLenum+gl_ZOOM_Y = 0x0D17+gl_TEXTURE_LUMINANCE_TYPE_ARB :: GLenum+gl_TEXTURE_LUMINANCE_TYPE_ARB = 0x8C14+gl_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB :: GLenum+gl_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x880B+gl_TEXTURE_HEIGHT :: GLenum+gl_TEXTURE_HEIGHT = 0x1001+gl_OUTPUT_TEXTURE_COORD0_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD0_EXT = 0x879D+gl_FLOAT_CLEAR_COLOR_VALUE_NV :: GLenum+gl_FLOAT_CLEAR_COLOR_VALUE_NV = 0x888D+gl_LIGHT_MODEL_AMBIENT :: GLenum+gl_LIGHT_MODEL_AMBIENT = 0x0B53+gl_INT16_VEC3_NV :: GLenum+gl_INT16_VEC3_NV = 0x8FE6+gl_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV :: GLenum+gl_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = 0x8C74+gl_MATRIX6_NV :: GLenum+gl_MATRIX6_NV = 0x8636+gl_COMPUTE_PROGRAM_NV :: GLenum+gl_COMPUTE_PROGRAM_NV = 0x90FB+gl_SCALED_RESOLVE_FASTEST_EXT :: GLenum+gl_SCALED_RESOLVE_FASTEST_EXT = 0x90BA+gl_REPLACEMENT_CODE_ARRAY_SUN :: GLenum+gl_REPLACEMENT_CODE_ARRAY_SUN = 0x85C0+gl_TEXTURE_DT_SIZE_NV :: GLenum+gl_TEXTURE_DT_SIZE_NV = 0x871E+gl_NUM_SPARSE_LEVELS_ARB :: GLenum+gl_NUM_SPARSE_LEVELS_ARB = 0x91AA+gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR :: GLenum+gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 0x8243+gl_NO_ERROR :: GLenum+gl_NO_ERROR = 0+gl_INTERNALFORMAT_ALPHA_TYPE :: GLenum+gl_INTERNALFORMAT_ALPHA_TYPE = 0x827B+gl_FONT_HEIGHT_BIT_NV :: GLenum+gl_FONT_HEIGHT_BIT_NV = 0x00800000+gl_TANGENT_ARRAY_POINTER_EXT :: GLenum+gl_TANGENT_ARRAY_POINTER_EXT = 0x8442+gl_LOCAL_CONSTANT_VALUE_EXT :: GLenum+gl_LOCAL_CONSTANT_VALUE_EXT = 0x87EC+gl_READ_WRITE :: GLenum+gl_READ_WRITE = 0x88BA+gl_TEXTURE_2D :: GLenum+gl_TEXTURE_2D = 0x0DE1+gl_UNSIGNED_INT_2_10_10_10_REV_EXT :: GLenum+gl_UNSIGNED_INT_2_10_10_10_REV_EXT = 0x8368+gl_TEXTURE_WRAP_R :: GLenum+gl_TEXTURE_WRAP_R = 0x8072+gl_FLOAT_MAT4x2 :: GLenum+gl_FLOAT_MAT4x2 = 0x8B69+gl_MAX_COMPUTE_WORK_GROUP_SIZE :: GLenum+gl_MAX_COMPUTE_WORK_GROUP_SIZE = 0x91BF+gl_POLYGON_OFFSET_CLAMP_EXT :: GLenum+gl_POLYGON_OFFSET_CLAMP_EXT = 0x8E1B+gl_SYNC_FLUSH_COMMANDS_BIT :: GLenum+gl_SYNC_FLUSH_COMMANDS_BIT = 0x00000001+gl_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB :: GLenum+gl_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x8809+gl_INT_IMAGE_BUFFER :: GLenum+gl_INT_IMAGE_BUFFER = 0x905C+gl_VERTEX_ATTRIB_ARRAY_TYPE :: GLenum+gl_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625+gl_ONE :: GLenum+gl_ONE = 1+gl_COLOR_CLEAR_UNCLAMPED_VALUE_ATI :: GLenum+gl_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x8835+gl_TRANSLATE_X_NV :: GLenum+gl_TRANSLATE_X_NV = 0x908E+gl_HI_SCALE_NV :: GLenum+gl_HI_SCALE_NV = 0x870E+gl_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT :: GLenum+gl_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = 0x9308+gl_HILO_NV :: GLenum+gl_HILO_NV = 0x86F4+gl_TRIANGLES :: GLenum+gl_TRIANGLES = 0x0004+gl_LINEARLIGHT_NV :: GLenum+gl_LINEARLIGHT_NV = 0x92A7+gl_MAX_3D_TEXTURE_SIZE_OES :: GLenum+gl_MAX_3D_TEXTURE_SIZE_OES = 0x8073+gl_ANY_SAMPLES_PASSED_CONSERVATIVE :: GLenum+gl_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8D6A+gl_UNIFORM_BLOCK_BINDING :: GLenum+gl_UNIFORM_BLOCK_BINDING = 0x8A3F+gl_MAX_TESS_CONTROL_INPUT_COMPONENTS :: GLenum+gl_MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C+gl_TEXTURE_ALPHA_TYPE_ARB :: GLenum+gl_TEXTURE_ALPHA_TYPE_ARB = 0x8C13+gl_MAX_CONVOLUTION_HEIGHT :: GLenum+gl_MAX_CONVOLUTION_HEIGHT = 0x801B+gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8CD9+gl_DEPTH_BUFFER_BIT5_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT5_QCOM = 0x00002000+gl_PROGRAM_TEX_INDIRECTIONS_ARB :: GLenum+gl_PROGRAM_TEX_INDIRECTIONS_ARB = 0x8807+gl_BLUE :: GLenum+gl_BLUE = 0x1905+gl_RGBA_S3TC :: GLenum+gl_RGBA_S3TC = 0x83A2+gl_DECR :: GLenum+gl_DECR = 0x1E03+gl_MAJOR_VERSION :: GLenum+gl_MAJOR_VERSION = 0x821B+gl_ARRAY_STRIDE :: GLenum+gl_ARRAY_STRIDE = 0x92FE+gl_CONSTANT_COLOR1_NV :: GLenum+gl_CONSTANT_COLOR1_NV = 0x852B+gl_SAMPLES_EXT :: GLenum+gl_SAMPLES_EXT = 0x80A9+gl_MAX_SAMPLES_APPLE :: GLenum+gl_MAX_SAMPLES_APPLE = 0x8D57+gl_COLOR_ARRAY_SIZE :: GLenum+gl_COLOR_ARRAY_SIZE = 0x8081+gl_SAMPLE_ALPHA_TO_MASK_SGIS :: GLenum+gl_SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E+gl_DUP_LAST_CUBIC_CURVE_TO_NV :: GLenum+gl_DUP_LAST_CUBIC_CURVE_TO_NV = 0xF4+gl_TEXTURE10 :: GLenum+gl_TEXTURE10 = 0x84CA+gl_R1UI_T2F_C4F_N3F_V3F_SUN :: GLenum+gl_R1UI_T2F_C4F_N3F_V3F_SUN = 0x85CB+gl_MAX_VARYING_COMPONENTS :: GLenum+gl_MAX_VARYING_COMPONENTS = 0x8B4B+gl_DRAW_BUFFER7_EXT :: GLenum+gl_DRAW_BUFFER7_EXT = 0x882C+gl_MAX_COMBINED_ATOMIC_COUNTERS :: GLenum+gl_MAX_COMBINED_ATOMIC_COUNTERS = 0x92D7+gl_PROGRAM_ERROR_STRING_ARB :: GLenum+gl_PROGRAM_ERROR_STRING_ARB = 0x8874+gl_TRACE_ALL_BITS_MESA :: GLenum+gl_TRACE_ALL_BITS_MESA = 0xFFFF+gl_DEPTH_CLAMP_NV :: GLenum+gl_DEPTH_CLAMP_NV = 0x864F+gl_REDUCE :: GLenum+gl_REDUCE = 0x8016+gl_UNSIGNED_SHORT_4_4_4_4 :: GLenum+gl_UNSIGNED_SHORT_4_4_4_4 = 0x8033+gl_SKIP_COMPONENTS1_NV :: GLenum+gl_SKIP_COMPONENTS1_NV = -6+gl_PIXEL_TILE_CACHE_INCREMENT_SGIX :: GLenum+gl_PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F+gl_COLOR_ARRAY :: GLenum+gl_COLOR_ARRAY = 0x8076+gl_STATIC_VERTEX_ARRAY_IBM :: GLenum+gl_STATIC_VERTEX_ARRAY_IBM = 103061+gl_INDEX_BIT_PGI :: GLenum+gl_INDEX_BIT_PGI = 0x00080000+gl_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x8519+gl_ETC1_SRGB8_NV :: GLenum+gl_ETC1_SRGB8_NV = 0x88EE+gl_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81+gl_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT :: GLenum+gl_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001+gl_LIGHT_MODEL_COLOR_CONTROL_EXT :: GLenum+gl_LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8+gl_PATCH_DEFAULT_OUTER_LEVEL_EXT :: GLenum+gl_PATCH_DEFAULT_OUTER_LEVEL_EXT = 0x8E74+gl_SAMPLER_CUBE_ARB :: GLenum+gl_SAMPLER_CUBE_ARB = 0x8B60+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT :: GLenum+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8DE1+gl_STORAGE_PRIVATE_APPLE :: GLenum+gl_STORAGE_PRIVATE_APPLE = 0x85BD+gl_MAP1_TEXTURE_COORD_2 :: GLenum+gl_MAP1_TEXTURE_COORD_2 = 0x0D94+gl_REPLACEMENT_CODE_ARRAY_STRIDE_SUN :: GLenum+gl_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x85C2+gl_VERTEX_ATTRIB_ARRAY8_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY8_NV = 0x8658+gl_LUMINANCE16F_ARB :: GLenum+gl_LUMINANCE16F_ARB = 0x881E+gl_DEPTH_COMPONENT32F_NV :: GLenum+gl_DEPTH_COMPONENT32F_NV = 0x8DAB+gl_MAX_VERTEX_BINDABLE_UNIFORMS_EXT :: GLenum+gl_MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x8DE2+gl_MATRIX28_ARB :: GLenum+gl_MATRIX28_ARB = 0x88DC+gl_SYNC_FLUSH_COMMANDS_BIT_APPLE :: GLenum+gl_SYNC_FLUSH_COMMANDS_BIT_APPLE = 0x00000001+gl_READ_FRAMEBUFFER_BINDING_ANGLE :: GLenum+gl_READ_FRAMEBUFFER_BINDING_ANGLE = 0x8CAA+gl_FOG_COORDINATE_ARRAY_TYPE :: GLenum+gl_FOG_COORDINATE_ARRAY_TYPE = 0x8454+gl_RGBA32UI_EXT :: GLenum+gl_RGBA32UI_EXT = 0x8D70+gl_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG :: GLenum+gl_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02+gl_2_BYTES_NV :: GLenum+gl_2_BYTES_NV = 0x1407+gl_TEXTURE_HI_SIZE_NV :: GLenum+gl_TEXTURE_HI_SIZE_NV = 0x871B+gl_PACK_SWAP_BYTES :: GLenum+gl_PACK_SWAP_BYTES = 0x0D00+gl_EVAL_FRACTIONAL_TESSELLATION_NV :: GLenum+gl_EVAL_FRACTIONAL_TESSELLATION_NV = 0x86C5+gl_RG16 :: GLenum+gl_RG16 = 0x822C+gl_SWIZZLE_STR_ATI :: GLenum+gl_SWIZZLE_STR_ATI = 0x8976+gl_CON_6_ATI :: GLenum+gl_CON_6_ATI = 0x8947+gl_PATH_FOG_GEN_MODE_NV :: GLenum+gl_PATH_FOG_GEN_MODE_NV = 0x90AC+gl_SRGB8_ALPHA8_EXT :: GLenum+gl_SRGB8_ALPHA8_EXT = 0x8C43+gl_COMPRESSED_SLUMINANCE_ALPHA_EXT :: GLenum+gl_COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B+gl_TEXTURE_COMPARE_FUNC_EXT :: GLenum+gl_TEXTURE_COMPARE_FUNC_EXT = 0x884D+gl_UNIFORM_MATRIX_STRIDE :: GLenum+gl_UNIFORM_MATRIX_STRIDE = 0x8A3D+gl_INVALID_OPERATION :: GLenum+gl_INVALID_OPERATION = 0x0502+gl_DRAW_BUFFER4_ATI :: GLenum+gl_DRAW_BUFFER4_ATI = 0x8829+gl_BYTE :: GLenum+gl_BYTE = 0x1400+gl_SECONDARY_COLOR_ARRAY_POINTER :: GLenum+gl_SECONDARY_COLOR_ARRAY_POINTER = 0x845D+gl_TEXTURE_CUBE_MAP_POSITIVE_X :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515+gl_TEXTURE_2D_ARRAY :: GLenum+gl_TEXTURE_2D_ARRAY = 0x8C1A+gl_OFFSET_TEXTURE_MATRIX_NV :: GLenum+gl_OFFSET_TEXTURE_MATRIX_NV = 0x86E1+gl_FLOAT_MAT2x4 :: GLenum+gl_FLOAT_MAT2x4 = 0x8B66+gl_REG_31_ATI :: GLenum+gl_REG_31_ATI = 0x8940+gl_DEBUG_TYPE_PORTABILITY :: GLenum+gl_DEBUG_TYPE_PORTABILITY = 0x824F+gl_SAMPLER_2D_ARB :: GLenum+gl_SAMPLER_2D_ARB = 0x8B5E+gl_DRAW_BUFFER11 :: GLenum+gl_DRAW_BUFFER11 = 0x8830+gl_MAX_COMPUTE_WORK_GROUP_INVOCATIONS :: GLenum+gl_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x90EB+gl_TEXTURE5_ARB :: GLenum+gl_TEXTURE5_ARB = 0x84C5+gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT :: GLenum+gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = 0x90D7+gl_COLOR_TABLE_SCALE :: GLenum+gl_COLOR_TABLE_SCALE = 0x80D6+gl_POINT_FADE_THRESHOLD_SIZE_SGIS :: GLenum+gl_POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128+gl_MAX_SPARSE_3D_TEXTURE_SIZE_ARB :: GLenum+gl_MAX_SPARSE_3D_TEXTURE_SIZE_ARB = 0x9199+gl_ACCUM_CLEAR_VALUE :: GLenum+gl_ACCUM_CLEAR_VALUE = 0x0B80+gl_OPERAND0_ALPHA_EXT :: GLenum+gl_OPERAND0_ALPHA_EXT = 0x8598+gl_QUERY_NO_WAIT :: GLenum+gl_QUERY_NO_WAIT = 0x8E14+gl_PRIMITIVE_RESTART :: GLenum+gl_PRIMITIVE_RESTART = 0x8F9D+gl_STENCIL_ATTACHMENT_OES :: GLenum+gl_STENCIL_ATTACHMENT_OES = 0x8D20+gl_BUFFER_USAGE :: GLenum+gl_BUFFER_USAGE = 0x8765+gl_COLOR_TABLE_BLUE_SIZE :: GLenum+gl_COLOR_TABLE_BLUE_SIZE = 0x80DC+gl_VERTEX_ARRAY_SIZE_EXT :: GLenum+gl_VERTEX_ARRAY_SIZE_EXT = 0x807A+gl_ALPHA8 :: GLenum+gl_ALPHA8 = 0x803C+gl_PROXY_TEXTURE_2D :: GLenum+gl_PROXY_TEXTURE_2D = 0x8064+gl_HALF_BIT_ATI :: GLenum+gl_HALF_BIT_ATI = 0x00000008+gl_TRANSPOSE_MODELVIEW_MATRIX :: GLenum+gl_TRANSPOSE_MODELVIEW_MATRIX = 0x84E3+gl_DRAW_BUFFER3 :: GLenum+gl_DRAW_BUFFER3 = 0x8828+gl_4PASS_2_SGIS :: GLenum+gl_4PASS_2_SGIS = 0x80A6+gl_MAX_GEOMETRY_OUTPUT_COMPONENTS :: GLenum+gl_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124+gl_SAMPLER_2D_ARRAY_SHADOW_EXT :: GLenum+gl_SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4+gl_TEXTURE_FORMAT_QCOM :: GLenum+gl_TEXTURE_FORMAT_QCOM = 0x8BD6+gl_RGB16_SNORM :: GLenum+gl_RGB16_SNORM = 0x8F9A+gl_DRAW_BUFFER8_NV :: GLenum+gl_DRAW_BUFFER8_NV = 0x882D+gl_AUX_BUFFERS :: GLenum+gl_AUX_BUFFERS = 0x0C00+gl_CONVOLUTION_HINT_SGIX :: GLenum+gl_CONVOLUTION_HINT_SGIX = 0x8316+gl_FOG_COLOR :: GLenum+gl_FOG_COLOR = 0x0B66+gl_COLOR_TABLE_RED_SIZE_SGI :: GLenum+gl_COLOR_TABLE_RED_SIZE_SGI = 0x80DA+gl_FUNC_SUBTRACT_OES :: GLenum+gl_FUNC_SUBTRACT_OES = 0x800A+gl_LUMINANCE_ALPHA16F_ARB :: GLenum+gl_LUMINANCE_ALPHA16F_ARB = 0x881F+gl_MODELVIEW10_ARB :: GLenum+gl_MODELVIEW10_ARB = 0x872A+gl_LOGIC_OP :: GLenum+gl_LOGIC_OP = 0x0BF1+gl_PROGRAM_NATIVE_INSTRUCTIONS_ARB :: GLenum+gl_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2+gl_SOURCE0_ALPHA_EXT :: GLenum+gl_SOURCE0_ALPHA_EXT = 0x8588+gl_INDEX_SHIFT :: GLenum+gl_INDEX_SHIFT = 0x0D12+gl_PIXEL_FRAGMENT_RGB_SOURCE_SGIS :: GLenum+gl_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x8354+gl_RG32F_EXT :: GLenum+gl_RG32F_EXT = 0x8230+gl_GEOMETRY_LINKED_VERTICES_OUT_EXT :: GLenum+gl_GEOMETRY_LINKED_VERTICES_OUT_EXT = 0x8916+gl_STACK_UNDERFLOW_KHR :: GLenum+gl_STACK_UNDERFLOW_KHR = 0x0504+gl_TESS_GEN_POINT_MODE_EXT :: GLenum+gl_TESS_GEN_POINT_MODE_EXT = 0x8E79+gl_BUFFER_ACCESS_ARB :: GLenum+gl_BUFFER_ACCESS_ARB = 0x88BB+gl_DOT_PRODUCT_NV :: GLenum+gl_DOT_PRODUCT_NV = 0x86EC+gl_INVERTED_SCREEN_W_REND :: GLenum+gl_INVERTED_SCREEN_W_REND = 0x8491+gl_REG_11_ATI :: GLenum+gl_REG_11_ATI = 0x892C+gl_MAX_FRAMEZOOM_FACTOR_SGIX :: GLenum+gl_MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D+gl_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD :: GLenum+gl_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD = 0x00000008+gl_MATRIX20_ARB :: GLenum+gl_MATRIX20_ARB = 0x88D4+gl_EVAL_VERTEX_ATTRIB1_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB1_NV = 0x86C7+gl_COLOR_ATTACHMENT10_NV :: GLenum+gl_COLOR_ATTACHMENT10_NV = 0x8CEA+gl_OUTPUT_TEXTURE_COORD28_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD28_EXT = 0x87B9+gl_MAX_TEXTURE_COORDS_ARB :: GLenum+gl_MAX_TEXTURE_COORDS_ARB = 0x8871+gl_COLOR_ARRAY_PARALLEL_POINTERS_INTEL :: GLenum+gl_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F7+gl_MAX_COMBINED_SHADER_OUTPUT_RESOURCES :: GLenum+gl_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x8F39+gl_RENDERBUFFER_BLUE_SIZE :: GLenum+gl_RENDERBUFFER_BLUE_SIZE = 0x8D52+gl_MULTISAMPLE_BIT :: GLenum+gl_MULTISAMPLE_BIT = 0x20000000+gl_CURRENT_PROGRAM :: GLenum+gl_CURRENT_PROGRAM = 0x8B8D+gl_AUX_DEPTH_STENCIL_APPLE :: GLenum+gl_AUX_DEPTH_STENCIL_APPLE = 0x8A14+gl_LUMINANCE8_ALPHA8_EXT :: GLenum+gl_LUMINANCE8_ALPHA8_EXT = 0x8045+gl_VIDEO_CAPTURE_SURFACE_ORIGIN_NV :: GLenum+gl_VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C+gl_INTERLACE_OML :: GLenum+gl_INTERLACE_OML = 0x8980+gl_REG_27_ATI :: GLenum+gl_REG_27_ATI = 0x893C+gl_UNSIGNED_INT_24_8_OES :: GLenum+gl_UNSIGNED_INT_24_8_OES = 0x84FA+gl_COMBINER_AB_OUTPUT_NV :: GLenum+gl_COMBINER_AB_OUTPUT_NV = 0x854A+gl_CURRENT_RASTER_INDEX :: GLenum+gl_CURRENT_RASTER_INDEX = 0x0B05+gl_SYNC_FENCE_APPLE :: GLenum+gl_SYNC_FENCE_APPLE = 0x9116+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3+gl_MAX_TEXTURE_SIZE :: GLenum+gl_MAX_TEXTURE_SIZE = 0x0D33+gl_TEXTURE24 :: GLenum+gl_TEXTURE24 = 0x84D8+gl_STENCIL_BACK_FUNC :: GLenum+gl_STENCIL_BACK_FUNC = 0x8800+gl_LUMINANCE12 :: GLenum+gl_LUMINANCE12 = 0x8041+gl_PARAMETER_BUFFER_ARB :: GLenum+gl_PARAMETER_BUFFER_ARB = 0x80EE+gl_AUX2 :: GLenum+gl_AUX2 = 0x040B+gl_SLICE_ACCUM_SUN :: GLenum+gl_SLICE_ACCUM_SUN = 0x85CC+gl_COLOR_TABLE_ALPHA_SIZE :: GLenum+gl_COLOR_TABLE_ALPHA_SIZE = 0x80DD+gl_TEXTURE_CUBE_MAP_POSITIVE_X_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x8515+gl_DRAW_FRAMEBUFFER_BINDING_ANGLE :: GLenum+gl_DRAW_FRAMEBUFFER_BINDING_ANGLE = 0x8CA6+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER :: GLenum+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x92C9+gl_SUBTRACT :: GLenum+gl_SUBTRACT = 0x84E7+gl_MAX_PROGRAM_IF_DEPTH_NV :: GLenum+gl_MAX_PROGRAM_IF_DEPTH_NV = 0x88F6+gl_T2F_C4F_N3F_V3F :: GLenum+gl_T2F_C4F_N3F_V3F = 0x2A2C+gl_ACTIVE_SUBROUTINE_UNIFORMS :: GLenum+gl_ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6+gl_EMBOSS_LIGHT_NV :: GLenum+gl_EMBOSS_LIGHT_NV = 0x855D+gl_POINT_SIZE_RANGE :: GLenum+gl_POINT_SIZE_RANGE = 0x0B12+gl_GEOMETRY_LINKED_OUTPUT_TYPE_EXT :: GLenum+gl_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = 0x8918+gl_CLAMP_TO_BORDER :: GLenum+gl_CLAMP_TO_BORDER = 0x812D+gl_TEXTURE_BUFFER_OFFSET_EXT :: GLenum+gl_TEXTURE_BUFFER_OFFSET_EXT = 0x919D+gl_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV :: GLenum+gl_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x90FC+gl_COMPRESSED_INTENSITY :: GLenum+gl_COMPRESSED_INTENSITY = 0x84EC+gl_MAX_PROGRAM_OUTPUT_VERTICES_NV :: GLenum+gl_MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x8C27+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES = 0x93E6+gl_MAX_PROGRAM_ATTRIBS_ARB :: GLenum+gl_MAX_PROGRAM_ATTRIBS_ARB = 0x88AD+gl_POST_COLOR_MATRIX_GREEN_SCALE_SGI :: GLenum+gl_POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5+gl_TEXTURE_3D_BINDING_EXT :: GLenum+gl_TEXTURE_3D_BINDING_EXT = 0x806A+gl_SHADER_STORAGE_BUFFER_START :: GLenum+gl_SHADER_STORAGE_BUFFER_START = 0x90D4+gl_MAP2_INDEX :: GLenum+gl_MAP2_INDEX = 0x0DB1+gl_CONSTANT_COLOR_EXT :: GLenum+gl_CONSTANT_COLOR_EXT = 0x8001+gl_RG32UI :: GLenum+gl_RG32UI = 0x823C+gl_BGRA :: GLenum+gl_BGRA = 0x80E1+gl_FRAGMENT_DEPTH_EXT :: GLenum+gl_FRAGMENT_DEPTH_EXT = 0x8452+gl_GENERATE_MIPMAP_HINT_SGIS :: GLenum+gl_GENERATE_MIPMAP_HINT_SGIS = 0x8192+gl_DIFFERENCE_NV :: GLenum+gl_DIFFERENCE_NV = 0x929E+gl_UNSIGNED_SHORT_1_15_REV_MESA :: GLenum+gl_UNSIGNED_SHORT_1_15_REV_MESA = 0x8754+gl_PROGRAM_BINARY_RETRIEVABLE_HINT :: GLenum+gl_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257+gl_RGBA32I :: GLenum+gl_RGBA32I = 0x8D82+gl_UNSIGNED_INT_8_8_8_8 :: GLenum+gl_UNSIGNED_INT_8_8_8_8 = 0x8035+gl_DOMAIN :: GLenum+gl_DOMAIN = 0x0A02+gl_COLOR_MATRIX :: GLenum+gl_COLOR_MATRIX = 0x80B1+gl_PROGRAM_NATIVE_ATTRIBS_ARB :: GLenum+gl_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE+gl_OP_ROUND_EXT :: GLenum+gl_OP_ROUND_EXT = 0x8790+gl_VIEW_CLASS_96_BITS :: GLenum+gl_VIEW_CLASS_96_BITS = 0x82C5+gl_TEXTURE_WRAP_R_OES :: GLenum+gl_TEXTURE_WRAP_R_OES = 0x8072+gl_VERTEX_ARRAY_TYPE :: GLenum+gl_VERTEX_ARRAY_TYPE = 0x807B+gl_VIDEO_BUFFER_INTERNAL_FORMAT_NV :: GLenum+gl_VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D+gl_PIXEL_MAP_R_TO_R_SIZE :: GLenum+gl_PIXEL_MAP_R_TO_R_SIZE = 0x0CB6+gl_UNSIGNED_NORMALIZED_ARB :: GLenum+gl_UNSIGNED_NORMALIZED_ARB = 0x8C17+gl_UNSIGNED_INT8_VEC3_NV :: GLenum+gl_UNSIGNED_INT8_VEC3_NV = 0x8FEE+gl_COMPRESSED_RGBA8_ETC2_EAC_OES :: GLenum+gl_COMPRESSED_RGBA8_ETC2_EAC_OES = 0x9278+gl_HI_BIAS_NV :: GLenum+gl_HI_BIAS_NV = 0x8714+gl_SECONDARY_COLOR_ARRAY_EXT :: GLenum+gl_SECONDARY_COLOR_ARRAY_EXT = 0x845E+gl_BUFFER_MAP_OFFSET :: GLenum+gl_BUFFER_MAP_OFFSET = 0x9121+gl_LUMINANCE4_ALPHA4_OES :: GLenum+gl_LUMINANCE4_ALPHA4_OES = 0x8043+gl_FORMAT_SUBSAMPLE_244_244_OML :: GLenum+gl_FORMAT_SUBSAMPLE_244_244_OML = 0x8983+gl_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA :: GLenum+gl_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA = 0x8BB2+gl_PLUS_CLAMPED_ALPHA_NV :: GLenum+gl_PLUS_CLAMPED_ALPHA_NV = 0x92B2+gl_COLOR_ATTACHMENT0_NV :: GLenum+gl_COLOR_ATTACHMENT0_NV = 0x8CE0+gl_COMPRESSED_RGB_S3TC_DXT1_EXT :: GLenum+gl_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0+gl_GEOMETRY_OUTPUT_TYPE :: GLenum+gl_GEOMETRY_OUTPUT_TYPE = 0x8918+gl_INTENSITY8_EXT :: GLenum+gl_INTENSITY8_EXT = 0x804B+gl_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x8517+gl_COMPRESSED_RED_GREEN_RGTC2_EXT :: GLenum+gl_COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD+gl_DEBUG_SOURCE_API_KHR :: GLenum+gl_DEBUG_SOURCE_API_KHR = 0x8246+gl_BLEND_PREMULTIPLIED_SRC_NV :: GLenum+gl_BLEND_PREMULTIPLIED_SRC_NV = 0x9280+gl_CLIENT_STORAGE_BIT :: GLenum+gl_CLIENT_STORAGE_BIT = 0x0200+gl_INTENSITY12_EXT :: GLenum+gl_INTENSITY12_EXT = 0x804C+gl_MATRIX_INDEX_ARRAY_STRIDE_OES :: GLenum+gl_MATRIX_INDEX_ARRAY_STRIDE_OES = 0x8848+gl_CURRENT_RASTER_SECONDARY_COLOR :: GLenum+gl_CURRENT_RASTER_SECONDARY_COLOR = 0x845F+gl_REPLACE :: GLenum+gl_REPLACE = 0x1E01+gl_LINEAR :: GLenum+gl_LINEAR = 0x2601+gl_COMBINER_INPUT_NV :: GLenum+gl_COMBINER_INPUT_NV = 0x8542+gl_TRANSFORM_FEEDBACK_VARYINGS :: GLenum+gl_TRANSFORM_FEEDBACK_VARYINGS = 0x8C83+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES = 0x93E2+gl_IMAGE_BINDING_ACCESS :: GLenum+gl_IMAGE_BINDING_ACCESS = 0x8F3E+gl_NUM_LOOPBACK_COMPONENTS_ATI :: GLenum+gl_NUM_LOOPBACK_COMPONENTS_ATI = 0x8974+gl_ARRAY_ELEMENT_LOCK_COUNT_EXT :: GLenum+gl_ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x81A9+gl_REPLACEMENT_CODE_ARRAY_POINTER_SUN :: GLenum+gl_REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x85C3+gl_TEXTURE_4DSIZE_SGIS :: GLenum+gl_TEXTURE_4DSIZE_SGIS = 0x8136+gl_COUNTER_RANGE_AMD :: GLenum+gl_COUNTER_RANGE_AMD = 0x8BC1+gl_RGB8_OES :: GLenum+gl_RGB8_OES = 0x8051+gl_ALPHA16F_EXT :: GLenum+gl_ALPHA16F_EXT = 0x881C+gl_C4F_N3F_V3F :: GLenum+gl_C4F_N3F_V3F = 0x2A26+gl_NEAREST_MIPMAP_LINEAR :: GLenum+gl_NEAREST_MIPMAP_LINEAR = 0x2702+gl_DEBUG_SEVERITY_LOW_KHR :: GLenum+gl_DEBUG_SEVERITY_LOW_KHR = 0x9148+gl_DISCARD_ATI :: GLenum+gl_DISCARD_ATI = 0x8763+gl_LOCAL_CONSTANT_DATATYPE_EXT :: GLenum+gl_LOCAL_CONSTANT_DATATYPE_EXT = 0x87ED+gl_MAX_GEOMETRY_INPUT_COMPONENTS_EXT :: GLenum+gl_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = 0x9123+gl_LOWER_LEFT :: GLenum+gl_LOWER_LEFT = 0x8CA1+gl_RENDERBUFFER_HEIGHT_OES :: GLenum+gl_RENDERBUFFER_HEIGHT_OES = 0x8D43+gl_SPRITE_MODE_SGIX :: GLenum+gl_SPRITE_MODE_SGIX = 0x8149+gl_REPLACEMENT_CODE_ARRAY_TYPE_SUN :: GLenum+gl_REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x85C1+gl_UNSIGNED_INT8_VEC2_NV :: GLenum+gl_UNSIGNED_INT8_VEC2_NV = 0x8FED+gl_NONE_OES :: GLenum+gl_NONE_OES = 0+gl_POINT_SIZE_MIN_ARB :: GLenum+gl_POINT_SIZE_MIN_ARB = 0x8126+gl_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV :: GLenum+gl_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = 0x8E5D+gl_RENDERBUFFER_DEPTH_SIZE_EXT :: GLenum+gl_RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54+gl_BUFFER_MAP_LENGTH :: GLenum+gl_BUFFER_MAP_LENGTH = 0x9120+gl_WRITE_ONLY :: GLenum+gl_WRITE_ONLY = 0x88B9+gl_NEAREST_CLIPMAP_NEAREST_SGIX :: GLenum+gl_NEAREST_CLIPMAP_NEAREST_SGIX = 0x844D+gl_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV :: GLenum+gl_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV = 0x10+gl_ALREADY_SIGNALED_APPLE :: GLenum+gl_ALREADY_SIGNALED_APPLE = 0x911A+gl_REPLICATE_BORDER :: GLenum+gl_REPLICATE_BORDER = 0x8153+gl_SUBPIXEL_BITS :: GLenum+gl_SUBPIXEL_BITS = 0x0D50+gl_ALPHA_MIN_SGIX :: GLenum+gl_ALPHA_MIN_SGIX = 0x8320+gl_BLUE_BIT_ATI :: GLenum+gl_BLUE_BIT_ATI = 0x00000004+gl_UNSIGNED_INT_IMAGE_2D_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_EXT = 0x9063+gl_TRANSFORM_FEEDBACK_VARYINGS_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x8C83+gl_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT :: GLenum+gl_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C73+gl_PIXEL_COUNTER_BITS_NV :: GLenum+gl_PIXEL_COUNTER_BITS_NV = 0x8864+gl_422_REV_AVERAGE_EXT :: GLenum+gl_422_REV_AVERAGE_EXT = 0x80CF+gl_TEXTURE_RESIDENT_EXT :: GLenum+gl_TEXTURE_RESIDENT_EXT = 0x8067+gl_STENCIL_WRITEMASK :: GLenum+gl_STENCIL_WRITEMASK = 0x0B98+gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES :: GLenum+gl_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43+gl_FLOAT_VEC3_ARB :: GLenum+gl_FLOAT_VEC3_ARB = 0x8B51+gl_COMPRESSED_SRGB_ALPHA_BPTC_UNORM :: GLenum+gl_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x8E8D+gl_DYNAMIC_STORAGE_BIT :: GLenum+gl_DYNAMIC_STORAGE_BIT = 0x0100+gl_DRAW_FRAMEBUFFER_BINDING_APPLE :: GLenum+gl_DRAW_FRAMEBUFFER_BINDING_APPLE = 0x8CA6+gl_CLIP_PLANE4_IMG :: GLenum+gl_CLIP_PLANE4_IMG = 0x3004+gl_CON_26_ATI :: GLenum+gl_CON_26_ATI = 0x895B+gl_COMPRESSED_SIGNED_R11_EAC_OES :: GLenum+gl_COMPRESSED_SIGNED_R11_EAC_OES = 0x9271+gl_LINES_ADJACENCY_EXT :: GLenum+gl_LINES_ADJACENCY_EXT = 0x000A+gl_AUTO_GENERATE_MIPMAP :: GLenum+gl_AUTO_GENERATE_MIPMAP = 0x8295+gl_OP_EXP_BASE_2_EXT :: GLenum+gl_OP_EXP_BASE_2_EXT = 0x8791+gl_ATTRIB_STACK_DEPTH :: GLenum+gl_ATTRIB_STACK_DEPTH = 0x0BB0+gl_ALPHA32F_EXT :: GLenum+gl_ALPHA32F_EXT = 0x8816+gl_KEEP :: GLenum+gl_KEEP = 0x1E00+gl_TEXTURE_FILTER4_SIZE_SGIS :: GLenum+gl_TEXTURE_FILTER4_SIZE_SGIS = 0x8147+gl_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x906A+gl_INT_VEC3 :: GLenum+gl_INT_VEC3 = 0x8B54+gl_MATRIX_MODE :: GLenum+gl_MATRIX_MODE = 0x0BA0+gl_UNSIGNED_NORMALIZED :: GLenum+gl_UNSIGNED_NORMALIZED = 0x8C17+gl_DEBUG_PRINT_MESA :: GLenum+gl_DEBUG_PRINT_MESA = 0x875A+gl_DST_OUT_NV :: GLenum+gl_DST_OUT_NV = 0x928D+gl_CLEAR_BUFFER :: GLenum+gl_CLEAR_BUFFER = 0x82B4+gl_COMBINER_SCALE_NV :: GLenum+gl_COMBINER_SCALE_NV = 0x8548+gl_WRITE_ONLY_OES :: GLenum+gl_WRITE_ONLY_OES = 0x88B9+gl_422_AVERAGE_EXT :: GLenum+gl_422_AVERAGE_EXT = 0x80CE+gl_COLOR_INDEX12_EXT :: GLenum+gl_COLOR_INDEX12_EXT = 0x80E6+gl_COLOR_BUFFER_BIT0_QCOM :: GLenum+gl_COLOR_BUFFER_BIT0_QCOM = 0x00000001+gl_CAVEAT_SUPPORT :: GLenum+gl_CAVEAT_SUPPORT = 0x82B8+gl_BLUE_INTEGER :: GLenum+gl_BLUE_INTEGER = 0x8D96+gl_IUI_N3F_V2F_EXT :: GLenum+gl_IUI_N3F_V2F_EXT = 0x81AF+gl_VERTEX_DATA_HINT_PGI :: GLenum+gl_VERTEX_DATA_HINT_PGI = 0x1A22A+gl_REG_13_ATI :: GLenum+gl_REG_13_ATI = 0x892E+gl_NEGATIVE_ONE_EXT :: GLenum+gl_NEGATIVE_ONE_EXT = 0x87DF+gl_CON_16_ATI :: GLenum+gl_CON_16_ATI = 0x8951+gl_TEXTURE_EXTERNAL_OES :: GLenum+gl_TEXTURE_EXTERNAL_OES = 0x8D65+gl_SHADER_TYPE :: GLenum+gl_SHADER_TYPE = 0x8B4F+gl_OVERLAY_KHR :: GLenum+gl_OVERLAY_KHR = 0x9296+gl_LUMINANCE6_ALPHA2_EXT :: GLenum+gl_LUMINANCE6_ALPHA2_EXT = 0x8044+gl_COLOR_TABLE_SGI :: GLenum+gl_COLOR_TABLE_SGI = 0x80D0+gl_TEXTURE_STENCIL_SIZE_EXT :: GLenum+gl_TEXTURE_STENCIL_SIZE_EXT = 0x88F1+gl_NEAREST :: GLenum+gl_NEAREST = 0x2600+gl_RGB8I :: GLenum+gl_RGB8I = 0x8D8F+gl_TEXTURE_SPARSE_ARB :: GLenum+gl_TEXTURE_SPARSE_ARB = 0x91A6+gl_MATRIX9_ARB :: GLenum+gl_MATRIX9_ARB = 0x88C9+gl_TEXTURE_TARGET :: GLenum+gl_TEXTURE_TARGET = 0x1006+gl_SECONDARY_COLOR_ARRAY_TYPE_EXT :: GLenum+gl_SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x845B+gl_RENDERER :: GLenum+gl_RENDERER = 0x1F01+gl_TEXTURE_BINDING_BUFFER :: GLenum+gl_TEXTURE_BINDING_BUFFER = 0x8C2C+gl_INT_VEC3_ARB :: GLenum+gl_INT_VEC3_ARB = 0x8B54+gl_MATRIX12_ARB :: GLenum+gl_MATRIX12_ARB = 0x88CC+gl_VERTEX_ATTRIB_ARRAY_ENABLED :: GLenum+gl_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622+gl_RENDERBUFFER_SAMPLES_NV :: GLenum+gl_RENDERBUFFER_SAMPLES_NV = 0x8CAB+gl_COLOR_ATTACHMENT1_EXT :: GLenum+gl_COLOR_ATTACHMENT1_EXT = 0x8CE1+gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211+gl_LINEAR_DETAIL_SGIS :: GLenum+gl_LINEAR_DETAIL_SGIS = 0x8097+gl_CURRENT_RASTER_POSITION_VALID :: GLenum+gl_CURRENT_RASTER_POSITION_VALID = 0x0B08+gl_LINEAR_DETAIL_COLOR_SGIS :: GLenum+gl_LINEAR_DETAIL_COLOR_SGIS = 0x8099+gl_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT :: GLenum+gl_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT = 0x8A54+gl_POINT_SIZE_MIN_EXT :: GLenum+gl_POINT_SIZE_MIN_EXT = 0x8126+gl_GPU_DISJOINT_EXT :: GLenum+gl_GPU_DISJOINT_EXT = 0x8FBB+gl_LIGHT_MODEL_COLOR_CONTROL :: GLenum+gl_LIGHT_MODEL_COLOR_CONTROL = 0x81F8+gl_MAX_TESS_PATCH_COMPONENTS :: GLenum+gl_MAX_TESS_PATCH_COMPONENTS = 0x8E84+gl_CURRENT_PALETTE_MATRIX_OES :: GLenum+gl_CURRENT_PALETTE_MATRIX_OES = 0x8843+gl_SAMPLES_SGIS :: GLenum+gl_SAMPLES_SGIS = 0x80A9+gl_FUNC_REVERSE_SUBTRACT_OES :: GLenum+gl_FUNC_REVERSE_SUBTRACT_OES = 0x800B+gl_TEXTURE13_ARB :: GLenum+gl_TEXTURE13_ARB = 0x84CD+gl_SMOOTH_CUBIC_CURVE_TO_NV :: GLenum+gl_SMOOTH_CUBIC_CURVE_TO_NV = 0x10+gl_COMPRESSED_RGBA_ASTC_3x3x3_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_3x3x3_OES = 0x93C0+gl_MODELVIEW15_ARB :: GLenum+gl_MODELVIEW15_ARB = 0x872F+gl_EYE_PLANE_ABSOLUTE_NV :: GLenum+gl_EYE_PLANE_ABSOLUTE_NV = 0x855C+gl_READ_FRAMEBUFFER_BINDING_NV :: GLenum+gl_READ_FRAMEBUFFER_BINDING_NV = 0x8CAA+gl_RENDERBUFFER_RED_SIZE :: GLenum+gl_RENDERBUFFER_RED_SIZE = 0x8D50+gl_PIXEL_PACK_BUFFER_BINDING_EXT :: GLenum+gl_PIXEL_PACK_BUFFER_BINDING_EXT = 0x88ED+gl_MAX_RENDERBUFFER_SIZE :: GLenum+gl_MAX_RENDERBUFFER_SIZE = 0x84E8+gl_DOUBLE_MAT4_EXT :: GLenum+gl_DOUBLE_MAT4_EXT = 0x8F48+gl_COMPRESSED_R11_EAC :: GLenum+gl_COMPRESSED_R11_EAC = 0x9270+gl_INT_IMAGE_2D_RECT :: GLenum+gl_INT_IMAGE_2D_RECT = 0x905A+gl_MAD_ATI :: GLenum+gl_MAD_ATI = 0x8968+gl_IMAGE_CLASS_4_X_32 :: GLenum+gl_IMAGE_CLASS_4_X_32 = 0x82B9+gl_VIDEO_COLOR_CONVERSION_OFFSET_NV :: GLenum+gl_VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C+gl_BOOL_VEC4 :: GLenum+gl_BOOL_VEC4 = 0x8B59+gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D+gl_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES :: GLenum+gl_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 0x8E5D+gl_HISTOGRAM_FORMAT_EXT :: GLenum+gl_HISTOGRAM_FORMAT_EXT = 0x8027+gl_UNSIGNED_INT_8_8_8_8_REV_EXT :: GLenum+gl_UNSIGNED_INT_8_8_8_8_REV_EXT = 0x8367+gl_R1UI_C3F_V3F_SUN :: GLenum+gl_R1UI_C3F_V3F_SUN = 0x85C6+gl_SAMPLER_1D_ARRAY_SHADOW_EXT :: GLenum+gl_SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3+gl_TEXTURE_BINDING_2D_ARRAY :: GLenum+gl_TEXTURE_BINDING_2D_ARRAY = 0x8C1D+gl_TEXTURE_RANGE_POINTER_APPLE :: GLenum+gl_TEXTURE_RANGE_POINTER_APPLE = 0x85B8+gl_SMALL_CCW_ARC_TO_NV :: GLenum+gl_SMALL_CCW_ARC_TO_NV = 0x12+gl_SHADER_COMPILER :: GLenum+gl_SHADER_COMPILER = 0x8DFA+gl_DEPTH_COMPONENT24_ARB :: GLenum+gl_DEPTH_COMPONENT24_ARB = 0x81A6+gl_COLOR_ATTACHMENT14_NV :: GLenum+gl_COLOR_ATTACHMENT14_NV = 0x8CEE+gl_TIME_ELAPSED :: GLenum+gl_TIME_ELAPSED = 0x88BF+gl_FRAMEBUFFER_DEFAULT_LAYERS_EXT :: GLenum+gl_FRAMEBUFFER_DEFAULT_LAYERS_EXT = 0x9312+gl_MATRIX11_ARB :: GLenum+gl_MATRIX11_ARB = 0x88CB+gl_XOR :: GLenum+gl_XOR = 0x1506+gl_HSL_SATURATION_KHR :: GLenum+gl_HSL_SATURATION_KHR = 0x92AE+gl_R1UI_T2F_V3F_SUN :: GLenum+gl_R1UI_T2F_V3F_SUN = 0x85C9+gl_COMPUTE_WORK_GROUP_SIZE :: GLenum+gl_COMPUTE_WORK_GROUP_SIZE = 0x8267+gl_BLEND_EQUATION_EXT :: GLenum+gl_BLEND_EQUATION_EXT = 0x8009+gl_SAMPLER :: GLenum+gl_SAMPLER = 0x82E6+gl_NUM_FRAGMENT_REGISTERS_ATI :: GLenum+gl_NUM_FRAGMENT_REGISTERS_ATI = 0x896E+gl_REG_5_ATI :: GLenum+gl_REG_5_ATI = 0x8926+gl_DSDT8_MAG8_INTENSITY8_NV :: GLenum+gl_DSDT8_MAG8_INTENSITY8_NV = 0x870B+gl_PIXEL_MAP_S_TO_S_SIZE :: GLenum+gl_PIXEL_MAP_S_TO_S_SIZE = 0x0CB1+gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7+gl_OR_REVERSE :: GLenum+gl_OR_REVERSE = 0x150B+gl_QUERY_BUFFER_BARRIER_BIT :: GLenum+gl_QUERY_BUFFER_BARRIER_BIT = 0x00008000+gl_TRANSFORM_FEEDBACK_BUFFER_BINDING :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F+gl_SAMPLER_1D :: GLenum+gl_SAMPLER_1D = 0x8B5D+gl_COLOR_TABLE_INTENSITY_SIZE :: GLenum+gl_COLOR_TABLE_INTENSITY_SIZE = 0x80DF+gl_TRIANGLE_FAN :: GLenum+gl_TRIANGLE_FAN = 0x0006+gl_POINT_SIZE_MAX_SGIS :: GLenum+gl_POINT_SIZE_MAX_SGIS = 0x8127+gl_ELEMENT_ARRAY_POINTER_ATI :: GLenum+gl_ELEMENT_ARRAY_POINTER_ATI = 0x876A+gl_INT_IMAGE_1D_EXT :: GLenum+gl_INT_IMAGE_1D_EXT = 0x9057+gl_CONVOLUTION_FILTER_SCALE_EXT :: GLenum+gl_CONVOLUTION_FILTER_SCALE_EXT = 0x8014+gl_EVAL_VERTEX_ATTRIB8_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB8_NV = 0x86CE+gl_DYNAMIC_COPY_ARB :: GLenum+gl_DYNAMIC_COPY_ARB = 0x88EA+gl_REG_12_ATI :: GLenum+gl_REG_12_ATI = 0x892D+gl_SIGNED_NORMALIZED :: GLenum+gl_SIGNED_NORMALIZED = 0x8F9C+gl_REG_8_ATI :: GLenum+gl_REG_8_ATI = 0x8929+gl_SAMPLE_COVERAGE_ARB :: GLenum+gl_SAMPLE_COVERAGE_ARB = 0x80A0+gl_ALLOW_DRAW_MEM_HINT_PGI :: GLenum+gl_ALLOW_DRAW_MEM_HINT_PGI = 0x1A211+gl_INTENSITY16F_ARB :: GLenum+gl_INTENSITY16F_ARB = 0x881D+gl_PATH_FORMAT_PS_NV :: GLenum+gl_PATH_FORMAT_PS_NV = 0x9071+gl_TEXTURE_FREE_MEMORY_ATI :: GLenum+gl_TEXTURE_FREE_MEMORY_ATI = 0x87FC+gl_SYNC_FENCE :: GLenum+gl_SYNC_FENCE = 0x9116+gl_WRITE_ONLY_ARB :: GLenum+gl_WRITE_ONLY_ARB = 0x88B9+gl_INVERT :: GLenum+gl_INVERT = 0x150A+gl_TRANSLATE_Y_NV :: GLenum+gl_TRANSLATE_Y_NV = 0x908F+gl_SAMPLER_3D :: GLenum+gl_SAMPLER_3D = 0x8B5F+gl_LINE_STRIP_ADJACENCY :: GLenum+gl_LINE_STRIP_ADJACENCY = 0x000B+gl_OPERAND2_RGB_EXT :: GLenum+gl_OPERAND2_RGB_EXT = 0x8592+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134+gl_COLOR_ARRAY_ADDRESS_NV :: GLenum+gl_COLOR_ARRAY_ADDRESS_NV = 0x8F23+gl_POST_CONVOLUTION_BLUE_SCALE_EXT :: GLenum+gl_POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E+gl_HIGH_FLOAT :: GLenum+gl_HIGH_FLOAT = 0x8DF2+gl_TESS_GEN_MODE_EXT :: GLenum+gl_TESS_GEN_MODE_EXT = 0x8E76+gl_DOT_PRODUCT_TEXTURE_RECTANGLE_NV :: GLenum+gl_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x864E+gl_MAX_LABEL_LENGTH :: GLenum+gl_MAX_LABEL_LENGTH = 0x82E8+gl_QUERY_BY_REGION_NO_WAIT :: GLenum+gl_QUERY_BY_REGION_NO_WAIT = 0x8E16+gl_OP_RECIP_EXT :: GLenum+gl_OP_RECIP_EXT = 0x8794+gl_PROXY_TEXTURE_2D_ARRAY :: GLenum+gl_PROXY_TEXTURE_2D_ARRAY = 0x8C1B+gl_COMPRESSED_RGBA_FXT1_3DFX :: GLenum+gl_COMPRESSED_RGBA_FXT1_3DFX = 0x86B1+gl_PRIMITIVES_GENERATED :: GLenum+gl_PRIMITIVES_GENERATED = 0x8C87+gl_TEXTURE26_ARB :: GLenum+gl_TEXTURE26_ARB = 0x84DA+gl_TESS_EVALUATION_TEXTURE :: GLenum+gl_TESS_EVALUATION_TEXTURE = 0x829D+gl_TEXTURE1 :: GLenum+gl_TEXTURE1 = 0x84C1+gl_TRANSFORM_FEEDBACK_RECORD_NV :: GLenum+gl_TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86+gl_DRAW_FRAMEBUFFER_NV :: GLenum+gl_DRAW_FRAMEBUFFER_NV = 0x8CA9+gl_MODELVIEW8_ARB :: GLenum+gl_MODELVIEW8_ARB = 0x8728+gl_UNSIGNED_INT_SAMPLER_BUFFER :: GLenum+gl_UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8+gl_CONVOLUTION_1D :: GLenum+gl_CONVOLUTION_1D = 0x8010+gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23+gl_SAMPLER_1D_ARRAY :: GLenum+gl_SAMPLER_1D_ARRAY = 0x8DC0+gl_TRANSFORM_FEEDBACK_BINDING :: GLenum+gl_TRANSFORM_FEEDBACK_BINDING = 0x8E25+gl_LIGHTING_BIT :: GLenum+gl_LIGHTING_BIT = 0x00000040+gl_R1UI_C4F_N3F_V3F_SUN :: GLenum+gl_R1UI_C4F_N3F_V3F_SUN = 0x85C8+gl_TEXTURE_RED_SIZE_EXT :: GLenum+gl_TEXTURE_RED_SIZE_EXT = 0x805C+gl_VERTEX_ARRAY_KHR :: GLenum+gl_VERTEX_ARRAY_KHR = 0x8074+gl_ALPHA_BITS :: GLenum+gl_ALPHA_BITS = 0x0D55+gl_MAX_VERTEX_SHADER_INVARIANTS_EXT :: GLenum+gl_MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x87C7+gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31+gl_SAMPLE_MASK_INVERT_EXT :: GLenum+gl_SAMPLE_MASK_INVERT_EXT = 0x80AB+gl_TRANSPOSE_PROGRAM_MATRIX_EXT :: GLenum+gl_TRANSPOSE_PROGRAM_MATRIX_EXT = 0x8E2E+gl_ABGR_EXT :: GLenum+gl_ABGR_EXT = 0x8000+gl_MULTISAMPLE_BIT_3DFX :: GLenum+gl_MULTISAMPLE_BIT_3DFX = 0x20000000+gl_MATRIX0_NV :: GLenum+gl_MATRIX0_NV = 0x8630+gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210+gl_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG :: GLenum+gl_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG = 0x93F0+gl_RGB9_E5 :: GLenum+gl_RGB9_E5 = 0x8C3D+gl_IMAGE_2D_MULTISAMPLE_ARRAY :: GLenum+gl_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9056+gl_FRAMEBUFFER_ATTACHMENT_RED_SIZE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212+gl_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F+gl_GEOMETRY_PROGRAM_NV :: GLenum+gl_GEOMETRY_PROGRAM_NV = 0x8C26+gl_RGB10_EXT :: GLenum+gl_RGB10_EXT = 0x8052+gl_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT :: GLenum+gl_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x8E8F+gl_ALWAYS_SOFT_HINT_PGI :: GLenum+gl_ALWAYS_SOFT_HINT_PGI = 0x1A20D+gl_WEIGHT_ARRAY_BUFFER_BINDING :: GLenum+gl_WEIGHT_ARRAY_BUFFER_BINDING = 0x889E+gl_BLEND_DST_ALPHA_OES :: GLenum+gl_BLEND_DST_ALPHA_OES = 0x80CA+gl_UNIFORM_BUFFER_BINDING_EXT :: GLenum+gl_UNIFORM_BUFFER_BINDING_EXT = 0x8DEF+gl_CONTINUOUS_AMD :: GLenum+gl_CONTINUOUS_AMD = 0x9007+gl_STENCIL_BUFFER_BIT4_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT4_QCOM = 0x00100000+gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV :: GLenum+gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88+gl_TESS_EVALUATION_SHADER_BIT :: GLenum+gl_TESS_EVALUATION_SHADER_BIT = 0x00000010+gl_TEXTURE_COORD_ARRAY_EXT :: GLenum+gl_TEXTURE_COORD_ARRAY_EXT = 0x8078+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET :: GLenum+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F+gl_PROGRAM_INSTRUCTIONS_ARB :: GLenum+gl_PROGRAM_INSTRUCTIONS_ARB = 0x88A0+gl_PROXY_TEXTURE_3D :: GLenum+gl_PROXY_TEXTURE_3D = 0x8070+gl_CLIP_PLANE0 :: GLenum+gl_CLIP_PLANE0 = 0x3000+gl_CURRENT_QUERY_EXT :: GLenum+gl_CURRENT_QUERY_EXT = 0x8865+gl_T4F_C4F_N3F_V4F :: GLenum+gl_T4F_C4F_N3F_V4F = 0x2A2D+gl_ADD :: GLenum+gl_ADD = 0x0104+gl_STENCIL_EXT :: GLenum+gl_STENCIL_EXT = 0x1802+gl_TEXTURE_BLUE_TYPE :: GLenum+gl_TEXTURE_BLUE_TYPE = 0x8C12+gl_OUTPUT_TEXTURE_COORD8_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD8_EXT = 0x87A5+gl_OBJECT_TYPE_ARB :: GLenum+gl_OBJECT_TYPE_ARB = 0x8B4E+gl_RESET_NOTIFICATION_STRATEGY :: GLenum+gl_RESET_NOTIFICATION_STRATEGY = 0x8256+gl_UNSIGNED_INT_VEC2_EXT :: GLenum+gl_UNSIGNED_INT_VEC2_EXT = 0x8DC6+gl_DRAW_BUFFER6_NV :: GLenum+gl_DRAW_BUFFER6_NV = 0x882B+gl_ASYNC_DRAW_PIXELS_SGIX :: GLenum+gl_ASYNC_DRAW_PIXELS_SGIX = 0x835D+gl_INTERNALFORMAT_GREEN_SIZE :: GLenum+gl_INTERNALFORMAT_GREEN_SIZE = 0x8272+gl_TEXTURE_GREEN_SIZE :: GLenum+gl_TEXTURE_GREEN_SIZE = 0x805D+gl_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL :: GLenum+gl_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = 0x94FE+gl_VIRTUAL_PAGE_SIZE_Y_AMD :: GLenum+gl_VIRTUAL_PAGE_SIZE_Y_AMD = 0x9196+gl_OP_MUL_EXT :: GLenum+gl_OP_MUL_EXT = 0x8786+gl_NORMAL_MAP :: GLenum+gl_NORMAL_MAP = 0x8511+gl_ALPHA16_EXT :: GLenum+gl_ALPHA16_EXT = 0x803E+gl_POINT_SIZE :: GLenum+gl_POINT_SIZE = 0x0B11+gl_INTERNALFORMAT_SUPPORTED :: GLenum+gl_INTERNALFORMAT_SUPPORTED = 0x826F+gl_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7+gl_DEBUG_SEVERITY_HIGH_ARB :: GLenum+gl_DEBUG_SEVERITY_HIGH_ARB = 0x9146+gl_TEXTURE_MAX_LEVEL_SGIS :: GLenum+gl_TEXTURE_MAX_LEVEL_SGIS = 0x813D+gl_SHADING_LANGUAGE_VERSION_ARB :: GLenum+gl_SHADING_LANGUAGE_VERSION_ARB = 0x8B8C+gl_STANDARD_FONT_FORMAT_NV :: GLenum+gl_STANDARD_FONT_FORMAT_NV = 0x936C+gl_VERTEX_WEIGHT_ARRAY_SIZE_EXT :: GLenum+gl_VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x850D+gl_IR_INSTRUMENT1_SGIX :: GLenum+gl_IR_INSTRUMENT1_SGIX = 0x817F+gl_SIGNED_HILO8_NV :: GLenum+gl_SIGNED_HILO8_NV = 0x885F+gl_RENDERBUFFER_GREEN_SIZE_OES :: GLenum+gl_RENDERBUFFER_GREEN_SIZE_OES = 0x8D51+gl_REG_1_ATI :: GLenum+gl_REG_1_ATI = 0x8922+gl_CLAMP_TO_EDGE :: GLenum+gl_CLAMP_TO_EDGE = 0x812F+gl_GEOMETRY_SHADER_BIT :: GLenum+gl_GEOMETRY_SHADER_BIT = 0x00000004+gl_MODELVIEW7_ARB :: GLenum+gl_MODELVIEW7_ARB = 0x8727+gl_BUFFER_MAPPED_ARB :: GLenum+gl_BUFFER_MAPPED_ARB = 0x88BC+gl_DRAW_BUFFER12_EXT :: GLenum+gl_DRAW_BUFFER12_EXT = 0x8831+gl_RGB565_OES :: GLenum+gl_RGB565_OES = 0x8D62+gl_SHORT :: GLenum+gl_SHORT = 0x1402+gl_STENCIL_BACK_FAIL_ATI :: GLenum+gl_STENCIL_BACK_FAIL_ATI = 0x8801+gl_UNSIGNED_INT_IMAGE_2D_RECT_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x9065+gl_PATH_MAX_PROJECTION_STACK_DEPTH_NV :: GLenum+gl_PATH_MAX_PROJECTION_STACK_DEPTH_NV = 0x0D38+gl_CON_31_ATI :: GLenum+gl_CON_31_ATI = 0x8960+gl_RGB5 :: GLenum+gl_RGB5 = 0x8050+gl_SAMPLER_2D_RECT :: GLenum+gl_SAMPLER_2D_RECT = 0x8B63+gl_COMPRESSED_RGBA_ASTC_5x4x4_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_5x4x4_OES = 0x93C4+gl_PASS_THROUGH_TOKEN :: GLenum+gl_PASS_THROUGH_TOKEN = 0x0700+gl_RGBA_FLOAT32_ATI :: GLenum+gl_RGBA_FLOAT32_ATI = 0x8814+gl_TEXTURE_COLOR_WRITEMASK_SGIS :: GLenum+gl_TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF+gl_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F+gl_OUTPUT_TEXTURE_COORD23_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD23_EXT = 0x87B4+gl_YCBYCR8_422_NV :: GLenum+gl_YCBYCR8_422_NV = 0x9031+gl_SRC_NV :: GLenum+gl_SRC_NV = 0x9286+gl_MAX_EXT :: GLenum+gl_MAX_EXT = 0x8008+gl_UNPACK_COMPRESSED_BLOCK_DEPTH :: GLenum+gl_UNPACK_COMPRESSED_BLOCK_DEPTH = 0x9129+gl_UNSIGNED_SHORT_5_5_5_1_EXT :: GLenum+gl_UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034+gl_IMAGE_3D :: GLenum+gl_IMAGE_3D = 0x904E+gl_DEPTH_BUFFER_BIT0_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT0_QCOM = 0x00000100+gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A+gl_DECR_WRAP_OES :: GLenum+gl_DECR_WRAP_OES = 0x8508+gl_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV :: GLenum+gl_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A+gl_SPARSE_STORAGE_BIT_ARB :: GLenum+gl_SPARSE_STORAGE_BIT_ARB = 0x0400+gl_LAST_VIDEO_CAPTURE_STATUS_NV :: GLenum+gl_LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027+gl_LAST_VERTEX_CONVENTION :: GLenum+gl_LAST_VERTEX_CONVENTION = 0x8E4E+gl_IDENTITY_NV :: GLenum+gl_IDENTITY_NV = 0x862A+gl_RETAINED_APPLE :: GLenum+gl_RETAINED_APPLE = 0x8A1B+gl_FLOAT_RGB32_NV :: GLenum+gl_FLOAT_RGB32_NV = 0x8889+gl_DRAW_BUFFER15_ARB :: GLenum+gl_DRAW_BUFFER15_ARB = 0x8834+gl_COLOR_EXT :: GLenum+gl_COLOR_EXT = 0x1800+gl_WEIGHT_ARRAY_TYPE_OES :: GLenum+gl_WEIGHT_ARRAY_TYPE_OES = 0x86A9+gl_DETAIL_TEXTURE_2D_BINDING_SGIS :: GLenum+gl_DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096+gl_BGRA8_EXT :: GLenum+gl_BGRA8_EXT = 0x93A1+gl_T2F_IUI_V3F_EXT :: GLenum+gl_T2F_IUI_V3F_EXT = 0x81B2+gl_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x92CD+gl_VERTEX_ARRAY_LIST_IBM :: GLenum+gl_VERTEX_ARRAY_LIST_IBM = 103070+gl_INDEX_ARRAY_STRIDE_EXT :: GLenum+gl_INDEX_ARRAY_STRIDE_EXT = 0x8086+gl_SCALE_BY_ONE_HALF_NV :: GLenum+gl_SCALE_BY_ONE_HALF_NV = 0x8540+gl_PROXY_TEXTURE_4D_SGIS :: GLenum+gl_PROXY_TEXTURE_4D_SGIS = 0x8135+gl_HALF_FLOAT :: GLenum+gl_HALF_FLOAT = 0x140B+gl_FIELD_UPPER_NV :: GLenum+gl_FIELD_UPPER_NV = 0x9022+gl_OCCLUSION_QUERY_EVENT_MASK_AMD :: GLenum+gl_OCCLUSION_QUERY_EVENT_MASK_AMD = 0x874F+gl_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV :: GLenum+gl_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5B+gl_VERTEX_ATTRIB_ARRAY4_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY4_NV = 0x8654+gl_CONVOLUTION_BORDER_COLOR_HP :: GLenum+gl_CONVOLUTION_BORDER_COLOR_HP = 0x8154+gl_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT :: GLenum+gl_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x8A52+gl_MODULATE :: GLenum+gl_MODULATE = 0x2100+gl_NO_RESET_NOTIFICATION_KHR :: GLenum+gl_NO_RESET_NOTIFICATION_KHR = 0x8261+gl_CURRENT_INDEX :: GLenum+gl_CURRENT_INDEX = 0x0B01+gl_RED_MAX_CLAMP_INGR :: GLenum+gl_RED_MAX_CLAMP_INGR = 0x8564+gl_SAMPLE_ALPHA_TO_MASK_EXT :: GLenum+gl_SAMPLE_ALPHA_TO_MASK_EXT = 0x809E+gl_DEBUG_CATEGORY_DEPRECATION_AMD :: GLenum+gl_DEBUG_CATEGORY_DEPRECATION_AMD = 0x914B+gl_EXP2 :: GLenum+gl_EXP2 = 0x0801+gl_HISTOGRAM :: GLenum+gl_HISTOGRAM = 0x8024+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93DB+gl_VERTEX_WEIGHT_ARRAY_POINTER_EXT :: GLenum+gl_VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x8510+gl_READ_FRAMEBUFFER_BINDING_APPLE :: GLenum+gl_READ_FRAMEBUFFER_BINDING_APPLE = 0x8CAA+gl_COLOR_ATTACHMENT9 :: GLenum+gl_COLOR_ATTACHMENT9 = 0x8CE9+gl_PROXY_TEXTURE_CUBE_MAP_ARB :: GLenum+gl_PROXY_TEXTURE_CUBE_MAP_ARB = 0x851B+gl_SIGNED_RGB8_NV :: GLenum+gl_SIGNED_RGB8_NV = 0x86FF+gl_TEXTURE_INTENSITY_SIZE :: GLenum+gl_TEXTURE_INTENSITY_SIZE = 0x8061+gl_TEXTURE_MAX_CLAMP_S_SGIX :: GLenum+gl_TEXTURE_MAX_CLAMP_S_SGIX = 0x8369+gl_PATH_TRANSPOSE_PROJECTION_MATRIX_NV :: GLenum+gl_PATH_TRANSPOSE_PROJECTION_MATRIX_NV = 0x84E4+gl_BOUNDING_BOX_OF_BOUNDING_BOXES_NV :: GLenum+gl_BOUNDING_BOX_OF_BOUNDING_BOXES_NV = 0x909C+gl_TEXTURE_MAX_LOD_SGIS :: GLenum+gl_TEXTURE_MAX_LOD_SGIS = 0x813B+gl_LUMINANCE :: GLenum+gl_LUMINANCE = 0x1909+gl_FOG_COORD_ARRAY_BUFFER_BINDING :: GLenum+gl_FOG_COORD_ARRAY_BUFFER_BINDING = 0x889D+gl_OFFSET_TEXTURE_2D_BIAS_NV :: GLenum+gl_OFFSET_TEXTURE_2D_BIAS_NV = 0x86E3+gl_FEEDBACK :: GLenum+gl_FEEDBACK = 0x1C01+gl_MAGNITUDE_BIAS_NV :: GLenum+gl_MAGNITUDE_BIAS_NV = 0x8718+gl_POST_CONVOLUTION_ALPHA_SCALE :: GLenum+gl_POST_CONVOLUTION_ALPHA_SCALE = 0x801F+gl_PATH_TERMINAL_END_CAP_NV :: GLenum+gl_PATH_TERMINAL_END_CAP_NV = 0x9078+gl_GLYPH_HEIGHT_BIT_NV :: GLenum+gl_GLYPH_HEIGHT_BIT_NV = 0x02+gl_TEXTURE_STORAGE_HINT_APPLE :: GLenum+gl_TEXTURE_STORAGE_HINT_APPLE = 0x85BC+gl_MATRIX2_NV :: GLenum+gl_MATRIX2_NV = 0x8632+gl_RGB16I :: GLenum+gl_RGB16I = 0x8D89+gl_NUM_SHADER_BINARY_FORMATS :: GLenum+gl_NUM_SHADER_BINARY_FORMATS = 0x8DF9+gl_MULTISAMPLE_BUFFER_BIT7_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT7_QCOM = 0x80000000+gl_SAMPLE_ALPHA_TO_ONE :: GLenum+gl_SAMPLE_ALPHA_TO_ONE = 0x809F+gl_CON_11_ATI :: GLenum+gl_CON_11_ATI = 0x894C+gl_MAP2_TEXTURE_COORD_1 :: GLenum+gl_MAP2_TEXTURE_COORD_1 = 0x0DB3+gl_DRAW_BUFFER14_ARB :: GLenum+gl_DRAW_BUFFER14_ARB = 0x8833+gl_SHARPEN_TEXTURE_FUNC_POINTS_SGIS :: GLenum+gl_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0+gl_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7+gl_FLOAT_RGBA_MODE_NV :: GLenum+gl_FLOAT_RGBA_MODE_NV = 0x888E+gl_VERTEX_ATTRIB_ARRAY9_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY9_NV = 0x8659+gl_ALPHA4 :: GLenum+gl_ALPHA4 = 0x803B+gl_EVAL_VERTEX_ATTRIB9_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB9_NV = 0x86CF+gl_VARIANT_ARRAY_POINTER_EXT :: GLenum+gl_VARIANT_ARRAY_POINTER_EXT = 0x87E9+gl_INDEX_TEST_EXT :: GLenum+gl_INDEX_TEST_EXT = 0x81B5+gl_MAX_RENDERBUFFER_SIZE_EXT :: GLenum+gl_MAX_RENDERBUFFER_SIZE_EXT = 0x84E8+gl_MAP1_GRID_SEGMENTS :: GLenum+gl_MAP1_GRID_SEGMENTS = 0x0DD1+gl_DETAIL_TEXTURE_MODE_SGIS :: GLenum+gl_DETAIL_TEXTURE_MODE_SGIS = 0x809B+gl_LINEARBURN_NV :: GLenum+gl_LINEARBURN_NV = 0x92A5+gl_SOURCE2_ALPHA :: GLenum+gl_SOURCE2_ALPHA = 0x858A+gl_COLOR_ATTACHMENT9_EXT :: GLenum+gl_COLOR_ATTACHMENT9_EXT = 0x8CE9+gl_RENDERBUFFER_OES :: GLenum+gl_RENDERBUFFER_OES = 0x8D41+gl_RGBA8UI :: GLenum+gl_RGBA8UI = 0x8D7C+gl_MIPMAP :: GLenum+gl_MIPMAP = 0x8293+gl_SMOOTH_LINE_WIDTH_RANGE :: GLenum+gl_SMOOTH_LINE_WIDTH_RANGE = 0x0B22+gl_COMBINER7_NV :: GLenum+gl_COMBINER7_NV = 0x8557+gl_VIEW_CLASS_64_BITS :: GLenum+gl_VIEW_CLASS_64_BITS = 0x82C6+gl_SAMPLE_MASK_VALUE_SGIS :: GLenum+gl_SAMPLE_MASK_VALUE_SGIS = 0x80AA+gl_MAX_SHADER_STORAGE_BUFFER_BINDINGS :: GLenum+gl_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x90DD+gl_ALPHA32UI_EXT :: GLenum+gl_ALPHA32UI_EXT = 0x8D72+gl_NONE :: GLenum+gl_NONE = 0+gl_MATRIX25_ARB :: GLenum+gl_MATRIX25_ARB = 0x88D9+gl_DUAL_LUMINANCE_ALPHA4_SGIS :: GLenum+gl_DUAL_LUMINANCE_ALPHA4_SGIS = 0x811C+gl_PATCH_VERTICES :: GLenum+gl_PATCH_VERTICES = 0x8E72+gl_COLOR_MATERIAL_PARAMETER :: GLenum+gl_COLOR_MATERIAL_PARAMETER = 0x0B56+gl_NUM_PROGRAM_BINARY_FORMATS :: GLenum+gl_NUM_PROGRAM_BINARY_FORMATS = 0x87FE+gl_PACK_ROW_LENGTH :: GLenum+gl_PACK_ROW_LENGTH = 0x0D02+gl_RENDERBUFFER_BINDING_EXT :: GLenum+gl_RENDERBUFFER_BINDING_EXT = 0x8CA7+gl_FORMAT_SUBSAMPLE_24_24_OML :: GLenum+gl_FORMAT_SUBSAMPLE_24_24_OML = 0x8982+gl_RELATIVE_ROUNDED_RECT4_NV :: GLenum+gl_RELATIVE_ROUNDED_RECT4_NV = 0xED+gl_TEXTURE3 :: GLenum+gl_TEXTURE3 = 0x84C3+gl_DEPTH_COMPONENT16_SGIX :: GLenum+gl_DEPTH_COMPONENT16_SGIX = 0x81A5+gl_SAMPLER_2D_SHADOW_EXT :: GLenum+gl_SAMPLER_2D_SHADOW_EXT = 0x8B62+gl_MIN_MAP_BUFFER_ALIGNMENT :: GLenum+gl_MIN_MAP_BUFFER_ALIGNMENT = 0x90BC+gl_PROXY_TEXTURE_2D_ARRAY_EXT :: GLenum+gl_PROXY_TEXTURE_2D_ARRAY_EXT = 0x8C1B+gl_WEIGHT_ARRAY_TYPE_ARB :: GLenum+gl_WEIGHT_ARRAY_TYPE_ARB = 0x86A9+gl_LOW_INT :: GLenum+gl_LOW_INT = 0x8DF3+gl_DRAW_BUFFER11_ATI :: GLenum+gl_DRAW_BUFFER11_ATI = 0x8830+gl_MAX_ELEMENTS_VERTICES_EXT :: GLenum+gl_MAX_ELEMENTS_VERTICES_EXT = 0x80E8+gl_COMPRESSED_RED_RGTC1_EXT :: GLenum+gl_COMPRESSED_RED_RGTC1_EXT = 0x8DBB+gl_RGBA :: GLenum+gl_RGBA = 0x1908+gl_DRAW_BUFFER0_ARB :: GLenum+gl_DRAW_BUFFER0_ARB = 0x8825+gl_TEXTURE_RED_TYPE :: GLenum+gl_TEXTURE_RED_TYPE = 0x8C10+gl_FENCE_APPLE :: GLenum+gl_FENCE_APPLE = 0x8A0B+gl_MAX_CONVOLUTION_WIDTH_EXT :: GLenum+gl_MAX_CONVOLUTION_WIDTH_EXT = 0x801A+gl_UNSIGNED_INVERT_NV :: GLenum+gl_UNSIGNED_INVERT_NV = 0x8537+gl_LIGHT6 :: GLenum+gl_LIGHT6 = 0x4006+gl_STREAM_COPY :: GLenum+gl_STREAM_COPY = 0x88E2+gl_INSTRUMENT_BUFFER_POINTER_SGIX :: GLenum+gl_INSTRUMENT_BUFFER_POINTER_SGIX = 0x8180+gl_MODELVIEW :: GLenum+gl_MODELVIEW = 0x1700+gl_RGB32F :: GLenum+gl_RGB32F = 0x8815+gl_MAP_COLOR :: GLenum+gl_MAP_COLOR = 0x0D10+gl_COLOR_TABLE_INTENSITY_SIZE_SGI :: GLenum+gl_COLOR_TABLE_INTENSITY_SIZE_SGI = 0x80DF+gl_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV :: GLenum+gl_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x90D0+gl_LAYER_PROVOKING_VERTEX_EXT :: GLenum+gl_LAYER_PROVOKING_VERTEX_EXT = 0x825E+gl_COMPRESSED_RGBA_ASTC_6x5x5_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_6x5x5_OES = 0x93C7+gl_FOG_BIT :: GLenum+gl_FOG_BIT = 0x00000080+gl_NATIVE_GRAPHICS_HANDLE_PGI :: GLenum+gl_NATIVE_GRAPHICS_HANDLE_PGI = 0x1A202+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x8C8B+gl_MAX_COMPUTE_SHARED_MEMORY_SIZE :: GLenum+gl_MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x8262+gl_STENCIL_INDEX1_EXT :: GLenum+gl_STENCIL_INDEX1_EXT = 0x8D46+gl_COLOR_ATTACHMENT2_NV :: GLenum+gl_COLOR_ATTACHMENT2_NV = 0x8CE2+gl_DRAW_BUFFER5_ARB :: GLenum+gl_DRAW_BUFFER5_ARB = 0x882A+gl_TEXTURE_OBJECT_VALID_QCOM :: GLenum+gl_TEXTURE_OBJECT_VALID_QCOM = 0x8BDB+gl_PHONG_HINT_WIN :: GLenum+gl_PHONG_HINT_WIN = 0x80EB+gl_MAP1_VERTEX_ATTRIB0_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB0_4_NV = 0x8660+gl_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX :: GLenum+gl_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = 0x9047+gl_COLOR_TABLE_WIDTH :: GLenum+gl_COLOR_TABLE_WIDTH = 0x80D9+gl_INT_IMAGE_1D_ARRAY :: GLenum+gl_INT_IMAGE_1D_ARRAY = 0x905D+gl_BUFFER_MAPPED :: GLenum+gl_BUFFER_MAPPED = 0x88BC+gl_TEXTURE_SWIZZLE_R :: GLenum+gl_TEXTURE_SWIZZLE_R = 0x8E42+gl_COLOR_ATTACHMENT9_NV :: GLenum+gl_COLOR_ATTACHMENT9_NV = 0x8CE9+gl_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER :: GLenum+gl_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0+gl_LUMINANCE16_ALPHA16 :: GLenum+gl_LUMINANCE16_ALPHA16 = 0x8048+gl_PERFQUERY_GLOBAL_CONTEXT_INTEL :: GLenum+gl_PERFQUERY_GLOBAL_CONTEXT_INTEL = 0x00000001+gl_POINT_FADE_THRESHOLD_SIZE_EXT :: GLenum+gl_POINT_FADE_THRESHOLD_SIZE_EXT = 0x8128+gl_BLEND_EQUATION_OES :: GLenum+gl_BLEND_EQUATION_OES = 0x8009+gl_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES :: GLenum+gl_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898E+gl_TEXTURE_BINDING_2D_ARRAY_EXT :: GLenum+gl_TEXTURE_BINDING_2D_ARRAY_EXT = 0x8C1D+gl_CON_7_ATI :: GLenum+gl_CON_7_ATI = 0x8948+gl_DUAL_LUMINANCE16_SGIS :: GLenum+gl_DUAL_LUMINANCE16_SGIS = 0x8117+gl_RASTER_POSITION_UNCLIPPED_IBM :: GLenum+gl_RASTER_POSITION_UNCLIPPED_IBM = 0x19262+gl_ALLOW_DRAW_FRG_HINT_PGI :: GLenum+gl_ALLOW_DRAW_FRG_HINT_PGI = 0x1A210+gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT :: GLenum+gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x8F39+gl_TEXTURE_COORD_ARRAY :: GLenum+gl_TEXTURE_COORD_ARRAY = 0x8078+gl_MAX_DEBUG_LOGGED_MESSAGES_KHR :: GLenum+gl_MAX_DEBUG_LOGGED_MESSAGES_KHR = 0x9144+gl_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_ARRAY_BUFFER_BINDING_ARB = 0x8894+gl_PIXEL_TEXTURE_SGIS :: GLenum+gl_PIXEL_TEXTURE_SGIS = 0x8353+gl_STENCIL_INDEX8 :: GLenum+gl_STENCIL_INDEX8 = 0x8D48+gl_IMAGE_CLASS_10_10_10_2 :: GLenum+gl_IMAGE_CLASS_10_10_10_2 = 0x82C3+gl_DRAW_INDIRECT_LENGTH_NV :: GLenum+gl_DRAW_INDIRECT_LENGTH_NV = 0x8F42+gl_DEBUG_CALLBACK_FUNCTION_ARB :: GLenum+gl_DEBUG_CALLBACK_FUNCTION_ARB = 0x8244+gl_INT_SAMPLER_2D_ARRAY :: GLenum+gl_INT_SAMPLER_2D_ARRAY = 0x8DCF+gl_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3+gl_GENERIC_ATTRIB_NV :: GLenum+gl_GENERIC_ATTRIB_NV = 0x8C7D+gl_TEXTURE_RED_TYPE_ARB :: GLenum+gl_TEXTURE_RED_TYPE_ARB = 0x8C10+gl_MAX_VERTEX_UNITS_ARB :: GLenum+gl_MAX_VERTEX_UNITS_ARB = 0x86A4+gl_DEPTH_BIAS :: GLenum+gl_DEPTH_BIAS = 0x0D1F+gl_SRGB :: GLenum+gl_SRGB = 0x8C40+gl_TEXTURE_COORD_ARRAY_TYPE :: GLenum+gl_TEXTURE_COORD_ARRAY_TYPE = 0x8089+gl_TRANSFORM_FEEDBACK_BUFFER_START_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x8C84+gl_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV :: GLenum+gl_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = 0x8F44+gl_CURRENT_TIME_NV :: GLenum+gl_CURRENT_TIME_NV = 0x8E28+gl_TEXTURE_DEPTH_SIZE :: GLenum+gl_TEXTURE_DEPTH_SIZE = 0x884A+gl_INDEX_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_INDEX_ARRAY_LIST_STRIDE_IBM = 103083+gl_CLIP_PLANE1_IMG :: GLenum+gl_CLIP_PLANE1_IMG = 0x3001+gl_CULL_VERTEX_EYE_POSITION_EXT :: GLenum+gl_CULL_VERTEX_EYE_POSITION_EXT = 0x81AB+gl_COPY_READ_BUFFER_NV :: GLenum+gl_COPY_READ_BUFFER_NV = 0x8F36+gl_CONTEXT_CORE_PROFILE_BIT :: GLenum+gl_CONTEXT_CORE_PROFILE_BIT = 0x00000001+gl_ARC_TO_NV :: GLenum+gl_ARC_TO_NV = 0xFE+gl_PACK_COMPRESSED_BLOCK_SIZE :: GLenum+gl_PACK_COMPRESSED_BLOCK_SIZE = 0x912E+gl_TRACE_NAME_MESA :: GLenum+gl_TRACE_NAME_MESA = 0x8756+gl_TEXTURE_CROP_RECT_OES :: GLenum+gl_TEXTURE_CROP_RECT_OES = 0x8B9D+gl_MAP2_VERTEX_ATTRIB15_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB15_4_NV = 0x867F+gl_DRAW_INDIRECT_UNIFIED_NV :: GLenum+gl_DRAW_INDIRECT_UNIFIED_NV = 0x8F40+gl_MAX_TESS_EVALUATION_IMAGE_UNIFORMS :: GLenum+gl_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x90CC+gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D+gl_CULL_FACE_MODE :: GLenum+gl_CULL_FACE_MODE = 0x0B45+gl_LUMINANCE_ALPHA_INTEGER_EXT :: GLenum+gl_LUMINANCE_ALPHA_INTEGER_EXT = 0x8D9D+gl_SURFACE_MAPPED_NV :: GLenum+gl_SURFACE_MAPPED_NV = 0x8700+gl_FOG_COORD_ARRAY_LENGTH_NV :: GLenum+gl_FOG_COORD_ARRAY_LENGTH_NV = 0x8F32+gl_R :: GLenum+gl_R = 0x2002+gl_NUM_VIDEO_CAPTURE_STREAMS_NV :: GLenum+gl_NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024+gl_VERTEX_PROGRAM_POINT_SIZE_NV :: GLenum+gl_VERTEX_PROGRAM_POINT_SIZE_NV = 0x8642+gl_CONSTANT_NV :: GLenum+gl_CONSTANT_NV = 0x8576+gl_RGB10_A2 :: GLenum+gl_RGB10_A2 = 0x8059+gl_INTENSITY16_EXT :: GLenum+gl_INTENSITY16_EXT = 0x804D+gl_TEXTURE28 :: GLenum+gl_TEXTURE28 = 0x84DC+gl_COMPRESSED_RGBA_ASTC_4x4_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93B0+gl_SRGB_READ :: GLenum+gl_SRGB_READ = 0x8297+gl_LUMINANCE16_ALPHA16_SNORM :: GLenum+gl_LUMINANCE16_ALPHA16_SNORM = 0x901A+gl_UNSIGNED_INT_IMAGE_1D_ARRAY :: GLenum+gl_UNSIGNED_INT_IMAGE_1D_ARRAY = 0x9068+gl_ELEMENT_ARRAY_TYPE_ATI :: GLenum+gl_ELEMENT_ARRAY_TYPE_ATI = 0x8769+gl_PATCH_DEFAULT_OUTER_LEVEL :: GLenum+gl_PATCH_DEFAULT_OUTER_LEVEL = 0x8E74+gl_LINE_STRIP_ADJACENCY_ARB :: GLenum+gl_LINE_STRIP_ADJACENCY_ARB = 0x000B+gl_POLYGON_OFFSET_POINT :: GLenum+gl_POLYGON_OFFSET_POINT = 0x2A01+gl_UNSIGNED_SHORT_8_8_APPLE :: GLenum+gl_UNSIGNED_SHORT_8_8_APPLE = 0x85BA+gl_DYNAMIC_ATI :: GLenum+gl_DYNAMIC_ATI = 0x8761+gl_UNSIGNED_INT16_NV :: GLenum+gl_UNSIGNED_INT16_NV = 0x8FF0+gl_TEXTURE_BINDING_BUFFER_EXT :: GLenum+gl_TEXTURE_BINDING_BUFFER_EXT = 0x8C2C+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = 0x900A+gl_MAP2_VERTEX_ATTRIB14_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB14_4_NV = 0x867E+gl_COMPRESSED_RGB :: GLenum+gl_COMPRESSED_RGB = 0x84ED+gl_VERTEX_ATTRIB_ARRAY0_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY0_NV = 0x8650+gl_MIN :: GLenum+gl_MIN = 0x8007+gl_COLOR_SUM :: GLenum+gl_COLOR_SUM = 0x8458+gl_ATC_RGBA_INTERPOLATED_ALPHA_AMD :: GLenum+gl_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE+gl_RECIP_ADD_SIGNED_ALPHA_IMG :: GLenum+gl_RECIP_ADD_SIGNED_ALPHA_IMG = 0x8C05+gl_FONT_MAX_ADVANCE_WIDTH_BIT_NV :: GLenum+gl_FONT_MAX_ADVANCE_WIDTH_BIT_NV = 0x01000000+gl_SPRITE_AXIAL_SGIX :: GLenum+gl_SPRITE_AXIAL_SGIX = 0x814C+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x8CD3+gl_TEXTURE_ENV_BIAS_SGIX :: GLenum+gl_TEXTURE_ENV_BIAS_SGIX = 0x80BE+gl_PROGRAM_FORMAT_ASCII_ARB :: GLenum+gl_PROGRAM_FORMAT_ASCII_ARB = 0x8875+gl_OUTPUT_COLOR1_EXT :: GLenum+gl_OUTPUT_COLOR1_EXT = 0x879C+gl_SELECTION_BUFFER_SIZE :: GLenum+gl_SELECTION_BUFFER_SIZE = 0x0DF4+gl_VERTEX_ATTRIB_MAP2_ORDER_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08+gl_INTENSITY_FLOAT16_ATI :: GLenum+gl_INTENSITY_FLOAT16_ATI = 0x881D+gl_TEXTURE30_ARB :: GLenum+gl_TEXTURE30_ARB = 0x84DE+gl_TEXTURE_1D_STACK_MESAX :: GLenum+gl_TEXTURE_1D_STACK_MESAX = 0x8759+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A+gl_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087+gl_SIGNED_HILO_NV :: GLenum+gl_SIGNED_HILO_NV = 0x86F9+gl_CONTEXT_FLAG_ROBUST_ACCESS_BIT :: GLenum+gl_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004+gl_ACTIVE_ATTRIBUTE_MAX_LENGTH :: GLenum+gl_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A+gl_IMAGE_2D_RECT_EXT :: GLenum+gl_IMAGE_2D_RECT_EXT = 0x904F+gl_TESS_GEN_MODE :: GLenum+gl_TESS_GEN_MODE = 0x8E76+gl_TEXTURE_MIN_FILTER :: GLenum+gl_TEXTURE_MIN_FILTER = 0x2801+gl_FLOAT_VEC4 :: GLenum+gl_FLOAT_VEC4 = 0x8B52+gl_LIGHT2 :: GLenum+gl_LIGHT2 = 0x4002+gl_MODELVIEW24_ARB :: GLenum+gl_MODELVIEW24_ARB = 0x8738+gl_TESS_EVALUATION_SHADER :: GLenum+gl_TESS_EVALUATION_SHADER = 0x8E87+gl_PROXY_COLOR_TABLE_SGI :: GLenum+gl_PROXY_COLOR_TABLE_SGI = 0x80D3+gl_INDEX_ARRAY_EXT :: GLenum+gl_INDEX_ARRAY_EXT = 0x8077+gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F+gl_FRAGMENT_INPUT_NV :: GLenum+gl_FRAGMENT_INPUT_NV = 0x936D+gl_CON_13_ATI :: GLenum+gl_CON_13_ATI = 0x894E+gl_IMAGE_ROTATE_ORIGIN_Y_HP :: GLenum+gl_IMAGE_ROTATE_ORIGIN_Y_HP = 0x815B+gl_VERTEX_ARRAY_COUNT_EXT :: GLenum+gl_VERTEX_ARRAY_COUNT_EXT = 0x807D+gl_STENCIL_INDEX1_OES :: GLenum+gl_STENCIL_INDEX1_OES = 0x8D46+gl_BUFFER_DATA_SIZE :: GLenum+gl_BUFFER_DATA_SIZE = 0x9303+gl_MAX_NAME_STACK_DEPTH :: GLenum+gl_MAX_NAME_STACK_DEPTH = 0x0D37+gl_SAMPLES_PASSED_ARB :: GLenum+gl_SAMPLES_PASSED_ARB = 0x8914+gl_TEXTURE_PRE_SPECULAR_HP :: GLenum+gl_TEXTURE_PRE_SPECULAR_HP = 0x8169+gl_RESCALE_NORMAL_EXT :: GLenum+gl_RESCALE_NORMAL_EXT = 0x803A+gl_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY :: GLenum+gl_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x906A+gl_TRANSLATE_2D_NV :: GLenum+gl_TRANSLATE_2D_NV = 0x9090+gl_QUAD_INTENSITY8_SGIS :: GLenum+gl_QUAD_INTENSITY8_SGIS = 0x8123+gl_LOCATION_INDEX :: GLenum+gl_LOCATION_INDEX = 0x930F+gl_MODELVIEW9_ARB :: GLenum+gl_MODELVIEW9_ARB = 0x8729+gl_CONTEXT_RELEASE_BEHAVIOR_KHR :: GLenum+gl_CONTEXT_RELEASE_BEHAVIOR_KHR = 0x82FB+gl_EDGE_FLAG_ARRAY_BUFFER_BINDING :: GLenum+gl_EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x889B+gl_DEBUG_TYPE_PERFORMANCE_KHR :: GLenum+gl_DEBUG_TYPE_PERFORMANCE_KHR = 0x8250+gl_POINT_DISTANCE_ATTENUATION :: GLenum+gl_POINT_DISTANCE_ATTENUATION = 0x8129+gl_PIXEL_TILE_GRID_HEIGHT_SGIX :: GLenum+gl_PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143+gl_COLOR_ATTACHMENT3 :: GLenum+gl_COLOR_ATTACHMENT3 = 0x8CE3+gl_COUNT_UP_NV :: GLenum+gl_COUNT_UP_NV = 0x9088+gl_STENCIL_BACK_VALUE_MASK :: GLenum+gl_STENCIL_BACK_VALUE_MASK = 0x8CA4+gl_PERFQUERY_DONOT_FLUSH_INTEL :: GLenum+gl_PERFQUERY_DONOT_FLUSH_INTEL = 0x83F9+gl_VARIABLE_F_NV :: GLenum+gl_VARIABLE_F_NV = 0x8528+gl_STENCIL_BACK_PASS_DEPTH_FAIL :: GLenum+gl_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802+gl_IMAGE_CUBIC_WEIGHT_HP :: GLenum+gl_IMAGE_CUBIC_WEIGHT_HP = 0x815E+gl_STENCIL :: GLenum+gl_STENCIL = 0x1802+gl_DRAW_BUFFER6_ARB :: GLenum+gl_DRAW_BUFFER6_ARB = 0x882B+gl_MAX_COMBINED_IMAGE_UNIFORMS :: GLenum+gl_MAX_COMBINED_IMAGE_UNIFORMS = 0x90CF+gl_PROGRAM_STRING_NV :: GLenum+gl_PROGRAM_STRING_NV = 0x8628+gl_STREAM_DRAW :: GLenum+gl_STREAM_DRAW = 0x88E0+gl_BGR_INTEGER_EXT :: GLenum+gl_BGR_INTEGER_EXT = 0x8D9A+gl_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES :: GLenum+gl_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E+gl_LAYER_PROVOKING_VERTEX :: GLenum+gl_LAYER_PROVOKING_VERTEX = 0x825E+gl_TEXTURE_ALPHA_SIZE_EXT :: GLenum+gl_TEXTURE_ALPHA_SIZE_EXT = 0x805F+gl_QUERY_DEPTH_PASS_EVENT_BIT_AMD :: GLenum+gl_QUERY_DEPTH_PASS_EVENT_BIT_AMD = 0x00000001+gl_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX :: GLenum+gl_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174+gl_VIEW_CLASS_48_BITS :: GLenum+gl_VIEW_CLASS_48_BITS = 0x82C7+gl_DRAW_BUFFER15_NV :: GLenum+gl_DRAW_BUFFER15_NV = 0x8834+gl_MAX_LABEL_LENGTH_KHR :: GLenum+gl_MAX_LABEL_LENGTH_KHR = 0x82E8+gl_DEBUG_TYPE_PERFORMANCE :: GLenum+gl_DEBUG_TYPE_PERFORMANCE = 0x8250+gl_DEPENDENT_RGB_TEXTURE_3D_NV :: GLenum+gl_DEPENDENT_RGB_TEXTURE_3D_NV = 0x8859+gl_MAX_GEOMETRY_ATOMIC_COUNTERS :: GLenum+gl_MAX_GEOMETRY_ATOMIC_COUNTERS = 0x92D5+gl_DRAW_BUFFER10_ARB :: GLenum+gl_DRAW_BUFFER10_ARB = 0x882F+gl_FONT_UNDERLINE_THICKNESS_BIT_NV :: GLenum+gl_FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000+gl_DRAW_BUFFER7 :: GLenum+gl_DRAW_BUFFER7 = 0x882C+gl_TEXTURE_GREEN_TYPE_ARB :: GLenum+gl_TEXTURE_GREEN_TYPE_ARB = 0x8C11+gl_TEXTURE_MIN_LOD_SGIS :: GLenum+gl_TEXTURE_MIN_LOD_SGIS = 0x813A+gl_UNSIGNED_INT_SAMPLER_BUFFER_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8+gl_ELEMENT_ARRAY_BARRIER_BIT_EXT :: GLenum+gl_ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002+gl_SAMPLE_COVERAGE_VALUE :: GLenum+gl_SAMPLE_COVERAGE_VALUE = 0x80AA+gl_VERTEX_ATTRIB_RELATIVE_OFFSET :: GLenum+gl_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D5+gl_COLOR_TABLE_RED_SIZE :: GLenum+gl_COLOR_TABLE_RED_SIZE = 0x80DA+gl_TRANSFORM_FEEDBACK_BUFFER_START_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84+gl_NAME_STACK_DEPTH :: GLenum+gl_NAME_STACK_DEPTH = 0x0D70+gl_UNSIGNED_INT_5_9_9_9_REV :: GLenum+gl_UNSIGNED_INT_5_9_9_9_REV = 0x8C3E+gl_FUNC_SUBTRACT_EXT :: GLenum+gl_FUNC_SUBTRACT_EXT = 0x800A+gl_STENCIL_INDEX4_EXT :: GLenum+gl_STENCIL_INDEX4_EXT = 0x8D47+gl_TEXTURE_COMPRESSION_HINT :: GLenum+gl_TEXTURE_COMPRESSION_HINT = 0x84EF+gl_DEPTH_CLAMP :: GLenum+gl_DEPTH_CLAMP = 0x864F+gl_SAMPLE_COVERAGE_INVERT :: GLenum+gl_SAMPLE_COVERAGE_INVERT = 0x80AB+gl_DRAW_BUFFER0_EXT :: GLenum+gl_DRAW_BUFFER0_EXT = 0x8825+gl_DRAW_BUFFER4 :: GLenum+gl_DRAW_BUFFER4 = 0x8829+gl_ALPHA_FLOAT16_ATI :: GLenum+gl_ALPHA_FLOAT16_ATI = 0x881C+gl_AFFINE_2D_NV :: GLenum+gl_AFFINE_2D_NV = 0x9092+gl_MAX_TRACK_MATRICES_NV :: GLenum+gl_MAX_TRACK_MATRICES_NV = 0x862F+gl_BINORMAL_ARRAY_STRIDE_EXT :: GLenum+gl_BINORMAL_ARRAY_STRIDE_EXT = 0x8441+gl_UNSIGNED_SHORT_1_5_5_5_REV :: GLenum+gl_UNSIGNED_SHORT_1_5_5_5_REV = 0x8366+gl_ROUNDED_RECT4_NV :: GLenum+gl_ROUNDED_RECT4_NV = 0xEC+gl_COMMAND_BARRIER_BIT_EXT :: GLenum+gl_COMMAND_BARRIER_BIT_EXT = 0x00000040+gl_TEXTURE_ENV_COLOR :: GLenum+gl_TEXTURE_ENV_COLOR = 0x2201+gl_READ_WRITE_ARB :: GLenum+gl_READ_WRITE_ARB = 0x88BA+gl_RGBA8_EXT :: GLenum+gl_RGBA8_EXT = 0x8058+gl_EVAL_VERTEX_ATTRIB10_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB10_NV = 0x86D0+gl_POST_CONVOLUTION_RED_BIAS :: GLenum+gl_POST_CONVOLUTION_RED_BIAS = 0x8020+gl_INT16_VEC4_NV :: GLenum+gl_INT16_VEC4_NV = 0x8FE7+gl_COLOR_SUM_ARB :: GLenum+gl_COLOR_SUM_ARB = 0x8458+gl_OUTPUT_TEXTURE_COORD5_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD5_EXT = 0x87A2+gl_COMPRESSED_RGBA_ASTC_12x10_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93BC+gl_MAX_ELEMENTS_INDICES :: GLenum+gl_MAX_ELEMENTS_INDICES = 0x80E9+gl_REFERENCED_BY_FRAGMENT_SHADER :: GLenum+gl_REFERENCED_BY_FRAGMENT_SHADER = 0x930A+gl_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB :: GLenum+gl_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = 0x9344+gl_WEIGHT_ARRAY_ARB :: GLenum+gl_WEIGHT_ARRAY_ARB = 0x86AD+gl_TIME_ELAPSED_EXT :: GLenum+gl_TIME_ELAPSED_EXT = 0x88BF+gl_BACK_SECONDARY_COLOR_NV :: GLenum+gl_BACK_SECONDARY_COLOR_NV = 0x8C78+gl_COMPARE_REF_TO_TEXTURE_EXT :: GLenum+gl_COMPARE_REF_TO_TEXTURE_EXT = 0x884E+gl_IS_PER_PATCH_EXT :: GLenum+gl_IS_PER_PATCH_EXT = 0x92E7+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = 0x8D56+gl_TEXTURE_LUMINANCE_SIZE_EXT :: GLenum+gl_TEXTURE_LUMINANCE_SIZE_EXT = 0x8060+gl_COVERAGE_BUFFERS_NV :: GLenum+gl_COVERAGE_BUFFERS_NV = 0x8ED3+gl_MATRIX5_ARB :: GLenum+gl_MATRIX5_ARB = 0x88C5+gl_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT :: GLenum+gl_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT = 0x8A56+gl_COMPRESSED_RGBA_ASTC_5x5x4_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_5x5x4_OES = 0x93C5+gl_CONVOLUTION_FILTER_BIAS :: GLenum+gl_CONVOLUTION_FILTER_BIAS = 0x8015+gl_TRACE_PRIMITIVES_BIT_MESA :: GLenum+gl_TRACE_PRIMITIVES_BIT_MESA = 0x0002+gl_POINT_SPRITE :: GLenum+gl_POINT_SPRITE = 0x8861+gl_POLYGON_STIPPLE_BIT :: GLenum+gl_POLYGON_STIPPLE_BIT = 0x00000010+gl_DEBUG_SEVERITY_HIGH :: GLenum+gl_DEBUG_SEVERITY_HIGH = 0x9146+gl_RENDERBUFFER_STENCIL_SIZE_EXT :: GLenum+gl_RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55+gl_RED :: GLenum+gl_RED = 0x1903+gl_DRAW_BUFFER12_NV :: GLenum+gl_DRAW_BUFFER12_NV = 0x8831+gl_COMPRESSED_RGBA_ASTC_10x10_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93BB+gl_ACTIVE_TEXTURE :: GLenum+gl_ACTIVE_TEXTURE = 0x84E0+gl_Q :: GLenum+gl_Q = 0x2003+gl_STRICT_LIGHTING_HINT_PGI :: GLenum+gl_STRICT_LIGHTING_HINT_PGI = 0x1A217+gl_INT8_VEC2_NV :: GLenum+gl_INT8_VEC2_NV = 0x8FE1+gl_MAP2_VERTEX_ATTRIB0_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB0_4_NV = 0x8670+gl_SHADER_SOURCE_LENGTH :: GLenum+gl_SHADER_SOURCE_LENGTH = 0x8B88+gl_FLOAT_MAT4 :: GLenum+gl_FLOAT_MAT4 = 0x8B5C+gl_COLOR_MATRIX_SGI :: GLenum+gl_COLOR_MATRIX_SGI = 0x80B1+gl_SAMPLER_2D_ARRAY_EXT :: GLenum+gl_SAMPLER_2D_ARRAY_EXT = 0x8DC1+gl_MODULATE_SUBTRACT_ATI :: GLenum+gl_MODULATE_SUBTRACT_ATI = 0x8746+gl_TRIANGLES_ADJACENCY_ARB :: GLenum+gl_TRIANGLES_ADJACENCY_ARB = 0x000C+gl_PROGRAM_TARGET_NV :: GLenum+gl_PROGRAM_TARGET_NV = 0x8646+gl_GEOMETRY_SHADER_ARB :: GLenum+gl_GEOMETRY_SHADER_ARB = 0x8DD9+gl_TEXTURE_BASE_LEVEL_SGIS :: GLenum+gl_TEXTURE_BASE_LEVEL_SGIS = 0x813C+gl_1PASS_SGIS :: GLenum+gl_1PASS_SGIS = 0x80A1+gl_TEXTURE_HEIGHT_QCOM :: GLenum+gl_TEXTURE_HEIGHT_QCOM = 0x8BD3+gl_LUMINANCE12_ALPHA4_EXT :: GLenum+gl_LUMINANCE12_ALPHA4_EXT = 0x8046+gl_PIXEL_TILE_HEIGHT_SGIX :: GLenum+gl_PIXEL_TILE_HEIGHT_SGIX = 0x8141+gl_UNSIGNED_INT_S8_S8_8_8_NV :: GLenum+gl_UNSIGNED_INT_S8_S8_8_8_NV = 0x86DA+gl_SOURCE0_RGB :: GLenum+gl_SOURCE0_RGB = 0x8580+gl_DRAW_BUFFER6_EXT :: GLenum+gl_DRAW_BUFFER6_EXT = 0x882B+gl_PATH_FILL_BOUNDING_BOX_NV :: GLenum+gl_PATH_FILL_BOUNDING_BOX_NV = 0x90A1+gl_RENDER_MODE :: GLenum+gl_RENDER_MODE = 0x0C40+gl_X_EXT :: GLenum+gl_X_EXT = 0x87D5+gl_CON_14_ATI :: GLenum+gl_CON_14_ATI = 0x894F+gl_TRIANGLE_STRIP_ADJACENCY :: GLenum+gl_TRIANGLE_STRIP_ADJACENCY = 0x000D+gl_ROUNDED_RECT_NV :: GLenum+gl_ROUNDED_RECT_NV = 0xE8+gl_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB :: GLenum+gl_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87+gl_DSDT_MAG_INTENSITY_NV :: GLenum+gl_DSDT_MAG_INTENSITY_NV = 0x86DC+gl_MODELVIEW13_ARB :: GLenum+gl_MODELVIEW13_ARB = 0x872D+gl_MAX_COMBINED_CLIP_AND_CULL_DISTANCES :: GLenum+gl_MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x82FA+gl_CLIP_ORIGIN :: GLenum+gl_CLIP_ORIGIN = 0x935C+gl_PATH_CLIENT_LENGTH_NV :: GLenum+gl_PATH_CLIENT_LENGTH_NV = 0x907F+gl_SAMPLE_ALPHA_TO_ONE_ARB :: GLenum+gl_SAMPLE_ALPHA_TO_ONE_ARB = 0x809F+gl_RENDERBUFFER_INTERNAL_FORMAT_OES :: GLenum+gl_RENDERBUFFER_INTERNAL_FORMAT_OES = 0x8D44+gl_POINT_SPRITE_ARB :: GLenum+gl_POINT_SPRITE_ARB = 0x8861+gl_FLOAT_MAT3_ARB :: GLenum+gl_FLOAT_MAT3_ARB = 0x8B5B+gl_IMAGE_CLASS_4_X_8 :: GLenum+gl_IMAGE_CLASS_4_X_8 = 0x82BF+gl_PIXEL_SUBSAMPLE_4242_SGIX :: GLenum+gl_PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT :: GLenum+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D+gl_ROUNDED_RECT8_NV :: GLenum+gl_ROUNDED_RECT8_NV = 0xEE+gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING :: GLenum+gl_FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x889D+gl_DST_NV :: GLenum+gl_DST_NV = 0x9287+gl_MAX_TRANSFORM_FEEDBACK_BUFFERS :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70+gl_FUNC_ADD_OES :: GLenum+gl_FUNC_ADD_OES = 0x8006+gl_VERTEX_STREAM7_ATI :: GLenum+gl_VERTEX_STREAM7_ATI = 0x8773+gl_RG_EXT :: GLenum+gl_RG_EXT = 0x8227+gl_STENCIL_BACK_PASS_DEPTH_PASS :: GLenum+gl_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803+gl_FRAMEBUFFER_RENDERABLE_LAYERED :: GLenum+gl_FRAMEBUFFER_RENDERABLE_LAYERED = 0x828A+gl_MAP2_VERTEX_ATTRIB1_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB1_4_NV = 0x8671+gl_DRAW_BUFFER2_ATI :: GLenum+gl_DRAW_BUFFER2_ATI = 0x8827+gl_RGBA_FLOAT16_ATI :: GLenum+gl_RGBA_FLOAT16_ATI = 0x881A+gl_EVAL_VERTEX_ATTRIB13_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB13_NV = 0x86D3+gl_DRAW_BUFFER15_ATI :: GLenum+gl_DRAW_BUFFER15_ATI = 0x8834+gl_MAP_WRITE_BIT :: GLenum+gl_MAP_WRITE_BIT = 0x0002+gl_DOT3_RGBA :: GLenum+gl_DOT3_RGBA = 0x86AF+gl_MAT_SHININESS_BIT_PGI :: GLenum+gl_MAT_SHININESS_BIT_PGI = 0x02000000+gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN :: GLenum+gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88+gl_MAX_TRACK_MATRIX_STACK_DEPTH_NV :: GLenum+gl_MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x862E+gl_MATRIX30_ARB :: GLenum+gl_MATRIX30_ARB = 0x88DE+gl_STENCIL_TEST :: GLenum+gl_STENCIL_TEST = 0x0B90+gl_MAX_INTEGER_SAMPLES :: GLenum+gl_MAX_INTEGER_SAMPLES = 0x9110+gl_COPY_READ_BUFFER_BINDING :: GLenum+gl_COPY_READ_BUFFER_BINDING = 0x8F36+gl_TRANSFORM_FEEDBACK_BUFFER :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER = 0x8C8E+gl_LUMINANCE_FLOAT16_APPLE :: GLenum+gl_LUMINANCE_FLOAT16_APPLE = 0x881E+gl_MAX_TESS_CONTROL_UNIFORM_BLOCKS :: GLenum+gl_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89+gl_MAX_VERTEX_UNIFORM_VECTORS :: GLenum+gl_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB+gl_WRITE_PIXEL_DATA_RANGE_LENGTH_NV :: GLenum+gl_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A+gl_SAMPLER_RENDERBUFFER_NV :: GLenum+gl_SAMPLER_RENDERBUFFER_NV = 0x8E56+gl_DRAW_BUFFER13_NV :: GLenum+gl_DRAW_BUFFER13_NV = 0x8832+gl_RGB32F_ARB :: GLenum+gl_RGB32F_ARB = 0x8815+gl_FRAGMENT_LIGHT5_SGIX :: GLenum+gl_FRAGMENT_LIGHT5_SGIX = 0x8411+gl_MAX_GENERAL_COMBINERS_NV :: GLenum+gl_MAX_GENERAL_COMBINERS_NV = 0x854D+gl_TRANSPOSE_TEXTURE_MATRIX_ARB :: GLenum+gl_TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5+gl_OPERAND1_ALPHA_ARB :: GLenum+gl_OPERAND1_ALPHA_ARB = 0x8599+gl_COLOR_ATTACHMENT12 :: GLenum+gl_COLOR_ATTACHMENT12 = 0x8CEC+gl_GREEN_MAX_CLAMP_INGR :: GLenum+gl_GREEN_MAX_CLAMP_INGR = 0x8565+gl_PATH_PROJECTION_STACK_DEPTH_NV :: GLenum+gl_PATH_PROJECTION_STACK_DEPTH_NV = 0x0BA4+gl_MAP2_COLOR_4 :: GLenum+gl_MAP2_COLOR_4 = 0x0DB0+gl_COLOR_SUM_EXT :: GLenum+gl_COLOR_SUM_EXT = 0x8458+gl_CLAMP_FRAGMENT_COLOR_ARB :: GLenum+gl_CLAMP_FRAGMENT_COLOR_ARB = 0x891B+gl_INDEX_BITS :: GLenum+gl_INDEX_BITS = 0x0D51+gl_CON_15_ATI :: GLenum+gl_CON_15_ATI = 0x8950+gl_BLEND_OVERLAP_NV :: GLenum+gl_BLEND_OVERLAP_NV = 0x9281+gl_DS_SCALE_NV :: GLenum+gl_DS_SCALE_NV = 0x8710+gl_CURRENT_PALETTE_MATRIX_ARB :: GLenum+gl_CURRENT_PALETTE_MATRIX_ARB = 0x8843+gl_IMAGE_BINDING_LAYER_EXT :: GLenum+gl_IMAGE_BINDING_LAYER_EXT = 0x8F3D+gl_WEIGHT_SUM_UNITY_ARB :: GLenum+gl_WEIGHT_SUM_UNITY_ARB = 0x86A6+gl_ALPHA32I_EXT :: GLenum+gl_ALPHA32I_EXT = 0x8D84+gl_SHADER_STORAGE_BUFFER_SIZE :: GLenum+gl_SHADER_STORAGE_BUFFER_SIZE = 0x90D5+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER :: GLenum+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x90ED+gl_MAX_UNIFORM_LOCATIONS :: GLenum+gl_MAX_UNIFORM_LOCATIONS = 0x826E+gl_DEBUG_SOURCE_OTHER_KHR :: GLenum+gl_DEBUG_SOURCE_OTHER_KHR = 0x824B+gl_FRACTIONAL_EVEN :: GLenum+gl_FRACTIONAL_EVEN = 0x8E7C+gl_MIN_PROGRAM_TEXEL_OFFSET :: GLenum+gl_MIN_PROGRAM_TEXEL_OFFSET = 0x8904+gl_WEIGHT_ARRAY_OES :: GLenum+gl_WEIGHT_ARRAY_OES = 0x86AD+gl_RESET_NOTIFICATION_STRATEGY_KHR :: GLenum+gl_RESET_NOTIFICATION_STRATEGY_KHR = 0x8256+gl_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV :: GLenum+gl_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA4+gl_RGB2_EXT :: GLenum+gl_RGB2_EXT = 0x804E+gl_VERTEX_ATTRIB_ARRAY_BARRIER_BIT :: GLenum+gl_VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001+gl_ELEMENT_ARRAY_BUFFER :: GLenum+gl_ELEMENT_ARRAY_BUFFER = 0x8893+gl_MEDIUM_FLOAT :: GLenum+gl_MEDIUM_FLOAT = 0x8DF1+gl_SAMPLER_1D_SHADOW_ARB :: GLenum+gl_SAMPLER_1D_SHADOW_ARB = 0x8B61+gl_DRAW_BUFFER5 :: GLenum+gl_DRAW_BUFFER5 = 0x882A+gl_PARALLEL_ARRAYS_INTEL :: GLenum+gl_PARALLEL_ARRAYS_INTEL = 0x83F4+gl_REG_24_ATI :: GLenum+gl_REG_24_ATI = 0x8939+gl_DEPTH_STENCIL_TO_BGRA_NV :: GLenum+gl_DEPTH_STENCIL_TO_BGRA_NV = 0x886F+gl_MAX_FRAMEBUFFER_WIDTH :: GLenum+gl_MAX_FRAMEBUFFER_WIDTH = 0x9315+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES = 0x93E3+gl_POLYGON_OFFSET_FILL :: GLenum+gl_POLYGON_OFFSET_FILL = 0x8037+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 0x8518+gl_TEXTURE_GEN_T :: GLenum+gl_TEXTURE_GEN_T = 0x0C61+gl_TEXTURE_POST_SPECULAR_HP :: GLenum+gl_TEXTURE_POST_SPECULAR_HP = 0x8168+gl_TEXTURE_CUBE_MAP_NEGATIVE_X_OES :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 0x8516+gl_MAGNITUDE_SCALE_NV :: GLenum+gl_MAGNITUDE_SCALE_NV = 0x8712+gl_VERTEX_SHADER_LOCALS_EXT :: GLenum+gl_VERTEX_SHADER_LOCALS_EXT = 0x87D3+gl_INT_2_10_10_10_REV :: GLenum+gl_INT_2_10_10_10_REV = 0x8D9F+gl_DOUBLE_MAT3x2_EXT :: GLenum+gl_DOUBLE_MAT3x2_EXT = 0x8F4B+gl_DISCARD_NV :: GLenum+gl_DISCARD_NV = 0x8530+gl_MATRIX13_ARB :: GLenum+gl_MATRIX13_ARB = 0x88CD+gl_GENERATE_MIPMAP_HINT :: GLenum+gl_GENERATE_MIPMAP_HINT = 0x8192+gl_MAX_PIXEL_MAP_TABLE :: GLenum+gl_MAX_PIXEL_MAP_TABLE = 0x0D34+gl_SHADER_STORAGE_BUFFER :: GLenum+gl_SHADER_STORAGE_BUFFER = 0x90D2+gl_BUFFER_UPDATE_BARRIER_BIT :: GLenum+gl_BUFFER_UPDATE_BARRIER_BIT = 0x00000200+gl_FRAMEBUFFER_BINDING_OES :: GLenum+gl_FRAMEBUFFER_BINDING_OES = 0x8CA6+gl_CONTEXT_PROFILE_MASK :: GLenum+gl_CONTEXT_PROFILE_MASK = 0x9126+gl_MAX_VIEWPORTS :: GLenum+gl_MAX_VIEWPORTS = 0x825B+gl_DRAW_BUFFER4_ARB :: GLenum+gl_DRAW_BUFFER4_ARB = 0x8829+gl_RESAMPLE_DECIMATE_SGIX :: GLenum+gl_RESAMPLE_DECIMATE_SGIX = 0x8430+gl_SHADER_OBJECT_ARB :: GLenum+gl_SHADER_OBJECT_ARB = 0x8B48+gl_SYNC_FLAGS_APPLE :: GLenum+gl_SYNC_FLAGS_APPLE = 0x9115+gl_Z4Y12Z4CB12Z4CR12_444_NV :: GLenum+gl_Z4Y12Z4CB12Z4CR12_444_NV = 0x9037+gl_VERTEX_ARRAY_LENGTH_NV :: GLenum+gl_VERTEX_ARRAY_LENGTH_NV = 0x8F2B+gl_FOG_COORDINATE_ARRAY_LIST_IBM :: GLenum+gl_FOG_COORDINATE_ARRAY_LIST_IBM = 103076+gl_FRAMEBUFFER_DEFAULT_SAMPLES :: GLenum+gl_FRAMEBUFFER_DEFAULT_SAMPLES = 0x9313+gl_FLAT :: GLenum+gl_FLAT = 0x1D00+gl_REG_2_ATI :: GLenum+gl_REG_2_ATI = 0x8923+gl_VIEWPORT_BIT :: GLenum+gl_VIEWPORT_BIT = 0x00000800+gl_TEXTURE_VIEW_MIN_LEVEL_EXT :: GLenum+gl_TEXTURE_VIEW_MIN_LEVEL_EXT = 0x82DB+gl_FRACTIONAL_ODD_EXT :: GLenum+gl_FRACTIONAL_ODD_EXT = 0x8E7B+gl_VIRTUAL_PAGE_SIZE_X_ARB :: GLenum+gl_VIRTUAL_PAGE_SIZE_X_ARB = 0x9195+gl_GLOBAL_ALPHA_SUN :: GLenum+gl_GLOBAL_ALPHA_SUN = 0x81D9+gl_TEXTURE_BORDER :: GLenum+gl_TEXTURE_BORDER = 0x1005+gl_MAP2_VERTEX_ATTRIB7_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB7_4_NV = 0x8677+gl_BUFFER_ACCESS :: GLenum+gl_BUFFER_ACCESS = 0x88BB+gl_COLOR_ATTACHMENT15_EXT :: GLenum+gl_COLOR_ATTACHMENT15_EXT = 0x8CEF+gl_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT :: GLenum+gl_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = 0x92CF+gl_PRIMITIVE_RESTART_FIXED_INDEX :: GLenum+gl_PRIMITIVE_RESTART_FIXED_INDEX = 0x8D69+gl_MAX_COMBINED_DIMENSIONS :: GLenum+gl_MAX_COMBINED_DIMENSIONS = 0x8282+gl_MINUS_NV :: GLenum+gl_MINUS_NV = 0x929F+gl_NORMAL_MAP_ARB :: GLenum+gl_NORMAL_MAP_ARB = 0x8511+gl_MAT_AMBIENT_BIT_PGI :: GLenum+gl_MAT_AMBIENT_BIT_PGI = 0x00100000+gl_REG_14_ATI :: GLenum+gl_REG_14_ATI = 0x892F+gl_SECONDARY_INTERPOLATOR_ATI :: GLenum+gl_SECONDARY_INTERPOLATOR_ATI = 0x896D+gl_FRAGMENT_SHADER_BIT_EXT :: GLenum+gl_FRAGMENT_SHADER_BIT_EXT = 0x00000002+gl_CON_20_ATI :: GLenum+gl_CON_20_ATI = 0x8955+gl_DYNAMIC_DRAW :: GLenum+gl_DYNAMIC_DRAW = 0x88E8+gl_STENCIL_INDEX1 :: GLenum+gl_STENCIL_INDEX1 = 0x8D46+gl_DEPTH_COMPONENTS :: GLenum+gl_DEPTH_COMPONENTS = 0x8284+gl_SEPARATE_SPECULAR_COLOR_EXT :: GLenum+gl_SEPARATE_SPECULAR_COLOR_EXT = 0x81FA+gl_CONSTANT_COLOR0_NV :: GLenum+gl_CONSTANT_COLOR0_NV = 0x852A+gl_LUMINANCE16I_EXT :: GLenum+gl_LUMINANCE16I_EXT = 0x8D8C+gl_TEXTURE_COORD_ARRAY_SIZE_EXT :: GLenum+gl_TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088+gl_BLEND_DST_RGB :: GLenum+gl_BLEND_DST_RGB = 0x80C8+gl_VARIABLE_C_NV :: GLenum+gl_VARIABLE_C_NV = 0x8525+gl_INT_VEC2_ARB :: GLenum+gl_INT_VEC2_ARB = 0x8B53+gl_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX :: GLenum+gl_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178+gl_PIXEL_MAP_G_TO_G_SIZE :: GLenum+gl_PIXEL_MAP_G_TO_G_SIZE = 0x0CB7+gl_BLUE_MIN_CLAMP_INGR :: GLenum+gl_BLUE_MIN_CLAMP_INGR = 0x8562+gl_RETURN :: GLenum+gl_RETURN = 0x0102+gl_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD :: GLenum+gl_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = 0x9160+gl_DOUBLE :: GLenum+gl_DOUBLE = 0x140A+gl_COMBINE4_NV :: GLenum+gl_COMBINE4_NV = 0x8503+gl_IMAGE_ROTATE_ORIGIN_X_HP :: GLenum+gl_IMAGE_ROTATE_ORIGIN_X_HP = 0x815A+gl_COMBINER5_NV :: GLenum+gl_COMBINER5_NV = 0x8555+gl_SYNC_CONDITION :: GLenum+gl_SYNC_CONDITION = 0x9113+gl_DEBUG_LOGGED_MESSAGES_ARB :: GLenum+gl_DEBUG_LOGGED_MESSAGES_ARB = 0x9145+gl_REG_15_ATI :: GLenum+gl_REG_15_ATI = 0x8930+gl_BUFFER_MAP_POINTER_OES :: GLenum+gl_BUFFER_MAP_POINTER_OES = 0x88BD+gl_SM_COUNT_NV :: GLenum+gl_SM_COUNT_NV = 0x933B+gl_MAX_FRAMEBUFFER_HEIGHT :: GLenum+gl_MAX_FRAMEBUFFER_HEIGHT = 0x9316+gl_INCR_WRAP_OES :: GLenum+gl_INCR_WRAP_OES = 0x8507+gl_GCCSO_SHADER_BINARY_FJ :: GLenum+gl_GCCSO_SHADER_BINARY_FJ = 0x9260+gl_DRAW_BUFFER4_NV :: GLenum+gl_DRAW_BUFFER4_NV = 0x8829+gl_RGB565 :: GLenum+gl_RGB565 = 0x8D62+gl_WRITE_PIXEL_DATA_RANGE_NV :: GLenum+gl_WRITE_PIXEL_DATA_RANGE_NV = 0x8878+gl_UNIFORM_OFFSET :: GLenum+gl_UNIFORM_OFFSET = 0x8A3B+gl_UNSIGNED_INT64_ARB :: GLenum+gl_UNSIGNED_INT64_ARB = 0x140F+gl_STENCIL_RENDERABLE :: GLenum+gl_STENCIL_RENDERABLE = 0x8288+gl_COMPRESSED_RGBA_BPTC_UNORM :: GLenum+gl_COMPRESSED_RGBA_BPTC_UNORM = 0x8E8C+gl_FLOAT_R32_NV :: GLenum+gl_FLOAT_R32_NV = 0x8885+gl_TEXTURE_CLIPMAP_OFFSET_SGIX :: GLenum+gl_TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173+gl_TEXTURE_IMAGE_VALID_QCOM :: GLenum+gl_TEXTURE_IMAGE_VALID_QCOM = 0x8BD8+gl_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x9279+gl_IMAGE_PIXEL_TYPE :: GLenum+gl_IMAGE_PIXEL_TYPE = 0x82AA+gl_EDGE_FLAG_ARRAY_STRIDE :: GLenum+gl_EDGE_FLAG_ARRAY_STRIDE = 0x808C+gl_RED_SCALE :: GLenum+gl_RED_SCALE = 0x0D14+gl_RENDERBUFFER_ALPHA_SIZE_OES :: GLenum+gl_RENDERBUFFER_ALPHA_SIZE_OES = 0x8D53+gl_CLIP_DISTANCE7 :: GLenum+gl_CLIP_DISTANCE7 = 0x3007+gl_INTENSITY32UI_EXT :: GLenum+gl_INTENSITY32UI_EXT = 0x8D73+gl_DEBUG_SOURCE_WINDOW_SYSTEM_KHR :: GLenum+gl_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 0x8247+gl_PN_TRIANGLES_ATI :: GLenum+gl_PN_TRIANGLES_ATI = 0x87F0+gl_LIGHT5 :: GLenum+gl_LIGHT5 = 0x4005+gl_QUERY_RESULT_ARB :: GLenum+gl_QUERY_RESULT_ARB = 0x8866+gl_LUMINANCE16 :: GLenum+gl_LUMINANCE16 = 0x8042+gl_ALPHA_TEST_QCOM :: GLenum+gl_ALPHA_TEST_QCOM = 0x0BC0+gl_TEXTURE_BORDER_COLOR_NV :: GLenum+gl_TEXTURE_BORDER_COLOR_NV = 0x1004+gl_CULL_FRAGMENT_NV :: GLenum+gl_CULL_FRAGMENT_NV = 0x86E7+gl_PATH_GEN_MODE_NV :: GLenum+gl_PATH_GEN_MODE_NV = 0x90B0+gl_PROGRAM_POINT_SIZE_ARB :: GLenum+gl_PROGRAM_POINT_SIZE_ARB = 0x8642+gl_INTERNALFORMAT_DEPTH_TYPE :: GLenum+gl_INTERNALFORMAT_DEPTH_TYPE = 0x827C+gl_UNPACK_SKIP_ROWS :: GLenum+gl_UNPACK_SKIP_ROWS = 0x0CF3+gl_DEBUG_SEVERITY_NOTIFICATION :: GLenum+gl_DEBUG_SEVERITY_NOTIFICATION = 0x826B+gl_MAX_FRAGMENT_LIGHTS_SGIX :: GLenum+gl_MAX_FRAGMENT_LIGHTS_SGIX = 0x8404+gl_COUNTER_TYPE_AMD :: GLenum+gl_COUNTER_TYPE_AMD = 0x8BC0+gl_TEXTURE_FETCH_BARRIER_BIT_EXT :: GLenum+gl_TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008+gl_CURRENT_NORMAL :: GLenum+gl_CURRENT_NORMAL = 0x0B02+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES = 0x93E5+gl_MULTIVIEW_EXT :: GLenum+gl_MULTIVIEW_EXT = 0x90F1+gl_TESS_GEN_VERTEX_ORDER_EXT :: GLenum+gl_TESS_GEN_VERTEX_ORDER_EXT = 0x8E78+gl_IMAGE_SCALE_X_HP :: GLenum+gl_IMAGE_SCALE_X_HP = 0x8155+gl_TEXTURE_COLOR_TABLE_SGI :: GLenum+gl_TEXTURE_COLOR_TABLE_SGI = 0x80BC+gl_DSDT_MAG_NV :: GLenum+gl_DSDT_MAG_NV = 0x86F6+gl_Z400_BINARY_AMD :: GLenum+gl_Z400_BINARY_AMD = 0x8740+gl_COLOR_INDEX8_EXT :: GLenum+gl_COLOR_INDEX8_EXT = 0x80E5+gl_SRGB8_NV :: GLenum+gl_SRGB8_NV = 0x8C41+gl_UNSIGNED_IDENTITY_NV :: GLenum+gl_UNSIGNED_IDENTITY_NV = 0x8536+gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES :: GLenum+gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 0x9105+gl_ALPHA_SNORM :: GLenum+gl_ALPHA_SNORM = 0x9010+gl_MAX_TEXTURE_UNITS :: GLenum+gl_MAX_TEXTURE_UNITS = 0x84E2+gl_DEBUG_SEVERITY_MEDIUM_KHR :: GLenum+gl_DEBUG_SEVERITY_MEDIUM_KHR = 0x9147+gl_TEXTURE_RECTANGLE :: GLenum+gl_TEXTURE_RECTANGLE = 0x84F5+gl_CONTRAST_NV :: GLenum+gl_CONTRAST_NV = 0x92A1+gl_FILL :: GLenum+gl_FILL = 0x1B02+gl_BLEND_COLOR :: GLenum+gl_BLEND_COLOR = 0x8005+gl_POINT_SMOOTH_HINT :: GLenum+gl_POINT_SMOOTH_HINT = 0x0C51+gl_CONTEXT_ROBUST_ACCESS :: GLenum+gl_CONTEXT_ROBUST_ACCESS = 0x90F3+gl_FRAGMENT_PROGRAM_NV :: GLenum+gl_FRAGMENT_PROGRAM_NV = 0x8870+gl_OP_MULTIPLY_MATRIX_EXT :: GLenum+gl_OP_MULTIPLY_MATRIX_EXT = 0x8798+gl_DEPENDENT_GB_TEXTURE_2D_NV :: GLenum+gl_DEPENDENT_GB_TEXTURE_2D_NV = 0x86EA+gl_DOUBLE_EXT :: GLenum+gl_DOUBLE_EXT = 0x140A+gl_VERTEX_PROGRAM_NV :: GLenum+gl_VERTEX_PROGRAM_NV = 0x8620+gl_PATH_END_CAPS_NV :: GLenum+gl_PATH_END_CAPS_NV = 0x9076+gl_PATH_STROKE_MASK_NV :: GLenum+gl_PATH_STROKE_MASK_NV = 0x9084+gl_SAMPLER_CUBE_SHADOW_EXT :: GLenum+gl_SAMPLER_CUBE_SHADOW_EXT = 0x8DC5+gl_COLOR_SAMPLES_NV :: GLenum+gl_COLOR_SAMPLES_NV = 0x8E20+gl_DUAL_INTENSITY16_SGIS :: GLenum+gl_DUAL_INTENSITY16_SGIS = 0x811B+gl_IMPLEMENTATION_COLOR_READ_TYPE_OES :: GLenum+gl_IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A+gl_MAX_DEBUG_GROUP_STACK_DEPTH_KHR :: GLenum+gl_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826C+gl_SCISSOR_TEST :: GLenum+gl_SCISSOR_TEST = 0x0C11+gl_ADJACENT_PAIRS_NV :: GLenum+gl_ADJACENT_PAIRS_NV = 0x90AE+gl_MAX_VERTEX_ATTRIB_BINDINGS :: GLenum+gl_MAX_VERTEX_ATTRIB_BINDINGS = 0x82DA+gl_TEXTURE_GATHER :: GLenum+gl_TEXTURE_GATHER = 0x82A2+gl_LUMINANCE_ALPHA8UI_EXT :: GLenum+gl_LUMINANCE_ALPHA8UI_EXT = 0x8D81+gl_RELATIVE_ARC_TO_NV :: GLenum+gl_RELATIVE_ARC_TO_NV = 0xFF+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93DA+gl_TEXTURE_BINDING_CUBE_MAP_EXT :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP_EXT = 0x8514+gl_FRAGMENT_ALPHA_MODULATE_IMG :: GLenum+gl_FRAGMENT_ALPHA_MODULATE_IMG = 0x8C08+gl_CURRENT_VERTEX_EXT :: GLenum+gl_CURRENT_VERTEX_EXT = 0x87E2+gl_MAP1_VERTEX_ATTRIB11_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB11_4_NV = 0x866B+gl_MATRIX_INDEX_ARRAY_SIZE_ARB :: GLenum+gl_MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846+gl_TRANSFORM_FEEDBACK_BUFFER_MODE :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F+gl_PIXEL_TILE_CACHE_SIZE_SGIX :: GLenum+gl_PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145+gl_MODELVIEW0_EXT :: GLenum+gl_MODELVIEW0_EXT = 0x1700+gl_FONT_DESCENDER_BIT_NV :: GLenum+gl_FONT_DESCENDER_BIT_NV = 0x00400000+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x92CE+gl_RASTERIZER_DISCARD :: GLenum+gl_RASTERIZER_DISCARD = 0x8C89+gl_TRANSFORM_FEEDBACK_BUFFER_SIZE :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85+gl_MAX_DEBUG_MESSAGE_LENGTH_ARB :: GLenum+gl_MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143+gl_EXTENSIONS :: GLenum+gl_EXTENSIONS = 0x1F03+gl_RESAMPLE_AVERAGE_OML :: GLenum+gl_RESAMPLE_AVERAGE_OML = 0x8988+gl_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV :: GLenum+gl_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033+gl_RELATIVE_SMALL_CCW_ARC_TO_NV :: GLenum+gl_RELATIVE_SMALL_CCW_ARC_TO_NV = 0x13+gl_FRONT :: GLenum+gl_FRONT = 0x0404+gl_BLEND_COLOR_EXT :: GLenum+gl_BLEND_COLOR_EXT = 0x8005+gl_BUFFER_ACCESS_OES :: GLenum+gl_BUFFER_ACCESS_OES = 0x88BB+gl_MATRIX29_ARB :: GLenum+gl_MATRIX29_ARB = 0x88DD+gl_GEOMETRY_LINKED_INPUT_TYPE_EXT :: GLenum+gl_GEOMETRY_LINKED_INPUT_TYPE_EXT = 0x8917+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 0x8CD0+gl_COLOR_ATTACHMENT12_EXT :: GLenum+gl_COLOR_ATTACHMENT12_EXT = 0x8CEC+gl_DRAW_BUFFER1 :: GLenum+gl_DRAW_BUFFER1 = 0x8826+gl_FLOAT_32_UNSIGNED_INT_24_8_REV :: GLenum+gl_FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD+gl_UNSIGNED_INT_SAMPLER_2D_RECT_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5+gl_UNSIGNED_INT_SAMPLER_CUBE :: GLenum+gl_UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4+gl_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI :: GLenum+gl_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D4+gl_MAX_CULL_DISTANCES :: GLenum+gl_MAX_CULL_DISTANCES = 0x82F9+gl_TEXTURE_LOD_BIAS_S_SGIX :: GLenum+gl_TEXTURE_LOD_BIAS_S_SGIX = 0x818E+gl_SPRITE_SGIX :: GLenum+gl_SPRITE_SGIX = 0x8148+gl_VERTEX_ATTRIB_ARRAY3_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY3_NV = 0x8653+gl_QUAD_INTENSITY4_SGIS :: GLenum+gl_QUAD_INTENSITY4_SGIS = 0x8122+gl_DIFFERENCE_KHR :: GLenum+gl_DIFFERENCE_KHR = 0x929E+gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = 0x90D9+gl_VOLATILE_APPLE :: GLenum+gl_VOLATILE_APPLE = 0x8A1A+gl_MAT_EMISSION_BIT_PGI :: GLenum+gl_MAT_EMISSION_BIT_PGI = 0x00800000+gl_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV :: GLenum+gl_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = 0x8C75+gl_DRAW_FRAMEBUFFER_BINDING :: GLenum+gl_DRAW_FRAMEBUFFER_BINDING = 0x8CA6+gl_TEXTURE8 :: GLenum+gl_TEXTURE8 = 0x84C8+gl_MUL_ATI :: GLenum+gl_MUL_ATI = 0x8964+gl_PROGRAM_OBJECT_EXT :: GLenum+gl_PROGRAM_OBJECT_EXT = 0x8B40+gl_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x8810+gl_MATRIX_INDEX_ARRAY_TYPE_ARB :: GLenum+gl_MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847+gl_PIXEL_MAG_FILTER_EXT :: GLenum+gl_PIXEL_MAG_FILTER_EXT = 0x8331+gl_LESS :: GLenum+gl_LESS = 0x0201+gl_SOURCE2_RGB_ARB :: GLenum+gl_SOURCE2_RGB_ARB = 0x8582+gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH :: GLenum+gl_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35+gl_PATH_STENCIL_VALUE_MASK_NV :: GLenum+gl_PATH_STENCIL_VALUE_MASK_NV = 0x90B9+gl_IMPLEMENTATION_COLOR_READ_TYPE :: GLenum+gl_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A+gl_TEXTURE_CLIPMAP_CENTER_SGIX :: GLenum+gl_TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171+gl_BUFFER :: GLenum+gl_BUFFER = 0x82E0+gl_DEBUG_CALLBACK_USER_PARAM_ARB :: GLenum+gl_DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245+gl_FIXED_OES :: GLenum+gl_FIXED_OES = 0x140C+gl_INT_VEC2 :: GLenum+gl_INT_VEC2 = 0x8B53+gl_VARIANT_VALUE_EXT :: GLenum+gl_VARIANT_VALUE_EXT = 0x87E4+gl_QUAD_STRIP :: GLenum+gl_QUAD_STRIP = 0x0008+gl_COMPRESSED_RGB_BPTC_SIGNED_FLOAT :: GLenum+gl_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x8E8E+gl_ZERO_TO_ONE :: GLenum+gl_ZERO_TO_ONE = 0x935F+gl_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB :: GLenum+gl_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x880A+gl_CND_ATI :: GLenum+gl_CND_ATI = 0x896A+gl_PROGRAM_POINT_SIZE :: GLenum+gl_PROGRAM_POINT_SIZE = 0x8642+gl_VIEWPORT_BOUNDS_RANGE :: GLenum+gl_VIEWPORT_BOUNDS_RANGE = 0x825D+gl_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL :: GLenum+gl_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F6+gl_R1UI_T2F_N3F_V3F_SUN :: GLenum+gl_R1UI_T2F_N3F_V3F_SUN = 0x85CA+gl_DEPTH_STENCIL_EXT :: GLenum+gl_DEPTH_STENCIL_EXT = 0x84F9+gl_RESCALE_NORMAL :: GLenum+gl_RESCALE_NORMAL = 0x803A+gl_INDEX_CLEAR_VALUE :: GLenum+gl_INDEX_CLEAR_VALUE = 0x0C20+gl_VERTEX_STREAM5_ATI :: GLenum+gl_VERTEX_STREAM5_ATI = 0x8771+gl_CON_4_ATI :: GLenum+gl_CON_4_ATI = 0x8945+gl_LAYOUT_DEFAULT_INTEL :: GLenum+gl_LAYOUT_DEFAULT_INTEL = 0+gl_RGBA8I_EXT :: GLenum+gl_RGBA8I_EXT = 0x8D8E+gl_IMAGE_CLASS_4_X_16 :: GLenum+gl_IMAGE_CLASS_4_X_16 = 0x82BC+gl_RGB8_EXT :: GLenum+gl_RGB8_EXT = 0x8051+gl_TEXTURE_DS_SIZE_NV :: GLenum+gl_TEXTURE_DS_SIZE_NV = 0x871D+gl_CLAMP_VERTEX_COLOR :: GLenum+gl_CLAMP_VERTEX_COLOR = 0x891A+gl_DEPTH_CLEAR_VALUE :: GLenum+gl_DEPTH_CLEAR_VALUE = 0x0B73+gl_VERTEX_ATTRIB_ARRAY_SIZE_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x8623+gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x90D8+gl_RGB_FLOAT16_APPLE :: GLenum+gl_RGB_FLOAT16_APPLE = 0x881B+gl_DOT_PRODUCT_REFLECT_CUBE_MAP_NV :: GLenum+gl_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x86F2+gl_COLOR_ATTACHMENT1 :: GLenum+gl_COLOR_ATTACHMENT1 = 0x8CE1+gl_MAX_TESS_GEN_LEVEL_EXT :: GLenum+gl_MAX_TESS_GEN_LEVEL_EXT = 0x8E7E+gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER :: GLenum+gl_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45+gl_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM :: GLenum+gl_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = 0x8F66+gl_MATRIX3_ARB :: GLenum+gl_MATRIX3_ARB = 0x88C3+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB :: GLenum+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF+gl_FRAGMENT_PROGRAM_BINDING_NV :: GLenum+gl_FRAGMENT_PROGRAM_BINDING_NV = 0x8873+gl_DOT2_ADD_ATI :: GLenum+gl_DOT2_ADD_ATI = 0x896C+gl_CON_2_ATI :: GLenum+gl_CON_2_ATI = 0x8943+gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 0x8CD9+gl_UNIFORM_ARRAY_STRIDE :: GLenum+gl_UNIFORM_ARRAY_STRIDE = 0x8A3C+gl_RECLAIM_MEMORY_HINT_PGI :: GLenum+gl_RECLAIM_MEMORY_HINT_PGI = 0x1A1FE+gl_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS :: GLenum+gl_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80+gl_DRAW_BUFFER11_ARB :: GLenum+gl_DRAW_BUFFER11_ARB = 0x8830+gl_NORMAL_ARRAY :: GLenum+gl_NORMAL_ARRAY = 0x8075+gl_PATH_GEN_COMPONENTS_NV :: GLenum+gl_PATH_GEN_COMPONENTS_NV = 0x90B3+gl_COLOR_FLOAT_APPLE :: GLenum+gl_COLOR_FLOAT_APPLE = 0x8A0F+gl_WAIT_FAILED :: GLenum+gl_WAIT_FAILED = 0x911D+gl_SAMPLER_1D_ARRAY_SHADOW :: GLenum+gl_SAMPLER_1D_ARRAY_SHADOW = 0x8DC3+gl_PIXEL_TEX_GEN_Q_CEILING_SGIX :: GLenum+gl_PIXEL_TEX_GEN_Q_CEILING_SGIX = 0x8184+gl_ALWAYS_FAST_HINT_PGI :: GLenum+gl_ALWAYS_FAST_HINT_PGI = 0x1A20C+gl_GEOMETRY_OUTPUT_TYPE_EXT :: GLenum+gl_GEOMETRY_OUTPUT_TYPE_EXT = 0x8DDC+gl_MAX_PROGRAM_PATCH_ATTRIBS_NV :: GLenum+gl_MAX_PROGRAM_PATCH_ATTRIBS_NV = 0x86D8+gl_TEXTURE_1D_ARRAY :: GLenum+gl_TEXTURE_1D_ARRAY = 0x8C18+gl_LIST_MODE :: GLenum+gl_LIST_MODE = 0x0B30+gl_COLOR_ARRAY_TYPE :: GLenum+gl_COLOR_ARRAY_TYPE = 0x8082+gl_SAMPLE_MASK_VALUE_EXT :: GLenum+gl_SAMPLE_MASK_VALUE_EXT = 0x80AA+gl_PIXEL_BUFFER_BARRIER_BIT :: GLenum+gl_PIXEL_BUFFER_BARRIER_BIT = 0x00000080+gl_SCISSOR_BOX :: GLenum+gl_SCISSOR_BOX = 0x0C10+gl_UNSIGNED_INT_SAMPLER_3D_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3+gl_MAX_ATOMIC_COUNTER_BUFFER_SIZE :: GLenum+gl_MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x92D8+gl_CLIENT_ALL_ATTRIB_BITS :: GLenum+gl_CLIENT_ALL_ATTRIB_BITS = 0xFFFFFFFF+gl_TRANSPOSE_MODELVIEW_MATRIX_ARB :: GLenum+gl_TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3+gl_TEXTURE_BINDING_RECTANGLE_NV :: GLenum+gl_TEXTURE_BINDING_RECTANGLE_NV = 0x84F6+gl_ALPHA_FLOAT32_ATI :: GLenum+gl_ALPHA_FLOAT32_ATI = 0x8816+gl_MAP1_TEXTURE_COORD_4 :: GLenum+gl_MAP1_TEXTURE_COORD_4 = 0x0D96+gl_CONSTANT_ALPHA :: GLenum+gl_CONSTANT_ALPHA = 0x8003+gl_PREVIOUS_EXT :: GLenum+gl_PREVIOUS_EXT = 0x8578+gl_PACK_COMPRESSED_SIZE_SGIX :: GLenum+gl_PACK_COMPRESSED_SIZE_SGIX = 0x831C+gl_IMAGE_2D_ARRAY_EXT :: GLenum+gl_IMAGE_2D_ARRAY_EXT = 0x9053+gl_ASYNC_TEX_IMAGE_SGIX :: GLenum+gl_ASYNC_TEX_IMAGE_SGIX = 0x835C+gl_QUERY_RESULT :: GLenum+gl_QUERY_RESULT = 0x8866+gl_MATRIX0_ARB :: GLenum+gl_MATRIX0_ARB = 0x88C0+gl_UNPACK_CMYK_HINT_EXT :: GLenum+gl_UNPACK_CMYK_HINT_EXT = 0x800F+gl_MAP1_TEXTURE_COORD_1 :: GLenum+gl_MAP1_TEXTURE_COORD_1 = 0x0D93+gl_CONTEXT_RELEASE_BEHAVIOR_FLUSH :: GLenum+gl_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x82FC+gl_PN_TRIANGLES_POINT_MODE_LINEAR_ATI :: GLenum+gl_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x87F5+gl_TEXTURE_BLUE_SIZE_EXT :: GLenum+gl_TEXTURE_BLUE_SIZE_EXT = 0x805E+gl_VARIANT_EXT :: GLenum+gl_VARIANT_EXT = 0x87C1+gl_UNPACK_ROW_LENGTH :: GLenum+gl_UNPACK_ROW_LENGTH = 0x0CF2+gl_VARIANT_DATATYPE_EXT :: GLenum+gl_VARIANT_DATATYPE_EXT = 0x87E5+gl_LINEAR_MIPMAP_LINEAR :: GLenum+gl_LINEAR_MIPMAP_LINEAR = 0x2703+gl_ALPHA8I_EXT :: GLenum+gl_ALPHA8I_EXT = 0x8D90+gl_OUTPUT_TEXTURE_COORD20_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD20_EXT = 0x87B1+gl_EYE_LINEAR :: GLenum+gl_EYE_LINEAR = 0x2400+gl_VIEWPORT :: GLenum+gl_VIEWPORT = 0x0BA2+gl_SHADER_BINARY_DMP :: GLenum+gl_SHADER_BINARY_DMP = 0x9250+gl_TEXTURE25_ARB :: GLenum+gl_TEXTURE25_ARB = 0x84D9+gl_UNSIGNED_SHORT_4_4_4_4_EXT :: GLenum+gl_UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033+gl_PROXY_HISTOGRAM_EXT :: GLenum+gl_PROXY_HISTOGRAM_EXT = 0x8025+gl_SCALEBIAS_HINT_SGIX :: GLenum+gl_SCALEBIAS_HINT_SGIX = 0x8322+gl_MAP_INVALIDATE_RANGE_BIT_EXT :: GLenum+gl_MAP_INVALIDATE_RANGE_BIT_EXT = 0x0004+gl_FRAGMENT_PROGRAM_CALLBACK_MESA :: GLenum+gl_FRAGMENT_PROGRAM_CALLBACK_MESA = 0x8BB1+gl_TRANSLATE_3D_NV :: GLenum+gl_TRANSLATE_3D_NV = 0x9091+gl_PATH_COORD_COUNT_NV :: GLenum+gl_PATH_COORD_COUNT_NV = 0x909E+gl_MAX_ACTIVE_LIGHTS_SGIX :: GLenum+gl_MAX_ACTIVE_LIGHTS_SGIX = 0x8405+gl_TRANSFORM_FEEDBACK_OVERFLOW_ARB :: GLenum+gl_TRANSFORM_FEEDBACK_OVERFLOW_ARB = 0x82EC+gl_REFERENCE_PLANE_EQUATION_SGIX :: GLenum+gl_REFERENCE_PLANE_EQUATION_SGIX = 0x817E+gl_PATH_TERMINAL_DASH_CAP_NV :: GLenum+gl_PATH_TERMINAL_DASH_CAP_NV = 0x907D+gl_INDEX_ARRAY :: GLenum+gl_INDEX_ARRAY = 0x8077+gl_INNOCENT_CONTEXT_RESET_ARB :: GLenum+gl_INNOCENT_CONTEXT_RESET_ARB = 0x8254+gl_TEXTURE_BINDING_1D :: GLenum+gl_TEXTURE_BINDING_1D = 0x8068+gl_TRANSFORM_FEEDBACK_BUFFER_STRIDE :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x934C+gl_QUERY_OBJECT_EXT :: GLenum+gl_QUERY_OBJECT_EXT = 0x9153+gl_UNIFORM_BLOCK :: GLenum+gl_UNIFORM_BLOCK = 0x92E2+gl_CONVOLUTION_HEIGHT :: GLenum+gl_CONVOLUTION_HEIGHT = 0x8019+gl_STENCIL_FAIL :: GLenum+gl_STENCIL_FAIL = 0x0B94+gl_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX :: GLenum+gl_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B+gl_TEXTURE_SAMPLES_IMG :: GLenum+gl_TEXTURE_SAMPLES_IMG = 0x9136+gl_REFLECTION_MAP_NV :: GLenum+gl_REFLECTION_MAP_NV = 0x8512+gl_GREEN_SCALE :: GLenum+gl_GREEN_SCALE = 0x0D18+gl_TRANSFORM_FEEDBACK_BUFFER_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_EXT = 0x8C8E+gl_LIGHTEN_NV :: GLenum+gl_LIGHTEN_NV = 0x9298+gl_HISTOGRAM_ALPHA_SIZE_EXT :: GLenum+gl_HISTOGRAM_ALPHA_SIZE_EXT = 0x802B+gl_UNSIGNED_INT64_NV :: GLenum+gl_UNSIGNED_INT64_NV = 0x140F+gl_LINE_STIPPLE_REPEAT :: GLenum+gl_LINE_STIPPLE_REPEAT = 0x0B26+gl_YCBCR_MESA :: GLenum+gl_YCBCR_MESA = 0x8757+gl_LEQUAL :: GLenum+gl_LEQUAL = 0x0203+gl_BUFFER_USAGE_ARB :: GLenum+gl_BUFFER_USAGE_ARB = 0x8765+gl_MAP1_VERTEX_ATTRIB6_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB6_4_NV = 0x8666+gl_SAMPLER_BUFFER_AMD :: GLenum+gl_SAMPLER_BUFFER_AMD = 0x9001+gl_OBJECT_DISTANCE_TO_LINE_SGIS :: GLenum+gl_OBJECT_DISTANCE_TO_LINE_SGIS = 0x81F3+gl_PIXEL_COUNT_NV :: GLenum+gl_PIXEL_COUNT_NV = 0x8866+gl_VERTEX_PROGRAM_POSITION_MESA :: GLenum+gl_VERTEX_PROGRAM_POSITION_MESA = 0x8BB4+gl_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI :: GLenum+gl_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x87F7+gl_POST_COLOR_MATRIX_BLUE_BIAS :: GLenum+gl_POST_COLOR_MATRIX_BLUE_BIAS = 0x80BA+gl_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX :: GLenum+gl_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = 0x904B+gl_VERTEX_ATTRIB_MAP2_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP2_APPLE = 0x8A01+gl_PLUS_DARKER_NV :: GLenum+gl_PLUS_DARKER_NV = 0x9292+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x906B+gl_FRAGMENT_SHADER_INVOCATIONS_ARB :: GLenum+gl_FRAGMENT_SHADER_INVOCATIONS_ARB = 0x82F4+gl_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x9069+gl_PROXY_TEXTURE_CUBE_MAP_ARRAY :: GLenum+gl_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B+gl_UNSIGNED_INT_IMAGE_CUBE_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_CUBE_EXT = 0x9066+gl_DYNAMIC_DRAW_ARB :: GLenum+gl_DYNAMIC_DRAW_ARB = 0x88E8+gl_RGBA_SNORM :: GLenum+gl_RGBA_SNORM = 0x8F93+gl_MAX_UNIFORM_BLOCK_SIZE :: GLenum+gl_MAX_UNIFORM_BLOCK_SIZE = 0x8A30+gl_FUNC_REVERSE_SUBTRACT_EXT :: GLenum+gl_FUNC_REVERSE_SUBTRACT_EXT = 0x800B+gl_STENCIL_BUFFER_BIT1_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT1_QCOM = 0x00020000+gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB+gl_TEXTURE_1D_BINDING_EXT :: GLenum+gl_TEXTURE_1D_BINDING_EXT = 0x8068+gl_RGBA4_EXT :: GLenum+gl_RGBA4_EXT = 0x8056+gl_PREFER_DOUBLEBUFFER_HINT_PGI :: GLenum+gl_PREFER_DOUBLEBUFFER_HINT_PGI = 0x1A1F8+gl_UNKNOWN_CONTEXT_RESET_KHR :: GLenum+gl_UNKNOWN_CONTEXT_RESET_KHR = 0x8255+gl_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES :: GLenum+gl_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x8E5C+gl_REFERENCED_BY_COMPUTE_SHADER :: GLenum+gl_REFERENCED_BY_COMPUTE_SHADER = 0x930B+gl_REG_17_ATI :: GLenum+gl_REG_17_ATI = 0x8932+gl_BUFFER_FLUSHING_UNMAP_APPLE :: GLenum+gl_BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13+gl_UNIFORM :: GLenum+gl_UNIFORM = 0x92E1+gl_TEXCOORD4_BIT_PGI :: GLenum+gl_TEXCOORD4_BIT_PGI = 0x80000000+gl_BIAS_BY_NEGATIVE_ONE_HALF_NV :: GLenum+gl_BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541+gl_OP_FLOOR_EXT :: GLenum+gl_OP_FLOOR_EXT = 0x878F+gl_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV :: GLenum+gl_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x86D9+gl_CURRENT_QUERY :: GLenum+gl_CURRENT_QUERY = 0x8865+gl_UNIFORM_BUFFER_START :: GLenum+gl_UNIFORM_BUFFER_START = 0x8A29+gl_DEBUG_SEVERITY_HIGH_KHR :: GLenum+gl_DEBUG_SEVERITY_HIGH_KHR = 0x9146+gl_T2F_C4UB_V3F :: GLenum+gl_T2F_C4UB_V3F = 0x2A29+gl_FONT_GLYPHS_AVAILABLE_NV :: GLenum+gl_FONT_GLYPHS_AVAILABLE_NV = 0x9368+gl_MAX_CONVOLUTION_HEIGHT_EXT :: GLenum+gl_MAX_CONVOLUTION_HEIGHT_EXT = 0x801B+gl_STENCIL_BUFFER_BIT3_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT3_QCOM = 0x00080000+gl_MAP1_VERTEX_ATTRIB3_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB3_4_NV = 0x8663+gl_BLEND_EQUATION_ALPHA_EXT :: GLenum+gl_BLEND_EQUATION_ALPHA_EXT = 0x883D+gl_RGB_FLOAT32_APPLE :: GLenum+gl_RGB_FLOAT32_APPLE = 0x8815+gl_CONSTANT_BORDER :: GLenum+gl_CONSTANT_BORDER = 0x8151+gl_CON_0_ATI :: GLenum+gl_CON_0_ATI = 0x8941+gl_VERTEX_ARRAY_RANGE_POINTER_NV :: GLenum+gl_VERTEX_ARRAY_RANGE_POINTER_NV = 0x8521+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV :: GLenum+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8852+gl_INTERLACE_SGIX :: GLenum+gl_INTERLACE_SGIX = 0x8094+gl_UNPACK_CONSTANT_DATA_SUNX :: GLenum+gl_UNPACK_CONSTANT_DATA_SUNX = 0x81D5+gl_VERTEX_BINDING_STRIDE :: GLenum+gl_VERTEX_BINDING_STRIDE = 0x82D8+gl_IS_PER_PATCH :: GLenum+gl_IS_PER_PATCH = 0x92E7+gl_AVERAGE_HP :: GLenum+gl_AVERAGE_HP = 0x8160+gl_MAX_VERTEX_ATTRIBS :: GLenum+gl_MAX_VERTEX_ATTRIBS = 0x8869+gl_MAX_SAMPLES_ANGLE :: GLenum+gl_MAX_SAMPLES_ANGLE = 0x8D57+gl_RED_EXT :: GLenum+gl_RED_EXT = 0x1903+gl_MAP1_NORMAL :: GLenum+gl_MAP1_NORMAL = 0x0D92+gl_TEXTURE_COMPRESSED_BLOCK_HEIGHT :: GLenum+gl_TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x82B2+gl_MIN_SAMPLE_SHADING_VALUE_ARB :: GLenum+gl_MIN_SAMPLE_SHADING_VALUE_ARB = 0x8C37+gl_COMPRESSED_SLUMINANCE_EXT :: GLenum+gl_COMPRESSED_SLUMINANCE_EXT = 0x8C4A+gl_RGBA4 :: GLenum+gl_RGBA4 = 0x8056+gl_TEXTURE_VIEW_MIN_LAYER :: GLenum+gl_TEXTURE_VIEW_MIN_LAYER = 0x82DD+gl_ONE_EXT :: GLenum+gl_ONE_EXT = 0x87DE+gl_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES :: GLenum+gl_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = 0x9277+gl_MODELVIEW31_ARB :: GLenum+gl_MODELVIEW31_ARB = 0x873F+gl_MAX_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_TEXTURE_IMAGE_UNITS = 0x8872+gl_COLOR_ATTACHMENT3_NV :: GLenum+gl_COLOR_ATTACHMENT3_NV = 0x8CE3+gl_LUMINANCE6_ALPHA2 :: GLenum+gl_LUMINANCE6_ALPHA2 = 0x8044+gl_POINT_SPRITE_R_MODE_NV :: GLenum+gl_POINT_SPRITE_R_MODE_NV = 0x8863+gl_COMPARE_REF_TO_TEXTURE :: GLenum+gl_COMPARE_REF_TO_TEXTURE = 0x884E+gl_MAX_PROJECTION_STACK_DEPTH :: GLenum+gl_MAX_PROJECTION_STACK_DEPTH = 0x0D38+gl_BLEND_DST_ALPHA :: GLenum+gl_BLEND_DST_ALPHA = 0x80CA+gl_TEXTURE_1D_STACK_BINDING_MESAX :: GLenum+gl_TEXTURE_1D_STACK_BINDING_MESAX = 0x875D+gl_VERTEX_ATTRIB_ARRAY_LENGTH_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A+gl_PROGRAM_PARAMETER_NV :: GLenum+gl_PROGRAM_PARAMETER_NV = 0x8644+gl_VIDEO_CAPTURE_FRAME_WIDTH_NV :: GLenum+gl_VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038+gl_MATRIX21_ARB :: GLenum+gl_MATRIX21_ARB = 0x88D5+gl_LIST_BASE :: GLenum+gl_LIST_BASE = 0x0B32+gl_COLOR_ATTACHMENT5 :: GLenum+gl_COLOR_ATTACHMENT5 = 0x8CE5+gl_VERTEX_ARRAY_BINDING_APPLE :: GLenum+gl_VERTEX_ARRAY_BINDING_APPLE = 0x85B5+gl_RELATIVE_LARGE_CW_ARC_TO_NV :: GLenum+gl_RELATIVE_LARGE_CW_ARC_TO_NV = 0x19+gl_MAX_DEFORMATION_ORDER_SGIX :: GLenum+gl_MAX_DEFORMATION_ORDER_SGIX = 0x8197+gl_COVERAGE_AUTOMATIC_NV :: GLenum+gl_COVERAGE_AUTOMATIC_NV = 0x8ED7+gl_FOG_FUNC_SGIS :: GLenum+gl_FOG_FUNC_SGIS = 0x812A+gl_SAMPLER_BUFFER_EXT :: GLenum+gl_SAMPLER_BUFFER_EXT = 0x8DC2+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2+gl_RGB8 :: GLenum+gl_RGB8 = 0x8051+gl_PRIMARY_COLOR_NV :: GLenum+gl_PRIMARY_COLOR_NV = 0x852C+gl_DEPTH_TEXTURE_MODE_ARB :: GLenum+gl_DEPTH_TEXTURE_MODE_ARB = 0x884B+gl_LUMINANCE12_ALPHA4 :: GLenum+gl_LUMINANCE12_ALPHA4 = 0x8046+gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x90D9+gl_TEXTURE_BUFFER_EXT :: GLenum+gl_TEXTURE_BUFFER_EXT = 0x8C2A+gl_LINK_STATUS :: GLenum+gl_LINK_STATUS = 0x8B82+gl_VERTEX_SHADER_EXT :: GLenum+gl_VERTEX_SHADER_EXT = 0x8780+gl_VERTEX_ARRAY_POINTER :: GLenum+gl_VERTEX_ARRAY_POINTER = 0x808E+gl_ONE_MINUS_SRC1_ALPHA :: GLenum+gl_ONE_MINUS_SRC1_ALPHA = 0x88FB+gl_TEXTURE_BUFFER_SIZE_EXT :: GLenum+gl_TEXTURE_BUFFER_SIZE_EXT = 0x919E+gl_DEBUG_SEVERITY_MEDIUM :: GLenum+gl_DEBUG_SEVERITY_MEDIUM = 0x9147+gl_ASYNC_READ_PIXELS_SGIX :: GLenum+gl_ASYNC_READ_PIXELS_SGIX = 0x835E+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1+gl_REPLACE_EXT :: GLenum+gl_REPLACE_EXT = 0x8062+gl_DEBUG_SOURCE_APPLICATION_ARB :: GLenum+gl_DEBUG_SOURCE_APPLICATION_ARB = 0x824A+gl_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB :: GLenum+gl_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = 0x9345+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES = 0x93E1+gl_BROWSER_DEFAULT_WEBGL :: GLenum+gl_BROWSER_DEFAULT_WEBGL = 0x9244+gl_MULTISAMPLE_BUFFER_BIT0_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT0_QCOM = 0x01000000+gl_DUAL_ALPHA8_SGIS :: GLenum+gl_DUAL_ALPHA8_SGIS = 0x8111+gl_COMPRESSED_RGB_FXT1_3DFX :: GLenum+gl_COMPRESSED_RGB_FXT1_3DFX = 0x86B0+gl_BLEND_SRC_RGB_OES :: GLenum+gl_BLEND_SRC_RGB_OES = 0x80C9+gl_T2F_IUI_V2F_EXT :: GLenum+gl_T2F_IUI_V2F_EXT = 0x81B1+gl_DRAW_BUFFER13_ARB :: GLenum+gl_DRAW_BUFFER13_ARB = 0x8832+gl_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV :: GLenum+gl_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = 0x84E3+gl_TEXTURE_INTENSITY_TYPE_ARB :: GLenum+gl_TEXTURE_INTENSITY_TYPE_ARB = 0x8C15+gl_DU8DV8_ATI :: GLenum+gl_DU8DV8_ATI = 0x877A+gl_MAP1_VERTEX_ATTRIB14_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB14_4_NV = 0x866E+gl_VARIANT_ARRAY_STRIDE_EXT :: GLenum+gl_VARIANT_ARRAY_STRIDE_EXT = 0x87E6+gl_RGB_S3TC :: GLenum+gl_RGB_S3TC = 0x83A0+gl_NORMAL_ARRAY_POINTER :: GLenum+gl_NORMAL_ARRAY_POINTER = 0x808F+gl_CONSTANT_ALPHA_EXT :: GLenum+gl_CONSTANT_ALPHA_EXT = 0x8003+gl_COLOR_ATTACHMENT8_NV :: GLenum+gl_COLOR_ATTACHMENT8_NV = 0x8CE8+gl_MAX_LIST_NESTING :: GLenum+gl_MAX_LIST_NESTING = 0x0B31+gl_FRAMEBUFFER_UNDEFINED :: GLenum+gl_FRAMEBUFFER_UNDEFINED = 0x8219+gl_ACTIVE_STENCIL_FACE_EXT :: GLenum+gl_ACTIVE_STENCIL_FACE_EXT = 0x8911+gl_DEPTH_SCALE :: GLenum+gl_DEPTH_SCALE = 0x0D1E+gl_READ_PIXELS_FORMAT :: GLenum+gl_READ_PIXELS_FORMAT = 0x828D+gl_QUADS_EXT :: GLenum+gl_QUADS_EXT = 0x0007+gl_MAX_COMBINED_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x90DC+gl_OUTPUT_VERTEX_EXT :: GLenum+gl_OUTPUT_VERTEX_EXT = 0x879A+gl_PROGRAM_ATTRIBS_ARB :: GLenum+gl_PROGRAM_ATTRIBS_ARB = 0x88AC+gl_MAP1_VERTEX_ATTRIB8_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB8_4_NV = 0x8668+gl_INVALID_ENUM :: GLenum+gl_INVALID_ENUM = 0x0500+gl_1PASS_EXT :: GLenum+gl_1PASS_EXT = 0x80A1+gl_FUNC_ADD_EXT :: GLenum+gl_FUNC_ADD_EXT = 0x8006+gl_DISTANCE_ATTENUATION_SGIS :: GLenum+gl_DISTANCE_ATTENUATION_SGIS = 0x8129+gl_REG_3_ATI :: GLenum+gl_REG_3_ATI = 0x8924+gl_INTERPOLATE :: GLenum+gl_INTERPOLATE = 0x8575+gl_MITER_TRUNCATE_NV :: GLenum+gl_MITER_TRUNCATE_NV = 0x90A8+gl_MAX_PROGRAM_NATIVE_ATTRIBS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF+gl_CONTEXT_COMPATIBILITY_PROFILE_BIT :: GLenum+gl_CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002+gl_MATRIX_STRIDE :: GLenum+gl_MATRIX_STRIDE = 0x92FF+gl_FONT_Y_MIN_BOUNDS_BIT_NV :: GLenum+gl_FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000+gl_COMBINER_BIAS_NV :: GLenum+gl_COMBINER_BIAS_NV = 0x8549+gl_TEXTURE_CUBE_MAP_POSITIVE_X_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x8515+gl_CIRCULAR_CW_ARC_TO_NV :: GLenum+gl_CIRCULAR_CW_ARC_TO_NV = 0xFA+gl_UNSIGNED_INT_IMAGE_1D_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_1D_EXT = 0x9062+gl_BLUE_SCALE :: GLenum+gl_BLUE_SCALE = 0x0D1A+gl_OFFSET_TEXTURE_SCALE_NV :: GLenum+gl_OFFSET_TEXTURE_SCALE_NV = 0x86E2+gl_OFFSET_TEXTURE_2D_NV :: GLenum+gl_OFFSET_TEXTURE_2D_NV = 0x86E8+gl_INTERNALFORMAT_DEPTH_SIZE :: GLenum+gl_INTERNALFORMAT_DEPTH_SIZE = 0x8275+gl_TIMEOUT_IGNORED :: GLenum+gl_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFF+gl_BGRA_EXT :: GLenum+gl_BGRA_EXT = 0x80E1+gl_GEQUAL :: GLenum+gl_GEQUAL = 0x0206+gl_EXCLUSION_KHR :: GLenum+gl_EXCLUSION_KHR = 0x92A0+gl_LINES_ADJACENCY_ARB :: GLenum+gl_LINES_ADJACENCY_ARB = 0x000A+gl_MAX_COMPUTE_WORK_GROUP_COUNT :: GLenum+gl_MAX_COMPUTE_WORK_GROUP_COUNT = 0x91BE+gl_RENDERBUFFER_EXT :: GLenum+gl_RENDERBUFFER_EXT = 0x8D41+gl_GENERATE_MIPMAP :: GLenum+gl_GENERATE_MIPMAP = 0x8191+gl_SOURCE1_ALPHA_EXT :: GLenum+gl_SOURCE1_ALPHA_EXT = 0x8589+gl_VERTEX_TEXTURE :: GLenum+gl_VERTEX_TEXTURE = 0x829B+gl_LIGHT1 :: GLenum+gl_LIGHT1 = 0x4001+gl_STATIC_READ_ARB :: GLenum+gl_STATIC_READ_ARB = 0x88E5+gl_INTERLACE_READ_INGR :: GLenum+gl_INTERLACE_READ_INGR = 0x8568+gl_COMPRESSED_R11_EAC_OES :: GLenum+gl_COMPRESSED_R11_EAC_OES = 0x9270+gl_FRAGMENT_SHADER_ARB :: GLenum+gl_FRAGMENT_SHADER_ARB = 0x8B30+gl_CURRENT_RASTER_POSITION :: GLenum+gl_CURRENT_RASTER_POSITION = 0x0B07+gl_WEIGHT_ARRAY_BUFFER_BINDING_OES :: GLenum+gl_WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x889E+gl_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = 0x886C+gl_RGB_FLOAT32_ATI :: GLenum+gl_RGB_FLOAT32_ATI = 0x8815+gl_LUMINANCE16_ALPHA16_EXT :: GLenum+gl_LUMINANCE16_ALPHA16_EXT = 0x8048+gl_RENDERBUFFER_WIDTH_EXT :: GLenum+gl_RENDERBUFFER_WIDTH_EXT = 0x8D42+gl_DEPTH_RANGE :: GLenum+gl_DEPTH_RANGE = 0x0B70+gl_4_BYTES :: GLenum+gl_4_BYTES = 0x1409+gl_VERTEX_WEIGHTING_EXT :: GLenum+gl_VERTEX_WEIGHTING_EXT = 0x8509+gl_TEXTURE_SWIZZLE_B :: GLenum+gl_TEXTURE_SWIZZLE_B = 0x8E44+gl_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV :: GLenum+gl_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x86F0+gl_FEEDBACK_BUFFER_POINTER :: GLenum+gl_FEEDBACK_BUFFER_POINTER = 0x0DF0+gl_CULL_VERTEX_IBM :: GLenum+gl_CULL_VERTEX_IBM = 103050+gl_UNPACK_SKIP_VOLUMES_SGIS :: GLenum+gl_UNPACK_SKIP_VOLUMES_SGIS = 0x8132+gl_PIXEL_CUBIC_WEIGHT_EXT :: GLenum+gl_PIXEL_CUBIC_WEIGHT_EXT = 0x8333+gl_DECR_WRAP_EXT :: GLenum+gl_DECR_WRAP_EXT = 0x8508+gl_TEXTURE31 :: GLenum+gl_TEXTURE31 = 0x84DF+gl_MAX_TESS_GEN_LEVEL :: GLenum+gl_MAX_TESS_GEN_LEVEL = 0x8E7E+gl_YCBAYCR8A_4224_NV :: GLenum+gl_YCBAYCR8A_4224_NV = 0x9032+gl_POINT_SPRITE_OES :: GLenum+gl_POINT_SPRITE_OES = 0x8861+gl_SAMPLER_EXTERNAL_OES :: GLenum+gl_SAMPLER_EXTERNAL_OES = 0x8D66+gl_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT :: GLenum+gl_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT = 0x8F63+gl_PIXEL_PACK_BUFFER_BINDING_ARB :: GLenum+gl_PIXEL_PACK_BUFFER_BINDING_ARB = 0x88ED+gl_DEBUG_CATEGORY_API_ERROR_AMD :: GLenum+gl_DEBUG_CATEGORY_API_ERROR_AMD = 0x9149+gl_TEXCOORD3_BIT_PGI :: GLenum+gl_TEXCOORD3_BIT_PGI = 0x40000000+gl_UNIFORM_BUFFER_EXT :: GLenum+gl_UNIFORM_BUFFER_EXT = 0x8DEE+gl_COMPRESSED_RGBA8_ETC2_EAC :: GLenum+gl_COMPRESSED_RGBA8_ETC2_EAC = 0x9278+gl_COLOR_SUM_CLAMP_NV :: GLenum+gl_COLOR_SUM_CLAMP_NV = 0x854F+gl_SAMPLER_CUBE :: GLenum+gl_SAMPLER_CUBE = 0x8B60+gl_FRACTIONAL_ODD :: GLenum+gl_FRACTIONAL_ODD = 0x8E7B+gl_ONE_MINUS_DST_COLOR :: GLenum+gl_ONE_MINUS_DST_COLOR = 0x0307+gl_REG_9_ATI :: GLenum+gl_REG_9_ATI = 0x892A+gl_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV :: GLenum+gl_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035+gl_PIXEL_MAP_I_TO_G :: GLenum+gl_PIXEL_MAP_I_TO_G = 0x0C73+gl_FOG_COORD_ARRAY_STRIDE :: GLenum+gl_FOG_COORD_ARRAY_STRIDE = 0x8455+gl_TRIANGLES_ADJACENCY_EXT :: GLenum+gl_TRIANGLES_ADJACENCY_EXT = 0x000C+gl_DRAW_BUFFER14_EXT :: GLenum+gl_DRAW_BUFFER14_EXT = 0x8833+gl_TEXTURE_COMPARE_MODE_ARB :: GLenum+gl_TEXTURE_COMPARE_MODE_ARB = 0x884C+gl_REFLECTION_MAP_OES :: GLenum+gl_REFLECTION_MAP_OES = 0x8512+gl_WARPS_PER_SM_NV :: GLenum+gl_WARPS_PER_SM_NV = 0x933A+gl_QUERY_WAIT :: GLenum+gl_QUERY_WAIT = 0x8E13+gl_COMPRESSED_SLUMINANCE_ALPHA :: GLenum+gl_COMPRESSED_SLUMINANCE_ALPHA = 0x8C4B+gl_MAP2_TEXTURE_COORD_3 :: GLenum+gl_MAP2_TEXTURE_COORD_3 = 0x0DB5+gl_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV :: GLenum+gl_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV = 0x08+gl_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV :: GLenum+gl_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x86F1+gl_INTENSITY_FLOAT32_ATI :: GLenum+gl_INTENSITY_FLOAT32_ATI = 0x8817+gl_CLAMP_TO_BORDER_SGIS :: GLenum+gl_CLAMP_TO_BORDER_SGIS = 0x812D+gl_FIELDS_NV :: GLenum+gl_FIELDS_NV = 0x8E27+gl_MAX_GEOMETRY_OUTPUT_VERTICES :: GLenum+gl_MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4+gl_INT_SAMPLER_CUBE_EXT :: GLenum+gl_INT_SAMPLER_CUBE_EXT = 0x8DCC+gl_SOURCE0_RGB_EXT :: GLenum+gl_SOURCE0_RGB_EXT = 0x8580+gl_DRAW_BUFFER10_ATI :: GLenum+gl_DRAW_BUFFER10_ATI = 0x882F+gl_VERTEX_ATTRIB_ARRAY_INTEGER_EXT :: GLenum+gl_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD+gl_COPY_WRITE_BUFFER_NV :: GLenum+gl_COPY_WRITE_BUFFER_NV = 0x8F37+gl_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV :: GLenum+gl_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x8E54+gl_LUMINANCE8_OES :: GLenum+gl_LUMINANCE8_OES = 0x8040+gl_POST_CONVOLUTION_RED_BIAS_EXT :: GLenum+gl_POST_CONVOLUTION_RED_BIAS_EXT = 0x8020+gl_HSL_COLOR_KHR :: GLenum+gl_HSL_COLOR_KHR = 0x92AF+gl_SAMPLE_MASK_VALUE_NV :: GLenum+gl_SAMPLE_MASK_VALUE_NV = 0x8E52+gl_SLUMINANCE8_NV :: GLenum+gl_SLUMINANCE8_NV = 0x8C47+gl_ASYNC_MARKER_SGIX :: GLenum+gl_ASYNC_MARKER_SGIX = 0x8329+gl_TEXTURE17 :: GLenum+gl_TEXTURE17 = 0x84D1+gl_SYNC_CL_EVENT_COMPLETE_ARB :: GLenum+gl_SYNC_CL_EVENT_COMPLETE_ARB = 0x8241+gl_INVARIANT_VALUE_EXT :: GLenum+gl_INVARIANT_VALUE_EXT = 0x87EA+gl_BUMP_ROT_MATRIX_SIZE_ATI :: GLenum+gl_BUMP_ROT_MATRIX_SIZE_ATI = 0x8776+gl_ACTIVE_VARYING_MAX_LENGTH_NV :: GLenum+gl_ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82+gl_DEPTH_COMPONENT16 :: GLenum+gl_DEPTH_COMPONENT16 = 0x81A5+gl_MODELVIEW25_ARB :: GLenum+gl_MODELVIEW25_ARB = 0x8739+gl_SHADER_BINARY_VIV :: GLenum+gl_SHADER_BINARY_VIV = 0x8FC4+gl_VERTEX_ARRAY_STRIDE_EXT :: GLenum+gl_VERTEX_ARRAY_STRIDE_EXT = 0x807C+gl_VERTEX_ATTRIB_ARRAY_POINTER_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x8645+gl_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB :: GLenum+gl_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004+gl_MAX_PALETTE_MATRICES_ARB :: GLenum+gl_MAX_PALETTE_MATRICES_ARB = 0x8842+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER :: GLenum+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x92CA+gl_DEPTH_COMPONENT32_ARB :: GLenum+gl_DEPTH_COMPONENT32_ARB = 0x81A7+gl_PRESERVE_ATI :: GLenum+gl_PRESERVE_ATI = 0x8762+gl_PIXEL_TEX_GEN_ALPHA_LS_SGIX :: GLenum+gl_PIXEL_TEX_GEN_ALPHA_LS_SGIX = 0x8189+gl_VERTEX_PROGRAM_TWO_SIDE_NV :: GLenum+gl_VERTEX_PROGRAM_TWO_SIDE_NV = 0x8643+gl_MAX_ELEMENTS_INDICES_EXT :: GLenum+gl_MAX_ELEMENTS_INDICES_EXT = 0x80E9+gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33+gl_CONTEXT_LOST :: GLenum+gl_CONTEXT_LOST = 0x0507+gl_VERTEX_SUBROUTINE_UNIFORM :: GLenum+gl_VERTEX_SUBROUTINE_UNIFORM = 0x92EE+gl_COMPRESSED_SRGB_EXT :: GLenum+gl_COMPRESSED_SRGB_EXT = 0x8C48+gl_SAMPLER_2D_MULTISAMPLE_ARRAY :: GLenum+gl_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B+gl_MAX_PROGRAM_ADDRESS_REGISTERS_ARB :: GLenum+gl_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1+gl_STENCIL_INDEX_OES :: GLenum+gl_STENCIL_INDEX_OES = 0x1901+gl_PATH_INITIAL_END_CAP_NV :: GLenum+gl_PATH_INITIAL_END_CAP_NV = 0x9077+gl_INTENSITY32F_ARB :: GLenum+gl_INTENSITY32F_ARB = 0x8817+gl_SAMPLES_PASSED :: GLenum+gl_SAMPLES_PASSED = 0x8914+gl_INT_IMAGE_2D_RECT_EXT :: GLenum+gl_INT_IMAGE_2D_RECT_EXT = 0x905A+gl_CLIP_PLANE2 :: GLenum+gl_CLIP_PLANE2 = 0x3002+gl_PALETTE8_RGB8_OES :: GLenum+gl_PALETTE8_RGB8_OES = 0x8B95+gl_ALPHA16I_EXT :: GLenum+gl_ALPHA16I_EXT = 0x8D8A+gl_VERTEX_ARRAY :: GLenum+gl_VERTEX_ARRAY = 0x8074+gl_TEXTURE23_ARB :: GLenum+gl_TEXTURE23_ARB = 0x84D7+gl_AMBIENT_AND_DIFFUSE :: GLenum+gl_AMBIENT_AND_DIFFUSE = 0x1602+gl_MULTISAMPLE_BUFFER_BIT2_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT2_QCOM = 0x04000000+gl_LUMINANCE_FLOAT16_ATI :: GLenum+gl_LUMINANCE_FLOAT16_ATI = 0x881E+gl_INDEX_ARRAY_TYPE :: GLenum+gl_INDEX_ARRAY_TYPE = 0x8085+gl_COMPATIBLE_SUBROUTINES :: GLenum+gl_COMPATIBLE_SUBROUTINES = 0x8E4B+gl_VERTEX4_BIT_PGI :: GLenum+gl_VERTEX4_BIT_PGI = 0x00000008+gl_FOG_COORD_SRC :: GLenum+gl_FOG_COORD_SRC = 0x8450+gl_FULL_SUPPORT :: GLenum+gl_FULL_SUPPORT = 0x82B7+gl_STEREO :: GLenum+gl_STEREO = 0x0C33+gl_LUMINANCE_ALPHA16UI_EXT :: GLenum+gl_LUMINANCE_ALPHA16UI_EXT = 0x8D7B+gl_ONE_MINUS_SRC_COLOR :: GLenum+gl_ONE_MINUS_SRC_COLOR = 0x0301+gl_MAX_SHADER_STORAGE_BLOCK_SIZE :: GLenum+gl_MAX_SHADER_STORAGE_BLOCK_SIZE = 0x90DE+gl_REPLICATE_BORDER_HP :: GLenum+gl_REPLICATE_BORDER_HP = 0x8153+gl_VERTEX_ATTRIB_MAP1_ORDER_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04+gl_CPU_OPTIMIZED_QCOM :: GLenum+gl_CPU_OPTIMIZED_QCOM = 0x8FB1+gl_FLOAT16_VEC2_NV :: GLenum+gl_FLOAT16_VEC2_NV = 0x8FF9+gl_SAMPLE_ALPHA_TO_ONE_SGIS :: GLenum+gl_SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F+gl_MAP2_VERTEX_ATTRIB12_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB12_4_NV = 0x867C+gl_COMBINER_MUX_SUM_NV :: GLenum+gl_COMBINER_MUX_SUM_NV = 0x8547+gl_UNSIGNED_SHORT_5_6_5_REV_EXT :: GLenum+gl_UNSIGNED_SHORT_5_6_5_REV_EXT = 0x8364+gl_TEXTURE20_ARB :: GLenum+gl_TEXTURE20_ARB = 0x84D4+gl_DOT3_RGB :: GLenum+gl_DOT3_RGB = 0x86AE+gl_STENCIL_BUFFER_BIT0_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT0_QCOM = 0x00010000+gl_LO_SCALE_NV :: GLenum+gl_LO_SCALE_NV = 0x870F+gl_FONT_ASCENDER_BIT_NV :: GLenum+gl_FONT_ASCENDER_BIT_NV = 0x00200000+gl_DRAW_BUFFER9_EXT :: GLenum+gl_DRAW_BUFFER9_EXT = 0x882E+gl_UNSIGNED_INT_2_10_10_10_REV :: GLenum+gl_UNSIGNED_INT_2_10_10_10_REV = 0x8368+gl_BINNING_CONTROL_HINT_QCOM :: GLenum+gl_BINNING_CONTROL_HINT_QCOM = 0x8FB0+gl_PROGRAM_TEMPORARIES_ARB :: GLenum+gl_PROGRAM_TEMPORARIES_ARB = 0x88A4+gl_MODELVIEW27_ARB :: GLenum+gl_MODELVIEW27_ARB = 0x873B+gl_RGBA16F_EXT :: GLenum+gl_RGBA16F_EXT = 0x881A+gl_INDEX_ARRAY_TYPE_EXT :: GLenum+gl_INDEX_ARRAY_TYPE_EXT = 0x8085+gl_MAX_VERTEX_SHADER_LOCALS_EXT :: GLenum+gl_MAX_VERTEX_SHADER_LOCALS_EXT = 0x87C9+gl_TEXTURE_CUBE_MAP_POSITIVE_Z_OES :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 0x8519+gl_COMP_BIT_ATI :: GLenum+gl_COMP_BIT_ATI = 0x00000002+gl_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT :: GLenum+gl_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = 0x8A2C+gl_INT_IMAGE_2D_MULTISAMPLE_ARRAY :: GLenum+gl_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x9061+gl_RGB10_A2_EXT :: GLenum+gl_RGB10_A2_EXT = 0x8059+gl_MAP1_VERTEX_ATTRIB4_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB4_4_NV = 0x8664+gl_FLOAT_VEC3 :: GLenum+gl_FLOAT_VEC3 = 0x8B51+gl_DELETE_STATUS :: GLenum+gl_DELETE_STATUS = 0x8B80+gl_PN_TRIANGLES_TESSELATION_LEVEL_ATI :: GLenum+gl_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F4+gl_UNCORRELATED_NV :: GLenum+gl_UNCORRELATED_NV = 0x9282+gl_RELATIVE_SMALL_CW_ARC_TO_NV :: GLenum+gl_RELATIVE_SMALL_CW_ARC_TO_NV = 0x15+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT :: GLenum+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F+gl_RGB_FLOAT16_ATI :: GLenum+gl_RGB_FLOAT16_ATI = 0x881B+gl_DRAW_BUFFER7_ATI :: GLenum+gl_DRAW_BUFFER7_ATI = 0x882C+gl_COMBINE_ALPHA_ARB :: GLenum+gl_COMBINE_ALPHA_ARB = 0x8572+gl_RESET_NOTIFICATION_STRATEGY_EXT :: GLenum+gl_RESET_NOTIFICATION_STRATEGY_EXT = 0x8256+gl_DRAW_BUFFER10_NV :: GLenum+gl_DRAW_BUFFER10_NV = 0x882F+gl_READ_PIXEL_DATA_RANGE_POINTER_NV :: GLenum+gl_READ_PIXEL_DATA_RANGE_POINTER_NV = 0x887D+gl_TRANSFORM_FEEDBACK_ACTIVE :: GLenum+gl_TRANSFORM_FEEDBACK_ACTIVE = 0x8E24+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93D4+gl_PROGRAM_PIPELINE_BINDING :: GLenum+gl_PROGRAM_PIPELINE_BINDING = 0x825A+gl_SRGB8_ALPHA8 :: GLenum+gl_SRGB8_ALPHA8 = 0x8C43+gl_COLOR_INDEX16_EXT :: GLenum+gl_COLOR_INDEX16_EXT = 0x80E7+gl_PHONG_WIN :: GLenum+gl_PHONG_WIN = 0x80EA+gl_MAX_TEXTURE_IMAGE_UNITS_NV :: GLenum+gl_MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872+gl_DSDT8_MAG8_NV :: GLenum+gl_DSDT8_MAG8_NV = 0x870A+gl_COPY_READ_BUFFER :: GLenum+gl_COPY_READ_BUFFER = 0x8F36+gl_RGBA16F :: GLenum+gl_RGBA16F = 0x881A+gl_UNSIGNED_SHORT_5_6_5 :: GLenum+gl_UNSIGNED_SHORT_5_6_5 = 0x8363+gl_CLIP_DISTANCE5 :: GLenum+gl_CLIP_DISTANCE5 = 0x3005+gl_TEXTURE_BINDING_3D_OES :: GLenum+gl_TEXTURE_BINDING_3D_OES = 0x806A+gl_IUI_V2F_EXT :: GLenum+gl_IUI_V2F_EXT = 0x81AD+gl_OFFSET_HILO_TEXTURE_RECTANGLE_NV :: GLenum+gl_OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x8855+gl_ONE_MINUS_CONSTANT_ALPHA :: GLenum+gl_ONE_MINUS_CONSTANT_ALPHA = 0x8004+gl_SMALL_CW_ARC_TO_NV :: GLenum+gl_SMALL_CW_ARC_TO_NV = 0x14+gl_IMAGE_BINDING_NAME_EXT :: GLenum+gl_IMAGE_BINDING_NAME_EXT = 0x8F3A+gl_CURRENT_FOG_COORDINATE_EXT :: GLenum+gl_CURRENT_FOG_COORDINATE_EXT = 0x8453+gl_SKIP_COMPONENTS4_NV :: GLenum+gl_SKIP_COMPONENTS4_NV = -3+gl_CLIP_PLANE5_IMG :: GLenum+gl_CLIP_PLANE5_IMG = 0x3005+gl_PATH_MITER_LIMIT_NV :: GLenum+gl_PATH_MITER_LIMIT_NV = 0x907A+gl_TEXTURE_3D :: GLenum+gl_TEXTURE_3D = 0x806F+gl_MAX_COMPUTE_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x90DB+gl_COMPRESSED_LUMINANCE_LATC1_EXT :: GLenum+gl_COMPRESSED_LUMINANCE_LATC1_EXT = 0x8C70+gl_MULTISAMPLE_BUFFER_BIT3_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT3_QCOM = 0x08000000+gl_SECONDARY_COLOR_ARRAY_SIZE :: GLenum+gl_SECONDARY_COLOR_ARRAY_SIZE = 0x845A+gl_RENDERBUFFER_SAMPLES_IMG :: GLenum+gl_RENDERBUFFER_SAMPLES_IMG = 0x9133+gl_R1UI_C4UB_V3F_SUN :: GLenum+gl_R1UI_C4UB_V3F_SUN = 0x85C5+gl_PIXEL_TEX_GEN_ALPHA_MS_SGIX :: GLenum+gl_PIXEL_TEX_GEN_ALPHA_MS_SGIX = 0x818A+gl_TRANSFORM_FEEDBACK_NV :: GLenum+gl_TRANSFORM_FEEDBACK_NV = 0x8E22+gl_FRAMEBUFFER_RENDERABLE :: GLenum+gl_FRAMEBUFFER_RENDERABLE = 0x8289+gl_HARDLIGHT_KHR :: GLenum+gl_HARDLIGHT_KHR = 0x929B+gl_SOURCE0_ALPHA :: GLenum+gl_SOURCE0_ALPHA = 0x8588+gl_COMBINER4_NV :: GLenum+gl_COMBINER4_NV = 0x8554+gl_ELEMENT_ARRAY_BUFFER_BINDING :: GLenum+gl_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895+gl_TEXTURE10_ARB :: GLenum+gl_TEXTURE10_ARB = 0x84CA+gl_CURRENT_BINORMAL_EXT :: GLenum+gl_CURRENT_BINORMAL_EXT = 0x843C+gl_REG_26_ATI :: GLenum+gl_REG_26_ATI = 0x893B+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS :: GLenum+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1+gl_ACTIVE_VARYINGS_NV :: GLenum+gl_ACTIVE_VARYINGS_NV = 0x8C81+gl_COMBINE_RGB_EXT :: GLenum+gl_COMBINE_RGB_EXT = 0x8571+gl_FRAMEBUFFER_COMPLETE_EXT :: GLenum+gl_FRAMEBUFFER_COMPLETE_EXT = 0x8CD5+gl_MAX_WIDTH :: GLenum+gl_MAX_WIDTH = 0x827E+gl_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS :: GLenum+gl_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x92C5+gl_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT :: GLenum+gl_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87C8+gl_COLORDODGE_KHR :: GLenum+gl_COLORDODGE_KHR = 0x9299+gl_PATH_GEN_COEFF_NV :: GLenum+gl_PATH_GEN_COEFF_NV = 0x90B1+gl_FLOAT_MAT4x3_NV :: GLenum+gl_FLOAT_MAT4x3_NV = 0x8B6A+gl_MINMAX_SINK :: GLenum+gl_MINMAX_SINK = 0x8030+gl_FRONT_AND_BACK :: GLenum+gl_FRONT_AND_BACK = 0x0408+gl_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT :: GLenum+gl_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = 0x8E5A+gl_MATRIX1_ARB :: GLenum+gl_MATRIX1_ARB = 0x88C1+gl_VIEWPORT_SUBPIXEL_BITS :: GLenum+gl_VIEWPORT_SUBPIXEL_BITS = 0x825C+gl_MAX_DUAL_SOURCE_DRAW_BUFFERS :: GLenum+gl_MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC+gl_BOOL_VEC3_ARB :: GLenum+gl_BOOL_VEC3_ARB = 0x8B58+gl_OPERAND2_ALPHA :: GLenum+gl_OPERAND2_ALPHA = 0x859A+gl_MAX_DEBUG_GROUP_STACK_DEPTH :: GLenum+gl_MAX_DEBUG_GROUP_STACK_DEPTH = 0x826C+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93DC+gl_PROGRAM :: GLenum+gl_PROGRAM = 0x82E2+gl_WEIGHT_ARRAY_SIZE_ARB :: GLenum+gl_WEIGHT_ARRAY_SIZE_ARB = 0x86AB+gl_BUFFER_GPU_ADDRESS_NV :: GLenum+gl_BUFFER_GPU_ADDRESS_NV = 0x8F1D+gl_ALPHA8_EXT :: GLenum+gl_ALPHA8_EXT = 0x803C+gl_RGBA_MODE :: GLenum+gl_RGBA_MODE = 0x0C31+gl_DUDV_ATI :: GLenum+gl_DUDV_ATI = 0x8779+gl_VERTEX_ATTRIB_ARRAY_INTEGER_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD+gl_RESAMPLE_DECIMATE_OML :: GLenum+gl_RESAMPLE_DECIMATE_OML = 0x8989+gl_QUERY_BUFFER :: GLenum+gl_QUERY_BUFFER = 0x9192+gl_SINGLE_COLOR :: GLenum+gl_SINGLE_COLOR = 0x81F9+gl_INT_SAMPLER_RENDERBUFFER_NV :: GLenum+gl_INT_SAMPLER_RENDERBUFFER_NV = 0x8E57+gl_MAT_COLOR_INDEXES_BIT_PGI :: GLenum+gl_MAT_COLOR_INDEXES_BIT_PGI = 0x01000000+gl_MODELVIEW3_ARB :: GLenum+gl_MODELVIEW3_ARB = 0x8723+gl_TESS_CONTROL_OUTPUT_VERTICES_EXT :: GLenum+gl_TESS_CONTROL_OUTPUT_VERTICES_EXT = 0x8E75+gl_PIXEL_MAP_B_TO_B :: GLenum+gl_PIXEL_MAP_B_TO_B = 0x0C78+gl_VERTEX_ATTRIB_MAP1_SIZE_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02+gl_DOUBLE_MAT3 :: GLenum+gl_DOUBLE_MAT3 = 0x8F47+gl_MAX_COMBINED_UNIFORM_BLOCKS :: GLenum+gl_MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT :: GLenum+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = 0x900D+gl_MAX_VERTEX_IMAGE_UNIFORMS :: GLenum+gl_MAX_VERTEX_IMAGE_UNIFORMS = 0x90CA+gl_QUERY_RESULT_NO_WAIT_AMD :: GLenum+gl_QUERY_RESULT_NO_WAIT_AMD = 0x9194+gl_MODELVIEW26_ARB :: GLenum+gl_MODELVIEW26_ARB = 0x873A+gl_DEPTH_COMPONENT24_OES :: GLenum+gl_DEPTH_COMPONENT24_OES = 0x81A6+gl_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB :: GLenum+gl_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = 0x8E8E+gl_EVAL_VERTEX_ATTRIB6_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB6_NV = 0x86CC+gl_OUTPUT_TEXTURE_COORD24_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD24_EXT = 0x87B5+gl_COMPUTE_SHADER_BIT :: GLenum+gl_COMPUTE_SHADER_BIT = 0x00000020+gl_MATRIX7_ARB :: GLenum+gl_MATRIX7_ARB = 0x88C7+gl_RENDER :: GLenum+gl_RENDER = 0x1C00+gl_VERTEX_ATTRIB_BINDING :: GLenum+gl_VERTEX_ATTRIB_BINDING = 0x82D4+gl_VIDEO_CAPTURE_TO_422_SUPPORTED_NV :: GLenum+gl_VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026+gl_TEXTURE_COORD_ARRAY_ADDRESS_NV :: GLenum+gl_TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25+gl_UNSIGNED_INT_SAMPLER_2D_RECT :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB :: GLenum+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29+gl_GENERATE_MIPMAP_SGIS :: GLenum+gl_GENERATE_MIPMAP_SGIS = 0x8191+gl_SHADER_IMAGE_STORE :: GLenum+gl_SHADER_IMAGE_STORE = 0x82A5+gl_INT_SAMPLER_3D :: GLenum+gl_INT_SAMPLER_3D = 0x8DCB+gl_PROGRAM_BINARY_LENGTH :: GLenum+gl_PROGRAM_BINARY_LENGTH = 0x8741+gl_REFERENCED_BY_GEOMETRY_SHADER :: GLenum+gl_REFERENCED_BY_GEOMETRY_SHADER = 0x9309+gl_SHADER_IMAGE_ACCESS_BARRIER_BIT :: GLenum+gl_SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020+gl_MAX_TESS_CONTROL_ATOMIC_COUNTERS :: GLenum+gl_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x92D3+gl_TEXTURE_BUFFER_OFFSET_ALIGNMENT :: GLenum+gl_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x919F+gl_LINE :: GLenum+gl_LINE = 0x1B01+gl_RENDERBUFFER_ALPHA_SIZE_EXT :: GLenum+gl_RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53+gl_INTENSITY :: GLenum+gl_INTENSITY = 0x8049+gl_AFFINE_3D_NV :: GLenum+gl_AFFINE_3D_NV = 0x9094+gl_ADD_SIGNED_ARB :: GLenum+gl_ADD_SIGNED_ARB = 0x8574+gl_OBJECT_COMPILE_STATUS_ARB :: GLenum+gl_OBJECT_COMPILE_STATUS_ARB = 0x8B81+gl_RGB8I_EXT :: GLenum+gl_RGB8I_EXT = 0x8D8F+gl_COMMAND_BARRIER_BIT :: GLenum+gl_COMMAND_BARRIER_BIT = 0x00000040+gl_COMBINE_RGB :: GLenum+gl_COMBINE_RGB = 0x8571+gl_VERTEX_SHADER_BINDING_EXT :: GLenum+gl_VERTEX_SHADER_BINDING_EXT = 0x8781+gl_SECONDARY_COLOR_ARRAY_SIZE_EXT :: GLenum+gl_SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x845A+gl_DEPTH_EXT :: GLenum+gl_DEPTH_EXT = 0x1801+gl_LINE_RESET_TOKEN :: GLenum+gl_LINE_RESET_TOKEN = 0x0707+gl_SMOOTH_POINT_SIZE_GRANULARITY :: GLenum+gl_SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13+gl_SAMPLER_2D_MULTISAMPLE :: GLenum+gl_SAMPLER_2D_MULTISAMPLE = 0x9108+gl_PRIMARY_COLOR_ARB :: GLenum+gl_PRIMARY_COLOR_ARB = 0x8577+gl_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY :: GLenum+gl_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103+gl_GEOMETRY_TEXTURE :: GLenum+gl_GEOMETRY_TEXTURE = 0x829E+gl_SOURCE1_RGB_ARB :: GLenum+gl_SOURCE1_RGB_ARB = 0x8581+gl_COLOR_ATTACHMENT6_EXT :: GLenum+gl_COLOR_ATTACHMENT6_EXT = 0x8CE6+gl_PIXEL_MAP_I_TO_I :: GLenum+gl_PIXEL_MAP_I_TO_I = 0x0C70+gl_EVAL_VERTEX_ATTRIB7_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB7_NV = 0x86CD+gl_OP_MIN_EXT :: GLenum+gl_OP_MIN_EXT = 0x878B+gl_RGB16F_EXT :: GLenum+gl_RGB16F_EXT = 0x881B+gl_TEXTURE_CUBE_MAP_POSITIVE_Z :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519+gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS :: GLenum+gl_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x8F39+gl_PACK_RESAMPLE_SGIX :: GLenum+gl_PACK_RESAMPLE_SGIX = 0x842C+gl_GREEN_BIAS :: GLenum+gl_GREEN_BIAS = 0x0D19+gl_DEPTH_STENCIL_NV :: GLenum+gl_DEPTH_STENCIL_NV = 0x84F9+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER :: GLenum+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x92C8+gl_CON_29_ATI :: GLenum+gl_CON_29_ATI = 0x895E+gl_COLOR_ARRAY_STRIDE_EXT :: GLenum+gl_COLOR_ARRAY_STRIDE_EXT = 0x8083+gl_ISOLINES_EXT :: GLenum+gl_ISOLINES_EXT = 0x8E7A+gl_MODELVIEW4_ARB :: GLenum+gl_MODELVIEW4_ARB = 0x8724+gl_LINES_ADJACENCY :: GLenum+gl_LINES_ADJACENCY = 0x000A+gl_PATH_FILL_MASK_NV :: GLenum+gl_PATH_FILL_MASK_NV = 0x9081+gl_HISTOGRAM_LUMINANCE_SIZE :: GLenum+gl_HISTOGRAM_LUMINANCE_SIZE = 0x802C+gl_TEXTURE_BINDING_RENDERBUFFER_NV :: GLenum+gl_TEXTURE_BINDING_RENDERBUFFER_NV = 0x8E53+gl_PIXEL_UNPACK_BUFFER_EXT :: GLenum+gl_PIXEL_UNPACK_BUFFER_EXT = 0x88EC+gl_RENDERBUFFER_GREEN_SIZE :: GLenum+gl_RENDERBUFFER_GREEN_SIZE = 0x8D51+gl_PASS_THROUGH_NV :: GLenum+gl_PASS_THROUGH_NV = 0x86E6+gl_GEOMETRY_VERTICES_OUT_EXT :: GLenum+gl_GEOMETRY_VERTICES_OUT_EXT = 0x8DDA+gl_EVAL_VERTEX_ATTRIB12_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB12_NV = 0x86D2+gl_SMOOTH_QUADRATIC_CURVE_TO_NV :: GLenum+gl_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0E+gl_TEXTURE_BUFFER_SIZE :: GLenum+gl_TEXTURE_BUFFER_SIZE = 0x919E+gl_READ_PIXEL_DATA_RANGE_NV :: GLenum+gl_READ_PIXEL_DATA_RANGE_NV = 0x8879+gl_ALIASED_LINE_WIDTH_RANGE :: GLenum+gl_ALIASED_LINE_WIDTH_RANGE = 0x846E+gl_TRACK_MATRIX_NV :: GLenum+gl_TRACK_MATRIX_NV = 0x8648+gl_COLOR_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_COLOR_ARRAY_LIST_STRIDE_IBM = 103082+gl_WEIGHT_ARRAY_POINTER_ARB :: GLenum+gl_WEIGHT_ARRAY_POINTER_ARB = 0x86AC+gl_SMOOTH_LINE_WIDTH_GRANULARITY :: GLenum+gl_SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23+gl_CLIP_DISTANCE6 :: GLenum+gl_CLIP_DISTANCE6 = 0x3006+gl_FRAMEBUFFER_BINDING :: GLenum+gl_FRAMEBUFFER_BINDING = 0x8CA6+gl_EVAL_VERTEX_ATTRIB4_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB4_NV = 0x86CA+gl_CURRENT_SECONDARY_COLOR_EXT :: GLenum+gl_CURRENT_SECONDARY_COLOR_EXT = 0x8459+gl_IMAGE_CLASS_2_X_32 :: GLenum+gl_IMAGE_CLASS_2_X_32 = 0x82BA+gl_PERSPECTIVE_CORRECTION_HINT :: GLenum+gl_PERSPECTIVE_CORRECTION_HINT = 0x0C50+gl_NATIVE_GRAPHICS_BEGIN_HINT_PGI :: GLenum+gl_NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x1A203+gl_SATURATE_BIT_ATI :: GLenum+gl_SATURATE_BIT_ATI = 0x00000040+gl_FONT_UNITS_PER_EM_BIT_NV :: GLenum+gl_FONT_UNITS_PER_EM_BIT_NV = 0x00100000+gl_EVAL_VERTEX_ATTRIB3_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB3_NV = 0x86C9+gl_R16UI :: GLenum+gl_R16UI = 0x8234+gl_OUTPUT_TEXTURE_COORD17_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD17_EXT = 0x87AE+gl_TEXTURE_MULTI_BUFFER_HINT_SGIX :: GLenum+gl_TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E+gl_SKIP_MISSING_GLYPH_NV :: GLenum+gl_SKIP_MISSING_GLYPH_NV = 0x90A9+gl_MIRROR_CLAMP_TO_EDGE_EXT :: GLenum+gl_MIRROR_CLAMP_TO_EDGE_EXT = 0x8743+gl_TEXTURE_TYPE_QCOM :: GLenum+gl_TEXTURE_TYPE_QCOM = 0x8BD7+gl_RGB5_A1 :: GLenum+gl_RGB5_A1 = 0x8057+gl_UNIFORM_BARRIER_BIT_EXT :: GLenum+gl_UNIFORM_BARRIER_BIT_EXT = 0x00000004+gl_MULTISAMPLE :: GLenum+gl_MULTISAMPLE = 0x809D+gl_SAMPLES_ARB :: GLenum+gl_SAMPLES_ARB = 0x80A9+gl_RGBA_INTEGER :: GLenum+gl_RGBA_INTEGER = 0x8D99+gl_STENCIL_COMPONENTS :: GLenum+gl_STENCIL_COMPONENTS = 0x8285+gl_DEBUG_SEVERITY_LOW :: GLenum+gl_DEBUG_SEVERITY_LOW = 0x9148+gl_TEXTURE_COMPARE_SGIX :: GLenum+gl_TEXTURE_COMPARE_SGIX = 0x819A+gl_COLOR_ARRAY_LIST_IBM :: GLenum+gl_COLOR_ARRAY_LIST_IBM = 103072+gl_COMPRESSED_SIGNED_RED_RGTC1 :: GLenum+gl_COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC+gl_MATRIX3_NV :: GLenum+gl_MATRIX3_NV = 0x8633+gl_MAX_FRAGMENT_UNIFORM_BLOCKS :: GLenum+gl_MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D+gl_INT_SAMPLER_3D_EXT :: GLenum+gl_INT_SAMPLER_3D_EXT = 0x8DCB+gl_MODELVIEW19_ARB :: GLenum+gl_MODELVIEW19_ARB = 0x8733+gl_SWIZZLE_STRQ_DQ_ATI :: GLenum+gl_SWIZZLE_STRQ_DQ_ATI = 0x897B+gl_COMBINE_ARB :: GLenum+gl_COMBINE_ARB = 0x8570+gl_FRAGMENT_COLOR_EXT :: GLenum+gl_FRAGMENT_COLOR_EXT = 0x834C+gl_RENDERBUFFER_WIDTH :: GLenum+gl_RENDERBUFFER_WIDTH = 0x8D42+gl_LUMINANCE4_EXT :: GLenum+gl_LUMINANCE4_EXT = 0x803F+gl_UNSIGNED_INT_SAMPLER_2D_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2+gl_RGB_SCALE_EXT :: GLenum+gl_RGB_SCALE_EXT = 0x8573+gl_PIXEL_MAP_I_TO_R :: GLenum+gl_PIXEL_MAP_I_TO_R = 0x0C72+gl_DOT4_ATI :: GLenum+gl_DOT4_ATI = 0x8967+gl_MAP1_VERTEX_ATTRIB7_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB7_4_NV = 0x8667+gl_VERTEX_ATTRIB_ARRAY_ENABLED_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x8622+gl_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB :: GLenum+gl_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x880C+gl_POST_COLOR_MATRIX_BLUE_SCALE_SGI :: GLenum+gl_POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6+gl_NUM_VIRTUAL_PAGE_SIZES_ARB :: GLenum+gl_NUM_VIRTUAL_PAGE_SIZES_ARB = 0x91A8+gl_RENDERBUFFER_FREE_MEMORY_ATI :: GLenum+gl_RENDERBUFFER_FREE_MEMORY_ATI = 0x87FD+gl_FRAMEBUFFER_DEFAULT_LAYERS :: GLenum+gl_FRAMEBUFFER_DEFAULT_LAYERS = 0x9312+gl_COMPUTE_SUBROUTINE :: GLenum+gl_COMPUTE_SUBROUTINE = 0x92ED+gl_PROGRAM_TEX_INSTRUCTIONS_ARB :: GLenum+gl_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x8806+gl_SIGNALED_APPLE :: GLenum+gl_SIGNALED_APPLE = 0x9119+gl_MULTISAMPLE_3DFX :: GLenum+gl_MULTISAMPLE_3DFX = 0x86B2+gl_TEXTURE_INDEX_SIZE_EXT :: GLenum+gl_TEXTURE_INDEX_SIZE_EXT = 0x80ED+gl_LAYOUT_LINEAR_INTEL :: GLenum+gl_LAYOUT_LINEAR_INTEL = 1+gl_LERP_ATI :: GLenum+gl_LERP_ATI = 0x8969+gl_FACTOR_MAX_AMD :: GLenum+gl_FACTOR_MAX_AMD = 0x901D+gl_MATRIX2_ARB :: GLenum+gl_MATRIX2_ARB = 0x88C2+gl_EQUAL :: GLenum+gl_EQUAL = 0x0202+gl_COLOR_ATTACHMENT0_OES :: GLenum+gl_COLOR_ATTACHMENT0_OES = 0x8CE0+gl_MAX_COLOR_MATRIX_STACK_DEPTH_SGI :: GLenum+gl_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3+gl_RGB16 :: GLenum+gl_RGB16 = 0x8054+gl_COLOR_INDEX4_EXT :: GLenum+gl_COLOR_INDEX4_EXT = 0x80E4+gl_PROXY_TEXTURE_CUBE_MAP_EXT :: GLenum+gl_PROXY_TEXTURE_CUBE_MAP_EXT = 0x851B+gl_STENCIL_BACK_FUNC_ATI :: GLenum+gl_STENCIL_BACK_FUNC_ATI = 0x8800+gl_DRAW_BUFFER8_EXT :: GLenum+gl_DRAW_BUFFER8_EXT = 0x882D+gl_DST_ALPHA :: GLenum+gl_DST_ALPHA = 0x0304+gl_DEBUG_SOURCE_SHADER_COMPILER_KHR :: GLenum+gl_DEBUG_SOURCE_SHADER_COMPILER_KHR = 0x8248+gl_C4UB_V2F :: GLenum+gl_C4UB_V2F = 0x2A22+gl_INTERNALFORMAT_BLUE_TYPE :: GLenum+gl_INTERNALFORMAT_BLUE_TYPE = 0x827A+gl_PIXEL_TILE_GRID_DEPTH_SGIX :: GLenum+gl_PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144+gl_DEPTH_BITS :: GLenum+gl_DEPTH_BITS = 0x0D56+gl_FLOAT16_VEC3_NV :: GLenum+gl_FLOAT16_VEC3_NV = 0x8FFA+gl_ARRAY_OBJECT_OFFSET_ATI :: GLenum+gl_ARRAY_OBJECT_OFFSET_ATI = 0x8767+gl_DOUBLE_MAT2_EXT :: GLenum+gl_DOUBLE_MAT2_EXT = 0x8F46+gl_TEXTURE_COLOR_SAMPLES_NV :: GLenum+gl_TEXTURE_COLOR_SAMPLES_NV = 0x9046+gl_NORMAL_ARRAY_EXT :: GLenum+gl_NORMAL_ARRAY_EXT = 0x8075+gl_MIRROR_CLAMP_TO_EDGE_ATI :: GLenum+gl_MIRROR_CLAMP_TO_EDGE_ATI = 0x8743+gl_EDGE_FLAG_ARRAY_POINTER :: GLenum+gl_EDGE_FLAG_ARRAY_POINTER = 0x8093+gl_UNSIGNED_INT_24_8_MESA :: GLenum+gl_UNSIGNED_INT_24_8_MESA = 0x8751+gl_IMAGE_COMPATIBILITY_CLASS :: GLenum+gl_IMAGE_COMPATIBILITY_CLASS = 0x82A8+gl_BACK_LEFT :: GLenum+gl_BACK_LEFT = 0x0402+gl_TESS_EVALUATION_SHADER_INVOCATIONS_ARB :: GLenum+gl_TESS_EVALUATION_SHADER_INVOCATIONS_ARB = 0x82F2+gl_COLOR_TABLE_BIAS :: GLenum+gl_COLOR_TABLE_BIAS = 0x80D7+gl_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG :: GLenum+gl_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG = 0x93F1+gl_DARKEN_KHR :: GLenum+gl_DARKEN_KHR = 0x9297+gl_OCCLUSION_TEST_RESULT_HP :: GLenum+gl_OCCLUSION_TEST_RESULT_HP = 0x8166+gl_DEBUG_TYPE_POP_GROUP_KHR :: GLenum+gl_DEBUG_TYPE_POP_GROUP_KHR = 0x826A+gl_CLAMP_TO_BORDER_ARB :: GLenum+gl_CLAMP_TO_BORDER_ARB = 0x812D+gl_UNSIGNED_BYTE_2_3_3_REV :: GLenum+gl_UNSIGNED_BYTE_2_3_3_REV = 0x8362+gl_SOURCE2_ALPHA_ARB :: GLenum+gl_SOURCE2_ALPHA_ARB = 0x858A+gl_SAMPLE_COVERAGE :: GLenum+gl_SAMPLE_COVERAGE = 0x80A0+gl_INTERLEAVED_ATTRIBS_EXT :: GLenum+gl_INTERLEAVED_ATTRIBS_EXT = 0x8C8C+gl_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = 0x94FB+gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING :: GLenum+gl_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F+gl_VERTEX_SHADER :: GLenum+gl_VERTEX_SHADER = 0x8B31+gl_INDEX_ARRAY_ADDRESS_NV :: GLenum+gl_INDEX_ARRAY_ADDRESS_NV = 0x8F24+gl_QUERY_COUNTER_BITS :: GLenum+gl_QUERY_COUNTER_BITS = 0x8864+gl_COMPRESSED_RGBA_ASTC_8x6_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93B6+gl_FRAMEBUFFER_BINDING_EXT :: GLenum+gl_FRAMEBUFFER_BINDING_EXT = 0x8CA6+gl_VERTEX_ELEMENT_SWIZZLE_AMD :: GLenum+gl_VERTEX_ELEMENT_SWIZZLE_AMD = 0x91A4+gl_DEBUG_CATEGORY_SHADER_COMPILER_AMD :: GLenum+gl_DEBUG_CATEGORY_SHADER_COMPILER_AMD = 0x914E+gl_ARRAY_OBJECT_BUFFER_ATI :: GLenum+gl_ARRAY_OBJECT_BUFFER_ATI = 0x8766+gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES :: GLenum+gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910C+gl_RENDERBUFFER_INTERNAL_FORMAT :: GLenum+gl_RENDERBUFFER_INTERNAL_FORMAT = 0x8D44+gl_VIEW_CLASS_8_BITS :: GLenum+gl_VIEW_CLASS_8_BITS = 0x82CB+gl_TEXTURE_CUBE_MAP_POSITIVE_Y_OES :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 0x8517+gl_SHADER_IMAGE_ATOMIC :: GLenum+gl_SHADER_IMAGE_ATOMIC = 0x82A6+gl_MAX_GEOMETRY_OUTPUT_VERTICES_ARB :: GLenum+gl_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0+gl_COVERAGE_ATTACHMENT_NV :: GLenum+gl_COVERAGE_ATTACHMENT_NV = 0x8ED2+gl_NUM_PROGRAM_BINARY_FORMATS_OES :: GLenum+gl_NUM_PROGRAM_BINARY_FORMATS_OES = 0x87FE+gl_CURRENT_RASTER_TEXTURE_COORDS :: GLenum+gl_CURRENT_RASTER_TEXTURE_COORDS = 0x0B06+gl_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS :: GLenum+gl_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86+gl_PIXEL_MAP_A_TO_A :: GLenum+gl_PIXEL_MAP_A_TO_A = 0x0C79+gl_TEXTURE_WRAP_T :: GLenum+gl_TEXTURE_WRAP_T = 0x2803+gl_LINE_SMOOTH_HINT :: GLenum+gl_LINE_SMOOTH_HINT = 0x0C52+gl_DRAW_BUFFER11_EXT :: GLenum+gl_DRAW_BUFFER11_EXT = 0x8830+gl_OFFSET_TEXTURE_RECTANGLE_SCALE_NV :: GLenum+gl_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x864D+gl_LUMINANCE16_SNORM :: GLenum+gl_LUMINANCE16_SNORM = 0x9019+gl_PERFQUERY_FLUSH_INTEL :: GLenum+gl_PERFQUERY_FLUSH_INTEL = 0x83FA+gl_HISTOGRAM_SINK :: GLenum+gl_HISTOGRAM_SINK = 0x802D+gl_MAP1_VERTEX_ATTRIB15_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB15_4_NV = 0x866F+gl_OUTPUT_TEXTURE_COORD7_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD7_EXT = 0x87A4+gl_HISTOGRAM_BLUE_SIZE :: GLenum+gl_HISTOGRAM_BLUE_SIZE = 0x802A+gl_LUMINANCE32F_EXT :: GLenum+gl_LUMINANCE32F_EXT = 0x8818+gl_RG16UI :: GLenum+gl_RG16UI = 0x823A+gl_TEXTURE_ALPHA_MODULATE_IMG :: GLenum+gl_TEXTURE_ALPHA_MODULATE_IMG = 0x8C06+gl_INT_SAMPLER_2D_RECT :: GLenum+gl_INT_SAMPLER_2D_RECT = 0x8DCD+gl_STENCIL_BACK_WRITEMASK :: GLenum+gl_STENCIL_BACK_WRITEMASK = 0x8CA5+gl_PIXEL_TRANSFORM_2D_MATRIX_EXT :: GLenum+gl_PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x8338+gl_AUX3 :: GLenum+gl_AUX3 = 0x040C+gl_FRAMEBUFFER_UNSUPPORTED :: GLenum+gl_FRAMEBUFFER_UNSUPPORTED = 0x8CDD+gl_MAX_TEXTURE_MAX_ANISOTROPY_EXT :: GLenum+gl_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF+gl_TEXTURE_DEFORMATION_SGIX :: GLenum+gl_TEXTURE_DEFORMATION_SGIX = 0x8195+gl_CON_23_ATI :: GLenum+gl_CON_23_ATI = 0x8958+gl_CLIP_DISTANCE0 :: GLenum+gl_CLIP_DISTANCE0 = 0x3000+gl_COLOR_ATTACHMENT10 :: GLenum+gl_COLOR_ATTACHMENT10 = 0x8CEA+gl_POINT_SIZE_MAX_EXT :: GLenum+gl_POINT_SIZE_MAX_EXT = 0x8127+gl_TEXTURE5 :: GLenum+gl_TEXTURE5 = 0x84C5+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93D6+gl_PATH_MODELVIEW_MATRIX_NV :: GLenum+gl_PATH_MODELVIEW_MATRIX_NV = 0x0BA6+gl_LINE_LOOP :: GLenum+gl_LINE_LOOP = 0x0002+gl_MODELVIEW17_ARB :: GLenum+gl_MODELVIEW17_ARB = 0x8731+gl_UNSIGNED_INT16_VEC2_NV :: GLenum+gl_UNSIGNED_INT16_VEC2_NV = 0x8FF1+gl_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES :: GLenum+gl_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898F+gl_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x8264+gl_DRAW_BUFFER3_EXT :: GLenum+gl_DRAW_BUFFER3_EXT = 0x8828+gl_TEXTURE_SHADOW :: GLenum+gl_TEXTURE_SHADOW = 0x82A1+gl_STENCIL_ATTACHMENT :: GLenum+gl_STENCIL_ATTACHMENT = 0x8D20+gl_MAP_STENCIL :: GLenum+gl_MAP_STENCIL = 0x0D11+gl_PATH_DASH_ARRAY_COUNT_NV :: GLenum+gl_PATH_DASH_ARRAY_COUNT_NV = 0x909F+gl_BLEND :: GLenum+gl_BLEND = 0x0BE2+gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT :: GLenum+gl_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34+gl_TEXTURE_TARGET_QCOM :: GLenum+gl_TEXTURE_TARGET_QCOM = 0x8BDA+gl_NORMAL_MAP_OES :: GLenum+gl_NORMAL_MAP_OES = 0x8511+gl_UNSIGNED_SHORT_4_4_4_4_REV_EXT :: GLenum+gl_UNSIGNED_SHORT_4_4_4_4_REV_EXT = 0x8365+gl_TEXTURE20 :: GLenum+gl_TEXTURE20 = 0x84D4+gl_EDGE_FLAG_ARRAY_COUNT_EXT :: GLenum+gl_EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D+gl_SMOOTH :: GLenum+gl_SMOOTH = 0x1D01+gl_SHADER_INCLUDE_ARB :: GLenum+gl_SHADER_INCLUDE_ARB = 0x8DAE+gl_CLAMP_TO_EDGE_SGIS :: GLenum+gl_CLAMP_TO_EDGE_SGIS = 0x812F+gl_COMPRESSED_ALPHA :: GLenum+gl_COMPRESSED_ALPHA = 0x84E9+gl_TEXTURE_IMAGE_FORMAT :: GLenum+gl_TEXTURE_IMAGE_FORMAT = 0x828F+gl_MAX_FRAMEBUFFER_LAYERS :: GLenum+gl_MAX_FRAMEBUFFER_LAYERS = 0x9317+gl_WRITEONLY_RENDERING_QCOM :: GLenum+gl_WRITEONLY_RENDERING_QCOM = 0x8823+gl_BACK_RIGHT :: GLenum+gl_BACK_RIGHT = 0x0403+gl_INVARIANT_DATATYPE_EXT :: GLenum+gl_INVARIANT_DATATYPE_EXT = 0x87EB+gl_LINE_TO_NV :: GLenum+gl_LINE_TO_NV = 0x04+gl_PIXEL_UNPACK_BUFFER_BINDING_ARB :: GLenum+gl_PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x88EF+gl_LIST_BIT :: GLenum+gl_LIST_BIT = 0x00020000+gl_MAX_ATTRIB_STACK_DEPTH :: GLenum+gl_MAX_ATTRIB_STACK_DEPTH = 0x0D35+gl_FRAGMENT_SHADER :: GLenum+gl_FRAGMENT_SHADER = 0x8B30+gl_IMPLEMENTATION_COLOR_READ_FORMAT :: GLenum+gl_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B+gl_COLOR_TABLE_WIDTH_SGI :: GLenum+gl_COLOR_TABLE_WIDTH_SGI = 0x80D9+gl_DEBUG_OBJECT_MESA :: GLenum+gl_DEBUG_OBJECT_MESA = 0x8759+gl_EYE_LINE_SGIS :: GLenum+gl_EYE_LINE_SGIS = 0x81F6+gl_COMPRESSED_ALPHA_ARB :: GLenum+gl_COMPRESSED_ALPHA_ARB = 0x84E9+gl_DEPTH_BUFFER_BIT7_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT7_QCOM = 0x00008000+gl_OPERAND2_RGB_ARB :: GLenum+gl_OPERAND2_RGB_ARB = 0x8592+gl_PROGRAM_BINARY_ANGLE :: GLenum+gl_PROGRAM_BINARY_ANGLE = 0x93A6+gl_MATRIX_EXT :: GLenum+gl_MATRIX_EXT = 0x87C0+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80+gl_RED_NV :: GLenum+gl_RED_NV = 0x1903+gl_LIGHT7 :: GLenum+gl_LIGHT7 = 0x4007+gl_LOW_FLOAT :: GLenum+gl_LOW_FLOAT = 0x8DF0+gl_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x8C7F+gl_CON_18_ATI :: GLenum+gl_CON_18_ATI = 0x8953+gl_UNIFORM_BUFFER_ADDRESS_NV :: GLenum+gl_UNIFORM_BUFFER_ADDRESS_NV = 0x936F+gl_VERTEX_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896+gl_RED_BIT_ATI :: GLenum+gl_RED_BIT_ATI = 0x00000001+gl_TRACE_TEXTURES_BIT_MESA :: GLenum+gl_TRACE_TEXTURES_BIT_MESA = 0x0008+gl_GEOMETRY_SHADER :: GLenum+gl_GEOMETRY_SHADER = 0x8DD9+gl_VERTEX_ARRAY_ADDRESS_NV :: GLenum+gl_VERTEX_ARRAY_ADDRESS_NV = 0x8F21+gl_TIMEOUT_IGNORED_APPLE :: GLenum+gl_TIMEOUT_IGNORED_APPLE = 0xFFFFFFFFFFFFFFFF+gl_RENDERBUFFER_BINDING :: GLenum+gl_RENDERBUFFER_BINDING = 0x8CA7+gl_RGB16F :: GLenum+gl_RGB16F = 0x881B+gl_TEXTURE_COORD_ARRAY_LENGTH_NV :: GLenum+gl_TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F+gl_MAX_FRAMEBUFFER_LAYERS_EXT :: GLenum+gl_MAX_FRAMEBUFFER_LAYERS_EXT = 0x9317+gl_MODELVIEW23_ARB :: GLenum+gl_MODELVIEW23_ARB = 0x8737+gl_BGR_EXT :: GLenum+gl_BGR_EXT = 0x80E0+gl_ONE_MINUS_SRC1_COLOR :: GLenum+gl_ONE_MINUS_SRC1_COLOR = 0x88FA+gl_VARIANT_ARRAY_EXT :: GLenum+gl_VARIANT_ARRAY_EXT = 0x87E8+gl_RGB4 :: GLenum+gl_RGB4 = 0x804F+gl_RENDERBUFFER_DEPTH_SIZE_OES :: GLenum+gl_RENDERBUFFER_DEPTH_SIZE_OES = 0x8D54+gl_MAX_VARYING_COMPONENTS_EXT :: GLenum+gl_MAX_VARYING_COMPONENTS_EXT = 0x8B4B+gl_CURRENT_MATRIX_NV :: GLenum+gl_CURRENT_MATRIX_NV = 0x8641+gl_T2F_IUI_N3F_V3F_EXT :: GLenum+gl_T2F_IUI_N3F_V3F_EXT = 0x81B4+gl_SLUMINANCE8 :: GLenum+gl_SLUMINANCE8 = 0x8C47+gl_MODELVIEW1_MATRIX_EXT :: GLenum+gl_MODELVIEW1_MATRIX_EXT = 0x8506+gl_MODELVIEW29_ARB :: GLenum+gl_MODELVIEW29_ARB = 0x873D+gl_COLOR_ATTACHMENT5_EXT :: GLenum+gl_COLOR_ATTACHMENT5_EXT = 0x8CE5+gl_DOUBLE_MAT2 :: GLenum+gl_DOUBLE_MAT2 = 0x8F46+gl_RGBA12_EXT :: GLenum+gl_RGBA12_EXT = 0x805A+gl_ACCUM_BLUE_BITS :: GLenum+gl_ACCUM_BLUE_BITS = 0x0D5A+gl_INVARIANT_EXT :: GLenum+gl_INVARIANT_EXT = 0x87C2+gl_ACTIVE_UNIFORM_MAX_LENGTH :: GLenum+gl_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87+gl_FOG_SPECULAR_TEXTURE_WIN :: GLenum+gl_FOG_SPECULAR_TEXTURE_WIN = 0x80EC+gl_COLOR_TABLE_SCALE_SGI :: GLenum+gl_COLOR_TABLE_SCALE_SGI = 0x80D6+gl_IUI_V3F_EXT :: GLenum+gl_IUI_V3F_EXT = 0x81AE+gl_UNSIGNED_INT_IMAGE_3D_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_3D_EXT = 0x9064+gl_MAX_DEBUG_MESSAGE_LENGTH_KHR :: GLenum+gl_MAX_DEBUG_MESSAGE_LENGTH_KHR = 0x9143+gl_TEXTURE_CUBE_MAP_POSITIVE_Y :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517+gl_DOUBLE_VEC2 :: GLenum+gl_DOUBLE_VEC2 = 0x8FFC+gl_MAX_SAMPLE_MASK_WORDS :: GLenum+gl_MAX_SAMPLE_MASK_WORDS = 0x8E59+gl_DEBUG_OUTPUT :: GLenum+gl_DEBUG_OUTPUT = 0x92E0+gl_OBJECT_SHADER_SOURCE_LENGTH_ARB :: GLenum+gl_OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88+gl_R32F_EXT :: GLenum+gl_R32F_EXT = 0x822E+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV :: GLenum+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = 0x8C4E+gl_COPY_WRITE_BUFFER_BINDING :: GLenum+gl_COPY_WRITE_BUFFER_BINDING = 0x8F37+gl_TEXTURE15_ARB :: GLenum+gl_TEXTURE15_ARB = 0x84CF+gl_UNIFORM_BLOCK_NAME_LENGTH :: GLenum+gl_UNIFORM_BLOCK_NAME_LENGTH = 0x8A41+gl_COLOR_ATTACHMENT4_NV :: GLenum+gl_COLOR_ATTACHMENT4_NV = 0x8CE4+gl_DST_OVER_NV :: GLenum+gl_DST_OVER_NV = 0x9289+gl_ATOMIC_COUNTER_BUFFER :: GLenum+gl_ATOMIC_COUNTER_BUFFER = 0x92C0+gl_MAP1_VERTEX_ATTRIB12_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB12_4_NV = 0x866C+gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB :: GLenum+gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C+gl_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV :: GLenum+gl_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x8851+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3+gl_RGB_RAW_422_APPLE :: GLenum+gl_RGB_RAW_422_APPLE = 0x8A51+gl_MAX_RECTANGLE_TEXTURE_SIZE :: GLenum+gl_MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8+gl_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x8DA7+gl_FRAGMENT_COLOR_MATERIAL_SGIX :: GLenum+gl_FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401+gl_POST_COLOR_MATRIX_RED_SCALE_SGI :: GLenum+gl_POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4+gl_VIBRANCE_SCALE_NV :: GLenum+gl_VIBRANCE_SCALE_NV = 0x8713+gl_POINT_FADE_THRESHOLD_SIZE :: GLenum+gl_POINT_FADE_THRESHOLD_SIZE = 0x8128+gl_QUERY_NO_WAIT_NV :: GLenum+gl_QUERY_NO_WAIT_NV = 0x8E14+gl_FRAGMENT_SHADER_DERIVATIVE_HINT_OES :: GLenum+gl_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B+gl_RESAMPLE_REPLICATE_OML :: GLenum+gl_RESAMPLE_REPLICATE_OML = 0x8986+gl_RENDERBUFFER_BINDING_ANGLE :: GLenum+gl_RENDERBUFFER_BINDING_ANGLE = 0x8CA7+gl_R1UI_V3F_SUN :: GLenum+gl_R1UI_V3F_SUN = 0x85C4+gl_CONVOLUTION_2D :: GLenum+gl_CONVOLUTION_2D = 0x8011+gl_OBJECT_TYPE :: GLenum+gl_OBJECT_TYPE = 0x9112+gl_MAX_MAP_TESSELLATION_NV :: GLenum+gl_MAX_MAP_TESSELLATION_NV = 0x86D6+gl_DOUBLE_MAT4x3_EXT :: GLenum+gl_DOUBLE_MAT4x3_EXT = 0x8F4E+gl_MULTISAMPLE_BUFFER_BIT4_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT4_QCOM = 0x10000000+gl_UNSIGNED_INT64_AMD :: GLenum+gl_UNSIGNED_INT64_AMD = 0x8BC2+gl_MAX_PATCH_VERTICES :: GLenum+gl_MAX_PATCH_VERTICES = 0x8E7D+gl_TEXTURE_COMPONENTS :: GLenum+gl_TEXTURE_COMPONENTS = 0x1003+gl_ELEMENT_ARRAY_POINTER_APPLE :: GLenum+gl_ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E+gl_COLOR_ATTACHMENT6_NV :: GLenum+gl_COLOR_ATTACHMENT6_NV = 0x8CE6+gl_MODELVIEW_PROJECTION_NV :: GLenum+gl_MODELVIEW_PROJECTION_NV = 0x8629+gl_STATIC_ATI :: GLenum+gl_STATIC_ATI = 0x8760+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A+gl_CONVOLUTION_BORDER_MODE :: GLenum+gl_CONVOLUTION_BORDER_MODE = 0x8013+gl_2PASS_0_SGIS :: GLenum+gl_2PASS_0_SGIS = 0x80A2+gl_GREEN_INTEGER_EXT :: GLenum+gl_GREEN_INTEGER_EXT = 0x8D95+gl_DEBUG_TYPE_OTHER :: GLenum+gl_DEBUG_TYPE_OTHER = 0x8251+gl_FRAMEBUFFER_SRGB_EXT :: GLenum+gl_FRAMEBUFFER_SRGB_EXT = 0x8DB9+gl_COLOR_WRITEMASK :: GLenum+gl_COLOR_WRITEMASK = 0x0C23+gl_TANGENT_ARRAY_EXT :: GLenum+gl_TANGENT_ARRAY_EXT = 0x8439+gl_FONT_TARGET_UNAVAILABLE_NV :: GLenum+gl_FONT_TARGET_UNAVAILABLE_NV = 0x9369+gl_FONT_UNAVAILABLE_NV :: GLenum+gl_FONT_UNAVAILABLE_NV = 0x936A+gl_COMBINER2_NV :: GLenum+gl_COMBINER2_NV = 0x8552+gl_TEXTURE22_ARB :: GLenum+gl_TEXTURE22_ARB = 0x84D6+gl_PATH_INITIAL_DASH_CAP_NV :: GLenum+gl_PATH_INITIAL_DASH_CAP_NV = 0x907C+gl_SWIZZLE_STRQ_ATI :: GLenum+gl_SWIZZLE_STRQ_ATI = 0x897A+gl_OBJECT_LINE_SGIS :: GLenum+gl_OBJECT_LINE_SGIS = 0x81F7+gl_MAX_NUM_ACTIVE_VARIABLES :: GLenum+gl_MAX_NUM_ACTIVE_VARIABLES = 0x92F7+gl_COLOR_ATTACHMENT3_EXT :: GLenum+gl_COLOR_ATTACHMENT3_EXT = 0x8CE3+gl_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI :: GLenum+gl_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI = 0x8837+gl_SCREEN_KHR :: GLenum+gl_SCREEN_KHR = 0x9295+gl_ZOOM_X :: GLenum+gl_ZOOM_X = 0x0D16+gl_PROGRAM_MATRIX_EXT :: GLenum+gl_PROGRAM_MATRIX_EXT = 0x8E2D+gl_TEXTURE_VIEW :: GLenum+gl_TEXTURE_VIEW = 0x82B5+gl_NEGATIVE_ONE_TO_ONE :: GLenum+gl_NEGATIVE_ONE_TO_ONE = 0x935E+gl_CONVOLUTION_1D_EXT :: GLenum+gl_CONVOLUTION_1D_EXT = 0x8010+gl_CLAMP_READ_COLOR :: GLenum+gl_CLAMP_READ_COLOR = 0x891C+gl_REFLECTION_MAP :: GLenum+gl_REFLECTION_MAP = 0x8512+gl_PROXY_HISTOGRAM :: GLenum+gl_PROXY_HISTOGRAM = 0x8025+gl_MAX_TESS_EVALUATION_INPUT_COMPONENTS :: GLenum+gl_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D+gl_HALF_FLOAT_ARB :: GLenum+gl_HALF_FLOAT_ARB = 0x140B+gl_LINE_QUALITY_HINT_SGIX :: GLenum+gl_LINE_QUALITY_HINT_SGIX = 0x835B+gl_MAP_WRITE_BIT_EXT :: GLenum+gl_MAP_WRITE_BIT_EXT = 0x0002+gl_PIXEL_TRANSFORM_2D_EXT :: GLenum+gl_PIXEL_TRANSFORM_2D_EXT = 0x8330+gl_INCR :: GLenum+gl_INCR = 0x1E02+gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES = 0x93E0+gl_LUMINANCE_FLOAT32_ATI :: GLenum+gl_LUMINANCE_FLOAT32_ATI = 0x8818+gl_EVAL_VERTEX_ATTRIB11_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB11_NV = 0x86D1+gl_TEXTURE_COORD_ARRAY_SIZE :: GLenum+gl_TEXTURE_COORD_ARRAY_SIZE = 0x8088+gl_IMAGE_BINDING_LEVEL_EXT :: GLenum+gl_IMAGE_BINDING_LEVEL_EXT = 0x8F3B+gl_RGBA16I_EXT :: GLenum+gl_RGBA16I_EXT = 0x8D88+gl_T2F_IUI_N3F_V2F_EXT :: GLenum+gl_T2F_IUI_N3F_V2F_EXT = 0x81B3+gl_MIN_PROGRAM_TEXEL_OFFSET_NV :: GLenum+gl_MIN_PROGRAM_TEXEL_OFFSET_NV = 0x8904+gl_EQUIV :: GLenum+gl_EQUIV = 0x1509+gl_TEXTURE_BINDING_CUBE_MAP_ARB :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP_ARB = 0x8514+gl_DRAW_BUFFER1_NV :: GLenum+gl_DRAW_BUFFER1_NV = 0x8826+gl_INTERLACE_READ_OML :: GLenum+gl_INTERLACE_READ_OML = 0x8981+gl_TEXTURE15 :: GLenum+gl_TEXTURE15 = 0x84CF+gl_NAND :: GLenum+gl_NAND = 0x150E+gl_VERTEX_ARRAY_RANGE_APPLE :: GLenum+gl_VERTEX_ARRAY_RANGE_APPLE = 0x851D+gl_CONDITION_SATISFIED_APPLE :: GLenum+gl_CONDITION_SATISFIED_APPLE = 0x911C+gl_DISPATCH_INDIRECT_BUFFER_BINDING :: GLenum+gl_DISPATCH_INDIRECT_BUFFER_BINDING = 0x90EF+gl_RG16I :: GLenum+gl_RG16I = 0x8239+gl_EYE_RADIAL_NV :: GLenum+gl_EYE_RADIAL_NV = 0x855B+gl_SLUMINANCE_ALPHA_EXT :: GLenum+gl_SLUMINANCE_ALPHA_EXT = 0x8C44+gl_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL :: GLenum+gl_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F5+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT :: GLenum+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT = 0x88FE+gl_RG32F :: GLenum+gl_RG32F = 0x8230+gl_SRC1_ALPHA :: GLenum+gl_SRC1_ALPHA = 0x8589+gl_RGBA2 :: GLenum+gl_RGBA2 = 0x8055+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x8CD4+gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x8C88+gl_TEXTURE_COORD_ARRAY_STRIDE_EXT :: GLenum+gl_TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A+gl_OUTPUT_TEXTURE_COORD10_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD10_EXT = 0x87A7+gl_DEPTH_ATTACHMENT :: GLenum+gl_DEPTH_ATTACHMENT = 0x8D00+gl_NORMAL_ARRAY_POINTER_EXT :: GLenum+gl_NORMAL_ARRAY_POINTER_EXT = 0x808F+gl_OPERAND0_ALPHA_ARB :: GLenum+gl_OPERAND0_ALPHA_ARB = 0x8598+gl_COMPRESSED_LUMINANCE_ARB :: GLenum+gl_COMPRESSED_LUMINANCE_ARB = 0x84EA+gl_LIST_PRIORITY_SGIX :: GLenum+gl_LIST_PRIORITY_SGIX = 0x8182+gl_BOUNDING_BOX_NV :: GLenum+gl_BOUNDING_BOX_NV = 0x908D+gl_PATCH_VERTICES_EXT :: GLenum+gl_PATCH_VERTICES_EXT = 0x8E72+gl_COPY_INVERTED :: GLenum+gl_COPY_INVERTED = 0x150C+gl_FRAMEBUFFER_BARRIER_BIT_EXT :: GLenum+gl_FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400+gl_OBJECT_ACTIVE_ATTRIBUTES_ARB :: GLenum+gl_OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89+gl_DISCRETE_AMD :: GLenum+gl_DISCRETE_AMD = 0x9006+gl_DOT3_RGBA_ARB :: GLenum+gl_DOT3_RGBA_ARB = 0x86AF+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 0x8CD2+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 0x8CD1+gl_SET :: GLenum+gl_SET = 0x150F+gl_TEXTURE_MAX_ANISOTROPY_EXT :: GLenum+gl_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE+gl_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 :: GLenum+gl_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9276+gl_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB :: GLenum+gl_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B+gl_MAP2_GRID_DOMAIN :: GLenum+gl_MAP2_GRID_DOMAIN = 0x0DD2+gl_RENDERBUFFER_SAMPLES :: GLenum+gl_RENDERBUFFER_SAMPLES = 0x8CAB+gl_MAX_TEXTURE_LOD_BIAS :: GLenum+gl_MAX_TEXTURE_LOD_BIAS = 0x84FD+gl_DEPTH_PASS_INSTRUMENT_SGIX :: GLenum+gl_DEPTH_PASS_INSTRUMENT_SGIX = 0x8310+gl_TEXTURE_COORD_NV :: GLenum+gl_TEXTURE_COORD_NV = 0x8C79+gl_PROGRAM_ERROR_POSITION_NV :: GLenum+gl_PROGRAM_ERROR_POSITION_NV = 0x864B+gl_RENDERBUFFER_RED_SIZE_EXT :: GLenum+gl_RENDERBUFFER_RED_SIZE_EXT = 0x8D50+gl_INDEX_OFFSET :: GLenum+gl_INDEX_OFFSET = 0x0D13+gl_CURRENT_FOG_COORD :: GLenum+gl_CURRENT_FOG_COORD = 0x8453+gl_MIRRORED_REPEAT :: GLenum+gl_MIRRORED_REPEAT = 0x8370+gl_MAP_INVALIDATE_BUFFER_BIT :: GLenum+gl_MAP_INVALIDATE_BUFFER_BIT = 0x0008+gl_MATRIX_INDEX_ARRAY_OES :: GLenum+gl_MATRIX_INDEX_ARRAY_OES = 0x8844+gl_DRAW_BUFFER6_ATI :: GLenum+gl_DRAW_BUFFER6_ATI = 0x882B+gl_INTENSITY12 :: GLenum+gl_INTENSITY12 = 0x804C+gl_FLOAT_RGBA_NV :: GLenum+gl_FLOAT_RGBA_NV = 0x8883+gl_SMOOTH_POINT_SIZE_RANGE :: GLenum+gl_SMOOTH_POINT_SIZE_RANGE = 0x0B12+gl_COLOR_BUFFER_BIT1_QCOM :: GLenum+gl_COLOR_BUFFER_BIT1_QCOM = 0x00000002+gl_TEXT_FRAGMENT_SHADER_ATI :: GLenum+gl_TEXT_FRAGMENT_SHADER_ATI = 0x8200+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x8DA8+gl_CLIP_PLANE3 :: GLenum+gl_CLIP_PLANE3 = 0x3003+gl_NAMED_STRING_TYPE_ARB :: GLenum+gl_NAMED_STRING_TYPE_ARB = 0x8DEA+gl_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB :: GLenum+gl_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = 0x90EB+gl_TEXTURE_VIEW_MIN_LEVEL :: GLenum+gl_TEXTURE_VIEW_MIN_LEVEL = 0x82DB+gl_SWIZZLE_STQ_ATI :: GLenum+gl_SWIZZLE_STQ_ATI = 0x8977+gl_RGBA_FLOAT_MODE_ARB :: GLenum+gl_RGBA_FLOAT_MODE_ARB = 0x8820+gl_RG8UI :: GLenum+gl_RG8UI = 0x8238+gl_FRAGMENT_DEPTH :: GLenum+gl_FRAGMENT_DEPTH = 0x8452+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93D2+gl_MULTISAMPLE_SGIS :: GLenum+gl_MULTISAMPLE_SGIS = 0x809D+gl_PROXY_TEXTURE_1D :: GLenum+gl_PROXY_TEXTURE_1D = 0x8063+gl_MODELVIEW0_ARB :: GLenum+gl_MODELVIEW0_ARB = 0x1700+gl_LINE_STRIP_ADJACENCY_EXT :: GLenum+gl_LINE_STRIP_ADJACENCY_EXT = 0x000B+gl_RGBA16UI :: GLenum+gl_RGBA16UI = 0x8D76+gl_SRC_ATOP_NV :: GLenum+gl_SRC_ATOP_NV = 0x928E+gl_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE :: GLenum+gl_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x82AE+gl_REG_30_ATI :: GLenum+gl_REG_30_ATI = 0x893F+gl_4PASS_3_EXT :: GLenum+gl_4PASS_3_EXT = 0x80A7+gl_INT_IMAGE_3D_EXT :: GLenum+gl_INT_IMAGE_3D_EXT = 0x9059+gl_SYSTEM_FONT_NAME_NV :: GLenum+gl_SYSTEM_FONT_NAME_NV = 0x9073+gl_DRAW_BUFFER6 :: GLenum+gl_DRAW_BUFFER6 = 0x882B+gl_RG32I :: GLenum+gl_RG32I = 0x823B+gl_COLOR_BUFFER_BIT3_QCOM :: GLenum+gl_COLOR_BUFFER_BIT3_QCOM = 0x00000008+gl_CURRENT_OCCLUSION_QUERY_ID_NV :: GLenum+gl_CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865+gl_INTERNALFORMAT_STENCIL_SIZE :: GLenum+gl_INTERNALFORMAT_STENCIL_SIZE = 0x8276+gl_STATIC_DRAW_ARB :: GLenum+gl_STATIC_DRAW_ARB = 0x88E4+gl_COMPRESSED_SRGB_ALPHA_EXT :: GLenum+gl_COMPRESSED_SRGB_ALPHA_EXT = 0x8C49+gl_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI :: GLenum+gl_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = 0x00200000+gl_PALETTE8_RGBA4_OES :: GLenum+gl_PALETTE8_RGBA4_OES = 0x8B98+gl_FOG_START :: GLenum+gl_FOG_START = 0x0B63+gl_DEBUG_TYPE_POP_GROUP :: GLenum+gl_DEBUG_TYPE_POP_GROUP = 0x826A+gl_DRAW_BUFFER14_ATI :: GLenum+gl_DRAW_BUFFER14_ATI = 0x8833+gl_IMAGE_1D_ARRAY :: GLenum+gl_IMAGE_1D_ARRAY = 0x9052+gl_RELATIVE_LARGE_CCW_ARC_TO_NV :: GLenum+gl_RELATIVE_LARGE_CCW_ARC_TO_NV = 0x17+gl_FONT_MAX_ADVANCE_HEIGHT_BIT_NV :: GLenum+gl_FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000+gl_EXCLUSION_NV :: GLenum+gl_EXCLUSION_NV = 0x92A0+gl_FONT_X_MAX_BOUNDS_BIT_NV :: GLenum+gl_FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000+gl_PIXEL_TEX_GEN_Q_FLOOR_SGIX :: GLenum+gl_PIXEL_TEX_GEN_Q_FLOOR_SGIX = 0x8186+gl_DEPTH_BUFFER_BIT2_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT2_QCOM = 0x00000400+gl_UNPACK_FLIP_Y_WEBGL :: GLenum+gl_UNPACK_FLIP_Y_WEBGL = 0x9240+gl_COLOR_ATTACHMENT15_NV :: GLenum+gl_COLOR_ATTACHMENT15_NV = 0x8CEF+gl_RG16F_EXT :: GLenum+gl_RG16F_EXT = 0x822F+gl_PRIMARY_COLOR :: GLenum+gl_PRIMARY_COLOR = 0x8577+gl_UNIFORM_BLOCK_DATA_SIZE :: GLenum+gl_UNIFORM_BLOCK_DATA_SIZE = 0x8A40+gl_INTERNALFORMAT_STENCIL_TYPE :: GLenum+gl_INTERNALFORMAT_STENCIL_TYPE = 0x827D+gl_COLOR_MATRIX_STACK_DEPTH_SGI :: GLenum+gl_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2+gl_AND :: GLenum+gl_AND = 0x1501+gl_GEOMETRY_INPUT_TYPE_ARB :: GLenum+gl_GEOMETRY_INPUT_TYPE_ARB = 0x8DDB+gl_SAMPLER_BUFFER :: GLenum+gl_SAMPLER_BUFFER = 0x8DC2+gl_COLOR_BUFFER_BIT2_QCOM :: GLenum+gl_COLOR_BUFFER_BIT2_QCOM = 0x00000004+gl_MAX_CLIP_DISTANCES :: GLenum+gl_MAX_CLIP_DISTANCES = 0x0D32+gl_OUTPUT_TEXTURE_COORD25_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD25_EXT = 0x87B6+gl_SLIM8U_SGIX :: GLenum+gl_SLIM8U_SGIX = 0x831D+gl_OP_DOT4_EXT :: GLenum+gl_OP_DOT4_EXT = 0x8785+gl_INFO_LOG_LENGTH :: GLenum+gl_INFO_LOG_LENGTH = 0x8B84+gl_REG_25_ATI :: GLenum+gl_REG_25_ATI = 0x893A+gl_MAX_PROGRAM_CALL_DEPTH_NV :: GLenum+gl_MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5+gl_VIRTUAL_PAGE_SIZE_INDEX_ARB :: GLenum+gl_VIRTUAL_PAGE_SIZE_INDEX_ARB = 0x91A7+gl_MAX_PROGRAM_RESULT_COMPONENTS_NV :: GLenum+gl_MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x8909+gl_RELATIVE_CONIC_CURVE_TO_NV :: GLenum+gl_RELATIVE_CONIC_CURVE_TO_NV = 0x1B+gl_CLIP_DISTANCE4 :: GLenum+gl_CLIP_DISTANCE4 = 0x3004+gl_UTF8_NV :: GLenum+gl_UTF8_NV = 0x909A+gl_INVALID_INDEX :: GLenum+gl_INVALID_INDEX = 0xFFFFFFFF+gl_DOT3_RGBA_IMG :: GLenum+gl_DOT3_RGBA_IMG = 0x86AF+gl_FRAGMENT_MATERIAL_EXT :: GLenum+gl_FRAGMENT_MATERIAL_EXT = 0x8349+gl_PACK_CMYK_HINT_EXT :: GLenum+gl_PACK_CMYK_HINT_EXT = 0x800E+gl_LUMINANCE_ALPHA8I_EXT :: GLenum+gl_LUMINANCE_ALPHA8I_EXT = 0x8D93+gl_PIXEL_BUFFER_BARRIER_BIT_EXT :: GLenum+gl_PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080+gl_BUFFER_KHR :: GLenum+gl_BUFFER_KHR = 0x82E0+gl_STENCIL_BACK_OP_VALUE_AMD :: GLenum+gl_STENCIL_BACK_OP_VALUE_AMD = 0x874D+gl_DST_COLOR :: GLenum+gl_DST_COLOR = 0x0306+gl_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800+gl_ZERO :: GLenum+gl_ZERO = 0+gl_COORD_REPLACE :: GLenum+gl_COORD_REPLACE = 0x8862+gl_FRAMEBUFFER_SRGB :: GLenum+gl_FRAMEBUFFER_SRGB = 0x8DB9+gl_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES = 0x9279+gl_CONSTANT :: GLenum+gl_CONSTANT = 0x8576+gl_TEXTURE_CONSTANT_DATA_SUNX :: GLenum+gl_TEXTURE_CONSTANT_DATA_SUNX = 0x81D6+gl_MAX_DEBUG_MESSAGE_LENGTH :: GLenum+gl_MAX_DEBUG_MESSAGE_LENGTH = 0x9143+gl_MAX_VARYING_FLOATS :: GLenum+gl_MAX_VARYING_FLOATS = 0x8B4B+gl_PLUS_NV :: GLenum+gl_PLUS_NV = 0x9291+gl_UNIFORM_NAME_LENGTH :: GLenum+gl_UNIFORM_NAME_LENGTH = 0x8A39+gl_SECONDARY_COLOR_ARRAY_STRIDE :: GLenum+gl_SECONDARY_COLOR_ARRAY_STRIDE = 0x845C+gl_MAP1_VERTEX_ATTRIB13_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB13_4_NV = 0x866D+gl_TRACK_MATRIX_TRANSFORM_NV :: GLenum+gl_TRACK_MATRIX_TRANSFORM_NV = 0x8649+gl_MAX_COMPUTE_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMPUTE_UNIFORM_COMPONENTS = 0x8263+gl_DOUBLE_MAT4 :: GLenum+gl_DOUBLE_MAT4 = 0x8F48+gl_TEXTURE_SRGB_DECODE_EXT :: GLenum+gl_TEXTURE_SRGB_DECODE_EXT = 0x8A48+gl_TEXTURE_BORDER_COLOR :: GLenum+gl_TEXTURE_BORDER_COLOR = 0x1004+gl_DISPLAY_LIST :: GLenum+gl_DISPLAY_LIST = 0x82E7+gl_COLOR_ENCODING :: GLenum+gl_COLOR_ENCODING = 0x8296+gl_EXPAND_NEGATE_NV :: GLenum+gl_EXPAND_NEGATE_NV = 0x8539+gl_UNPACK_ROW_LENGTH_EXT :: GLenum+gl_UNPACK_ROW_LENGTH_EXT = 0x0CF2+gl_RGB_SCALE_ARB :: GLenum+gl_RGB_SCALE_ARB = 0x8573+gl_CURRENT_ATTRIB_NV :: GLenum+gl_CURRENT_ATTRIB_NV = 0x8626+gl_TEXTURE25 :: GLenum+gl_TEXTURE25 = 0x84D9+gl_DEPTH :: GLenum+gl_DEPTH = 0x1801+gl_DRAW_BUFFER2_ARB :: GLenum+gl_DRAW_BUFFER2_ARB = 0x8827+gl_FENCE_CONDITION_NV :: GLenum+gl_FENCE_CONDITION_NV = 0x84F4+gl_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB :: GLenum+gl_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E+gl_OP_POWER_EXT :: GLenum+gl_OP_POWER_EXT = 0x8793+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB :: GLenum+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E+gl_FRAMEBUFFER_DEFAULT :: GLenum+gl_FRAMEBUFFER_DEFAULT = 0x8218+gl_COLOR_ATTACHMENT13_EXT :: GLenum+gl_COLOR_ATTACHMENT13_EXT = 0x8CED+gl_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215+gl_CUBIC_HP :: GLenum+gl_CUBIC_HP = 0x815F+gl_GREATER :: GLenum+gl_GREATER = 0x0204+gl_OP_MOV_EXT :: GLenum+gl_OP_MOV_EXT = 0x8799+gl_RED_SNORM :: GLenum+gl_RED_SNORM = 0x8F90+gl_ALPHA_MAX_CLAMP_INGR :: GLenum+gl_ALPHA_MAX_CLAMP_INGR = 0x8567+gl_VERTEX_ATTRIB_ARRAY_LONG :: GLenum+gl_VERTEX_ATTRIB_ARRAY_LONG = 0x874E+gl_DEBUG_SEVERITY_LOW_ARB :: GLenum+gl_DEBUG_SEVERITY_LOW_ARB = 0x9148+gl_PURGEABLE_APPLE :: GLenum+gl_PURGEABLE_APPLE = 0x8A1D+gl_MAX_SHININESS_NV :: GLenum+gl_MAX_SHININESS_NV = 0x8504+gl_VERTEX_SHADER_INVARIANTS_EXT :: GLenum+gl_VERTEX_SHADER_INVARIANTS_EXT = 0x87D1+gl_CLIP_DISTANCE1 :: GLenum+gl_CLIP_DISTANCE1 = 0x3001+gl_PROGRAM_NATIVE_PARAMETERS_ARB :: GLenum+gl_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA+gl_SRC_ALPHA_SATURATE :: GLenum+gl_SRC_ALPHA_SATURATE = 0x0308+gl_COLOR_RENDERABLE :: GLenum+gl_COLOR_RENDERABLE = 0x8286+gl_LINE_STIPPLE :: GLenum+gl_LINE_STIPPLE = 0x0B24+gl_COMPILE_AND_EXECUTE :: GLenum+gl_COMPILE_AND_EXECUTE = 0x1301+gl_FOG_COORDINATE :: GLenum+gl_FOG_COORDINATE = 0x8451+gl_MULTISAMPLE_COVERAGE_MODES_NV :: GLenum+gl_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E12+gl_OUTPUT_TEXTURE_COORD16_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD16_EXT = 0x87AD+gl_SCALE_BY_FOUR_NV :: GLenum+gl_SCALE_BY_FOUR_NV = 0x853F+gl_INDEX_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899+gl_MAX_TEXTURE_IMAGE_UNITS_ARB :: GLenum+gl_MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872+gl_HALF_BIAS_NEGATE_NV :: GLenum+gl_HALF_BIAS_NEGATE_NV = 0x853B+gl_INT_IMAGE_2D_MULTISAMPLE_EXT :: GLenum+gl_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x9060+gl_CON_30_ATI :: GLenum+gl_CON_30_ATI = 0x895F+gl_SAMPLE_ALPHA_TO_ONE_EXT :: GLenum+gl_SAMPLE_ALPHA_TO_ONE_EXT = 0x809F+gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A+gl_STORAGE_CACHED_APPLE :: GLenum+gl_STORAGE_CACHED_APPLE = 0x85BE+gl_SAMPLER_2D_SHADOW :: GLenum+gl_SAMPLER_2D_SHADOW = 0x8B62+gl_ALPHA_FLOAT16_APPLE :: GLenum+gl_ALPHA_FLOAT16_APPLE = 0x881C+gl_PERFQUERY_COUNTER_EVENT_INTEL :: GLenum+gl_PERFQUERY_COUNTER_EVENT_INTEL = 0x94F0+gl_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB :: GLenum+gl_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = 0x91A9+gl_BACK_PRIMARY_COLOR_NV :: GLenum+gl_BACK_PRIMARY_COLOR_NV = 0x8C77+gl_PROGRAM_PARAMETERS_ARB :: GLenum+gl_PROGRAM_PARAMETERS_ARB = 0x88A8+gl_MIN_SPARSE_LEVEL_AMD :: GLenum+gl_MIN_SPARSE_LEVEL_AMD = 0x919B+gl_INT_SAMPLER_1D_ARRAY_EXT :: GLenum+gl_INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE+gl_DOUBLEBUFFER :: GLenum+gl_DOUBLEBUFFER = 0x0C32+gl_NEGATIVE_W_EXT :: GLenum+gl_NEGATIVE_W_EXT = 0x87DC+gl_VIEW_CLASS_RGTC1_RED :: GLenum+gl_VIEW_CLASS_RGTC1_RED = 0x82D0+gl_PROGRAM_KHR :: GLenum+gl_PROGRAM_KHR = 0x82E2+gl_LINEARDODGE_NV :: GLenum+gl_LINEARDODGE_NV = 0x92A4+gl_NORMALIZED_RANGE_EXT :: GLenum+gl_NORMALIZED_RANGE_EXT = 0x87E0+gl_BUFFER_SERIALIZED_MODIFY_APPLE :: GLenum+gl_BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12+gl_TEXTURE3_ARB :: GLenum+gl_TEXTURE3_ARB = 0x84C3+gl_INDEX_TEST_FUNC_EXT :: GLenum+gl_INDEX_TEST_FUNC_EXT = 0x81B6+gl_COMPUTE_TEXTURE :: GLenum+gl_COMPUTE_TEXTURE = 0x82A0+gl_UNSIGNED_INT_IMAGE_BUFFER_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_BUFFER_EXT = 0x9067+gl_CON_9_ATI :: GLenum+gl_CON_9_ATI = 0x894A+gl_RELATIVE_LINE_TO_NV :: GLenum+gl_RELATIVE_LINE_TO_NV = 0x05+gl_TEXTURE_RECTANGLE_NV :: GLenum+gl_TEXTURE_RECTANGLE_NV = 0x84F5+gl_COMPRESSED_RGBA_S3TC_DXT5_ANGLE :: GLenum+gl_COMPRESSED_RGBA_S3TC_DXT5_ANGLE = 0x83F3+gl_COMPRESSED_RGBA_ASTC_6x5_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93B3+gl_TEXTURE_LUMINANCE_SIZE :: GLenum+gl_TEXTURE_LUMINANCE_SIZE = 0x8060+gl_PROJECTION_MATRIX :: GLenum+gl_PROJECTION_MATRIX = 0x0BA7+gl_VIBRANCE_BIAS_NV :: GLenum+gl_VIBRANCE_BIAS_NV = 0x8719+gl_MAX_VERTEX_ATOMIC_COUNTERS :: GLenum+gl_MAX_VERTEX_ATOMIC_COUNTERS = 0x92D2+gl_FOG_COORD_ARRAY_POINTER :: GLenum+gl_FOG_COORD_ARRAY_POINTER = 0x8456+gl_POLYGON_OFFSET_BIAS_EXT :: GLenum+gl_POLYGON_OFFSET_BIAS_EXT = 0x8039+gl_DEBUG_SOURCE_OTHER :: GLenum+gl_DEBUG_SOURCE_OTHER = 0x824B+gl_LINEAR_SHARPEN_ALPHA_SGIS :: GLenum+gl_LINEAR_SHARPEN_ALPHA_SGIS = 0x80AE+gl_AVERAGE_EXT :: GLenum+gl_AVERAGE_EXT = 0x8335+gl_PACK_SKIP_IMAGES_EXT :: GLenum+gl_PACK_SKIP_IMAGES_EXT = 0x806B+gl_BITMAP_TOKEN :: GLenum+gl_BITMAP_TOKEN = 0x0704+gl_TESSELLATION_MODE_AMD :: GLenum+gl_TESSELLATION_MODE_AMD = 0x9004+gl_POST_CONVOLUTION_COLOR_TABLE_SGI :: GLenum+gl_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1+gl_MODELVIEW1_EXT :: GLenum+gl_MODELVIEW1_EXT = 0x850A+gl_OPERAND1_RGB_ARB :: GLenum+gl_OPERAND1_RGB_ARB = 0x8591+gl_4D_COLOR_TEXTURE :: GLenum+gl_4D_COLOR_TEXTURE = 0x0604+gl_ACTIVE_ATTRIBUTES :: GLenum+gl_ACTIVE_ATTRIBUTES = 0x8B89+gl_BUFFER_BINDING :: GLenum+gl_BUFFER_BINDING = 0x9302+gl_VERTEX_STATE_PROGRAM_NV :: GLenum+gl_VERTEX_STATE_PROGRAM_NV = 0x8621+gl_DST_ATOP_NV :: GLenum+gl_DST_ATOP_NV = 0x928F+gl_TEXTURE_DEPTH_EXT :: GLenum+gl_TEXTURE_DEPTH_EXT = 0x8071+gl_UNSIGNED_INT_VEC4 :: GLenum+gl_UNSIGNED_INT_VEC4 = 0x8DC8+gl_GREEN_INTEGER :: GLenum+gl_GREEN_INTEGER = 0x8D95+gl_DOUBLE_MAT4x2_EXT :: GLenum+gl_DOUBLE_MAT4x2_EXT = 0x8F4D+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93D7+gl_INDEX_ARRAY_LIST_IBM :: GLenum+gl_INDEX_ARRAY_LIST_IBM = 103073+gl_SAMPLER_2D_ARRAY_SHADOW :: GLenum+gl_SAMPLER_2D_ARRAY_SHADOW = 0x8DC4+gl_COMPRESSED_SRGB_S3TC_DXT1_NV :: GLenum+gl_COMPRESSED_SRGB_S3TC_DXT1_NV = 0x8C4C+gl_COMPRESSED_RGBA_ASTC_4x3x3_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_4x3x3_OES = 0x93C1+gl_DRAW_BUFFER3_ATI :: GLenum+gl_DRAW_BUFFER3_ATI = 0x8828+gl_MAX_FRAGMENT_UNIFORM_COMPONENTS :: GLenum+gl_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49+gl_PROXY_TEXTURE_3D_EXT :: GLenum+gl_PROXY_TEXTURE_3D_EXT = 0x8070+gl_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8E85+gl_PATH_COMPUTED_LENGTH_NV :: GLenum+gl_PATH_COMPUTED_LENGTH_NV = 0x90A0+gl_DEPTH_STENCIL_MESA :: GLenum+gl_DEPTH_STENCIL_MESA = 0x8750+gl_MAT_DIFFUSE_BIT_PGI :: GLenum+gl_MAT_DIFFUSE_BIT_PGI = 0x00400000+gl_TEXTURE_STENCIL_SIZE :: GLenum+gl_TEXTURE_STENCIL_SIZE = 0x88F1+gl_PATH_PROJECTION_NV :: GLenum+gl_PATH_PROJECTION_NV = 0x1701+gl_DUAL_TEXTURE_SELECT_SGIS :: GLenum+gl_DUAL_TEXTURE_SELECT_SGIS = 0x8124+gl_MATRIX14_ARB :: GLenum+gl_MATRIX14_ARB = 0x88CE+gl_PATH_OBJECT_BOUNDING_BOX_NV :: GLenum+gl_PATH_OBJECT_BOUNDING_BOX_NV = 0x908A+gl_READ_PIXELS :: GLenum+gl_READ_PIXELS = 0x828C+gl_TRIANGLE_LIST_SUN :: GLenum+gl_TRIANGLE_LIST_SUN = 0x81D7+gl_COMPARE_R_TO_TEXTURE :: GLenum+gl_COMPARE_R_TO_TEXTURE = 0x884E+gl_INTENSITY8UI_EXT :: GLenum+gl_INTENSITY8UI_EXT = 0x8D7F+gl_DEBUG_OUTPUT_SYNCHRONOUS_ARB :: GLenum+gl_DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242+gl_COLOR_TABLE_GREEN_SIZE :: GLenum+gl_COLOR_TABLE_GREEN_SIZE = 0x80DB+gl_CURRENT_VERTEX_ATTRIB :: GLenum+gl_CURRENT_VERTEX_ATTRIB = 0x8626+gl_POST_COLOR_MATRIX_GREEN_BIAS :: GLenum+gl_POST_COLOR_MATRIX_GREEN_BIAS = 0x80B9+gl_GPU_MEMORY_INFO_EVICTION_COUNT_NVX :: GLenum+gl_GPU_MEMORY_INFO_EVICTION_COUNT_NVX = 0x904A+gl_SUBSAMPLE_DISTANCE_AMD :: GLenum+gl_SUBSAMPLE_DISTANCE_AMD = 0x883F+gl_SRGB8_EXT :: GLenum+gl_SRGB8_EXT = 0x8C41+gl_DETAIL_TEXTURE_FUNC_POINTS_SGIS :: GLenum+gl_DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C+gl_INCR_WRAP_EXT :: GLenum+gl_INCR_WRAP_EXT = 0x8507+gl_UNPACK_COMPRESSED_BLOCK_SIZE :: GLenum+gl_UNPACK_COMPRESSED_BLOCK_SIZE = 0x912A+gl_OBJECT_VALIDATE_STATUS_ARB :: GLenum+gl_OBJECT_VALIDATE_STATUS_ARB = 0x8B83+gl_WEIGHT_ARRAY_STRIDE_ARB :: GLenum+gl_WEIGHT_ARRAY_STRIDE_ARB = 0x86AA+gl_OUTPUT_TEXTURE_COORD3_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD3_EXT = 0x87A0+gl_TEXTURE16_ARB :: GLenum+gl_TEXTURE16_ARB = 0x84D0+gl_VIDEO_COLOR_CONVERSION_MATRIX_NV :: GLenum+gl_VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029+gl_EYE_DISTANCE_TO_POINT_SGIS :: GLenum+gl_EYE_DISTANCE_TO_POINT_SGIS = 0x81F0+gl_TEXTURE_COMPARE_FUNC :: GLenum+gl_TEXTURE_COMPARE_FUNC = 0x884D+gl_DEPTH_BUFFER_FLOAT_MODE_NV :: GLenum+gl_DEPTH_BUFFER_FLOAT_MODE_NV = 0x8DAF+gl_TEXTURE_SWIZZLE_G :: GLenum+gl_TEXTURE_SWIZZLE_G = 0x8E43+gl_DEBUG_TYPE_OTHER_ARB :: GLenum+gl_DEBUG_TYPE_OTHER_ARB = 0x8251+gl_TESS_EVALUATION_SHADER_BIT_EXT :: GLenum+gl_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010+gl_VERTEX_PROGRAM_CALLBACK_DATA_MESA :: GLenum+gl_VERTEX_PROGRAM_CALLBACK_DATA_MESA = 0x8BB7+gl_INT_SAMPLER_BUFFER_EXT :: GLenum+gl_INT_SAMPLER_BUFFER_EXT = 0x8DD0+gl_OP_CLAMP_EXT :: GLenum+gl_OP_CLAMP_EXT = 0x878E+gl_POINT_SIZE_MIN :: GLenum+gl_POINT_SIZE_MIN = 0x8126+gl_UNSIGNED_BYTE_3_3_2_EXT :: GLenum+gl_UNSIGNED_BYTE_3_3_2_EXT = 0x8032+gl_TEXTURE_CLIPMAP_DEPTH_SGIX :: GLenum+gl_TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176+gl_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT :: GLenum+gl_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = 0x8D6A+gl_DOUBLE_VEC4_EXT :: GLenum+gl_DOUBLE_VEC4_EXT = 0x8FFE+gl_SYNC_CONDITION_APPLE :: GLenum+gl_SYNC_CONDITION_APPLE = 0x9113+gl_MAX_TEXTURE_COORDS_NV :: GLenum+gl_MAX_TEXTURE_COORDS_NV = 0x8871+gl_RELATIVE_QUADRATIC_CURVE_TO_NV :: GLenum+gl_RELATIVE_QUADRATIC_CURVE_TO_NV = 0x0B+gl_DEBUG_GROUP_STACK_DEPTH_KHR :: GLenum+gl_DEBUG_GROUP_STACK_DEPTH_KHR = 0x826D+gl_CONTEXT_LOST_KHR :: GLenum+gl_CONTEXT_LOST_KHR = 0x0507+gl_QUADRATIC_CURVE_TO_NV :: GLenum+gl_QUADRATIC_CURVE_TO_NV = 0x0A+gl_MIN_EXT :: GLenum+gl_MIN_EXT = 0x8007+gl_VERTEX_ATTRIB_ARRAY11_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY11_NV = 0x865B+gl_FACTOR_ALPHA_MODULATE_IMG :: GLenum+gl_FACTOR_ALPHA_MODULATE_IMG = 0x8C07+gl_MAP1_GRID_DOMAIN :: GLenum+gl_MAP1_GRID_DOMAIN = 0x0DD0+gl_COLOR_MATRIX_STACK_DEPTH :: GLenum+gl_COLOR_MATRIX_STACK_DEPTH = 0x80B2+gl_IMAGE_PIXEL_FORMAT :: GLenum+gl_IMAGE_PIXEL_FORMAT = 0x82A9+gl_DRAW_BUFFER1_EXT :: GLenum+gl_DRAW_BUFFER1_EXT = 0x8826+gl_UNSIGNED_INT_VEC2 :: GLenum+gl_UNSIGNED_INT_VEC2 = 0x8DC6+gl_QUAD_LUMINANCE8_SGIS :: GLenum+gl_QUAD_LUMINANCE8_SGIS = 0x8121+gl_ELEMENT_ARRAY_UNIFIED_NV :: GLenum+gl_ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F+gl_COLOR_LOGIC_OP :: GLenum+gl_COLOR_LOGIC_OP = 0x0BF2+gl_GREEN_NV :: GLenum+gl_GREEN_NV = 0x1904+gl_DEPTH_COMPONENT :: GLenum+gl_DEPTH_COMPONENT = 0x1902+gl_TEXTURE18 :: GLenum+gl_TEXTURE18 = 0x84D2+gl_COMBINER_SUM_OUTPUT_NV :: GLenum+gl_COMBINER_SUM_OUTPUT_NV = 0x854C+gl_DUAL_LUMINANCE8_SGIS :: GLenum+gl_DUAL_LUMINANCE8_SGIS = 0x8115+gl_PATH_DASH_OFFSET_RESET_NV :: GLenum+gl_PATH_DASH_OFFSET_RESET_NV = 0x90B4+gl_INT_SAMPLER_BUFFER :: GLenum+gl_INT_SAMPLER_BUFFER = 0x8DD0+gl_DEBUG_SEVERITY_MEDIUM_ARB :: GLenum+gl_DEBUG_SEVERITY_MEDIUM_ARB = 0x9147+gl_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x8C76+gl_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX :: GLenum+gl_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A+gl_UNSIGNED_SHORT_15_1_MESA :: GLenum+gl_UNSIGNED_SHORT_15_1_MESA = 0x8753+gl_LUMINANCE32F_ARB :: GLenum+gl_LUMINANCE32F_ARB = 0x8818+gl_TRANSPOSE_NV :: GLenum+gl_TRANSPOSE_NV = 0x862C+gl_LUMINANCE8_EXT :: GLenum+gl_LUMINANCE8_EXT = 0x8040+gl_WRITE_DISCARD_NV :: GLenum+gl_WRITE_DISCARD_NV = 0x88BE+gl_STENCIL_BUFFER_BIT5_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT5_QCOM = 0x00200000+gl_FOG_END :: GLenum+gl_FOG_END = 0x0B64+gl_DRAW_BUFFER9_NV :: GLenum+gl_DRAW_BUFFER9_NV = 0x882E+gl_PROVOKING_VERTEX_EXT :: GLenum+gl_PROVOKING_VERTEX_EXT = 0x8E4F+gl_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x92CF+gl_2PASS_0_EXT :: GLenum+gl_2PASS_0_EXT = 0x80A2+gl_MAP_UNSYNCHRONIZED_BIT :: GLenum+gl_MAP_UNSYNCHRONIZED_BIT = 0x0020+gl_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI :: GLenum+gl_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x87F8+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV :: GLenum+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5E+gl_SAMPLER_CUBE_SHADOW :: GLenum+gl_SAMPLER_CUBE_SHADOW = 0x8DC5+gl_V2F :: GLenum+gl_V2F = 0x2A20+gl_IMAGE_2D_EXT :: GLenum+gl_IMAGE_2D_EXT = 0x904D+gl_LUMINANCE32UI_EXT :: GLenum+gl_LUMINANCE32UI_EXT = 0x8D74+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x900F+gl_SLUMINANCE8_ALPHA8_NV :: GLenum+gl_SLUMINANCE8_ALPHA8_NV = 0x8C45+gl_MAX_ASYNC_DRAW_PIXELS_SGIX :: GLenum+gl_MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360+gl_POINT_SIZE_ARRAY_TYPE_OES :: GLenum+gl_POINT_SIZE_ARRAY_TYPE_OES = 0x898A+gl_SIGNED_LUMINANCE8_ALPHA8_NV :: GLenum+gl_SIGNED_LUMINANCE8_ALPHA8_NV = 0x8704+gl_UNSIGNED_INT_24_8_EXT :: GLenum+gl_UNSIGNED_INT_24_8_EXT = 0x84FA+gl_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV :: GLenum+gl_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x90BE+gl_CONIC_CURVE_TO_NV :: GLenum+gl_CONIC_CURVE_TO_NV = 0x1A+gl_STREAM_DRAW_ARB :: GLenum+gl_STREAM_DRAW_ARB = 0x88E0+gl_ACTIVE_PROGRAM_EXT :: GLenum+gl_ACTIVE_PROGRAM_EXT = 0x8B8D+gl_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB :: GLenum+gl_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = 0x91BF+gl_PROGRAM_RESIDENT_NV :: GLenum+gl_PROGRAM_RESIDENT_NV = 0x8647+gl_COLOR_TABLE_ALPHA_SIZE_SGI :: GLenum+gl_COLOR_TABLE_ALPHA_SIZE_SGI = 0x80DD+gl_INT_IMAGE_2D_ARRAY_EXT :: GLenum+gl_INT_IMAGE_2D_ARRAY_EXT = 0x905E+gl_OUTPUT_TEXTURE_COORD15_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD15_EXT = 0x87AC+gl_SRC_OUT_NV :: GLenum+gl_SRC_OUT_NV = 0x928C+gl_MAP_FLUSH_EXPLICIT_BIT :: GLenum+gl_MAP_FLUSH_EXPLICIT_BIT = 0x0010+gl_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB :: GLenum+gl_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = 0x8E8F+gl_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS :: GLenum+gl_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85+gl_EVAL_VERTEX_ATTRIB2_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB2_NV = 0x86C8+gl_PIXEL_TILE_WIDTH_SGIX :: GLenum+gl_PIXEL_TILE_WIDTH_SGIX = 0x8140+gl_PROXY_TEXTURE_RECTANGLE :: GLenum+gl_PROXY_TEXTURE_RECTANGLE = 0x84F7+gl_VERTEX_ARRAY_BINDING :: GLenum+gl_VERTEX_ARRAY_BINDING = 0x85B5+gl_CLIP_PLANE4 :: GLenum+gl_CLIP_PLANE4 = 0x3004+gl_EVAL_VERTEX_ATTRIB15_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB15_NV = 0x86D5+gl_POINT_FADE_THRESHOLD_SIZE_ARB :: GLenum+gl_POINT_FADE_THRESHOLD_SIZE_ARB = 0x8128+gl_UNSIGNED_INT_5_9_9_9_REV_EXT :: GLenum+gl_UNSIGNED_INT_5_9_9_9_REV_EXT = 0x8C3E+gl_DEBUG_GROUP_STACK_DEPTH :: GLenum+gl_DEBUG_GROUP_STACK_DEPTH = 0x826D+gl_QUERY_WAIT_INVERTED :: GLenum+gl_QUERY_WAIT_INVERTED = 0x8E17+gl_DRAW_PIXEL_TOKEN :: GLenum+gl_DRAW_PIXEL_TOKEN = 0x0705+gl_OPERAND2_ALPHA_ARB :: GLenum+gl_OPERAND2_ALPHA_ARB = 0x859A+gl_STACK_UNDERFLOW :: GLenum+gl_STACK_UNDERFLOW = 0x0504+gl_FLOAT_VEC4_ARB :: GLenum+gl_FLOAT_VEC4_ARB = 0x8B52+gl_OBJECT_INFO_LOG_LENGTH_ARB :: GLenum+gl_OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84+gl_DRAW_BUFFER15_EXT :: GLenum+gl_DRAW_BUFFER15_EXT = 0x8834+gl_PATH_PROJECTION_MATRIX_NV :: GLenum+gl_PATH_PROJECTION_MATRIX_NV = 0x0BA7+gl_ADD_SIGNED :: GLenum+gl_ADD_SIGNED = 0x8574+gl_FRAGMENT_INTERPOLATION_OFFSET_BITS :: GLenum+gl_FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D+gl_VERTEX_SHADER_INSTRUCTIONS_EXT :: GLenum+gl_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CF+gl_NEXT_BUFFER_NV :: GLenum+gl_NEXT_BUFFER_NV = -2+gl_TRIANGLE_STRIP_ADJACENCY_ARB :: GLenum+gl_TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D+gl_UNSIGNED_BYTE_2_3_3_REV_EXT :: GLenum+gl_UNSIGNED_BYTE_2_3_3_REV_EXT = 0x8362+gl_QUERY_RESULT_NO_WAIT :: GLenum+gl_QUERY_RESULT_NO_WAIT = 0x9194+gl_SECONDARY_COLOR_ARRAY_ADDRESS_NV :: GLenum+gl_SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27+gl_ALPHA16_SNORM :: GLenum+gl_ALPHA16_SNORM = 0x9018+gl_COLOR_ARRAY_LENGTH_NV :: GLenum+gl_COLOR_ARRAY_LENGTH_NV = 0x8F2D+gl_SLUMINANCE_EXT :: GLenum+gl_SLUMINANCE_EXT = 0x8C46+gl_DOT_PRODUCT_TEXTURE_2D_NV :: GLenum+gl_DOT_PRODUCT_TEXTURE_2D_NV = 0x86EE+gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 0x8CD7+gl_INT_IMAGE_2D_ARRAY :: GLenum+gl_INT_IMAGE_2D_ARRAY = 0x905E+gl_POLYGON_OFFSET_LINE :: GLenum+gl_POLYGON_OFFSET_LINE = 0x2A02+gl_ONE_MINUS_DST_ALPHA :: GLenum+gl_ONE_MINUS_DST_ALPHA = 0x0305+gl_ACCUM_BUFFER_BIT :: GLenum+gl_ACCUM_BUFFER_BIT = 0x00000200+gl_SOURCE1_ALPHA_ARB :: GLenum+gl_SOURCE1_ALPHA_ARB = 0x8589+gl_HISTOGRAM_WIDTH_EXT :: GLenum+gl_HISTOGRAM_WIDTH_EXT = 0x8026+gl_RENDERBUFFER_SAMPLES_EXT :: GLenum+gl_RENDERBUFFER_SAMPLES_EXT = 0x8CAB+gl_FRAGMENT_LIGHTING_SGIX :: GLenum+gl_FRAGMENT_LIGHTING_SGIX = 0x8400+gl_TEXTURE_WIDTH_QCOM :: GLenum+gl_TEXTURE_WIDTH_QCOM = 0x8BD2+gl_TEXTURE_BUFFER_FORMAT_EXT :: GLenum+gl_TEXTURE_BUFFER_FORMAT_EXT = 0x8C2E+gl_VERTEX_PROGRAM_TWO_SIDE :: GLenum+gl_VERTEX_PROGRAM_TWO_SIDE = 0x8643+gl_DEBUG_TYPE_OTHER_KHR :: GLenum+gl_DEBUG_TYPE_OTHER_KHR = 0x8251+gl_PRIMARY_COLOR_EXT :: GLenum+gl_PRIMARY_COLOR_EXT = 0x8577+gl_TEXTURE_COMPRESSED_ARB :: GLenum+gl_TEXTURE_COMPRESSED_ARB = 0x86A1+gl_PROXY_TEXTURE_1D_ARRAY_EXT :: GLenum+gl_PROXY_TEXTURE_1D_ARRAY_EXT = 0x8C19+gl_NORMAL_ARRAY_TYPE :: GLenum+gl_NORMAL_ARRAY_TYPE = 0x807E+gl_POST_COLOR_MATRIX_RED_BIAS_SGI :: GLenum+gl_POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8+gl_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x880F+gl_VERTEX_ATTRIB_ARRAY7_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY7_NV = 0x8657+gl_MAX_VERTEX_ATTRIB_STRIDE :: GLenum+gl_MAX_VERTEX_ATTRIB_STRIDE = 0x82E5+gl_COLOR :: GLenum+gl_COLOR = 0x1800+gl_YCBCR_422_APPLE :: GLenum+gl_YCBCR_422_APPLE = 0x85B9+gl_TESS_GEN_SPACING :: GLenum+gl_TESS_GEN_SPACING = 0x8E77+gl_VERTEX_SHADER_INVOCATIONS_ARB :: GLenum+gl_VERTEX_SHADER_INVOCATIONS_ARB = 0x82F0+gl_STENCIL_INDEX4_OES :: GLenum+gl_STENCIL_INDEX4_OES = 0x8D47+gl_COMBINER_CD_DOT_PRODUCT_NV :: GLenum+gl_COMBINER_CD_DOT_PRODUCT_NV = 0x8546+gl_VIRTUAL_PAGE_SIZE_Z_ARB :: GLenum+gl_VIRTUAL_PAGE_SIZE_Z_ARB = 0x9197+gl_RIGHT :: GLenum+gl_RIGHT = 0x0407+gl_ALPHA16F_ARB :: GLenum+gl_ALPHA16F_ARB = 0x881C+gl_TANGENT_ARRAY_TYPE_EXT :: GLenum+gl_TANGENT_ARRAY_TYPE_EXT = 0x843E+gl_READ_FRAMEBUFFER_NV :: GLenum+gl_READ_FRAMEBUFFER_NV = 0x8CA8+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT :: GLenum+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x8C29+gl_PALETTE4_RGB8_OES :: GLenum+gl_PALETTE4_RGB8_OES = 0x8B90+gl_UNSIGNED_INT_IMAGE_3D :: GLenum+gl_UNSIGNED_INT_IMAGE_3D = 0x9064+gl_NORMAL_ARRAY_ADDRESS_NV :: GLenum+gl_NORMAL_ARRAY_ADDRESS_NV = 0x8F22+gl_NO_RESET_NOTIFICATION_EXT :: GLenum+gl_NO_RESET_NOTIFICATION_EXT = 0x8261+gl_RGB4_S3TC :: GLenum+gl_RGB4_S3TC = 0x83A1+gl_AUX1 :: GLenum+gl_AUX1 = 0x040A+gl_MODELVIEW1_ARB :: GLenum+gl_MODELVIEW1_ARB = 0x850A+gl_OP_NEGATE_EXT :: GLenum+gl_OP_NEGATE_EXT = 0x8783+gl_PACK_COMPRESSED_BLOCK_HEIGHT :: GLenum+gl_PACK_COMPRESSED_BLOCK_HEIGHT = 0x912C+gl_RENDERBUFFER_BINDING_OES :: GLenum+gl_RENDERBUFFER_BINDING_OES = 0x8CA7+gl_INT_IMAGE_1D :: GLenum+gl_INT_IMAGE_1D = 0x9057+gl_TEXTURE_GEQUAL_R_SGIX :: GLenum+gl_TEXTURE_GEQUAL_R_SGIX = 0x819D+gl_VERTEX_BINDING_DIVISOR :: GLenum+gl_VERTEX_BINDING_DIVISOR = 0x82D6+gl_BLEND_SRC_ALPHA_OES :: GLenum+gl_BLEND_SRC_ALPHA_OES = 0x80CB+gl_READ_BUFFER_NV :: GLenum+gl_READ_BUFFER_NV = 0x0C02+gl_DEBUG_TYPE_ERROR_KHR :: GLenum+gl_DEBUG_TYPE_ERROR_KHR = 0x824C+gl_INT_IMAGE_CUBE_EXT :: GLenum+gl_INT_IMAGE_CUBE_EXT = 0x905B+gl_COMPRESSED_RGBA_ASTC_6x6x6_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_6x6x6_OES = 0x93C9+gl_IMAGE_MIN_FILTER_HP :: GLenum+gl_IMAGE_MIN_FILTER_HP = 0x815D+gl_QUAD_ALPHA8_SGIS :: GLenum+gl_QUAD_ALPHA8_SGIS = 0x811F+gl_IMAGE_BINDING_LEVEL :: GLenum+gl_IMAGE_BINDING_LEVEL = 0x8F3B+gl_DOT3_RGB_EXT :: GLenum+gl_DOT3_RGB_EXT = 0x8740+gl_SAMPLER_3D_OES :: GLenum+gl_SAMPLER_3D_OES = 0x8B5F+gl_INT_VEC4 :: GLenum+gl_INT_VEC4 = 0x8B55+gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC+gl_NO_RESET_NOTIFICATION_ARB :: GLenum+gl_NO_RESET_NOTIFICATION_ARB = 0x8261+gl_IMAGE_MAG_FILTER_HP :: GLenum+gl_IMAGE_MAG_FILTER_HP = 0x815C+gl_COLOR4_BIT_PGI :: GLenum+gl_COLOR4_BIT_PGI = 0x00020000+gl_MAX_CLIPMAP_DEPTH_SGIX :: GLenum+gl_MAX_CLIPMAP_DEPTH_SGIX = 0x8177+gl_DEBUG_CATEGORY_OTHER_AMD :: GLenum+gl_DEBUG_CATEGORY_OTHER_AMD = 0x9150+gl_INT_IMAGE_2D_MULTISAMPLE :: GLenum+gl_INT_IMAGE_2D_MULTISAMPLE = 0x9060+gl_PERFQUERY_COUNTER_DATA_FLOAT_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DATA_FLOAT_INTEL = 0x94FA+gl_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3+gl_BINORMAL_ARRAY_EXT :: GLenum+gl_BINORMAL_ARRAY_EXT = 0x843A+gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211+gl_DRAW_BUFFER9_ARB :: GLenum+gl_DRAW_BUFFER9_ARB = 0x882E+gl_DSDT8_NV :: GLenum+gl_DSDT8_NV = 0x8709+gl_MAP1_VERTEX_ATTRIB9_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB9_4_NV = 0x8669+gl_PROGRAM_OBJECT_ARB :: GLenum+gl_PROGRAM_OBJECT_ARB = 0x8B40+gl_FONT_UNDERLINE_POSITION_BIT_NV :: GLenum+gl_FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000+gl_SHADER_OPERATION_NV :: GLenum+gl_SHADER_OPERATION_NV = 0x86DF+gl_QUERY_RESULT_AVAILABLE_EXT :: GLenum+gl_QUERY_RESULT_AVAILABLE_EXT = 0x8867+gl_VIVIDLIGHT_NV :: GLenum+gl_VIVIDLIGHT_NV = 0x92A6+gl_HSL_HUE_NV :: GLenum+gl_HSL_HUE_NV = 0x92AD+gl_EMBOSS_MAP_NV :: GLenum+gl_EMBOSS_MAP_NV = 0x855F+gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB :: GLenum+gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D+gl_ALL_BARRIER_BITS :: GLenum+gl_ALL_BARRIER_BITS = 0xFFFFFFFF+gl_TEXTURE11_ARB :: GLenum+gl_TEXTURE11_ARB = 0x84CB+gl_BOLD_BIT_NV :: GLenum+gl_BOLD_BIT_NV = 0x01+gl_SAMPLE_BUFFERS_3DFX :: GLenum+gl_SAMPLE_BUFFERS_3DFX = 0x86B3+gl_INTERNALFORMAT_ALPHA_SIZE :: GLenum+gl_INTERNALFORMAT_ALPHA_SIZE = 0x8274+gl_COMPRESSED_RGBA_ASTC_8x8_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93B7+gl_VIRTUAL_PAGE_SIZE_Z_AMD :: GLenum+gl_VIRTUAL_PAGE_SIZE_Z_AMD = 0x9197+gl_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09+gl_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB :: GLenum+gl_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = 0x82F3+gl_DRAW_PIXELS_APPLE :: GLenum+gl_DRAW_PIXELS_APPLE = 0x8A0A+gl_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x8519+gl_FRAGMENT_COLOR_MATERIAL_FACE_SGIX :: GLenum+gl_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402+gl_DRAW_INDIRECT_ADDRESS_NV :: GLenum+gl_DRAW_INDIRECT_ADDRESS_NV = 0x8F41+gl_COVERAGE_BUFFER_BIT_NV :: GLenum+gl_COVERAGE_BUFFER_BIT_NV = 0x00008000+gl_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = 0x90CC+gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x8DA9+gl_BLUE_NV :: GLenum+gl_BLUE_NV = 0x1905+gl_TEXTURE0_ARB :: GLenum+gl_TEXTURE0_ARB = 0x84C0+gl_DEBUG_SOURCE_THIRD_PARTY_ARB :: GLenum+gl_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249+gl_TEXTURE_NORMAL_EXT :: GLenum+gl_TEXTURE_NORMAL_EXT = 0x85AF+gl_TEXTURE_BUFFER_FORMAT_ARB :: GLenum+gl_TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E+gl_OPERAND0_ALPHA :: GLenum+gl_OPERAND0_ALPHA = 0x8598+gl_FLOAT_MAT2x3 :: GLenum+gl_FLOAT_MAT2x3 = 0x8B65+gl_TEXTURE_BINDING :: GLenum+gl_TEXTURE_BINDING = 0x82EB+gl_INT_SAMPLER_2D :: GLenum+gl_INT_SAMPLER_2D = 0x8DCA+gl_OR :: GLenum+gl_OR = 0x1507+gl_INT16_VEC2_NV :: GLenum+gl_INT16_VEC2_NV = 0x8FE5+gl_DUAL_ALPHA4_SGIS :: GLenum+gl_DUAL_ALPHA4_SGIS = 0x8110+gl_FRAMEZOOM_FACTOR_SGIX :: GLenum+gl_FRAMEZOOM_FACTOR_SGIX = 0x818C+gl_IMAGE_2D_MULTISAMPLE_ARRAY_EXT :: GLenum+gl_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9056+gl_RGB_INTEGER :: GLenum+gl_RGB_INTEGER = 0x8D98+gl_UNSIGNED_INT64_VEC2_NV :: GLenum+gl_UNSIGNED_INT64_VEC2_NV = 0x8FF5+gl_OUTPUT_TEXTURE_COORD21_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD21_EXT = 0x87B2+gl_ENABLE_BIT :: GLenum+gl_ENABLE_BIT = 0x00002000+gl_POLYGON_OFFSET_EXT :: GLenum+gl_POLYGON_OFFSET_EXT = 0x8037+gl_PIXEL_TEX_GEN_MODE_SGIX :: GLenum+gl_PIXEL_TEX_GEN_MODE_SGIX = 0x832B+gl_LINE_SMOOTH :: GLenum+gl_LINE_SMOOTH = 0x0B20+gl_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB :: GLenum+gl_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = 0x919A+gl_COLOR_TABLE_LUMINANCE_SIZE_SGI :: GLenum+gl_COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x80DE+gl_COLOR_BUFFER_BIT7_QCOM :: GLenum+gl_COLOR_BUFFER_BIT7_QCOM = 0x00000080+gl_PATH_FILL_MODE_NV :: GLenum+gl_PATH_FILL_MODE_NV = 0x9080+gl_IMAGE_CUBE :: GLenum+gl_IMAGE_CUBE = 0x9050+gl_CON_5_ATI :: GLenum+gl_CON_5_ATI = 0x8946+gl_COLOR_ATTACHMENT2_EXT :: GLenum+gl_COLOR_ATTACHMENT2_EXT = 0x8CE2+gl_FAILURE_NV :: GLenum+gl_FAILURE_NV = 0x9030+gl_VERTEX_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_VERTEX_ARRAY_LIST_STRIDE_IBM = 103080+gl_MAX_SPARSE_TEXTURE_SIZE_ARB :: GLenum+gl_MAX_SPARSE_TEXTURE_SIZE_ARB = 0x9198+gl_VERSION_ES_CL_1_1 :: GLenum+gl_VERSION_ES_CL_1_1 = 1+gl_PERFMON_GLOBAL_MODE_QCOM :: GLenum+gl_PERFMON_GLOBAL_MODE_QCOM = 0x8FA0+gl_DEPTH_COMPONENT32F :: GLenum+gl_DEPTH_COMPONENT32F = 0x8CAC+gl_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT :: GLenum+gl_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = 0x9124+gl_MAX_TESS_CONTROL_UNIFORM_COMPONENTS :: GLenum+gl_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F+gl_IMAGE_2D_MULTISAMPLE_EXT :: GLenum+gl_IMAGE_2D_MULTISAMPLE_EXT = 0x9055+gl_FRAMEBUFFER_OES :: GLenum+gl_FRAMEBUFFER_OES = 0x8D40+gl_TRANSPOSE_PROJECTION_MATRIX :: GLenum+gl_TRANSPOSE_PROJECTION_MATRIX = 0x84E4+gl_BUFFER_MAP_POINTER :: GLenum+gl_BUFFER_MAP_POINTER = 0x88BD+gl_INT_10_10_10_2_OES :: GLenum+gl_INT_10_10_10_2_OES = 0x8DF7+gl_PROGRAM_PIPELINE_OBJECT_EXT :: GLenum+gl_PROGRAM_PIPELINE_OBJECT_EXT = 0x8A4F+gl_GEOMETRY_SHADER_INVOCATIONS_EXT :: GLenum+gl_GEOMETRY_SHADER_INVOCATIONS_EXT = 0x887F+gl_SPRITE_AXIS_SGIX :: GLenum+gl_SPRITE_AXIS_SGIX = 0x814A+gl_RED_INTEGER_EXT :: GLenum+gl_RED_INTEGER_EXT = 0x8D94+gl_COMPRESSED_RGBA_ASTC_10x6_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93B9+gl_TEXTURE_COORD_ARRAY_COUNT_EXT :: GLenum+gl_TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B+gl_SIGNED_RGB_NV :: GLenum+gl_SIGNED_RGB_NV = 0x86FE+gl_CW :: GLenum+gl_CW = 0x0900+gl_PACK_SUBSAMPLE_RATE_SGIX :: GLenum+gl_PACK_SUBSAMPLE_RATE_SGIX = 0x85A0+gl_TEXTURE14_ARB :: GLenum+gl_TEXTURE14_ARB = 0x84CE+gl_OUTPUT_TEXTURE_COORD26_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD26_EXT = 0x87B7+gl_DRAW_BUFFER :: GLenum+gl_DRAW_BUFFER = 0x0C01+gl_PACK_ROW_BYTES_APPLE :: GLenum+gl_PACK_ROW_BYTES_APPLE = 0x8A15+gl_BLUE_INTEGER_EXT :: GLenum+gl_BLUE_INTEGER_EXT = 0x8D96+gl_STORAGE_CLIENT_APPLE :: GLenum+gl_STORAGE_CLIENT_APPLE = 0x85B4+gl_ALL_SHADER_BITS :: GLenum+gl_ALL_SHADER_BITS = 0xFFFFFFFF+gl_FOG_COORDINATE_ARRAY_POINTER :: GLenum+gl_FOG_COORDINATE_ARRAY_POINTER = 0x8456+gl_ACTIVE_PROGRAM :: GLenum+gl_ACTIVE_PROGRAM = 0x8259+gl_RGBA32F_ARB :: GLenum+gl_RGBA32F_ARB = 0x8814+gl_VERTEX_ATTRIB_ARRAY_INTEGER :: GLenum+gl_VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD+gl_MAP2_VERTEX_ATTRIB13_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB13_4_NV = 0x867D+gl_SAMPLER_2D :: GLenum+gl_SAMPLER_2D = 0x8B5E+gl_QUERY :: GLenum+gl_QUERY = 0x82E3+gl_GEOMETRY_INPUT_TYPE_EXT :: GLenum+gl_GEOMETRY_INPUT_TYPE_EXT = 0x8DDB+gl_RGB5_A1_OES :: GLenum+gl_RGB5_A1_OES = 0x8057+gl_MATRIX15_ARB :: GLenum+gl_MATRIX15_ARB = 0x88CF+gl_INT_IMAGE_CUBE_MAP_ARRAY :: GLenum+gl_INT_IMAGE_CUBE_MAP_ARRAY = 0x905F+gl_STACK_OVERFLOW :: GLenum+gl_STACK_OVERFLOW = 0x0503+gl_NORMAL_ARRAY_LENGTH_NV :: GLenum+gl_NORMAL_ARRAY_LENGTH_NV = 0x8F2C+gl_RENDERBUFFER_BLUE_SIZE_EXT :: GLenum+gl_RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52+gl_TEXTURE_INTENSITY_SIZE_EXT :: GLenum+gl_TEXTURE_INTENSITY_SIZE_EXT = 0x8061+gl_POINT_SIZE_MIN_SGIS :: GLenum+gl_POINT_SIZE_MIN_SGIS = 0x8126+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW :: GLenum+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D+gl_BEVEL_NV :: GLenum+gl_BEVEL_NV = 0x90A6+gl_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX :: GLenum+gl_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = 0x8311+gl_SIGNED_RGBA_NV :: GLenum+gl_SIGNED_RGBA_NV = 0x86FB+gl_COLOR_CLEAR_VALUE :: GLenum+gl_COLOR_CLEAR_VALUE = 0x0C22+gl_ARRAY_BUFFER :: GLenum+gl_ARRAY_BUFFER = 0x8892+gl_CLIP_PLANE2_IMG :: GLenum+gl_CLIP_PLANE2_IMG = 0x3002+gl_POLYGON_OFFSET_UNITS :: GLenum+gl_POLYGON_OFFSET_UNITS = 0x2A00+gl_COLOR_ARRAY_POINTER_EXT :: GLenum+gl_COLOR_ARRAY_POINTER_EXT = 0x8090+gl_POST_COLOR_MATRIX_COLOR_TABLE :: GLenum+gl_POST_COLOR_MATRIX_COLOR_TABLE = 0x80D2+gl_SHADOW_AMBIENT_SGIX :: GLenum+gl_SHADOW_AMBIENT_SGIX = 0x80BF+gl_SAMPLES :: GLenum+gl_SAMPLES = 0x80A9+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES = 0x93E4+gl_MIRRORED_REPEAT_IBM :: GLenum+gl_MIRRORED_REPEAT_IBM = 0x8370+gl_TEXTURE_2D_MULTISAMPLE_ARRAY_OES :: GLenum+gl_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 0x9102+gl_FRAMEBUFFER_DEFAULT_WIDTH :: GLenum+gl_FRAMEBUFFER_DEFAULT_WIDTH = 0x9310+gl_TEXTURE_GEN_MODE_OES :: GLenum+gl_TEXTURE_GEN_MODE_OES = 0x2500+gl_BLEND_SRC_ALPHA_EXT :: GLenum+gl_BLEND_SRC_ALPHA_EXT = 0x80CB+gl_OUTPUT_COLOR0_EXT :: GLenum+gl_OUTPUT_COLOR0_EXT = 0x879B+gl_SLUMINANCE8_ALPHA8 :: GLenum+gl_SLUMINANCE8_ALPHA8 = 0x8C45+gl_SAMPLER_3D_ARB :: GLenum+gl_SAMPLER_3D_ARB = 0x8B5F+gl_UNSIGNED_INT_SAMPLER_3D :: GLenum+gl_UNSIGNED_INT_SAMPLER_3D = 0x8DD3+gl_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA+gl_PATH_FORMAT_SVG_NV :: GLenum+gl_PATH_FORMAT_SVG_NV = 0x9070+gl_MAP1_BINORMAL_EXT :: GLenum+gl_MAP1_BINORMAL_EXT = 0x8446+gl_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX :: GLenum+gl_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX = 0x8188+gl_COLOR_ARRAY_BUFFER_BINDING :: GLenum+gl_COLOR_ARRAY_BUFFER_BINDING = 0x8898+gl_MATRIX_INDEX_ARRAY_TYPE_OES :: GLenum+gl_MATRIX_INDEX_ARRAY_TYPE_OES = 0x8847+gl_PROJECTION_STACK_DEPTH :: GLenum+gl_PROJECTION_STACK_DEPTH = 0x0BA4+gl_AUTO_NORMAL :: GLenum+gl_AUTO_NORMAL = 0x0D80+gl_FRAGMENT_SHADER_ATI :: GLenum+gl_FRAGMENT_SHADER_ATI = 0x8920+gl_SAMPLE_BUFFERS_EXT :: GLenum+gl_SAMPLE_BUFFERS_EXT = 0x80A8+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x906C+gl_UNSIGNED_INT_10_10_10_2 :: GLenum+gl_UNSIGNED_INT_10_10_10_2 = 0x8036+gl_COMPRESSED_RG11_EAC_OES :: GLenum+gl_COMPRESSED_RG11_EAC_OES = 0x9272+gl_LUMINANCE8I_EXT :: GLenum+gl_LUMINANCE8I_EXT = 0x8D92+gl_VERTEX_ATTRIB_ARRAY13_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY13_NV = 0x865D+gl_UNIFORM_BUFFER_SIZE :: GLenum+gl_UNIFORM_BUFFER_SIZE = 0x8A2A+gl_TEXTURE2_ARB :: GLenum+gl_TEXTURE2_ARB = 0x84C2+gl_COMPRESSED_RGBA_BPTC_UNORM_ARB :: GLenum+gl_COMPRESSED_RGBA_BPTC_UNORM_ARB = 0x8E8C+gl_POLYGON :: GLenum+gl_POLYGON = 0x0009+gl_CLIENT_MAPPED_BUFFER_BARRIER_BIT :: GLenum+gl_CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000+gl_ELEMENT_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895+gl_SAMPLE_BUFFERS_ARB :: GLenum+gl_SAMPLE_BUFFERS_ARB = 0x80A8+gl_RGBA4_DXT5_S3TC :: GLenum+gl_RGBA4_DXT5_S3TC = 0x83A5+gl_STREAM_READ :: GLenum+gl_STREAM_READ = 0x88E1+gl_STATIC_READ :: GLenum+gl_STATIC_READ = 0x88E5+gl_MAX_FRAGMENT_ATOMIC_COUNTERS :: GLenum+gl_MAX_FRAGMENT_ATOMIC_COUNTERS = 0x92D6+gl_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT :: GLenum+gl_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C72+gl_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST :: GLenum+gl_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x82AD+gl_COUNT_DOWN_NV :: GLenum+gl_COUNT_DOWN_NV = 0x9089+gl_SLUMINANCE :: GLenum+gl_SLUMINANCE = 0x8C46+gl_INNOCENT_CONTEXT_RESET :: GLenum+gl_INNOCENT_CONTEXT_RESET = 0x8254+gl_DRAW_FRAMEBUFFER_BINDING_NV :: GLenum+gl_DRAW_FRAMEBUFFER_BINDING_NV = 0x8CA6+gl_VERTEX_STREAM3_ATI :: GLenum+gl_VERTEX_STREAM3_ATI = 0x876F+gl_TRIANGULAR_NV :: GLenum+gl_TRIANGULAR_NV = 0x90A5+gl_SAMPLER_2D_RECT_ARB :: GLenum+gl_SAMPLER_2D_RECT_ARB = 0x8B63+gl_POST_CONVOLUTION_GREEN_SCALE_EXT :: GLenum+gl_POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D+gl_SKIP_COMPONENTS2_NV :: GLenum+gl_SKIP_COMPONENTS2_NV = -5+gl_IMAGE_1D :: GLenum+gl_IMAGE_1D = 0x904C+gl_ATTRIB_ARRAY_TYPE_NV :: GLenum+gl_ATTRIB_ARRAY_TYPE_NV = 0x8625+gl_ORDER :: GLenum+gl_ORDER = 0x0A01+gl_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x880E+gl_RGB4_EXT :: GLenum+gl_RGB4_EXT = 0x804F+gl_COMPRESSED_TEXTURE_FORMATS_ARB :: GLenum+gl_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A3+gl_STENCIL_INDEX16_EXT :: GLenum+gl_STENCIL_INDEX16_EXT = 0x8D49+gl_OP_RECIP_SQRT_EXT :: GLenum+gl_OP_RECIP_SQRT_EXT = 0x8795+gl_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x92D1+gl_MAX_PROGRAM_TEXEL_OFFSET :: GLenum+gl_MAX_PROGRAM_TEXEL_OFFSET = 0x8905+gl_POST_TEXTURE_FILTER_BIAS_SGIX :: GLenum+gl_POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179+gl_RGB32F_EXT :: GLenum+gl_RGB32F_EXT = 0x8815+gl_SURFACE_REGISTERED_NV :: GLenum+gl_SURFACE_REGISTERED_NV = 0x86FD+gl_RGBA_FLOAT16_APPLE :: GLenum+gl_RGBA_FLOAT16_APPLE = 0x881A+gl_VIDEO_BUFFER_BINDING_NV :: GLenum+gl_VIDEO_BUFFER_BINDING_NV = 0x9021+gl_PRIMITIVE_RESTART_INDEX :: GLenum+gl_PRIMITIVE_RESTART_INDEX = 0x8F9E+gl_DOT3_RGB_ARB :: GLenum+gl_DOT3_RGB_ARB = 0x86AE+gl_INT64_VEC4_NV :: GLenum+gl_INT64_VEC4_NV = 0x8FEB+gl_DRAW_BUFFER12_ATI :: GLenum+gl_DRAW_BUFFER12_ATI = 0x8831+gl_RESAMPLE_REPLICATE_SGIX :: GLenum+gl_RESAMPLE_REPLICATE_SGIX = 0x842E+gl_ALPHA :: GLenum+gl_ALPHA = 0x1906+gl_MATRIX22_ARB :: GLenum+gl_MATRIX22_ARB = 0x88D6+gl_DEPTH_TEST :: GLenum+gl_DEPTH_TEST = 0x0B71+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93D5+gl_BLEND_SRC_ALPHA :: GLenum+gl_BLEND_SRC_ALPHA = 0x80CB+gl_MIRROR_CLAMP_ATI :: GLenum+gl_MIRROR_CLAMP_ATI = 0x8742+gl_COMBINER3_NV :: GLenum+gl_COMBINER3_NV = 0x8553+gl_TEXTURE_BINDING_1D_ARRAY_EXT :: GLenum+gl_TEXTURE_BINDING_1D_ARRAY_EXT = 0x8C1C+gl_MIRROR_CLAMP_TO_BORDER_EXT :: GLenum+gl_MIRROR_CLAMP_TO_BORDER_EXT = 0x8912+gl_MAP1_INDEX :: GLenum+gl_MAP1_INDEX = 0x0D91+gl_VIEW_CLASS_BPTC_FLOAT :: GLenum+gl_VIEW_CLASS_BPTC_FLOAT = 0x82D3+gl_TRANSPOSE_AFFINE_2D_NV :: GLenum+gl_TRANSPOSE_AFFINE_2D_NV = 0x9096+gl_IMAGE_CLASS_2_X_8 :: GLenum+gl_IMAGE_CLASS_2_X_8 = 0x82C0+gl_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB :: GLenum+gl_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x8808+gl_EYE_POINT_SGIS :: GLenum+gl_EYE_POINT_SGIS = 0x81F4+gl_TEXTURE_DEPTH_SIZE_ARB :: GLenum+gl_TEXTURE_DEPTH_SIZE_ARB = 0x884A+gl_GLYPH_HAS_KERNING_BIT_NV :: GLenum+gl_GLYPH_HAS_KERNING_BIT_NV = 0x100+gl_ACTIVE_SUBROUTINES :: GLenum+gl_ACTIVE_SUBROUTINES = 0x8DE5+gl_MVP_MATRIX_EXT :: GLenum+gl_MVP_MATRIX_EXT = 0x87E3+gl_READ_FRAMEBUFFER_BINDING :: GLenum+gl_READ_FRAMEBUFFER_BINDING = 0x8CAA+gl_GUILTY_CONTEXT_RESET_EXT :: GLenum+gl_GUILTY_CONTEXT_RESET_EXT = 0x8253+gl_ALPHA16UI_EXT :: GLenum+gl_ALPHA16UI_EXT = 0x8D78+gl_TEXTURE_SWIZZLE_B_EXT :: GLenum+gl_TEXTURE_SWIZZLE_B_EXT = 0x8E44+gl_RGB16I_EXT :: GLenum+gl_RGB16I_EXT = 0x8D89+gl_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B+gl_VERTEX_WEIGHT_ARRAY_EXT :: GLenum+gl_VERTEX_WEIGHT_ARRAY_EXT = 0x850C+gl_SWIZZLE_STR_DR_ATI :: GLenum+gl_SWIZZLE_STR_DR_ATI = 0x8978+gl_READ_FRAMEBUFFER :: GLenum+gl_READ_FRAMEBUFFER = 0x8CA8+gl_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI :: GLenum+gl_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D5+gl_COORD_REPLACE_NV :: GLenum+gl_COORD_REPLACE_NV = 0x8862+gl_MAX_CLIP_PLANES :: GLenum+gl_MAX_CLIP_PLANES = 0x0D32+gl_DRAW_BUFFER0 :: GLenum+gl_DRAW_BUFFER0 = 0x8825+gl_SPRITE_OBJECT_ALIGNED_SGIX :: GLenum+gl_SPRITE_OBJECT_ALIGNED_SGIX = 0x814D+gl_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX :: GLenum+gl_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B+gl_CONSERVE_MEMORY_HINT_PGI :: GLenum+gl_CONSERVE_MEMORY_HINT_PGI = 0x1A1FD+gl_GET_TEXTURE_IMAGE_FORMAT :: GLenum+gl_GET_TEXTURE_IMAGE_FORMAT = 0x8291+gl_MOVE_TO_RESETS_NV :: GLenum+gl_MOVE_TO_RESETS_NV = 0x90B5+gl_SHADER_CONSISTENT_NV :: GLenum+gl_SHADER_CONSISTENT_NV = 0x86DD+gl_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x8516+gl_PACK_ALIGNMENT :: GLenum+gl_PACK_ALIGNMENT = 0x0D05+gl_HISTOGRAM_ALPHA_SIZE :: GLenum+gl_HISTOGRAM_ALPHA_SIZE = 0x802B+gl_SHARED_TEXTURE_PALETTE_EXT :: GLenum+gl_SHARED_TEXTURE_PALETTE_EXT = 0x81FB+gl_MODELVIEW0_MATRIX_EXT :: GLenum+gl_MODELVIEW0_MATRIX_EXT = 0x0BA6+gl_MAX_NAME_LENGTH :: GLenum+gl_MAX_NAME_LENGTH = 0x92F6+gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY :: GLenum+gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105+gl_IMAGE_2D :: GLenum+gl_IMAGE_2D = 0x904D+gl_QUERY_BUFFER_AMD :: GLenum+gl_QUERY_BUFFER_AMD = 0x9192+gl_BUMP_ENVMAP_ATI :: GLenum+gl_BUMP_ENVMAP_ATI = 0x877B+gl_POINTS :: GLenum+gl_POINTS = 0x0000+gl_ARRAY_SIZE :: GLenum+gl_ARRAY_SIZE = 0x92FB+gl_MAX_CLIP_PLANES_IMG :: GLenum+gl_MAX_CLIP_PLANES_IMG = 0x0D32+gl_TRIANGLE_STRIP_ADJACENCY_EXT :: GLenum+gl_TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D+gl_VERTEX_STREAM6_ATI :: GLenum+gl_VERTEX_STREAM6_ATI = 0x8772+gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR :: GLenum+gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 0x824E+gl_TEXTURE22 :: GLenum+gl_TEXTURE22 = 0x84D6+gl_CURRENT_FOG_COORDINATE :: GLenum+gl_CURRENT_FOG_COORDINATE = 0x8453+gl_CON_27_ATI :: GLenum+gl_CON_27_ATI = 0x895C+gl_MAX_VERTEX_UNITS_OES :: GLenum+gl_MAX_VERTEX_UNITS_OES = 0x86A4+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT :: GLenum+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8DDF+gl_SIGNED_INTENSITY8_NV :: GLenum+gl_SIGNED_INTENSITY8_NV = 0x8708+gl_MAX_EVAL_ORDER :: GLenum+gl_MAX_EVAL_ORDER = 0x0D30+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x8518+gl_DYNAMIC_READ_ARB :: GLenum+gl_DYNAMIC_READ_ARB = 0x88E9+gl_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV :: GLenum+gl_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x885D+gl_FLOAT16_NV :: GLenum+gl_FLOAT16_NV = 0x8FF8+gl_COMPUTE_SHADER_INVOCATIONS_ARB :: GLenum+gl_COMPUTE_SHADER_INVOCATIONS_ARB = 0x82F5+gl_VERTEX_SHADER_OPTIMIZED_EXT :: GLenum+gl_VERTEX_SHADER_OPTIMIZED_EXT = 0x87D4+gl_TEXTURE_LOD_BIAS_EXT :: GLenum+gl_TEXTURE_LOD_BIAS_EXT = 0x8501+gl_INT8_VEC3_NV :: GLenum+gl_INT8_VEC3_NV = 0x8FE2+gl_4PASS_0_SGIS :: GLenum+gl_4PASS_0_SGIS = 0x80A4+gl_HISTOGRAM_EXT :: GLenum+gl_HISTOGRAM_EXT = 0x8024+gl_ALLOW_DRAW_WIN_HINT_PGI :: GLenum+gl_ALLOW_DRAW_WIN_HINT_PGI = 0x1A20F+gl_TEXTURE_GREEN_SIZE_EXT :: GLenum+gl_TEXTURE_GREEN_SIZE_EXT = 0x805D+gl_R32I :: GLenum+gl_R32I = 0x8235+gl_REG_22_ATI :: GLenum+gl_REG_22_ATI = 0x8937+gl_UNSIGNED_INT_ATOMIC_COUNTER :: GLenum+gl_UNSIGNED_INT_ATOMIC_COUNTER = 0x92DB+gl_COLOR_ATTACHMENT2 :: GLenum+gl_COLOR_ATTACHMENT2 = 0x8CE2+gl_INTENSITY8 :: GLenum+gl_INTENSITY8 = 0x804B+gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x90D7+gl_FOG_DENSITY :: GLenum+gl_FOG_DENSITY = 0x0B62+gl_RENDERBUFFER_HEIGHT_EXT :: GLenum+gl_RENDERBUFFER_HEIGHT_EXT = 0x8D43+gl_Z_EXT :: GLenum+gl_Z_EXT = 0x87D7+gl_TEXTURE_FETCH_BARRIER_BIT :: GLenum+gl_TEXTURE_FETCH_BARRIER_BIT = 0x00000008+gl_PROGRAM_BINARY_FORMATS :: GLenum+gl_PROGRAM_BINARY_FORMATS = 0x87FF+gl_UNSIGNED_INT_IMAGE_BUFFER :: GLenum+gl_UNSIGNED_INT_IMAGE_BUFFER = 0x9067+gl_OPERAND0_RGB :: GLenum+gl_OPERAND0_RGB = 0x8590+gl_COVERAGE_COMPONENT_NV :: GLenum+gl_COVERAGE_COMPONENT_NV = 0x8ED0+gl_NEGATE_BIT_ATI :: GLenum+gl_NEGATE_BIT_ATI = 0x00000004+gl_DEBUG_TYPE_PUSH_GROUP :: GLenum+gl_DEBUG_TYPE_PUSH_GROUP = 0x8269+gl_SELECT :: GLenum+gl_SELECT = 0x1C02+gl_IMAGE_BINDING_ACCESS_EXT :: GLenum+gl_IMAGE_BINDING_ACCESS_EXT = 0x8F3E+gl_TEXTURE_GEN_STR_OES :: GLenum+gl_TEXTURE_GEN_STR_OES = 0x8D60+gl_OCCLUSION_TEST_HP :: GLenum+gl_OCCLUSION_TEST_HP = 0x8165+gl_BLEND_DST_RGB_OES :: GLenum+gl_BLEND_DST_RGB_OES = 0x80C8+gl_IMAGE_BINDING_NAME :: GLenum+gl_IMAGE_BINDING_NAME = 0x8F3A+gl_DUAL_LUMINANCE_ALPHA8_SGIS :: GLenum+gl_DUAL_LUMINANCE_ALPHA8_SGIS = 0x811D+gl_POLYGON_BIT :: GLenum+gl_POLYGON_BIT = 0x00000008+gl_POST_COLOR_MATRIX_GREEN_BIAS_SGI :: GLenum+gl_POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9+gl_COLOR_ATTACHMENT8_EXT :: GLenum+gl_COLOR_ATTACHMENT8_EXT = 0x8CE8+gl_BLUE_BIAS :: GLenum+gl_BLUE_BIAS = 0x0D1B+gl_EMISSION :: GLenum+gl_EMISSION = 0x1600+gl_DEPTH_ATTACHMENT_OES :: GLenum+gl_DEPTH_ATTACHMENT_OES = 0x8D00+gl_POLYGON_OFFSET_FACTOR_EXT :: GLenum+gl_POLYGON_OFFSET_FACTOR_EXT = 0x8038+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = 0x92D4+gl_TEXTURE_MATERIAL_FACE_EXT :: GLenum+gl_TEXTURE_MATERIAL_FACE_EXT = 0x8351+gl_PN_TRIANGLES_POINT_MODE_CUBIC_ATI :: GLenum+gl_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x87F6+gl_DRAW_FRAMEBUFFER_ANGLE :: GLenum+gl_DRAW_FRAMEBUFFER_ANGLE = 0x8CA9+gl_DEPTH_BUFFER_BIT3_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT3_QCOM = 0x00000800+gl_DISTANCE_ATTENUATION_EXT :: GLenum+gl_DISTANCE_ATTENUATION_EXT = 0x8129+gl_TRACE_ARRAYS_BIT_MESA :: GLenum+gl_TRACE_ARRAYS_BIT_MESA = 0x0004+gl_MOVE_TO_NV :: GLenum+gl_MOVE_TO_NV = 0x02+gl_2PASS_1_SGIS :: GLenum+gl_2PASS_1_SGIS = 0x80A3+gl_DUAL_LUMINANCE4_SGIS :: GLenum+gl_DUAL_LUMINANCE4_SGIS = 0x8114+gl_PRIMITIVES_SUBMITTED_ARB :: GLenum+gl_PRIMITIVES_SUBMITTED_ARB = 0x82EF+gl_TOP_LEVEL_ARRAY_STRIDE :: GLenum+gl_TOP_LEVEL_ARRAY_STRIDE = 0x930D+gl_NORMAL_ARRAY_STRIDE :: GLenum+gl_NORMAL_ARRAY_STRIDE = 0x807F+gl_TEXTURE_2D_ARRAY_EXT :: GLenum+gl_TEXTURE_2D_ARRAY_EXT = 0x8C1A+gl_UNPACK_COMPRESSED_BLOCK_WIDTH :: GLenum+gl_UNPACK_COMPRESSED_BLOCK_WIDTH = 0x9127+gl_TEXTURE_FIXED_SAMPLE_LOCATIONS :: GLenum+gl_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107+gl_YCRCBA_SGIX :: GLenum+gl_YCRCBA_SGIX = 0x8319+gl_LOCATION_COMPONENT :: GLenum+gl_LOCATION_COMPONENT = 0x934A+gl_TEXTURE27 :: GLenum+gl_TEXTURE27 = 0x84DB+gl_CONTEXT_FLAG_DEBUG_BIT_KHR :: GLenum+gl_CONTEXT_FLAG_DEBUG_BIT_KHR = 0x00000002+gl_FOG_COORDINATE_EXT :: GLenum+gl_FOG_COORDINATE_EXT = 0x8451+gl_DEBUG_CALLBACK_USER_PARAM_KHR :: GLenum+gl_DEBUG_CALLBACK_USER_PARAM_KHR = 0x8245+gl_MIRRORED_REPEAT_OES :: GLenum+gl_MIRRORED_REPEAT_OES = 0x8370+gl_SYNC_GPU_COMMANDS_COMPLETE :: GLenum+gl_SYNC_GPU_COMMANDS_COMPLETE = 0x9117+gl_SLUMINANCE8_ALPHA8_EXT :: GLenum+gl_SLUMINANCE8_ALPHA8_EXT = 0x8C45+gl_TEXTURE_BUFFER_OFFSET :: GLenum+gl_TEXTURE_BUFFER_OFFSET = 0x919D+gl_PROXY_COLOR_TABLE :: GLenum+gl_PROXY_COLOR_TABLE = 0x80D3+gl_FIXED :: GLenum+gl_FIXED = 0x140C+gl_SRGB8 :: GLenum+gl_SRGB8 = 0x8C41+gl_COMPRESSED_RGBA :: GLenum+gl_COMPRESSED_RGBA = 0x84EE+gl_IMAGE_BINDING_FORMAT :: GLenum+gl_IMAGE_BINDING_FORMAT = 0x906E+gl_MAX_RENDERBUFFER_SIZE_OES :: GLenum+gl_MAX_RENDERBUFFER_SIZE_OES = 0x84E8+gl_DEBUG_SOURCE_API :: GLenum+gl_DEBUG_SOURCE_API = 0x8246+gl_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH :: GLenum+gl_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49+gl_CLIP_PLANE3_IMG :: GLenum+gl_CLIP_PLANE3_IMG = 0x3003+gl_TEXTURE16 :: GLenum+gl_TEXTURE16 = 0x84D0+gl_FRAGMENTS_INSTRUMENT_SGIX :: GLenum+gl_FRAGMENTS_INSTRUMENT_SGIX = 0x8313+gl_MATRIX8_ARB :: GLenum+gl_MATRIX8_ARB = 0x88C8+gl_DOUBLE_MAT2x4 :: GLenum+gl_DOUBLE_MAT2x4 = 0x8F4A+gl_DRAW_BUFFER9_ATI :: GLenum+gl_DRAW_BUFFER9_ATI = 0x882E+gl_CURRENT_TEXTURE_COORDS :: GLenum+gl_CURRENT_TEXTURE_COORDS = 0x0B03+gl_DOT_PRODUCT_TEXTURE_3D_NV :: GLenum+gl_DOT_PRODUCT_TEXTURE_3D_NV = 0x86EF+gl_SECONDARY_COLOR_ARRAY_STRIDE_EXT :: GLenum+gl_SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x845C+gl_UNSIGNED_INT_IMAGE_2D_ARRAY :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_ARRAY = 0x9069+gl_FRAMEBUFFER_BARRIER_BIT :: GLenum+gl_FRAMEBUFFER_BARRIER_BIT = 0x00000400+gl_MAX_SAMPLES_IMG :: GLenum+gl_MAX_SAMPLES_IMG = 0x9135+gl_TESS_CONTROL_SHADER_BIT_EXT :: GLenum+gl_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008+gl_PROGRAM_NATIVE_TEMPORARIES_ARB :: GLenum+gl_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6+gl_COMPRESSED_RGB_PVRTC_4BPPV1_IMG :: GLenum+gl_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00+gl_VERTEX_PROGRAM_ARB :: GLenum+gl_VERTEX_PROGRAM_ARB = 0x8620+gl_MAP2_BINORMAL_EXT :: GLenum+gl_MAP2_BINORMAL_EXT = 0x8447+gl_ETC1_RGB8_OES :: GLenum+gl_ETC1_RGB8_OES = 0x8D64+gl_PROGRAM_MATRIX_STACK_DEPTH_EXT :: GLenum+gl_PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x8E2F+gl_TEXTURE_USAGE_ANGLE :: GLenum+gl_TEXTURE_USAGE_ANGLE = 0x93A2+gl_TEXTURE_MATRIX :: GLenum+gl_TEXTURE_MATRIX = 0x0BA8+gl_INT_SAMPLER_CUBE_MAP_ARRAY_EXT :: GLenum+gl_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x900E+gl_INDEX_ARRAY_STRIDE :: GLenum+gl_INDEX_ARRAY_STRIDE = 0x8086+gl_POST_COLOR_MATRIX_BLUE_SCALE :: GLenum+gl_POST_COLOR_MATRIX_BLUE_SCALE = 0x80B6+gl_TESS_CONTROL_OUTPUT_VERTICES :: GLenum+gl_TESS_CONTROL_OUTPUT_VERTICES = 0x8E75+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET :: GLenum+gl_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E+gl_COMPRESSED_RGBA_ASTC_6x6_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93B4+gl_INTERNALFORMAT_SHARED_SIZE :: GLenum+gl_INTERNALFORMAT_SHARED_SIZE = 0x8277+gl_SOURCE1_RGB_EXT :: GLenum+gl_SOURCE1_RGB_EXT = 0x8581+gl_STENCIL_PASS_DEPTH_FAIL :: GLenum+gl_STENCIL_PASS_DEPTH_FAIL = 0x0B95+gl_MATRIX_PALETTE_OES :: GLenum+gl_MATRIX_PALETTE_OES = 0x8840+gl_MIN_FRAGMENT_INTERPOLATION_OFFSET :: GLenum+gl_MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B+gl_DOT3_RGBA_EXT :: GLenum+gl_DOT3_RGBA_EXT = 0x8741+gl_CLIP_VOLUME_CLIPPING_HINT_EXT :: GLenum+gl_CLIP_VOLUME_CLIPPING_HINT_EXT = 0x80F0+gl_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV :: GLenum+gl_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x80+gl_FONT_X_MIN_BOUNDS_BIT_NV :: GLenum+gl_FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000+gl_WRAP_BORDER_SUN :: GLenum+gl_WRAP_BORDER_SUN = 0x81D4+gl_MAP_INVALIDATE_RANGE_BIT :: GLenum+gl_MAP_INVALIDATE_RANGE_BIT = 0x0004+gl_PATH_MODELVIEW_NV :: GLenum+gl_PATH_MODELVIEW_NV = 0x1700+gl_TESS_CONTROL_SHADER :: GLenum+gl_TESS_CONTROL_SHADER = 0x8E88+gl_VERTEX_STREAM1_ATI :: GLenum+gl_VERTEX_STREAM1_ATI = 0x876D+gl_R3_G3_B2 :: GLenum+gl_R3_G3_B2 = 0x2A10+gl_LARGE_CW_ARC_TO_NV :: GLenum+gl_LARGE_CW_ARC_TO_NV = 0x18+gl_PRIMITIVE_BOUNDING_BOX_EXT :: GLenum+gl_PRIMITIVE_BOUNDING_BOX_EXT = 0x92BE+gl_ALPHA_BIAS :: GLenum+gl_ALPHA_BIAS = 0x0D1D+gl_DST_IN_NV :: GLenum+gl_DST_IN_NV = 0x928B+gl_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT :: GLenum+gl_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = 0x92D3+gl_NUM_FILL_STREAMS_NV :: GLenum+gl_NUM_FILL_STREAMS_NV = 0x8E29+gl_ATTRIB_ARRAY_POINTER_NV :: GLenum+gl_ATTRIB_ARRAY_POINTER_NV = 0x8645+gl_SOURCE0_RGB_ARB :: GLenum+gl_SOURCE0_RGB_ARB = 0x8580+gl_MAX_PROGRAM_TEXEL_OFFSET_EXT :: GLenum+gl_MAX_PROGRAM_TEXEL_OFFSET_EXT = 0x8905+gl_MATRIX27_ARB :: GLenum+gl_MATRIX27_ARB = 0x88DB+gl_R11F_G11F_B10F :: GLenum+gl_R11F_G11F_B10F = 0x8C3A+gl_ATOMIC_COUNTER_BUFFER_INDEX :: GLenum+gl_ATOMIC_COUNTER_BUFFER_INDEX = 0x9301+gl_TEXTURE_SWIZZLE_R_EXT :: GLenum+gl_TEXTURE_SWIZZLE_R_EXT = 0x8E42+gl_MAX_ASYNC_READ_PIXELS_SGIX :: GLenum+gl_MAX_ASYNC_READ_PIXELS_SGIX = 0x8361+gl_ACTIVE_TEXTURE_ARB :: GLenum+gl_ACTIVE_TEXTURE_ARB = 0x84E0+gl_VERTEX_SHADER_LOCAL_CONSTANTS_EXT :: GLenum+gl_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87D2+gl_REFERENCE_PLANE_SGIX :: GLenum+gl_REFERENCE_PLANE_SGIX = 0x817D+gl_UNPACK_CLIENT_STORAGE_APPLE :: GLenum+gl_UNPACK_CLIENT_STORAGE_APPLE = 0x85B2+gl_SKIP_DECODE_EXT :: GLenum+gl_SKIP_DECODE_EXT = 0x8A4A+gl_MAP2_VERTEX_ATTRIB10_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB10_4_NV = 0x867A+gl_ALIASED_POINT_SIZE_RANGE :: GLenum+gl_ALIASED_POINT_SIZE_RANGE = 0x846D+gl_MATRIX1_NV :: GLenum+gl_MATRIX1_NV = 0x8631+gl_CCW :: GLenum+gl_CCW = 0x0901+gl_SIGNED_RGB_UNSIGNED_ALPHA_NV :: GLenum+gl_SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x870C+gl_TEXTURE_BUFFER_BINDING_EXT :: GLenum+gl_TEXTURE_BUFFER_BINDING_EXT = 0x8C2A+gl_LINEAR_ATTENUATION :: GLenum+gl_LINEAR_ATTENUATION = 0x1208+gl_FACTOR_MIN_AMD :: GLenum+gl_FACTOR_MIN_AMD = 0x901C+gl_POINT_SPRITE_NV :: GLenum+gl_POINT_SPRITE_NV = 0x8861+gl_IMAGE_FORMAT_COMPATIBILITY_TYPE :: GLenum+gl_IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x90C7+gl_QUERY_DEPTH_FAIL_EVENT_BIT_AMD :: GLenum+gl_QUERY_DEPTH_FAIL_EVENT_BIT_AMD = 0x00000002+gl_MAP2_VERTEX_ATTRIB4_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB4_4_NV = 0x8674+gl_PATCHES_EXT :: GLenum+gl_PATCHES_EXT = 0x000E+gl_MAX_TESS_EVALUATION_UNIFORM_BLOCKS :: GLenum+gl_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A+gl_OUTPUT_TEXTURE_COORD14_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD14_EXT = 0x87AB+gl_V3F :: GLenum+gl_V3F = 0x2A21+gl_4PASS_2_EXT :: GLenum+gl_4PASS_2_EXT = 0x80A6+gl_SAMPLES_3DFX :: GLenum+gl_SAMPLES_3DFX = 0x86B4+gl_MINOR_VERSION :: GLenum+gl_MINOR_VERSION = 0x821C+gl_MAX_DEBUG_LOGGED_MESSAGES_ARB :: GLenum+gl_MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144+gl_FUNC_REVERSE_SUBTRACT :: GLenum+gl_FUNC_REVERSE_SUBTRACT = 0x800B+gl_LAYOUT_LINEAR_CPU_CACHED_INTEL :: GLenum+gl_LAYOUT_LINEAR_CPU_CACHED_INTEL = 2+gl_MULTISAMPLE_BUFFER_BIT1_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT1_QCOM = 0x02000000+gl_SIGNED_RGB8_UNSIGNED_ALPHA8_NV :: GLenum+gl_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x870D+gl_PATH_COVER_DEPTH_FUNC_NV :: GLenum+gl_PATH_COVER_DEPTH_FUNC_NV = 0x90BF+gl_MAX_FRAGMENT_IMAGE_UNIFORMS :: GLenum+gl_MAX_FRAGMENT_IMAGE_UNIFORMS = 0x90CE+gl_PROXY_TEXTURE_COLOR_TABLE_SGI :: GLenum+gl_PROXY_TEXTURE_COLOR_TABLE_SGI = 0x80BD+gl_PIXEL_MAP_I_TO_A_SIZE :: GLenum+gl_PIXEL_MAP_I_TO_A_SIZE = 0x0CB5+gl_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX :: GLenum+gl_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93D0+gl_FRAME_NV :: GLenum+gl_FRAME_NV = 0x8E26+gl_FLOAT_R_NV :: GLenum+gl_FLOAT_R_NV = 0x8880+gl_REFLECTION_MAP_EXT :: GLenum+gl_REFLECTION_MAP_EXT = 0x8512+gl_RG_SNORM :: GLenum+gl_RG_SNORM = 0x8F91+gl_REPLACE_MIDDLE_SUN :: GLenum+gl_REPLACE_MIDDLE_SUN = 0x0002+gl_COMBINER_MAPPING_NV :: GLenum+gl_COMBINER_MAPPING_NV = 0x8543+gl_ELEMENT_ARRAY_BUFFER_ARB :: GLenum+gl_ELEMENT_ARRAY_BUFFER_ARB = 0x8893+gl_SECONDARY_COLOR_ARRAY_LENGTH_NV :: GLenum+gl_SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31+gl_INTERPOLATE_ARB :: GLenum+gl_INTERPOLATE_ARB = 0x8575+gl_POSITION :: GLenum+gl_POSITION = 0x1203+gl_PIXEL_MAP_S_TO_S :: GLenum+gl_PIXEL_MAP_S_TO_S = 0x0C71+gl_READ_ONLY_ARB :: GLenum+gl_READ_ONLY_ARB = 0x88B8+gl_INVALID_FRAMEBUFFER_OPERATION_OES :: GLenum+gl_INVALID_FRAMEBUFFER_OPERATION_OES = 0x0506+gl_3DC_X_AMD :: GLenum+gl_3DC_X_AMD = 0x87F9+gl_FRAGMENT_LIGHT2_SGIX :: GLenum+gl_FRAGMENT_LIGHT2_SGIX = 0x840E+gl_IMAGE_SCALE_Y_HP :: GLenum+gl_IMAGE_SCALE_Y_HP = 0x8156+gl_READ_FRAMEBUFFER_APPLE :: GLenum+gl_READ_FRAMEBUFFER_APPLE = 0x8CA8+gl_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES :: GLenum+gl_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x92C6+gl_INDEX_MATERIAL_PARAMETER_EXT :: GLenum+gl_INDEX_MATERIAL_PARAMETER_EXT = 0x81B9+gl_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH :: GLenum+gl_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76+gl_CUBIC_CURVE_TO_NV :: GLenum+gl_CUBIC_CURVE_TO_NV = 0x0C+gl_QUAD_ALPHA4_SGIS :: GLenum+gl_QUAD_ALPHA4_SGIS = 0x811E+gl_FORCE_BLUE_TO_ONE_NV :: GLenum+gl_FORCE_BLUE_TO_ONE_NV = 0x8860+gl_DOT_PRODUCT_DEPTH_REPLACE_NV :: GLenum+gl_DOT_PRODUCT_DEPTH_REPLACE_NV = 0x86ED+gl_MAX_VERTEX_OUTPUT_COMPONENTS :: GLenum+gl_MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122+gl_COMPRESSED_RGBA_ASTC_4x4x3_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_4x4x3_OES = 0x93C2+gl_COLOR_INDEX1_EXT :: GLenum+gl_COLOR_INDEX1_EXT = 0x80E2+gl_RELATIVE_CUBIC_CURVE_TO_NV :: GLenum+gl_RELATIVE_CUBIC_CURVE_TO_NV = 0x0D+gl_NOR :: GLenum+gl_NOR = 0x1508+gl_CLIPPING_OUTPUT_PRIMITIVES_ARB :: GLenum+gl_CLIPPING_OUTPUT_PRIMITIVES_ARB = 0x82F7+gl_VERTEX_ATTRIB_ARRAY12_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY12_NV = 0x865C+gl_LINE_BIT :: GLenum+gl_LINE_BIT = 0x00000004+gl_FOG_COORDINATE_ARRAY_STRIDE :: GLenum+gl_FOG_COORDINATE_ARRAY_STRIDE = 0x8455+gl_DUP_FIRST_CUBIC_CURVE_TO_NV :: GLenum+gl_DUP_FIRST_CUBIC_CURVE_TO_NV = 0xF2+gl_FRAMEBUFFER_INCOMPLETE_FORMATS_OES :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 0x8CDA+gl_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E+gl_PATH_MAX_MODELVIEW_STACK_DEPTH_NV :: GLenum+gl_PATH_MAX_MODELVIEW_STACK_DEPTH_NV = 0x0D36+gl_FRAGMENT_LIGHT1_SGIX :: GLenum+gl_FRAGMENT_LIGHT1_SGIX = 0x840D+gl_PALETTE8_R5_G6_B5_OES :: GLenum+gl_PALETTE8_R5_G6_B5_OES = 0x8B97+gl_DUAL_INTENSITY4_SGIS :: GLenum+gl_DUAL_INTENSITY4_SGIS = 0x8118+gl_TEXTURE_RANGE_LENGTH_APPLE :: GLenum+gl_TEXTURE_RANGE_LENGTH_APPLE = 0x85B7+gl_TEXTURE_RECTANGLE_ARB :: GLenum+gl_TEXTURE_RECTANGLE_ARB = 0x84F5+gl_LUMINANCE16F_EXT :: GLenum+gl_LUMINANCE16F_EXT = 0x881E+gl_DEPTH_COMPONENT16_ARB :: GLenum+gl_DEPTH_COMPONENT16_ARB = 0x81A5+gl_BUMP_TARGET_ATI :: GLenum+gl_BUMP_TARGET_ATI = 0x877C+gl_MAX_CUBE_MAP_TEXTURE_SIZE_ARB :: GLenum+gl_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x851C+gl_DOUBLE_MAT3_EXT :: GLenum+gl_DOUBLE_MAT3_EXT = 0x8F47+gl_QUERY_BY_REGION_NO_WAIT_INVERTED :: GLenum+gl_QUERY_BY_REGION_NO_WAIT_INVERTED = 0x8E1A+gl_MAX_PROGRAM_TEX_INDIRECTIONS_ARB :: GLenum+gl_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x880D+gl_QUADS :: GLenum+gl_QUADS = 0x0007+gl_ALPHA_INTEGER_EXT :: GLenum+gl_ALPHA_INTEGER_EXT = 0x8D97+gl_VERTEX_SHADER_BIT_EXT :: GLenum+gl_VERTEX_SHADER_BIT_EXT = 0x00000001+gl_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX :: GLenum+gl_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175+gl_COLOR_MATERIAL_FACE :: GLenum+gl_COLOR_MATERIAL_FACE = 0x0B55+gl_LIGHT_MODEL_TWO_SIDE :: GLenum+gl_LIGHT_MODEL_TWO_SIDE = 0x0B52+gl_INTERLEAVED_ATTRIBS :: GLenum+gl_INTERLEAVED_ATTRIBS = 0x8C8C+gl_RGBA16I :: GLenum+gl_RGBA16I = 0x8D88+gl_VERTEX_ATTRIB_ARRAY_TYPE_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x8625+gl_DEBUG_SEVERITY_LOW_AMD :: GLenum+gl_DEBUG_SEVERITY_LOW_AMD = 0x9148+gl_POINT_SPRITE_COORD_ORIGIN :: GLenum+gl_POINT_SPRITE_COORD_ORIGIN = 0x8CA0+gl_DRAW_BUFFER8 :: GLenum+gl_DRAW_BUFFER8 = 0x882D+gl_SPOT_DIRECTION :: GLenum+gl_SPOT_DIRECTION = 0x1204+gl_SAMPLE_COVERAGE_INVERT_ARB :: GLenum+gl_SAMPLE_COVERAGE_INVERT_ARB = 0x80AB+gl_PERFQUERY_COUNTER_RAW_INTEL :: GLenum+gl_PERFQUERY_COUNTER_RAW_INTEL = 0x94F4+gl_STRICT_SCISSOR_HINT_PGI :: GLenum+gl_STRICT_SCISSOR_HINT_PGI = 0x1A218+gl_LUMINANCE16_EXT :: GLenum+gl_LUMINANCE16_EXT = 0x8042+gl_UNPACK_ALIGNMENT :: GLenum+gl_UNPACK_ALIGNMENT = 0x0CF5+gl_BIAS_BIT_ATI :: GLenum+gl_BIAS_BIT_ATI = 0x00000008+gl_LARGE_CCW_ARC_TO_NV :: GLenum+gl_LARGE_CCW_ARC_TO_NV = 0x16+gl_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB :: GLenum+gl_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x86A0+gl_FASTEST :: GLenum+gl_FASTEST = 0x1101+gl_LUMINANCE8_ALPHA8 :: GLenum+gl_LUMINANCE8_ALPHA8 = 0x8045+gl_CONVOLUTION_FILTER_BIAS_EXT :: GLenum+gl_CONVOLUTION_FILTER_BIAS_EXT = 0x8015+gl_VIEW_CLASS_S3TC_DXT5_RGBA :: GLenum+gl_VIEW_CLASS_S3TC_DXT5_RGBA = 0x82CF+gl_DEPTH32F_STENCIL8_NV :: GLenum+gl_DEPTH32F_STENCIL8_NV = 0x8DAC+gl_TRACE_OPERATIONS_BIT_MESA :: GLenum+gl_TRACE_OPERATIONS_BIT_MESA = 0x0001+gl_QUERY_RESULT_EXT :: GLenum+gl_QUERY_RESULT_EXT = 0x8866+gl_TRANSFORM_FEEDBACK_BINDING_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25+gl_REG_10_ATI :: GLenum+gl_REG_10_ATI = 0x892B+gl_MATRIX16_ARB :: GLenum+gl_MATRIX16_ARB = 0x88D0+gl_FONT_HAS_KERNING_BIT_NV :: GLenum+gl_FONT_HAS_KERNING_BIT_NV = 0x10000000+gl_INNOCENT_CONTEXT_RESET_EXT :: GLenum+gl_INNOCENT_CONTEXT_RESET_EXT = 0x8254+gl_VIDEO_CAPTURE_FRAME_HEIGHT_NV :: GLenum+gl_VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039+gl_NATIVE_GRAPHICS_END_HINT_PGI :: GLenum+gl_NATIVE_GRAPHICS_END_HINT_PGI = 0x1A204+gl_HISTOGRAM_LUMINANCE_SIZE_EXT :: GLenum+gl_HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C+gl_COMBINER0_NV :: GLenum+gl_COMBINER0_NV = 0x8550+gl_COORD_REPLACE_OES :: GLenum+gl_COORD_REPLACE_OES = 0x8862+gl_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 0x8E80+gl_TIMESTAMP_EXT :: GLenum+gl_TIMESTAMP_EXT = 0x8E28+gl_MAX_IMAGE_UNITS_EXT :: GLenum+gl_MAX_IMAGE_UNITS_EXT = 0x8F38+gl_POINT_SIZE_MAX_ARB :: GLenum+gl_POINT_SIZE_MAX_ARB = 0x8127+gl_DEPTH_WRITEMASK :: GLenum+gl_DEPTH_WRITEMASK = 0x0B72+gl_FOG_COORDINATE_ARRAY_STRIDE_EXT :: GLenum+gl_FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x8455+gl_BUMP_NUM_TEX_UNITS_ATI :: GLenum+gl_BUMP_NUM_TEX_UNITS_ATI = 0x8777+gl_INT_SAMPLER_1D_EXT :: GLenum+gl_INT_SAMPLER_1D_EXT = 0x8DC9+gl_INDEX_MODE :: GLenum+gl_INDEX_MODE = 0x0C30+gl_422_EXT :: GLenum+gl_422_EXT = 0x80CC+gl_ATOMIC_COUNTER_BUFFER_START :: GLenum+gl_ATOMIC_COUNTER_BUFFER_START = 0x92C2+gl_GPU_ADDRESS_NV :: GLenum+gl_GPU_ADDRESS_NV = 0x8F34+gl_REG_19_ATI :: GLenum+gl_REG_19_ATI = 0x8934+gl_IMAGE_BUFFER :: GLenum+gl_IMAGE_BUFFER = 0x9051+gl_HISTOGRAM_GREEN_SIZE :: GLenum+gl_HISTOGRAM_GREEN_SIZE = 0x8029+gl_VERTEX_ATTRIB_ARRAY_ADDRESS_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20+gl_INTENSITY8_SNORM :: GLenum+gl_INTENSITY8_SNORM = 0x9017+gl_DEBUG_TYPE_MARKER :: GLenum+gl_DEBUG_TYPE_MARKER = 0x8268+gl_VERTEX_PROGRAM_TWO_SIDE_ARB :: GLenum+gl_VERTEX_PROGRAM_TWO_SIDE_ARB = 0x8643+gl_INDEX_MATERIAL_FACE_EXT :: GLenum+gl_INDEX_MATERIAL_FACE_EXT = 0x81BA+gl_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB :: GLenum+gl_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = 0x8E8D+gl_CMYKA_EXT :: GLenum+gl_CMYKA_EXT = 0x800D+gl_MAP_ATTRIB_V_ORDER_NV :: GLenum+gl_MAP_ATTRIB_V_ORDER_NV = 0x86C4+gl_OFFSET_HILO_TEXTURE_2D_NV :: GLenum+gl_OFFSET_HILO_TEXTURE_2D_NV = 0x8854+gl_CALLIGRAPHIC_FRAGMENT_SGIX :: GLenum+gl_CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183+gl_MAX_PROGRAM_PARAMETERS_ARB :: GLenum+gl_MAX_PROGRAM_PARAMETERS_ARB = 0x88A9+gl_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV :: GLenum+gl_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0F+gl_MAP_READ_BIT :: GLenum+gl_MAP_READ_BIT = 0x0001+gl_IMAGE_1D_EXT :: GLenum+gl_IMAGE_1D_EXT = 0x904C+gl_READ_BUFFER :: GLenum+gl_READ_BUFFER = 0x0C02+gl_POST_CONVOLUTION_RED_SCALE :: GLenum+gl_POST_CONVOLUTION_RED_SCALE = 0x801C+gl_MATRIX23_ARB :: GLenum+gl_MATRIX23_ARB = 0x88D7+gl_MAX_SAMPLES_NV :: GLenum+gl_MAX_SAMPLES_NV = 0x8D57+gl_RGB8_SNORM :: GLenum+gl_RGB8_SNORM = 0x8F96+gl_MATRIX5_NV :: GLenum+gl_MATRIX5_NV = 0x8635+gl_UNPACK_SWAP_BYTES :: GLenum+gl_UNPACK_SWAP_BYTES = 0x0CF0+gl_TABLE_TOO_LARGE :: GLenum+gl_TABLE_TOO_LARGE = 0x8031+gl_MIN_SAMPLE_SHADING_VALUE_OES :: GLenum+gl_MIN_SAMPLE_SHADING_VALUE_OES = 0x8C37+gl_SWIZZLE_STQ_DQ_ATI :: GLenum+gl_SWIZZLE_STQ_DQ_ATI = 0x8979+gl_BUFFER_IMMUTABLE_STORAGE :: GLenum+gl_BUFFER_IMMUTABLE_STORAGE = 0x821F+gl_ELEMENT_ARRAY_TYPE_APPLE :: GLenum+gl_ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D+gl_POST_COLOR_MATRIX_BLUE_BIAS_SGI :: GLenum+gl_POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA+gl_PARTIAL_SUCCESS_NV :: GLenum+gl_PARTIAL_SUCCESS_NV = 0x902E+gl_LOCAL_CONSTANT_EXT :: GLenum+gl_LOCAL_CONSTANT_EXT = 0x87C3+gl_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x8517+gl_GEOMETRY_DEFORMATION_SGIX :: GLenum+gl_GEOMETRY_DEFORMATION_SGIX = 0x8194+gl_SAMPLER_CUBE_MAP_ARRAY_EXT :: GLenum+gl_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x900C+gl_STENCIL_BACK_PASS_DEPTH_PASS_ATI :: GLenum+gl_STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x8803+gl_DISJOINT_NV :: GLenum+gl_DISJOINT_NV = 0x9283+gl_FLOAT_MAT4x3 :: GLenum+gl_FLOAT_MAT4x3 = 0x8B6A+gl_TRANSFORM_FEEDBACK_PAUSED :: GLenum+gl_TRANSFORM_FEEDBACK_PAUSED = 0x8E23+gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION :: GLenum+gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C+gl_RG8_EXT :: GLenum+gl_RG8_EXT = 0x822B+gl_RECT_NV :: GLenum+gl_RECT_NV = 0xF6+gl_GEOMETRY_OUTPUT_TYPE_ARB :: GLenum+gl_GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC+gl_DEBUG_SOURCE_API_ARB :: GLenum+gl_DEBUG_SOURCE_API_ARB = 0x8246+gl_COLOR_ATTACHMENT15 :: GLenum+gl_COLOR_ATTACHMENT15 = 0x8CEF+gl_MAX_VARYING_FLOATS_ARB :: GLenum+gl_MAX_VARYING_FLOATS_ARB = 0x8B4B+gl_MAX_DRAW_BUFFERS_NV :: GLenum+gl_MAX_DRAW_BUFFERS_NV = 0x8824+gl_VERTEX_BLEND_ARB :: GLenum+gl_VERTEX_BLEND_ARB = 0x86A7+gl_DOUBLE_MAT2x3_EXT :: GLenum+gl_DOUBLE_MAT2x3_EXT = 0x8F49+gl_MAX_DEBUG_LOGGED_MESSAGES_AMD :: GLenum+gl_MAX_DEBUG_LOGGED_MESSAGES_AMD = 0x9144+gl_VERTICES_SUBMITTED_ARB :: GLenum+gl_VERTICES_SUBMITTED_ARB = 0x82EE+gl_UNSIGNED_SHORT_4_4_4_4_REV_IMG :: GLenum+gl_UNSIGNED_SHORT_4_4_4_4_REV_IMG = 0x8365+gl_STATE_RESTORE :: GLenum+gl_STATE_RESTORE = 0x8BDC+gl_MAX_COLOR_ATTACHMENTS_EXT :: GLenum+gl_MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF+gl_INDEX_LOGIC_OP :: GLenum+gl_INDEX_LOGIC_OP = 0x0BF1+gl_PRIMITIVE_RESTART_NV :: GLenum+gl_PRIMITIVE_RESTART_NV = 0x8558+gl_FLOAT_MAT3x2_NV :: GLenum+gl_FLOAT_MAT3x2_NV = 0x8B67+gl_VERTEX_CONSISTENT_HINT_PGI :: GLenum+gl_VERTEX_CONSISTENT_HINT_PGI = 0x1A22B+gl_LUMINANCE_ALPHA16F_EXT :: GLenum+gl_LUMINANCE_ALPHA16F_EXT = 0x881F+gl_FLOAT_VEC2_ARB :: GLenum+gl_FLOAT_VEC2_ARB = 0x8B50+gl_TEXTURE_SWIZZLE_RGBA :: GLenum+gl_TEXTURE_SWIZZLE_RGBA = 0x8E46+gl_PROGRAM_SEPARABLE_EXT :: GLenum+gl_PROGRAM_SEPARABLE_EXT = 0x8258+gl_COMPRESSED_RGBA_ASTC_10x8_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93BA+gl_DEPTH_ATTACHMENT_EXT :: GLenum+gl_DEPTH_ATTACHMENT_EXT = 0x8D00+gl_FRAMEBUFFER_UNSUPPORTED_OES :: GLenum+gl_FRAMEBUFFER_UNSUPPORTED_OES = 0x8CDD+gl_OPERAND1_ALPHA :: GLenum+gl_OPERAND1_ALPHA = 0x8599+gl_PIXEL_MAP_I_TO_B_SIZE :: GLenum+gl_PIXEL_MAP_I_TO_B_SIZE = 0x0CB4+gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A+gl_EVAL_2D_NV :: GLenum+gl_EVAL_2D_NV = 0x86C0+gl_GREEN_MIN_CLAMP_INGR :: GLenum+gl_GREEN_MIN_CLAMP_INGR = 0x8561+gl_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x92D0+gl_VERTEX_ARRAY_RANGE_NV :: GLenum+gl_VERTEX_ARRAY_RANGE_NV = 0x851D+gl_CONTEXT_LOST_WEBGL :: GLenum+gl_CONTEXT_LOST_WEBGL = 0x9242+gl_MAX_VERTEX_UNIFORM_BLOCKS :: GLenum+gl_MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B+gl_VERTEX_ATTRIB_MAP2_COEFF_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07+gl_TEXTURE_MAX_CLAMP_T_SGIX :: GLenum+gl_TEXTURE_MAX_CLAMP_T_SGIX = 0x836A+gl_LUMINANCE_SNORM :: GLenum+gl_LUMINANCE_SNORM = 0x9011+gl_PIXEL_UNPACK_BUFFER_BINDING :: GLenum+gl_PIXEL_UNPACK_BUFFER_BINDING = 0x88EF+gl_RGBA8_SNORM :: GLenum+gl_RGBA8_SNORM = 0x8F97+gl_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX :: GLenum+gl_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = 0x9048+gl_PIXEL_SUBSAMPLE_2424_SGIX :: GLenum+gl_PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3+gl_TEXTURE_GATHER_SHADOW :: GLenum+gl_TEXTURE_GATHER_SHADOW = 0x82A3+gl_VIEWPORT_INDEX_PROVOKING_VERTEX :: GLenum+gl_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x825F+gl_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT :: GLenum+gl_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = 0x90CB+gl_UNSIGNED_INT_IMAGE_CUBE :: GLenum+gl_UNSIGNED_INT_IMAGE_CUBE = 0x9066+gl_WEIGHT_ARRAY_POINTER_OES :: GLenum+gl_WEIGHT_ARRAY_POINTER_OES = 0x86AC+gl_ALL_ATTRIB_BITS :: GLenum+gl_ALL_ATTRIB_BITS = 0xFFFFFFFF+gl_PERFQUERY_COUNTER_TIMESTAMP_INTEL :: GLenum+gl_PERFQUERY_COUNTER_TIMESTAMP_INTEL = 0x94F5+gl_TESS_EVALUATION_SHADER_EXT :: GLenum+gl_TESS_EVALUATION_SHADER_EXT = 0x8E87+gl_BUFFER_OBJECT_EXT :: GLenum+gl_BUFFER_OBJECT_EXT = 0x9151+gl_TIMESTAMP :: GLenum+gl_TIMESTAMP = 0x8E28+gl_RGBA_INTEGER_EXT :: GLenum+gl_RGBA_INTEGER_EXT = 0x8D99+gl_RGB16UI :: GLenum+gl_RGB16UI = 0x8D77+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x8CD4+gl_SAMPLE_SHADING_OES :: GLenum+gl_SAMPLE_SHADING_OES = 0x8C36+gl_CONVOLUTION_BORDER_COLOR :: GLenum+gl_CONVOLUTION_BORDER_COLOR = 0x8154+gl_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV :: GLenum+gl_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x8DA1+gl_VERTEX_ARRAY_BUFFER_BINDING :: GLenum+gl_VERTEX_ARRAY_BUFFER_BINDING = 0x8896+gl_DEPTH_CLAMP_NEAR_AMD :: GLenum+gl_DEPTH_CLAMP_NEAR_AMD = 0x901E+gl_POLYGON_TOKEN :: GLenum+gl_POLYGON_TOKEN = 0x0703+gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C+gl_R8_SNORM :: GLenum+gl_R8_SNORM = 0x8F94+gl_DS_BIAS_NV :: GLenum+gl_DS_BIAS_NV = 0x8716+gl_2X_BIT_ATI :: GLenum+gl_2X_BIT_ATI = 0x00000001+gl_ALREADY_SIGNALED :: GLenum+gl_ALREADY_SIGNALED = 0x911A+gl_2D :: GLenum+gl_2D = 0x0600+gl_MAX_VERTEX_UNIFORM_COMPONENTS :: GLenum+gl_MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A+gl_DEBUG_CATEGORY_PERFORMANCE_AMD :: GLenum+gl_DEBUG_CATEGORY_PERFORMANCE_AMD = 0x914D+gl_OVERLAY_NV :: GLenum+gl_OVERLAY_NV = 0x9296+gl_ATOMIC_COUNTER_BUFFER_SIZE :: GLenum+gl_ATOMIC_COUNTER_BUFFER_SIZE = 0x92C3+gl_COLOR_ATTACHMENT10_EXT :: GLenum+gl_COLOR_ATTACHMENT10_EXT = 0x8CEA+gl_COLOR_TABLE_BLUE_SIZE_SGI :: GLenum+gl_COLOR_TABLE_BLUE_SIZE_SGI = 0x80DC+gl_ADD_SIGNED_EXT :: GLenum+gl_ADD_SIGNED_EXT = 0x8574+gl_INT_SAMPLER_2D_ARRAY_EXT :: GLenum+gl_INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF+gl_TRANSFORM_FEEDBACK_BUFFER_INDEX :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x934B+gl_REFERENCED_BY_TESS_CONTROL_SHADER :: GLenum+gl_REFERENCED_BY_TESS_CONTROL_SHADER = 0x9307+gl_FIELD_LOWER_NV :: GLenum+gl_FIELD_LOWER_NV = 0x9023+gl_POST_COLOR_MATRIX_RED_SCALE :: GLenum+gl_POST_COLOR_MATRIX_RED_SCALE = 0x80B4+gl_IMAGE_BUFFER_EXT :: GLenum+gl_IMAGE_BUFFER_EXT = 0x9051+gl_3D_COLOR_TEXTURE :: GLenum+gl_3D_COLOR_TEXTURE = 0x0603+gl_DEBUG_CALLBACK_FUNCTION_KHR :: GLenum+gl_DEBUG_CALLBACK_FUNCTION_KHR = 0x8244+gl_SCISSOR_BIT :: GLenum+gl_SCISSOR_BIT = 0x00080000+gl_IMAGE_TRANSLATE_X_HP :: GLenum+gl_IMAGE_TRANSLATE_X_HP = 0x8157+gl_PIXEL_MAP_I_TO_A :: GLenum+gl_PIXEL_MAP_I_TO_A = 0x0C75+gl_VERTEX_SUBROUTINE :: GLenum+gl_VERTEX_SUBROUTINE = 0x92E8+gl_TEXTURE4_ARB :: GLenum+gl_TEXTURE4_ARB = 0x84C4+gl_PACK_COMPRESSED_BLOCK_DEPTH :: GLenum+gl_PACK_COMPRESSED_BLOCK_DEPTH = 0x912D+gl_SHADER_STORAGE_BLOCK :: GLenum+gl_SHADER_STORAGE_BLOCK = 0x92E6+gl_SIGNED_ALPHA_NV :: GLenum+gl_SIGNED_ALPHA_NV = 0x8705+gl_BLEND_DST_ALPHA_EXT :: GLenum+gl_BLEND_DST_ALPHA_EXT = 0x80CA+gl_MAP2_VERTEX_ATTRIB9_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB9_4_NV = 0x8679+gl_HILO8_NV :: GLenum+gl_HILO8_NV = 0x885E+gl_SHADER_BINARY_FORMATS :: GLenum+gl_SHADER_BINARY_FORMATS = 0x8DF8+gl_DEBUG_OUTPUT_SYNCHRONOUS :: GLenum+gl_DEBUG_OUTPUT_SYNCHRONOUS = 0x8242+gl_TEXTURE_GEN_R :: GLenum+gl_TEXTURE_GEN_R = 0x0C62+gl_PERFORMANCE_MONITOR_AMD :: GLenum+gl_PERFORMANCE_MONITOR_AMD = 0x9152+gl_INTENSITY_FLOAT16_APPLE :: GLenum+gl_INTENSITY_FLOAT16_APPLE = 0x881D+gl_PROGRAM_PIPELINE :: GLenum+gl_PROGRAM_PIPELINE = 0x82E4+gl_COLOR_BUFFER_BIT5_QCOM :: GLenum+gl_COLOR_BUFFER_BIT5_QCOM = 0x00000020+gl_MAX_GEOMETRY_VARYING_COMPONENTS_EXT :: GLenum+gl_MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x8DDD+gl_DEBUG_TYPE_PORTABILITY_KHR :: GLenum+gl_DEBUG_TYPE_PORTABILITY_KHR = 0x824F+gl_RGB16F_ARB :: GLenum+gl_RGB16F_ARB = 0x881B+gl_PRIMITIVES_GENERATED_EXT :: GLenum+gl_PRIMITIVES_GENERATED_EXT = 0x8C87+gl_PROGRAM_BINARY_FORMATS_OES :: GLenum+gl_PROGRAM_BINARY_FORMATS_OES = 0x87FF+gl_AMBIENT :: GLenum+gl_AMBIENT = 0x1200+gl_QUERY_BY_REGION_NO_WAIT_NV :: GLenum+gl_QUERY_BY_REGION_NO_WAIT_NV = 0x8E16+gl_VIEW_CLASS_RGTC2_RG :: GLenum+gl_VIEW_CLASS_RGTC2_RG = 0x82D1+gl_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT :: GLenum+gl_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT = 0x8A57+gl_DRAW_BUFFER2_EXT :: GLenum+gl_DRAW_BUFFER2_EXT = 0x8827+gl_TEXTURE_BUFFER_BINDING :: GLenum+gl_TEXTURE_BUFFER_BINDING = 0x8C2A+gl_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT :: GLenum+gl_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT = 0x8A55+gl_OPERAND3_ALPHA_NV :: GLenum+gl_OPERAND3_ALPHA_NV = 0x859B+gl_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV :: GLenum+gl_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58+gl_LINEAR_SHARPEN_SGIS :: GLenum+gl_LINEAR_SHARPEN_SGIS = 0x80AD+gl_MAP_UNSYNCHRONIZED_BIT_EXT :: GLenum+gl_MAP_UNSYNCHRONIZED_BIT_EXT = 0x0020+gl_MODELVIEW28_ARB :: GLenum+gl_MODELVIEW28_ARB = 0x873C+gl_EDGE_FLAG_ARRAY_LIST_IBM :: GLenum+gl_EDGE_FLAG_ARRAY_LIST_IBM = 103075+gl_PALETTE4_RGB5_A1_OES :: GLenum+gl_PALETTE4_RGB5_A1_OES = 0x8B94+gl_MULTIPLY_KHR :: GLenum+gl_MULTIPLY_KHR = 0x9294+gl_GPU_OPTIMIZED_QCOM :: GLenum+gl_GPU_OPTIMIZED_QCOM = 0x8FB2+gl_FOG_FUNC_POINTS_SGIS :: GLenum+gl_FOG_FUNC_POINTS_SGIS = 0x812B+gl_MAX_IMAGE_SAMPLES :: GLenum+gl_MAX_IMAGE_SAMPLES = 0x906D+gl_DRAW_BUFFER3_NV :: GLenum+gl_DRAW_BUFFER3_NV = 0x8828+gl_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS :: GLenum+gl_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47+gl_RESET_NOTIFICATION_STRATEGY_ARB :: GLenum+gl_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256+gl_MAX_TEXTURE_STACK_DEPTH :: GLenum+gl_MAX_TEXTURE_STACK_DEPTH = 0x0D39+gl_INT64_NV :: GLenum+gl_INT64_NV = 0x140E+gl_DEBUG_SOURCE_APPLICATION :: GLenum+gl_DEBUG_SOURCE_APPLICATION = 0x824A+gl_STENCIL_CLEAR_VALUE :: GLenum+gl_STENCIL_CLEAR_VALUE = 0x0B91+gl_SRC1_COLOR :: GLenum+gl_SRC1_COLOR = 0x88F9+gl_LIGHT4 :: GLenum+gl_LIGHT4 = 0x4004+gl_PIXEL_PACK_BUFFER_BINDING :: GLenum+gl_PIXEL_PACK_BUFFER_BINDING = 0x88ED+gl_MAX_LIGHTS :: GLenum+gl_MAX_LIGHTS = 0x0D31+gl_OPERAND1_ALPHA_EXT :: GLenum+gl_OPERAND1_ALPHA_EXT = 0x8599+gl_PIXEL_MAP_B_TO_B_SIZE :: GLenum+gl_PIXEL_MAP_B_TO_B_SIZE = 0x0CB8+gl_COLOR_TABLE_FORMAT_SGI :: GLenum+gl_COLOR_TABLE_FORMAT_SGI = 0x80D8+gl_MODELVIEW22_ARB :: GLenum+gl_MODELVIEW22_ARB = 0x8736+gl_UNSIGNED_INT64_VEC4_NV :: GLenum+gl_UNSIGNED_INT64_VEC4_NV = 0x8FF7+gl_COLOR_ARRAY_TYPE_EXT :: GLenum+gl_COLOR_ARRAY_TYPE_EXT = 0x8082+gl_LOSE_CONTEXT_ON_RESET_EXT :: GLenum+gl_LOSE_CONTEXT_ON_RESET_EXT = 0x8252+gl_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV :: GLenum+gl_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034+gl_TEXTURE_PRIORITY_EXT :: GLenum+gl_TEXTURE_PRIORITY_EXT = 0x8066+gl_UNPACK_COMPRESSED_SIZE_SGIX :: GLenum+gl_UNPACK_COMPRESSED_SIZE_SGIX = 0x831A+gl_SEPARATE_ATTRIBS_EXT :: GLenum+gl_SEPARATE_ATTRIBS_EXT = 0x8C8D+gl_IMAGE_BINDING_LAYERED :: GLenum+gl_IMAGE_BINDING_LAYERED = 0x8F3C+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93D8+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x906B+gl_READ_ONLY :: GLenum+gl_READ_ONLY = 0x88B8+gl_TEXTURE_3D_BINDING_OES :: GLenum+gl_TEXTURE_3D_BINDING_OES = 0x806A+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER :: GLenum+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x92C7+gl_COVERAGE_ALL_FRAGMENTS_NV :: GLenum+gl_COVERAGE_ALL_FRAGMENTS_NV = 0x8ED5+gl_SRC2_ALPHA :: GLenum+gl_SRC2_ALPHA = 0x858A+gl_PRIMITIVE_ID_NV :: GLenum+gl_PRIMITIVE_ID_NV = 0x8C7C+gl_VIDEO_COLOR_CONVERSION_MAX_NV :: GLenum+gl_VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A+gl_MAP2_TANGENT_EXT :: GLenum+gl_MAP2_TANGENT_EXT = 0x8445+gl_LIGHTING :: GLenum+gl_LIGHTING = 0x0B50+gl_PROGRAM_UNDER_NATIVE_LIMITS_ARB :: GLenum+gl_PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6+gl_VERTEX_ATTRIB_ARRAY2_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY2_NV = 0x8652+gl_PRESENT_TIME_NV :: GLenum+gl_PRESENT_TIME_NV = 0x8E2A+gl_PATCH_DEFAULT_INNER_LEVEL :: GLenum+gl_PATCH_DEFAULT_INNER_LEVEL = 0x8E73+gl_NEVER :: GLenum+gl_NEVER = 0x0200+gl_PATH_STROKE_WIDTH_NV :: GLenum+gl_PATH_STROKE_WIDTH_NV = 0x9075+gl_INVERT_RGB_NV :: GLenum+gl_INVERT_RGB_NV = 0x92A3+gl_BUFFER_MAP_POINTER_ARB :: GLenum+gl_BUFFER_MAP_POINTER_ARB = 0x88BD+gl_MAP2_GRID_SEGMENTS :: GLenum+gl_MAP2_GRID_SEGMENTS = 0x0DD3+gl_INVALID_VALUE :: GLenum+gl_INVALID_VALUE = 0x0501+gl_BLEND_EQUATION_ALPHA_OES :: GLenum+gl_BLEND_EQUATION_ALPHA_OES = 0x883D+gl_MAX_RATIONAL_EVAL_ORDER_NV :: GLenum+gl_MAX_RATIONAL_EVAL_ORDER_NV = 0x86D7+gl_VERTEX_ATTRIB_ARRAY10_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY10_NV = 0x865A+gl_UNPACK_IMAGE_DEPTH_SGIS :: GLenum+gl_UNPACK_IMAGE_DEPTH_SGIS = 0x8133+gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 0x8CDC+gl_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x8266+gl_TRANSPOSE_PROJECTION_MATRIX_ARB :: GLenum+gl_TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4+gl_REDUCE_EXT :: GLenum+gl_REDUCE_EXT = 0x8016+gl_RGB8UI_EXT :: GLenum+gl_RGB8UI_EXT = 0x8D7D+gl_MAX_CLIENT_ATTRIB_STACK_DEPTH :: GLenum+gl_MAX_CLIENT_ATTRIB_STACK_DEPTH = 0x0D3B+gl_RGB9_E5_EXT :: GLenum+gl_RGB9_E5_EXT = 0x8C3D+gl_OUTPUT_TEXTURE_COORD18_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD18_EXT = 0x87AF+gl_COLOR_ATTACHMENT0_EXT :: GLenum+gl_COLOR_ATTACHMENT0_EXT = 0x8CE0+gl_ALPHA_SCALE :: GLenum+gl_ALPHA_SCALE = 0x0D1C+gl_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV :: GLenum+gl_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x90BD+gl_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216+gl_BLEND_SRC :: GLenum+gl_BLEND_SRC = 0x0BE1+gl_TEXTURE_MAX_CLAMP_R_SGIX :: GLenum+gl_TEXTURE_MAX_CLAMP_R_SGIX = 0x836B+gl_MAX_PROGRAM_TEXEL_OFFSET_NV :: GLenum+gl_MAX_PROGRAM_TEXEL_OFFSET_NV = 0x8905+gl_TEXTURE_LOD_BIAS_R_SGIX :: GLenum+gl_TEXTURE_LOD_BIAS_R_SGIX = 0x8190+gl_UNSIGNED_INT_SAMPLER_2D :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D = 0x8DD2+gl_TEXTURE_FILTER_CONTROL_EXT :: GLenum+gl_TEXTURE_FILTER_CONTROL_EXT = 0x8500+gl_VARIABLE_G_NV :: GLenum+gl_VARIABLE_G_NV = 0x8529+gl_SELECTION_BUFFER_POINTER :: GLenum+gl_SELECTION_BUFFER_POINTER = 0x0DF3+gl_INT_SAMPLER_1D :: GLenum+gl_INT_SAMPLER_1D = 0x8DC9+gl_COMBINE_ALPHA :: GLenum+gl_COMBINE_ALPHA = 0x8572+gl_FONT_Y_MAX_BOUNDS_BIT_NV :: GLenum+gl_FONT_Y_MAX_BOUNDS_BIT_NV = 0x00080000+gl_UNIFORM_BARRIER_BIT :: GLenum+gl_UNIFORM_BARRIER_BIT = 0x00000004+gl_TEXTURE_BLUE_TYPE_ARB :: GLenum+gl_TEXTURE_BLUE_TYPE_ARB = 0x8C12+gl_STENCIL_INDEX16 :: GLenum+gl_STENCIL_INDEX16 = 0x8D49+gl_SRC_OVER_NV :: GLenum+gl_SRC_OVER_NV = 0x9288+gl_INT_SAMPLER_2D_MULTISAMPLE :: GLenum+gl_INT_SAMPLER_2D_MULTISAMPLE = 0x9109+gl_COLOR_TABLE_GREEN_SIZE_SGI :: GLenum+gl_COLOR_TABLE_GREEN_SIZE_SGI = 0x80DB+gl_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV :: GLenum+gl_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4+gl_TEXTURE_COMPRESSED_IMAGE_SIZE :: GLenum+gl_TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0+gl_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV :: GLenum+gl_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x8E5C+gl_REFERENCED_BY_TESS_EVALUATION_SHADER :: GLenum+gl_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x9308+gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210+gl_MAX_HEIGHT :: GLenum+gl_MAX_HEIGHT = 0x827F+gl_ALPHA32F_ARB :: GLenum+gl_ALPHA32F_ARB = 0x8816+gl_COLOR_ATTACHMENT13 :: GLenum+gl_COLOR_ATTACHMENT13 = 0x8CED+gl_OP_SET_GE_EXT :: GLenum+gl_OP_SET_GE_EXT = 0x878C+gl_RGBA16_EXT :: GLenum+gl_RGBA16_EXT = 0x805B+gl_OPERAND3_RGB_NV :: GLenum+gl_OPERAND3_RGB_NV = 0x8593+gl_RENDERBUFFER_BLUE_SIZE_OES :: GLenum+gl_RENDERBUFFER_BLUE_SIZE_OES = 0x8D52+gl_LUMINANCE_ALPHA_FLOAT16_ATI :: GLenum+gl_LUMINANCE_ALPHA_FLOAT16_ATI = 0x881F+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_NV = 0x88FE+gl_PERFQUERY_COUNTER_DURATION_RAW_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DURATION_RAW_INTEL = 0x94F2+gl_MAX_DEPTH :: GLenum+gl_MAX_DEPTH = 0x8280+gl_LINEAR_MIPMAP_NEAREST :: GLenum+gl_LINEAR_MIPMAP_NEAREST = 0x2701+gl_UNSIGNED_INT_8_8_S8_S8_REV_NV :: GLenum+gl_UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x86DB+gl_N3F_V3F :: GLenum+gl_N3F_V3F = 0x2A25+gl_PACK_MAX_COMPRESSED_SIZE_SGIX :: GLenum+gl_PACK_MAX_COMPRESSED_SIZE_SGIX = 0x831B+gl_QUERY_BUFFER_BINDING_AMD :: GLenum+gl_QUERY_BUFFER_BINDING_AMD = 0x9193+gl_FOG_MODE :: GLenum+gl_FOG_MODE = 0x0B65+gl_RGBA32F :: GLenum+gl_RGBA32F = 0x8814+gl_FRAGMENT_SHADER_DERIVATIVE_HINT :: GLenum+gl_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B+gl_UNPACK_SKIP_ROWS_EXT :: GLenum+gl_UNPACK_SKIP_ROWS_EXT = 0x0CF3+gl_LINES :: GLenum+gl_LINES = 0x0001+gl_SPOT_EXPONENT :: GLenum+gl_SPOT_EXPONENT = 0x1205+gl_MAX_NUM_COMPATIBLE_SUBROUTINES :: GLenum+gl_MAX_NUM_COMPATIBLE_SUBROUTINES = 0x92F8+gl_RGBA_FLOAT32_APPLE :: GLenum+gl_RGBA_FLOAT32_APPLE = 0x8814+gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT :: GLenum+gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x87CE+gl_BLEND_EQUATION_ALPHA :: GLenum+gl_BLEND_EQUATION_ALPHA = 0x883D+gl_PATH_MODELVIEW_STACK_DEPTH_NV :: GLenum+gl_PATH_MODELVIEW_STACK_DEPTH_NV = 0x0BA3+gl_TEXTURE_SHARED_SIZE_EXT :: GLenum+gl_TEXTURE_SHARED_SIZE_EXT = 0x8C3F+gl_RGBA16 :: GLenum+gl_RGBA16 = 0x805B+gl_UNDEFINED_VERTEX_EXT :: GLenum+gl_UNDEFINED_VERTEX_EXT = 0x8260+gl_PALETTE8_RGB5_A1_OES :: GLenum+gl_PALETTE8_RGB5_A1_OES = 0x8B99+gl_MAX_GEOMETRY_OUTPUT_VERTICES_EXT :: GLenum+gl_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x8DE0+gl_IMAGE_CLASS_11_11_10 :: GLenum+gl_IMAGE_CLASS_11_11_10 = 0x82C2+gl_HISTOGRAM_GREEN_SIZE_EXT :: GLenum+gl_HISTOGRAM_GREEN_SIZE_EXT = 0x8029+gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT :: GLenum+gl_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = 0x90D8+gl_MAX_COMPUTE_IMAGE_UNIFORMS :: GLenum+gl_MAX_COMPUTE_IMAGE_UNIFORMS = 0x91BD+gl_MAX_PATCH_VERTICES_EXT :: GLenum+gl_MAX_PATCH_VERTICES_EXT = 0x8E7D+gl_ISOLINES :: GLenum+gl_ISOLINES = 0x8E7A+gl_LUMINANCE_ALPHA_SNORM :: GLenum+gl_LUMINANCE_ALPHA_SNORM = 0x9012+gl_PROGRAM_PIPELINE_BINDING_EXT :: GLenum+gl_PROGRAM_PIPELINE_BINDING_EXT = 0x825A+gl_FIRST_VERTEX_CONVENTION_EXT :: GLenum+gl_FIRST_VERTEX_CONVENTION_EXT = 0x8E4D+gl_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = 0x8E86+gl_UTF16_NV :: GLenum+gl_UTF16_NV = 0x909B+gl_PRESENT_DURATION_NV :: GLenum+gl_PRESENT_DURATION_NV = 0x8E2B+gl_TEXTURE_SAMPLES :: GLenum+gl_TEXTURE_SAMPLES = 0x9106+gl_BGR :: GLenum+gl_BGR = 0x80E0+gl_CULL_VERTEX_OBJECT_POSITION_EXT :: GLenum+gl_CULL_VERTEX_OBJECT_POSITION_EXT = 0x81AC+gl_FRAGMENT_PROGRAM_POSITION_MESA :: GLenum+gl_FRAGMENT_PROGRAM_POSITION_MESA = 0x8BB0+gl_FLOAT_RG_NV :: GLenum+gl_FLOAT_RG_NV = 0x8881+gl_PROXY_TEXTURE_2D_MULTISAMPLE :: GLenum+gl_PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101+gl_CON_21_ATI :: GLenum+gl_CON_21_ATI = 0x8956+gl_MAX_GEOMETRY_IMAGE_UNIFORMS :: GLenum+gl_MAX_GEOMETRY_IMAGE_UNIFORMS = 0x90CD+gl_FLOAT_MAT3x4_NV :: GLenum+gl_FLOAT_MAT3x4_NV = 0x8B68+gl_BUFFER_VARIABLE :: GLenum+gl_BUFFER_VARIABLE = 0x92E5+gl_ANY_SAMPLES_PASSED_EXT :: GLenum+gl_ANY_SAMPLES_PASSED_EXT = 0x8C2F+gl_TEXTURE_GEN_Q :: GLenum+gl_TEXTURE_GEN_Q = 0x0C63+gl_GEOMETRY_VERTICES_OUT_ARB :: GLenum+gl_GEOMETRY_VERTICES_OUT_ARB = 0x8DDA+gl_POLYGON_SMOOTH_HINT :: GLenum+gl_POLYGON_SMOOTH_HINT = 0x0C53+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A+gl_SEPARABLE_2D_EXT :: GLenum+gl_SEPARABLE_2D_EXT = 0x8012+gl_VERSION_ES_CL_1_0 :: GLenum+gl_VERSION_ES_CL_1_0 = 1+gl_VERTEX_PROGRAM_PARAMETER_BUFFER_NV :: GLenum+gl_VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA2+gl_RED_INTEGER :: GLenum+gl_RED_INTEGER = 0x8D94+gl_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD :: GLenum+gl_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = 0x914A+gl_OFFSET_TEXTURE_RECTANGLE_NV :: GLenum+gl_OFFSET_TEXTURE_RECTANGLE_NV = 0x864C+gl_TEXTURE_COORD_ARRAY_TYPE_EXT :: GLenum+gl_TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089+gl_INT8_NV :: GLenum+gl_INT8_NV = 0x8FE0+gl_VIDEO_COLOR_CONVERSION_MIN_NV :: GLenum+gl_VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV :: GLenum+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = 0x8C4D+gl_FRAMEBUFFER_ATTACHMENT_ANGLE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_ANGLE = 0x93A3+gl_SRC1_RGB :: GLenum+gl_SRC1_RGB = 0x8581+gl_CON_24_ATI :: GLenum+gl_CON_24_ATI = 0x8959+gl_DEBUG_CALLBACK_USER_PARAM :: GLenum+gl_DEBUG_CALLBACK_USER_PARAM = 0x8245+gl_MALI_SHADER_BINARY_ARM :: GLenum+gl_MALI_SHADER_BINARY_ARM = 0x8F60+gl_VIEW_CLASS_16_BITS :: GLenum+gl_VIEW_CLASS_16_BITS = 0x82CA+gl_DITHER :: GLenum+gl_DITHER = 0x0BD0+gl_PATH_STROKE_COVER_MODE_NV :: GLenum+gl_PATH_STROKE_COVER_MODE_NV = 0x9083+gl_BGR_INTEGER :: GLenum+gl_BGR_INTEGER = 0x8D9A+gl_TEXTURE_MATERIAL_PARAMETER_EXT :: GLenum+gl_TEXTURE_MATERIAL_PARAMETER_EXT = 0x8352+gl_COMPRESSED_RGBA_ASTC_5x4_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93B1+gl_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT :: GLenum+gl_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x8DE4+gl_POST_CONVOLUTION_GREEN_BIAS_EXT :: GLenum+gl_POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021+gl_PATH_ERROR_POSITION_NV :: GLenum+gl_PATH_ERROR_POSITION_NV = 0x90AB+gl_SAMPLE_ALPHA_TO_COVERAGE :: GLenum+gl_SAMPLE_ALPHA_TO_COVERAGE = 0x809E+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D+gl_NUM_COMPATIBLE_SUBROUTINES :: GLenum+gl_NUM_COMPATIBLE_SUBROUTINES = 0x8E4A+gl_RGBA16UI_EXT :: GLenum+gl_RGBA16UI_EXT = 0x8D76+gl_VERTEX_SHADER_ARB :: GLenum+gl_VERTEX_SHADER_ARB = 0x8B31+gl_RGB :: GLenum+gl_RGB = 0x1907+gl_MAP_PERSISTENT_BIT :: GLenum+gl_MAP_PERSISTENT_BIT = 0x0040+gl_QUERY_COUNTER_BITS_ARB :: GLenum+gl_QUERY_COUNTER_BITS_ARB = 0x8864+gl_BLEND_EQUATION_RGB_OES :: GLenum+gl_BLEND_EQUATION_RGB_OES = 0x8009+gl_FRAGMENT_SHADER_BIT :: GLenum+gl_FRAGMENT_SHADER_BIT = 0x00000002+gl_MATRIX_INDEX_ARRAY_ARB :: GLenum+gl_MATRIX_INDEX_ARRAY_ARB = 0x8844+gl_OUTPUT_TEXTURE_COORD29_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD29_EXT = 0x87BA+gl_HISTOGRAM_FORMAT :: GLenum+gl_HISTOGRAM_FORMAT = 0x8027+gl_MAX_ASYNC_HISTOGRAM_SGIX :: GLenum+gl_MAX_ASYNC_HISTOGRAM_SGIX = 0x832D+gl_MAX_VERTEX_ATTRIBS_ARB :: GLenum+gl_MAX_VERTEX_ATTRIBS_ARB = 0x8869+gl_SAMPLE_MASK_NV :: GLenum+gl_SAMPLE_MASK_NV = 0x8E51+gl_COLOR_INDEXES :: GLenum+gl_COLOR_INDEXES = 0x1603+gl_QUAD_TEXTURE_SELECT_SGIS :: GLenum+gl_QUAD_TEXTURE_SELECT_SGIS = 0x8125+gl_RG16_SNORM :: GLenum+gl_RG16_SNORM = 0x8F99+gl_ACTIVE_SUBROUTINE_MAX_LENGTH :: GLenum+gl_ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48+gl_LOGIC_OP_MODE :: GLenum+gl_LOGIC_OP_MODE = 0x0BF0+gl_DEPTH_COMPONENT16_NONLINEAR_NV :: GLenum+gl_DEPTH_COMPONENT16_NONLINEAR_NV = 0x8E2C+gl_PRIMITIVE_RESTART_INDEX_NV :: GLenum+gl_PRIMITIVE_RESTART_INDEX_NV = 0x8559+gl_UNKNOWN_CONTEXT_RESET :: GLenum+gl_UNKNOWN_CONTEXT_RESET = 0x8255+gl_VBO_FREE_MEMORY_ATI :: GLenum+gl_VBO_FREE_MEMORY_ATI = 0x87FB+gl_TEXTURE_CUBE_MAP_POSITIVE_X_OES :: GLenum+gl_TEXTURE_CUBE_MAP_POSITIVE_X_OES = 0x8515+gl_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR :: GLenum+gl_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR = 0x82FC+gl_TEXTURE_2D_STACK_MESAX :: GLenum+gl_TEXTURE_2D_STACK_MESAX = 0x875A+gl_DRAW_BUFFER10 :: GLenum+gl_DRAW_BUFFER10 = 0x882F+gl_FLOAT16_VEC4_NV :: GLenum+gl_FLOAT16_VEC4_NV = 0x8FFB+gl_SIGNED_HILO16_NV :: GLenum+gl_SIGNED_HILO16_NV = 0x86FA+gl_BUFFER_MAPPED_OES :: GLenum+gl_BUFFER_MAPPED_OES = 0x88BC+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1+gl_DRAW_BUFFER5_EXT :: GLenum+gl_DRAW_BUFFER5_EXT = 0x882A+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8+gl_NUM_EXTENSIONS :: GLenum+gl_NUM_EXTENSIONS = 0x821D+gl_WARP_SIZE_NV :: GLenum+gl_WARP_SIZE_NV = 0x9339+gl_TEXTURE23 :: GLenum+gl_TEXTURE23 = 0x84D7+gl_INT_SAMPLER_2D_RECT_EXT :: GLenum+gl_INT_SAMPLER_2D_RECT_EXT = 0x8DCD+gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 0x8CDB+gl_REG_4_ATI :: GLenum+gl_REG_4_ATI = 0x8925+gl_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG :: GLenum+gl_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = 0x9137+gl_FOG_INDEX :: GLenum+gl_FOG_INDEX = 0x0B61+gl_QUADRATIC_ATTENUATION :: GLenum+gl_QUADRATIC_ATTENUATION = 0x1209+gl_COLOR_MATERIAL :: GLenum+gl_COLOR_MATERIAL = 0x0B57+gl_SAMPLE_MASK :: GLenum+gl_SAMPLE_MASK = 0x8E51+gl_DRAW_FRAMEBUFFER_BINDING_EXT :: GLenum+gl_DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6+gl_MULTISAMPLE_BUFFER_BIT5_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT5_QCOM = 0x20000000+gl_DEPTH_STENCIL_OES :: GLenum+gl_DEPTH_STENCIL_OES = 0x84F9+gl_STENCIL_BITS :: GLenum+gl_STENCIL_BITS = 0x0D57+gl_CURRENT_VERTEX_ATTRIB_ARB :: GLenum+gl_CURRENT_VERTEX_ATTRIB_ARB = 0x8626+gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9+gl_COORD_REPLACE_ARB :: GLenum+gl_COORD_REPLACE_ARB = 0x8862+gl_RGBA32I_EXT :: GLenum+gl_RGBA32I_EXT = 0x8D82+gl_TEXTURE6 :: GLenum+gl_TEXTURE6 = 0x84C6+gl_FLOAT_RGB16_NV :: GLenum+gl_FLOAT_RGB16_NV = 0x8888+gl_TEXTURE_IMMUTABLE_FORMAT :: GLenum+gl_TEXTURE_IMMUTABLE_FORMAT = 0x912F+gl_ZERO_EXT :: GLenum+gl_ZERO_EXT = 0x87DD+gl_SOFTLIGHT_NV :: GLenum+gl_SOFTLIGHT_NV = 0x929C+gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9+gl_TEXTURE_BASE_LEVEL :: GLenum+gl_TEXTURE_BASE_LEVEL = 0x813C+gl_COMPRESSED_SRGB_ALPHA :: GLenum+gl_COMPRESSED_SRGB_ALPHA = 0x8C49+gl_TEXTURE18_ARB :: GLenum+gl_TEXTURE18_ARB = 0x84D2+gl_AND_INVERTED :: GLenum+gl_AND_INVERTED = 0x1504+gl_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x8C8F+gl_ARRAY_BUFFER_ARB :: GLenum+gl_ARRAY_BUFFER_ARB = 0x8892+gl_RGBA32F_EXT :: GLenum+gl_RGBA32F_EXT = 0x8814+gl_BLEND_EQUATION_RGB_EXT :: GLenum+gl_BLEND_EQUATION_RGB_EXT = 0x8009+gl_FRONT_FACE :: GLenum+gl_FRONT_FACE = 0x0B46+gl_SINGLE_COLOR_EXT :: GLenum+gl_SINGLE_COLOR_EXT = 0x81F9+gl_QUERY_COUNTER_BITS_EXT :: GLenum+gl_QUERY_COUNTER_BITS_EXT = 0x8864+gl_TESS_CONTROL_SHADER_PATCHES_ARB :: GLenum+gl_TESS_CONTROL_SHADER_PATCHES_ARB = 0x82F1+gl_SPOT_CUTOFF :: GLenum+gl_SPOT_CUTOFF = 0x1206+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x851A+gl_OUTPUT_TEXTURE_COORD6_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD6_EXT = 0x87A3+gl_COLOR_ATTACHMENT13_NV :: GLenum+gl_COLOR_ATTACHMENT13_NV = 0x8CED+gl_COMPRESSED_RGBA_S3TC_DXT3_EXT :: GLenum+gl_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2+gl_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV :: GLenum+gl_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = 0x8E5A+gl_TRANSPOSE_TEXTURE_MATRIX :: GLenum+gl_TRANSPOSE_TEXTURE_MATRIX = 0x84E5+gl_MULTISAMPLE_ARB :: GLenum+gl_MULTISAMPLE_ARB = 0x809D+gl_DEPTH_COMPONENT24 :: GLenum+gl_DEPTH_COMPONENT24 = 0x81A6+gl_PIXEL_MAP_G_TO_G :: GLenum+gl_PIXEL_MAP_G_TO_G = 0x0C77+gl_NAMED_STRING_LENGTH_ARB :: GLenum+gl_NAMED_STRING_LENGTH_ARB = 0x8DE9+gl_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = 0x8E83+gl_UNIFORM_SIZE :: GLenum+gl_UNIFORM_SIZE = 0x8A38+gl_MODELVIEW21_ARB :: GLenum+gl_MODELVIEW21_ARB = 0x8735+gl_FRAGMENT_LIGHT7_SGIX :: GLenum+gl_FRAGMENT_LIGHT7_SGIX = 0x8413+gl_DRAW_BUFFER3_ARB :: GLenum+gl_DRAW_BUFFER3_ARB = 0x8828+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES = 0x93E8+gl_UNSIGNED_SHORT :: GLenum+gl_UNSIGNED_SHORT = 0x1403+gl_MULTISAMPLE_BIT_ARB :: GLenum+gl_MULTISAMPLE_BIT_ARB = 0x20000000+gl_FOG :: GLenum+gl_FOG = 0x0B60+gl_TEXTURE_COMPARE_MODE :: GLenum+gl_TEXTURE_COMPARE_MODE = 0x884C+gl_SPHERE_MAP :: GLenum+gl_SPHERE_MAP = 0x2402+gl_TIMEOUT_EXPIRED_APPLE :: GLenum+gl_TIMEOUT_EXPIRED_APPLE = 0x911B+gl_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 0x8E7F+gl_PROXY_TEXTURE_1D_ARRAY :: GLenum+gl_PROXY_TEXTURE_1D_ARRAY = 0x8C19+gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6+gl_TEXTURE_BINDING_CUBE_MAP :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP = 0x8514+gl_COLOR_ATTACHMENT14 :: GLenum+gl_COLOR_ATTACHMENT14 = 0x8CEE+gl_STENCIL_BUFFER_BIT :: GLenum+gl_STENCIL_BUFFER_BIT = 0x00000400+gl_SIGNALED :: GLenum+gl_SIGNALED = 0x9119+gl_TEXTURE_WIDTH :: GLenum+gl_TEXTURE_WIDTH = 0x1000+gl_EVAL_BIT :: GLenum+gl_EVAL_BIT = 0x00010000+gl_REG_28_ATI :: GLenum+gl_REG_28_ATI = 0x893D+gl_TEXTURE_BIT :: GLenum+gl_TEXTURE_BIT = 0x00040000+gl_CONTEXT_ROBUST_ACCESS_EXT :: GLenum+gl_CONTEXT_ROBUST_ACCESS_EXT = 0x90F3+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80+gl_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB :: GLenum+gl_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = 0x82ED+gl_DEPTH_BUFFER_BIT :: GLenum+gl_DEPTH_BUFFER_BIT = 0x00000100+gl_TEXCOORD2_BIT_PGI :: GLenum+gl_TEXCOORD2_BIT_PGI = 0x20000000+gl_POST_CONVOLUTION_RED_SCALE_EXT :: GLenum+gl_POST_CONVOLUTION_RED_SCALE_EXT = 0x801C+gl_QUERY_KHR :: GLenum+gl_QUERY_KHR = 0x82E3+gl_PACK_IMAGE_HEIGHT_EXT :: GLenum+gl_PACK_IMAGE_HEIGHT_EXT = 0x806C+gl_COMPRESSED_RGBA_ASTC_5x5_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93B2+gl_MAX_VERTEX_UNIFORM_COMPONENTS_ARB :: GLenum+gl_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A+gl_DEPTH_STENCIL_ATTACHMENT :: GLenum+gl_DEPTH_STENCIL_ATTACHMENT = 0x821A+gl_HSL_HUE_KHR :: GLenum+gl_HSL_HUE_KHR = 0x92AD+gl_ATC_RGB_AMD :: GLenum+gl_ATC_RGB_AMD = 0x8C92+gl_DECR_WRAP :: GLenum+gl_DECR_WRAP = 0x8508+gl_GEOMETRY_VERTICES_OUT :: GLenum+gl_GEOMETRY_VERTICES_OUT = 0x8916+gl_OFFSET_TEXTURE_BIAS_NV :: GLenum+gl_OFFSET_TEXTURE_BIAS_NV = 0x86E3+gl_COLOR_ATTACHMENT5_NV :: GLenum+gl_COLOR_ATTACHMENT5_NV = 0x8CE5+gl_POINT_SIZE_ARRAY_POINTER_OES :: GLenum+gl_POINT_SIZE_ARRAY_POINTER_OES = 0x898C+gl_TEXTURE_COMPARE_FAIL_VALUE_ARB :: GLenum+gl_TEXTURE_COMPARE_FAIL_VALUE_ARB = 0x80BF+gl_RENDERBUFFER_COLOR_SAMPLES_NV :: GLenum+gl_RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10+gl_CON_10_ATI :: GLenum+gl_CON_10_ATI = 0x894B+gl_IMAGE_ROTATE_ANGLE_HP :: GLenum+gl_IMAGE_ROTATE_ANGLE_HP = 0x8159+gl_UNIFORM_BUFFER_UNIFIED_NV :: GLenum+gl_UNIFORM_BUFFER_UNIFIED_NV = 0x936E+gl_INTENSITY4 :: GLenum+gl_INTENSITY4 = 0x804A+gl_DEBUG_LOGGED_MESSAGES_KHR :: GLenum+gl_DEBUG_LOGGED_MESSAGES_KHR = 0x9145+gl_MINUS_CLAMPED_NV :: GLenum+gl_MINUS_CLAMPED_NV = 0x92B3+gl_BUFFER_SIZE :: GLenum+gl_BUFFER_SIZE = 0x8764+gl_SRGB_EXT :: GLenum+gl_SRGB_EXT = 0x8C40+gl_PIXEL_TEX_GEN_Q_ROUND_SGIX :: GLenum+gl_PIXEL_TEX_GEN_Q_ROUND_SGIX = 0x8185+gl_R16I :: GLenum+gl_R16I = 0x8233+gl_COLOR_COMPONENTS :: GLenum+gl_COLOR_COMPONENTS = 0x8283+gl_TEXTURE_VIEW_NUM_LEVELS :: GLenum+gl_TEXTURE_VIEW_NUM_LEVELS = 0x82DC+gl_COLOR_ATTACHMENT11 :: GLenum+gl_COLOR_ATTACHMENT11 = 0x8CEB+gl_OBJECT_PLANE :: GLenum+gl_OBJECT_PLANE = 0x2501+gl_IMAGE_3D_EXT :: GLenum+gl_IMAGE_3D_EXT = 0x904E+gl_MAX_GEOMETRY_INPUT_COMPONENTS :: GLenum+gl_MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123+gl_TEXTURE_COORD_ARRAY_LIST_IBM :: GLenum+gl_TEXTURE_COORD_ARRAY_LIST_IBM = 103074+gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C+gl_CLIENT_ACTIVE_TEXTURE :: GLenum+gl_CLIENT_ACTIVE_TEXTURE = 0x84E1+gl_MAX_GEOMETRY_VARYING_COMPONENTS_ARB :: GLenum+gl_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD+gl_OPERAND1_RGB :: GLenum+gl_OPERAND1_RGB = 0x8591+gl_POINT_SIZE_ARRAY_OES :: GLenum+gl_POINT_SIZE_ARRAY_OES = 0x8B9C+gl_GLYPH_VERTICAL_BEARING_Y_BIT_NV :: GLenum+gl_GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x40+gl_MODELVIEW6_ARB :: GLenum+gl_MODELVIEW6_ARB = 0x8726+gl_DEBUG_OUTPUT_SYNCHRONOUS_KHR :: GLenum+gl_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 0x8242+gl_AND_REVERSE :: GLenum+gl_AND_REVERSE = 0x1502+gl_CLAMP_TO_BORDER_NV :: GLenum+gl_CLAMP_TO_BORDER_NV = 0x812D+gl_GUILTY_CONTEXT_RESET_ARB :: GLenum+gl_GUILTY_CONTEXT_RESET_ARB = 0x8253+gl_INT64_VEC2_NV :: GLenum+gl_INT64_VEC2_NV = 0x8FE9+gl_C3F_V3F :: GLenum+gl_C3F_V3F = 0x2A24+gl_OBJECT_LINEAR_NV :: GLenum+gl_OBJECT_LINEAR_NV = 0x2401+gl_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT :: GLenum+gl_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 0x8E1F+gl_TEXTURE_FLOAT_COMPONENTS_NV :: GLenum+gl_TEXTURE_FLOAT_COMPONENTS_NV = 0x888C+gl_SOURCE3_ALPHA_NV :: GLenum+gl_SOURCE3_ALPHA_NV = 0x858B+gl_OPERAND2_ALPHA_EXT :: GLenum+gl_OPERAND2_ALPHA_EXT = 0x859A+gl_CON_12_ATI :: GLenum+gl_CON_12_ATI = 0x894D+gl_SYNC_STATUS :: GLenum+gl_SYNC_STATUS = 0x9114+gl_BLEND_SRC_RGB_EXT :: GLenum+gl_BLEND_SRC_RGB_EXT = 0x80C9+gl_DEBUG_SOURCE_WINDOW_SYSTEM_ARB :: GLenum+gl_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247+gl_TEXTURE_2D_MULTISAMPLE_ARRAY :: GLenum+gl_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102+gl_LEFT :: GLenum+gl_LEFT = 0x0406+gl_UNSIGNED_INT_SAMPLER_1D :: GLenum+gl_UNSIGNED_INT_SAMPLER_1D = 0x8DD1+gl_PIXEL_MAP_I_TO_R_SIZE :: GLenum+gl_PIXEL_MAP_I_TO_R_SIZE = 0x0CB2+gl_VERTEX_ARRAY_BINDING_OES :: GLenum+gl_VERTEX_ARRAY_BINDING_OES = 0x85B5+gl_COMBINE_ALPHA_EXT :: GLenum+gl_COMBINE_ALPHA_EXT = 0x8572+gl_TRANSFORM_FEEDBACK_ATTRIBS_NV :: GLenum+gl_TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E+gl_CURRENT_WEIGHT_ARB :: GLenum+gl_CURRENT_WEIGHT_ARB = 0x86A8+gl_RASTERIZER_DISCARD_NV :: GLenum+gl_RASTERIZER_DISCARD_NV = 0x8C89+gl_SRC_IN_NV :: GLenum+gl_SRC_IN_NV = 0x928A+gl_OBJECT_DISTANCE_TO_POINT_SGIS :: GLenum+gl_OBJECT_DISTANCE_TO_POINT_SGIS = 0x81F1+gl_COMPRESSED_RGB8_ETC2 :: GLenum+gl_COMPRESSED_RGB8_ETC2 = 0x9274+gl_MAX_VERTEX_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x90D6+gl_RGB_SNORM :: GLenum+gl_RGB_SNORM = 0x8F92+gl_INTENSITY4_EXT :: GLenum+gl_INTENSITY4_EXT = 0x804A+gl_R8I :: GLenum+gl_R8I = 0x8231+gl_MAX_SUBROUTINE_UNIFORM_LOCATIONS :: GLenum+gl_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8+gl_EDGEFLAG_BIT_PGI :: GLenum+gl_EDGEFLAG_BIT_PGI = 0x00040000+gl_MAX_FRAMEBUFFER_SAMPLES :: GLenum+gl_MAX_FRAMEBUFFER_SAMPLES = 0x9318+gl_SECONDARY_COLOR_ARRAY_TYPE :: GLenum+gl_SECONDARY_COLOR_ARRAY_TYPE = 0x845B+gl_ALL_BARRIER_BITS_EXT :: GLenum+gl_ALL_BARRIER_BITS_EXT = 0xFFFFFFFF+gl_TEXTURE14 :: GLenum+gl_TEXTURE14 = 0x84CE+gl_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER :: GLenum+gl_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1+gl_SRC0_ALPHA :: GLenum+gl_SRC0_ALPHA = 0x8588+gl_MODELVIEW16_ARB :: GLenum+gl_MODELVIEW16_ARB = 0x8730+gl_DARKEN_NV :: GLenum+gl_DARKEN_NV = 0x9297+gl_INTENSITY_EXT :: GLenum+gl_INTENSITY_EXT = 0x8049+gl_CURRENT_BIT :: GLenum+gl_CURRENT_BIT = 0x00000001+gl_FLOAT_RGBA32_NV :: GLenum+gl_FLOAT_RGBA32_NV = 0x888B+gl_SHADOW_ATTENUATION_EXT :: GLenum+gl_SHADOW_ATTENUATION_EXT = 0x834E+gl_COMPRESSED_SRGB8_ETC2 :: GLenum+gl_COMPRESSED_SRGB8_ETC2 = 0x9275+gl_DRAW_BUFFER15 :: GLenum+gl_DRAW_BUFFER15 = 0x8834+gl_COMPARE_R_TO_TEXTURE_ARB :: GLenum+gl_COMPARE_R_TO_TEXTURE_ARB = 0x884E+gl_R11F_G11F_B10F_EXT :: GLenum+gl_R11F_G11F_B10F_EXT = 0x8C3A+gl_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG :: GLenum+gl_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = 0x9138+gl_MULTISAMPLE_BUFFER_BIT6_QCOM :: GLenum+gl_MULTISAMPLE_BUFFER_BIT6_QCOM = 0x40000000+gl_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT :: GLenum+gl_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT = 0x8F67+gl_FEEDBACK_BUFFER_TYPE :: GLenum+gl_FEEDBACK_BUFFER_TYPE = 0x0DF2+gl_IMAGE_BINDING_FORMAT_EXT :: GLenum+gl_IMAGE_BINDING_FORMAT_EXT = 0x906E+gl_PROXY_TEXTURE_2D_EXT :: GLenum+gl_PROXY_TEXTURE_2D_EXT = 0x8064+gl_DEPTH32F_STENCIL8 :: GLenum+gl_DEPTH32F_STENCIL8 = 0x8CAD+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B+gl_TESS_EVALUATION_SUBROUTINE :: GLenum+gl_TESS_EVALUATION_SUBROUTINE = 0x92EA+gl_TEXTURE_LOD_BIAS_T_SGIX :: GLenum+gl_TEXTURE_LOD_BIAS_T_SGIX = 0x818F+gl_COVERAGE_COMPONENT4_NV :: GLenum+gl_COVERAGE_COMPONENT4_NV = 0x8ED1+gl_TEXTURE6_ARB :: GLenum+gl_TEXTURE6_ARB = 0x84C6+gl_MAX_3D_TEXTURE_SIZE_EXT :: GLenum+gl_MAX_3D_TEXTURE_SIZE_EXT = 0x8073+gl_TEXTURE_RESIDENT :: GLenum+gl_TEXTURE_RESIDENT = 0x8067+gl_FOG_COORD_ARRAY_TYPE :: GLenum+gl_FOG_COORD_ARRAY_TYPE = 0x8454+gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR :: GLenum+gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824D+gl_QUERY_BY_REGION_WAIT :: GLenum+gl_QUERY_BY_REGION_WAIT = 0x8E15+gl_SLUMINANCE_ALPHA :: GLenum+gl_SLUMINANCE_ALPHA = 0x8C44+gl_INT_SAMPLER_CUBE :: GLenum+gl_INT_SAMPLER_CUBE = 0x8DCC+gl_UNSIGNED_SHORT_4_4_4_4_REV :: GLenum+gl_UNSIGNED_SHORT_4_4_4_4_REV = 0x8365+gl_MAX_PROGRAM_NATIVE_PARAMETERS_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB+gl_LUMINANCE4_ALPHA4_EXT :: GLenum+gl_LUMINANCE4_ALPHA4_EXT = 0x8043+gl_OPERAND0_RGB_ARB :: GLenum+gl_OPERAND0_RGB_ARB = 0x8590+gl_PROXY_TEXTURE_2D_STACK_MESAX :: GLenum+gl_PROXY_TEXTURE_2D_STACK_MESAX = 0x875C+gl_TEXTURE_3D_EXT :: GLenum+gl_TEXTURE_3D_EXT = 0x806F+gl_STREAM_RASTERIZATION_AMD :: GLenum+gl_STREAM_RASTERIZATION_AMD = 0x91A0+gl_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6+gl_DEPTH_COMPONENT32_SGIX :: GLenum+gl_DEPTH_COMPONENT32_SGIX = 0x81A7+gl_LINE_STRIP :: GLenum+gl_LINE_STRIP = 0x0003+gl_CON_25_ATI :: GLenum+gl_CON_25_ATI = 0x895A+gl_SLIM10U_SGIX :: GLenum+gl_SLIM10U_SGIX = 0x831E+gl_COLOR_INDEX2_EXT :: GLenum+gl_COLOR_INDEX2_EXT = 0x80E3+gl_CON_22_ATI :: GLenum+gl_CON_22_ATI = 0x8957+gl_DEFORMATIONS_MASK_SGIX :: GLenum+gl_DEFORMATIONS_MASK_SGIX = 0x8196+gl_INVERSE_TRANSPOSE_NV :: GLenum+gl_INVERSE_TRANSPOSE_NV = 0x862D+gl_MULT :: GLenum+gl_MULT = 0x0103+gl_ATTRIB_ARRAY_STRIDE_NV :: GLenum+gl_ATTRIB_ARRAY_STRIDE_NV = 0x8624+gl_RGBA16_SNORM :: GLenum+gl_RGBA16_SNORM = 0x8F9B+gl_MIN_SAMPLE_SHADING_VALUE :: GLenum+gl_MIN_SAMPLE_SHADING_VALUE = 0x8C37+gl_RG8_SNORM :: GLenum+gl_RG8_SNORM = 0x8F95+gl_OBJECT_ATTACHED_OBJECTS_ARB :: GLenum+gl_OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85+gl_UNPACK_SKIP_PIXELS_EXT :: GLenum+gl_UNPACK_SKIP_PIXELS_EXT = 0x0CF4+gl_ACTIVE_VERTEX_UNITS_ARB :: GLenum+gl_ACTIVE_VERTEX_UNITS_ARB = 0x86A5+gl_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT :: GLenum+gl_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87C5+gl_INTERNALFORMAT_RED_TYPE :: GLenum+gl_INTERNALFORMAT_RED_TYPE = 0x8278+gl_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV :: GLenum+gl_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x8DA0+gl_FLOAT_RGB_NV :: GLenum+gl_FLOAT_RGB_NV = 0x8882+gl_MAP_FLUSH_EXPLICIT_BIT_EXT :: GLenum+gl_MAP_FLUSH_EXPLICIT_BIT_EXT = 0x0010+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8+gl_HALF_FLOAT_NV :: GLenum+gl_HALF_FLOAT_NV = 0x140B+gl_DEPTH_STENCIL :: GLenum+gl_DEPTH_STENCIL = 0x84F9+gl_PROGRAM_ERROR_POSITION_ARB :: GLenum+gl_PROGRAM_ERROR_POSITION_ARB = 0x864B+gl_TRACE_ERRORS_BIT_MESA :: GLenum+gl_TRACE_ERRORS_BIT_MESA = 0x0020+gl_STENCIL_OP_VALUE_AMD :: GLenum+gl_STENCIL_OP_VALUE_AMD = 0x874C+gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 0x8CD6+gl_COMPRESSED_SIGNED_R11_EAC :: GLenum+gl_COMPRESSED_SIGNED_R11_EAC = 0x9271+gl_FLOAT_MAT3x2 :: GLenum+gl_FLOAT_MAT3x2 = 0x8B67+gl_PROGRAM_ERROR_STRING_NV :: GLenum+gl_PROGRAM_ERROR_STRING_NV = 0x8874+gl_VERTEX_ID_NV :: GLenum+gl_VERTEX_ID_NV = 0x8C7B+gl_VERTEX_BINDING_OFFSET :: GLenum+gl_VERTEX_BINDING_OFFSET = 0x82D7+gl_RESTART_SUN :: GLenum+gl_RESTART_SUN = 0x0001+gl_INT_IMAGE_CUBE_MAP_ARRAY_EXT :: GLenum+gl_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x905F+gl_COLOR_INDEX :: GLenum+gl_COLOR_INDEX = 0x1900+gl_TEXTURE31_ARB :: GLenum+gl_TEXTURE31_ARB = 0x84DF+gl_MAX_DRAW_BUFFERS_ARB :: GLenum+gl_MAX_DRAW_BUFFERS_ARB = 0x8824+gl_MAX_IMAGE_UNITS :: GLenum+gl_MAX_IMAGE_UNITS = 0x8F38+gl_OUTPUT_TEXTURE_COORD4_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD4_EXT = 0x87A1+gl_COLOR_ARRAY_POINTER :: GLenum+gl_COLOR_ARRAY_POINTER = 0x8090+gl_MAX_COLOR_TEXTURE_SAMPLES :: GLenum+gl_MAX_COLOR_TEXTURE_SAMPLES = 0x910E+gl_SIGNED_NEGATE_NV :: GLenum+gl_SIGNED_NEGATE_NV = 0x853D+gl_MAX_GEOMETRY_UNIFORM_BLOCKS :: GLenum+gl_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C+gl_DEBUG_TYPE_ERROR :: GLenum+gl_DEBUG_TYPE_ERROR = 0x824C+gl_HISTOGRAM_RED_SIZE_EXT :: GLenum+gl_HISTOGRAM_RED_SIZE_EXT = 0x8028+gl_SECONDARY_COLOR_ARRAY_POINTER_EXT :: GLenum+gl_SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x845D+gl_UNSIGNALED :: GLenum+gl_UNSIGNALED = 0x9118+gl_CON_8_ATI :: GLenum+gl_CON_8_ATI = 0x8949+gl_COMPRESSED_RED :: GLenum+gl_COMPRESSED_RED = 0x8225+gl_RGBA2_EXT :: GLenum+gl_RGBA2_EXT = 0x8055+gl_T2F_C3F_V3F :: GLenum+gl_T2F_C3F_V3F = 0x2A2A+gl_SECONDARY_COLOR_ARRAY :: GLenum+gl_SECONDARY_COLOR_ARRAY = 0x845E+gl_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT :: GLenum+gl_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x87CD+gl_COLOR3_BIT_PGI :: GLenum+gl_COLOR3_BIT_PGI = 0x00010000+gl_CLIP_DISTANCE3 :: GLenum+gl_CLIP_DISTANCE3 = 0x3003+gl_TEXTURE_SWIZZLE_G_EXT :: GLenum+gl_TEXTURE_SWIZZLE_G_EXT = 0x8E43+gl_SAMPLER_CUBE_MAP_ARRAY :: GLenum+gl_SAMPLER_CUBE_MAP_ARRAY = 0x900C+gl_4PASS_3_SGIS :: GLenum+gl_4PASS_3_SGIS = 0x80A7+gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7+gl_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT :: GLenum+gl_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = 0x92D5+gl_VERTEX_ARRAY_STRIDE :: GLenum+gl_VERTEX_ARRAY_STRIDE = 0x807C+gl_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS :: GLenum+gl_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x9314+gl_TEXTURE_SWIZZLE_A :: GLenum+gl_TEXTURE_SWIZZLE_A = 0x8E45+gl_DOUBLE_MAT3x2 :: GLenum+gl_DOUBLE_MAT3x2 = 0x8F4B+gl_TEXTURE_UPDATE_BARRIER_BIT_EXT :: GLenum+gl_TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100+gl_SHADING_LANGUAGE_VERSION :: GLenum+gl_SHADING_LANGUAGE_VERSION = 0x8B8C+gl_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP :: GLenum+gl_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8162+gl_FIXED_ONLY_ARB :: GLenum+gl_FIXED_ONLY_ARB = 0x891D+gl_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI :: GLenum+gl_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x8973+gl_CON_19_ATI :: GLenum+gl_CON_19_ATI = 0x8954+gl_CONTEXT_RELEASE_BEHAVIOR :: GLenum+gl_CONTEXT_RELEASE_BEHAVIOR = 0x82FB+gl_ARRAY_BUFFER_BINDING :: GLenum+gl_ARRAY_BUFFER_BINDING = 0x8894+gl_UNPACK_COLORSPACE_CONVERSION_WEBGL :: GLenum+gl_UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243+gl_CONVEX_HULL_NV :: GLenum+gl_CONVEX_HULL_NV = 0x908B+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB :: GLenum+gl_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = 0x900D+gl_FIRST_TO_REST_NV :: GLenum+gl_FIRST_TO_REST_NV = 0x90AF+gl_MAX_TEXTURE_COORDS :: GLenum+gl_MAX_TEXTURE_COORDS = 0x8871+gl_TEXTURE_DEPTH :: GLenum+gl_TEXTURE_DEPTH = 0x8071+gl_LIGHT0 :: GLenum+gl_LIGHT0 = 0x4000+gl_VERTEX_STREAM4_ATI :: GLenum+gl_VERTEX_STREAM4_ATI = 0x8770+gl_POST_COLOR_MATRIX_ALPHA_BIAS_SGI :: GLenum+gl_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB+gl_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x92CC+gl_SAMPLER_2D_RECT_SHADOW_ARB :: GLenum+gl_SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64+gl_DRAW_BUFFER1_ATI :: GLenum+gl_DRAW_BUFFER1_ATI = 0x8826+gl_SAMPLE_BUFFERS_SGIS :: GLenum+gl_SAMPLE_BUFFERS_SGIS = 0x80A8+gl_SIGNED_LUMINANCE_ALPHA_NV :: GLenum+gl_SIGNED_LUMINANCE_ALPHA_NV = 0x8703+gl_R16_SNORM :: GLenum+gl_R16_SNORM = 0x8F98+gl_DRAW_BUFFER13_ATI :: GLenum+gl_DRAW_BUFFER13_ATI = 0x8832+gl_TEXTURE_LIGHT_EXT :: GLenum+gl_TEXTURE_LIGHT_EXT = 0x8350+gl_BOOL_ARB :: GLenum+gl_BOOL_ARB = 0x8B56+gl_BGRA_IMG :: GLenum+gl_BGRA_IMG = 0x80E1+gl_SRGB_ALPHA_EXT :: GLenum+gl_SRGB_ALPHA_EXT = 0x8C42+gl_RELATIVE_ROUNDED_RECT2_NV :: GLenum+gl_RELATIVE_ROUNDED_RECT2_NV = 0xEB+gl_LUMINANCE16UI_EXT :: GLenum+gl_LUMINANCE16UI_EXT = 0x8D7A+gl_MATRIX7_NV :: GLenum+gl_MATRIX7_NV = 0x8637+gl_INTENSITY16 :: GLenum+gl_INTENSITY16 = 0x804D+gl_DRAW_INDIRECT_BUFFER :: GLenum+gl_DRAW_INDIRECT_BUFFER = 0x8F3F+gl_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085+gl_MAX_IMAGE_SAMPLES_EXT :: GLenum+gl_MAX_IMAGE_SAMPLES_EXT = 0x906D+gl_DEBUG_SOURCE_OTHER_ARB :: GLenum+gl_DEBUG_SOURCE_OTHER_ARB = 0x824B+gl_POINT_BIT :: GLenum+gl_POINT_BIT = 0x00000002+gl_MAX_VARYING_VECTORS :: GLenum+gl_MAX_VARYING_VECTORS = 0x8DFC+gl_SUBTRACT_ARB :: GLenum+gl_SUBTRACT_ARB = 0x84E7+gl_INT_SAMPLER_BUFFER_AMD :: GLenum+gl_INT_SAMPLER_BUFFER_AMD = 0x9002+gl_SAMPLE_MASK_INVERT_SGIS :: GLenum+gl_SAMPLE_MASK_INVERT_SGIS = 0x80AB+gl_POINT_DISTANCE_ATTENUATION_ARB :: GLenum+gl_POINT_DISTANCE_ATTENUATION_ARB = 0x8129+gl_GREEN_BIT_ATI :: GLenum+gl_GREEN_BIT_ATI = 0x00000002+gl_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT :: GLenum+gl_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CA+gl_FRAMEBUFFER :: GLenum+gl_FRAMEBUFFER = 0x8D40+gl_TEXTURE_COMPRESSION_HINT_ARB :: GLenum+gl_TEXTURE_COMPRESSION_HINT_ARB = 0x84EF+gl_PROGRAM_INPUT :: GLenum+gl_PROGRAM_INPUT = 0x92E3+gl_SCREEN_NV :: GLenum+gl_SCREEN_NV = 0x9295+gl_TEXTURE_CUBE_MAP_ARRAY_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_ARRAY_EXT = 0x9009+gl_FENCE_STATUS_NV :: GLenum+gl_FENCE_STATUS_NV = 0x84F3+gl_MAX_BINDABLE_UNIFORM_SIZE_EXT :: GLenum+gl_MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x8DED+gl_PACK_COMPRESSED_BLOCK_WIDTH :: GLenum+gl_PACK_COMPRESSED_BLOCK_WIDTH = 0x912B+gl_RELATIVE_VERTICAL_LINE_TO_NV :: GLenum+gl_RELATIVE_VERTICAL_LINE_TO_NV = 0x09+gl_POST_COLOR_MATRIX_COLOR_TABLE_SGI :: GLenum+gl_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2+gl_ALPHA_INTEGER :: GLenum+gl_ALPHA_INTEGER = 0x8D97+gl_MAX_SUBROUTINES :: GLenum+gl_MAX_SUBROUTINES = 0x8DE7+gl_UNSIGNED_INT_VEC3_EXT :: GLenum+gl_UNSIGNED_INT_VEC3_EXT = 0x8DC7+gl_ELEMENT_ARRAY_ATI :: GLenum+gl_ELEMENT_ARRAY_ATI = 0x8768+gl_ONE_MINUS_CONSTANT_COLOR :: GLenum+gl_ONE_MINUS_CONSTANT_COLOR = 0x8002+gl_MODELVIEW18_ARB :: GLenum+gl_MODELVIEW18_ARB = 0x8732+gl_CONSTANT_ARB :: GLenum+gl_CONSTANT_ARB = 0x8576+gl_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV :: GLenum+gl_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA3+gl_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL :: GLenum+gl_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = 0x94FD+gl_DRAW_BUFFER_EXT :: GLenum+gl_DRAW_BUFFER_EXT = 0x0C01+gl_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT :: GLenum+gl_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x9068+gl_FLOAT_MAT2x4_NV :: GLenum+gl_FLOAT_MAT2x4_NV = 0x8B66+gl_CULL_VERTEX_EXT :: GLenum+gl_CULL_VERTEX_EXT = 0x81AA+gl_MATRIX_PALETTE_ARB :: GLenum+gl_MATRIX_PALETTE_ARB = 0x8840+gl_VERTEX_PROGRAM_POINT_SIZE_ARB :: GLenum+gl_VERTEX_PROGRAM_POINT_SIZE_ARB = 0x8642+gl_FLOAT_RG16_NV :: GLenum+gl_FLOAT_RG16_NV = 0x8886+gl_CON_1_ATI :: GLenum+gl_CON_1_ATI = 0x8942+gl_BLEND_EQUATION_RGB :: GLenum+gl_BLEND_EQUATION_RGB = 0x8009+gl_OP_CROSS_PRODUCT_EXT :: GLenum+gl_OP_CROSS_PRODUCT_EXT = 0x8797+gl_VERTEX_WEIGHT_ARRAY_STRIDE_EXT :: GLenum+gl_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x850F+gl_TESS_CONTROL_PROGRAM_NV :: GLenum+gl_TESS_CONTROL_PROGRAM_NV = 0x891E+gl_FIXED_ONLY :: GLenum+gl_FIXED_ONLY = 0x891D+gl_4PASS_1_EXT :: GLenum+gl_4PASS_1_EXT = 0x80A5+gl_SAMPLER_2D_MULTISAMPLE_ARRAY_OES :: GLenum+gl_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910B+gl_UNSIGNED_INT_8_8_8_8_REV :: GLenum+gl_UNSIGNED_INT_8_8_8_8_REV = 0x8367+gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS :: GLenum+gl_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42+gl_SLUMINANCE_ALPHA_NV :: GLenum+gl_SLUMINANCE_ALPHA_NV = 0x8C44+gl_PROXY_TEXTURE_CUBE_MAP :: GLenum+gl_PROXY_TEXTURE_CUBE_MAP = 0x851B+gl_IMAGE_CLASS_1_X_32 :: GLenum+gl_IMAGE_CLASS_1_X_32 = 0x82BB+gl_STACK_OVERFLOW_KHR :: GLenum+gl_STACK_OVERFLOW_KHR = 0x0503+gl_COMPRESSED_RGBA_ASTC_5x5x5_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_5x5x5_OES = 0x93C6+gl_CLOSE_PATH_NV :: GLenum+gl_CLOSE_PATH_NV = 0x00+gl_PIXEL_COUNT_AVAILABLE_NV :: GLenum+gl_PIXEL_COUNT_AVAILABLE_NV = 0x8867+gl_PATH_DASH_OFFSET_NV :: GLenum+gl_PATH_DASH_OFFSET_NV = 0x907E+gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = 0x8C8A+gl_GLOBAL_ALPHA_FACTOR_SUN :: GLenum+gl_GLOBAL_ALPHA_FACTOR_SUN = 0x81DA+gl_INDEX_ARRAY_COUNT_EXT :: GLenum+gl_INDEX_ARRAY_COUNT_EXT = 0x8087+gl_PACK_RESAMPLE_OML :: GLenum+gl_PACK_RESAMPLE_OML = 0x8984+gl_LAYER_NV :: GLenum+gl_LAYER_NV = 0x8DAA+gl_DRAW_FRAMEBUFFER :: GLenum+gl_DRAW_FRAMEBUFFER = 0x8CA9+gl_LINEAR_DETAIL_ALPHA_SGIS :: GLenum+gl_LINEAR_DETAIL_ALPHA_SGIS = 0x8098+gl_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT :: GLenum+gl_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = 0x8E89+gl_EDGE_FLAG_ARRAY :: GLenum+gl_EDGE_FLAG_ARRAY = 0x8079+gl_TEXTURE_DEFORMATION_BIT_SGIX :: GLenum+gl_TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001+gl_SOURCE1_RGB :: GLenum+gl_SOURCE1_RGB = 0x8581+gl_TEXTURE_3D_OES :: GLenum+gl_TEXTURE_3D_OES = 0x806F+gl_ALLOW_DRAW_OBJ_HINT_PGI :: GLenum+gl_ALLOW_DRAW_OBJ_HINT_PGI = 0x1A20E+gl_PATH_STROKE_BOUNDING_BOX_NV :: GLenum+gl_PATH_STROKE_BOUNDING_BOX_NV = 0x90A2+gl_HINT_BIT :: GLenum+gl_HINT_BIT = 0x00008000+gl_VERTICAL_LINE_TO_NV :: GLenum+gl_VERTICAL_LINE_TO_NV = 0x08+gl_MAX_TEXTURE_BUFFER_SIZE_EXT :: GLenum+gl_MAX_TEXTURE_BUFFER_SIZE_EXT = 0x8C2B+gl_MAX_DRAW_BUFFERS_ATI :: GLenum+gl_MAX_DRAW_BUFFERS_ATI = 0x8824+gl_R8_EXT :: GLenum+gl_R8_EXT = 0x8229+gl_TEXTURE_COVERAGE_SAMPLES_NV :: GLenum+gl_TEXTURE_COVERAGE_SAMPLES_NV = 0x9045+gl_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV :: GLenum+gl_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025+gl_REFERENCED_BY_VERTEX_SHADER :: GLenum+gl_REFERENCED_BY_VERTEX_SHADER = 0x9306+gl_FLOAT_RG32_NV :: GLenum+gl_FLOAT_RG32_NV = 0x8887+gl_TESSELLATION_FACTOR_AMD :: GLenum+gl_TESSELLATION_FACTOR_AMD = 0x9005+gl_MAX_PROGRAM_TEMPORARIES_ARB :: GLenum+gl_MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5+gl_COMPRESSED_RGBA_ASTC_12x12_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93BD+gl_PROJECTION :: GLenum+gl_PROJECTION = 0x1701+gl_S :: GLenum+gl_S = 0x2000+gl_ALPHA_FLOAT32_APPLE :: GLenum+gl_ALPHA_FLOAT32_APPLE = 0x8816+gl_LUMINANCE8_ALPHA8_OES :: GLenum+gl_LUMINANCE8_ALPHA8_OES = 0x8045+gl_4_BYTES_NV :: GLenum+gl_4_BYTES_NV = 0x1409+gl_CONST_EYE_NV :: GLenum+gl_CONST_EYE_NV = 0x86E5+gl_MAT_SPECULAR_BIT_PGI :: GLenum+gl_MAT_SPECULAR_BIT_PGI = 0x04000000+gl_TEXTURE1_ARB :: GLenum+gl_TEXTURE1_ARB = 0x84C1+gl_LINE_WIDTH_GRANULARITY :: GLenum+gl_LINE_WIDTH_GRANULARITY = 0x0B23+gl_DRAW_INDIRECT_BUFFER_BINDING :: GLenum+gl_DRAW_INDIRECT_BUFFER_BINDING = 0x8F43+gl_BLEND_EQUATION :: GLenum+gl_BLEND_EQUATION = 0x8009+gl_RGBA8UI_EXT :: GLenum+gl_RGBA8UI_EXT = 0x8D7C+gl_NORMALIZE :: GLenum+gl_NORMALIZE = 0x0BA1+gl_LUMINANCE_ALPHA_FLOAT16_APPLE :: GLenum+gl_LUMINANCE_ALPHA_FLOAT16_APPLE = 0x881F+gl_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX :: GLenum+gl_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = 0x9049+gl_INVERSE_NV :: GLenum+gl_INVERSE_NV = 0x862B+gl_TEXTURE_SWIZZLE_A_EXT :: GLenum+gl_TEXTURE_SWIZZLE_A_EXT = 0x8E45+gl_DEPTH24_STENCIL8_OES :: GLenum+gl_DEPTH24_STENCIL8_OES = 0x88F0+gl_UNPACK_COMPRESSED_BLOCK_HEIGHT :: GLenum+gl_UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x9128+gl_RGBA32UI :: GLenum+gl_RGBA32UI = 0x8D70+gl_MAP1_COLOR_4 :: GLenum+gl_MAP1_COLOR_4 = 0x0D90+gl_MAX_ELEMENTS_VERTICES :: GLenum+gl_MAX_ELEMENTS_VERTICES = 0x80E8+gl_CLIENT_VERTEX_ARRAY_BIT :: GLenum+gl_CLIENT_VERTEX_ARRAY_BIT = 0x00000002+gl_TEXTURE_GREEN_TYPE :: GLenum+gl_TEXTURE_GREEN_TYPE = 0x8C11+gl_TEXTURE_BINDING_BUFFER_ARB :: GLenum+gl_TEXTURE_BINDING_BUFFER_ARB = 0x8C2C+gl_MAX_RECTANGLE_TEXTURE_SIZE_NV :: GLenum+gl_MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x84F8+gl_INTERNALFORMAT_GREEN_TYPE :: GLenum+gl_INTERNALFORMAT_GREEN_TYPE = 0x8279+gl_OP_ADD_EXT :: GLenum+gl_OP_ADD_EXT = 0x8787+gl_UNSIGNED_INT_24_8 :: GLenum+gl_UNSIGNED_INT_24_8 = 0x84FA+gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS :: GLenum+gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32+gl_3D_COLOR :: GLenum+gl_3D_COLOR = 0x0602+gl_MODULATE_COLOR_IMG :: GLenum+gl_MODULATE_COLOR_IMG = 0x8C04+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x8518+gl_TEXTURE_CLIPMAP_FRAME_SGIX :: GLenum+gl_TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172+gl_NORMAL_ARRAY_STRIDE_EXT :: GLenum+gl_NORMAL_ARRAY_STRIDE_EXT = 0x807F+gl_R16 :: GLenum+gl_R16 = 0x822A+gl_PIXEL_PACK_BUFFER :: GLenum+gl_PIXEL_PACK_BUFFER = 0x88EB+gl_SOFTLIGHT_KHR :: GLenum+gl_SOFTLIGHT_KHR = 0x929C+gl_POST_CONVOLUTION_BLUE_SCALE :: GLenum+gl_POST_CONVOLUTION_BLUE_SCALE = 0x801E+gl_INTERLEAVED_ATTRIBS_NV :: GLenum+gl_INTERLEAVED_ATTRIBS_NV = 0x8C8C+gl_COLOR_ATTACHMENT8 :: GLenum+gl_COLOR_ATTACHMENT8 = 0x8CE8+gl_DEBUG_TYPE_PUSH_GROUP_KHR :: GLenum+gl_DEBUG_TYPE_PUSH_GROUP_KHR = 0x8269+gl_PERFQUERY_COUNTER_DATA_UINT64_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DATA_UINT64_INTEL = 0x94F9+gl_MOV_ATI :: GLenum+gl_MOV_ATI = 0x8961+gl_PROGRAM_SEPARABLE :: GLenum+gl_PROGRAM_SEPARABLE = 0x8258+gl_REG_20_ATI :: GLenum+gl_REG_20_ATI = 0x8935+gl_DOUBLE_VEC3 :: GLenum+gl_DOUBLE_VEC3 = 0x8FFD+gl_8X_BIT_ATI :: GLenum+gl_8X_BIT_ATI = 0x00000004+gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY :: GLenum+gl_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C+gl_MATRIX26_ARB :: GLenum+gl_MATRIX26_ARB = 0x88DA+gl_PROXY_TEXTURE_RECTANGLE_ARB :: GLenum+gl_PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7+gl_TRANSFORM_HINT_APPLE :: GLenum+gl_TRANSFORM_HINT_APPLE = 0x85B1+gl_UNPACK_ROW_BYTES_APPLE :: GLenum+gl_UNPACK_ROW_BYTES_APPLE = 0x8A16+gl_POST_COLOR_MATRIX_ALPHA_SCALE_SGI :: GLenum+gl_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB :: GLenum+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F+gl_ONE_MINUS_CONSTANT_COLOR_EXT :: GLenum+gl_ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002+gl_TEXTURE_BINDING_CUBE_MAP_OES :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP_OES = 0x8514+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT :: GLenum+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E+gl_VERTEX_ARRAY_STORAGE_HINT_APPLE :: GLenum+gl_VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F+gl_VERTEX_BINDING_BUFFER :: GLenum+gl_VERTEX_BINDING_BUFFER = 0x8F4F+gl_FRAGMENT_LIGHT0_SGIX :: GLenum+gl_FRAGMENT_LIGHT0_SGIX = 0x840C+gl_GLYPH_HORIZONTAL_BEARING_X_BIT_NV :: GLenum+gl_GLYPH_HORIZONTAL_BEARING_X_BIT_NV = 0x04+gl_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT :: GLenum+gl_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE+gl_SRC2_RGB :: GLenum+gl_SRC2_RGB = 0x8582+gl_NUM_COMPRESSED_TEXTURE_FORMATS :: GLenum+gl_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2+gl_OUTPUT_TEXTURE_COORD2_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD2_EXT = 0x879F+gl_DEPTH_TEXTURE_MODE :: GLenum+gl_DEPTH_TEXTURE_MODE = 0x884B+gl_SAMPLE_PATTERN_EXT :: GLenum+gl_SAMPLE_PATTERN_EXT = 0x80AC+gl_ELEMENT_ARRAY_APPLE :: GLenum+gl_ELEMENT_ARRAY_APPLE = 0x8A0C+gl_MAX_FOG_FUNC_POINTS_SGIS :: GLenum+gl_MAX_FOG_FUNC_POINTS_SGIS = 0x812C+gl_TEXTURE_APPLICATION_MODE_EXT :: GLenum+gl_TEXTURE_APPLICATION_MODE_EXT = 0x834F+gl_COLOR_ARRAY_SIZE_EXT :: GLenum+gl_COLOR_ARRAY_SIZE_EXT = 0x8081+gl_VERTEX_SOURCE_ATI :: GLenum+gl_VERTEX_SOURCE_ATI = 0x8774+gl_MAP2_VERTEX_ATTRIB3_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB3_4_NV = 0x8673+gl_LIGHTEN_KHR :: GLenum+gl_LIGHTEN_KHR = 0x9298+gl_INT_SAMPLER_1D_ARRAY :: GLenum+gl_INT_SAMPLER_1D_ARRAY = 0x8DCE+gl_UNSIGNED_INT_10F_11F_11F_REV_EXT :: GLenum+gl_UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x8C3B+gl_LUMINANCE8 :: GLenum+gl_LUMINANCE8 = 0x8040+gl_ACCUM_ALPHA_BITS :: GLenum+gl_ACCUM_ALPHA_BITS = 0x0D5B+gl_MINMAX_FORMAT :: GLenum+gl_MINMAX_FORMAT = 0x802F+gl_NOOP :: GLenum+gl_NOOP = 0x1505+gl_READ_FRAMEBUFFER_EXT :: GLenum+gl_READ_FRAMEBUFFER_EXT = 0x8CA8+gl_SHADER :: GLenum+gl_SHADER = 0x82E1+gl_UNSIGNED_INT_10_10_10_2_OES :: GLenum+gl_UNSIGNED_INT_10_10_10_2_OES = 0x8DF6+gl_TEXTURE_COMPRESSED_BLOCK_WIDTH :: GLenum+gl_TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x82B1+gl_DEBUG_OUTPUT_KHR :: GLenum+gl_DEBUG_OUTPUT_KHR = 0x92E0+gl_SOURCE0_ALPHA_ARB :: GLenum+gl_SOURCE0_ALPHA_ARB = 0x8588+gl_SAMPLER_1D_ARRAY_EXT :: GLenum+gl_SAMPLER_1D_ARRAY_EXT = 0x8DC0+gl_T2F_V3F :: GLenum+gl_T2F_V3F = 0x2A27+gl_SAMPLE_MASK_SGIS :: GLenum+gl_SAMPLE_MASK_SGIS = 0x80A0+gl_CIRCULAR_TANGENT_ARC_TO_NV :: GLenum+gl_CIRCULAR_TANGENT_ARC_TO_NV = 0xFC+gl_MAX_TESS_CONTROL_OUTPUT_COMPONENTS :: GLenum+gl_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83+gl_MAX_DEBUG_LOGGED_MESSAGES :: GLenum+gl_MAX_DEBUG_LOGGED_MESSAGES = 0x9144+gl_SOURCE1_ALPHA :: GLenum+gl_SOURCE1_ALPHA = 0x8589+gl_RGB_422_APPLE :: GLenum+gl_RGB_422_APPLE = 0x8A1F+gl_COLOR_TABLE :: GLenum+gl_COLOR_TABLE = 0x80D0+gl_MAP1_TEXTURE_COORD_3 :: GLenum+gl_MAP1_TEXTURE_COORD_3 = 0x0D95+gl_DEBUG_SEVERITY_HIGH_AMD :: GLenum+gl_DEBUG_SEVERITY_HIGH_AMD = 0x9146+gl_UNSIGNED_INT :: GLenum+gl_UNSIGNED_INT = 0x1405+gl_VERTEX_PROGRAM_CALLBACK_MESA :: GLenum+gl_VERTEX_PROGRAM_CALLBACK_MESA = 0x8BB5+gl_BLOCK_INDEX :: GLenum+gl_BLOCK_INDEX = 0x92FD+gl_FLOAT :: GLenum+gl_FLOAT = 0x1406+gl_TRACE_PIXELS_BIT_MESA :: GLenum+gl_TRACE_PIXELS_BIT_MESA = 0x0010+gl_BACK :: GLenum+gl_BACK = 0x0405+gl_PATH_JOIN_STYLE_NV :: GLenum+gl_PATH_JOIN_STYLE_NV = 0x9079+gl_LUMINANCE_ALPHA16I_EXT :: GLenum+gl_LUMINANCE_ALPHA16I_EXT = 0x8D8D+gl_FLOAT_MAT2 :: GLenum+gl_FLOAT_MAT2 = 0x8B5A+gl_SIGNED_IDENTITY_NV :: GLenum+gl_SIGNED_IDENTITY_NV = 0x853C+gl_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA :: GLenum+gl_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA = 0x8BB3+gl_DEPTH_PASS_INSTRUMENT_MAX_SGIX :: GLenum+gl_DEPTH_PASS_INSTRUMENT_MAX_SGIX = 0x8312+gl_CLIP_DEPTH_MODE :: GLenum+gl_CLIP_DEPTH_MODE = 0x935D+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = 0x8D6C+gl_CULL_FACE :: GLenum+gl_CULL_FACE = 0x0B44+gl_DETAIL_TEXTURE_LEVEL_SGIS :: GLenum+gl_DETAIL_TEXTURE_LEVEL_SGIS = 0x809A+gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB :: GLenum+gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243+gl_PACK_SKIP_ROWS :: GLenum+gl_PACK_SKIP_ROWS = 0x0D03+gl_COEFF :: GLenum+gl_COEFF = 0x0A00+gl_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT :: GLenum+gl_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 0x8E1E+gl_NUM_INSTRUCTIONS_PER_PASS_ATI :: GLenum+gl_NUM_INSTRUCTIONS_PER_PASS_ATI = 0x8971+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB :: GLenum+gl_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1+gl_RGBA8 :: GLenum+gl_RGBA8 = 0x8058+gl_TESS_GEN_VERTEX_ORDER :: GLenum+gl_TESS_GEN_VERTEX_ORDER = 0x8E78+gl_TEXTURE_CUBE_MAP :: GLenum+gl_TEXTURE_CUBE_MAP = 0x8513+gl_VERTEX_PRECLIP_HINT_SGIX :: GLenum+gl_VERTEX_PRECLIP_HINT_SGIX = 0x83EF+gl_NUM_SHADING_LANGUAGE_VERSIONS :: GLenum+gl_NUM_SHADING_LANGUAGE_VERSIONS = 0x82E9+gl_OUTPUT_TEXTURE_COORD9_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD9_EXT = 0x87A6+gl_MAX_PROGRAM_GENERIC_RESULTS_NV :: GLenum+gl_MAX_PROGRAM_GENERIC_RESULTS_NV = 0x8DA6+gl_COLOR_ATTACHMENT7_NV :: GLenum+gl_COLOR_ATTACHMENT7_NV = 0x8CE7+gl_OUT_OF_MEMORY :: GLenum+gl_OUT_OF_MEMORY = 0x0505+gl_TEXTURE_COORD_ARRAY_POINTER_EXT :: GLenum+gl_TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092+gl_FLOAT_MAT2_ARB :: GLenum+gl_FLOAT_MAT2_ARB = 0x8B5A+gl_COMBINER_AB_DOT_PRODUCT_NV :: GLenum+gl_COMBINER_AB_DOT_PRODUCT_NV = 0x8545+gl_INDEX_ARRAY_POINTER_EXT :: GLenum+gl_INDEX_ARRAY_POINTER_EXT = 0x8091+gl_WRITE_PIXEL_DATA_RANGE_POINTER_NV :: GLenum+gl_WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x887C+gl_3D :: GLenum+gl_3D = 0x0601+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES = 0x93E7+gl_UPPER_LEFT :: GLenum+gl_UPPER_LEFT = 0x8CA2+gl_IMAGE_1D_ARRAY_EXT :: GLenum+gl_IMAGE_1D_ARRAY_EXT = 0x9052+gl_GREEN :: GLenum+gl_GREEN = 0x1904+gl_RGB12 :: GLenum+gl_RGB12 = 0x8053+gl_GEOMETRY_DEFORMATION_BIT_SGIX :: GLenum+gl_GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002+gl_LUMINANCE_ALPHA_FLOAT32_ATI :: GLenum+gl_LUMINANCE_ALPHA_FLOAT32_ATI = 0x8819+gl_INT_SAMPLER_CUBE_MAP_ARRAY :: GLenum+gl_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E+gl_EVAL_TRIANGULAR_2D_NV :: GLenum+gl_EVAL_TRIANGULAR_2D_NV = 0x86C1+gl_QUERY_BY_REGION_WAIT_INVERTED :: GLenum+gl_QUERY_BY_REGION_WAIT_INVERTED = 0x8E19+gl_CONTEXT_ROBUST_ACCESS_KHR :: GLenum+gl_CONTEXT_ROBUST_ACCESS_KHR = 0x90F3+gl_STREAM_READ_ARB :: GLenum+gl_STREAM_READ_ARB = 0x88E1+gl_INT_IMAGE_1D_ARRAY_EXT :: GLenum+gl_INT_IMAGE_1D_ARRAY_EXT = 0x905D+gl_QUERY_NO_WAIT_INVERTED :: GLenum+gl_QUERY_NO_WAIT_INVERTED = 0x8E18+gl_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT :: GLenum+gl_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x90DF+gl_COLOR_ATTACHMENT4_EXT :: GLenum+gl_COLOR_ATTACHMENT4_EXT = 0x8CE4+gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR :: GLenum+gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824E+gl_LOSE_CONTEXT_ON_RESET :: GLenum+gl_LOSE_CONTEXT_ON_RESET = 0x8252+gl_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084+gl_REPLACEMENT_CODE_SUN :: GLenum+gl_REPLACEMENT_CODE_SUN = 0x81D8+gl_422_REV_EXT :: GLenum+gl_422_REV_EXT = 0x80CD+gl_COMPILE_STATUS :: GLenum+gl_COMPILE_STATUS = 0x8B81+gl_VERTEX_ATTRIB_MAP1_COEFF_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03+gl_TRANSPOSE_COLOR_MATRIX :: GLenum+gl_TRANSPOSE_COLOR_MATRIX = 0x84E6+gl_COLOR_TABLE_FORMAT :: GLenum+gl_COLOR_TABLE_FORMAT = 0x80D8+gl_VERSION_ES_CM_1_1 :: GLenum+gl_VERSION_ES_CM_1_1 = 1+gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24+gl_BUFFER_STORAGE_FLAGS :: GLenum+gl_BUFFER_STORAGE_FLAGS = 0x8220+gl_UNSIGNED_NORMALIZED_EXT :: GLenum+gl_UNSIGNED_NORMALIZED_EXT = 0x8C17+gl_LIGHT_MODEL_SPECULAR_VECTOR_APPLE :: GLenum+gl_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x85B0+gl_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT :: GLenum+gl_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001+gl_3_BYTES :: GLenum+gl_3_BYTES = 0x1408+gl_CND0_ATI :: GLenum+gl_CND0_ATI = 0x896B+gl_TEXTURE_MAX_LEVEL_APPLE :: GLenum+gl_TEXTURE_MAX_LEVEL_APPLE = 0x813D+gl_POINT :: GLenum+gl_POINT = 0x1B00+gl_MODELVIEW11_ARB :: GLenum+gl_MODELVIEW11_ARB = 0x872B+gl_RED_BITS :: GLenum+gl_RED_BITS = 0x0D52+gl_PIXEL_TILE_GRID_WIDTH_SGIX :: GLenum+gl_PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142+gl_DRAW_BUFFER7_NV :: GLenum+gl_DRAW_BUFFER7_NV = 0x882C+gl_OP_SET_LT_EXT :: GLenum+gl_OP_SET_LT_EXT = 0x878D+gl_TEXTURE24_ARB :: GLenum+gl_TEXTURE24_ARB = 0x84D8+gl_TESS_GEN_POINT_MODE :: GLenum+gl_TESS_GEN_POINT_MODE = 0x8E79+gl_INTERNALFORMAT_PREFERRED :: GLenum+gl_INTERNALFORMAT_PREFERRED = 0x8270+gl_VERTEX_SHADER_VARIANTS_EXT :: GLenum+gl_VERTEX_SHADER_VARIANTS_EXT = 0x87D0+gl_COMBINER_CD_OUTPUT_NV :: GLenum+gl_COMBINER_CD_OUTPUT_NV = 0x854B+gl_TRANSPOSE_CURRENT_MATRIX_ARB :: GLenum+gl_TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7+gl_MAX_ARRAY_TEXTURE_LAYERS_EXT :: GLenum+gl_MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x88FF+gl_UNSIGNED_SHORT_8_8_MESA :: GLenum+gl_UNSIGNED_SHORT_8_8_MESA = 0x85BA+gl_BLEND_ADVANCED_COHERENT_NV :: GLenum+gl_BLEND_ADVANCED_COHERENT_NV = 0x9285+gl_VERTEX_ARRAY_EXT :: GLenum+gl_VERTEX_ARRAY_EXT = 0x8074+gl_BOOL_VEC4_ARB :: GLenum+gl_BOOL_VEC4_ARB = 0x8B59+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV :: GLenum+gl_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x8853+gl_UNSIGNED_SHORT_5_5_5_1 :: GLenum+gl_UNSIGNED_SHORT_5_5_5_1 = 0x8034+gl_SHADE_MODEL :: GLenum+gl_SHADE_MODEL = 0x0B54+gl_MIRROR_CLAMP_TO_EDGE :: GLenum+gl_MIRROR_CLAMP_TO_EDGE = 0x8743+gl_RGB5_EXT :: GLenum+gl_RGB5_EXT = 0x8050+gl_TEXTURE_GEN_S :: GLenum+gl_TEXTURE_GEN_S = 0x0C60+gl_TEXTURE_COMPRESSED :: GLenum+gl_TEXTURE_COMPRESSED = 0x86A1+gl_FRAMEBUFFER_BLEND :: GLenum+gl_FRAMEBUFFER_BLEND = 0x828B+gl_REPLACE_VALUE_AMD :: GLenum+gl_REPLACE_VALUE_AMD = 0x874B+gl_YCRCB_SGIX :: GLenum+gl_YCRCB_SGIX = 0x8318+gl_UNIFORM_BLOCK_INDEX :: GLenum+gl_UNIFORM_BLOCK_INDEX = 0x8A3A+gl_TEXTURE_TOO_LARGE_EXT :: GLenum+gl_TEXTURE_TOO_LARGE_EXT = 0x8065+gl_MIRRORED_REPEAT_ARB :: GLenum+gl_MIRRORED_REPEAT_ARB = 0x8370+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER :: GLenum+gl_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x92CB+gl_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB :: GLenum+gl_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x900B+gl_MAX_SAMPLES :: GLenum+gl_MAX_SAMPLES = 0x8D57+gl_ATTENUATION_EXT :: GLenum+gl_ATTENUATION_EXT = 0x834D+gl_MIRROR_CLAMP_EXT :: GLenum+gl_MIRROR_CLAMP_EXT = 0x8742+gl_DEBUG_LOGGED_MESSAGES :: GLenum+gl_DEBUG_LOGGED_MESSAGES = 0x9145+gl_DOT3_ATI :: GLenum+gl_DOT3_ATI = 0x8966+gl_EMBOSS_CONSTANT_NV :: GLenum+gl_EMBOSS_CONSTANT_NV = 0x855E+gl_OUTPUT_TEXTURE_COORD11_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD11_EXT = 0x87A8+gl_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL :: GLenum+gl_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F8+gl_INDEX :: GLenum+gl_INDEX = 0x8222+gl_CURRENT_MATRIX_ARB :: GLenum+gl_CURRENT_MATRIX_ARB = 0x8641+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTERS :: GLenum+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x92D4+gl_MAX_DRAW_BUFFERS_EXT :: GLenum+gl_MAX_DRAW_BUFFERS_EXT = 0x8824+gl_ADD_BLEND_IMG :: GLenum+gl_ADD_BLEND_IMG = 0x8C09+gl_CLIP_FAR_HINT_PGI :: GLenum+gl_CLIP_FAR_HINT_PGI = 0x1A221+gl_POST_CONVOLUTION_COLOR_TABLE :: GLenum+gl_POST_CONVOLUTION_COLOR_TABLE = 0x80D1+gl_RGBA4_OES :: GLenum+gl_RGBA4_OES = 0x8056+gl_QUERY_RESULT_AVAILABLE_ARB :: GLenum+gl_QUERY_RESULT_AVAILABLE_ARB = 0x8867+gl_RGB8UI :: GLenum+gl_RGB8UI = 0x8D7D+gl_DYNAMIC_READ :: GLenum+gl_DYNAMIC_READ = 0x88E9+gl_TEXTURE_BINDING_2D_MULTISAMPLE :: GLenum+gl_TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104+gl_OBJECT_TYPE_APPLE :: GLenum+gl_OBJECT_TYPE_APPLE = 0x9112+gl_PERCENTAGE_AMD :: GLenum+gl_PERCENTAGE_AMD = 0x8BC3+gl_LIGHT_MODEL_LOCAL_VIEWER :: GLenum+gl_LIGHT_MODEL_LOCAL_VIEWER = 0x0B51+gl_SPARE0_PLUS_SECONDARY_COLOR_NV :: GLenum+gl_SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532+gl_OP_INDEX_EXT :: GLenum+gl_OP_INDEX_EXT = 0x8782+gl_VIEW_CLASS_S3TC_DXT3_RGBA :: GLenum+gl_VIEW_CLASS_S3TC_DXT3_RGBA = 0x82CE+gl_TEXTURE_DEPTH_TYPE_ARB :: GLenum+gl_TEXTURE_DEPTH_TYPE_ARB = 0x8C16+gl_TEXTURE_ALPHA_SIZE :: GLenum+gl_TEXTURE_ALPHA_SIZE = 0x805F+gl_YCRCB_422_SGIX :: GLenum+gl_YCRCB_422_SGIX = 0x81BB+gl_INDEX_ARRAY_LENGTH_NV :: GLenum+gl_INDEX_ARRAY_LENGTH_NV = 0x8F2E+gl_TRANSPOSE_AFFINE_3D_NV :: GLenum+gl_TRANSPOSE_AFFINE_3D_NV = 0x9098+gl_MATRIX17_ARB :: GLenum+gl_MATRIX17_ARB = 0x88D1+gl_SRGB_ALPHA :: GLenum+gl_SRGB_ALPHA = 0x8C42+gl_MAP_TESSELLATION_NV :: GLenum+gl_MAP_TESSELLATION_NV = 0x86C2+gl_PACK_SKIP_VOLUMES_SGIS :: GLenum+gl_PACK_SKIP_VOLUMES_SGIS = 0x8130+gl_COLOR_BUFFER_BIT :: GLenum+gl_COLOR_BUFFER_BIT = 0x00004000+gl_REG_6_ATI :: GLenum+gl_REG_6_ATI = 0x8927+gl_ATOMIC_COUNTER_BUFFER_BINDING :: GLenum+gl_ATOMIC_COUNTER_BUFFER_BINDING = 0x92C1+gl_POST_CONVOLUTION_ALPHA_BIAS :: GLenum+gl_POST_CONVOLUTION_ALPHA_BIAS = 0x8023+gl_HARDLIGHT_NV :: GLenum+gl_HARDLIGHT_NV = 0x929B+gl_INTENSITY16_SNORM :: GLenum+gl_INTENSITY16_SNORM = 0x901B+gl_TEXCOORD1_BIT_PGI :: GLenum+gl_TEXCOORD1_BIT_PGI = 0x10000000+gl_DEBUG_CALLBACK_FUNCTION :: GLenum+gl_DEBUG_CALLBACK_FUNCTION = 0x8244+gl_TEXTURE8_ARB :: GLenum+gl_TEXTURE8_ARB = 0x84C8+gl_DOUBLE_VEC2_EXT :: GLenum+gl_DOUBLE_VEC2_EXT = 0x8FFC+gl_TRIANGLES_ADJACENCY :: GLenum+gl_TRIANGLES_ADJACENCY = 0x000C+gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER :: GLenum+gl_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44+gl_R16F :: GLenum+gl_R16F = 0x822D+gl_OUTPUT_TEXTURE_COORD19_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD19_EXT = 0x87B0+gl_QUAD_LUMINANCE4_SGIS :: GLenum+gl_QUAD_LUMINANCE4_SGIS = 0x8120+gl_SAMPLER_OBJECT_AMD :: GLenum+gl_SAMPLER_OBJECT_AMD = 0x9155+gl_COMPRESSED_RGBA_S3TC_DXT3_ANGLE :: GLenum+gl_COMPRESSED_RGBA_S3TC_DXT3_ANGLE = 0x83F2+gl_UNSIGNED_INT_IMAGE_2D :: GLenum+gl_UNSIGNED_INT_IMAGE_2D = 0x9063+gl_ALPHA_TEST :: GLenum+gl_ALPHA_TEST = 0x0BC0+gl_CONVOLUTION_WIDTH :: GLenum+gl_CONVOLUTION_WIDTH = 0x8018+gl_SLUMINANCE_NV :: GLenum+gl_SLUMINANCE_NV = 0x8C46+gl_FRAMEBUFFER_UNDEFINED_OES :: GLenum+gl_FRAMEBUFFER_UNDEFINED_OES = 0x8219+gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23+gl_HALF_FLOAT_OES :: GLenum+gl_HALF_FLOAT_OES = 0x8D61+gl_CONVOLUTION_FORMAT_EXT :: GLenum+gl_CONVOLUTION_FORMAT_EXT = 0x8017+gl_FALSE :: GLenum+gl_FALSE = 0+gl_ADD_ATI :: GLenum+gl_ADD_ATI = 0x8963+gl_STENCIL_BACK_FAIL :: GLenum+gl_STENCIL_BACK_FAIL = 0x8801+gl_DOUBLE_VEC4 :: GLenum+gl_DOUBLE_VEC4 = 0x8FFE+gl_STANDARD_FONT_NAME_NV :: GLenum+gl_STANDARD_FONT_NAME_NV = 0x9072+gl_ALPHA4_EXT :: GLenum+gl_ALPHA4_EXT = 0x803B+gl_EXPAND_NORMAL_NV :: GLenum+gl_EXPAND_NORMAL_NV = 0x8538+gl_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB :: GLenum+gl_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A+gl_TRACE_MASK_MESA :: GLenum+gl_TRACE_MASK_MESA = 0x8755+gl_VARIABLE_B_NV :: GLenum+gl_VARIABLE_B_NV = 0x8524+gl_RGB16_EXT :: GLenum+gl_RGB16_EXT = 0x8054+gl_TEXTURE :: GLenum+gl_TEXTURE = 0x1702+gl_PIXEL_UNPACK_BUFFER_BINDING_EXT :: GLenum+gl_PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x88EF+gl_IMAGE_CLASS_1_X_8 :: GLenum+gl_IMAGE_CLASS_1_X_8 = 0x82C1+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56+gl_BOOL_VEC2_ARB :: GLenum+gl_BOOL_VEC2_ARB = 0x8B57+gl_MAP2_VERTEX_3 :: GLenum+gl_MAP2_VERTEX_3 = 0x0DB7+gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH :: GLenum+gl_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243+gl_TEXTURE_WRAP_S :: GLenum+gl_TEXTURE_WRAP_S = 0x2802+gl_TEXTURE_CUBE_MAP_NEGATIVE_X :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516+gl_TEXTURE_CUBE_MAP_ARRAY :: GLenum+gl_TEXTURE_CUBE_MAP_ARRAY = 0x9009+gl_TEXTURE_ALPHA_TYPE :: GLenum+gl_TEXTURE_ALPHA_TYPE = 0x8C13+gl_MAX_COLOR_ATTACHMENTS_NV :: GLenum+gl_MAX_COLOR_ATTACHMENTS_NV = 0x8CDF+gl_MAX_CUBE_MAP_TEXTURE_SIZE :: GLenum+gl_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C+gl_ANY_SAMPLES_PASSED :: GLenum+gl_ANY_SAMPLES_PASSED = 0x8C2F+gl_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213+gl_COLOR_ARRAY_STRIDE :: GLenum+gl_COLOR_ARRAY_STRIDE = 0x8083+gl_MULTISAMPLE_BIT_EXT :: GLenum+gl_MULTISAMPLE_BIT_EXT = 0x20000000+gl_VERTEX_ATTRIB_ARRAY_DIVISOR :: GLenum+gl_VERTEX_ATTRIB_ARRAY_DIVISOR = 0x88FE+gl_UNSIGNED_INT64_VEC3_NV :: GLenum+gl_UNSIGNED_INT64_VEC3_NV = 0x8FF6+gl_WAIT_FAILED_APPLE :: GLenum+gl_WAIT_FAILED_APPLE = 0x911D+gl_DRAW_BUFFER5_ATI :: GLenum+gl_DRAW_BUFFER5_ATI = 0x882A+gl_MAX_CUBE_MAP_TEXTURE_SIZE_EXT :: GLenum+gl_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x851C+gl_ONE_MINUS_CONSTANT_ALPHA_EXT :: GLenum+gl_ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004+gl_UNSIGNED_INT_8_24_REV_MESA :: GLenum+gl_UNSIGNED_INT_8_24_REV_MESA = 0x8752+gl_MAX_PROGRAM_ENV_PARAMETERS_ARB :: GLenum+gl_MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5+gl_MAX_VERTEX_VARYING_COMPONENTS_EXT :: GLenum+gl_MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x8DDE+gl_CURRENT_TANGENT_EXT :: GLenum+gl_CURRENT_TANGENT_EXT = 0x843B+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE+gl_ALPHA16 :: GLenum+gl_ALPHA16 = 0x803E+gl_MAP1_VERTEX_4 :: GLenum+gl_MAP1_VERTEX_4 = 0x0D98+gl_SAMPLER_CUBE_SHADOW_NV :: GLenum+gl_SAMPLER_CUBE_SHADOW_NV = 0x8DC5+gl_SAMPLER_2D_SHADOW_ARB :: GLenum+gl_SAMPLER_2D_SHADOW_ARB = 0x8B62+gl_PROGRAM_LENGTH_NV :: GLenum+gl_PROGRAM_LENGTH_NV = 0x8627+gl_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086+gl_IGNORE_BORDER_HP :: GLenum+gl_IGNORE_BORDER_HP = 0x8150+gl_DEBUG_SOURCE_SHADER_COMPILER :: GLenum+gl_DEBUG_SOURCE_SHADER_COMPILER = 0x8248+gl_TEXTURE_BORDER_VALUES_NV :: GLenum+gl_TEXTURE_BORDER_VALUES_NV = 0x871A+gl_FRAGMENT_SUBROUTINE :: GLenum+gl_FRAGMENT_SUBROUTINE = 0x92EC+gl_MAX_DEPTH_TEXTURE_SAMPLES :: GLenum+gl_MAX_DEPTH_TEXTURE_SAMPLES = 0x910F+gl_VERTEX_ATTRIB_ARRAY_POINTER :: GLenum+gl_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645+gl_COLOR_ATTACHMENT7 :: GLenum+gl_COLOR_ATTACHMENT7 = 0x8CE7+gl_LAST_VERTEX_CONVENTION_EXT :: GLenum+gl_LAST_VERTEX_CONVENTION_EXT = 0x8E4E+gl_TEXTURE_LO_SIZE_NV :: GLenum+gl_TEXTURE_LO_SIZE_NV = 0x871C+gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER :: GLenum+gl_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46+gl_COMPRESSED_RGB8_ETC2_OES :: GLenum+gl_COMPRESSED_RGB8_ETC2_OES = 0x9274+gl_NORMAL_MAP_NV :: GLenum+gl_NORMAL_MAP_NV = 0x8511+gl_COLOR_ARRAY_COUNT_EXT :: GLenum+gl_COLOR_ARRAY_COUNT_EXT = 0x8084+gl_TEXTURE_COMPARE_MODE_EXT :: GLenum+gl_TEXTURE_COMPARE_MODE_EXT = 0x884C+gl_BINORMAL_ARRAY_TYPE_EXT :: GLenum+gl_BINORMAL_ARRAY_TYPE_EXT = 0x8440+gl_OPERAND0_RGB_EXT :: GLenum+gl_OPERAND0_RGB_EXT = 0x8590+gl_MAX_VERTEX_VARYING_COMPONENTS_ARB :: GLenum+gl_MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE+gl_PIXEL_MIN_FILTER_EXT :: GLenum+gl_PIXEL_MIN_FILTER_EXT = 0x8332+gl_ACCUM_ADJACENT_PAIRS_NV :: GLenum+gl_ACCUM_ADJACENT_PAIRS_NV = 0x90AD+gl_BLEND_DST :: GLenum+gl_BLEND_DST = 0x0BE0+gl_W_EXT :: GLenum+gl_W_EXT = 0x87D8+gl_RENDERBUFFER_COVERAGE_SAMPLES_NV :: GLenum+gl_RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB+gl_STENCIL_FUNC :: GLenum+gl_STENCIL_FUNC = 0x0B92+gl_MAX_VERTEX_STREAMS :: GLenum+gl_MAX_VERTEX_STREAMS = 0x8E71+gl_GEOMETRY_INPUT_TYPE :: GLenum+gl_GEOMETRY_INPUT_TYPE = 0x8917+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV :: GLenum+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8857+gl_MINMAX_SINK_EXT :: GLenum+gl_MINMAX_SINK_EXT = 0x8030+gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC+gl_DOUBLE_MAT2x3 :: GLenum+gl_DOUBLE_MAT2x3 = 0x8F49+gl_FRACTIONAL_EVEN_EXT :: GLenum+gl_FRACTIONAL_EVEN_EXT = 0x8E7C+gl_VERTEX_ARRAY_TYPE_EXT :: GLenum+gl_VERTEX_ARRAY_TYPE_EXT = 0x807B+gl_BINORMAL_ARRAY_POINTER_EXT :: GLenum+gl_BINORMAL_ARRAY_POINTER_EXT = 0x8443+gl_SAMPLE_MASK_EXT :: GLenum+gl_SAMPLE_MASK_EXT = 0x80A0+gl_TESS_CONTROL_SHADER_EXT :: GLenum+gl_TESS_CONTROL_SHADER_EXT = 0x8E88+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x8C80+gl_TANGENT_ARRAY_STRIDE_EXT :: GLenum+gl_TANGENT_ARRAY_STRIDE_EXT = 0x843F+gl_GET_TEXTURE_IMAGE_TYPE :: GLenum+gl_GET_TEXTURE_IMAGE_TYPE = 0x8292+gl_OFFSET :: GLenum+gl_OFFSET = 0x92FC+gl_ALL_STATIC_DATA_IBM :: GLenum+gl_ALL_STATIC_DATA_IBM = 103060+gl_READ_PIXEL_DATA_RANGE_LENGTH_NV :: GLenum+gl_READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x887B+gl_CONSTANT_COLOR :: GLenum+gl_CONSTANT_COLOR = 0x8001+gl_UNSIGNED_SHORT_1_5_5_5_REV_EXT :: GLenum+gl_UNSIGNED_SHORT_1_5_5_5_REV_EXT = 0x8366+gl_MATERIAL_SIDE_HINT_PGI :: GLenum+gl_MATERIAL_SIDE_HINT_PGI = 0x1A22C+gl_UNPACK_RESAMPLE_OML :: GLenum+gl_UNPACK_RESAMPLE_OML = 0x8985+gl_SAMPLE_SHADING :: GLenum+gl_SAMPLE_SHADING = 0x8C36+gl_OUTPUT_TEXTURE_COORD13_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD13_EXT = 0x87AA+gl_MAX_COLOR_MATRIX_STACK_DEPTH :: GLenum+gl_MAX_COLOR_MATRIX_STACK_DEPTH = 0x80B3+gl_INT64_VEC3_NV :: GLenum+gl_INT64_VEC3_NV = 0x8FEA+gl_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV :: GLenum+gl_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV = 0x00000010+gl_TEXTURE_STACK_DEPTH :: GLenum+gl_TEXTURE_STACK_DEPTH = 0x0BA5+gl_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL :: GLenum+gl_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = 0x9500+gl_FRAMEBUFFER_UNSUPPORTED_EXT :: GLenum+gl_FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD+gl_QUERY_TARGET :: GLenum+gl_QUERY_TARGET = 0x82EA+gl_LUMINANCE4_ALPHA4 :: GLenum+gl_LUMINANCE4_ALPHA4 = 0x8043+gl_TRANSFORM_FEEDBACK_BARRIER_BIT :: GLenum+gl_TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800+gl_RGB32UI :: GLenum+gl_RGB32UI = 0x8D71+gl_STATIC_DRAW :: GLenum+gl_STATIC_DRAW = 0x88E4+gl_MAX_COMPUTE_UNIFORM_BLOCKS :: GLenum+gl_MAX_COMPUTE_UNIFORM_BLOCKS = 0x91BB+gl_PALETTE4_RGBA8_OES :: GLenum+gl_PALETTE4_RGBA8_OES = 0x8B91+gl_UNPACK_PREMULTIPLY_ALPHA_WEBGL :: GLenum+gl_UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241+gl_TEXTURE21 :: GLenum+gl_TEXTURE21 = 0x84D5+gl_RGB32I :: GLenum+gl_RGB32I = 0x8D83+gl_MAX_TEXTURE_LOD_BIAS_EXT :: GLenum+gl_MAX_TEXTURE_LOD_BIAS_EXT = 0x84FD+gl_PATH_GEN_COLOR_FORMAT_NV :: GLenum+gl_PATH_GEN_COLOR_FORMAT_NV = 0x90B2+gl_RGB10_A2UI :: GLenum+gl_RGB10_A2UI = 0x906F+gl_GREEN_BITS :: GLenum+gl_GREEN_BITS = 0x0D53+gl_POLYGON_MODE :: GLenum+gl_POLYGON_MODE = 0x0B40+gl_SUCCESS_NV :: GLenum+gl_SUCCESS_NV = 0x902F+gl_RGBA12 :: GLenum+gl_RGBA12 = 0x805A+gl_PATCHES :: GLenum+gl_PATCHES = 0x000E+gl_ACCUM :: GLenum+gl_ACCUM = 0x0100+gl_NUM_PASSES_ATI :: GLenum+gl_NUM_PASSES_ATI = 0x8970+gl_DEBUG_TYPE_ERROR_ARB :: GLenum+gl_DEBUG_TYPE_ERROR_ARB = 0x824C+gl_TEXTURE_LIGHTING_MODE_HP :: GLenum+gl_TEXTURE_LIGHTING_MODE_HP = 0x8167+gl_HISTOGRAM_SINK_EXT :: GLenum+gl_HISTOGRAM_SINK_EXT = 0x802D+gl_POINT_SIZE_GRANULARITY :: GLenum+gl_POINT_SIZE_GRANULARITY = 0x0B13+gl_R32F :: GLenum+gl_R32F = 0x822E+gl_STATIC_COPY :: GLenum+gl_STATIC_COPY = 0x88E6+gl_FOG_COORDINATE_ARRAY_TYPE_EXT :: GLenum+gl_FOG_COORDINATE_ARRAY_TYPE_EXT = 0x8454+gl_SPARE0_NV :: GLenum+gl_SPARE0_NV = 0x852E+gl_3DC_XY_AMD :: GLenum+gl_3DC_XY_AMD = 0x87FA+gl_LUMINANCE_ALPHA32F_ARB :: GLenum+gl_LUMINANCE_ALPHA32F_ARB = 0x8819+gl_VERTEX_ARRAY_RANGE_VALID_NV :: GLenum+gl_VERTEX_ARRAY_RANGE_VALID_NV = 0x851F+gl_DEPTH_BUFFER_BIT6_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT6_QCOM = 0x00004000+gl_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX :: GLenum+gl_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX = 0x8314+gl_LINE_WIDTH :: GLenum+gl_LINE_WIDTH = 0x0B21+gl_FOG_OFFSET_SGIX :: GLenum+gl_FOG_OFFSET_SGIX = 0x8198+gl_GEOMETRY_SHADER_BIT_EXT :: GLenum+gl_GEOMETRY_SHADER_BIT_EXT = 0x00000004+gl_TEXTURE_BLUE_SIZE :: GLenum+gl_TEXTURE_BLUE_SIZE = 0x805E+gl_TEXTURE_SHADER_NV :: GLenum+gl_TEXTURE_SHADER_NV = 0x86DE+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV :: GLenum+gl_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x8E5F+gl_FRAMEZOOM_SGIX :: GLenum+gl_FRAMEZOOM_SGIX = 0x818B+gl_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = 0x886D+gl_DEPTH_RENDERABLE :: GLenum+gl_DEPTH_RENDERABLE = 0x8287+gl_MAX_TEXTURE_BUFFER_SIZE :: GLenum+gl_MAX_TEXTURE_BUFFER_SIZE = 0x8C2B+gl_COLOR_ALPHA_PAIRING_ATI :: GLenum+gl_COLOR_ALPHA_PAIRING_ATI = 0x8975+gl_PACK_REVERSE_ROW_ORDER_ANGLE :: GLenum+gl_PACK_REVERSE_ROW_ORDER_ANGLE = 0x93A4+gl_VERTEX_ATTRIB_ARRAY_NORMALIZED :: GLenum+gl_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A+gl_OP_MADD_EXT :: GLenum+gl_OP_MADD_EXT = 0x8788+gl_TEXTURE7 :: GLenum+gl_TEXTURE7 = 0x84C7+gl_RGB32I_EXT :: GLenum+gl_RGB32I_EXT = 0x8D83+gl_RED_BIAS :: GLenum+gl_RED_BIAS = 0x0D15+gl_FLOAT_VEC2 :: GLenum+gl_FLOAT_VEC2 = 0x8B50+gl_HALF_APPLE :: GLenum+gl_HALF_APPLE = 0x140B+gl_SGX_BINARY_IMG :: GLenum+gl_SGX_BINARY_IMG = 0x8C0A+gl_CON_28_ATI :: GLenum+gl_CON_28_ATI = 0x895D+gl_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP :: GLenum+gl_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8163+gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV :: GLenum+gl_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x8533+gl_MAP2_VERTEX_ATTRIB2_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB2_4_NV = 0x8672+gl_TRANSFORM_BIT :: GLenum+gl_TRANSFORM_BIT = 0x00001000+gl_R8 :: GLenum+gl_R8 = 0x8229+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = 0x8D56+gl_T :: GLenum+gl_T = 0x2001+gl_TEXTURE_ENV_MODE :: GLenum+gl_TEXTURE_ENV_MODE = 0x2200+gl_HIGH_INT :: GLenum+gl_HIGH_INT = 0x8DF5+gl_TEXTURE_UNSIGNED_REMAP_MODE_NV :: GLenum+gl_TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x888F+gl_MAX_PROGRAM_LOOP_COUNT_NV :: GLenum+gl_MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8+gl_PERFQUERY_WAIT_INTEL :: GLenum+gl_PERFQUERY_WAIT_INTEL = 0x83FB+gl_INVALID_FRAMEBUFFER_OPERATION_EXT :: GLenum+gl_INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506+gl_TEXTURE_2D_BINDING_EXT :: GLenum+gl_TEXTURE_2D_BINDING_EXT = 0x8069+gl_TEXTURE_NUM_LEVELS_QCOM :: GLenum+gl_TEXTURE_NUM_LEVELS_QCOM = 0x8BD9+gl_TEXTURE_BUFFER_ARB :: GLenum+gl_TEXTURE_BUFFER_ARB = 0x8C2A+gl_TRUE :: GLenum+gl_TRUE = 1+gl_MAX_LAYERS :: GLenum+gl_MAX_LAYERS = 0x8281+gl_MAX_TEXTURE_UNITS_ARB :: GLenum+gl_MAX_TEXTURE_UNITS_ARB = 0x84E2+gl_MAP2_NORMAL :: GLenum+gl_MAP2_NORMAL = 0x0DB2+gl_DUAL_ALPHA16_SGIS :: GLenum+gl_DUAL_ALPHA16_SGIS = 0x8113+gl_PROGRAM_OUTPUT :: GLenum+gl_PROGRAM_OUTPUT = 0x92E4+gl_OUTPUT_TEXTURE_COORD22_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD22_EXT = 0x87B3+gl_SAMPLER_1D_ARB :: GLenum+gl_SAMPLER_1D_ARB = 0x8B5D+gl_POST_CONVOLUTION_GREEN_BIAS :: GLenum+gl_POST_CONVOLUTION_GREEN_BIAS = 0x8021+gl_INT_IMAGE_CUBE :: GLenum+gl_INT_IMAGE_CUBE = 0x905B+gl_CURRENT_VERTEX_WEIGHT_EXT :: GLenum+gl_CURRENT_VERTEX_WEIGHT_EXT = 0x850B+gl_SIGNED_LUMINANCE8_NV :: GLenum+gl_SIGNED_LUMINANCE8_NV = 0x8702+gl_TEXTURE_VIEW_NUM_LAYERS_EXT :: GLenum+gl_TEXTURE_VIEW_NUM_LAYERS_EXT = 0x82DE+gl_RG16F :: GLenum+gl_RG16F = 0x822F+gl_PROGRAM_POINT_SIZE_EXT :: GLenum+gl_PROGRAM_POINT_SIZE_EXT = 0x8642+gl_FILE_NAME_NV :: GLenum+gl_FILE_NAME_NV = 0x9074+gl_INT_IMAGE_BUFFER_EXT :: GLenum+gl_INT_IMAGE_BUFFER_EXT = 0x905C+gl_TEXTURE_UPDATE_BARRIER_BIT :: GLenum+gl_TEXTURE_UPDATE_BARRIER_BIT = 0x00000100+gl_HARDMIX_NV :: GLenum+gl_HARDMIX_NV = 0x92A9+gl_FLOAT_MAT3x4 :: GLenum+gl_FLOAT_MAT3x4 = 0x8B68+gl_TEXTURE_INTERNAL_FORMAT_QCOM :: GLenum+gl_TEXTURE_INTERNAL_FORMAT_QCOM = 0x8BD5+gl_INTERNALFORMAT_BLUE_SIZE :: GLenum+gl_INTERNALFORMAT_BLUE_SIZE = 0x8273+gl_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV :: GLenum+gl_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x8C28+gl_HSL_COLOR_NV :: GLenum+gl_HSL_COLOR_NV = 0x92AF+gl_CONDITION_SATISFIED :: GLenum+gl_CONDITION_SATISFIED = 0x911C+gl_UNIFORM_BUFFER_LENGTH_NV :: GLenum+gl_UNIFORM_BUFFER_LENGTH_NV = 0x9370+gl_ALPHA8UI_EXT :: GLenum+gl_ALPHA8UI_EXT = 0x8D7E+gl_REG_23_ATI :: GLenum+gl_REG_23_ATI = 0x8938+gl_UNSIGNED_SHORT_5_6_5_EXT :: GLenum+gl_UNSIGNED_SHORT_5_6_5_EXT = 0x8363+gl_EDGE_FLAG_ARRAY_LENGTH_NV :: GLenum+gl_EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30+gl_IMAGE_CLASS_1_X_16 :: GLenum+gl_IMAGE_CLASS_1_X_16 = 0x82BE+gl_LUMINANCE8_ALPHA8_SNORM :: GLenum+gl_LUMINANCE8_ALPHA8_SNORM = 0x9016+gl_PATH_FILL_COVER_MODE_NV :: GLenum+gl_PATH_FILL_COVER_MODE_NV = 0x9082+gl_LUMINANCE_ALPHA_FLOAT32_APPLE :: GLenum+gl_LUMINANCE_ALPHA_FLOAT32_APPLE = 0x8819+gl_INTENSITY16UI_EXT :: GLenum+gl_INTENSITY16UI_EXT = 0x8D79+gl_RENDERBUFFER_SAMPLES_APPLE :: GLenum+gl_RENDERBUFFER_SAMPLES_APPLE = 0x8CAB+gl_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE :: GLenum+gl_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x82AF+gl_LUMINANCE_ALPHA32I_EXT :: GLenum+gl_LUMINANCE_ALPHA32I_EXT = 0x8D87+gl_REGISTER_COMBINERS_NV :: GLenum+gl_REGISTER_COMBINERS_NV = 0x8522+gl_R1UI_N3F_V3F_SUN :: GLenum+gl_R1UI_N3F_V3F_SUN = 0x85C7+gl_FOG_COORDINATE_SOURCE :: GLenum+gl_FOG_COORDINATE_SOURCE = 0x8450+gl_DEBUG_SEVERITY_MEDIUM_AMD :: GLenum+gl_DEBUG_SEVERITY_MEDIUM_AMD = 0x9147+gl_MODELVIEW30_ARB :: GLenum+gl_MODELVIEW30_ARB = 0x873E+gl_COMPRESSED_RGBA_S3TC_DXT5_EXT :: GLenum+gl_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3+gl_DRAW_BUFFER0_NV :: GLenum+gl_DRAW_BUFFER0_NV = 0x8825+gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT :: GLenum+gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC+gl_ELEMENT_ARRAY_BARRIER_BIT :: GLenum+gl_ELEMENT_ARRAY_BARRIER_BIT = 0x00000002+gl_SHADER_PIXEL_LOCAL_STORAGE_EXT :: GLenum+gl_SHADER_PIXEL_LOCAL_STORAGE_EXT = 0x8F64+gl_FRONT_LEFT :: GLenum+gl_FRONT_LEFT = 0x0400+gl_UNIFORM_BUFFER_BINDING :: GLenum+gl_UNIFORM_BUFFER_BINDING = 0x8A28+gl_SIGNED_RGBA8_NV :: GLenum+gl_SIGNED_RGBA8_NV = 0x86FC+gl_EYE_PLANE :: GLenum+gl_EYE_PLANE = 0x2502+gl_TEXTURE_1D :: GLenum+gl_TEXTURE_1D = 0x0DE0+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = 0x92CE+gl_MALI_PROGRAM_BINARY_ARM :: GLenum+gl_MALI_PROGRAM_BINARY_ARM = 0x8F61+gl_SKIP_COMPONENTS3_NV :: GLenum+gl_SKIP_COMPONENTS3_NV = -4+gl_LUMINANCE_ALPHA :: GLenum+gl_LUMINANCE_ALPHA = 0x190A+gl_ACCUM_RED_BITS :: GLenum+gl_ACCUM_RED_BITS = 0x0D58+gl_POLYGON_OFFSET_FACTOR :: GLenum+gl_POLYGON_OFFSET_FACTOR = 0x8038+gl_SAMPLER_2D_ARRAY_SHADOW_NV :: GLenum+gl_SAMPLER_2D_ARRAY_SHADOW_NV = 0x8DC4+gl_VARIABLE_D_NV :: GLenum+gl_VARIABLE_D_NV = 0x8526+gl_TEXTURE_LEQUAL_R_SGIX :: GLenum+gl_TEXTURE_LEQUAL_R_SGIX = 0x819C+gl_INT :: GLenum+gl_INT = 0x1404+gl_IMAGE_TRANSLATE_Y_HP :: GLenum+gl_IMAGE_TRANSLATE_Y_HP = 0x8158+gl_POINT_TOKEN :: GLenum+gl_POINT_TOKEN = 0x0701+gl_RESAMPLE_ZERO_FILL_OML :: GLenum+gl_RESAMPLE_ZERO_FILL_OML = 0x8987+gl_DEBUG_SOURCE_THIRD_PARTY_KHR :: GLenum+gl_DEBUG_SOURCE_THIRD_PARTY_KHR = 0x8249+gl_TEXTURE_MAG_SIZE_NV :: GLenum+gl_TEXTURE_MAG_SIZE_NV = 0x871F+gl_PER_STAGE_CONSTANTS_NV :: GLenum+gl_PER_STAGE_CONSTANTS_NV = 0x8535+gl_VIRTUAL_PAGE_SIZE_Y_ARB :: GLenum+gl_VIRTUAL_PAGE_SIZE_Y_ARB = 0x9196+gl_SPRITE_EYE_ALIGNED_SGIX :: GLenum+gl_SPRITE_EYE_ALIGNED_SGIX = 0x814E+gl_EVAL_VERTEX_ATTRIB14_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB14_NV = 0x86D4+gl_TRANSFORM_FEEDBACK_VARYINGS_NV :: GLenum+gl_TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83+gl_RGB10 :: GLenum+gl_RGB10 = 0x8052+gl_MAX_VIEWPORT_DIMS :: GLenum+gl_MAX_VIEWPORT_DIMS = 0x0D3A+gl_BLUE_MAX_CLAMP_INGR :: GLenum+gl_BLUE_MAX_CLAMP_INGR = 0x8566+gl_INCR_WRAP :: GLenum+gl_INCR_WRAP = 0x8507+gl_VIRTUAL_PAGE_SIZE_X_AMD :: GLenum+gl_VIRTUAL_PAGE_SIZE_X_AMD = 0x9195+gl_BOOL_VEC3 :: GLenum+gl_BOOL_VEC3 = 0x8B58+gl_CON_17_ATI :: GLenum+gl_CON_17_ATI = 0x8952+gl_MAX_CUBE_MAP_TEXTURE_SIZE_OES :: GLenum+gl_MAX_CUBE_MAP_TEXTURE_SIZE_OES = 0x851C+gl_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT :: GLenum+gl_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x87CB+gl_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI :: GLenum+gl_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F1+gl_MINMAX :: GLenum+gl_MINMAX = 0x802E+gl_CONSTANT_BORDER_HP :: GLenum+gl_CONSTANT_BORDER_HP = 0x8151+gl_SRGB_WRITE :: GLenum+gl_SRGB_WRITE = 0x8298+gl_MAX_TEXTURE_BUFFER_SIZE_ARB :: GLenum+gl_MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV :: GLenum+gl_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x8856+gl_DECAL :: GLenum+gl_DECAL = 0x2101+gl_REG_7_ATI :: GLenum+gl_REG_7_ATI = 0x8928+gl_TESS_GEN_SPACING_EXT :: GLenum+gl_TESS_GEN_SPACING_EXT = 0x8E77+gl_ELEMENT_ARRAY_LENGTH_NV :: GLenum+gl_ELEMENT_ARRAY_LENGTH_NV = 0x8F33+gl_MATRIX31_ARB :: GLenum+gl_MATRIX31_ARB = 0x88DF+gl_TRANSFORM_FEEDBACK_VARYING :: GLenum+gl_TRANSFORM_FEEDBACK_VARYING = 0x92F4+gl_VERTEX_ATTRIB_ARRAY_SIZE :: GLenum+gl_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623+gl_NOTEQUAL :: GLenum+gl_NOTEQUAL = 0x0205+gl_READ_PIXELS_TYPE :: GLenum+gl_READ_PIXELS_TYPE = 0x828E+gl_MODELVIEW_STACK_DEPTH :: GLenum+gl_MODELVIEW_STACK_DEPTH = 0x0BA3+gl_COMPRESSED_RGBA_ASTC_6x6x5_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_6x6x5_OES = 0x93C8+gl_COMBINE_EXT :: GLenum+gl_COMBINE_EXT = 0x8570+gl_NICEST :: GLenum+gl_NICEST = 0x1102+gl_MODELVIEW2_ARB :: GLenum+gl_MODELVIEW2_ARB = 0x8722+gl_UNPACK_IMAGE_HEIGHT :: GLenum+gl_UNPACK_IMAGE_HEIGHT = 0x806E+gl_TEXTURE_CUBE_MAP_ARRAY_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x9009+gl_DRAW_BUFFER12 :: GLenum+gl_DRAW_BUFFER12 = 0x8831+gl_MAX_FRAGMENT_INTERPOLATION_OFFSET :: GLenum+gl_MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C+gl_FRAMEBUFFER_DEFAULT_HEIGHT :: GLenum+gl_FRAMEBUFFER_DEFAULT_HEIGHT = 0x9311+gl_DT_BIAS_NV :: GLenum+gl_DT_BIAS_NV = 0x8717+gl_DSDT_NV :: GLenum+gl_DSDT_NV = 0x86F5+gl_IMAGE_CUBE_MAP_ARRAY :: GLenum+gl_IMAGE_CUBE_MAP_ARRAY = 0x9054+gl_STENCIL_INDEX4 :: GLenum+gl_STENCIL_INDEX4 = 0x8D47+gl_ROUND_NV :: GLenum+gl_ROUND_NV = 0x90A4+gl_Y_EXT :: GLenum+gl_Y_EXT = 0x87D6+gl_PATH_DASH_CAPS_NV :: GLenum+gl_PATH_DASH_CAPS_NV = 0x907B+gl_TEXTURE_PRIORITY :: GLenum+gl_TEXTURE_PRIORITY = 0x8066+gl_TEXTURE_4D_BINDING_SGIS :: GLenum+gl_TEXTURE_4D_BINDING_SGIS = 0x814F+gl_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD :: GLenum+gl_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = 0x914C+gl_CULL_MODES_NV :: GLenum+gl_CULL_MODES_NV = 0x86E0+gl_VERTEX_ATTRIB_MAP2_SIZE_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06+gl_REFERENCED_BY_GEOMETRY_SHADER_EXT :: GLenum+gl_REFERENCED_BY_GEOMETRY_SHADER_EXT = 0x9309+gl_MODELVIEW_MATRIX :: GLenum+gl_MODELVIEW_MATRIX = 0x0BA6+gl_VIDEO_BUFFER_NV :: GLenum+gl_VIDEO_BUFFER_NV = 0x9020+gl_TEXTURE12 :: GLenum+gl_TEXTURE12 = 0x84CC+gl_COLORBURN_NV :: GLenum+gl_COLORBURN_NV = 0x929A+gl_COLOR_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898+gl_READ_BUFFER_EXT :: GLenum+gl_READ_BUFFER_EXT = 0x0C02+gl_RENDERBUFFER_RED_SIZE_OES :: GLenum+gl_RENDERBUFFER_RED_SIZE_OES = 0x8D50+gl_TEXTURE_SHARED_SIZE :: GLenum+gl_TEXTURE_SHARED_SIZE = 0x8C3F+gl_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS :: GLenum+gl_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x8355+gl_ALL_SHADER_BITS_EXT :: GLenum+gl_ALL_SHADER_BITS_EXT = 0xFFFFFFFF+gl_PERFQUERY_SINGLE_CONTEXT_INTEL :: GLenum+gl_PERFQUERY_SINGLE_CONTEXT_INTEL = 0x00000000+gl_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = 0x8E82+gl_PERFMON_RESULT_AMD :: GLenum+gl_PERFMON_RESULT_AMD = 0x8BC6+gl_GUILTY_CONTEXT_RESET :: GLenum+gl_GUILTY_CONTEXT_RESET = 0x8253+gl_PREVIOUS :: GLenum+gl_PREVIOUS = 0x8578+gl_UNSIGNED_INT16_VEC3_NV :: GLenum+gl_UNSIGNED_INT16_VEC3_NV = 0x8FF2+gl_VERTEX_ATTRIB_MAP1_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP1_APPLE = 0x8A00+gl_LIGHT3 :: GLenum+gl_LIGHT3 = 0x4003+gl_TESS_EVALUATION_SUBROUTINE_UNIFORM :: GLenum+gl_TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x92F0+gl_DUAL_INTENSITY8_SGIS :: GLenum+gl_DUAL_INTENSITY8_SGIS = 0x8119+gl_PARAMETER_BUFFER_BINDING_ARB :: GLenum+gl_PARAMETER_BUFFER_BINDING_ARB = 0x80EF+gl_CURRENT_SECONDARY_COLOR :: GLenum+gl_CURRENT_SECONDARY_COLOR = 0x8459+gl_RENDERBUFFER_ALPHA_SIZE :: GLenum+gl_RENDERBUFFER_ALPHA_SIZE = 0x8D53+gl_DUAL_INTENSITY12_SGIS :: GLenum+gl_DUAL_INTENSITY12_SGIS = 0x811A+gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING :: GLenum+gl_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A+gl_OP_MAX_EXT :: GLenum+gl_OP_MAX_EXT = 0x878A+gl_EDGE_FLAG_ARRAY_EXT :: GLenum+gl_EDGE_FLAG_ARRAY_EXT = 0x8079+gl_COLOR_TABLE_LUMINANCE_SIZE :: GLenum+gl_COLOR_TABLE_LUMINANCE_SIZE = 0x80DE+gl_FOG_COORD_ARRAY_ADDRESS_NV :: GLenum+gl_FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28+gl_COPY :: GLenum+gl_COPY = 0x1503+gl_DRAW_BUFFER2_NV :: GLenum+gl_DRAW_BUFFER2_NV = 0x8827+gl_SAMPLER_BINDING :: GLenum+gl_SAMPLER_BINDING = 0x8919+gl_COPY_WRITE_BUFFER :: GLenum+gl_COPY_WRITE_BUFFER = 0x8F37+gl_PIXEL_UNPACK_BUFFER :: GLenum+gl_PIXEL_UNPACK_BUFFER = 0x88EC+gl_VIEW_CLASS_S3TC_DXT1_RGBA :: GLenum+gl_VIEW_CLASS_S3TC_DXT1_RGBA = 0x82CD+gl_DRAW_FRAMEBUFFER_APPLE :: GLenum+gl_DRAW_FRAMEBUFFER_APPLE = 0x8CA9+gl_PIXEL_MAP_A_TO_A_SIZE :: GLenum+gl_PIXEL_MAP_A_TO_A_SIZE = 0x0CB9+gl_EDGE_FLAG :: GLenum+gl_EDGE_FLAG = 0x0B43+gl_CLIP_DISTANCE2 :: GLenum+gl_CLIP_DISTANCE2 = 0x3002+gl_TEXTURE_GEN_MODE :: GLenum+gl_TEXTURE_GEN_MODE = 0x2500+gl_HALF_BIAS_NORMAL_NV :: GLenum+gl_HALF_BIAS_NORMAL_NV = 0x853A+gl_RESAMPLE_ZERO_FILL_SGIX :: GLenum+gl_RESAMPLE_ZERO_FILL_SGIX = 0x842F+gl_OUTPUT_TEXTURE_COORD12_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD12_EXT = 0x87A9+gl_UNSIGNED_SHORT_8_8_REV_MESA :: GLenum+gl_UNSIGNED_SHORT_8_8_REV_MESA = 0x85BB+gl_PALETTE8_RGBA8_OES :: GLenum+gl_PALETTE8_RGBA8_OES = 0x8B96+gl_TEXTURE_4D_SGIS :: GLenum+gl_TEXTURE_4D_SGIS = 0x8134+gl_PIXEL_PACK_BUFFER_EXT :: GLenum+gl_PIXEL_PACK_BUFFER_EXT = 0x88EB+gl_MAP_ATTRIB_U_ORDER_NV :: GLenum+gl_MAP_ATTRIB_U_ORDER_NV = 0x86C3+gl_FUNC_SUBTRACT :: GLenum+gl_FUNC_SUBTRACT = 0x800A+gl_PIXEL_SUBSAMPLE_4444_SGIX :: GLenum+gl_PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518+gl_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT :: GLenum+gl_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x8C2D+gl_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT :: GLenum+gl_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = 0x90CD+gl_DYNAMIC_COPY :: GLenum+gl_DYNAMIC_COPY = 0x88EA+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x851A+gl_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT :: GLenum+gl_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x8DE3+gl_PROGRAM_LENGTH_ARB :: GLenum+gl_PROGRAM_LENGTH_ARB = 0x8627+gl_MODELVIEW14_ARB :: GLenum+gl_MODELVIEW14_ARB = 0x872E+gl_ITALIC_BIT_NV :: GLenum+gl_ITALIC_BIT_NV = 0x02+gl_OR_INVERTED :: GLenum+gl_OR_INVERTED = 0x150D+gl_CLIP_NEAR_HINT_PGI :: GLenum+gl_CLIP_NEAR_HINT_PGI = 0x1A220+gl_COVERAGE_EDGE_FRAGMENTS_NV :: GLenum+gl_COVERAGE_EDGE_FRAGMENTS_NV = 0x8ED6+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93D3+gl_PROGRAM_BINARY_LENGTH_OES :: GLenum+gl_PROGRAM_BINARY_LENGTH_OES = 0x8741+gl_DRAW_BUFFER8_ARB :: GLenum+gl_DRAW_BUFFER8_ARB = 0x882D+gl_DRAW_FRAMEBUFFER_EXT :: GLenum+gl_DRAW_FRAMEBUFFER_EXT = 0x8CA9+gl_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET :: GLenum+gl_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x82D9+gl_SYNC_CL_EVENT_ARB :: GLenum+gl_SYNC_CL_EVENT_ARB = 0x8240+gl_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE :: GLenum+gl_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x90C8+gl_MAX_VERTEX_HINT_PGI :: GLenum+gl_MAX_VERTEX_HINT_PGI = 0x1A22D+gl_UNPACK_IMAGE_HEIGHT_EXT :: GLenum+gl_UNPACK_IMAGE_HEIGHT_EXT = 0x806E+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV :: GLenum+gl_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = 0x8C4F+gl_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214+gl_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB :: GLenum+gl_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49+gl_STENCIL_BACK_REF :: GLenum+gl_STENCIL_BACK_REF = 0x8CA3+gl_CLAMP_READ_COLOR_ARB :: GLenum+gl_CLAMP_READ_COLOR_ARB = 0x891C+gl_INTERNALFORMAT_RED_SIZE :: GLenum+gl_INTERNALFORMAT_RED_SIZE = 0x8271+gl_PATCH_DEFAULT_INNER_LEVEL_EXT :: GLenum+gl_PATCH_DEFAULT_INNER_LEVEL_EXT = 0x8E73+gl_OUTPUT_TEXTURE_COORD27_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD27_EXT = 0x87B8+gl_QUERY_STENCIL_FAIL_EVENT_BIT_AMD :: GLenum+gl_QUERY_STENCIL_FAIL_EVENT_BIT_AMD = 0x00000004+gl_MAX_COMPUTE_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x91BC+gl_LOCATION :: GLenum+gl_LOCATION = 0x930E+gl_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82+gl_POST_COLOR_MATRIX_GREEN_SCALE :: GLenum+gl_POST_COLOR_MATRIX_GREEN_SCALE = 0x80B5+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93D9+gl_POST_COLOR_MATRIX_ALPHA_SCALE :: GLenum+gl_POST_COLOR_MATRIX_ALPHA_SCALE = 0x80B7+gl_HORIZONTAL_LINE_TO_NV :: GLenum+gl_HORIZONTAL_LINE_TO_NV = 0x06+gl_MAX_FRAGMENT_INPUT_COMPONENTS :: GLenum+gl_MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125+gl_PROGRAM_STRING_ARB :: GLenum+gl_PROGRAM_STRING_ARB = 0x8628+gl_EDGE_FLAG_ARRAY_ADDRESS_NV :: GLenum+gl_EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26+gl_VENDOR :: GLenum+gl_VENDOR = 0x1F00+gl_CLIPPING_INPUT_PRIMITIVES_ARB :: GLenum+gl_CLIPPING_INPUT_PRIMITIVES_ARB = 0x82F6+gl_TEXTURE_RENDERBUFFER_NV :: GLenum+gl_TEXTURE_RENDERBUFFER_NV = 0x8E55+gl_ELEMENT_ARRAY_ADDRESS_NV :: GLenum+gl_ELEMENT_ARRAY_ADDRESS_NV = 0x8F29+gl_LOCAL_EXT :: GLenum+gl_LOCAL_EXT = 0x87C4+gl_GEOMETRY_SHADER_INVOCATIONS :: GLenum+gl_GEOMETRY_SHADER_INVOCATIONS = 0x887F+gl_INT_VEC4_ARB :: GLenum+gl_INT_VEC4_ARB = 0x8B55+gl_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217+gl_SEPARATE_ATTRIBS_NV :: GLenum+gl_SEPARATE_ATTRIBS_NV = 0x8C8D+gl_FLOAT_MAT4_ARB :: GLenum+gl_FLOAT_MAT4_ARB = 0x8B5C+gl_COLOR_ATTACHMENT_EXT :: GLenum+gl_COLOR_ATTACHMENT_EXT = 0x90F0+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0+gl_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB :: GLenum+gl_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841+gl_SHININESS :: GLenum+gl_SHININESS = 0x1601+gl_INTERPOLATE_EXT :: GLenum+gl_INTERPOLATE_EXT = 0x8575+gl_TRANSFORM_FEEDBACK :: GLenum+gl_TRANSFORM_FEEDBACK = 0x8E22+gl_TEXTURE_DEPTH_QCOM :: GLenum+gl_TEXTURE_DEPTH_QCOM = 0x8BD4+gl_DOUBLE_MAT4x2 :: GLenum+gl_DOUBLE_MAT4x2 = 0x8F4D+gl_NORMAL_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897+gl_PIXEL_TEX_GEN_SGIX :: GLenum+gl_PIXEL_TEX_GEN_SGIX = 0x8139+gl_TRANSFORM_FEEDBACK_BUFFER_START :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84+gl_GLYPH_WIDTH_BIT_NV :: GLenum+gl_GLYPH_WIDTH_BIT_NV = 0x01+gl_STENCIL_ATTACHMENT_EXT :: GLenum+gl_STENCIL_ATTACHMENT_EXT = 0x8D20+gl_VERTEX_ARRAY_RANGE_POINTER_APPLE :: GLenum+gl_VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521+gl_VERTEX_WEIGHT_ARRAY_TYPE_EXT :: GLenum+gl_VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x850E+gl_MATRIX4_NV :: GLenum+gl_MATRIX4_NV = 0x8634+gl_READ_FRAMEBUFFER_ANGLE :: GLenum+gl_READ_FRAMEBUFFER_ANGLE = 0x8CA8+gl_MAX_SPARSE_ARRAY_TEXTURE_LAYERS :: GLenum+gl_MAX_SPARSE_ARRAY_TEXTURE_LAYERS = 0x919A+gl_VERTEX_ARRAY_POINTER_EXT :: GLenum+gl_VERTEX_ARRAY_POINTER_EXT = 0x808E+gl_RELATIVE_ROUNDED_RECT_NV :: GLenum+gl_RELATIVE_ROUNDED_RECT_NV = 0xE9+gl_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV :: GLenum+gl_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = 0x11+gl_MAX_PROGRAM_GENERIC_ATTRIBS_NV :: GLenum+gl_MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x8DA5+gl_TEXTURE_MEMORY_LAYOUT_INTEL :: GLenum+gl_TEXTURE_MEMORY_LAYOUT_INTEL = 0x83FF+gl_REG_0_ATI :: GLenum+gl_REG_0_ATI = 0x8921+gl_VERTEX_ATTRIB_ARRAY15_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY15_NV = 0x865F+gl_RGB12_EXT :: GLenum+gl_RGB12_EXT = 0x8053+gl_FRAGMENT_LIGHT6_SGIX :: GLenum+gl_FRAGMENT_LIGHT6_SGIX = 0x8412+gl_MAX_PROGRAM_ATTRIB_COMPONENTS_NV :: GLenum+gl_MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8908+gl_QUERY_ALL_EVENT_BITS_AMD :: GLenum+gl_QUERY_ALL_EVENT_BITS_AMD = 0xFFFFFFFF+gl_INTENSITY_FLOAT32_APPLE :: GLenum+gl_INTENSITY_FLOAT32_APPLE = 0x8817+gl_LIST_INDEX :: GLenum+gl_LIST_INDEX = 0x0B33+gl_COMPRESSED_RGB_PVRTC_2BPPV1_IMG :: GLenum+gl_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01+gl_REG_18_ATI :: GLenum+gl_REG_18_ATI = 0x8933+gl_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT :: GLenum+gl_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x9061+gl_COMPILE :: GLenum+gl_COMPILE = 0x1300+gl_VIEW_CLASS_128_BITS :: GLenum+gl_VIEW_CLASS_128_BITS = 0x82C4+gl_4X_BIT_ATI :: GLenum+gl_4X_BIT_ATI = 0x00000002+gl_CLIENT_PIXEL_STORE_BIT :: GLenum+gl_CLIENT_PIXEL_STORE_BIT = 0x00000001+gl_OPERAND2_RGB :: GLenum+gl_OPERAND2_RGB = 0x8592+gl_MINMAX_FORMAT_EXT :: GLenum+gl_MINMAX_FORMAT_EXT = 0x802F+gl_UNSIGNED_INT_IMAGE_1D :: GLenum+gl_UNSIGNED_INT_IMAGE_1D = 0x9062+gl_INSTRUMENT_MEASUREMENTS_SGIX :: GLenum+gl_INSTRUMENT_MEASUREMENTS_SGIX = 0x8181+gl_VALIDATE_STATUS :: GLenum+gl_VALIDATE_STATUS = 0x8B83+gl_NORMAL_ARRAY_COUNT_EXT :: GLenum+gl_NORMAL_ARRAY_COUNT_EXT = 0x8080+gl_PATH_STENCIL_REF_NV :: GLenum+gl_PATH_STENCIL_REF_NV = 0x90B8+gl_DRAW_BUFFER5_NV :: GLenum+gl_DRAW_BUFFER5_NV = 0x882A+gl_COMPRESSED_RGBA_ARB :: GLenum+gl_COMPRESSED_RGBA_ARB = 0x84EE+gl_MAX_MULTISAMPLE_COVERAGE_MODES_NV :: GLenum+gl_MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11+gl_MAX_3D_TEXTURE_SIZE :: GLenum+gl_MAX_3D_TEXTURE_SIZE = 0x8073+gl_FRAGMENT_NORMAL_EXT :: GLenum+gl_FRAGMENT_NORMAL_EXT = 0x834A+gl_SHADER_KHR :: GLenum+gl_SHADER_KHR = 0x82E1+gl_TEXTURE_DEPTH_TYPE :: GLenum+gl_TEXTURE_DEPTH_TYPE = 0x8C16+gl_VERTEX_PROGRAM_CALLBACK_FUNC_MESA :: GLenum+gl_VERTEX_PROGRAM_CALLBACK_FUNC_MESA = 0x8BB6+gl_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE :: GLenum+gl_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93A0+gl_TEXTURE_2D_STACK_BINDING_MESAX :: GLenum+gl_TEXTURE_2D_STACK_BINDING_MESAX = 0x875E+gl_NUM_COMPRESSED_TEXTURE_FORMATS_ARB :: GLenum+gl_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A2+gl_INT_SAMPLER_2D_EXT :: GLenum+gl_INT_SAMPLER_2D_EXT = 0x8DCA+gl_RGBA4_S3TC :: GLenum+gl_RGBA4_S3TC = 0x83A3+gl_MAX_SPOT_EXPONENT_NV :: GLenum+gl_MAX_SPOT_EXPONENT_NV = 0x8505+gl_NEGATIVE_X_EXT :: GLenum+gl_NEGATIVE_X_EXT = 0x87D9+gl_SYNC_X11_FENCE_EXT :: GLenum+gl_SYNC_X11_FENCE_EXT = 0x90E1+gl_OP_DOT3_EXT :: GLenum+gl_OP_DOT3_EXT = 0x8784+gl_LUMINANCE8_SNORM :: GLenum+gl_LUMINANCE8_SNORM = 0x9015+gl_SAMPLE_SHADING_ARB :: GLenum+gl_SAMPLE_SHADING_ARB = 0x8C36+gl_CONVOLUTION_2D_EXT :: GLenum+gl_CONVOLUTION_2D_EXT = 0x8011+gl_MAP2_TEXTURE_COORD_2 :: GLenum+gl_MAP2_TEXTURE_COORD_2 = 0x0DB4+gl_SHADER_IMAGE_LOAD :: GLenum+gl_SHADER_IMAGE_LOAD = 0x82A4+gl_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85+gl_TEXTURE_VIEW_NUM_LEVELS_EXT :: GLenum+gl_TEXTURE_VIEW_NUM_LEVELS_EXT = 0x82DC+gl_ACTIVE_UNIFORMS :: GLenum+gl_ACTIVE_UNIFORMS = 0x8B86+gl_ACCUM_GREEN_BITS :: GLenum+gl_ACCUM_GREEN_BITS = 0x0D59+gl_TESS_EVALUATION_PROGRAM_NV :: GLenum+gl_TESS_EVALUATION_PROGRAM_NV = 0x891F+gl_COMPRESSED_SLUMINANCE :: GLenum+gl_COMPRESSED_SLUMINANCE = 0x8C4A+gl_COLOR_ATTACHMENT14_EXT :: GLenum+gl_COLOR_ATTACHMENT14_EXT = 0x8CEE+gl_VERTEX23_BIT_PGI :: GLenum+gl_VERTEX23_BIT_PGI = 0x00000004+gl_BUMP_ROT_MATRIX_ATI :: GLenum+gl_BUMP_ROT_MATRIX_ATI = 0x8775+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56+gl_MAX_PALETTE_MATRICES_OES :: GLenum+gl_MAX_PALETTE_MATRICES_OES = 0x8842+gl_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV :: GLenum+gl_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036+gl_CONVOLUTION_BORDER_MODE_EXT :: GLenum+gl_CONVOLUTION_BORDER_MODE_EXT = 0x8013+gl_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE :: GLenum+gl_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05+gl_INTENSITY32I_EXT :: GLenum+gl_INTENSITY32I_EXT = 0x8D85+gl_RASTERIZER_DISCARD_EXT :: GLenum+gl_RASTERIZER_DISCARD_EXT = 0x8C89+gl_MAX_SAMPLES_EXT :: GLenum+gl_MAX_SAMPLES_EXT = 0x8D57+gl_DRAW_BUFFER10_EXT :: GLenum+gl_DRAW_BUFFER10_EXT = 0x882F+gl_INT_IMAGE_2D :: GLenum+gl_INT_IMAGE_2D = 0x9058+gl_PROVOKING_VERTEX :: GLenum+gl_PROVOKING_VERTEX = 0x8E4F+gl_UNPACK_RESAMPLE_SGIX :: GLenum+gl_UNPACK_RESAMPLE_SGIX = 0x842D+gl_SAMPLE_POSITION_NV :: GLenum+gl_SAMPLE_POSITION_NV = 0x8E50+gl_MAX_PROGRAM_MATRICES_ARB :: GLenum+gl_MAX_PROGRAM_MATRICES_ARB = 0x862F+gl_SHADER_STORAGE_BUFFER_BINDING :: GLenum+gl_SHADER_STORAGE_BUFFER_BINDING = 0x90D3+gl_TEXTURE0 :: GLenum+gl_TEXTURE0 = 0x84C0+gl_DSDT_MAG_VIB_NV :: GLenum+gl_DSDT_MAG_VIB_NV = 0x86F7+gl_DOUBLE_MAT4x3 :: GLenum+gl_DOUBLE_MAT4x3 = 0x8F4E+gl_TEXTURE27_ARB :: GLenum+gl_TEXTURE27_ARB = 0x84DB+gl_ACTIVE_ATOMIC_COUNTER_BUFFERS :: GLenum+gl_ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x92D9+gl_LUMINANCE32I_EXT :: GLenum+gl_LUMINANCE32I_EXT = 0x8D86+gl_SAMPLER_KHR :: GLenum+gl_SAMPLER_KHR = 0x82E6+gl_MITER_REVERT_NV :: GLenum+gl_MITER_REVERT_NV = 0x90A7+gl_RGB32UI_EXT :: GLenum+gl_RGB32UI_EXT = 0x8D71+gl_DUAL_LUMINANCE12_SGIS :: GLenum+gl_DUAL_LUMINANCE12_SGIS = 0x8116+gl_BOOL_VEC2 :: GLenum+gl_BOOL_VEC2 = 0x8B57+gl_COLOR_ATTACHMENT1_NV :: GLenum+gl_COLOR_ATTACHMENT1_NV = 0x8CE1+gl_MAX_CONVOLUTION_WIDTH :: GLenum+gl_MAX_CONVOLUTION_WIDTH = 0x801A+gl_DRAW_BUFFER14_NV :: GLenum+gl_DRAW_BUFFER14_NV = 0x8833+gl_BLEND_DST_RGB_EXT :: GLenum+gl_BLEND_DST_RGB_EXT = 0x80C8+gl_LUMINANCE12_ALPHA12_EXT :: GLenum+gl_LUMINANCE12_ALPHA12_EXT = 0x8047+gl_DEPTH_BOUNDS_EXT :: GLenum+gl_DEPTH_BOUNDS_EXT = 0x8891+gl_CIRCULAR_CCW_ARC_TO_NV :: GLenum+gl_CIRCULAR_CCW_ARC_TO_NV = 0xF8+gl_COMPRESSED_LUMINANCE_ALPHA :: GLenum+gl_COMPRESSED_LUMINANCE_ALPHA = 0x84EB+gl_SAMPLE_COVERAGE_VALUE_ARB :: GLenum+gl_SAMPLE_COVERAGE_VALUE_ARB = 0x80AA+gl_DEPTH_STENCIL_TO_RGBA_NV :: GLenum+gl_DEPTH_STENCIL_TO_RGBA_NV = 0x886E+gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING :: GLenum+gl_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x889C+gl_NAME_LENGTH :: GLenum+gl_NAME_LENGTH = 0x92F9+gl_STENCIL_TEST_TWO_SIDE_EXT :: GLenum+gl_STENCIL_TEST_TWO_SIDE_EXT = 0x8910+gl_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES :: GLenum+gl_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898D+gl_VERTEX_ATTRIB_ARRAY_STRIDE_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x8624+gl_OUTPUT_TEXTURE_COORD30_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD30_EXT = 0x87BB+gl_MAX_PROGRAM_SUBROUTINE_NUM_NV :: GLenum+gl_MAX_PROGRAM_SUBROUTINE_NUM_NV = 0x8F45+gl_MULTIPLY_NV :: GLenum+gl_MULTIPLY_NV = 0x9294+gl_TEXTURE19 :: GLenum+gl_TEXTURE19 = 0x84D3+gl_INVERT_OVG_NV :: GLenum+gl_INVERT_OVG_NV = 0x92B4+gl_IMPLEMENTATION_COLOR_READ_FORMAT_OES :: GLenum+gl_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B+gl_NEAREST_CLIPMAP_LINEAR_SGIX :: GLenum+gl_NEAREST_CLIPMAP_LINEAR_SGIX = 0x844E+gl_VARIABLE_A_NV :: GLenum+gl_VARIABLE_A_NV = 0x8523+gl_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT :: GLenum+gl_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x8C71+gl_TEXTURE_2D_MULTISAMPLE :: GLenum+gl_TEXTURE_2D_MULTISAMPLE = 0x9100+gl_DEBUG_SOURCE_THIRD_PARTY :: GLenum+gl_DEBUG_SOURCE_THIRD_PARTY = 0x8249+gl_DRAW_BUFFER7_ARB :: GLenum+gl_DRAW_BUFFER7_ARB = 0x882C+gl_MAX_DRAW_BUFFERS :: GLenum+gl_MAX_DRAW_BUFFERS = 0x8824+gl_MAX_SERVER_WAIT_TIMEOUT :: GLenum+gl_MAX_SERVER_WAIT_TIMEOUT = 0x9111+gl_COMPRESSED_SIGNED_RG11_EAC :: GLenum+gl_COMPRESSED_SIGNED_RG11_EAC = 0x9273+gl_VERTEX_PROGRAM_POINT_SIZE :: GLenum+gl_VERTEX_PROGRAM_POINT_SIZE = 0x8642+gl_STENCIL_PASS_DEPTH_PASS :: GLenum+gl_STENCIL_PASS_DEPTH_PASS = 0x0B96+gl_RENDERBUFFER_STENCIL_SIZE :: GLenum+gl_RENDERBUFFER_STENCIL_SIZE = 0x8D55+gl_TEXTURE_BINDING_2D :: GLenum+gl_TEXTURE_BINDING_2D = 0x8069+gl_DATA_BUFFER_AMD :: GLenum+gl_DATA_BUFFER_AMD = 0x9151+gl_DEBUG_CATEGORY_APPLICATION_AMD :: GLenum+gl_DEBUG_CATEGORY_APPLICATION_AMD = 0x914F+gl_ASYNC_HISTOGRAM_SGIX :: GLenum+gl_ASYNC_HISTOGRAM_SGIX = 0x832C+gl_UNPACK_LSB_FIRST :: GLenum+gl_UNPACK_LSB_FIRST = 0x0CF1+gl_UNSIGNED_INT_SAMPLER_CUBE_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4+gl_DEPTH_CLAMP_FAR_AMD :: GLenum+gl_DEPTH_CLAMP_FAR_AMD = 0x901F+gl_TRANSFORM_FEEDBACK_BUFFER_MODE_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F+gl_VERTEX_ATTRIB_ARRAY_STRIDE :: GLenum+gl_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624+gl_UNSIGNED_INT16_VEC4_NV :: GLenum+gl_UNSIGNED_INT16_VEC4_NV = 0x8FF3+gl_OBJECT_BUFFER_SIZE_ATI :: GLenum+gl_OBJECT_BUFFER_SIZE_ATI = 0x8764+gl_YCRCB_444_SGIX :: GLenum+gl_YCRCB_444_SGIX = 0x81BC+gl_LOSE_CONTEXT_ON_RESET_KHR :: GLenum+gl_LOSE_CONTEXT_ON_RESET_KHR = 0x8252+gl_TEXTURE_VIEW_NUM_LAYERS :: GLenum+gl_TEXTURE_VIEW_NUM_LAYERS = 0x82DE+gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB :: GLenum+gl_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D+gl_PERFQUERY_COUNTER_DATA_BOOL32_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DATA_BOOL32_INTEL = 0x94FC+gl_OBJECT_DELETE_STATUS_ARB :: GLenum+gl_OBJECT_DELETE_STATUS_ARB = 0x8B80+gl_SQUARE_NV :: GLenum+gl_SQUARE_NV = 0x90A3+gl_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT :: GLenum+gl_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = 0x8E81+gl_DEBUG_SEVERITY_NOTIFICATION_KHR :: GLenum+gl_DEBUG_SEVERITY_NOTIFICATION_KHR = 0x826B+gl_EYE_LINEAR_NV :: GLenum+gl_EYE_LINEAR_NV = 0x2400+gl_REG_16_ATI :: GLenum+gl_REG_16_ATI = 0x8931+gl_LUMINANCE_ALPHA32UI_EXT :: GLenum+gl_LUMINANCE_ALPHA32UI_EXT = 0x8D75+gl_OUTPUT_TEXTURE_COORD31_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD31_EXT = 0x87BC+gl_COMPRESSED_RG_RGTC2 :: GLenum+gl_COMPRESSED_RG_RGTC2 = 0x8DBD+gl_FLOAT_MAT3 :: GLenum+gl_FLOAT_MAT3 = 0x8B5B+gl_INDEX_ARRAY_POINTER :: GLenum+gl_INDEX_ARRAY_POINTER = 0x8091+gl_FOG_COORD :: GLenum+gl_FOG_COORD = 0x8451+gl_DRAW_BUFFER13 :: GLenum+gl_DRAW_BUFFER13 = 0x8832+gl_SCALED_RESOLVE_NICEST_EXT :: GLenum+gl_SCALED_RESOLVE_NICEST_EXT = 0x90BB+gl_QUERY_RESULT_AVAILABLE :: GLenum+gl_QUERY_RESULT_AVAILABLE = 0x8867+gl_UNPACK_SUBSAMPLE_RATE_SGIX :: GLenum+gl_UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1+gl_3_BYTES_NV :: GLenum+gl_3_BYTES_NV = 0x1408+gl_CLEAR :: GLenum+gl_CLEAR = 0x1500+gl_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT :: GLenum+gl_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = 0x92CD+gl_R8UI :: GLenum+gl_R8UI = 0x8232+gl_OFFSET_TEXTURE_2D_MATRIX_NV :: GLenum+gl_OFFSET_TEXTURE_2D_MATRIX_NV = 0x86E1+gl_BGRA_INTEGER :: GLenum+gl_BGRA_INTEGER = 0x8D9B+gl_MAX_ARRAY_TEXTURE_LAYERS :: GLenum+gl_MAX_ARRAY_TEXTURE_LAYERS = 0x88FF+gl_COMPRESSED_RGB_ARB :: GLenum+gl_COMPRESSED_RGB_ARB = 0x84ED+gl_FOG_COORDINATE_ARRAY_POINTER_EXT :: GLenum+gl_FOG_COORDINATE_ARRAY_POINTER_EXT = 0x8456+gl_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT :: GLenum+gl_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020+gl_TEXTURE_MAG_FILTER :: GLenum+gl_TEXTURE_MAG_FILTER = 0x2800+gl_DEPTH_COMPONENT32 :: GLenum+gl_DEPTH_COMPONENT32 = 0x81A7+gl_VIEW_CLASS_S3TC_DXT1_RGB :: GLenum+gl_VIEW_CLASS_S3TC_DXT1_RGB = 0x82CC+gl_FRONT_RIGHT :: GLenum+gl_FRONT_RIGHT = 0x0401+gl_HISTOGRAM_WIDTH :: GLenum+gl_HISTOGRAM_WIDTH = 0x8026+gl_SAMPLER_CUBE_MAP_ARRAY_ARB :: GLenum+gl_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900C+gl_WEIGHT_ARRAY_STRIDE_OES :: GLenum+gl_WEIGHT_ARRAY_STRIDE_OES = 0x86AA+gl_PIXEL_PACK_BUFFER_ARB :: GLenum+gl_PIXEL_PACK_BUFFER_ARB = 0x88EB+gl_DOT_PRODUCT_PASS_THROUGH_NV :: GLenum+gl_DOT_PRODUCT_PASS_THROUGH_NV = 0x885B+gl_COMPRESSED_RG11_EAC :: GLenum+gl_COMPRESSED_RG11_EAC = 0x9272+gl_SRGB_DECODE_ARB :: GLenum+gl_SRGB_DECODE_ARB = 0x8299+gl_OP_SUB_EXT :: GLenum+gl_OP_SUB_EXT = 0x8796+gl_SLIM12S_SGIX :: GLenum+gl_SLIM12S_SGIX = 0x831F+gl_SECONDARY_COLOR_NV :: GLenum+gl_SECONDARY_COLOR_NV = 0x852D+gl_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS :: GLenum+gl_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x90DA+gl_MAP1_VERTEX_3 :: GLenum+gl_MAP1_VERTEX_3 = 0x0D97+gl_RELATIVE_ROUNDED_RECT8_NV :: GLenum+gl_RELATIVE_ROUNDED_RECT8_NV = 0xEF+gl_PALETTE4_R5_G6_B5_OES :: GLenum+gl_PALETTE4_R5_G6_B5_OES = 0x8B92+gl_UNSIGNED_INT8_NV :: GLenum+gl_UNSIGNED_INT8_NV = 0x8FEC+gl_CURRENT_MATRIX_STACK_DEPTH_ARB :: GLenum+gl_CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640+gl_PIXEL_MODE_BIT :: GLenum+gl_PIXEL_MODE_BIT = 0x00000020+gl_FONT_UNINTELLIGIBLE_NV :: GLenum+gl_FONT_UNINTELLIGIBLE_NV = 0x936B+gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6+gl_LUMINANCE8UI_EXT :: GLenum+gl_LUMINANCE8UI_EXT = 0x8D80+gl_HILO16_NV :: GLenum+gl_HILO16_NV = 0x86F8+gl_MAP2_VERTEX_ATTRIB8_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB8_4_NV = 0x8678+gl_ATTACHED_SHADERS :: GLenum+gl_ATTACHED_SHADERS = 0x8B85+gl_OBJECT_POINT_SGIS :: GLenum+gl_OBJECT_POINT_SGIS = 0x81F5+gl_TEXTURE_CUBE_MAP_SEAMLESS :: GLenum+gl_TEXTURE_CUBE_MAP_SEAMLESS = 0x884F+gl_COLOR_ATTACHMENT0 :: GLenum+gl_COLOR_ATTACHMENT0 = 0x8CE0+gl_POST_CONVOLUTION_ALPHA_BIAS_EXT :: GLenum+gl_POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023+gl_SAMPLE_PATTERN_SGIS :: GLenum+gl_SAMPLE_PATTERN_SGIS = 0x80AC+gl_COPY_PIXEL_TOKEN :: GLenum+gl_COPY_PIXEL_TOKEN = 0x0706+gl_BUFFER_SIZE_ARB :: GLenum+gl_BUFFER_SIZE_ARB = 0x8764+gl_DEPTH_BOUNDS_TEST_EXT :: GLenum+gl_DEPTH_BOUNDS_TEST_EXT = 0x8890+gl_SAMPLE_POSITION :: GLenum+gl_SAMPLE_POSITION = 0x8E50+gl_FULL_STIPPLE_HINT_PGI :: GLenum+gl_FULL_STIPPLE_HINT_PGI = 0x1A219+gl_DEBUG_ASSERT_MESA :: GLenum+gl_DEBUG_ASSERT_MESA = 0x875B+gl_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB :: GLenum+gl_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x886A+gl_RENDERBUFFER_WIDTH_OES :: GLenum+gl_RENDERBUFFER_WIDTH_OES = 0x8D42+gl_FLOAT_RGBA16_NV :: GLenum+gl_FLOAT_RGBA16_NV = 0x888A+gl_MODELVIEW5_ARB :: GLenum+gl_MODELVIEW5_ARB = 0x8725+gl_VERSION :: GLenum+gl_VERSION = 0x1F02+gl_TEXTURE17_ARB :: GLenum+gl_TEXTURE17_ARB = 0x84D1+gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT :: GLenum+gl_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8A32+gl_MODELVIEW0_STACK_DEPTH_EXT :: GLenum+gl_MODELVIEW0_STACK_DEPTH_EXT = 0x0BA3+gl_OUTPUT_TEXTURE_COORD1_EXT :: GLenum+gl_OUTPUT_TEXTURE_COORD1_EXT = 0x879E+gl_REQUIRED_TEXTURE_IMAGE_UNITS_OES :: GLenum+gl_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x8D68+gl_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX :: GLenum+gl_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408+gl_IMAGE_TRANSFORM_2D_HP :: GLenum+gl_IMAGE_TRANSFORM_2D_HP = 0x8161+gl_HSL_SATURATION_NV :: GLenum+gl_HSL_SATURATION_NV = 0x92AE+gl_UNSIGNED_SHORT_5_6_5_REV :: GLenum+gl_UNSIGNED_SHORT_5_6_5_REV = 0x8364+gl_LINEAR_CLIPMAP_NEAREST_SGIX :: GLenum+gl_LINEAR_CLIPMAP_NEAREST_SGIX = 0x844F+gl_PREVIOUS_ARB :: GLenum+gl_PREVIOUS_ARB = 0x8578+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4+gl_PERFQUERY_COUNTER_DURATION_NORM_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DURATION_NORM_INTEL = 0x94F1+gl_SLUMINANCE8_EXT :: GLenum+gl_SLUMINANCE8_EXT = 0x8C47+gl_RGBA16F_ARB :: GLenum+gl_RGBA16F_ARB = 0x881A+gl_PIXEL_UNPACK_BUFFER_ARB :: GLenum+gl_PIXEL_UNPACK_BUFFER_ARB = 0x88EC+gl_STENCIL_REF :: GLenum+gl_STENCIL_REF = 0x0B97+gl_TEXTURE_VIEW_MIN_LAYER_EXT :: GLenum+gl_TEXTURE_VIEW_MIN_LAYER_EXT = 0x82DD+gl_HISTOGRAM_RED_SIZE :: GLenum+gl_HISTOGRAM_RED_SIZE = 0x8028+gl_CLIP_PLANE1 :: GLenum+gl_CLIP_PLANE1 = 0x3001+gl_UNKNOWN_CONTEXT_RESET_ARB :: GLenum+gl_UNKNOWN_CONTEXT_RESET_ARB = 0x8255+gl_CMYK_EXT :: GLenum+gl_CMYK_EXT = 0x800C+gl_TEXTURE_COMPRESSED_BLOCK_SIZE :: GLenum+gl_TEXTURE_COMPRESSED_BLOCK_SIZE = 0x82B3+gl_RGBA8I :: GLenum+gl_RGBA8I = 0x8D8E+gl_TEXTURE29_ARB :: GLenum+gl_TEXTURE29_ARB = 0x84DD+gl_STENCIL_BUFFER_BIT2_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT2_QCOM = 0x00040000+gl_RED_MIN_CLAMP_INGR :: GLenum+gl_RED_MIN_CLAMP_INGR = 0x8560+gl_ATC_RGBA_EXPLICIT_ALPHA_AMD :: GLenum+gl_ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8C93+gl_ALL_COMPLETED_NV :: GLenum+gl_ALL_COMPLETED_NV = 0x84F2+gl_PROXY_POST_COLOR_MATRIX_COLOR_TABLE :: GLenum+gl_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = 0x80D5+gl_MATRIX10_ARB :: GLenum+gl_MATRIX10_ARB = 0x88CA+gl_MAP1_VERTEX_ATTRIB1_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB1_4_NV = 0x8661+gl_MAX_4D_TEXTURE_SIZE_SGIS :: GLenum+gl_MAX_4D_TEXTURE_SIZE_SGIS = 0x8138+gl_VIEW_CLASS_32_BITS :: GLenum+gl_VIEW_CLASS_32_BITS = 0x82C8+gl_TEXTURE7_ARB :: GLenum+gl_TEXTURE7_ARB = 0x84C7+gl_DEBUG_TYPE_PERFORMANCE_ARB :: GLenum+gl_DEBUG_TYPE_PERFORMANCE_ARB = 0x8250+gl_ACTIVE_VARIABLES :: GLenum+gl_ACTIVE_VARIABLES = 0x9305+gl_SOURCE2_RGB_EXT :: GLenum+gl_SOURCE2_RGB_EXT = 0x8582+gl_PACK_INVERT_MESA :: GLenum+gl_PACK_INVERT_MESA = 0x8758+gl_QUERY_BY_REGION_WAIT_NV :: GLenum+gl_QUERY_BY_REGION_WAIT_NV = 0x8E15+gl_VERTEX_ID_SWIZZLE_AMD :: GLenum+gl_VERTEX_ID_SWIZZLE_AMD = 0x91A5+gl_SPRITE_TRANSLATION_SGIX :: GLenum+gl_SPRITE_TRANSLATION_SGIX = 0x814B+gl_RENDERBUFFER_HEIGHT :: GLenum+gl_RENDERBUFFER_HEIGHT = 0x8D43+gl_CUBIC_EXT :: GLenum+gl_CUBIC_EXT = 0x8334+gl_TEXTURE19_ARB :: GLenum+gl_TEXTURE19_ARB = 0x84D3+gl_T2F_N3F_V3F :: GLenum+gl_T2F_N3F_V3F = 0x2A2B+gl_ATOMIC_COUNTER_BARRIER_BIT_EXT :: GLenum+gl_ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000+gl_ARRAY_ELEMENT_LOCK_FIRST_EXT :: GLenum+gl_ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x81A8+gl_PROGRAM_RESULT_COMPONENTS_NV :: GLenum+gl_PROGRAM_RESULT_COMPONENTS_NV = 0x8907+gl_MAX_RECTANGLE_TEXTURE_SIZE_ARB :: GLenum+gl_MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8+gl_TRIANGLE_MESH_SUN :: GLenum+gl_TRIANGLE_MESH_SUN = 0x8615+gl_TEXTURE_WRAP_Q_SGIS :: GLenum+gl_TEXTURE_WRAP_Q_SGIS = 0x8137+gl_ATTRIB_ARRAY_SIZE_NV :: GLenum+gl_ATTRIB_ARRAY_SIZE_NV = 0x8623+gl_DEBUG_LOGGED_MESSAGES_AMD :: GLenum+gl_DEBUG_LOGGED_MESSAGES_AMD = 0x9145+gl_BOOL :: GLenum+gl_BOOL = 0x8B56+gl_MIN_LOD_WARNING_AMD :: GLenum+gl_MIN_LOD_WARNING_AMD = 0x919C+gl_PACK_SKIP_PIXELS :: GLenum+gl_PACK_SKIP_PIXELS = 0x0D04+gl_IMAGE_TEXEL_SIZE :: GLenum+gl_IMAGE_TEXEL_SIZE = 0x82A7+gl_SRC_ALPHA :: GLenum+gl_SRC_ALPHA = 0x0302+gl_DEPENDENT_HILO_TEXTURE_2D_NV :: GLenum+gl_DEPENDENT_HILO_TEXTURE_2D_NV = 0x8858+gl_FRAMEBUFFER_ATTACHMENT_LAYERED :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7+gl_PERFQUERY_COUNTER_DATA_UINT32_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DATA_UINT32_INTEL = 0x94F8+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93D1+gl_VERTEX_ARRAY_RANGE_LENGTH_NV :: GLenum+gl_VERTEX_ARRAY_RANGE_LENGTH_NV = 0x851E+gl_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS :: GLenum+gl_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x90C9+gl_POST_CONVOLUTION_GREEN_SCALE :: GLenum+gl_POST_CONVOLUTION_GREEN_SCALE = 0x801D+gl_SEPARATE_ATTRIBS :: GLenum+gl_SEPARATE_ATTRIBS = 0x8C8D+gl_UNSIGNED_BYTE_3_3_2 :: GLenum+gl_UNSIGNED_BYTE_3_3_2 = 0x8032+gl_SCALAR_EXT :: GLenum+gl_SCALAR_EXT = 0x87BE+gl_POINT_SIZE_ARRAY_STRIDE_OES :: GLenum+gl_POINT_SIZE_ARRAY_STRIDE_OES = 0x898B+gl_DOUBLE_MAT3x4 :: GLenum+gl_DOUBLE_MAT3x4 = 0x8F4C+gl_SRC0_RGB :: GLenum+gl_SRC0_RGB = 0x8580+gl_VIEW_CLASS_BPTC_UNORM :: GLenum+gl_VIEW_CLASS_BPTC_UNORM = 0x82D2+gl_SYNC_FLAGS :: GLenum+gl_SYNC_FLAGS = 0x9115+gl_TEXTURE_SWIZZLE_RGBA_EXT :: GLenum+gl_TEXTURE_SWIZZLE_RGBA_EXT = 0x8E46+gl_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX :: GLenum+gl_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C+gl_TEXTURE29 :: GLenum+gl_TEXTURE29 = 0x84DD+gl_MEDIUM_INT :: GLenum+gl_MEDIUM_INT = 0x8DF4+gl_CURRENT_QUERY_ARB :: GLenum+gl_CURRENT_QUERY_ARB = 0x8865+gl_DT_SCALE_NV :: GLenum+gl_DT_SCALE_NV = 0x8711+gl_CLAMP_VERTEX_COLOR_ARB :: GLenum+gl_CLAMP_VERTEX_COLOR_ARB = 0x891A+gl_DEPTH_BUFFER_BIT4_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT4_QCOM = 0x00001000+gl_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 :: GLenum+gl_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x9277+gl_USE_MISSING_GLYPH_NV :: GLenum+gl_USE_MISSING_GLYPH_NV = 0x90AA+gl_MAX_ASYNC_TEX_IMAGE_SGIX :: GLenum+gl_MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F+gl_TESS_CONTROL_TEXTURE :: GLenum+gl_TESS_CONTROL_TEXTURE = 0x829C+gl_DEPTH_FUNC :: GLenum+gl_DEPTH_FUNC = 0x0B74+gl_RG8I :: GLenum+gl_RG8I = 0x8237+gl_MAX_VERTEX_SHADER_VARIANTS_EXT :: GLenum+gl_MAX_VERTEX_SHADER_VARIANTS_EXT = 0x87C6+gl_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB :: GLenum+gl_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2+gl_COMPRESSED_SRGB :: GLenum+gl_COMPRESSED_SRGB = 0x8C48+gl_PROGRAM_BINDING_ARB :: GLenum+gl_PROGRAM_BINDING_ARB = 0x8677+gl_SAMPLER_2D_ARRAY :: GLenum+gl_SAMPLER_2D_ARRAY = 0x8DC1+gl_IMAGE_CUBE_MAP_ARRAY_EXT :: GLenum+gl_IMAGE_CUBE_MAP_ARRAY_EXT = 0x9054+gl_BUFFER_ACCESS_FLAGS :: GLenum+gl_BUFFER_ACCESS_FLAGS = 0x911F+gl_EIGHTH_BIT_ATI :: GLenum+gl_EIGHTH_BIT_ATI = 0x00000020+gl_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV :: GLenum+gl_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868+gl_INT8_VEC4_NV :: GLenum+gl_INT8_VEC4_NV = 0x8FE3+gl_CLEAR_TEXTURE :: GLenum+gl_CLEAR_TEXTURE = 0x9365+gl_TEXTURE_CUBE_MAP_OES :: GLenum+gl_TEXTURE_CUBE_MAP_OES = 0x8513+gl_FONT_NUM_GLYPH_INDICES_BIT_NV :: GLenum+gl_FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000+gl_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV :: GLenum+gl_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x8520+gl_RENDERBUFFER_DEPTH_SIZE :: GLenum+gl_RENDERBUFFER_DEPTH_SIZE = 0x8D54+gl_DOT_PRODUCT_TEXTURE_1D_NV :: GLenum+gl_DOT_PRODUCT_TEXTURE_1D_NV = 0x885C+gl_DOUBLE_VEC3_EXT :: GLenum+gl_DOUBLE_VEC3_EXT = 0x8FFD+gl_VERTEX_ATTRIB_ARRAY_UNIFIED_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E+gl_TEXTURE_LUMINANCE_TYPE :: GLenum+gl_TEXTURE_LUMINANCE_TYPE = 0x8C14+gl_CONTEXT_FLAGS :: GLenum+gl_CONTEXT_FLAGS = 0x821E+gl_NORMAL_ARRAY_BUFFER_BINDING :: GLenum+gl_NORMAL_ARRAY_BUFFER_BINDING = 0x8897+gl_PROGRAM_FORMAT_ARB :: GLenum+gl_PROGRAM_FORMAT_ARB = 0x8876+gl_MOVE_TO_CONTINUES_NV :: GLenum+gl_MOVE_TO_CONTINUES_NV = 0x90B6+gl_LO_BIAS_NV :: GLenum+gl_LO_BIAS_NV = 0x8715+gl_CONVOLUTION_WIDTH_EXT :: GLenum+gl_CONVOLUTION_WIDTH_EXT = 0x8018+gl_FRAGMENT_TEXTURE :: GLenum+gl_FRAGMENT_TEXTURE = 0x829F+gl_NORMAL_BIT_PGI :: GLenum+gl_NORMAL_BIT_PGI = 0x08000000+gl_COMPRESSED_SIGNED_RG11_EAC_OES :: GLenum+gl_COMPRESSED_SIGNED_RG11_EAC_OES = 0x9273+gl_FIRST_VERTEX_CONVENTION :: GLenum+gl_FIRST_VERTEX_CONVENTION = 0x8E4D+gl_ROUNDED_RECT2_NV :: GLenum+gl_ROUNDED_RECT2_NV = 0xEA+gl_POST_COLOR_MATRIX_RED_BIAS :: GLenum+gl_POST_COLOR_MATRIX_RED_BIAS = 0x80B8+gl_UNIFORM_BUFFER :: GLenum+gl_UNIFORM_BUFFER = 0x8A11+gl_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT :: GLenum+gl_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8336+gl_NUM_SAMPLE_COUNTS :: GLenum+gl_NUM_SAMPLE_COUNTS = 0x9380+gl_FOG_OFFSET_VALUE_SGIX :: GLenum+gl_FOG_OFFSET_VALUE_SGIX = 0x8199+gl_DIFFUSE :: GLenum+gl_DIFFUSE = 0x1201+gl_CLIP_PLANE5 :: GLenum+gl_CLIP_PLANE5 = 0x3005+gl_OUTPUT_FOG_EXT :: GLenum+gl_OUTPUT_FOG_EXT = 0x87BD+gl_PROGRAM_ATTRIB_COMPONENTS_NV :: GLenum+gl_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8906+gl_RGBA_SIGNED_COMPONENTS_EXT :: GLenum+gl_RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C+gl_COLOR_ARRAY_EXT :: GLenum+gl_COLOR_ARRAY_EXT = 0x8076+gl_PROXY_TEXTURE_1D_STACK_MESAX :: GLenum+gl_PROXY_TEXTURE_1D_STACK_MESAX = 0x875B+gl_TEXTURE_COORD_ARRAY_POINTER :: GLenum+gl_TEXTURE_COORD_ARRAY_POINTER = 0x8092+gl_MAX_COLOR_ATTACHMENTS :: GLenum+gl_MAX_COLOR_ATTACHMENTS = 0x8CDF+gl_TEXTURE28_ARB :: GLenum+gl_TEXTURE28_ARB = 0x84DC+gl_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX :: GLenum+gl_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403+gl_DEPTH24_STENCIL8_EXT :: GLenum+gl_DEPTH24_STENCIL8_EXT = 0x88F0+gl_MAX :: GLenum+gl_MAX = 0x8008+gl_MODELVIEW12_ARB :: GLenum+gl_MODELVIEW12_ARB = 0x872C+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES = 0x93E9+gl_PIXEL_MAP_I_TO_I_SIZE :: GLenum+gl_PIXEL_MAP_I_TO_I_SIZE = 0x0CB0+gl_NORMAL_ARRAY_LIST_STRIDE_IBM :: GLenum+gl_NORMAL_ARRAY_LIST_STRIDE_IBM = 103081+gl_SOURCE3_RGB_NV :: GLenum+gl_SOURCE3_RGB_NV = 0x8583+gl_ALPHA12_EXT :: GLenum+gl_ALPHA12_EXT = 0x803D+gl_STREAM_COPY_ARB :: GLenum+gl_STREAM_COPY_ARB = 0x88E2+gl_STENCIL_BACK_PASS_DEPTH_FAIL_ATI :: GLenum+gl_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x8802+gl_FRAGMENT_SUBROUTINE_UNIFORM :: GLenum+gl_FRAGMENT_SUBROUTINE_UNIFORM = 0x92F2+gl_IS_ROW_MAJOR :: GLenum+gl_IS_ROW_MAJOR = 0x9300+gl_UNPACK_SKIP_IMAGES :: GLenum+gl_UNPACK_SKIP_IMAGES = 0x806D+gl_NUM_GENERAL_COMBINERS_NV :: GLenum+gl_NUM_GENERAL_COMBINERS_NV = 0x854E+gl_STENCIL_CLEAR_TAG_VALUE_EXT :: GLenum+gl_STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS :: GLenum+gl_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29+gl_DRAW_BUFFER12_ARB :: GLenum+gl_DRAW_BUFFER12_ARB = 0x8831+gl_OFFSET_PROJECTIVE_TEXTURE_2D_NV :: GLenum+gl_OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x8850+gl_VERTEX_ARRAY_OBJECT_EXT :: GLenum+gl_VERTEX_ARRAY_OBJECT_EXT = 0x9154+gl_PN_TRIANGLES_NORMAL_MODE_ATI :: GLenum+gl_PN_TRIANGLES_NORMAL_MODE_ATI = 0x87F3+gl_C4UB_V3F :: GLenum+gl_C4UB_V3F = 0x2A23+gl_REPEAT :: GLenum+gl_REPEAT = 0x2901+gl_MAX_SAMPLE_MASK_WORDS_NV :: GLenum+gl_MAX_SAMPLE_MASK_WORDS_NV = 0x8E59+gl_STORAGE_SHARED_APPLE :: GLenum+gl_STORAGE_SHARED_APPLE = 0x85BF+gl_TEXTURE9_ARB :: GLenum+gl_TEXTURE9_ARB = 0x84C9+gl_QUERY_BUFFER_BINDING :: GLenum+gl_QUERY_BUFFER_BINDING = 0x9193+gl_UNSIGNED_SHORT_8_8_REV_APPLE :: GLenum+gl_UNSIGNED_SHORT_8_8_REV_APPLE = 0x85BB+gl_MAX_FRAGMENT_UNIFORM_VECTORS :: GLenum+gl_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD+gl_UNDEFINED_APPLE :: GLenum+gl_UNDEFINED_APPLE = 0x8A1C+gl_TABLE_TOO_LARGE_EXT :: GLenum+gl_TABLE_TOO_LARGE_EXT = 0x8031+gl_MAX_TESS_PATCH_COMPONENTS_EXT :: GLenum+gl_MAX_TESS_PATCH_COMPONENTS_EXT = 0x8E84+gl_XOR_NV :: GLenum+gl_XOR_NV = 0x1506+gl_MAX_SHADER_BUFFER_ADDRESS_NV :: GLenum+gl_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35+gl_DEBUG_SOURCE_WINDOW_SYSTEM :: GLenum+gl_DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247+gl_UNSIGNALED_APPLE :: GLenum+gl_UNSIGNALED_APPLE = 0x9118+gl_SIGNED_LUMINANCE_NV :: GLenum+gl_SIGNED_LUMINANCE_NV = 0x8701+gl_FOG_DISTANCE_MODE_NV :: GLenum+gl_FOG_DISTANCE_MODE_NV = 0x855A+gl_PN_TRIANGLES_POINT_MODE_ATI :: GLenum+gl_PN_TRIANGLES_POINT_MODE_ATI = 0x87F2+gl_GEOMETRY_SUBROUTINE_UNIFORM :: GLenum+gl_GEOMETRY_SUBROUTINE_UNIFORM = 0x92F1+gl_NEGATIVE_Z_EXT :: GLenum+gl_NEGATIVE_Z_EXT = 0x87DB+gl_PIXEL_MAP_R_TO_R :: GLenum+gl_PIXEL_MAP_R_TO_R = 0x0C76+gl_OBJECT_LINK_STATUS_ARB :: GLenum+gl_OBJECT_LINK_STATUS_ARB = 0x8B82+gl_NUM_ACTIVE_VARIABLES :: GLenum+gl_NUM_ACTIVE_VARIABLES = 0x9304+gl_BUFFER_UPDATE_BARRIER_BIT_EXT :: GLenum+gl_BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200+gl_IMAGE_CUBE_EXT :: GLenum+gl_IMAGE_CUBE_EXT = 0x9050+gl_RGB_INTEGER_EXT :: GLenum+gl_RGB_INTEGER_EXT = 0x8D98+gl_DRAW_BUFFER13_EXT :: GLenum+gl_DRAW_BUFFER13_EXT = 0x8832+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0+gl_SYNC_GPU_COMMANDS_COMPLETE_APPLE :: GLenum+gl_SYNC_GPU_COMMANDS_COMPLETE_APPLE = 0x9117+gl_RGB_SCALE :: GLenum+gl_RGB_SCALE = 0x8573+gl_DOUBLE_MAT3x4_EXT :: GLenum+gl_DOUBLE_MAT3x4_EXT = 0x8F4C+gl_EXP :: GLenum+gl_EXP = 0x0800+gl_PERFMON_RESULT_AVAILABLE_AMD :: GLenum+gl_PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4+gl_STENCIL_VALUE_MASK :: GLenum+gl_STENCIL_VALUE_MASK = 0x0B93+gl_COLOR_ATTACHMENT12_NV :: GLenum+gl_COLOR_ATTACHMENT12_NV = 0x8CEC+gl_VERTEX_STREAM2_ATI :: GLenum+gl_VERTEX_STREAM2_ATI = 0x876E+gl_MAP_COHERENT_BIT :: GLenum+gl_MAP_COHERENT_BIT = 0x0080+gl_COMPRESSED_SIGNED_RG_RGTC2 :: GLenum+gl_COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE+gl_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER :: GLenum+gl_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x90EC+gl_FRAGMENT_PROGRAM_ARB :: GLenum+gl_FRAGMENT_PROGRAM_ARB = 0x8804+gl_COLOR_BUFFER_BIT6_QCOM :: GLenum+gl_COLOR_BUFFER_BIT6_QCOM = 0x00000040+gl_FLOAT_32_UNSIGNED_INT_24_8_REV_NV :: GLenum+gl_FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x8DAD+gl_WIDE_LINE_HINT_PGI :: GLenum+gl_WIDE_LINE_HINT_PGI = 0x1A222+gl_FRAGMENT_LIGHT4_SGIX :: GLenum+gl_FRAGMENT_LIGHT4_SGIX = 0x8410+gl_RGBA_FLOAT_MODE_ATI :: GLenum+gl_RGBA_FLOAT_MODE_ATI = 0x8820+gl_UNSIGNED_INT_10F_11F_11F_REV :: GLenum+gl_UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B+gl_MODELVIEW1_STACK_DEPTH_EXT :: GLenum+gl_MODELVIEW1_STACK_DEPTH_EXT = 0x8502+gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24+gl_POINT_SIZE_MAX :: GLenum+gl_POINT_SIZE_MAX = 0x8127+gl_ALPHA_TEST_REF_QCOM :: GLenum+gl_ALPHA_TEST_REF_QCOM = 0x0BC2+gl_RELATIVE_HORIZONTAL_LINE_TO_NV :: GLenum+gl_RELATIVE_HORIZONTAL_LINE_TO_NV = 0x07+gl_FILTER4_SGIS :: GLenum+gl_FILTER4_SGIS = 0x8146+gl_TEXTURE4 :: GLenum+gl_TEXTURE4 = 0x84C4+gl_INDEX_MATERIAL_EXT :: GLenum+gl_INDEX_MATERIAL_EXT = 0x81B8+gl_FETCH_PER_SAMPLE_ARM :: GLenum+gl_FETCH_PER_SAMPLE_ARM = 0x8F65+gl_VARIANT_ARRAY_TYPE_EXT :: GLenum+gl_VARIANT_ARRAY_TYPE_EXT = 0x87E7+gl_ALPHA_MAX_SGIX :: GLenum+gl_ALPHA_MAX_SGIX = 0x8321+gl_NUM_INSTRUCTIONS_TOTAL_ATI :: GLenum+gl_NUM_INSTRUCTIONS_TOTAL_ATI = 0x8972+gl_TEXTURE_IMAGE_TYPE :: GLenum+gl_TEXTURE_IMAGE_TYPE = 0x8290+gl_MAX_TESS_CONTROL_IMAGE_UNIFORMS :: GLenum+gl_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x90CB+gl_DRAW_BUFFER11_NV :: GLenum+gl_DRAW_BUFFER11_NV = 0x8830+gl_SURFACE_STATE_NV :: GLenum+gl_SURFACE_STATE_NV = 0x86EB+gl_BLEND_SRC_RGB :: GLenum+gl_BLEND_SRC_RGB = 0x80C9+gl_OBJECT_ACTIVE_UNIFORMS_ARB :: GLenum+gl_OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86+gl_COLORDODGE_NV :: GLenum+gl_COLORDODGE_NV = 0x9299+gl_PRIMITIVES_GENERATED_NV :: GLenum+gl_PRIMITIVES_GENERATED_NV = 0x8C87+gl_IMAGE_2D_ARRAY :: GLenum+gl_IMAGE_2D_ARRAY = 0x9053+gl_LOSE_CONTEXT_ON_RESET_ARB :: GLenum+gl_LOSE_CONTEXT_ON_RESET_ARB = 0x8252+gl_RG_INTEGER :: GLenum+gl_RG_INTEGER = 0x8228+gl_UNSIGNED_INT_SAMPLER_1D_EXT :: GLenum+gl_UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1+gl_REFLECTION_MAP_ARB :: GLenum+gl_REFLECTION_MAP_ARB = 0x8512+gl_NORMAL_ARRAY_TYPE_EXT :: GLenum+gl_NORMAL_ARRAY_TYPE_EXT = 0x807E+gl_BLUE_BITS :: GLenum+gl_BLUE_BITS = 0x0D54+gl_ATOMIC_COUNTER_BARRIER_BIT :: GLenum+gl_ATOMIC_COUNTER_BARRIER_BIT = 0x00001000+gl_INTENSITY8I_EXT :: GLenum+gl_INTENSITY8I_EXT = 0x8D91+gl_TEXTURE_BINDING_RECTANGLE_ARB :: GLenum+gl_TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6+gl_SCALE_BY_TWO_NV :: GLenum+gl_SCALE_BY_TWO_NV = 0x853E+gl_PACK_IMAGE_HEIGHT :: GLenum+gl_PACK_IMAGE_HEIGHT = 0x806C+gl_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL :: GLenum+gl_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = 0x94FF+gl_DEPTH_COMPONENT24_SGIX :: GLenum+gl_DEPTH_COMPONENT24_SGIX = 0x81A6+gl_NUM_FRAGMENT_CONSTANTS_ATI :: GLenum+gl_NUM_FRAGMENT_CONSTANTS_ATI = 0x896F+gl_EDGE_FLAG_ARRAY_STRIDE_EXT :: GLenum+gl_EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT :: GLenum+gl_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = 0x900A+gl_SAMPLE_ALPHA_TO_COVERAGE_ARB :: GLenum+gl_SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E+gl_UNPACK_SKIP_IMAGES_EXT :: GLenum+gl_UNPACK_SKIP_IMAGES_EXT = 0x806D+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL :: GLenum+gl_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2+gl_RGBA8_OES :: GLenum+gl_RGBA8_OES = 0x8058+gl_STENCIL_INDEX8_OES :: GLenum+gl_STENCIL_INDEX8_OES = 0x8D48+gl_MAX_SPARSE_3D_TEXTURE_SIZE_AMD :: GLenum+gl_MAX_SPARSE_3D_TEXTURE_SIZE_AMD = 0x9199+gl_COMPUTE_SHADER :: GLenum+gl_COMPUTE_SHADER = 0x91B9+gl_QUERY_WAIT_NV :: GLenum+gl_QUERY_WAIT_NV = 0x8E13+gl_TEXTURE_COMPARE_FUNC_ARB :: GLenum+gl_TEXTURE_COMPARE_FUNC_ARB = 0x884D+gl_SCREEN_COORDINATES_REND :: GLenum+gl_SCREEN_COORDINATES_REND = 0x8490+gl_DRAW_BUFFER4_EXT :: GLenum+gl_DRAW_BUFFER4_EXT = 0x8829+gl_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT :: GLenum+gl_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8337+gl_TOP_LEVEL_ARRAY_SIZE :: GLenum+gl_TOP_LEVEL_ARRAY_SIZE = 0x930C+gl_STATIC_COPY_ARB :: GLenum+gl_STATIC_COPY_ARB = 0x88E6+gl_MAP1_TANGENT_EXT :: GLenum+gl_MAP1_TANGENT_EXT = 0x8444+gl_MAP2_VERTEX_ATTRIB11_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB11_4_NV = 0x867B+gl_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX :: GLenum+gl_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX = 0x8187+gl_DRAW_BUFFER9 :: GLenum+gl_DRAW_BUFFER9 = 0x882E+gl_COMPRESSED_INTENSITY_ARB :: GLenum+gl_COMPRESSED_INTENSITY_ARB = 0x84EC+gl_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x8516+gl_MATRIX19_ARB :: GLenum+gl_MATRIX19_ARB = 0x88D3+gl_MAX_MULTIVIEW_BUFFERS_EXT :: GLenum+gl_MAX_MULTIVIEW_BUFFERS_EXT = 0x90F2+gl_CONJOINT_NV :: GLenum+gl_CONJOINT_NV = 0x9284+gl_INTENSITY_SNORM :: GLenum+gl_INTENSITY_SNORM = 0x9013+gl_DRAW_BUFFER14 :: GLenum+gl_DRAW_BUFFER14 = 0x8833+gl_MAX_PROGRAM_INSTRUCTIONS_ARB :: GLenum+gl_MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1+gl_TEXTURE_BINDING_RECTANGLE :: GLenum+gl_TEXTURE_BINDING_RECTANGLE = 0x84F6+gl_DEBUG_SOURCE_SHADER_COMPILER_ARB :: GLenum+gl_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR :: GLenum+gl_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93DD+gl_MULTISAMPLE_EXT :: GLenum+gl_MULTISAMPLE_EXT = 0x809D+gl_NEAREST_MIPMAP_NEAREST :: GLenum+gl_NEAREST_MIPMAP_NEAREST = 0x2700+gl_COLOR_ATTACHMENT7_EXT :: GLenum+gl_COLOR_ATTACHMENT7_EXT = 0x8CE7+gl_STENCIL_BUFFER_BIT6_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT6_QCOM = 0x00400000+gl_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x8C85+gl_REG_29_ATI :: GLenum+gl_REG_29_ATI = 0x893E+gl_COVERAGE_SAMPLES_NV :: GLenum+gl_COVERAGE_SAMPLES_NV = 0x8ED4+gl_RELEASED_APPLE :: GLenum+gl_RELEASED_APPLE = 0x8A19+gl_ALPHA_TEST_FUNC :: GLenum+gl_ALPHA_TEST_FUNC = 0x0BC1+gl_DRAW_BUFFER2 :: GLenum+gl_DRAW_BUFFER2 = 0x8827+gl_VERTEX_PROGRAM_BINDING_NV :: GLenum+gl_VERTEX_PROGRAM_BINDING_NV = 0x864A+gl_IMAGE_2D_RECT :: GLenum+gl_IMAGE_2D_RECT = 0x904F+gl_COLOR_TABLE_BIAS_SGI :: GLenum+gl_COLOR_TABLE_BIAS_SGI = 0x80D7+gl_CLIENT_ACTIVE_TEXTURE_ARB :: GLenum+gl_CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1+gl_CURRENT_MATRIX_INDEX_ARB :: GLenum+gl_CURRENT_MATRIX_INDEX_ARB = 0x8845+gl_TEXTURE_COORD_ARRAY_STRIDE :: GLenum+gl_TEXTURE_COORD_ARRAY_STRIDE = 0x808A+gl_FILTER :: GLenum+gl_FILTER = 0x829A+gl_MAX_MODELVIEW_STACK_DEPTH :: GLenum+gl_MAX_MODELVIEW_STACK_DEPTH = 0x0D36+gl_VERTEX_ATTRIB_ARRAY5_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY5_NV = 0x8655+gl_UNSIGNED_BYTE :: GLenum+gl_UNSIGNED_BYTE = 0x1401+gl_DETAIL_TEXTURE_2D_SGIS :: GLenum+gl_DETAIL_TEXTURE_2D_SGIS = 0x8095+gl_POST_CONVOLUTION_BLUE_BIAS :: GLenum+gl_POST_CONVOLUTION_BLUE_BIAS = 0x8022+gl_TYPE :: GLenum+gl_TYPE = 0x92FA+gl_COMPRESSED_RG :: GLenum+gl_COMPRESSED_RG = 0x8226+gl_4PASS_1_SGIS :: GLenum+gl_4PASS_1_SGIS = 0x80A5+gl_SOURCE2_RGB :: GLenum+gl_SOURCE2_RGB = 0x8582+gl_TEXTURE_MAX_LOD :: GLenum+gl_TEXTURE_MAX_LOD = 0x813B+gl_EYE_DISTANCE_TO_LINE_SGIS :: GLenum+gl_EYE_DISTANCE_TO_LINE_SGIS = 0x81F2+gl_LUMINANCE_ALPHA32F_EXT :: GLenum+gl_LUMINANCE_ALPHA32F_EXT = 0x8819+gl_MATRIX_INDEX_ARRAY_STRIDE_ARB :: GLenum+gl_MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848+gl_COLOR_ATTACHMENT4 :: GLenum+gl_COLOR_ATTACHMENT4 = 0x8CE4+gl_INDEX_ARRAY_BUFFER_BINDING :: GLenum+gl_INDEX_ARRAY_BUFFER_BINDING = 0x8899+gl_UNSIGNED_INT_SAMPLER_2D_ARRAY :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7+gl_PIXEL_TILE_BEST_ALIGNMENT_SGIX :: GLenum+gl_PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E+gl_SPECULAR :: GLenum+gl_SPECULAR = 0x1202+gl_PACK_IMAGE_DEPTH_SGIS :: GLenum+gl_PACK_IMAGE_DEPTH_SGIS = 0x8131+gl_PLUS_CLAMPED_NV :: GLenum+gl_PLUS_CLAMPED_NV = 0x92B1+gl_INVALID_FRAMEBUFFER_OPERATION :: GLenum+gl_INVALID_FRAMEBUFFER_OPERATION = 0x0506+gl_RG :: GLenum+gl_RG = 0x8227+gl_COLOR_ATTACHMENT11_NV :: GLenum+gl_COLOR_ATTACHMENT11_NV = 0x8CEB+gl_UNPACK_SKIP_PIXELS :: GLenum+gl_UNPACK_SKIP_PIXELS = 0x0CF4+gl_SAMPLE_BUFFERS :: GLenum+gl_SAMPLE_BUFFERS = 0x80A8+gl_DRAW_BUFFER1_ARB :: GLenum+gl_DRAW_BUFFER1_ARB = 0x8826+gl_COMBINER6_NV :: GLenum+gl_COMBINER6_NV = 0x8556+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES :: GLenum+gl_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 0x851A+gl_TEXTURE_ENV :: GLenum+gl_TEXTURE_ENV = 0x2300+gl_QUAD_MESH_SUN :: GLenum+gl_QUAD_MESH_SUN = 0x8614+gl_REFERENCED_BY_TESS_CONTROL_SHADER_EXT :: GLenum+gl_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = 0x9307+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV :: GLenum+gl_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B+gl_TIMEOUT_EXPIRED :: GLenum+gl_TIMEOUT_EXPIRED = 0x911B+gl_FLOAT_MAT4x2_NV :: GLenum+gl_FLOAT_MAT4x2_NV = 0x8B69+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES :: GLenum+gl_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x910D+gl_COMBINER1_NV :: GLenum+gl_COMBINER1_NV = 0x8551+gl_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB :: GLenum+gl_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7+gl_RENDERBUFFER_SAMPLES_ANGLE :: GLenum+gl_RENDERBUFFER_SAMPLES_ANGLE = 0x8CAB+gl_VERTEX_ARRAY_SIZE :: GLenum+gl_VERTEX_ARRAY_SIZE = 0x807A+gl_TEXTURE2 :: GLenum+gl_TEXTURE2 = 0x84C2+gl_RELATIVE_MOVE_TO_NV :: GLenum+gl_RELATIVE_MOVE_TO_NV = 0x03+gl_ALPHA_TEST_FUNC_QCOM :: GLenum+gl_ALPHA_TEST_FUNC_QCOM = 0x0BC1+gl_INNOCENT_CONTEXT_RESET_KHR :: GLenum+gl_INNOCENT_CONTEXT_RESET_KHR = 0x8254+gl_MAP1_VERTEX_ATTRIB5_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB5_4_NV = 0x8665+gl_SAMPLER_1D_SHADOW :: GLenum+gl_SAMPLER_1D_SHADOW = 0x8B61+gl_TEXTURE_1D_ARRAY_EXT :: GLenum+gl_TEXTURE_1D_ARRAY_EXT = 0x8C18+gl_STENCIL_INDEX :: GLenum+gl_STENCIL_INDEX = 0x1901+gl_SOURCE2_ALPHA_EXT :: GLenum+gl_SOURCE2_ALPHA_EXT = 0x858A+gl_NORMAL_MAP_EXT :: GLenum+gl_NORMAL_MAP_EXT = 0x8511+gl_FOG_COORDINATE_SOURCE_EXT :: GLenum+gl_FOG_COORDINATE_SOURCE_EXT = 0x8450+gl_TEXTURE_FILTER_CONTROL :: GLenum+gl_TEXTURE_FILTER_CONTROL = 0x8500+gl_REPLACE_OLDEST_SUN :: GLenum+gl_REPLACE_OLDEST_SUN = 0x0003+gl_PROGRAM_ADDRESS_REGISTERS_ARB :: GLenum+gl_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0+gl_2PASS_1_EXT :: GLenum+gl_2PASS_1_EXT = 0x80A3+gl_LIGHT_ENV_MODE_SGIX :: GLenum+gl_LIGHT_ENV_MODE_SGIX = 0x8407+gl_OP_FRAC_EXT :: GLenum+gl_OP_FRAC_EXT = 0x8789+gl_PROXY_TEXTURE_RECTANGLE_NV :: GLenum+gl_PROXY_TEXTURE_RECTANGLE_NV = 0x84F7+gl_RENDERBUFFER :: GLenum+gl_RENDERBUFFER = 0x8D41+gl_MAP2_TEXTURE_COORD_4 :: GLenum+gl_MAP2_TEXTURE_COORD_4 = 0x0DB6+gl_TEXTURE_BORDER_COLOR_EXT :: GLenum+gl_TEXTURE_BORDER_COLOR_EXT = 0x1004+gl_SEPARABLE_2D :: GLenum+gl_SEPARABLE_2D = 0x8012+gl_COMPRESSED_SRGB_S3TC_DXT1_EXT :: GLenum+gl_COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C+gl_DRAW_BUFFER0_ATI :: GLenum+gl_DRAW_BUFFER0_ATI = 0x8825+gl_TEXTURE_IMMUTABLE_LEVELS :: GLenum+gl_TEXTURE_IMMUTABLE_LEVELS = 0x82DF+gl_E_TIMES_F_NV :: GLenum+gl_E_TIMES_F_NV = 0x8531+gl_MATRIX24_ARB :: GLenum+gl_MATRIX24_ARB = 0x88D8+gl_PIXEL_GROUP_COLOR_SGIS :: GLenum+gl_PIXEL_GROUP_COLOR_SGIS = 0x8356+gl_CURRENT_RASTER_COLOR :: GLenum+gl_CURRENT_RASTER_COLOR = 0x0B04+gl_DOUBLE_MAT2x4_EXT :: GLenum+gl_DOUBLE_MAT2x4_EXT = 0x8F4A+gl_BUMP_TEX_UNITS_ATI :: GLenum+gl_BUMP_TEX_UNITS_ATI = 0x8778+gl_FOG_COORDINATE_ARRAY_EXT :: GLenum+gl_FOG_COORDINATE_ARRAY_EXT = 0x8457+gl_ALWAYS :: GLenum+gl_ALWAYS = 0x0207+gl_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES :: GLenum+gl_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x8E5B+gl_MAP2_VERTEX_4 :: GLenum+gl_MAP2_VERTEX_4 = 0x0DB8+gl_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG :: GLenum+gl_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03+gl_MODULATE_SIGNED_ADD_ATI :: GLenum+gl_MODULATE_SIGNED_ADD_ATI = 0x8745+gl_RG8 :: GLenum+gl_RG8 = 0x822B+gl_ACTIVE_UNIFORM_BLOCKS :: GLenum+gl_ACTIVE_UNIFORM_BLOCKS = 0x8A36+gl_MAX_SPARSE_TEXTURE_SIZE_AMD :: GLenum+gl_MAX_SPARSE_TEXTURE_SIZE_AMD = 0x9198+gl_COLOR_ATTACHMENT11_EXT :: GLenum+gl_COLOR_ATTACHMENT11_EXT = 0x8CEB+gl_POST_CONVOLUTION_BLUE_BIAS_EXT :: GLenum+gl_POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022+gl_BUFFER_OBJECT_APPLE :: GLenum+gl_BUFFER_OBJECT_APPLE = 0x85B3+gl_UNIFORM_TYPE :: GLenum+gl_UNIFORM_TYPE = 0x8A37+gl_VARIABLE_E_NV :: GLenum+gl_VARIABLE_E_NV = 0x8527+gl_MAX_COMPUTE_ATOMIC_COUNTERS :: GLenum+gl_MAX_COMPUTE_ATOMIC_COUNTERS = 0x8265+gl_COMPRESSED_RED_RGTC1 :: GLenum+gl_COMPRESSED_RED_RGTC1 = 0x8DBB+gl_LUMINANCE_INTEGER_EXT :: GLenum+gl_LUMINANCE_INTEGER_EXT = 0x8D9C+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY :: GLenum+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE :: GLenum+gl_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88FE+gl_R16F_EXT :: GLenum+gl_R16F_EXT = 0x822D+gl_MATRIX4_ARB :: GLenum+gl_MATRIX4_ARB = 0x88C4+gl_MATRIX_INDEX_ARRAY_SIZE_OES :: GLenum+gl_MATRIX_INDEX_ARRAY_SIZE_OES = 0x8846+gl_POLYGON_STIPPLE :: GLenum+gl_POLYGON_STIPPLE = 0x0B42+gl_DUAL_ALPHA12_SGIS :: GLenum+gl_DUAL_ALPHA12_SGIS = 0x8112+gl_PIXEL_MAP_I_TO_B :: GLenum+gl_PIXEL_MAP_I_TO_B = 0x0C74+gl_VERTEX_ATTRIB_ARRAY6_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY6_NV = 0x8656+gl_REG_21_ATI :: GLenum+gl_REG_21_ATI = 0x8936+gl_PERFMON_RESULT_SIZE_AMD :: GLenum+gl_PERFMON_RESULT_SIZE_AMD = 0x8BC5+gl_ALPHA8_OES :: GLenum+gl_ALPHA8_OES = 0x803C+gl_OBJECT_BUFFER_USAGE_ATI :: GLenum+gl_OBJECT_BUFFER_USAGE_ATI = 0x8765+gl_PATH_STENCIL_FUNC_NV :: GLenum+gl_PATH_STENCIL_FUNC_NV = 0x90B7+gl_TEXTURE12_ARB :: GLenum+gl_TEXTURE12_ARB = 0x84CC+gl_DEPTH_COMPONENT16_OES :: GLenum+gl_DEPTH_COMPONENT16_OES = 0x81A5+gl_MODELVIEW20_ARB :: GLenum+gl_MODELVIEW20_ARB = 0x8734+gl_ALPHA12 :: GLenum+gl_ALPHA12 = 0x803D+gl_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT :: GLenum+gl_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = 0x919F+gl_MODULATE_ADD_ATI :: GLenum+gl_MODULATE_ADD_ATI = 0x8744+gl_CLAMP_TO_BORDER_EXT :: GLenum+gl_CLAMP_TO_BORDER_EXT = 0x812D+gl_CONSTANT_EXT :: GLenum+gl_CONSTANT_EXT = 0x8576+gl_OP_LOG_BASE_2_EXT :: GLenum+gl_OP_LOG_BASE_2_EXT = 0x8792+gl_SET_AMD :: GLenum+gl_SET_AMD = 0x874A+gl_ONE_MINUS_SRC_ALPHA :: GLenum+gl_ONE_MINUS_SRC_ALPHA = 0x0303+gl_COMPRESSED_LUMINANCE_ALPHA_ARB :: GLenum+gl_COMPRESSED_LUMINANCE_ALPHA_ARB = 0x84EB+gl_MAX_SERVER_WAIT_TIMEOUT_APPLE :: GLenum+gl_MAX_SERVER_WAIT_TIMEOUT_APPLE = 0x9111+gl_LINE_TOKEN :: GLenum+gl_LINE_TOKEN = 0x0702+gl_PROXY_POST_CONVOLUTION_COLOR_TABLE :: GLenum+gl_PROXY_POST_CONVOLUTION_COLOR_TABLE = 0x80D4+gl_TEXTURE_BINDING_3D :: GLenum+gl_TEXTURE_BINDING_3D = 0x806A+gl_INTENSITY16I_EXT :: GLenum+gl_INTENSITY16I_EXT = 0x8D8B+gl_DEPENDENT_AR_TEXTURE_2D_NV :: GLenum+gl_DEPENDENT_AR_TEXTURE_2D_NV = 0x86E9+gl_CURRENT_RASTER_NORMAL_SGIX :: GLenum+gl_CURRENT_RASTER_NORMAL_SGIX = 0x8406+gl_TEXTURE_INTENSITY_TYPE :: GLenum+gl_TEXTURE_INTENSITY_TYPE = 0x8C15+gl_TEXTURE_STORAGE_SPARSE_BIT_AMD :: GLenum+gl_TEXTURE_STORAGE_SPARSE_BIT_AMD = 0x00000001+gl_RENDERBUFFER_INTERNAL_FORMAT_EXT :: GLenum+gl_RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44+gl_VERTEX_ATTRIB_ARRAY1_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY1_NV = 0x8651+gl_TEXTURE_RED_SIZE :: GLenum+gl_TEXTURE_RED_SIZE = 0x805C+gl_CURRENT_COLOR :: GLenum+gl_CURRENT_COLOR = 0x0B00+gl_COMPRESSED_RGBA_ASTC_8x5_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93B5+gl_STENCIL_BUFFER_BIT7_QCOM :: GLenum+gl_STENCIL_BUFFER_BIT7_QCOM = 0x00800000+gl_CLIP_PLANE0_IMG :: GLenum+gl_CLIP_PLANE0_IMG = 0x3000+gl_ALPHA_TEST_REF :: GLenum+gl_ALPHA_TEST_REF = 0x0BC2+gl_POINT_SMOOTH :: GLenum+gl_POINT_SMOOTH = 0x0B10+gl_WEIGHT_ARRAY_SIZE_OES :: GLenum+gl_WEIGHT_ARRAY_SIZE_OES = 0x86AB+gl_DECODE_EXT :: GLenum+gl_DECODE_EXT = 0x8A49+gl_SPARSE_BUFFER_PAGE_SIZE_ARB :: GLenum+gl_SPARSE_BUFFER_PAGE_SIZE_ARB = 0x82F8+gl_CLIENT_ATTRIB_STACK_DEPTH :: GLenum+gl_CLIENT_ATTRIB_STACK_DEPTH = 0x0BB1+gl_TEXTURE_BINDING_EXTERNAL_OES :: GLenum+gl_TEXTURE_BINDING_EXTERNAL_OES = 0x8D67+gl_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT :: GLenum+gl_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = 0x8E8A+gl_RENDERBUFFER_STENCIL_SIZE_OES :: GLenum+gl_RENDERBUFFER_STENCIL_SIZE_OES = 0x8D55+gl_POST_COLOR_MATRIX_ALPHA_BIAS :: GLenum+gl_POST_COLOR_MATRIX_ALPHA_BIAS = 0x80BB+gl_COMPARE_REF_DEPTH_TO_TEXTURE_EXT :: GLenum+gl_COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E+gl_HSL_LUMINOSITY_KHR :: GLenum+gl_HSL_LUMINOSITY_KHR = 0x92B0+gl_MAX_VERTEX_STREAMS_ATI :: GLenum+gl_MAX_VERTEX_STREAMS_ATI = 0x876B+gl_PERFQUERY_COUNTER_THROUGHPUT_INTEL :: GLenum+gl_PERFQUERY_COUNTER_THROUGHPUT_INTEL = 0x94F3+gl_COMPRESSED_SIGNED_RED_RGTC1_EXT :: GLenum+gl_COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC+gl_DEPTH_COMPONENT32_OES :: GLenum+gl_DEPTH_COMPONENT32_OES = 0x81A7+gl_CON_3_ATI :: GLenum+gl_CON_3_ATI = 0x8944+gl_COMPRESSED_RGBA_S3TC_DXT1_EXT :: GLenum+gl_COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1+gl_MATRIX6_ARB :: GLenum+gl_MATRIX6_ARB = 0x88C6+gl_MAP2_VERTEX_ATTRIB5_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB5_4_NV = 0x8675+gl_LINE_WIDTH_RANGE :: GLenum+gl_LINE_WIDTH_RANGE = 0x0B22+gl_GLYPH_VERTICAL_BEARING_X_BIT_NV :: GLenum+gl_GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x20+gl_FOG_COORDINATE_ARRAY :: GLenum+gl_FOG_COORDINATE_ARRAY = 0x8457+gl_VERTEX_ARRAY_RANGE_LENGTH_APPLE :: GLenum+gl_VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E+gl_CLAMP_FRAGMENT_COLOR :: GLenum+gl_CLAMP_FRAGMENT_COLOR = 0x891B+gl_COMPRESSED_RGBA_ASTC_10x5_KHR :: GLenum+gl_COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93B8+gl_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB :: GLenum+gl_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D+gl_COLOR_BUFFER_BIT4_QCOM :: GLenum+gl_COLOR_BUFFER_BIT4_QCOM = 0x00000010+gl_TEXTURE13 :: GLenum+gl_TEXTURE13 = 0x84CD+gl_MAX_DEBUG_MESSAGE_LENGTH_AMD :: GLenum+gl_MAX_DEBUG_MESSAGE_LENGTH_AMD = 0x9143+gl_EVAL_VERTEX_ATTRIB0_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB0_NV = 0x86C6+gl_ALPHA_MIN_CLAMP_INGR :: GLenum+gl_ALPHA_MIN_CLAMP_INGR = 0x8563+gl_SUB_ATI :: GLenum+gl_SUB_ATI = 0x8965+gl_SECONDARY_COLOR_ARRAY_LIST_IBM :: GLenum+gl_SECONDARY_COLOR_ARRAY_LIST_IBM = 103077+gl_RGBA_INTEGER_MODE_EXT :: GLenum+gl_RGBA_INTEGER_MODE_EXT = 0x8D9E+gl_DEBUG_TYPE_MARKER_KHR :: GLenum+gl_DEBUG_TYPE_MARKER_KHR = 0x8268+gl_VERTEX_ATTRIB_ARRAY14_NV :: GLenum+gl_VERTEX_ATTRIB_ARRAY14_NV = 0x865E+gl_TEXTURE_MIN_LOD :: GLenum+gl_TEXTURE_MIN_LOD = 0x813A+gl_INDEX_TEST_REF_EXT :: GLenum+gl_INDEX_TEST_REF_EXT = 0x81B7+gl_AUX0 :: GLenum+gl_AUX0 = 0x0409+gl_UNSIGNED_INT_IMAGE_2D_RECT :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_RECT = 0x9065+gl_2_BYTES :: GLenum+gl_2_BYTES = 0x1407+gl_UNDEFINED_VERTEX :: GLenum+gl_UNDEFINED_VERTEX = 0x8260+gl_LINE_STIPPLE_PATTERN :: GLenum+gl_LINE_STIPPLE_PATTERN = 0x0B25+gl_FRAMEBUFFER_SRGB_CAPABLE_EXT :: GLenum+gl_FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA+gl_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB :: GLenum+gl_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = 0x8F9F+gl_UNSIGNED_INT_SAMPLER_1D_ARRAY :: GLenum+gl_UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6+gl_LOAD :: GLenum+gl_LOAD = 0x0101+gl_SIGNED_ALPHA8_NV :: GLenum+gl_SIGNED_ALPHA8_NV = 0x8706+gl_STENCIL_INDEX8_EXT :: GLenum+gl_STENCIL_INDEX8_EXT = 0x8D48+gl_VIEW_CLASS_24_BITS :: GLenum+gl_VIEW_CLASS_24_BITS = 0x82C9+gl_SHADER_STORAGE_BARRIER_BIT :: GLenum+gl_SHADER_STORAGE_BARRIER_BIT = 0x00002000+gl_UNSIGNED_INT_SAMPLER_BUFFER_AMD :: GLenum+gl_UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x9003+gl_IMAGE_BINDING_LAYER :: GLenum+gl_IMAGE_BINDING_LAYER = 0x8F3D+gl_MULTISAMPLE_FILTER_HINT_NV :: GLenum+gl_MULTISAMPLE_FILTER_HINT_NV = 0x8534+gl_SPARE1_NV :: GLenum+gl_SPARE1_NV = 0x852F+gl_MAP_READ_BIT_EXT :: GLenum+gl_MAP_READ_BIT_EXT = 0x0001+gl_COMPRESSED_LUMINANCE :: GLenum+gl_COMPRESSED_LUMINANCE = 0x84EA+gl_COMPRESSED_TEXTURE_FORMATS :: GLenum+gl_COMPRESSED_TEXTURE_FORMATS = 0x86A3+gl_UNIFORM_IS_ROW_MAJOR :: GLenum+gl_UNIFORM_IS_ROW_MAJOR = 0x8A3E+gl_OFFSET_TEXTURE_2D_SCALE_NV :: GLenum+gl_OFFSET_TEXTURE_2D_SCALE_NV = 0x86E2+gl_RGBA_DXT5_S3TC :: GLenum+gl_RGBA_DXT5_S3TC = 0x83A4+gl_MAX_PROGRAM_LOCAL_PARAMETERS_ARB :: GLenum+gl_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4+gl_MAX_UNIFORM_BUFFER_BINDINGS :: GLenum+gl_MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F+gl_RGB16UI_EXT :: GLenum+gl_RGB16UI_EXT = 0x8D77+gl_TEXTURE_COMPARE_OPERATOR_SGIX :: GLenum+gl_TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B+gl_VIDEO_BUFFER_PITCH_NV :: GLenum+gl_VIDEO_BUFFER_PITCH_NV = 0x9028+gl_RELATIVE_RECT_NV :: GLenum+gl_RELATIVE_RECT_NV = 0xF7+gl_DRAW_BUFFER8_ATI :: GLenum+gl_DRAW_BUFFER8_ATI = 0x882D+gl_SRC_COLOR :: GLenum+gl_SRC_COLOR = 0x0300+gl_SHADER_OBJECT_EXT :: GLenum+gl_SHADER_OBJECT_EXT = 0x8B48+gl_GUILTY_CONTEXT_RESET_KHR :: GLenum+gl_GUILTY_CONTEXT_RESET_KHR = 0x8253+gl_EVAL_VERTEX_ATTRIB5_NV :: GLenum+gl_EVAL_VERTEX_ATTRIB5_NV = 0x86CB+gl_PALETTE4_RGBA4_OES :: GLenum+gl_PALETTE4_RGBA4_OES = 0x8B93+gl_LUMINANCE12_EXT :: GLenum+gl_LUMINANCE12_EXT = 0x8041+gl_DONT_CARE :: GLenum+gl_DONT_CARE = 0x1100+gl_TEXTURE_BUFFER :: GLenum+gl_TEXTURE_BUFFER = 0x8C2A+gl_COMPRESSED_RGBA_ASTC_4x4x4_OES :: GLenum+gl_COMPRESSED_RGBA_ASTC_4x4x4_OES = 0x93C3+gl_TEXTURE_BINDING_1D_ARRAY :: GLenum+gl_TEXTURE_BINDING_1D_ARRAY = 0x8C1C+gl_SEPARATE_SPECULAR_COLOR :: GLenum+gl_SEPARATE_SPECULAR_COLOR = 0x81FA+gl_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED :: GLenum+gl_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x8221+gl_NORMAL_ARRAY_LIST_IBM :: GLenum+gl_NORMAL_ARRAY_LIST_IBM = 103071+gl_CURRENT_MATRIX_STACK_DEPTH_NV :: GLenum+gl_CURRENT_MATRIX_STACK_DEPTH_NV = 0x8640+gl_INT_IMAGE_3D :: GLenum+gl_INT_IMAGE_3D = 0x9059+gl_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV :: GLenum+gl_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x86F3+gl_CONTEXT_FLAG_DEBUG_BIT :: GLenum+gl_CONTEXT_FLAG_DEBUG_BIT = 0x00000002+gl_WEIGHT_ARRAY_BUFFER_BINDING_ARB :: GLenum+gl_WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E+gl_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX :: GLenum+gl_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x92DA+gl_VECTOR_EXT :: GLenum+gl_VECTOR_EXT = 0x87BF+gl_TEXTURE_BUFFER_DATA_STORE_BINDING :: GLenum+gl_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D+gl_TEXTURE_LOD_BIAS :: GLenum+gl_TEXTURE_LOD_BIAS = 0x8501+gl_GEOMETRY_SHADER_EXT :: GLenum+gl_GEOMETRY_SHADER_EXT = 0x8DD9+gl_TEXTURE30 :: GLenum+gl_TEXTURE30 = 0x84DE+gl_VERTEX_SHADER_BIT :: GLenum+gl_VERTEX_SHADER_BIT = 0x00000001+gl_HISTOGRAM_BLUE_SIZE_EXT :: GLenum+gl_HISTOGRAM_BLUE_SIZE_EXT = 0x802A+gl_PATH_COMMAND_COUNT_NV :: GLenum+gl_PATH_COMMAND_COUNT_NV = 0x909D+gl_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV :: GLenum+gl_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B+gl_STENCIL_TAG_BITS_EXT :: GLenum+gl_STENCIL_TAG_BITS_EXT = 0x88F2+gl_MAX_PROGRAM_LOOP_DEPTH_NV :: GLenum+gl_MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7+gl_FLOAT_MAT2x3_NV :: GLenum+gl_FLOAT_MAT2x3_NV = 0x8B65+gl_CURRENT_RASTER_DISTANCE :: GLenum+gl_CURRENT_RASTER_DISTANCE = 0x0B09+gl_COMPRESSED_SRGB8_ETC2_OES :: GLenum+gl_COMPRESSED_SRGB8_ETC2_OES = 0x9275+gl_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES :: GLenum+gl_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = 0x9276+gl_PIXEL_MAP_I_TO_G_SIZE :: GLenum+gl_PIXEL_MAP_I_TO_G_SIZE = 0x0CB3+gl_COMBINE :: GLenum+gl_COMBINE = 0x8570+gl_FOG_HINT :: GLenum+gl_FOG_HINT = 0x0C54+gl_COMPUTE_SUBROUTINE_UNIFORM :: GLenum+gl_COMPUTE_SUBROUTINE_UNIFORM = 0x92F3+gl_FRAGMENT_LIGHT3_SGIX :: GLenum+gl_FRAGMENT_LIGHT3_SGIX = 0x840F+gl_DEBUG_TYPE_PORTABILITY_ARB :: GLenum+gl_DEBUG_TYPE_PORTABILITY_ARB = 0x824F+gl_MIN_PROGRAM_TEXEL_OFFSET_EXT :: GLenum+gl_MIN_PROGRAM_TEXEL_OFFSET_EXT = 0x8904+gl_TRANSFORM_FEEDBACK_BUFFER_NV :: GLenum+gl_TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E+gl_UNKNOWN_CONTEXT_RESET_EXT :: GLenum+gl_UNKNOWN_CONTEXT_RESET_EXT = 0x8255+gl_INT_SAMPLER_CUBE_MAP_ARRAY_ARB :: GLenum+gl_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900E+gl_UNSIGNED_INT_24_8_NV :: GLenum+gl_UNSIGNED_INT_24_8_NV = 0x84FA+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY :: GLenum+gl_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x906C+gl_MANUAL_GENERATE_MIPMAP :: GLenum+gl_MANUAL_GENERATE_MIPMAP = 0x8294+gl_MAP2_VERTEX_ATTRIB6_4_NV :: GLenum+gl_MAP2_VERTEX_ATTRIB6_4_NV = 0x8676+gl_FRAMEBUFFER_EXT :: GLenum+gl_FRAMEBUFFER_EXT = 0x8D40+gl_INT16_NV :: GLenum+gl_INT16_NV = 0x8FE4+gl_FULL_RANGE_EXT :: GLenum+gl_FULL_RANGE_EXT = 0x87E1+gl_MAP1_VERTEX_ATTRIB2_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB2_4_NV = 0x8662+gl_UNSIGNED_INT_8_8_8_8_EXT :: GLenum+gl_UNSIGNED_INT_8_8_8_8_EXT = 0x8035+gl_TESS_CONTROL_SUBROUTINE_UNIFORM :: GLenum+gl_TESS_CONTROL_SUBROUTINE_UNIFORM = 0x92EF+gl_PREVIOUS_TEXTURE_INPUT_NV :: GLenum+gl_PREVIOUS_TEXTURE_INPUT_NV = 0x86E4+gl_ATOMIC_COUNTER_BUFFER_DATA_SIZE :: GLenum+gl_ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x92C4+gl_SYNC_STATUS_APPLE :: GLenum+gl_SYNC_STATUS_APPLE = 0x9114+gl_4PASS_0_EXT :: GLenum+gl_4PASS_0_EXT = 0x80A4+gl_POLYGON_SMOOTH :: GLenum+gl_POLYGON_SMOOTH = 0x0B41+gl_FEEDBACK_BUFFER_SIZE :: GLenum+gl_FEEDBACK_BUFFER_SIZE = 0x0DF1+gl_COLORBURN_KHR :: GLenum+gl_COLORBURN_KHR = 0x929A+gl_DEPTH24_STENCIL8 :: GLenum+gl_DEPTH24_STENCIL8 = 0x88F0+gl_LINEAR_CLIPMAP_LINEAR_SGIX :: GLenum+gl_LINEAR_CLIPMAP_LINEAR_SGIX = 0x8170+gl_TEXTURE_MAX_LEVEL :: GLenum+gl_TEXTURE_MAX_LEVEL = 0x813D+gl_TEXTURE_WRAP_R_EXT :: GLenum+gl_TEXTURE_WRAP_R_EXT = 0x8072+gl_OBJECT_SUBTYPE_ARB :: GLenum+gl_OBJECT_SUBTYPE_ARB = 0x8B4F+gl_MATRIX18_ARB :: GLenum+gl_MATRIX18_ARB = 0x88D2+gl_MATRIX_INDEX_ARRAY_POINTER_OES :: GLenum+gl_MATRIX_INDEX_ARRAY_POINTER_OES = 0x8849+gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB :: GLenum+gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E+gl_ALPHA8_SNORM :: GLenum+gl_ALPHA8_SNORM = 0x9014+gl_TESS_CONTROL_SUBROUTINE :: GLenum+gl_TESS_CONTROL_SUBROUTINE = 0x92E9+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB :: GLenum+gl_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x900F+gl_POST_CONVOLUTION_ALPHA_SCALE_EXT :: GLenum+gl_POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F+gl_RGB5_A1_EXT :: GLenum+gl_RGB5_A1_EXT = 0x8057+gl_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS :: GLenum+gl_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x92DC+gl_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM :: GLenum+gl_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = 0x8FB3+gl_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV :: GLenum+gl_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x885A+gl_TEXTURE21_ARB :: GLenum+gl_TEXTURE21_ARB = 0x84D5+gl_SAMPLER_2D_RECT_SHADOW :: GLenum+gl_SAMPLER_2D_RECT_SHADOW = 0x8B64+gl_DEPTH_STENCIL_TEXTURE_MODE :: GLenum+gl_DEPTH_STENCIL_TEXTURE_MODE = 0x90EA+gl_MAP1_VERTEX_ATTRIB10_4_NV :: GLenum+gl_MAP1_VERTEX_ATTRIB10_4_NV = 0x866A+gl_PINLIGHT_NV :: GLenum+gl_PINLIGHT_NV = 0x92A8+gl_TEXTURE_INTERNAL_FORMAT :: GLenum+gl_TEXTURE_INTERNAL_FORMAT = 0x1003+gl_VERTEX_ARRAY_OBJECT_AMD :: GLenum+gl_VERTEX_ARRAY_OBJECT_AMD = 0x9154+gl_OBJECT_LINEAR :: GLenum+gl_OBJECT_LINEAR = 0x2401+gl_TEXTURE_IMMUTABLE_FORMAT_EXT :: GLenum+gl_TEXTURE_IMMUTABLE_FORMAT_EXT = 0x912F+gl_COMBINER_COMPONENT_USAGE_NV :: GLenum+gl_COMBINER_COMPONENT_USAGE_NV = 0x8544+gl_RENDERBUFFER_GREEN_SIZE_EXT :: GLenum+gl_RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51+gl_CONVOLUTION_FILTER_SCALE :: GLenum+gl_CONVOLUTION_FILTER_SCALE = 0x8014+gl_TEXTURE11 :: GLenum+gl_TEXTURE11 = 0x84CB+gl_BITMAP :: GLenum+gl_BITMAP = 0x1A00+gl_VIEW_COMPATIBILITY_CLASS :: GLenum+gl_VIEW_COMPATIBILITY_CLASS = 0x82B6+gl_TEXTURE26 :: GLenum+gl_TEXTURE26 = 0x84DA+gl_UNSIGNED_INT8_VEC4_NV :: GLenum+gl_UNSIGNED_INT8_VEC4_NV = 0x8FEF+gl_UNSIGNED_INT_VEC3 :: GLenum+gl_UNSIGNED_INT_VEC3 = 0x8DC7+gl_VERTEX_PRECLIP_SGIX :: GLenum+gl_VERTEX_PRECLIP_SGIX = 0x83EE+gl_PACK_LSB_FIRST :: GLenum+gl_PACK_LSB_FIRST = 0x0D01+gl_NEGATIVE_Y_EXT :: GLenum+gl_NEGATIVE_Y_EXT = 0x87DA+gl_FRAMEBUFFER_BINDING_ANGLE :: GLenum+gl_FRAMEBUFFER_BINDING_ANGLE = 0x8CA6+gl_MAP_INVALIDATE_BUFFER_BIT_EXT :: GLenum+gl_MAP_INVALIDATE_BUFFER_BIT_EXT = 0x0008+gl_NO_RESET_NOTIFICATION :: GLenum+gl_NO_RESET_NOTIFICATION = 0x8261+gl_MINMAX_EXT :: GLenum+gl_MINMAX_EXT = 0x802E+gl_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST :: GLenum+gl_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x82AC+gl_QUARTER_BIT_ATI :: GLenum+gl_QUARTER_BIT_ATI = 0x00000010+gl_TEXTURE9 :: GLenum+gl_TEXTURE9 = 0x84C9+gl_FLOAT_R16_NV :: GLenum+gl_FLOAT_R16_NV = 0x8884+gl_BLEND_ADVANCED_COHERENT_KHR :: GLenum+gl_BLEND_ADVANCED_COHERENT_KHR = 0x9285+gl_MATRIX_INDEX_ARRAY_POINTER_ARB :: GLenum+gl_MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849+gl_PROXY_TEXTURE_1D_EXT :: GLenum+gl_PROXY_TEXTURE_1D_EXT = 0x8063+gl_PERTURB_EXT :: GLenum+gl_PERTURB_EXT = 0x85AE+gl_IUI_N3F_V3F_EXT :: GLenum+gl_IUI_N3F_V3F_EXT = 0x81B0+gl_COMBINE_RGB_ARB :: GLenum+gl_COMBINE_RGB_ARB = 0x8571+gl_DEBUG_SOURCE_APPLICATION_KHR :: GLenum+gl_DEBUG_SOURCE_APPLICATION_KHR = 0x824A+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS :: GLenum+gl_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE :: GLenum+gl_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = 0x8D56+gl_PROGRAM_ALU_INSTRUCTIONS_ARB :: GLenum+gl_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x8805+gl_VERTEX_STREAM0_ATI :: GLenum+gl_VERTEX_STREAM0_ATI = 0x876C+gl_EDGE_FLAG_ARRAY_POINTER_EXT :: GLenum+gl_EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093+gl_INT_IMAGE_2D_EXT :: GLenum+gl_INT_IMAGE_2D_EXT = 0x9058+gl_READ_FRAMEBUFFER_BINDING_EXT :: GLenum+gl_READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA+gl_TEXTURE_CUBE_MAP_ARB :: GLenum+gl_TEXTURE_CUBE_MAP_ARB = 0x8513+gl_LUMINANCE12_ALPHA12 :: GLenum+gl_LUMINANCE12_ALPHA12 = 0x8047+gl_FUNC_ADD :: GLenum+gl_FUNC_ADD = 0x8006+gl_TRANSPOSE_COLOR_MATRIX_ARB :: GLenum+gl_TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6+gl_COLOR_ATTACHMENT6 :: GLenum+gl_COLOR_ATTACHMENT6 = 0x8CE6+gl_GEOMETRY_SUBROUTINE :: GLenum+gl_GEOMETRY_SUBROUTINE = 0x92EB+gl_MAX_ELEMENT_INDEX :: GLenum+gl_MAX_ELEMENT_INDEX = 0x8D6B+gl_QUERY_OBJECT_AMD :: GLenum+gl_QUERY_OBJECT_AMD = 0x9153+gl_TEXTURE_CUBE_MAP_EXT :: GLenum+gl_TEXTURE_CUBE_MAP_EXT = 0x8513+gl_CONSTANT_ATTENUATION :: GLenum+gl_CONSTANT_ATTENUATION = 0x1207+gl_LUMINANCE_FLOAT32_APPLE :: GLenum+gl_LUMINANCE_FLOAT32_APPLE = 0x8818+gl_R32UI :: GLenum+gl_R32UI = 0x8236+gl_UNSIGNED_INT_VEC4_EXT :: GLenum+gl_UNSIGNED_INT_VEC4_EXT = 0x8DC8+gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT :: GLenum+gl_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x8E4C+gl_SAMPLE_MASK_VALUE :: GLenum+gl_SAMPLE_MASK_VALUE = 0x8E52+gl_STRICT_DEPTHFUNC_HINT_PGI :: GLenum+gl_STRICT_DEPTHFUNC_HINT_PGI = 0x1A216+gl_CONVOLUTION_HEIGHT_EXT :: GLenum+gl_CONVOLUTION_HEIGHT_EXT = 0x8019+gl_DEPTH_BUFFER_BIT1_QCOM :: GLenum+gl_DEPTH_BUFFER_BIT1_QCOM = 0x00000200+gl_CLIP_DISTANCE_NV :: GLenum+gl_CLIP_DISTANCE_NV = 0x8C7A+gl_DISPATCH_INDIRECT_BUFFER :: GLenum+gl_DISPATCH_INDIRECT_BUFFER = 0x90EE+gl_LUMINANCE4 :: GLenum+gl_LUMINANCE4 = 0x803F+gl_CLAMP :: GLenum+gl_CLAMP = 0x2900+gl_CONVOLUTION_FORMAT :: GLenum+gl_CONVOLUTION_FORMAT = 0x8017+gl_IMAGE_2D_MULTISAMPLE :: GLenum+gl_IMAGE_2D_MULTISAMPLE = 0x9055+gl_TRIANGLE_STRIP :: GLenum+gl_TRIANGLE_STRIP = 0x0005+gl_BGRA_INTEGER_EXT :: GLenum+gl_BGRA_INTEGER_EXT = 0x8D9B+gl_FRAGMENTS_INSTRUMENT_MAX_SGIX :: GLenum+gl_FRAGMENTS_INSTRUMENT_MAX_SGIX = 0x8315+gl_TESS_CONTROL_SHADER_BIT :: GLenum+gl_TESS_CONTROL_SHADER_BIT = 0x00000008+gl_POINT_SIZE_ARRAY_BUFFER_BINDING_OES :: GLenum+gl_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 0x8B9F+gl_BACK_NORMALS_HINT_PGI :: GLenum+gl_BACK_NORMALS_HINT_PGI = 0x1A223+gl_FOG_COORD_ARRAY :: GLenum+gl_FOG_COORD_ARRAY = 0x8457+gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR :: GLenum+gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 0x824D+gl_OPERAND1_RGB_EXT :: GLenum+gl_OPERAND1_RGB_EXT = 0x8591+gl_LINEAR_SHARPEN_COLOR_SGIS :: GLenum+gl_LINEAR_SHARPEN_COLOR_SGIS = 0x80AF+gl_POST_TEXTURE_FILTER_SCALE_SGIX :: GLenum+gl_POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A+gl_FRAMEBUFFER_COMPLETE_OES :: GLenum+gl_FRAMEBUFFER_COMPLETE_OES = 0x8CD5+gl_SYNC_OBJECT_APPLE :: GLenum+gl_SYNC_OBJECT_APPLE = 0x8A53+gl_INDEX_WRITEMASK :: GLenum+gl_INDEX_WRITEMASK = 0x0C21+gl_SIGNED_INTENSITY_NV :: GLenum+gl_SIGNED_INTENSITY_NV = 0x8707+gl_SGX_PROGRAM_BINARY_IMG :: GLenum+gl_SGX_PROGRAM_BINARY_IMG = 0x9130+gl_T4F_V4F :: GLenum+gl_T4F_V4F = 0x2A28++data GLsyncob+type GLsync = Ptr GLsyncob++type GLhalf = Word16+type GLhalfARB = Word16+type GLintptrARB = CPtrdiff+type GLsizeiptrARB = CPtrdiff+type GLDEBUGPROC =+    FunPtr (GLenum -> GLenum -> GLuint -> GLenum -> GLsizei -> Ptr GLchar -> Ptr () -> IO ())+type GLDEBUGPROCARB = GLDEBUGPROC+type GLDEBUGPROCKHR = GLDEBUGPROC+type GLDEBUGPROCAMD =+    FunPtr (GLuint -> GLenum -> GLenum -> GLsizei -> Ptr GLchar -> Ptr () -> IO ())+type GLbyte = CChar+type GLubyte = CUChar+type GLfloat = CFloat+type GLclampf = CFloat+type GLfixed = Int32+type GLint64 = Int64+type GLuint64 = Word64+type GLint64EXT = Int64+type GLuint64EXT = Word64+type GLintptr = CIntPtr+type GLsizeiptr = CSize+type GLhalfNV = CUShort+type GLvdpauSurfaceNV = GLintptr+type GLenum = CUInt+type GLboolean = CUChar+type GLvoid = ()+type GLbitfield = CUInt+type GLshort = CShort+type GLint = CInt+type GLclampx = CInt+type GLushort = CUShort+type GLuint = CUInt+type GLsizei = CInt+type GLdouble = CDouble+type GLclampd = CDouble+data GLeglImageOESob+type GLeglImageOES = Ptr GLeglImageOESob+type GLchar = CChar+type GLcharARB = CChar+#ifdef __APPLE__+type GLhandleARB = Ptr ()+#else+type GLhandleARB = CUInt+#endif+
+ src/Caramia/Internal/Lens.hs view
@@ -0,0 +1,22 @@+-- | 'lens' package compatible Lens.+--+-- This is used to avoid 'lens' dependency.+--++{-# LANGUAGE RankNTypes, NoImplicitPrelude #-}++module Caramia.Internal.Lens+    ( Lens+    , Lens'+    , lens )+    where++import Caramia.Prelude++type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t+type Lens' s a = Lens s s a a++lens :: (s -> a) -> (s -> a -> s) -> Lens' s a+lens sa sbt afb s = sbt s `fmap` afb (sa s)+{-# INLINE lens #-}+
+ src/Caramia/Internal/OpenGLCApi.hs view
@@ -0,0 +1,306 @@+-- | Module for using the raw OpenGL API.+--+-- This is a mixture from the OpenGLRaw package and some of our own stuff.+--+-- TODO: Some of this stuff should probably be in OpenGLRaw so we could add+-- stuff there instead.+--++{-# LANGUAGE ForeignFunctionInterface, NoImplicitPrelude #-}++module Caramia.Internal.OpenGLCApi+    ( module Ex++    , gi+    , gf++    , withBoundVAO+    , withBoundBuffer+    , withBoundElementBuffer+    , withBoundPixelUnpackBuffer+    , withBoundProgram+    , withBoundDrawFramebuffer++    , setBoundProgram+    , setBoundElementBuffer++    -- Functions that I made up that I wish were in OpenGL.+    , mglDeleteBuffer+    , mglGenBuffer+    , mglDeleteVertexArray+    , mglGenVertexArray+    , mglDeleteFramebuffer+    , mglGenFramebuffer+    , mglNamedBufferData+    , mglVertexArrayVertexAttribOffsetAndEnable+    , mglVertexArrayVertexAttribIOffsetAndEnable+    , mglVertexArrayVertexAttribDivisor+    -- GL_ARB_separate_shader_objects...but I want them even if that extension+    -- is not available.+    , mglProgramUniform1ui+    , mglProgramUniform2ui+    , mglProgramUniform3ui+    , mglProgramUniform4ui+    , mglProgramUniform1i+    , mglProgramUniform2i+    , mglProgramUniform3i+    , mglProgramUniform4i+    , mglProgramUniform1f+    , mglProgramUniform2f+    , mglProgramUniform3f+    , mglProgramUniform4f+    , mglProgramUniformMatrix4fv+    , mglProgramUniformMatrix3fv+    , mglMapNamedBufferRange+    , mglUnmapNamedBuffer+    , mglNamedCopyBufferSubData+    )+    where++import Caramia.Prelude++import Caramia.Internal.FlextGL as Ex+import Foreign.Ptr+import Foreign.C.Types+import Foreign.Storable+import Foreign.Marshal.Alloc+import Foreign.Marshal.Utils+import Control.Exception++{-# ANN module ("HLint: ignore Use camelCase" :: String) #-}++whenExt :: IO Bool -> IO a -> IO a -> IO a+whenExt test action other_action = do+    x <- test+    if x then action else other_action+{-# INLINE whenExt #-}++mglDeleteBuffer :: GLuint -> IO ()+mglDeleteBuffer x = with x $ \x_ptr -> glDeleteBuffers 1 x_ptr++mglDeleteVertexArray :: GLuint -> IO ()+mglDeleteVertexArray x = with x $ \x_ptr -> glDeleteVertexArrays 1 x_ptr++mglGenBuffer :: IO GLuint+mglGenBuffer = alloca $ \x_ptr -> glGenBuffers 1 x_ptr *> peek x_ptr++mglGenVertexArray :: IO GLuint+mglGenVertexArray = alloca $ \x_ptr -> glGenVertexArrays 1 x_ptr *> peek x_ptr++mglGenFramebuffer :: IO GLuint+mglGenFramebuffer = alloca $ \x_ptr -> glGenFramebuffers 1 x_ptr *> peek x_ptr++mglDeleteFramebuffer :: GLuint -> IO ()+mglDeleteFramebuffer x = with x $ \x_ptr -> glDeleteFramebuffers 1 x_ptr++withBoundDrawFramebuffer :: GLuint -> IO a -> IO a+withBoundDrawFramebuffer x action = do+    old <- gi gl_DRAW_FRAMEBUFFER_BINDING+    finally (glBindFramebuffer gl_DRAW_FRAMEBUFFER x *> action)+            (glBindFramebuffer gl_DRAW_FRAMEBUFFER old)++withBoundProgram :: GLuint -> IO a -> IO a+withBoundProgram program action = do+    old <-+        alloca $ \x_ptr -> glGetIntegerv gl_CURRENT_PROGRAM x_ptr *> peek x_ptr+    finally (glUseProgram program *> action)+            (glUseProgram $ fromIntegral old)++setBoundProgram :: GLuint -> IO ()+setBoundProgram = glUseProgram++withBoundBuffer :: GLuint -> IO a -> IO a+withBoundBuffer buf action = do+    old <-+        alloca $ \x_ptr -> glGetIntegerv gl_ARRAY_BUFFER_BINDING x_ptr *>+                           peek x_ptr+    finally (glBindBuffer gl_ARRAY_BUFFER buf *> action)+            (glBindBuffer gl_ARRAY_BUFFER $ fromIntegral old)++setBoundElementBuffer :: GLuint -> IO ()+setBoundElementBuffer =+    glBindBuffer gl_ELEMENT_ARRAY_BUFFER++withBoundElementBuffer :: GLuint -> IO a -> IO a+withBoundElementBuffer buf action = do+    old <-+        alloca $ \x_ptr -> glGetIntegerv gl_ELEMENT_ARRAY_BUFFER_BINDING x_ptr *>+                           peek x_ptr+    finally (glBindBuffer gl_ELEMENT_ARRAY_BUFFER buf *> action)+            (glBindBuffer gl_ELEMENT_ARRAY_BUFFER $ fromIntegral old)++withBoundPixelUnpackBuffer :: GLuint -> IO a -> IO a+withBoundPixelUnpackBuffer buf action = do+    old <-+        alloca $ \x_ptr -> glGetIntegerv gl_PIXEL_UNPACK_BUFFER_BINDING x_ptr *>+                           peek x_ptr+    finally (glBindBuffer gl_PIXEL_UNPACK_BUFFER buf *> action)+            (glBindBuffer gl_PIXEL_UNPACK_BUFFER $ fromIntegral old)++withBoundVAO :: GLuint -> IO a -> IO a+withBoundVAO vao action = do+    old <-+        alloca $ \x_ptr -> glGetIntegerv gl_VERTEX_ARRAY_BINDING x_ptr *>+                           peek x_ptr+    finally (glBindVertexArray vao *> action)+            (glBindVertexArray $ fromIntegral old)++mglVertexArrayVertexAttribDivisor ::+    GLuint -> GLuint -> GLuint -> IO ()+mglVertexArrayVertexAttribDivisor vaobj index divisor = mask_ $+    withBoundVAO vaobj $+        glVertexAttribDivisor index divisor++mglVertexArrayVertexAttribOffsetAndEnable ::+        GLuint -> GLuint -> GLuint -> GLint -> GLenum+     -> GLboolean -> GLsizei -> CPtrdiff -> IO ()+mglVertexArrayVertexAttribOffsetAndEnable+    vaobj buffer index size dtype normalized stride (CPtrdiff offset) = mask_ $++    withBoundVAO vaobj $+        withBoundBuffer buffer $ do+            glEnableVertexAttribArray index+            glVertexAttribPointer index size dtype normalized stride+                                  (intPtrToPtr $ fromIntegral offset)++mglVertexArrayVertexAttribIOffsetAndEnable ::+        GLuint -> GLuint -> GLuint -> GLint -> GLenum+     -> GLsizei -> GLintptr -> IO ()+mglVertexArrayVertexAttribIOffsetAndEnable+    vaobj buffer index size dtype stride offset = mask_ $++    withBoundVAO vaobj $+        withBoundBuffer buffer $ do+            glEnableVertexAttribArray index+            glVertexAttribIPointer index size dtype stride+                                   (intPtrToPtr $ fromIntegral offset)++mglNamedBufferData :: GLuint+                   -> GLsizeiptr+                   -> Ptr ()+                   -> GLenum+                   -> IO ()+mglNamedBufferData buf size ptr usage =+    whenExt has_GL_EXT_direct_state_access+        (glNamedBufferDataEXT buf size ptr usage)+        (withBoundBuffer buf $ glBufferData gl_ARRAY_BUFFER size ptr usage)++mglProgramUniform1ui :: GLuint -> GLint -> GLuint -> IO ()+mglProgramUniform1ui program loc v1 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform1ui program loc v1)+          (withBoundProgram program $ glUniform1ui loc v1)++mglProgramUniform2ui :: GLuint -> GLint -> GLuint -> GLuint -> IO ()+mglProgramUniform2ui program loc v1 v2 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform2ui program loc v1 v2)+          (withBoundProgram program $ glUniform2ui loc v1 v2)++mglProgramUniform3ui :: GLuint -> GLint -> GLuint -> GLuint -> GLuint -> IO ()+mglProgramUniform3ui program loc v1 v2 v3 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform3ui program loc v1 v2 v3)+          (withBoundProgram program $ glUniform3ui loc v1 v2 v3)++mglProgramUniform4ui :: GLuint -> GLint -> GLuint -> GLuint -> GLuint+                     -> GLuint -> IO ()+mglProgramUniform4ui program loc v1 v2 v3 v4 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform4ui program loc v1 v2 v3 v4)+          (withBoundProgram program $ glUniform4ui loc v1 v2 v3 v4)++mglProgramUniform1i :: GLuint -> GLint -> GLint -> IO ()+mglProgramUniform1i program loc v1 =+    whenExt has_GL_ARB_separate_shader_objects (glProgramUniform1i program loc v1)+          (withBoundProgram program $ glUniform1i loc v1)++mglProgramUniform2i :: GLuint -> GLint -> GLint -> GLint -> IO ()+mglProgramUniform2i program loc v1 v2 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform2i program loc v1 v2)+          (withBoundProgram program $ glUniform2i loc v1 v2)++mglProgramUniform3i :: GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()+mglProgramUniform3i program loc v1 v2 v3 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform3i program loc v1 v2 v3)+          (withBoundProgram program $ glUniform3i loc v1 v2 v3)++mglProgramUniform4i :: GLuint -> GLint -> GLint -> GLint -> GLint+                     -> GLint -> IO ()+mglProgramUniform4i program loc v1 v2 v3 v4 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform4i program loc v1 v2 v3 v4)+          (withBoundProgram program $ glUniform4i loc v1 v2 v3 v4)++mglProgramUniform1f :: GLuint -> GLint -> GLfloat -> IO ()+mglProgramUniform1f program loc v1 =+    whenExt has_GL_ARB_separate_shader_objects+        (glProgramUniform1f program loc v1)+        (withBoundProgram program $ glUniform1f loc v1)++mglProgramUniform2f :: GLuint -> GLint -> GLfloat -> GLfloat -> IO ()+mglProgramUniform2f program loc v1 v2 =+    whenExt has_GL_ARB_separate_shader_objects+        (glProgramUniform2f program loc v1 v2)+        (withBoundProgram program $ glUniform2f loc v1 v2)++mglProgramUniform3f :: GLuint -> GLint -> GLfloat -> GLfloat -> GLfloat -> IO ()+mglProgramUniform3f program loc v1 v2 v3 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform3f program loc v1 v2 v3)+          (withBoundProgram program $ glUniform3f loc v1 v2 v3)++mglProgramUniform4f :: GLuint -> GLint+                    -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()+mglProgramUniform4f program loc v1 v2 v3 v4 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniform4f program loc v1 v2 v3 v4)+          (withBoundProgram program $ glUniform4f loc v1 v2 v3 v4)++mglProgramUniformMatrix4fv :: GLuint -> GLint+                           -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()+mglProgramUniformMatrix4fv program loc count transpose m44 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniformMatrix4fv program loc count transpose m44)+          (withBoundProgram program $+              glUniformMatrix4fv loc count transpose m44)++mglProgramUniformMatrix3fv :: GLuint -> GLint+                           -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ()+mglProgramUniformMatrix3fv program loc count transpose m33 =+    whenExt has_GL_ARB_separate_shader_objects+          (glProgramUniformMatrix3fv program loc count transpose m33)+          (withBoundProgram program $+              glUniformMatrix3fv loc count transpose m33)++mglMapNamedBufferRange :: GLuint -> GLintptr+                       -> GLsizeiptr -> GLbitfield -> IO (Ptr ())+mglMapNamedBufferRange buffer offset length access =+    withBoundBuffer buffer $+        glMapBufferRange gl_ARRAY_BUFFER offset length access++mglUnmapNamedBuffer :: GLuint -> IO GLboolean+mglUnmapNamedBuffer buffer =+    withBoundBuffer buffer $ glUnmapBuffer gl_ARRAY_BUFFER++mglNamedCopyBufferSubData :: GLuint -> GLuint+                          -> GLintptr -> GLintptr -> GLsizeiptr -> IO ()+mglNamedCopyBufferSubData src dst src_offset dst_offset num_bytes =+    withBoundElementBuffer src $+        withBoundBuffer dst $+            glCopyBufferSubData gl_ELEMENT_ARRAY_BUFFER+                                gl_ARRAY_BUFFER+                                src_offset+                                dst_offset+                                num_bytes++-- | Shortcut to `glGetIntegerv` when you query only one integer.+gi :: GLenum -> IO GLuint+gi x = alloca $ \get_ptr -> glGetIntegerv x (castPtr get_ptr) *>+                            peek get_ptr++gf :: GLenum -> IO GLfloat+gf x = alloca $ \get_ptr -> glGetFloatv x (castPtr get_ptr) *> peek get_ptr+
+ src/Caramia/Internal/OpenGLDebug.hs view
@@ -0,0 +1,116 @@+-- | Module for using the OpenGL debug extensions for debug output.++{-# LANGUAGE NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Internal.OpenGLDebug+    ( activateDebugMode+    , flushDebugMessages )+    where++import Caramia.Prelude+import Caramia.Internal.OpenGLCApi+import Caramia.Internal.ContextLocalData+import Control.Monad.Trans.State.Strict+import Control.Monad.IO.Class+import Control.Exception+import System.IO+import Foreign.Storable+import Foreign.C.String+import Foreign.Marshal.Array+import Foreign.Ptr++newtype DebugModeActivated = DebugModeActivated Bool+                             deriving ( Typeable )++activateDebugMode :: IO ()+activateDebugMode = do+    necessary_extensions <- has_GL_KHR_debug+    when necessary_extensions reallyActivateDebugMode+  where+    reallyActivateDebugMode = mask_ $ do+        glDebugMessageControl gl_DONT_CARE+                              gl_DONT_CARE+                              gl_DONT_CARE+                              0+                              nullPtr+                              (fromIntegral gl_TRUE)+        glEnable gl_DEBUG_OUTPUT+        withCStringLen "Debug output activated." $ \(cstr, len) ->+            glDebugMessageInsert gl_DEBUG_SOURCE_APPLICATION+                                 gl_DEBUG_TYPE_OTHER+                                 0+                                 gl_DEBUG_SEVERITY_LOW+                                 (fromIntegral len)+                                 cstr+        storeContextLocalData (DebugModeActivated True)++flushDebugMessages :: IO ()+flushDebugMessages = do+    DebugModeActivated debug_mode <-+        retrieveContextLocalData $ return $ DebugModeActivated False+    when debug_mode $+        allocaArray 65535 $ \cstr_msg ->+        allocaArray maxMsgs $ \sources ->+        allocaArray maxMsgs $ \types ->+        allocaArray maxMsgs $ \ids ->+        allocaArray maxMsgs $ \severities ->+        allocaArray maxMsgs $ \lengths -> do+            num_msgs <- fromIntegral <$>+                        glGetDebugMessageLog (fromIntegral maxMsgs)+                                            65535+                                            sources+                                            types+                                            ids+                                            severities+                                            lengths+                                            cstr_msg++            flip evalStateT cstr_msg $ for_ [0..num_msgs-1] $ \index -> do+                src <- peo sources index+                typ <- peo types index+                id <- peo ids index+                severity <- peo severities index+                length <- peo lengths index+                cur_ptr <- get++                str <- liftIO $ peekCStringLen (cur_ptr, fromIntegral length)+                liftIO $ hPutStrLn stderr $+                    "[" <> show id <> ", " <>+                           showSrc src <> ", " <>+                           showType typ <> ", " <>+                           showSeverity severity <> "] " <>+                    str++                put (plusPtr cur_ptr $ fromIntegral length)++            when (num_msgs >= maxMsgs) flushDebugMessages+  where+    peo ptr idx = liftIO $ peekElemOff ptr idx++    maxMsgs = 10000++showSeverity :: GLenum -> String+showSeverity x | x == gl_DEBUG_SEVERITY_HIGH = "high"+               | x == gl_DEBUG_SEVERITY_MEDIUM = "medium"+               | x == gl_DEBUG_SEVERITY_LOW = "low"+showSeverity _ = "unknown"++showType :: GLenum -> String+showType x | x == gl_DEBUG_TYPE_ERROR = "error"+           | x == gl_DEBUG_TYPE_DEPRECATED_BEHAVIOR = "deprecated"+           | x == gl_DEBUG_TYPE_UNDEFINED_BEHAVIOR = "undefined"+           | x == gl_DEBUG_TYPE_PORTABILITY = "portability"+           | x == gl_DEBUG_TYPE_PERFORMANCE = "performance"+           | x == gl_DEBUG_TYPE_OTHER = "other"+showType _ = "unknown"++showSrc :: GLenum -> String+showSrc x | x == gl_DEBUG_SOURCE_APPLICATION = "application"+          | x == gl_DEBUG_SOURCE_OTHER = "other"+          | x == gl_DEBUG_SOURCE_API = "api"+          | x == gl_DEBUG_SOURCE_WINDOW_SYSTEM = "windowsystem"+          | x == gl_DEBUG_SOURCE_SHADER_COMPILER = "shadercompiler"+          | x == gl_DEBUG_SOURCE_THIRD_PARTY = "thirdparty"+showSrc _ = "unknown"++
+ src/Caramia/Math.hs view
@@ -0,0 +1,1647 @@+{-# LANGUAGE NoImplicitPrelude, BangPatterns, DeriveDataTypeable #-}+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}++-- | Matrix, vector and quaternion math module. This module is concerned about+-- common functions for graphics programming and the types from this module are+-- used by the rest of Caramia.+--+-- If you require more functionality or types, I suggest you look at a+-- dedicated linear algebra package such as \'hmatrix\' or \'linear\'.+--+-- #storable#+-- `Matrix44`, `Matrix33`, `Quaternion` and `Vector3` are all `Storable`s.+--+-- The matrices are stored as column vectors. That is, if a `Matrix4` is+-- labelled like this:+--+-- @+--         Col.1  Col.2  Col.3  Col.4+--        ---------------------------+-- Row 1    m11    m12    m13    m14+-- Row 2    m21    m22    m23    m24+-- Row 3    m31    m32    m33    m34+-- Row 4    m41    m42    m43    m44+--        ---------------------------+-- @+--+-- The matrix would occupy memory (as a `Storable`) as follows:+--+-- @+--   m11, m21, m31, m41, m12, m22, m32, m42, m13 ...+-- @+--+-- where each value is a 32-bit floating point value. This is what OpenGL uses.+--+-- (if the above matrix was a translation matrix, then m14, m24 and m34 would+-- contain the x, y and z coordinates of a translation).+--+-- The scheme is the same for a `Matrix33`, just drop the fourth row and+-- column.+--+-- `Vector3` is stored as three consecutive floating point values.+--+-- @+--   x, y, z+-- @+--+-- `Quaternion` first stores the `w` as the last element. So, the layout of a+-- quaternion is:+--+-- @+--   x, y, z, w+-- @+--+-- This is also how `Caramia.Shader` maps quaternions to vectors in shaders.+--++module Caramia.Math+    ( Matrix44(..)+    , Matrix33(..)+    , Vector3(..)+    , Quaternion(..)++    -- * sizeOfs+    , sizeOfMatrix44+    , sizeOfMatrix33+    , sizeOfVector3+    , sizeOfQuaternion++    -- * 4x4 matrices+    , matrix44+    , withMatrix44Ptr+    , inverse44+    , identity44+    , multiply44+    , determinant44+    , zero44+    , perspective44+    , distance44+    , frustum44+    , ortho44+    , lookat44+    , translate44+    , transpose44+    , scale44+    , rotate44++    -- * 3x3 matrices+    , matrix33+    , withMatrix33Ptr+    , inverse33+    , identity33+    , multiply33+    , determinant33+    , zero33+    , distance33+    , transpose33+    , matrix33ToMatrix44+    , matrix44ToMatrix33+++    -- * quaternions+    , quaternion+    , identityq+    , canonicalizeq+    , distanceq+    , lengthq+    , normalizeq+    , multiplyq+    , zeroq+    , axisAngleToQuaternion+    , matrix44ToQuaternion+    , quaternionToMatrix44++    , toTupleq+    , fromTupleq++    -- * 3-component vectors+    , vector3+    , zero3+    , distance3+    , length3+    , plus3+    , minus3+    , normalize3+    , angle3+    , cross3+    , dot3+    , negative3+    , scalarMultiply3+    , vector3_1ToQuaternion+    , vector3Transform44+    , toTuple3+    , fromTuple3++    -- ** Lenses+    , _x+    , _y+    , _z++    -- * Misc+    , prettyShow )+    where++-- Hacking guide:+--+-- All data types are unpacked and strict. (Almost) all functions use bang+-- patterns to make sure everything is strict (mostly unneeded as they would be+-- strict anyway but, for consistency, in this module, use them everywhere).+--+-- Everything is also inlined.+--+-- Matrix44 functions have 44 at the end.+-- Matrix33 functions have 33 at the end.+-- Vector3 functions have 3 at the end.+-- Quaternion functions have q at the end.+--+--+-- Hlint likes to complain about this file, mostly about the repetitions.+--++import Caramia.Prelude++import Foreign.Ptr ( Ptr, castPtr )+import Foreign.Storable ( pokeElemOff, Storable(..) )+import Foreign.Marshal.Array ( allocaArray )+import Foreign.C.Types ( CFloat(..) )+import Caramia.Internal.Lens++{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}++-- | A 4x4 matrix. Each mXX function accesses an individual element of the+-- matrix.+data Matrix44 = Matrix44 { m11 :: {-# UNPACK #-} !Float+                         , m21 :: {-# UNPACK #-} !Float+                         , m31 :: {-# UNPACK #-} !Float+                         , m41 :: {-# UNPACK #-} !Float+                         , m12 :: {-# UNPACK #-} !Float+                         , m22 :: {-# UNPACK #-} !Float+                         , m32 :: {-# UNPACK #-} !Float+                         , m42 :: {-# UNPACK #-} !Float+                         , m13 :: {-# UNPACK #-} !Float+                         , m23 :: {-# UNPACK #-} !Float+                         , m33 :: {-# UNPACK #-} !Float+                         , m43 :: {-# UNPACK #-} !Float+                         , m14 :: {-# UNPACK #-} !Float+                         , m24 :: {-# UNPACK #-} !Float+                         , m34 :: {-# UNPACK #-} !Float+                         , m44 :: {-# UNPACK #-} !Float }+               deriving ( Eq, Show, Read, Ord, Typeable )++-- | A 3x3 matrix. Each nXX function accesses an individual element of the+-- matrix.+data Matrix33 = Matrix33 { n11 :: {-# UNPACK #-} !Float+                         , n21 :: {-# UNPACK #-} !Float+                         , n31 :: {-# UNPACK #-} !Float+                         , n12 :: {-# UNPACK #-} !Float+                         , n22 :: {-# UNPACK #-} !Float+                         , n32 :: {-# UNPACK #-} !Float+                         , n13 :: {-# UNPACK #-} !Float+                         , n23 :: {-# UNPACK #-} !Float+                         , n33 :: {-# UNPACK #-} !Float }+               deriving ( Eq, Show, Read, Ord, Typeable )++-- | A 3-dimensional vector. `x`, `y` and `z` access each individual+-- component.+data Vector3 = Vector3 { x :: {-# UNPACK #-} !Float+                       , y :: {-# UNPACK #-} !Float+                       , z :: {-# UNPACK #-} !Float }+               deriving ( Eq, Show, Read, Ord, Typeable )++_x :: Lens' Vector3 Float+_x = lens x (\old_vec new_x -> old_vec { x = new_x })+_y :: Lens' Vector3 Float+_y = lens y (\old_vec new_y -> old_vec { y = new_y })+_z :: Lens' Vector3 Float+_z = lens z (\old_vec new_z -> old_vec { z = new_z })++-- | A quaternion. It's composed of four values, `qx`, `qy`, `qz` and `qw`.+--+-- In the context of Caramia, quaternions are used exclusively to represent+-- rotations.+data Quaternion = Quaternion { qx :: {-# UNPACK #-} !Float+                             , qy :: {-# UNPACK #-} !Float+                             , qz :: {-# UNPACK #-} !Float+                             , qw :: {-# UNPACK #-} !Float }+                  deriving ( Eq, Show, Read, Ord, Typeable )++-- | Returns the size of a `Vector3`. This is just a shortcut to calling+-- `sizeOf` on a vector.+sizeOfVector3 :: Int+sizeOfVector3 = sizeOf (undefined :: Vector3)++-- | Returns the size of a `Matrix3`. This is just a shortcut to calling+-- `sizeOf` on a matrix.+sizeOfMatrix33 :: Int+sizeOfMatrix33 = sizeOf (undefined :: Matrix33)++-- | Returns the size of a `Matrix4`. This is just a shortcut to calling+-- `sizeOf` on a matrix.+sizeOfMatrix44 :: Int+sizeOfMatrix44 = sizeOf (undefined :: Matrix44)++-- | Returns the size of a `Quaternion`. This is just a shortcut to calling+-- `sizeOf` on a quaternion.+sizeOfQuaternion :: Int+sizeOfQuaternion = sizeOf (undefined :: Quaternion)++instance Storable Vector3 where+    sizeOf _ = sizeOf (undefined :: Float) * 3+    alignment _ = alignment (undefined :: Float)+    peek ptr = {-# SCC "Vector3_peek" #-} do+        x <- peekElemOff cptr 0 :: IO Float+        y <- peekElemOff cptr 1 :: IO Float+        z <- peekElemOff cptr 2 :: IO Float+        return $ Vector3 x y z+      where+        cptr = castPtr ptr :: Ptr Float++    poke ptr (Vector3 x y z) = {-# SCC "Vector3_poke" #-} do+        pokeElemOff cptr 0 x+        pokeElemOff cptr 1 y+        pokeElemOff cptr 2 z+      where+        cptr = castPtr ptr :: Ptr Float++instance Storable Quaternion where+    sizeOf _ = sizeOf (undefined :: Float) * 4+    alignment _ = alignment (undefined :: Float)+    peek ptr = {-# SCC "Quaternion_peek" #-} do+        x <- peekElemOff cptr 0 :: IO Float+        y <- peekElemOff cptr 1 :: IO Float+        z <- peekElemOff cptr 2 :: IO Float+        w <- peekElemOff cptr 3 :: IO Float+        return $ Quaternion x y z w+      where+        cptr = castPtr ptr :: Ptr Float++    poke ptr (Quaternion x y z w) = {-# SCC "Quaternion_poke" #-} do+        pokeElemOff cptr 0 x+        pokeElemOff cptr 1 y+        pokeElemOff cptr 2 z+        pokeElemOff cptr 3 w+      where+        cptr = castPtr ptr :: Ptr Float++instance Storable Matrix44 where+    sizeOf _ = sizeOf (undefined :: Float) * 16+    alignment _ = alignment (undefined :: Float)+    peek ptr = {-# SCC "Matrix44_peek" #-} do+        r11 <- peekElemOff cptr 0 :: IO Float+        r21 <- peekElemOff cptr 1 :: IO Float+        r31 <- peekElemOff cptr 2 :: IO Float+        r41 <- peekElemOff cptr 3 :: IO Float+        r12 <- peekElemOff cptr 4 :: IO Float+        r22 <- peekElemOff cptr 5 :: IO Float+        r32 <- peekElemOff cptr 6 :: IO Float+        r42 <- peekElemOff cptr 7 :: IO Float+        r13 <- peekElemOff cptr 8 :: IO Float+        r23 <- peekElemOff cptr 9 :: IO Float+        r33 <- peekElemOff cptr 10 :: IO Float+        r43 <- peekElemOff cptr 11 :: IO Float+        r14 <- peekElemOff cptr 12 :: IO Float+        r24 <- peekElemOff cptr 13 :: IO Float+        r34 <- peekElemOff cptr 14 :: IO Float+        r44 <- peekElemOff cptr 15 :: IO Float+        return $ matrix44 r11 r12 r13 r14+                          r21 r22 r23 r24+                          r31 r32 r33 r34+                          r41 r42 r43 r44+      where+        cptr = castPtr ptr :: Ptr Float++    poke ptr mat = {-# SCC "Matrix44_poke" #-} do+        pokeElemOff cptr 0  f11+        pokeElemOff cptr 1  f21+        pokeElemOff cptr 2  f31+        pokeElemOff cptr 3  f41+        pokeElemOff cptr 4  f12+        pokeElemOff cptr 5  f22+        pokeElemOff cptr 6  f32+        pokeElemOff cptr 7  f42+        pokeElemOff cptr 8  f13+        pokeElemOff cptr 9  f23+        pokeElemOff cptr 10 f33+        pokeElemOff cptr 11 f43+        pokeElemOff cptr 12 f14+        pokeElemOff cptr 13 f24+        pokeElemOff cptr 14 f34+        pokeElemOff cptr 15 f44+      where+        cptr = castPtr ptr :: Ptr Float+        f11 = m11 mat+        f21 = m21 mat+        f31 = m31 mat+        f41 = m41 mat+        f12 = m12 mat+        f22 = m22 mat+        f32 = m32 mat+        f42 = m42 mat+        f13 = m13 mat+        f23 = m23 mat+        f33 = m33 mat+        f43 = m43 mat+        f14 = m14 mat+        f24 = m24 mat+        f34 = m34 mat+        f44 = m44 mat++instance Storable Matrix33 where+    sizeOf _ = sizeOf (undefined :: CFloat) * 9+    alignment _ = alignment (undefined :: CFloat)+    peek ptr = {-# SCC "Matrix33_peek" #-} do+        r11 <- peekElemOff cptr 0 :: IO Float+        r21 <- peekElemOff cptr 1 :: IO Float+        r31 <- peekElemOff cptr 2 :: IO Float+        r12 <- peekElemOff cptr 3 :: IO Float+        r22 <- peekElemOff cptr 4 :: IO Float+        r32 <- peekElemOff cptr 5 :: IO Float+        r13 <- peekElemOff cptr 6 :: IO Float+        r23 <- peekElemOff cptr 7 :: IO Float+        r33 <- peekElemOff cptr 8 :: IO Float+        return $ matrix33 r11 r12 r13+                          r21 r22 r23+                          r31 r32 r33+      where+        cptr = castPtr ptr :: Ptr Float++    poke ptr mat = {-# SCC "Matrix33_poke" #-} do+        pokeElemOff cptr 0 f11+        pokeElemOff cptr 1 f21+        pokeElemOff cptr 2 f31+        pokeElemOff cptr 3 f12+        pokeElemOff cptr 4 f22+        pokeElemOff cptr 5 f32+        pokeElemOff cptr 6 f13+        pokeElemOff cptr 7 f23+        pokeElemOff cptr 8 f33+      where+        cptr = castPtr ptr :: Ptr Float+        f11 = n11 mat+        f21 = n21 mat+        f31 = n31 mat+        f12 = n12 mat+        f22 = n22 mat+        f32 = n32 mat+        f13 = n13 mat+        f23 = n23 mat+        f33 = n33 mat++-- | Constructs a `Vector3` out of three values.+vector3 :: Float       -- ^ X-coodinate.+        -> Float       -- ^ Y-coodinate.+        -> Float       -- ^ Z-coodinate.+        -> Vector3+{-# INLINE vector3 #-}+vector3 !x !y !z = Vector3 { x = x, y = y, z = z }++-- | Constructs a `Matrix44` out of 16 values.+--+-- The order of the values is column-first. That is, in this order:+--+-- @+--    m11 m12 m13 m14 m21 m22 m23 m24 m31 ...+-- @+--+-- This allows you to write the matrix out this way:+--+-- @+--   let the_greatest_4x4_matrix_of_them_all =+--          matrix4 m11 m12 m13 m14+--                  m21 m22 m23 m24+--                  m31 m32 m33 m34+--                  m41 m42 m43 m44+--    in ...+-- @+matrix44 :: Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Matrix44+{-# INLINE matrix44 #-}+matrix44 !m11 !m12 !m13 !m14+         !m21 !m22 !m23 !m24+         !m31 !m32 !m33 !m34+         !m41 !m42 !m43 !m44 = {-# SCC "matrix44" #-}+    Matrix44 { m11 = m11+             , m21 = m21+             , m31 = m31+             , m41 = m41+             , m12 = m12+             , m22 = m22+             , m32 = m32+             , m42 = m42+             , m13 = m13+             , m23 = m23+             , m33 = m33+             , m43 = m43+             , m14 = m14+             , m24 = m24+             , m34 = m34+             , m44 = m44 }++-- | Constructs a `Matrix3` out of 9 values.+--+-- The order of the values is the same as for `matrix4`, just drop the fourth+-- row and column.+matrix33 :: Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Float+         -> Matrix33+{-# INLINE matrix33 #-}+matrix33 !m11 !m12 !m13+         !m21 !m22 !m23+         !m31 !m32 !m33 = {-# SCC "matrix33" #-}+    Matrix33 { n11 = m11+             , n21 = m21+             , n31 = m31+             , n12 = m12+             , n22 = m22+             , n32 = m32+             , n13 = m13+             , n23 = m23+             , n33 = m33 }++-- | Transforms a `Matrix33` into a `Matrix44`.+--+-- If this is the original 3x3 matrix:+--+-- @+--  ---------------------+--    m11    m12    m13+--    m21    m22    m23+--    m31    m32    m33+--  ---------------------+-- @+--+-- Then this is the resulting matrix:+--+-- @+--  -------------------------+--    m11    m12    m13    0+--    m21    m22    m23    0+--    m31    m32    m33    0+--     0      0      0     1+--  -------------------------+-- @+matrix33ToMatrix44 :: Matrix33 -> Matrix44+{-# INLINE matrix33ToMatrix44 #-}+matrix33ToMatrix44 !mat = {-# SCC "matrix33ToMatrix44" #-}+    Matrix44 { m11 = f11+            , m21 = f21+            , m31 = f31+            , m12 = f12+            , m22 = f22+            , m32 = f32+            , m13 = f13+            , m23 = f23+            , m33 = f33++            , m41 = 0.0+            , m42 = 0.0+            , m43 = 0.0+            , m44 = 1.0+            , m14 = 0.0+            , m24 = 0.0+            , m34 = 0.0 }+  where+    f11 = n11 mat+    f21 = n21 mat+    f31 = n31 mat+    f12 = n12 mat+    f22 = n22 mat+    f32 = n32 mat+    f13 = n13 mat+    f23 = n23 mat+    f33 = n33 mat+++-- | Transforms a `Matrix44` into a `Matrix33`.+--+-- If this is the original 4x4 matrix:+--+-- @+--  ----------------------------+--    m11    m12    m13    m14+--    m21    m22    m23    m24+--    m31    m32    m33    m34+--    m41    m42    m43    m44+--  ----------------------------+-- @+--+-- Then this is the resulting 3x3 matrix:+--+-- @+--  ---------------------+--    m11    m12    m13+--    m21    m22    m23+--    m31    m32    m33+--  ---------------------+-- @+--+-- The fourth row and column are discarded.+matrix44ToMatrix33 :: Matrix44 -> Matrix33+{-# INLINE matrix44ToMatrix33 #-}+matrix44ToMatrix33 !mat = {-# SCC "matrix44ToMatrix33" #-}+    Matrix33 { n11 = f11+            , n21 = f21+            , n31 = f31+            , n12 = f12+            , n22 = f22+            , n32 = f32+            , n13 = f13+            , n23 = f23+            , n33 = f33 }+  where+    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat++-- | Runs an IO action with a pointer to a Matrix44. The pointer is valid only+-- during the given IO action.+--+-- The pointer points to an array of 16 floating point values. See+-- "Caramia.Math#storable" for a description in which order the values appear.+withMatrix44Ptr :: Matrix44                -- ^ The matrix to marshal.+               -> (Ptr CFloat -> IO a)   -- ^ An IO action that receives a+                                         --   pointer to floating point values+                                         --   describing the matrix.+               -> IO a+{-# INLINE withMatrix44Ptr #-}+withMatrix44Ptr mat action = {-# SCC "withMatrix44Ptr" #-}+    allocaArray 16 $ \ptr -> do+        pokeElemOff ptr 0 (CFloat $ m11 mat)+        pokeElemOff ptr 1 (CFloat $ m21 mat)+        pokeElemOff ptr 2 (CFloat $ m31 mat)+        pokeElemOff ptr 3 (CFloat $ m41 mat)+        pokeElemOff ptr 4 (CFloat $ m12 mat)+        pokeElemOff ptr 5 (CFloat $ m22 mat)+        pokeElemOff ptr 6 (CFloat $ m32 mat)+        pokeElemOff ptr 7 (CFloat $ m42 mat)+        pokeElemOff ptr 8 (CFloat $ m13 mat)+        pokeElemOff ptr 9 (CFloat $ m23 mat)+        pokeElemOff ptr 10 (CFloat $ m33 mat)+        pokeElemOff ptr 11 (CFloat $ m43 mat)+        pokeElemOff ptr 12 (CFloat $ m14 mat)+        pokeElemOff ptr 13 (CFloat $ m24 mat)+        pokeElemOff ptr 14 (CFloat $ m34 mat)+        pokeElemOff ptr 15 (CFloat $ m44 mat)+        action ptr++-- | Same as `withMatrix44Ptr`, only with 9 floating values.+withMatrix33Ptr :: Matrix33 -> (Ptr CFloat -> IO a) -> IO a+{-# INLINE withMatrix33Ptr #-}+withMatrix33Ptr mat action = {-# SCC "withMatrix33Ptr" #-}+    allocaArray 9 $ \ptr -> do+        pokeElemOff ptr 0 (CFloat $ n11 mat)+        pokeElemOff ptr 1 (CFloat $ n21 mat)+        pokeElemOff ptr 2 (CFloat $ n31 mat)+        pokeElemOff ptr 3 (CFloat $ n12 mat)+        pokeElemOff ptr 4 (CFloat $ n22 mat)+        pokeElemOff ptr 5 (CFloat $ n32 mat)+        pokeElemOff ptr 6 (CFloat $ n13 mat)+        pokeElemOff ptr 7 (CFloat $ n23 mat)+        pokeElemOff ptr 8 (CFloat $ n33 mat)+        action ptr++-- | Returns the identity 3x3 matrix.+identity33 :: Matrix33+{-# INLINE identity33 #-}+identity33 = {-# SCC "identity33" #-}+            Matrix33 { n11 = 1.0+                    , n21 = 0.0+                    , n31 = 0.0+                    , n12 = 0.0+                    , n22 = 1.0+                    , n32 = 0.0+                    , n13 = 0.0+                    , n23 = 0.0+                    , n33 = 1.0 }++-- | Returns the 3x3 matrix where all components are zero.+zero33 :: Matrix33+{-# INLINE zero33 #-}+zero33 = {-# SCC "zero33" #-}+         Matrix33 { n11 = 0.0+                 , n21 = 0.0+                 , n31 = 0.0+                 , n12 = 0.0+                 , n22 = 0.0+                 , n32 = 0.0+                 , n13 = 0.0+                 , n23 = 0.0+                 , n33 = 0.0 }++-- | Returns the identity 4x4 matrix.+identity44 :: Matrix44+{-# INLINE identity44 #-}+identity44 = {-# SCC "identity44" #-}+            Matrix44 { m11 = 1.0+                    , m21 = 0.0+                    , m31 = 0.0+                    , m41 = 0.0+                    , m12 = 0.0+                    , m22 = 1.0+                    , m32 = 0.0+                    , m42 = 0.0+                    , m13 = 0.0+                    , m23 = 0.0+                    , m33 = 1.0+                    , m43 = 0.0+                    , m14 = 0.0+                    , m24 = 0.0+                    , m34 = 0.0+                    , m44 = 1.0 }++-- | Returns the 4x4 matrix where all components are zero.+zero44 :: Matrix44+{-# INLINE zero44 #-}+zero44 = {-# SCC "zero44" #-}+        Matrix44 { m11 = 0.0+                , m21 = 0.0+                , m31 = 0.0+                , m41 = 0.0+                , m12 = 0.0+                , m22 = 0.0+                , m32 = 0.0+                , m42 = 0.0+                , m13 = 0.0+                , m23 = 0.0+                , m33 = 0.0+                , m43 = 0.0+                , m14 = 0.0+                , m24 = 0.0+                , m34 = 0.0+                , m44 = 0.0 }++-- | Calculates the inverse of a 4x4 matrix.+--+-- A matrix doesn't always have an inverse. In this case, the matrix values+-- will most likely end up being NaNs.+inverse44 :: Matrix44 -> Matrix44+{-# INLINE inverse44 #-}+inverse44 !mat4 = {-# SCC "inverse44" #-}+    Matrix44 { m11 = (f11 * b11 - f12 * b10 + f13 * b9) * det+            , m12 = (f02 * b10 - f01 * b11 - f03 * b9) * det+            , m13 = (f31 * b5 - f32 * b4 + f33 * b3) * det+            , m14 = (f22 * b4 - f21 * b5 - f23 * b3) * det+            , m21 = (f12 * b8 - f10 * b11 - f13 * b7) * det+            , m22 = (f00 * b11 - f02 * b8 + f03 * b7) * det+            , m23 = (f32 * b2 - f30 * b5 - f33 * b1) * det+            , m24 = (f20 * b5 - f22 * b2 + f23 * b1) * det+            , m31 = (f10 * b10 - f11 * b8 + f13 * b6) * det+            , m32 = (f01 * b8 - f00 * b10 - f03 * b6) * det+            , m33 = (f30 * b4 - f31 * b2 + f33 * b0) * det+            , m34 = (f21 * b2 - f20 * b4 - f23 * b0) * det+            , m41 = (f11 * b7 - f10 * b9 - f12 * b6) * det+            , m42 = (f00 * b9 - f01 * b7 + f02 * b6) * det+            , m43 = (f31 * b1 - f30 * b3 - f32 * b0) * det+            , m44 = (f20 * b3 - f21 * b1 + f22 * b0) * det }+  where+    f00 = m11 mat4+    f10 = m21 mat4+    f20 = m31 mat4+    f30 = m41 mat4+    f01 = m12 mat4+    f11 = m22 mat4+    f21 = m32 mat4+    f31 = m42 mat4+    f02 = m13 mat4+    f12 = m23 mat4+    f22 = m33 mat4+    f32 = m43 mat4+    f03 = m14 mat4+    f13 = m24 mat4+    f23 = m34 mat4+    f33 = m44 mat4++    b0  = f00 * f11 - f01 * f10+    b1  = f00 * f12 - f02 * f10+    b2  = f00 * f13 - f03 * f10+    b3  = f01 * f12 - f02 * f11+    b4  = f01 * f13 - f03 * f11+    b5  = f02 * f13 - f03 * f12+    b6  = f20 * f31 - f21 * f30+    b7  = f20 * f32 - f22 * f30+    b8  = f20 * f33 - f23 * f30+    b9  = f21 * f32 - f22 * f31+    b10 = f21 * f33 - f23 * f31+    b11 = f22 * f33 - f23 * f32++    det' = b0*b11 - b1*b10 + b2*b9 + b3*b8 - b4*b7 + b5*b6+    det = 1.0 / det'++-- | Calculates the determinant of a 3x3 matrix.+determinant33 :: Matrix33 -> Float+{-# INLINE determinant33 #-}+determinant33 !mat = {-# SCC "determinant33" #-} det'+  where+    det' = f11*f22*f33 + f12*f23*f31 + f13*f21*f32 -+           f13*f22*f31 - f12*f21*f33 - f11*f23*f32+    f11 = n11 mat+    f21 = n21 mat+    f31 = n31 mat+    f12 = n12 mat+    f22 = n22 mat+    f32 = n32 mat+    f13 = n13 mat+    f23 = n23 mat+    f33 = n33 mat++-- | Calculats the inverse of a 3x3 matrix.+--+-- A matrix doesn't always have an inverse. In this case, the matrix values+-- will most likely end up being NaNs.+inverse33 :: Matrix33 -> Matrix33+{-# INLINE inverse33 #-}+inverse33 !mat = {-# SCC "inverse33" #-}+    Matrix33 { n11 = (f22*f33-f23*f32)*det'+            , n12 = (f13*f32-f12*f33)*det'+            , n13 = (f12*f23-f13*f22)*det'+            , n21 = (f23*f31-f21*f33)*det'+            , n22 = (f11*f33-f13*f31)*det'+            , n23 = (f13*f21-f11*f23)*det'+            , n31 = (f21*f32-f22*f31)*det'+            , n32 = (f12*f31-f11*f32)*det'+            , n33 = (f11*f22-f12*f21)*det' }+  where+    det' = 1.0 /+           (f11*f22*f33 + f12*f23*f31 + f13*f21*f32 -+            f13*f22*f31 - f12*f21*f33 - f11*f23*f32)+    f11 = n11 mat+    f21 = n21 mat+    f31 = n31 mat+    f12 = n12 mat+    f22 = n22 mat+    f32 = n32 mat+    f13 = n13 mat+    f23 = n23 mat+    f33 = n33 mat++-- | Calculates the determinant of a 4x4 matrix.+determinant44 :: Matrix44 -> Float+{-# INLINE determinant44 #-}+determinant44 !mat =  {-# SCC "determinant44" #-} det'+  where+    det' = b0*b11 - b1*b10 + b2*b9 + b3*b8 - b4*b7 + b5*b6++    f00 = m11 mat+    f10 = m21 mat+    f20 = m31 mat+    f30 = m41 mat+    f01 = m12 mat+    f11 = m22 mat+    f21 = m32 mat+    f31 = m42 mat+    f02 = m13 mat+    f12 = m23 mat+    f22 = m33 mat+    f32 = m43 mat+    f03 = m14 mat+    f13 = m24 mat+    f23 = m34 mat+    f33 = m44 mat++    b0  = f00 * f11 - f01 * f10+    b1  = f00 * f12 - f02 * f10+    b2  = f00 * f13 - f03 * f10+    b3  = f01 * f12 - f02 * f11+    b4  = f01 * f13 - f03 * f11+    b5  = f02 * f13 - f03 * f12+    b6  = f20 * f31 - f21 * f30+    b7  = f20 * f32 - f22 * f30+    b8  = f20 * f33 - f23 * f30+    b9  = f21 * f32 - f22 * f31+    b10 = f21 * f33 - f23 * f31+    b11 = f22 * f33 - f23 * f32++-- | Multiplies two 3x3 matrices together.+multiply33 :: Matrix33 -> Matrix33 -> Matrix33+{-# INLINE multiply33 #-}+multiply33 !mat1 !mat2 = {-# SCC "multiply33" #-}+    Matrix33 { n11 = s11*f11 + s21*f12 + s31*f13+            , n21 = s11*f21 + s21*f22 + s31*f23+            , n31 = s11*f31 + s21*f32 + s31*f33+            , n12 = s12*f11 + s22*f12 + s32*f13+            , n22 = s12*f21 + s22*f22 + s32*f23+            , n32 = s12*f31 + s22*f32 + s32*f33+            , n13 = s13*f11 + s23*f12 + s33*f13+            , n23 = s13*f21 + s23*f22 + s33*f23+            , n33 = s13*f31 + s23*f32 + s33*f33 }+  where+    f11 = n11 mat1+    f21 = n21 mat1+    f31 = n31 mat1+    f12 = n12 mat1+    f22 = n22 mat1+    f32 = n32 mat1+    f13 = n13 mat1+    f23 = n23 mat1+    f33 = n33 mat1+    s11 = n11 mat2+    s21 = n21 mat2+    s31 = n31 mat2+    s12 = n12 mat2+    s22 = n22 mat2+    s32 = n32 mat2+    s13 = n13 mat2+    s23 = n23 mat2+    s33 = n33 mat2++-- | Multiplies two 4x4 matrices together.+multiply44 :: Matrix44 -> Matrix44 -> Matrix44+{-# INLINE multiply44 #-}+multiply44 !mat1 !mat2 = {-# SCC "multiply44" #-}+    Matrix44 { m11 = s11*f11 + s21*f12 + s31*f13 + s41*f14+            , m21 = s11*f21 + s21*f22 + s31*f23 + s41*f24+            , m31 = s11*f31 + s21*f32 + s31*f33 + s41*f34+            , m41 = s11*f41 + s21*f42 + s31*f43 + s41*f44+            , m12 = s12*f11 + s22*f12 + s32*f13 + s42*f14+            , m22 = s12*f21 + s22*f22 + s32*f23 + s42*f24+            , m32 = s12*f31 + s22*f32 + s32*f33 + s42*f34+            , m42 = s12*f41 + s22*f42 + s32*f43 + s42*f44+            , m13 = s13*f11 + s23*f12 + s33*f13 + s43*f14+            , m23 = s13*f21 + s23*f22 + s33*f23 + s43*f24+            , m33 = s13*f31 + s23*f32 + s33*f33 + s43*f34+            , m43 = s13*f41 + s23*f42 + s33*f43 + s43*f44+            , m14 = s14*f11 + s24*f12 + s34*f13 + s44*f14+            , m24 = s14*f21 + s24*f22 + s34*f23 + s44*f24+            , m34 = s14*f31 + s24*f32 + s34*f33 + s44*f34+            , m44 = s14*f41 + s24*f42 + s34*f43 + s44*f44 }+  where+    f11 = m11 mat1+    f21 = m21 mat1+    f31 = m31 mat1+    f41 = m41 mat1+    f12 = m12 mat1+    f22 = m22 mat1+    f32 = m32 mat1+    f42 = m42 mat1+    f13 = m13 mat1+    f23 = m23 mat1+    f33 = m33 mat1+    f43 = m43 mat1+    f14 = m14 mat1+    f24 = m24 mat1+    f34 = m34 mat1+    f44 = m44 mat1+    s11 = m11 mat2+    s21 = m21 mat2+    s31 = m31 mat2+    s41 = m41 mat2+    s12 = m12 mat2+    s22 = m22 mat2+    s32 = m32 mat2+    s42 = m42 mat2+    s13 = m13 mat2+    s23 = m23 mat2+    s33 = m33 mat2+    s43 = m43 mat2+    s14 = m14 mat2+    s24 = m24 mat2+    s34 = m34 mat2+    s44 = m44 mat2++-- | Returns the Euclidean distance between two 3x3 matrices, where the+-- matrices are taken to be 9-vectors.+--+-- This can be used as a rough estimate how close, or similar two matrices are+-- to each other.+distance33 :: Matrix33 -> Matrix33 -> Float+{-# INLINE distance33 #-}+distance33 !mat1 !mat2 = {-# SCC "distance33" #-}+    sqrt $ (f11-s11)**2++           (f12-s12)**2++           (f13-s13)**2++           (f21-s21)**2++           (f22-s22)**2++           (f23-s23)**2++           (f31-s31)**2++           (f32-s32)**2++           (f33-s33)**2+  where+    f11 = n11 mat1+    f21 = n21 mat1+    f31 = n31 mat1+    f12 = n12 mat1+    f22 = n22 mat1+    f32 = n32 mat1+    f13 = n13 mat1+    f23 = n23 mat1+    f33 = n33 mat1+    s11 = n11 mat2+    s21 = n21 mat2+    s31 = n31 mat2+    s12 = n12 mat2+    s22 = n22 mat2+    s32 = n32 mat2+    s13 = n13 mat2+    s23 = n23 mat2+    s33 = n33 mat2++-- | Returns the Euclidean distance between two 4x4 matrices, where the+-- matrices are taken to be 9-vectors.+--+-- This can be used as a rough estimate how close, or similar two matrices are+-- to each other.+distance44 :: Matrix44 -> Matrix44 -> Float+{-# INLINE distance44 #-}+distance44 !mat1 !mat2 = {-# SCC "distance44" #-}+    sqrt $ (f11-s11)**2++           (f12-s12)**2++           (f13-s13)**2++           (f14-s14)**2++           (f21-s21)**2++           (f22-s22)**2++           (f23-s23)**2++           (f24-s24)**2++           (f31-s31)**2++           (f32-s32)**2++           (f33-s33)**2++           (f34-s34)**2++           (f41-s41)**2++           (f42-s42)**2++           (f43-s43)**2++           (f44-s44)**2+  where+    f11 = m11 mat1+    f21 = m21 mat1+    f31 = m31 mat1+    f41 = m41 mat1+    f12 = m12 mat1+    f22 = m22 mat1+    f32 = m32 mat1+    f42 = m42 mat1+    f13 = m13 mat1+    f23 = m23 mat1+    f33 = m33 mat1+    f43 = m43 mat1+    f14 = m14 mat1+    f24 = m24 mat1+    f34 = m34 mat1+    f44 = m44 mat1+    s11 = m11 mat2+    s21 = m21 mat2+    s31 = m31 mat2+    s41 = m41 mat2+    s12 = m12 mat2+    s22 = m22 mat2+    s32 = m32 mat2+    s42 = m42 mat2+    s13 = m13 mat2+    s23 = m23 mat2+    s33 = m33 mat2+    s43 = m43 mat2+    s14 = m14 mat2+    s24 = m24 mat2+    s34 = m34 mat2+    s44 = m44 mat2++-- | Constructs a perspective projection matrix.+perspective44 :: Float    -- ^ Field of view in radians.+              -> Float    -- ^ Aspect ratio.+              -> Float    -- ^ Near plane distance.+              -> Float    -- ^ Far plane distance.+              -> Matrix44+{-# INLINE perspective44 #-}+perspective44 !fov_y !aspect_ratio !near !far = {-# SCC "perspective44" #-}+    frustum44 (-right) right (-top) top near far+  where+    top = near * tan fov_y+    right = top * aspect_ratio+++-- | Constructs a perspective projection matrix by frustum planes.+frustum44 :: Float     -- ^ Left plane.+          -> Float     -- ^ Right plane.+          -> Float     -- ^ Bottom plane.+          -> Float     -- ^ Top plane.+          -> Float     -- ^ Near plane.+          -> Float     -- ^ Far plane.+          -> Matrix44+{-# INLINE frustum44 #-}+frustum44 !left !right !bottom !top !near !far = {-# SCC "frustum44" #-}+    zero44 { m11 = n2 * rl+           , m22 = n2 * tb+           , m13 = (right + left) * rl+           , m23 = (top + bottom) * tb+           , m33 = (far + near) * nf+           , m43 = -1.0+           , m34 = far * n2 * nf }+  where+    rl = 1.0 / (right - left)+    tb = 1.0 / (top - bottom)+    nf = 1.0 / (near - far)+    n2 = near * 2.0++-- | Constructs an orthogonal projection matrix by planes.+ortho44 :: Float     -- ^ Left plane.+        -> Float     -- ^ Right plane.+        -> Float     -- ^ Bottom plane.+        -> Float     -- ^ Top plane.+        -> Float     -- ^ Near plane.+        -> Float     -- ^ Far plane.+        -> Matrix44+{-# INLINE ortho44 #-}+ortho44 !left !right !bottom !top !near !far = {-# SCC "ortho44" #-}+    zero44 { m11 = (-2.0) * lr+           , m22 = (-2.0) * bt+           , m33 = 2.0 * nf+           , m14 = (left + right) * lr+           , m24 = (top + bottom) * bt+           , m34 = (far + near) * nf+           , m44 = 1.0 }+  where+    lr = 1.0 / (left - right)+    bt = 1.0 / (bottom - top)+    nf = 1.0 / (near - far)++-- | Constructs a look-at view matrix.+lookat44 :: Vector3       -- ^ Eye position.+         -> Vector3       -- ^ Center position (that is, the point we are going+                          --   to stare at).+         -> Vector3       -- ^ Up vector. You probably want to normalize this.+         -> Matrix44+{-# INLINE lookat44 #-}+lookat44 eye@(Vector3 !eyex !eyey !eyez) !center (Vector3 !ux !uy !uz)+    | ec_len < 0.000001 = identity44+    | otherwise = {-# SCC "lookat44" #-}+        Matrix44 { m11 = xx, m21 = yx, m31 = ecx, m41 = 0.0+                , m12 = xy, m22 = yy, m32 = ecy, m42 = 0.0+                , m13 = xz, m23 = yz, m33 = ecz, m43 = 0.0+                , m14 = -(xx * eyex + xy * eyey + xz * eyez)+                , m24 = -(yx * eyex + yy * eyey + yz * eyez)+                , m34 = -(ecx * eyex + ecy * eyey + ecz * eyez)+                , m44 = 1.0 }+  where+    ec = eye `minus3` center+    Vector3 ecx ecy ecz = normalize3 ec+    ec_len = length3 ec++    yvec = Vector3 (ecy*xz - ecz*xy)+                   (ecz*xx - ecx*xz)+                   (ecx*xy - ecy*xx)+    Vector3 yx yy yz =+        if length3 yvec == 0.0+          then Vector3 0 0 0+          else normalize3 yvec++    xvec = Vector3 (uy*ecz - uz*ecy)+                   (uz*ecx - ux*ecz)+                   (ux*ecy - uy*ecx)+    Vector3 xx xy xz =+        if length3 xvec == 0.0+          then Vector3 0 0 0+          else normalize3 xvec++-- | Normalizes a 3-vector to unit length.+--+-- If the vector is a zero vector then this probably gives you a vector with+-- NaNs as values.+normalize3 :: Vector3 -> Vector3+{-# INLINE normalize3 #-}+normalize3 v@(Vector3 !x !y !z) = {-# SCC "normalize3" #-}+    Vector3 (x*ilen) (y*ilen) (z*ilen)+  where+    ilen = 1.0 / length3 v++-- | Returns the Euclidean distance between to 3-vectors.+distance3 :: Vector3 -> Vector3 -> Float+{-# INLINE distance3 #-}+distance3 (Vector3 !x1 !y1 !z1) (Vector3 !x2 !y2 !z2) = {-# SCC "distance3" #-}+    sqrt $ (x2-x1)**2 + (y2-y1)**2 + (z2-z1)**2++-- | Returns the length of a 3-vector.+length3 :: Vector3 -> Float+{-# INLINE length3 #-}+length3 (Vector3 !x !y !z) = {-# SCC "length3" #-} sqrt $ x**2 + y**2 + z**2++-- | Sums two 3-vectors together.+plus3 :: Vector3 -> Vector3 -> Vector3+{-# INLINE plus3 #-}+plus3 (Vector3 !x1 !y1 !z1) (Vector3 !x2 !y2 !z2) = {-# SCC "plus3" #-}+    Vector3 (x1+x2) (y1+y2) (z1+z2)++-- | Subtracts the second 3-vector from the first.+minus3 :: Vector3 -> Vector3 -> Vector3+{-# INLINE minus3 #-}+minus3 (Vector3 !x1 !y1 !z1) (Vector3 !x2 !y2 !z2) = {-# SCC "minus3" #-}+    Vector3 (x1-x2) (y1-y2) (z1-z2)++-- | Negates all components of a 3-vector.+negative3 :: Vector3 -> Vector3+{-# INLINE negative3 #-}+negative3 (Vector3 !x !y !z) = {-# SCC "negative3" #-} Vector3 (-x) (-y) (-z)++-- | Multiplies all components of a 3-vector with a scalar.+scalarMultiply3 :: Float -> Vector3 -> Vector3+{-# INLINE scalarMultiply3 #-}+scalarMultiply3 scalar (Vector3 !x !y !z) = {-# SCC "scalarMultiply3" #-}+    Vector3 (x*scalar) (y*scalar) (z*scalar)++-- | Modify a 4x4 matrix to scale everything by given vector.+scale44 :: Vector3         -- ^ The scale vector.+       -> Matrix44         -- ^ The matrix to modify.+       -> Matrix44+{-# INLINE scale44 #-}+scale44 (Vector3 !x !y !z) !mat = {-# SCC "scale44" #-}+    mat { m11 = f11*x+        , m21 = f21*x+        , m31 = f31*x+        , m41 = f41*x+        , m12 = f12*y+        , m22 = f22*y+        , m32 = f32*y+        , m42 = f42*y+        , m13 = f13*z+        , m23 = f23*z+        , m33 = f33*z+        , m43 = f43*z }+  where+    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f41 = m41 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f42 = m42 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat+    f43 = m43 mat++-- | Transposes a 3x3 matrix.+transpose33 :: Matrix33 -> Matrix33+{-# INLINE transpose33 #-}+transpose33 !mat = {-# SCC "transpose33" #-}+    Matrix33 { n11 = f11+              , n12 = f21+              , n13 = f31+              , n21 = f12+              , n22 = f22+              , n23 = f32+              , n31 = f13+              , n32 = f23+              , n33 = f33 }+  where+    f11 = n11 mat+    f21 = n21 mat+    f31 = n31 mat+    f12 = n12 mat+    f22 = n22 mat+    f32 = n32 mat+    f13 = n13 mat+    f23 = n23 mat+    f33 = n33 mat++-- | Transposes a 4x4 matrix.+transpose44 :: Matrix44 -> Matrix44+{-# INLINE transpose44 #-}+transpose44 !mat = {-# SCC "transpose44" #-}+    Matrix44 { m11 = f11+            , m12 = f21+            , m13 = f31+            , m14 = f41+            , m21 = f12+            , m22 = f22+            , m23 = f32+            , m24 = f42+            , m31 = f13+            , m32 = f23+            , m33 = f33+            , m34 = f43+            , m41 = f14+            , m42 = f24+            , m43 = f34+            , m44 = f44 }+  where+    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f41 = m41 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f42 = m42 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat+    f43 = m43 mat+    f14 = m14 mat+    f24 = m24 mat+    f34 = m34 mat+    f44 = m44 mat++-- | Modifies a 4x4 matrix to include translation.+--+-- This is the same as multiplying a 4x4 matrix with a translation matrix.+translate44 :: Vector3      -- ^ The translation vector.+           -> Matrix44      -- ^ The matrix to modify.+           -> Matrix44+{-# INLINE translate44 #-}+translate44 (Vector3 !x !y !z) !mat = {-# SCC "translate44" #-}+    mat { m14 = f11*x + f12*y + f13*z + f14+        , m24 = f21*x + f22*y + f23*z + f24+        , m34 = f31*x + f32*y + f33*z + f34+        , m44 = f41*x + f42*y + f43*z + f44 }+  where+    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f41 = m41 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f42 = m42 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat+    f43 = m43 mat+    f14 = m14 mat+    f24 = m24 mat+    f34 = m34 mat+    f44 = m44 mat++-- | Modifies a 4x4 matrix to include rotation as specified by an axis-angle+-- representation.+--+-- This is the same as multiplying a matrix with a rotation matrix.+rotate44 :: Float         -- ^ The angle, how much to rotate. In radians.+        -> Vector3       -- ^ The rotation axis.+        -> Matrix44       -- ^ The matrix to modify.+        -> Matrix44+{-# INLINE rotate44 #-}+rotate44 !radians !axis !mat = {-# SCC "rotate44" #-}+    mat { m11 = f11*r11 + f21*r12 + f31*r13+        , m21 = f12*r11 + f21*r12 + f32*r13+        , m31 = f13*r11 + f23*r12 + f33*r13+        , m41 = f14*r11 + f24*r12 + f34*r13+        , m12 = f11*r21 + f21*r22 + f31*r23+        , m22 = f12*r21 + f22*r22 + f32*r23+        , m32 = f13*r21 + f23*r22 + f33*r23+        , m42 = f14*r21 + f24*r22 + f34*r23+        , m13 = f11*r31 + f21*r32 + f31*r33+        , m23 = f12*r31 + f22*r32 + f32*r33+        , m33 = f13*r31 + f23*r32 + f33*r33+        , m43 = f14*r31 + f24*r32 + f31*r33 }+  where+    r11 = x*x*t+cosf+    r12 = y*x*t+z*sinf+    r13 = z*x*t-y*sinf+    r21 = x*y*t-z*sinf+    r22 = y*y*t+cosf+    r23 = z*y*t+x*sinf+    r31 = x*z*t+y*sinf+    r32 = y*z*t-x*sinf+    r33 = z*z*t+cosf++    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat+    f14 = m14 mat+    f24 = m24 mat+    f34 = m34 mat++    t = 1 - cosf+    sinf = sin radians+    cosf = cos radians+    (Vector3 !x !y !z) = normalize3 axis++-- | Transforms a 3-vector with a 4x4 matrix.+--+-- This would be the same as transforming a 4-vector with a 4x4 matrix but the+-- fourth component is taken to be 1 and is not returned.+vector3Transform44 :: Matrix44 -> Vector3 -> Vector3+{-# INLINE vector3Transform44 #-}+vector3Transform44 !mat (Vector3 !x !y !z) = {-# SCC "vector3Transform44" #-}+    Vector3 { x = f11*x + f12*y + f13*z + f14+            , y = f21*x + f22*y + f23*z + f24+            , z = f31*x + f32*y + f33*z + f34 }+  where+    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat+    f14 = m14 mat+    f24 = m24 mat+    f34 = m34 mat++-- | Returns the cross product between two 3-vectors.+cross3 :: Vector3 -> Vector3 -> Vector3+{-# INLINE cross3 #-}+cross3 (Vector3 !x1 !y1 !z1) (Vector3 !x2 !y2 !z2) = {-# SCC "cross3" #-}+    Vector3 { x = y1*z2 - z1*y2+            , y = z1*x2 - x1*z2+            , z = x1*y2 - y1*x2 }++-- | Returns the angle, in radians, between two 3-vectors.+--+-- The vectors are normalized by this function so you need not to do that+-- yourself.+angle3 :: Vector3 -> Vector3 -> Float+{-# INLINE angle3 #-}+angle3 v1 v2 = {-# SCC "angle3" #-} acos $ n1 `dot3` n2+  where+    n1 = normalize3 v1+    n2 = normalize3 v2++-- | Returns the dot product between two 3-vectors.+dot3 :: Vector3 -> Vector3 -> Float+{-# INLINE dot3 #-}+dot3 (Vector3 !x1 !y1 !z1) (Vector3 !x2 !y2 !z2) = {-# SCC "dot3" #-}+    x1*x2 + y1*y2 + z1*z2++-- | Transforms a 3-vector into a tuple.+toTuple3 :: Vector3 -> (Float, Float, Float)+{-# INLINE toTuple3 #-}+toTuple3 (Vector3 !x !y !z) = {-# SCC "toTuple3" #-} (x, y, z)++-- | Transforms a tuple into a 3-vector.+fromTuple3 :: (Float, Float, Float) -> Vector3+{-# INLINE fromTuple3 #-}+fromTuple3 (!x, !y, !z) = {-# SCC "fromTuple3" #-}+    Vector3 { x = x, y = y, z = z }++-- | Returns a vector where all components are 0.+zero3 :: Vector3+{-# INLINE zero3 #-}+zero3 = {-# SCC "zero3" #-} Vector3 { x = 0, y = 0, z = 0 }++-- | Transforms a 4x4 matrix to a list of floats.+--+-- The list follows the same order as the `Storable` instance does for+-- `Matrix44` floating point values.  The list will always have 16 elements.+toList4 :: Matrix44 -> [Float]+toList4 mat = {-# SCC "toList4" #-}+    (\f -> f mat) <$>+        [m11, m21, m31, m41+        ,m12, m22, m32, m42+        ,m13, m23, m33, m43+        ,m14, m24, m34, m44]++-- | Construct a quaternion out of 4 values.+quaternion :: Float           -- ^ The x-component.+           -> Float           -- ^ The y-component.+           -> Float           -- ^ The z-component.+           -> Float           -- ^ The w-component.+           -> Quaternion+{-# INLINE quaternion #-}+quaternion !x !y !z !w = {-# SCC "quaternion" #-}+    Quaternion { qx = x, qy = y, qz = z, qw = w }++-- | Turns a quaternion into a 4-tuple.+toTupleq :: Quaternion -> (Float, Float, Float, Float)+{-# INLINE toTupleq #-}+toTupleq (Quaternion !x !y !z !w) = {-# SCC "toTupleq" #-} (x, y, z, w)++-- | Turns a 4-tuple into a quaternion.+fromTupleq :: (Float, Float, Float, Float) -> Quaternion+{-# INLINE fromTupleq #-}+fromTupleq (!x, !y, !z, !w) = {-# SCC "fromTupleq" #-} Quaternion x y z w++-- | \"canonicalizes\" a quaternion.+--+-- Some rotations have different representations as a quaternion. This function+-- canonicalizes the quaternion so that those rotations are the same.+--+-- Don't rely on this. This is used in some automatic tests to see that the+-- quaternions work correctly.+canonicalizeq :: Quaternion -> Quaternion+{-# INLINE canonicalizeq #-}+canonicalizeq q@(Quaternion !x !y !z !w) = {-# SCC "canonicalizeq" #-}+    canonicalizeq'+  where+    canonicalizeq'+        | w > 0 = q+        | otherwise = Quaternion (-x) (-y) (-z) (-w)++-- | Normalizes a quaternion to unit length.+normalizeq :: Quaternion -> Quaternion+{-# INLINE normalizeq #-}+normalizeq (Quaternion !x !y !z !w) = {-# SCC "normalizeq" #-}+    Quaternion (x*t) (y*t) (z*t) (w*t)+  where+    t = 1.0 / sqrt (x*x + y*y + z*z + w*w)++-- | Returns the Euclidean distance between two quaternions.+distanceq :: Quaternion -> Quaternion -> Float+{-# INLINE distanceq #-}+distanceq (Quaternion !x1 !y1 !z1 !w1)+          (Quaternion !x2 !y2 !z2 !w2) = {-# SCC "distanceq" #-}+    sqrt $ (x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2 + (w1-w2)**2++-- | Returns the length of a quaternion.+lengthq :: Quaternion -> Float+{-# INLINE lengthq #-}+lengthq (Quaternion !x !y !z !w) = {-# SCC "lengthq" #-}+    sqrt $ x*x + y*y + z*z + w*w++-- | Turns an axis angle rotation into a quaternion.+axisAngleToQuaternion :: Float      -- ^ The angle, in radians.+                      -> Vector3    -- ^ The rotation axis.+                      -> Quaternion+{-# INLINE axisAngleToQuaternion #-}+axisAngleToQuaternion !radians !vec = {-# SCC "axisAngleToQuaternion" #-}+    Quaternion { qx = x * sin_angle+               , qy = y * sin_angle+               , qz = z * sin_angle+               , qw = cos hangle }+  where+    Vector3 x y z = normalize3 vec+    sin_angle = sin hangle+    hangle = radians * 0.5++-- | Returns a quaternion where all the elements are zero.+zeroq :: Quaternion+{-# INLINE zeroq #-}+zeroq = {-# SCC "zeroq" #-} Quaternion 0 0 0 0++-- | Turns the quaternion into a 4x4 rotation matrix.+quaternionToMatrix44 :: Quaternion -> Matrix44+{-# INLINE quaternionToMatrix44 #-}+quaternionToMatrix44 !q = {-# SCC "quaternionToMatrix44" #-}+    identity44 { m11 = 1 - yy2 - zz2+               , m22 = 1 - xx2 - zz2+               , m33 = 1 - xx2 - yy2++               , m32 = yz2 - wx2+               , m23 = yz2 + wx2+               , m21 = xy2 - wz2+               , m12 = xy2 + wz2+               , m13 = xz2 - wy2+               , m31 = xz2 + wy2 }+  where+    Quaternion x y z w = normalizeq q+    x2 = x+x+    y2 = y+y+    z2 = z+z+    xx2 = x*x2+    yy2 = y*y2+    zz2 = z*z2+    yz2 = y*z2+    wx2 = w*x2+    xy2 = x*y2+    wz2 = w*z2+    xz2 = x*z2+    wy2 = w*y2++-- | Extracts rotation from a 4x4 matrix and returns it as a quaternion.+--+-- Note that+--+-- @+--     matrix44ToQuaternion . quaternionToMatrix44+-- @+--+-- may not be the identity function. The signs on the quaternion components may+-- be different and because the floating point calculation is not completely+-- precise, the values are often slightly different than they were originally.+matrix44ToQuaternion :: Matrix44 -> Quaternion+{-# INLINE matrix44ToQuaternion #-}+matrix44ToQuaternion !mat = {-# SCC "matrix44ToQuaternion" #-}+    matrix44ToQuaternion'+  where+    matrix44ToQuaternion'+        | trace > 0 =+            let t = trace + 1+                s = 0.5 * isqrt t+             in Quaternion { qw = s * t+                           , qz = (f12 - f21) * s+                           , qy = (f31 - f13) * s+                           , qx = (f23 - f32) * s }++        | f11 > f22 && f11 > f33 =+            let t = f11 - f22 - f33 + 1+                s = 0.5 * isqrt t+             in Quaternion { qx = s * t+                           , qy = (f12 + f21) * s+                           , qz = (f31 + f13) * s+                           , qw = (f23 - f32) * s }++        | f22 > f33 =+            let t = (-f11) + f22 - f33 + 1+                s = 0.5 * isqrt t+             in Quaternion { qy = s * t+                           , qx = (f12 + f21) * s+                           , qw = (f31 - f13) * s+                           , qz = (f23 + f32) * s }++        | otherwise =+            let t = (-f11) - f22 + f33 + 1+                s = 0.5 * isqrt t+             in Quaternion { qz = s * t+                           , qw = (f12 - f21) * s+                           , qx = (f31 + f13) * s+                           , qy = (f23 + f32) * s }++    trace = f11 + f22 + f33+    isqrt = (1.0 /) . sqrt++    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat++-- | Returns the identity quaternion. It won't rotate anything.+identityq :: Quaternion+{-# INLINE identityq #-}+identityq = {-# SCC "identityq" #-} quaternion 0 0 0 1++{-# ANN vector3_1ToQuaternion ("HLint: ignore Use camelCase" :: String) #-}+-- | Turns a `Vector3` and an extra value to a quaternion.+vector3_1ToQuaternion :: Vector3 -> Float -> Quaternion+{-# INLINE vector3_1ToQuaternion #-}+vector3_1ToQuaternion (Vector3 x y z) = quaternion x y z++-- | Multiplies two quaternions together.+multiplyq :: Quaternion -> Quaternion -> Quaternion+multiplyq (Quaternion !x1 !y1 !z1 !w1)+          (Quaternion !x2 !y2 !z2 !w2) = {-# SCC "multiplyq" #-}+    Quaternion { qw = w1*w2 - x1*x2 - y1*y2 - z1*z2+               , qx = w1*x2 + x1*w2 + y1*z2 - z1*y2+               , qy = w1*y2 - x1*z2 + y1*w2 + z1*x2+               , qz = w1*z2 + x1*y2 - y1*x2 + z1*w2 }++pad :: Int -> String -> String+pad wanted_len str+  | len < wanted_len = str ++ replicate (wanted_len - len) ' '+  | otherwise = str+  where+    len = length str++-- | Returns a \"pretty\" string that represents a 4x4 matrix.+--+-- This could be useful for debugging (and has been used as such in the+-- development of Caramia). The default `Show` instance for `Matrix44` is+-- machine-readable but annoying for humans to read. This function returns a+-- somewhat more human-readable string that you can display.+--+-- The string will contain newlines.+prettyShow :: Matrix44 -> String+prettyShow mat =+    lines [[f11,f12,f13,f14],[f21,f22,f23,f24],+           [f31,f32,f33,f34],[f41,f42,f43,f44]]+  where+    lines = concatMap ((++ "\n") . line)+    line marks =+        "[ " ++ concatMap (("  " ++) . pad wanted_len . show) marks ++ " ]"+    wanted_len = 1 + maximum (map (length . show) $ toList4 mat)++    f11 = m11 mat+    f21 = m21 mat+    f31 = m31 mat+    f41 = m41 mat+    f12 = m12 mat+    f22 = m22 mat+    f32 = m32 mat+    f42 = m42 mat+    f13 = m13 mat+    f23 = m23 mat+    f33 = m33 mat+    f43 = m43 mat+    f14 = m14 mat+    f24 = m24 mat+    f34 = m34 mat+    f44 = m44 mat+
+ src/Caramia/Memory.hs view
@@ -0,0 +1,64 @@+-- | Retrieve video memory information.+--++{-# LANGUAGE MultiWayIf, NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Memory+    ( getMemoryInfo+    , MemoryInfo(..) )+    where++import Caramia.Prelude+import Caramia.Context+import Caramia.Internal.OpenGLCApi+import Foreign.Marshal.Alloc+import Foreign.Storable++data MemoryInfo = MemoryInfo+    { availableVideoMemory :: !(Maybe Int)+    , totalVideoMemory     :: !(Maybe Int) }+    deriving ( Eq, Ord, Show, Read, Typeable )++-- | Returns information about current state of video memory.+--+-- There is no guarantee that all, or even any information is actually+-- returned. You need either \'GL_ATI_meminfo\' or \'GL_NVX_gpu_memory_info\'+-- extension to get any results.+--+-- No guarantees for accuracy either. Seriously, don't rely on this for+-- anything but rough estimation.+getMemoryInfo :: IO MemoryInfo+getMemoryInfo = do+    _ <- currentContextID  -- Just checking that OpenGL context is active.+    has_meminfo <- has_GL_ATI_meminfo+    has_gpu_memory_info <- has_GL_NVX_gpu_memory_info+    if | has_meminfo -> atiGetMem+       | has_gpu_memory_info -> nvidiaGetMem+       | otherwise -> return noInformation++noInformation :: MemoryInfo+noInformation = MemoryInfo+    { availableVideoMemory = Nothing+    , totalVideoMemory = Nothing }++atiGetMem :: IO MemoryInfo+atiGetMem =+    alloca $ \result_ptr -> do+        glGetIntegerv gl_TEXTURE_FREE_MEMORY_ATI result_ptr+        result <- peek result_ptr+        return MemoryInfo { availableVideoMemory = Just $ fromIntegral result+                          , totalVideoMemory = Nothing }++nvidiaGetMem :: IO MemoryInfo+nvidiaGetMem =+    alloca $ \result_ptr -> alloca $ \result2_ptr -> do+        glGetIntegerv gl_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX+                      result_ptr+        glGetIntegerv gl_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX+                      result2_ptr+        result <- peek result_ptr+        result2 <- peek result2_ptr+        return MemoryInfo { availableVideoMemory = Just $ fromIntegral result2+                          , totalVideoMemory = Just $ fromIntegral result }++
+ src/Caramia/Prelude.hs view
@@ -0,0 +1,56 @@+-- | This module is used as the prelude module inside Caramia.+--++{-# LANGUAGE ScopedTypeVariables #-}++module Caramia.Prelude+    ( module Ex+    , safeFromIntegral+    , showT+    , atomicModifyIORef_' )+    where++import Prelude as Ex hiding+                      ( sequence, mapM, or, concat, notElem, elem+                      , foldl, foldr1, concatMap, any, sum, foldr+                      , and, all, mapM_, sequence_, product, maximum+                      , foldl1, minimum, (.), id )++import Data.Foldable as Ex+import Data.Traversable as Ex+import Data.Int as Ex+import Data.Word as Ex+import Data.Typeable as Ex+import Control.Category as Ex+import Control.Arrow as Ex+import Control.Monad as Ex hiding ( msum, forM, forM_, sequence, mapM, mapM_+                                  , sequence_ )+import Control.Applicative as Ex+import Data.Semigroup as Ex+import Data.Maybe as Ex+import Data.IORef as Ex+import qualified Data.Text as T++-- | Same as `show` but the result will be a `T.Text`, not `String`.+showT :: Show a => a -> T.Text+showT = T.pack . show+{-# INLINE showT #-}++-- | Same as `atomicModifyIORef'` but does not return a value.+atomicModifyIORef_' :: IORef a -> (a -> a) -> IO ()+atomicModifyIORef_' ref fun = atomicModifyIORef' ref $ \old -> ( fun old, () )+{-# INLINE atomicModifyIORef_' #-}++-- | Similar to `fromIntegral` but raises a user error if the source+-- integer cannot be represented in the target type.+--+-- This cannot turn an integral into a non-integral type.+safeFromIntegral :: forall a b. (Num a, Integral a, Num b, Integral b) =>+                    a -> b+safeFromIntegral from+    | from /= (fromIntegral result :: a) = error "Invalid coercion."+    | otherwise = result+  where+    result = fromIntegral from :: b+{-# INLINE safeFromIntegral #-}+
+ src/Caramia/Render.hs view
@@ -0,0 +1,455 @@+-- | Rendering things.+--++{-# LANGUAGE RecordWildCards, GeneralizedNewtypeDeriving #-}+{-# LANGUAGE ViewPatterns, NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Render+    ( +    -- * The drawing functions+      draw+    , runDraws+    -- * Draw command stream+    , Draw()+    , drawR+    , setPipeline+    , setTextureBindings+    , setBlending+    , setTargetFramebuffer+    , setFragmentPassTests+    , setPolygonOffset+    -- * Specifying what to draw+    , DrawCommand(..)+    , drawCommand+    , DrawParams(..)+    , defaultDrawParams+    , SourceData(..)+    , IndexType(..)+    , Primitive(..)+    , IndexTypeable(..)+    -- * Fragment pass tests+    , FragmentPassTests(..)+    , defaultFragmentPassTests+    , ComparisonFunc(..)+    , StencilOp(..)+    , Culling(..) )+    where++import Caramia.Prelude++import qualified Caramia.VAO.Internal as VAO+import qualified Caramia.Shader.Internal as Shader+import qualified Caramia.Framebuffer as FBuf+import qualified Caramia.Framebuffer.Internal as FBuf+import qualified Caramia.Texture.Internal as Texture+import qualified Data.IntMap.Strict as IM+import Caramia.Render.Internal hiding ( setFragmentPassTests )+import qualified Caramia.Render.Internal as I+import Caramia.Blend+import Caramia.Blend.Internal+import Caramia.Texture+import Caramia.Texture.Internal ( withTextureBinding )+import Caramia.Resource+import Caramia.Buffer.Internal+import Caramia.Internal.OpenGLCApi+import Control.Monad.IO.Class+import Control.Monad.Trans.State.Strict+import Control.Exception+import Foreign+import Foreign.C.Types++-- | The different types of primitives you can use for rendering.+--+-- <https://www.opengl.org/wiki/Primitive>+data Primitive =+    Triangles+  | TriangleStrip+  | TriangleFan+  | Points+  | Lines+  | LineStrip+  | LineLoop+  | LinesAdjacency+  | LineStripAdjacency+  | TriangleStripAdjacency+  | TrianglesAdjacency+  deriving ( Eq, Ord, Show, Read )++toConstant :: Primitive -> GLenum+toConstant Triangles = gl_TRIANGLES+toConstant TriangleStrip = gl_TRIANGLE_STRIP+toConstant TriangleFan = gl_TRIANGLE_FAN+toConstant Points = gl_POINTS+toConstant Lines = gl_LINES+toConstant LineStrip = gl_LINE_STRIP+toConstant LineLoop = gl_LINE_LOOP+toConstant LinesAdjacency = gl_LINES_ADJACENCY+toConstant LineStripAdjacency = gl_LINE_STRIP_ADJACENCY+toConstant TriangleStripAdjacency = gl_TRIANGLE_STRIP_ADJACENCY+toConstant TrianglesAdjacency = gl_TRIANGLES_ADJACENCY++-- | The type of indices in an index buffer. See `indexBuffer`.+data IndexType =+    IWord32+  | IWord16+  | IWord8+    deriving ( Eq, Ord, Show, Read )++toConstantIT :: IndexType -> GLenum+toConstantIT IWord32 = gl_UNSIGNED_INT+toConstantIT IWord16 = gl_UNSIGNED_SHORT+toConstantIT IWord8 = gl_UNSIGNED_BYTE++class IndexTypeable a where+    -- | Turns a Haskell type to `IndexType`.+    toIndexType :: a    -- ^ Used to pass the type, not evaluated.+                -> IndexType++instance IndexTypeable Word32 where+    toIndexType _ = IWord32++instance IndexTypeable Word16 where+    toIndexType _ = IWord16++instance IndexTypeable Word8 where+    toIndexType _ = IWord8++instance IndexTypeable CUInt where+    toIndexType _ = IWord32++instance IndexTypeable CUShort where+    toIndexType _ = IWord16++instance IndexTypeable CUChar where+    toIndexType _ = IWord8++-- | Contains drawing parameters.+--+-- You can use `defaultDrawParams` to obtain default draw parameters.+data DrawParams = DrawParams+    {+      pipeline      :: Shader.Pipeline+    -- ^ Which shader pipeline to use.+    , fragmentPassTests :: !FragmentPassTests+    -- ^ What kind of fragment pass tests to use.+    , blending      :: BlendSpec  -- ^ Which blending to use.+    , targetFramebuffer :: FBuf.Framebuffer+    -- ^ Where do you want to render?+    , bindTextures  :: IM.IntMap Texture+    -- ^ Which textures do you want to bind? The keys in this integer map are+    -- `TextureUnit`s and tell which texture units you want to bind given+    -- textures.+    , polygonOffset :: !(Float, Float)+    -- ^ Modify the depth values that are being written.+    --+    -- @ (factor, units) @.+    --+    -- By default this is (0, 0) (that is, do nothing). See @ glPolygonOffset @+    -- for the meaning of these values.+    }+    deriving ( Eq, Typeable )++-- | Default drawing parameters.+--+-- `pipeline` is not set (that is, it's undefined). You must set it.+--+-- No textures are bound.+--+-- Blending mode is premultiplied alpha.+--+-- `targetFramebuffer` is the screen framebuffer.+defaultDrawParams :: DrawParams+defaultDrawParams = DrawParams {+    pipeline = error "defaultDrawParams: pipeline is not set."+  , fragmentPassTests = defaultFragmentPassTests+  , blending = preMultipliedAlpha+  , bindTextures = IM.empty+  , targetFramebuffer = FBuf.screenFramebuffer+  , polygonOffset = (0, 0) }++-- | Contains a specification of what to draw.+--+-- It is recommended to use `drawCommand` instead of this constructor.+data DrawCommand = DrawCommand+    { primitiveType :: Primitive+    , primitivesVAO :: VAO.VAO    -- ^ This is the VAO from which attributes+                                  --   are retrieved in the shader pipeline.+    , numIndices    :: Int        -- ^ How many indices to render?+    , numInstances  :: Int        -- ^ How many instances to render.+    , sourceData    :: SourceData+    -- ^ How to select the attribute data from `primitivesVAO`.+    }+    deriving ( Eq, Typeable )++-- | Returns a default draw command.+--+-- Several fields are undefined so you must set them. These are+--+-- * `primitiveType`+-- * `primitivesVAO`+-- * `numIndices`+-- * `sourceData`+--+-- `numInstances` is set to 1. In future (minor) versions if we add any new+-- fields those fields will have a sane default value.+drawCommand :: DrawCommand+drawCommand = DrawCommand+    { primitiveType = error "drawCommand: primitiveType is not set."+    , primitivesVAO = error "drawCommand: primitivesVAO is not set."+    , numIndices    = error "drawCommand: numIndices is not set."+    , sourceData    = error "drawCommand: sourceData is not set."+    , numInstances  = 1 }+{-# INLINE drawCommand #-}++-- | Values of this type tell how to select attribute data from+-- `primitivesVAO`.+--+-- Future minor versions will not add any new fields or remove any fields from+-- these values. Instead, new constructors are introduced.+data SourceData =+    -- | Simply start from some index and continue from there, 0, 1, 2, etc.+    --+    -- OpenGL equivalent is @ glDrawArrays() @ or @ glDrawArraysInstanced() @.+    Primitives+    { firstIndex :: Int }+    -- | Use an index buffer.+    --+    -- OpenGL equivalent is @ glDrawElements() @ or @ glDrawElementsInstanced()+    -- @. Index buffer contains indices that point to offsets in the vertex+    -- arrays.+  | PrimitivesWithIndices+    { indexBuffer :: Buffer+    , indexOffset :: Int+    , indexType   :: IndexType }+  deriving ( Eq, Ord, Typeable )++-- | Draws according to a `DrawCommand`.+--+-- There is a very large overhead in doing a single `draw` call. You probably+-- want to use `runDraws` and `drawR` instead.+draw :: DrawCommand -> DrawParams -> IO ()+draw cmd params = runDraws params (drawR cmd)++-- | Same as `draw` but in a `Draw` command stream.+drawR :: DrawCommand -> Draw ()+drawR (DrawCommand {..})+    | numIndices == 0 = return ()+    | otherwise = Draw $ do+    old_ebo <- boundEbo <$> get+    liftIO $+        withResource (VAO.resource primitivesVAO) $ \(VAO.VAO_ vao_name) ->+        withBoundVAO vao_name $+            case sourceData of+                Primitives {..} ->+                    glDrawArraysInstanced+                         (toConstant primitiveType)+                         (safeFromIntegral firstIndex)+                         (safeFromIntegral numIndices)+                         (safeFromIntegral numInstances)+                PrimitivesWithIndices {..} ->+                    withResource (resource indexBuffer) $+                            \(Buffer_ buf_name) -> do+                        when (buf_name /= old_ebo) $+                            setBoundElementBuffer buf_name+                        glDrawElementsInstanced+                                (toConstant primitiveType)+                                (safeFromIntegral numIndices)+                                (toConstantIT indexType)+                                (intPtrToPtr $+                                fromIntegral indexOffset)+                                (safeFromIntegral numInstances)+-- inline `draw` because it's probably quite common to directly construct+-- `DrawCommand` right there, so we can avoid all sorts of boxing and checking+-- that happens.+{-# INLINE draw #-}++-- We use a state to keep track of what we have bound. Why? For garbage+-- collection! If we don't keep references, it's possible things get garbage+-- collected under our feet because `runDraws` might have bound resources in+-- OpenGL with no Haskell values pointing to them.+data DrawState = DrawState+    { boundPipeline :: !Shader.Pipeline+    , boundEbo :: !GLuint+    , boundTextures :: !(IM.IntMap Texture)+    , boundBlending :: !BlendSpec+    , boundFramebuffer :: !FBuf.Framebuffer+    , boundFragmentPassTests :: !FragmentPassTests+    , activeTexture :: !GLuint }++newtype Draw a = Draw (StateT DrawState IO a)+                 deriving ( Monad, Applicative, Functor, Typeable )++-- | Using `liftIO` is safe inside a `Draw` stream. It is possible to run+-- nested `Draw` streams this way as well.+--+-- One useful thing to do is to set uniforms to pipelines with `setUniform`.+instance MonadIO Draw where+    liftIO = Draw . liftIO++-- | Runs a drawing specification.+--+-- You can think of this as running many `draw` commands with similar draw+-- command specifications. This call is an optimization to `draw` which has a+-- high overhead by itself.+--+-- Another way to think of this is a place where the functional, \"no hidden+-- state\" design of the Caramia API is relaxed inside the `Draw` stream.+runDraws :: DrawParams      -- ^ Initial drawing parameters. These can be+                            --   changed in the `Draw` command stream.+         -> Draw a          -- ^ Draw command stream.+         -> IO a+runDraws params (Draw cmd_stream) =+    withParams params $ do+        (result, st) <-+            runStateT cmd_stream DrawState+                { boundPipeline = pipeline params+                , boundFragmentPassTests = fragmentPassTests params+                , boundEbo = 0+                , boundBlending = blending params+                , boundFramebuffer = targetFramebuffer params+                , boundTextures = bindTextures params+                , activeTexture = 0+                }+        st `seq` return result++withParams :: DrawParams -> IO a -> IO a+withParams (DrawParams {..}) action =+    FBuf.withBinding targetFramebuffer $+    withPipeline pipeline $+    withFragmentPassTests fragmentPassTests $+    withBlendings blending $+    withBoundTextures bindTextures $+    withBoundElementBuffer 0 $+    withPolygonOffset polygonOffset $ do+        old_active <- gi gl_ACTIVE_TEXTURE+        -- Framebuffer may not restore the viewport so we have to do it here.+        allocaArray 4 $ \viewport_ptr -> do+            glGetIntegerv gl_VIEWPORT viewport_ptr+            ox <- peekElemOff viewport_ptr 0+            oy <- peekElemOff viewport_ptr 1+            ow <- peekElemOff viewport_ptr 2+            oh <- peekElemOff viewport_ptr 3+            finally (glActiveTexture gl_TEXTURE0 *>+                    action)+                    (glActiveTexture old_active *>+                     glViewport ox oy ow oh)++withPolygonOffset :: (Float, Float) -> IO a -> IO a+withPolygonOffset (factor, units) action = do+    old_factor <- gf gl_POLYGON_OFFSET_FACTOR+    old_units <- gf gl_POLYGON_OFFSET_UNITS+    finally (do glPolygonOffset (CFloat factor) (CFloat units)+                action) $+        glPolygonOffset old_factor old_units++-- | Sets the active texture (not public API! What would they use this for+-- anyway?).+setActiveTexture :: GLuint -> Draw ()+setActiveTexture unit = Draw $ do+    old_active <- activeTexture <$> get+    when (old_active /= unit) $+        liftIO (glActiveTexture $ gl_TEXTURE0 + unit) *>+        modify (\old -> old { activeTexture = unit })++-- | Sets new texture bindings.+setTextureBindings :: IM.IntMap Texture -> Draw ()+setTextureBindings texes = do+    old_texes <- Draw $ boundTextures <$> get+    -- Iterate over the old bindings.+    for_ (IM.assocs old_texes) $ \(index, tex) ->+        case IM.lookup index texes of+            -- A texture was bound previously, new bindings don't bind the+            -- texture at this unit.+            Nothing -> setActiveTexture (safeFromIntegral index) *>+                let (bind_target, _) =+                        Texture.getTopologyBindPoints $+                        topology $ viewSpecification tex+                 in liftIO $ glBindTexture bind_target 0+            -- A texture was bound previously, new bindings also bind some+            -- texture here.+            Just new_tex -> do+                old_name <-+                    liftIO $ withResource (Texture.resource tex) $+                        \(Texture.Texture_ old_name) -> return old_name+                name <-+                    liftIO $ withResource (Texture.resource new_tex) $+                        \(Texture.Texture_ name) -> return name+                -- Only bind if the texture changed.+                when (name /= old_name) $ do+                    setActiveTexture (safeFromIntegral index)+                    let (bind_target, _) =+                            Texture.getTopologyBindPoints $+                            topology $ viewSpecification new_tex+                        in liftIO $ glBindTexture bind_target name+    -- Iterate over new bindings. We need to only check those that were not+    -- part of the old bindings.+    for_ (IM.assocs texes) $ \(index, tex) ->+        case IM.lookup index old_texes of+            Just _ -> pure ()   -- already handled in the above for_+            Nothing -> do+                name <- liftIO $ withResource (Texture.resource tex) $+                            \(Texture.Texture_ name) -> return name+                setActiveTexture (safeFromIntegral index)+                let (bind_target, _) =+                        Texture.getTopologyBindPoints $+                        topology $ viewSpecification tex+                 in liftIO $ glBindTexture bind_target name++    Draw $ modify (\old -> old { boundTextures = texes })++-- | Changes the pipeline in a `Draw` command stream.+setPipeline :: Shader.Pipeline -> Draw ()+setPipeline pl = Draw $ do+    old_pl <- boundPipeline <$> get+    when (old_pl /= pl) $ do+        liftIO $ withResource (Shader.resourcePL pl) $+            \(Shader.Pipeline_ program) ->+                setBoundProgram program+        modify (\old -> old { boundPipeline = pl })+{-# INLINE setPipeline #-}++-- | Changes the current blending mode.+setBlending :: BlendSpec -> Draw ()+setBlending blends = Draw $ do+    old_blending <- boundBlending <$> get+    when (blends /= old_blending) $ do+        liftIO $ setBlendings blends+        modify (\old -> old { boundBlending = blends })+{-# INLINE setBlending #-}++-- | Sets the new fragment pass tests.+setFragmentPassTests :: FragmentPassTests -> Draw ()+setFragmentPassTests tests = Draw $ do+    old_tests <- boundFragmentPassTests <$> get+    when (old_tests /= tests) $ do+        liftIO $ I.setFragmentPassTests tests+        modify (\old -> old { boundFragmentPassTests = tests })+{-# INLINE setFragmentPassTests #-}++-- | Sets polygon offset.+setPolygonOffset :: Float -> Float -> Draw ()+setPolygonOffset factor units = Draw $+    liftIO $ glPolygonOffset (CFloat factor) (CFloat units)++-- | Sets the current framebuffer.+setTargetFramebuffer :: FBuf.Framebuffer -> Draw ()+setTargetFramebuffer fbuf = Draw $ do+    old_fbuf <- boundFramebuffer <$> get+    when (old_fbuf /= fbuf) $ do+        liftIO $ FBuf.setBinding fbuf+        modify (\old -> old { boundFramebuffer = fbuf })+{-# INLINE setTargetFramebuffer #-}++withBoundTextures :: IM.IntMap Texture -> IO a -> IO a+withBoundTextures (IM.assocs -> bindings) action = rec bindings+  where+    rec [] = action+    rec ((unit, tex):rest) =+        withTextureBinding tex unit $ rec rest++withPipeline :: Shader.Pipeline -> IO a -> IO a+withPipeline pipeline action =+    withResource (Shader.resourcePL pipeline) $ \(Shader.Pipeline_ program) ->+        withBoundProgram program action+{-# INLINE withPipeline #-}+
+ src/Caramia/Render/Internal.hs view
@@ -0,0 +1,239 @@+{-# LANGUAGE RecordWildCards, NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Render.Internal where++import Caramia.Prelude++import Caramia.Internal.OpenGLCApi+import Control.Exception++-- | A comparison function. Incoming value is compared with this function to+-- the existing value.+--+-- This can be used with depth and stencil tests.+--+-- See @ glDepthFunc @ from OpenGL specification or man pages for more detailed+-- explanation.+data ComparisonFunc =+    Never+  | Less+  | Equal+  | LEqual+  | Greater+  | NotEqual+  | GEqual+  | Always+  deriving ( Eq, Ord, Show, Read, Typeable )++comparisonFuncToConstant :: ComparisonFunc -> GLenum+comparisonFuncToConstant Never = gl_NEVER+comparisonFuncToConstant Less = gl_LESS+comparisonFuncToConstant Equal = gl_EQUAL+comparisonFuncToConstant LEqual = gl_LEQUAL+comparisonFuncToConstant Greater = gl_GREATER+comparisonFuncToConstant NotEqual = gl_NOTEQUAL+comparisonFuncToConstant GEqual = gl_GEQUAL+comparisonFuncToConstant Always = gl_ALWAYS++-- | Stencil buffer operations.+--+-- See @ glStencilOp @ for explanations of each constructor.+data StencilOp =+    Keep+  | Zero+  | Replace+  -- ^ This one replaces the old value in the stencil buffer with the given+  -- reference value and ANDs the result with mask.+  | Increment+  | IncrementAndWrap+  | Decrease+  | DecreaseAndWrap+  | Invert+  deriving ( Eq, Ord, Show, Read, Typeable )++stencilOpToConstant :: StencilOp -> GLenum+stencilOpToConstant Keep = gl_KEEP+stencilOpToConstant Zero = gl_ZERO+stencilOpToConstant Replace = gl_REPLACE+stencilOpToConstant Increment = gl_INCR+stencilOpToConstant IncrementAndWrap = gl_INCR_WRAP+stencilOpToConstant Decrease = gl_DECR+stencilOpToConstant DecreaseAndWrap = gl_DECR_WRAP+stencilOpToConstant Invert = gl_INVERT++setStencilFunc :: ComparisonFunc+               -> StencilOp+               -> StencilOp+               -> StencilOp+               -> Word32+               -> Word32+               -> IO ()+setStencilFunc func op1 op2 op3 ref mask = do+    glStencilFunc (comparisonFuncToConstant func)+                  (fromIntegral ref)+                  (fromIntegral mask)+    glStencilOp (stencilOpToConstant op1)+                (stencilOpToConstant op2)+                (stencilOpToConstant op3)+{-# INLINE setStencilFunc #-}++withStencilFunc :: ComparisonFunc+                -> StencilOp+                -> StencilOp+                -> StencilOp+                -> Word32+                -> Word32+                -> IO a+                -> IO a+withStencilFunc func op1 op2 op3 ref mask action = do+    old_func <- gi gl_STENCIL_FUNC+    old_ref <- gi gl_STENCIL_REF+    old_mask <- gi gl_STENCIL_VALUE_MASK+    old_op1 <- gi gl_STENCIL_FAIL+    old_op2 <- gi gl_STENCIL_PASS_DEPTH_FAIL+    old_op3 <- gi gl_STENCIL_PASS_DEPTH_PASS+    finally (setStencilFunc func op1 op2 op3 ref mask *> action)+            (glStencilFunc old_func (fromIntegral old_ref) old_mask *>+             glStencilOp old_op1 old_op2 old_op3)++withCulling :: Culling -> IO a -> IO a+withCulling culling action = do+    old_culling <- gi gl_CULL_FACE_MODE+    was_enabled <- glIsEnabled gl_CULL_FACE+    finally (setCulling culling *> action)+            (do if was_enabled == fromIntegral gl_TRUE+                  then glEnable gl_CULL_FACE+                  else glDisable gl_CULL_FACE+                glCullFace old_culling)++setCulling :: Culling -> IO ()+setCulling NoCulling = glDisable gl_CULL_FACE+setCulling x = mask_ $+    glEnable gl_CULL_FACE *>+    glCullFace (cullingToConstant x)++setDepthFunc :: ComparisonFunc -> Bool -> IO ()+setDepthFunc func write_depth =+    glDepthFunc (comparisonFuncToConstant func) *>+    glDepthMask (fromIntegral $ if write_depth then gl_TRUE else gl_FALSE)++withDepthFunc :: ComparisonFunc -> Bool -> IO a -> IO a+withDepthFunc func write_depth action = do+    old_depth_func <- gi gl_DEPTH_FUNC+    old_depth_write <- gi gl_DEPTH_WRITEMASK+    finally (setDepthFunc func write_depth *> action)+            (glDepthFunc old_depth_func *>+             glDepthMask (fromIntegral old_depth_write))++setFragmentPassTests :: FragmentPassTests -> IO ()+setFragmentPassTests (FragmentPassTests {..}) = do+    case depthTest of+        Nothing -> glDisable gl_DEPTH_TEST+        Just dt -> glEnable gl_DEPTH_TEST *>+                   setDepthFunc dt writeDepth+    case stencilTest of+        Nothing -> glDisable gl_STENCIL_TEST+        Just st -> glEnable gl_STENCIL_TEST *>+                   setStencilFunc st+                                  failStencilOp+                                  depthFailStencilOp+                                  depthPassStencilOp+                                  stencilReference+                                  stencilMask+    setCulling cullFace++withFragmentPassTests :: FragmentPassTests -> IO a -> IO a+withFragmentPassTests (FragmentPassTests {..}) action = do+    was_it_enabled <- glIsEnabled gl_DEPTH_TEST+    finally+        (case depthTest of+             Nothing -> glDisable gl_DEPTH_TEST *> next+             Just dt -> glEnable gl_DEPTH_TEST *>+                        withDepthFunc dt writeDepth next) $+        if was_it_enabled == fromIntegral gl_TRUE+          then glEnable gl_DEPTH_TEST+          else glDisable gl_DEPTH_TEST+  where+    next = do+        was_it_enabled <- glIsEnabled gl_STENCIL_TEST+        finally+            (case stencilTest of+                 Nothing -> glDisable gl_STENCIL_TEST *> next'+                 Just st -> glEnable gl_STENCIL_TEST *>+                            withStencilFunc st+                                            failStencilOp+                                            depthFailStencilOp+                                            depthPassStencilOp+                                            stencilReference+                                            stencilMask+                                            next') $+            if was_it_enabled == fromIntegral gl_TRUE+              then glEnable gl_STENCIL_TEST+              else glDisable gl_STENCIL_TEST++    next' = withCulling cullFace action++data Culling =+    Back+  | Front+  | FrontAndBack  -- ^ This stops the drawing of any faces but points and lines+                  -- (or other non-facey like primitives) are drawn.+  | NoCulling+  deriving ( Eq, Ord, Show, Read, Typeable )++cullingToConstant :: Culling -> GLenum+cullingToConstant Back = gl_BACK+cullingToConstant Front = gl_FRONT+cullingToConstant FrontAndBack = gl_FRONT_AND_BACK+cullingToConstant NoCulling = 0++-- | Specifies the tests that are run on a fragment to decide if it should be+-- seen.+data FragmentPassTests = FragmentPassTests {+    depthTest :: !(Maybe ComparisonFunc)+  -- ^ Which depth test to use, if any?+  , writeDepth :: Bool+  -- ^ If depth test is specified, should we also update the depth buffer with+  -- new depth values? The depth buffer will not be written if `depthTest` is+  -- not specified regardless of the value in this field.+  , stencilTest :: !(Maybe ComparisonFunc)+  -- ^ Which stencil test to use, if any?+  , stencilReference :: !Word32+  , stencilMask      :: !Word32+  , failStencilOp      :: !StencilOp+  -- ^ What to do with the stencil buffer if stencil test fails.+  , depthFailStencilOp :: !StencilOp+  -- ^ What to do with the stencil buffer if stencil test passes but depth+  -- testing fails).+  , depthPassStencilOp :: !StencilOp+  -- ^ What to do with the stencil buffer if stencil and depth test passes, or+  -- if depth buffer is not present or depth test is disabled.+  , cullFace :: !Culling+  -- ^ What kind of face culling should we do.+  }+  deriving ( Eq, Ord, Show, Read, Typeable )++-- | Returns the default fragment pass tests.+--+-- Neither depth or stencil test is enabled. `writeDepth` is set to true but+-- that value is only used if you specify with depth test to use.+--+-- All stencil operations are set to `Keep`.+--+-- Culling is set to `Back`.+defaultFragmentPassTests :: FragmentPassTests+defaultFragmentPassTests = FragmentPassTests+    { depthTest = Nothing+    , writeDepth = True+    , stencilTest = Nothing+    , stencilReference = 0+    , stencilMask = 0xffffffff+    , failStencilOp = Keep+    , depthFailStencilOp = Keep+    , depthPassStencilOp = Keep+    , cullFace = Back }++-- TODO: separate stencil tests for backsides of triangles+-- (glStencilOpSeparate)++
+ src/Caramia/Resource.hs view
@@ -0,0 +1,144 @@+-- | Caramia resources.+--+-- Resources in Caramia encapsulate OpenGL resources which have some+-- constraints on their use:+--+--     * They are, in the general case, only valid in a specific operating+--       system thread.+--     * They need an implicit OpenGL context active to be used.+--+-- This module helps with the correct finalization of OpenGL resources as+-- according to those constraints.+--+-- Most of the time, Caramia keeps `Resource` objects hidden so you, the user,+-- is unlikely to see these directly.+--++{-# LANGUAGE BangPatterns #-}++module Caramia.Resource+    ( Resource()+    , newResource+    , withResource )+    where++import Caramia.Prelude+import Caramia.Context+import Control.Exception++-- | The data type of a Caramia resource.+data Resource a = Resource+    { rawResource  :: !(IORef (Maybe+                          ( a         -- the unmanaged resource+                          , IO ()     -- opengl finalizer+                          , IO ())))  -- normal finalizer+    , nativeCid    :: !ContextID+    }++instance Eq (Resource a) where+    res1 == res2 = rawResource res1 == rawResource res2++-- | Creates a new resource.+--+-- Must be called in a thread that has an OpenGL context active. Otherwise, an+-- error will be thrown.+--+-- If you throw an exception in the OpenGL finalizer, then this will disrupt+-- Caramia context and make it invalid. So try not to throw those exceptions?+newResource :: IO a               -- ^ Action that returns the raw, unmanaged+                                  -- resource. Good place to create it.+            -> (a -> IO ())       -- ^ OpenGL finalizer. Will only be called in+                                  -- the same thread as this `newResource` is+                                  -- called, but only if the same OpenGL+                                  -- context is still alive.+            -> IO ()              -- ^ \'Ordinary\' finalizer. This will be+                                  -- called immediately when garbage collector+                                  -- collects the resource which means before+                                  -- the OpenGL finalizer and in a separate+                                  -- thread. If this finalizer throws an+                                  -- exception then the OpenGL finalizer is+                                  -- cancelled and the resource is marked as+                                  -- finalized. This will be run even if the+                                  -- OpenGL context is gone.+            -> IO (Resource a)+newResource resource_creator finalizer normal_finalizer = mask_ $+    -- We need the context ID for correct finalization so we cannot take away+    -- this check with NO_RESOURCE_RUNTIME_CHECKS.+    maybe (error "newResource: no OpenGL context active.")+          (\cid -> do+            resource <- resource_creator+            let opengl_finalizer = finalizer resource+            ref <- newIORef (Just ( resource+                                  , opengl_finalizer+                                  , normal_finalizer ))+            let res = Resource { rawResource = ref+                               , nativeCid = cid }+            void $ mkWeakIORef ref $ finalizeNow res+            return res)+          =<<+          currentContextID++-- | Promptly finalize a resource.+--+-- The ordinary finalizer will be run immediately. The OpenGL finalizer will be+-- run if the current thread is the same OpenGL thread where the resource was+-- created.+--+-- If you want asynchronous finalization, then use `finalizeAsync`, which+-- behaves more like actual garbage collection, only more promptly.+--+-- I recommend you use `finalizeAsync` because it is more consistent with+-- normal garbage collection behaviour and thus is more difficult to use+-- incorrectly.+--+-- If ordinary finalizer throws an exception, the OpenGL finalizer is not run+-- and the resource is marked as finalized. The exception propagates out from+-- this call to you.+--+-- Does nothing if the resource is already finalized.+--+-- ***********************+-- TODO: this is not actually exported API. Some resources cannot be finalized+-- like this because other resources might refer to them. How do we handle+-- resources that can refer to each other? Right now, we cannot. So we can't+-- allow users to finalize things by themselves.+finalizeNow :: Resource a -> IO ()+finalizeNow resource = mask_ $ do+    maybe_res <- atomicModifyIORef (rawResource resource) $+        \old -> ( Nothing, old )+    case maybe_res of+        Nothing -> return ()+        Just (_, opengl_finalizer, normal_finalizer) -> do+            normal_finalizer+            let schedule = scheduleFinalizer (nativeCid resource)+                                              opengl_finalizer+            maybe schedule+                  (\cid ->+                    if cid == nativeCid resource+                      then opengl_finalizer+                      else schedule)+                  =<<+                  currentContextID++-- | Uses a resource.+--+-- Throws an user error if the resource is used in a wrong or dead context.+withResource :: Resource a+             -> (a -> IO b)   -- ^ Use the resource inside this action. Don't+                              -- return the unmanaged resource from this+                              -- because behaviour is then undefined.+             -> IO b+withResource resource action =+    maybe (error "withResource: resource has been finalized.")+          (\(res, _, _) -> do+              cid <- currentContextID+              if cid == Just (nativeCid resource)+                then action res <* touchIORef ref+                else error $ "withResource: attempted resource use " <>+                             "in a wrong context.")+          =<<+          readIORef ref+  where+    ref = rawResource resource+    touchIORef !_ = return ()+
+ src/Caramia/Shader.hs view
@@ -0,0 +1,539 @@+-- | Shaders.+--+-- This module lets you use GLSL shaders in rendering.+--+-- This abstracts OpenGL shaders and shader objects. In the future, we might+-- implement separate shader programs (that is,+-- GL_ARB_separate_shader_objects).+--+-- At the moment, you need to use explicit attribute locations in shaders+-- themselves. There is no functionality to retrieve attribute locations in+-- this API; you simply have to know them.+--+-- <https://www.opengl.org/wiki/OpenGL_Shading_Language>+--++-- TODO: separable program objects. This is an extension and only became core+-- in OpenGL 4.1 (GL_ARB_separate_shader_objects). As of writing of this, I+-- think it's not prime time to use those yet. Maybe in a few years.+--++{-# LANGUAGE NoImplicitPrelude, FlexibleInstances, DeriveDataTypeable #-}+{-# LANGUAGE ExistentialQuantification, ViewPatterns, OverloadedStrings #-}++module Caramia.Shader+    ( newShader+    , newPipeline+    , newPipelineVF+    , Shader()+    , Pipeline()+      -- * Uniforms+    , setUniform+    , getUniformLocation+    , Uniformable()+    , UniformLocation+      -- * Shader stages+    , ShaderStage(..)+      -- * Views+    , viewStage+      -- * Misc+    , nopPipeline+      -- * Exception+    , ShaderCompilationError(..)+    , ShaderLinkingError(..)+    , ShaderBuildingError(..)+    )+    where++import Caramia.Prelude++import Caramia.Shader.Internal++import Caramia.Context+import Caramia.Resource+import Caramia.Internal.OpenGLCApi+import Caramia.Math++import GHC.Float ( double2Float )++import Control.Exception+import Foreign+import Foreign.C.Types+import qualified Data.ByteString as B+import qualified Data.Text as T+import qualified Data.Text.Encoding as T+import qualified Data.Text.Foreign as T++type UniformLocation = Int++-- TODO: add tesselation shaders++toConstant :: ShaderStage -> GLenum+toConstant Vertex = gl_VERTEX_SHADER+toConstant Fragment = gl_FRAGMENT_SHADER+toConstant Geometry = gl_GEOMETRY_SHADER++-- | Thrown when either a compilation or linking error occurs.+data ShaderBuildingError = forall e. Exception e => ShaderBuildingError e+                           deriving ( Typeable )++instance Show ShaderBuildingError where+    show (ShaderBuildingError e) = show e++-- | Thrown when a shader compilation error occurs. The text is the error log+-- for compilation.+--+-- Can also be caught as `ShaderBuildingError`.+data ShaderCompilationError = ShaderCompilationError !T.Text+                              deriving ( Eq, Typeable, Show )++-- | Thrown when a shader linking error occurs. The text is the error log for+-- linking.+--+-- Can also be caught as `ShaderBuildingError`.+data ShaderLinkingError = ShaderLinkingError !T.Text+                          deriving ( Eq, Typeable, Show )++instance Exception ShaderBuildingError++shaderExceptionToException :: Exception e => e -> SomeException+shaderExceptionToException = toException . ShaderBuildingError++shaderExceptionFromException :: Exception e => SomeException -> Maybe e+shaderExceptionFromException exc = do+    ShaderBuildingError a <- fromException exc+    cast a++instance Exception ShaderCompilationError where+    toException = shaderExceptionToException+    fromException = shaderExceptionFromException++instance Exception ShaderLinkingError where+    toException = shaderExceptionToException+    fromException = shaderExceptionFromException++-- | Sets a uniform in a pipeline.+setUniform :: Uniformable a+           => a+           -> UniformLocation+           -> Pipeline+           -> IO ()+setUniform uniformable location pipeline =+    withResource (resourcePL pipeline) $ \(Pipeline_ program) ->+        setUniform_ program (safeFromIntegral location) uniformable+{-# INLINE [1] setUniform #-}++-- | Creates a shader from GLSL shader source.+--+-- This can throw `ShaderCompilationError` if compilation fails.+newShader :: T.Text      -- ^ The shader source code.+          -> ShaderStage+          -> IO Shader+newShader source_code stage = mask_ $ do+    res <- newResource create+                       deleter+                       (return ())+    nid <- atomicModifyIORef' shaderIdentifierSupply $ \old ->+        ( old + 1, old )+    return Shader { resource = res+                  , identifier = nid+                  , viewStage = stage }+  where+    deleter (CompiledShader shader) =+       glDeleteShader shader++    create = do+        shader_name <- glCreateShader (toConstant stage)+        T.withCStringLen source_code $ \(cstr, len) ->+            with cstr $ \cstr_ptr ->+                with (fromIntegral len :: GLint) $ \len_ptr ->+                glShaderSource+                    shader_name+                    1+                    cstr_ptr+                    len_ptr+        glCompileShader shader_name+        checkCompilationErrors shader_name+        return $ CompiledShader shader_name++-- | Checks that there are no compilation errors in an OpenGL shader object.+--+-- DELETES the shader if there were errors.+checkCompilationErrors :: GLuint -> IO ()+checkCompilationErrors shader_name = do+    status <- gget $ glGetShaderiv shader_name gl_COMPILE_STATUS+    when (status == fromIntegral gl_FALSE) $ do+        log_len <- gget $ glGetShaderiv shader_name gl_INFO_LOG_LENGTH+        allocaBytes (safeFromIntegral log_len) $ \str -> do+            glGetShaderInfoLog shader_name log_len nullPtr str+            log <- T.peekCStringLen ( str+                                    , safeFromIntegral $ max 0 $ log_len-1 )+            glDeleteShader shader_name+            throwIO $ ShaderCompilationError log++-- | Same as `checkCompilationErrors` but for linking.+--+-- DELETES the program if there were errors.+checkLinkingErrors :: GLuint -> IO ()+checkLinkingErrors program_name = do+    status <- gget $ glGetProgramiv program_name gl_LINK_STATUS+    when (status == fromIntegral gl_FALSE) $ do+        log_len <- gget $ glGetProgramiv program_name gl_INFO_LOG_LENGTH+        allocaBytes (safeFromIntegral log_len) $ \str -> do+            glGetProgramInfoLog program_name log_len nullPtr str+            log <- T.peekCStringLen ( str+                                    , safeFromIntegral $ max 0 $ log_len-1)+            glDeleteProgram program_name+            throwIO $ ShaderLinkingError log++-- | Creates a pipeline from vertex and fragment shader source.+--+-- This is a convenience function for a common use case.+newPipelineVF :: T.Text      -- ^ Vertex shader source.+              -> T.Text      -- ^ Fragment shader source.+              -> IO Pipeline+newPipelineVF vert_src frag_src = do+    vsh <- newShader vert_src Vertex+    fsh <- newShader frag_src Fragment+    newPipeline [vsh, fsh]++-- | Creates a pipeline composed of different shaders.+newPipeline :: [Shader] -> IO Pipeline+newPipeline = newTraditionalPipeline++newTraditionalPipeline :: [Shader] -> IO Pipeline+newTraditionalPipeline shaders = mask_ $ do+    res <- newResource creator+                       deleter+                       (return ())+    nid <- atomicModifyIORef' shaderIdentifierSupply $ \old ->+        ( old+1, old )+    return Pipeline { resourcePL = res+                    , pipelineIdentifier = nid+                    , shaders = shaders }+  where+    creator = do+        program <- glCreateProgram+        for_ shaders $ \shader ->+            withResource (resource shader) $ \(CompiledShader sname) ->+                glAttachShader program sname+        glLinkProgram program+        checkLinkingErrors program+        return $ Pipeline_ program++    deleter (Pipeline_ program) = glDeleteProgram program++gget :: Storable a => (Ptr a -> IO ()) -> IO a+gget action = alloca $ \ptr -> action ptr >> peek ptr++-- | Class of data types that can be set to a uniform in a shader pipeline.+--+-- We provide instances for large integer values (such as `Integer`) but you+-- should know that uniforms are rarely larger than 32-bit. We throw a user+-- error if you pass a value that is larger than what the OpenGL API can accept+-- (which is 2^32-1 for unsigned integer types and 2^31-1 for signed integer+-- types).+class Uniformable a where+    setUniform_ :: GLuint -> GLint -> a -> IO ()++type USetter1 a = GLuint -> GLint -> a -> IO ()+type USetter2 a = GLuint -> GLint -> (a, a) -> IO ()+type USetter3 a = GLuint -> GLint -> (a, a, a) -> IO ()+type USetter4 a = GLuint -> GLint -> (a, a, a, a) -> IO ()++setUi1 :: Integral a => USetter1 a+setUi1 program loc w =+    mglProgramUniform1ui program loc (safeFromIntegral w)+{-# INLINE setUi1 #-}++setUi2 :: Integral a => USetter2 a+setUi2 program loc (w1, w2) =+    mglProgramUniform2ui program loc (safeFromIntegral w1)+                                     (safeFromIntegral w2)+{-# INLINE setUi2 #-}++setUi3 :: Integral a => USetter3 a+setUi3 program loc (w1, w2, w3) =+    mglProgramUniform3ui program loc (safeFromIntegral w1)+                                     (safeFromIntegral w2)+                                     (safeFromIntegral w3)+{-# INLINE setUi3 #-}++setUi4 :: Integral a => USetter4 a+setUi4 program loc (w1, w2, w3, w4) =+    mglProgramUniform4ui program loc (safeFromIntegral w1)+                                     (safeFromIntegral w2)+                                     (safeFromIntegral w3)+                                     (safeFromIntegral w4)+{-# INLINE setUi4 #-}++setI1 :: Integral a => USetter1 a+setI1 program loc w =+    mglProgramUniform1i program loc (safeFromIntegral w)+{-# INLINE setI1 #-}++setI2 :: Integral a => USetter2 a+setI2 program loc (w1, w2) =+    mglProgramUniform2i program loc (safeFromIntegral w1)+                                    (safeFromIntegral w2)+{-# INLINE setI2 #-}++setI3 :: Integral a => USetter3 a+setI3 program loc (w1, w2, w3) =+    mglProgramUniform3i program loc (safeFromIntegral w1)+                                    (safeFromIntegral w2)+                                    (safeFromIntegral w3)+{-# INLINE setI3 #-}++setI4 :: Integral a => USetter4 a+setI4 program loc (w1, w2, w3, w4) =+    mglProgramUniform4i program loc (safeFromIntegral w1)+                                    (safeFromIntegral w2)+                                    (safeFromIntegral w3)+                                    (safeFromIntegral w4)+{-# INLINE setI4 #-}++instance Uniformable Word8 where+    setUniform_ = setUi1+instance Uniformable (Word8, Word8) where+    setUniform_ = setUi2+instance Uniformable (Word8, Word8, Word8) where+    setUniform_ = setUi3+instance Uniformable (Word8, Word8, Word8, Word8) where+    setUniform_ = setUi4+instance Uniformable Word16 where+    setUniform_ = setUi1+instance Uniformable (Word16, Word16) where+    setUniform_ = setUi2+instance Uniformable (Word16, Word16, Word16) where+    setUniform_ = setUi3+instance Uniformable (Word16, Word16, Word16, Word16) where+    setUniform_ = setUi4+instance Uniformable Word32 where+    setUniform_ = setUi1+instance Uniformable (Word32, Word32) where+    setUniform_ = setUi2+instance Uniformable (Word32, Word32, Word32) where+    setUniform_ = setUi3+instance Uniformable (Word32, Word32, Word32, Word32) where+    setUniform_ = setUi4+instance Uniformable Word64 where+    setUniform_ = setUi1+instance Uniformable (Word64, Word64) where+    setUniform_ = setUi2+instance Uniformable (Word64, Word64, Word64) where+    setUniform_ = setUi3+instance Uniformable (Word64, Word64, Word64, Word64) where+    setUniform_ = setUi4+instance Uniformable CUInt where+    setUniform_ = setUi1+instance Uniformable (CUInt, CUInt) where+    setUniform_ = setUi2+instance Uniformable (CUInt, CUInt, CUInt) where+    setUniform_ = setUi3+instance Uniformable (CUInt, CUInt, CUInt, CUInt) where+    setUniform_ = setUi4+instance Uniformable CInt where+    setUniform_ = setI1+instance Uniformable (CInt, CInt) where+    setUniform_ = setI2+instance Uniformable (CInt, CInt, CInt) where+    setUniform_ = setI3+instance Uniformable (CInt, CInt, CInt, CInt) where+    setUniform_ = setI4++instance Uniformable Int8 where+    setUniform_ = setI1+instance Uniformable (Int8, Int8) where+    setUniform_ = setI2+instance Uniformable (Int8, Int8, Int8) where+    setUniform_ = setI3+instance Uniformable (Int8, Int8, Int8, Int8) where+    setUniform_ = setI4+instance Uniformable Int16 where+    setUniform_ = setI1+instance Uniformable (Int16, Int16) where+    setUniform_ = setI2+instance Uniformable (Int16, Int16, Int16) where+    setUniform_ = setI3+instance Uniformable (Int16, Int16, Int16, Int16) where+    setUniform_ = setI4+instance Uniformable Int32 where+    setUniform_ = setI1+instance Uniformable (Int32, Int32) where+    setUniform_ = setI2+instance Uniformable (Int32, Int32, Int32) where+    setUniform_ = setI3+instance Uniformable (Int32, Int32, Int32, Int32) where+    setUniform_ = setI4+instance Uniformable Int64 where+    setUniform_ = setI1+instance Uniformable (Int64, Int64) where+    setUniform_ = setI2+instance Uniformable (Int64, Int64, Int64) where+    setUniform_ = setI3+instance Uniformable (Int64, Int64, Int64, Int64) where+    setUniform_ = setI4+instance Uniformable Int where+    setUniform_ = setI1+instance Uniformable (Int, Int) where+    setUniform_ = setI2+instance Uniformable (Int, Int, Int) where+    setUniform_ = setI3+instance Uniformable (Int, Int, Int, Int) where+    setUniform_ = setI4+instance Uniformable Integer where+    setUniform_ = setI1+instance Uniformable (Integer, Integer) where+    setUniform_ = setI2+instance Uniformable (Integer, Integer, Integer) where+    setUniform_ = setI3+instance Uniformable (Integer, Integer, Integer, Integer) where+    setUniform_ = setI4+instance Uniformable Float where+    setUniform_ program loc f1 =+        mglProgramUniform1f program loc (CFloat f1)+instance Uniformable (Float, Float) where+    setUniform_ program loc (f1, f2) =+        mglProgramUniform2f program loc (CFloat f1) (CFloat f2)+instance Uniformable (Float, Float, Float) where+    setUniform_ program loc (f1, f2, f3) =+        mglProgramUniform3f program loc+                            (CFloat f1)+                            (CFloat f2)+                            (CFloat f3)+instance Uniformable (Float, Float, Float, Float) where+    setUniform_ program loc (f1, f2, f3, f4) =+        mglProgramUniform4f program loc+                            (CFloat f1)+                            (CFloat f2)+                            (CFloat f3)+                            (CFloat f4)+instance Uniformable CFloat where+    setUniform_ = mglProgramUniform1f+instance Uniformable (CFloat, CFloat) where+    setUniform_ program loc (f1, f2) =+        mglProgramUniform2f program loc f1 f2+instance Uniformable (CFloat, CFloat, CFloat) where+    setUniform_ program loc (f1, f2, f3) =+        mglProgramUniform3f program loc f1 f2 f3+instance Uniformable (CFloat, CFloat, CFloat, CFloat) where+    setUniform_ program loc (f1, f2, f3, f4) =+        mglProgramUniform4f program loc f1 f2 f3 f4++instance Uniformable Double where+    setUniform_ program loc f1 =+        mglProgramUniform1f program loc (double2CFloat f1)+instance Uniformable (Double, Double) where+    setUniform_ program loc (f1, f2) =+        mglProgramUniform2f program loc (double2CFloat f1) (double2CFloat f2)+instance Uniformable (Double, Double, Double) where+    setUniform_ program loc (f1, f2, f3) =+        mglProgramUniform3f program loc+                            (double2CFloat f1)+                            (double2CFloat f2)+                            (double2CFloat f3)+instance Uniformable (Double, Double, Double, Double) where+    setUniform_ program loc (f1, f2, f3, f4) =+        mglProgramUniform4f program loc+                            (double2CFloat f1)+                            (double2CFloat f2)+                            (double2CFloat f3)+                            (double2CFloat f4)+instance Uniformable CDouble where+    setUniform_ program loc f1 =+        mglProgramUniform1f program loc (cdouble2CFloat f1)+instance Uniformable (CDouble, CDouble) where+    setUniform_ program loc (f1, f2) =+        mglProgramUniform2f program loc (cdouble2CFloat f1) (cdouble2CFloat f2)+instance Uniformable (CDouble, CDouble, CDouble) where+    setUniform_ program loc (f1, f2, f3) =+        mglProgramUniform3f program loc+                            (cdouble2CFloat f1)+                            (cdouble2CFloat f2)+                            (cdouble2CFloat f3)+instance Uniformable (CDouble, CDouble, CDouble, CDouble) where+    setUniform_ program loc (f1, f2, f3, f4) =+        mglProgramUniform4f program loc+                            (cdouble2CFloat f1)+                            (cdouble2CFloat f2)+                            (cdouble2CFloat f3)+                            (cdouble2CFloat f4)++instance Uniformable Vector3 where+    setUniform_ program loc (toTuple3 -> tuple) =+        setUniform_ program loc tuple++instance Uniformable Quaternion where+    setUniform_ program loc (toTupleq -> tuple) =+        setUniform_ program loc tuple++instance Uniformable Matrix33 where+    setUniform_ program loc m33 =+        withMatrix33Ptr m33 $+            mglProgramUniformMatrix3fv program loc 1+                 (fromIntegral gl_FALSE)++instance Uniformable Matrix44 where+    setUniform_ program loc m44 =+        withMatrix44Ptr m44 $ mglProgramUniformMatrix4fv program loc 1+            (fromIntegral gl_FALSE)++-- these are for RULES firing+newtype Transpose33 = Transpose33 Matrix33+newtype Transpose44 = Transpose44 Matrix44++instance Uniformable Transpose33 where+    setUniform_ program loc (Transpose33 m33) =+        withMatrix33Ptr m33 $+            mglProgramUniformMatrix3fv program loc 1 (fromIntegral gl_TRUE)++instance Uniformable Transpose44 where+    setUniform_ program loc (Transpose44 m44) =+        withMatrix44Ptr m44 $ mglProgramUniformMatrix4fv program loc 1+            (fromIntegral gl_TRUE)++double2CFloat :: Double -> CFloat+double2CFloat dbl = CFloat $ double2Float dbl++cdouble2CFloat :: CDouble -> CFloat+cdouble2CFloat (CDouble dbl) = CFloat $ double2Float dbl++{-# RULES "transpose/glProgramUniformMatrix3fv" forall (a :: Matrix33) b c.+        setUniform (transpose33 a) b c =+        setUniform (Transpose33 a) b c #-}++{-# RULES "transpose/glProgramUniformMatrix4fv" forall (a :: Matrix44) b c.+        setUniform (transpose44 a) b c =+        setUniform (Transpose44 a) b c #-}++-- | Returns a uniform location for a given name.+--+-- The uniform may not be in the shader or it may not be active. If this+-- happens, a special uniform location is returned that can be used in+-- `setUniform` to make it do nothing.+getUniformLocation :: T.Text -> Pipeline -> IO UniformLocation+getUniformLocation name pipeline = fromIntegral <$>+    withResource (resourcePL pipeline) (\(Pipeline_ program) ->+         B.useAsCString (T.encodeUtf8 name) $ \cstr ->+             glGetUniformLocation program cstr)++-- context local pipeline+newtype CLNopPipeline = CLNopPipeline { unwrapCLNop :: Pipeline }+                        deriving ( Typeable )++-- | Returns a pipeline that does not do anything.+--+-- Within the same context, this returns the same pipeline for each invocation.+nopPipeline :: IO Pipeline+nopPipeline =+    unwrapCLNop <$> retrieveContextLocalData (CLNopPipeline <$> cr)+  where+    cr = do+        vsh <- newShader vsh_src Vertex+        fsh <- newShader fsh_src Fragment+        newPipeline [vsh, fsh]+      where+        vsh_src = "#version 330\nvoid main() { }\n"+        fsh_src = "#version 330\nvoid main() { }\n"+
+ src/Caramia/Shader/Internal.hs view
@@ -0,0 +1,65 @@+{-# LANGUAGE ViewPatterns, NoImplicitPrelude, DeriveDataTypeable #-}++module Caramia.Shader.Internal+    ( Shader(..)+    , Pipeline(..)+    , Pipeline_(..)+    , Shader_(..)+    , ShaderStage(..)+    , shaderIdentifierSupply )+    where++import Caramia.Prelude++import Caramia.Resource+import System.IO.Unsafe+import Caramia.Internal.OpenGLCApi++-- | A shader object for a specific shader stage.+--+-- OpenGL equivalent is the shader object.+data Shader = Shader+    { resource     :: !(Resource Shader_)+    , viewStage    :: !ShaderStage+    -- ^ Which stage does this shader belong to.+    , identifier   :: !Int+    }+    deriving ( Typeable )++instance Eq Shader where+    (resource -> res1) == (resource -> res2) = res1 == res2++-- | The ordering has no inherent meaning but it allows shaders to be stored+-- correctly in containers that have `Ord` constraint.+instance Ord Shader where+    (identifier -> id1) `compare` (identifier -> id2) = id1 `compare` id2++data Shader_ = CompiledShader !GLuint   -- OpenGL shader++-- | A pipeline object that references a collection of shaders.+--+-- OpenGL equivalent is the shader program object.+data Pipeline = Pipeline+    { resourcePL :: !(Resource Pipeline_)+    , pipelineIdentifier :: !Int+    , shaders :: [Shader] }+    deriving ( Typeable )++instance Eq Pipeline where+    p1 == p2 = resourcePL p1 == resourcePL p2++instance Ord Pipeline where+    p1 `compare` p2 = pipelineIdentifier p1 `compare` pipelineIdentifier p2++newtype Pipeline_ = Pipeline_ GLuint++shaderIdentifierSupply :: IORef Int+shaderIdentifierSupply = unsafePerformIO $ newIORef 0+{-# NOINLINE shaderIdentifierSupply #-}++data ShaderStage =+    Vertex+  | Fragment+  | Geometry+  deriving ( Eq, Ord, Show, Read )+
+ src/Caramia/Sync.hs view
@@ -0,0 +1,68 @@+-- | Synchronization primitives.+--+-- This module implements fence synchronization objects. They can be used to+-- check when a GPU operation has been done.+--+-- At the moment, the only place where these objects are useful in Caramia is+-- unsynchronized buffer mapping.+--++{-# LANGUAGE NoImplicitPrelude, DeriveDataTypeable, MultiWayIf #-}++module Caramia.Sync+    (+    -- * Operations+      fence+    , waitFence+    , isFenceSignalled+    -- * Types+    , Fence() )+    where++import Caramia.Internal.OpenGLCApi+import Caramia.Prelude+import Caramia.Resource+import Control.Exception++newtype Fence = Fence (Resource GLsync)+                deriving ( Eq, Typeable )++-- | Create a fence.+fence :: IO Fence+fence = mask_ $ do+    resource <-+        newResource createFence+                    glDeleteSync+                    (return ())+    return $ Fence resource+  where+    createFence = glFenceSync gl_SYNC_GPU_COMMANDS_COMPLETE 0++-- | Waits for a fence to signal.+--+-- IMPORTANT: this is not interruptible by asynchronous exceptions.+waitFence :: Int           -- ^ Number of microseconds to wait.+          -> Fence+          -> IO Bool       -- ^ `True` if the fence was signalled,+                           --   `False` if waiting timed out.+waitFence useconds (Fence resource) =+    withResource resource $ \fencesync -> do+        ret <- glClientWaitSync fencesync gl_SYNC_FLUSH_COMMANDS_BIT+                                (fromIntegral actual_seconds)+        if | ret == gl_ALREADY_SIGNALED -> return True+           | ret == gl_TIMEOUT_EXPIRED -> return False+           | ret == gl_CONDITION_SATISFIED -> return True+           | ret == gl_WAIT_FAILED -> return True -- should we throw an error?+  where+    actual_seconds :: Word64+    actual_seconds =+        if useconds * 1000 < useconds+          then maxBound+          else safeFromIntegral $ useconds * 1000++-- | Checks if a fence has been signalled.+--+-- @ isFenceSignalled = waitFence 0 @+isFenceSignalled :: Fence -> IO Bool+isFenceSignalled = waitFence 0+
+ src/Caramia/Texture.hs view
@@ -0,0 +1,728 @@+-- | Textures.+--++{-# LANGUAGE RecordWildCards, ScopedTypeVariables, NoImplicitPrelude #-}+{-# LANGUAGE MultiWayIf, ViewPatterns, DeriveDataTypeable #-}++module Caramia.Texture+    (+    -- * Creating textures+      newTexture+    , Texture()+    , TextureSpecification(..)+    , textureSpecification+    , Topology(..)+    -- * Uploading to textures+    , uploadToTexture+    , Uploading(..)+    , uploading1D+    , uploading2D+    , uploading3D+    , UploadFormat(..)+    , CubeSide(..)+    -- * Texture units+    , TextureUnit+    -- * Mipmapping+    , generateMipmaps+    -- * Texture parameters+    , setWrapping+    , getWrapping+    , setMinFilter+    , setMagFilter+    , getMinFilter+    , getMagFilter+    , setAnisotropy+    , getAnisotropy+    , setCompareMode+    , getCompareMode+    , MinFilter(..)+    , MagFilter(..)+    , Wrapping(..)+    , CompareMode(..)+    -- * Views+    , viewSpecification+    , viewWidth+    , viewHeight+    , viewDepth+    , viewMipmapLevels+    -- * Utilities+    , maxMipmapLevels )+    where++import Caramia.Prelude++import Caramia.Texture.Internal+import Caramia.Internal.OpenGLCApi+import qualified Caramia.Buffer.Internal as Buf+import Caramia.ImageFormats.Internal+import Caramia.Resource+import Control.Exception+import Foreign+import Foreign.C.Types++textureSpecification :: TextureSpecification+textureSpecification = TextureSpecification {+    topology = error "textureSpecification: topology is not set."+  , imageFormat = error "textureSpecification: image format is not set."+  , mipmapLevels = 1 }++-- | Returns the width of a texture.+viewWidth :: Texture -> Int+viewWidth (viewSpecification -> spec) = viewWidth' (topology spec)+  where+    viewWidth' (Tex1D {..}) = width1D+    viewWidth' (Tex2D {..}) = width2D+    viewWidth' (Tex3D {..}) = width3D+    viewWidth' (Tex1DArray {..}) = width1DArray+    viewWidth' (Tex2DArray {..}) = width2DArray+    viewWidth' (Tex2DMultisample {..}) = width2DMS+    viewWidth' (Tex2DMultisampleArray {..}) = width2DMSArray+    viewWidth' (TexCube {..}) = widthCube+    viewWidth' (TexBuffer {}) =+        error "viewWidth: buffer texture has no meaningful width."+        -- TODO: you can actually infer that from the buffer size+        -- so implement it++-- | Returns the height of a texture.+--+-- This is 1 for one-dimensional textures.+viewHeight :: Texture -> Int+viewHeight (viewSpecification -> spec) = viewHeight' (topology spec)+  where+    viewHeight' (Tex1D {..}) = 1+    viewHeight' (Tex2D {..}) = height2D+    viewHeight' (Tex3D {..}) = height3D+    viewHeight' (Tex1DArray {..}) = 1+    viewHeight' (Tex2DArray {..}) = height2DArray+    viewHeight' (Tex2DMultisample {..}) = height2DMS+    viewHeight' (Tex2DMultisampleArray {..}) = height2DMSArray+    viewHeight' (TexCube {..}) = widthCube+    viewHeight' (TexBuffer {}) = 1++-- | Returns the depth of a 3D texture or number of layers in array textures.+--+-- This is 1 for any other type of texture.+viewDepth :: Texture -> Int+viewDepth (viewSpecification -> spec) = viewDepth' (topology spec)+  where+    viewDepth' (Tex1D {..}) = 1+    viewDepth' (Tex2D {..}) = 1+    viewDepth' (Tex3D {..}) = depth3D+    viewDepth' (Tex1DArray {..}) = layers1D+    viewDepth' (Tex2DArray {..}) = layers2D+    viewDepth' (Tex2DMultisample {..}) = 1+    viewDepth' (Tex2DMultisampleArray {..}) = layers2DMS+    viewDepth' (TexCube {..}) = 1+    viewDepth' (TexBuffer {}) = 1++viewMipmapLevels :: Texture -> Int+viewMipmapLevels = mipmapLevels . viewSpecification++isMultisamplingTopology :: Topology -> Bool+isMultisamplingTopology (Tex2DMultisample {..}) = True+isMultisamplingTopology (Tex2DMultisampleArray {..}) = True+isMultisamplingTopology _ = False++-- | Creates a new texture.+--+-- Initially the contents of the texture are undefined.+--+-- Texture dimensions must be positive.+newTexture :: TextureSpecification+           -> IO Texture+newTexture spec = mask_ $ do+    topologySanityCheck (topology spec)+    when (not (isMultisamplingTopology (topology spec)) &&+          mipmapLevels spec < 1) $+        error "newTexture: mipmapLevels is not positive."++    res <- newResource creator+                       deleter+                       (return ())++    index <- atomicModifyIORef' ordIndices $ \old -> ( old+1, old )+    return Texture { resource = res+                   , ordIndex = index+                   , viewSpecification = spec }+  where+    num_mipmaps = mipmapLevels spec++    -- a lot of code just to check that all the dimensions are positive...+    topologySanityCheck t@(Tex1D {..})+        | width1D <= 0 = badTopology t+        | not (isValidMipmap width1D num_mipmaps) = badMipmaps+        | otherwise = return ()+    topologySanityCheck t@(Tex2D {..})+        | width2D <= 0 || height2D <= 0 = badTopology t+        | not (isValidMipmap (max width2D height2D) num_mipmaps) = badMipmaps+        | otherwise = return ()+    topologySanityCheck t@(Tex3D {..})+        | width3D <= 0 || height3D <= 0 || depth3D <= 0 = badTopology t+        | not (isValidMipmap (max width3D $ max height3D depth3D) num_mipmaps) =+              badMipmaps+        | otherwise = return ()+    topologySanityCheck t@(Tex1DArray {..})+        | width1DArray <= 0 || layers1D <= 0 = badTopology t+        | not (isValidMipmap width1DArray num_mipmaps) =+              badMipmaps+        | otherwise = return ()+    topologySanityCheck t@(Tex2DArray {..})+        | width2DArray <= 0 || height2DArray <= 0 ||+          layers2D <= 0 = badTopology t+        | not (isValidMipmap (max width2DArray height2DArray) num_mipmaps) =+              badMipmaps+        | otherwise = return ()+    topologySanityCheck t@(Tex2DMultisample {..})+        | width2DMS <= 0 || height2DMS <= 0 = badTopology t+        | otherwise = return ()+    topologySanityCheck t@(Tex2DMultisampleArray {..})+        | width2DMSArray <= 0 || height2DMSArray <= 0 ||+          layers2DMS <= 0 = badTopology t+        | otherwise = return ()+    topologySanityCheck t@(TexCube {..})+        | widthCube <= 0 = badTopology t+        | not (isValidMipmap widthCube num_mipmaps) =+              badMipmaps+        | otherwise = return ()+    topologySanityCheck (TexBuffer {}) = return ()++    badTopology _ = error "newTexture: bad topology."++    badMipmaps =+        error $ "newTexture: bad number of mipmap levels: " <> show num_mipmaps++    deleter (Texture_ name) =+        with name $ glDeleteTextures 1++    creator = do+        name <- bracketOnError+            (alloca $ \name_ptr ->+                glGenTextures 1 name_ptr *> peek name_ptr)+            (deleter . Texture_ )+            (\name -> do+                createByTopology name (topology spec)+                return name)+        return (Texture_ name)++    -- TODO: use DSA when available, perhaps add mglTextureStorage* functions+    -- to Caramia.Internal.OpenGLCApi?+    createByTopology :: GLuint -> Topology -> IO ()+    createByTopology name (Tex1D {..}) =+        withBinding gl_TEXTURE_1D gl_TEXTURE_BINDING_1D name $+            glTexStorage1D gl_TEXTURE_1D+                           (safeFromIntegral num_mipmaps)+                           (toConstantIF (imageFormat spec))+                           (safeFromIntegral width1D)+    createByTopology name (Tex2D {..}) =+        withBinding gl_TEXTURE_2D gl_TEXTURE_BINDING_2D name $+            glTexStorage2D gl_TEXTURE_2D+                           (safeFromIntegral num_mipmaps)+                           (toConstantIF (imageFormat spec))+                           (safeFromIntegral width2D)+                           (safeFromIntegral height2D)+    createByTopology name (Tex3D {..}) =+        withBinding gl_TEXTURE_3D gl_TEXTURE_BINDING_3D name $+            glTexStorage3D gl_TEXTURE_3D+                           (safeFromIntegral num_mipmaps)+                           (toConstantIF (imageFormat spec))+                           (safeFromIntegral width3D)+                           (safeFromIntegral height3D)+                           (safeFromIntegral depth3D)+    createByTopology name (Tex1DArray {..}) =+        withBinding gl_TEXTURE_1D_ARRAY gl_TEXTURE_BINDING_1D_ARRAY name $+            glTexStorage2D gl_TEXTURE_1D_ARRAY+                           (safeFromIntegral num_mipmaps)+                           (toConstantIF (imageFormat spec))+                           (safeFromIntegral width1DArray)+                           (safeFromIntegral layers1D)+    createByTopology name (Tex2DArray {..}) =+        withBinding gl_TEXTURE_2D_ARRAY gl_TEXTURE_BINDING_2D_ARRAY name $+            glTexStorage3D gl_TEXTURE_2D_ARRAY+                           (safeFromIntegral num_mipmaps)+                           (toConstantIF (imageFormat spec))+                           (safeFromIntegral width2DArray)+                           (safeFromIntegral height2DArray)+                           (safeFromIntegral layers2D)+    createByTopology name (Tex2DMultisample {..}) =+        withBinding gl_TEXTURE_2D_MULTISAMPLE+                    gl_TEXTURE_BINDING_2D_MULTISAMPLE+                    name $+            glTexImage2DMultisample+                           gl_TEXTURE_2D_MULTISAMPLE+                           (safeFromIntegral samples2DMS)+                           (fromIntegral $ toConstantIF (imageFormat spec))+                           (safeFromIntegral width2DMS)+                           (safeFromIntegral height2DMS)+                           (if fixedSampleLocations2DMS+                             then 1 else 0)+    createByTopology name (Tex2DMultisampleArray {..}) =+        withBinding gl_TEXTURE_2D_MULTISAMPLE_ARRAY+                    gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY+                    name $+            glTexImage3DMultisample+                           gl_TEXTURE_2D_MULTISAMPLE_ARRAY+                           (safeFromIntegral samples2DMSArray)+                           (fromIntegral $ toConstantIF (imageFormat spec))+                           (safeFromIntegral width2DMSArray)+                           (safeFromIntegral height2DMSArray)+                           (safeFromIntegral layers2DMS)+                           (if fixedSampleLocations2DMSArray+                             then 1 else 0)+    createByTopology name (TexCube {..}) =+        withBinding gl_TEXTURE_CUBE_MAP+                    gl_TEXTURE_BINDING_CUBE_MAP+                    name $+            glTexStorage2D gl_TEXTURE_CUBE_MAP+                           (safeFromIntegral num_mipmaps)+                           (fromIntegral $ toConstantIF (imageFormat spec))+                           (safeFromIntegral widthCube)+                           (safeFromIntegral widthCube)+    createByTopology name (TexBuffer {..}) =+        withBinding gl_TEXTURE_BUFFER+                    gl_TEXTURE_BINDING_BUFFER+                    name $+            withResource (Buf.resource texBuffer) $ \(Buf.Buffer_ bufname) ->+                glTexBuffer gl_TEXTURE_BUFFER+                            (fromIntegral $ toConstantIF (imageFormat spec))+                            bufname++-- | Generate all mipmaps for a texture. If mipmap levels were specified, that+-- is.+generateMipmaps :: Texture -> IO ()+generateMipmaps = flip withBindingByTopology glGenerateMipmap++-- | Specifies the format in which buffer data is for the purposes of uploading+-- said data to a texture.+data UploadFormat =+    UR    -- ^ Just red.+  | URG   -- ^ Red and green.+  | URGB  -- ^ You know the drill.+  | URGBA+  | UBGR+  | UBGRA+  | UDEPTH_COMPONENT   -- ^ Depth values.+  | USTENCIL_INDEX     -- ^ Stencil values.+  deriving ( Eq, Ord, Show, Read, Typeable )++-- TODO: add UDEPTH_STENCIL when `SpecificationType` has special interpretation+-- formats.++toConstantUF :: UploadFormat -> GLenum+toConstantUF UR = gl_RED+toConstantUF URG = gl_RG+toConstantUF URGB = gl_RGB+toConstantUF URGBA = gl_RGBA+toConstantUF UBGR = gl_BGR+toConstantUF UBGRA = gl_BGRA+toConstantUF UDEPTH_COMPONENT = gl_DEPTH_COMPONENT+toConstantUF USTENCIL_INDEX = gl_STENCIL_INDEX++-- | Used to specify how to move the data from a `Buffer` to a `Texture` in+-- `uploadToTexture`.+--+-- This is common for all texture topologies. However, some fields are ignored+-- depending on the topology.+--+-- For example, if you upload into a 1D texture, then all fields that deal with+-- higher dimensions (`yOffset`, `zOffset`, `uHeight` etc.) are ignored.+--+-- It is recommended that you use one of the smart constructors as they+-- implement the common use cases so you don't have to fill all these fields by+-- yourself.+data Uploading = Uploading+    { fromBuffer    :: !Buf.Buffer  -- ^ From which buffer to upload.+    , bufferOffset  :: !Int     -- ^ Offset in the buffer, in bytes,+                                --   from where to start uploading.+    , toMipmapLevel :: !Int     -- ^ To which mipmap level to upload.+                                --   (0 = base level).+    , specificationType :: !SpecificationType+    -- ^ What data type is used for each component value in a pixel.+    , uploadFormat  :: !UploadFormat+    -- ^ What format is the source data in.+    , xOffset       :: !Int     -- ^ X offset where to put the data.+    , yOffset       :: !Int     -- ^ Y offset where to put the data.+    , zOffset       :: !Int     -- ^ Z offset where to put the data.+    , uWidth        :: !Int     -- ^ Width of the data to put.+    , uHeight       :: !Int     -- ^ Height of the data to put.+    , uDepth        :: !Int     -- ^ Number of 2D images to put.+    , cubeSide      :: CubeSide  -- ^ Only used for cube map textures.+                                 -- Specifies which side of the cube to upload.+                                 -- Not evaluated if the texture is not a cube+                                 -- texture.+    , numColumns    :: !Int+    -- ^ Number of columns in the image in the source buffer. This value is+    -- also sometimes known as \'pitch\'. It is the same as `uWidth` except in+    -- cases where the next row in source data does not come immediately after+    -- the current row but after `numColumns` from the first pixel in the row.+    , numRows       :: !Int+    -- ^ Same as `numColumns` but for images in 3D uploading.+    , pixelAlignment     :: !Int+    -- ^ Alignment in which the source texture data is. Every row is aligned to+    -- this value. Allowed values are 1, 2, 4 and 8. The default value in smart+    -- constructors is 1.+    }+    deriving ( Eq, Typeable )++-- | Values of this type refer to sides of a cube.+data CubeSide =+    PositiveY+  | NegativeY+  | PositiveX+  | NegativeX+  | PositiveZ+  | NegativeZ+    deriving ( Eq, Ord, Show, Read, Typeable )++toConstantCS :: CubeSide -> GLenum+toConstantCS PositiveX = gl_TEXTURE_CUBE_MAP_POSITIVE_X+toConstantCS NegativeX = gl_TEXTURE_CUBE_MAP_NEGATIVE_X+toConstantCS PositiveY = gl_TEXTURE_CUBE_MAP_POSITIVE_Y+toConstantCS NegativeY = gl_TEXTURE_CUBE_MAP_NEGATIVE_Y+toConstantCS PositiveZ = gl_TEXTURE_CUBE_MAP_POSITIVE_Z+toConstantCS NegativeZ = gl_TEXTURE_CUBE_MAP_NEGATIVE_Z++-- | Constructs a common 1D uploading.+uploading1D :: Buf.Buffer+            -> Int     -- ^ How many pixels to upload.+            -> SpecificationType+            -> UploadFormat+            -> Uploading+uploading1D buffer pixels stype uf =+    Uploading {+         fromBuffer = buffer+       , bufferOffset = 0+       , specificationType = stype+       , uploadFormat = uf+       , toMipmapLevel = 0+       , xOffset = 0+       , yOffset = 0+       , zOffset = 0+       , uWidth = pixels+       , uHeight = 1+       , uDepth = 1+       , numColumns = pixels+       , cubeSide = PositiveY+       , numRows = 1+       , pixelAlignment = 1 }++-- | Constructs a common 2D uploading.+--+-- This can also be used for uploading into 1D texture arrays.+uploading2D :: Buf.Buffer+            -> Int     -- ^ Width of the image to upload.+            -> Int     -- ^ Height of the image to upload.+            -> SpecificationType+            -> UploadFormat+            -> Uploading+uploading2D buffer width height stype uf =+    Uploading {+         fromBuffer = buffer+       , bufferOffset = 0+       , specificationType = stype+       , uploadFormat = uf+       , toMipmapLevel = 0+       , xOffset = 0+       , yOffset = 0+       , zOffset = 0+       , uWidth = width+       , uHeight = height+       , uDepth = 1+       , numColumns = width+       , cubeSide = PositiveY+       , numRows = height+       , pixelAlignment = 1 }++-- | Constructs a common 3D uploading.+--+-- This can also be used for uploading into 2D texture arrays.+uploading3D :: Buf.Buffer+            -> Int     -- ^ Width of the image to upload.+            -> Int     -- ^ Height of the image to upload.+            -> Int     -- ^ Number of images to upload.+            -> SpecificationType+            -> UploadFormat+            -> Uploading+uploading3D buffer width height depth stype uf =+    Uploading {+         fromBuffer = buffer+       , bufferOffset = 0+       , specificationType = stype+       , uploadFormat = uf+       , toMipmapLevel = 0+       , xOffset = 0+       , yOffset = 0+       , zOffset = 0+       , uWidth = width+       , uHeight = height+       , uDepth = depth+       , numColumns = width+       , cubeSide = PositiveY+       , numRows = height+       , pixelAlignment = 1 }++-- | Uploads an image to a texture.+uploadToTexture :: Uploading+                -> Texture+                -> IO ()+uploadToTexture uploading tex = mask_ $+    withResource (Buf.resource (fromBuffer uploading)) $ \(Buf.Buffer_ buf) ->+    withBoundPixelUnpackBuffer buf $ do+        old_num_cols  <- fromIntegral <$> gi gl_UNPACK_ROW_LENGTH+        old_num_rows  <- fromIntegral <$> gi gl_UNPACK_IMAGE_HEIGHT+        old_alignment <- fromIntegral <$> gi gl_UNPACK_ALIGNMENT+        glPixelStorei gl_UNPACK_ROW_LENGTH+                      (safeFromIntegral $ numColumns uploading)+        flip finally (glPixelStorei gl_UNPACK_ROW_LENGTH old_num_cols) $ do+         glPixelStorei gl_UNPACK_IMAGE_HEIGHT+                       (safeFromIntegral $ numRows uploading)+         flip finally (glPixelStorei gl_UNPACK_IMAGE_HEIGHT old_num_rows) $ do+          glPixelStorei gl_UNPACK_ALIGNMENT+                        (safeFromIntegral $ pixelAlignment uploading)+          flip finally (glPixelStorei gl_UNPACK_ALIGNMENT old_alignment) $+           withResource (resource tex) $ \(Texture_ texname) ->+            case topology $ viewSpecification tex of+                Tex1D {..} ->+                    upload1D gl_TEXTURE_1D gl_TEXTURE_BINDING_1D+                             texname uploading+                Tex2D {..} ->+                    upload2D gl_TEXTURE_2D gl_TEXTURE_BINDING_2D+                             texname uploading+                Tex3D {..} ->+                    upload3D gl_TEXTURE_3D gl_TEXTURE_BINDING_3D+                             texname uploading+                Tex1DArray {..} ->+                    upload2D gl_TEXTURE_1D_ARRAY gl_TEXTURE_BINDING_1D_ARRAY+                             texname uploading+                Tex2DArray {..} ->+                    upload3D gl_TEXTURE_2D_ARRAY gl_TEXTURE_BINDING_2D_ARRAY+                             texname uploading+                Tex2DMultisample {..} ->+                    error $ "uploadToTexture: cannot upload to " <>+                            "multisampling textures."+                Tex2DMultisampleArray {..} ->+                    error $ "uploadToTexture: cannot upload to " <>+                            "multisampling array textures."+                TexCube {..} ->+                    uploadCube gl_TEXTURE_CUBE_MAP+                               gl_TEXTURE_BINDING_CUBE_MAP+                               texname uploading+                TexBuffer {..} ->+                    error $ "uploadToTexture: cannot upload to " <>+                            "buffer textures. (please upload directly to the " <>+                            "associated buffer instead.)"++upload1D :: GLenum -> GLenum -> GLuint -> Uploading -> IO ()+upload1D target binding tex (Uploading {..}) =+    withBinding target binding tex $+        glTexSubImage1D target+                        (safeFromIntegral toMipmapLevel)+                        (safeFromIntegral xOffset)+                        (safeFromIntegral uWidth)+                        (toConstantUF uploadFormat)+                        (toConstantST specificationType)+                        (intPtrToPtr $+                         fromIntegral bufferOffset)++upload2D :: GLenum -> GLenum -> GLuint -> Uploading -> IO ()+upload2D target binding tex (Uploading {..}) =+    withBinding target binding tex $+        glTexSubImage2D target+                        (safeFromIntegral toMipmapLevel)+                        (safeFromIntegral xOffset)+                        (safeFromIntegral yOffset)+                        (safeFromIntegral uWidth)+                        (safeFromIntegral uHeight)+                        (toConstantUF uploadFormat)+                        (toConstantST specificationType)+                        (intPtrToPtr $+                         fromIntegral bufferOffset)++upload3D :: GLenum -> GLenum -> GLuint -> Uploading -> IO ()+upload3D target binding tex (Uploading {..}) =+    withBinding target binding tex $+        glTexSubImage3D target+                        (safeFromIntegral toMipmapLevel)+                        (safeFromIntegral xOffset)+                        (safeFromIntegral yOffset)+                        (safeFromIntegral zOffset)+                        (safeFromIntegral uWidth)+                        (safeFromIntegral uHeight)+                        (safeFromIntegral uDepth)+                        (toConstantUF uploadFormat)+                        (toConstantST specificationType)+                        (intPtrToPtr $+                         fromIntegral bufferOffset)++uploadCube :: GLenum -> GLenum -> GLuint -> Uploading -> IO ()+uploadCube target binding tex (Uploading {..}) =+    withBinding target binding tex $+        glTexSubImage2D (toConstantCS cubeSide)+                        (safeFromIntegral toMipmapLevel)+                        (safeFromIntegral xOffset)+                        (safeFromIntegral yOffset)+                        (safeFromIntegral uWidth)+                        (safeFromIntegral uHeight)+                        (toConstantUF uploadFormat)+                        (toConstantST specificationType)+                        (intPtrToPtr $+                         fromIntegral bufferOffset)++isValidMipmap :: Int -> Int -> Bool+isValidMipmap w level+    | w <= 0 = False+    | level < 0 = False+    | level > floor (logBase (2 :: Double) (fromIntegral w)) + 1 = False+    | otherwise = True++-- | Returns the maximal number of mipmap levels when given a side length.+maxMipmapLevels :: Int -> Int+maxMipmapLevels width+    | width <= 0 = 0+    | otherwise = floor (logBase (2 :: Double) (fromIntegral width)) + 1++class TexParam a where+    tpEnum :: a -> GLenum+    tpToConstant :: a -> GLenum+    tpFromConstant :: GLenum -> a++data MinFilter =+    MiNearest+  | MiLinear+  | MiNearestMipmapNearest+  | MiLinearMipmapNearest+  | MiNearestMipmapLinear+  | MiLinearMipmapLinear+  deriving ( Eq, Ord, Show, Read, Typeable )++data MagFilter =+   MaNearest+ | MaLinear+ deriving ( Eq, Ord, Show, Read, Typeable )++data Wrapping =+   Clamp+ | Repeat+ deriving ( Eq, Ord, Show, Read, Typeable )++-- | Texture comparison modes.+--+-- See @ glTexParameteri @ documentation in OpenGL.+data CompareMode+ = NoCompare+ | CompareRefToTexture+ deriving ( Eq, Ord, Show, Read, Typeable )++toConstantC :: CompareMode -> GLenum+toConstantC NoCompare = gl_NONE+toConstantC CompareRefToTexture = gl_COMPARE_REF_TO_TEXTURE++toConstantW :: Wrapping -> GLenum+toConstantW Clamp = gl_CLAMP_TO_EDGE+toConstantW Repeat = gl_REPEAT++instance TexParam MinFilter where+    tpEnum _ = gl_TEXTURE_MIN_FILTER+    tpToConstant MiNearest = gl_NEAREST+    tpToConstant MiLinear  = gl_LINEAR+    tpToConstant MiNearestMipmapNearest = gl_NEAREST_MIPMAP_NEAREST+    tpToConstant MiLinearMipmapNearest = gl_LINEAR_MIPMAP_NEAREST+    tpToConstant MiNearestMipmapLinear = gl_NEAREST_MIPMAP_LINEAR+    tpToConstant MiLinearMipmapLinear = gl_LINEAR_MIPMAP_LINEAR+    tpFromConstant c+        | c == gl_NEAREST = MiNearest+        | c == gl_LINEAR  = MiLinear+        | c == gl_NEAREST_MIPMAP_NEAREST = MiNearestMipmapNearest+        | c == gl_LINEAR_MIPMAP_NEAREST = MiLinearMipmapNearest+        | c == gl_NEAREST_MIPMAP_LINEAR = MiNearestMipmapLinear+        | c == gl_LINEAR_MIPMAP_LINEAR = MiLinearMipmapLinear+        | otherwise = error "MinFilter: unexpected filtering value."++instance TexParam MagFilter where+    tpEnum _ = gl_TEXTURE_MAG_FILTER+    tpToConstant MaNearest = gl_NEAREST+    tpToConstant MaLinear = gl_LINEAR++    tpFromConstant c+        | c == gl_NEAREST = MaNearest+        | c == gl_LINEAR  = MaLinear+        | otherwise = error "MagFilter: unexpected filtering value."++setMinFilter :: MinFilter -> Texture -> IO ()+setMinFilter = setTexParam++setMagFilter :: MagFilter -> Texture -> IO ()+setMagFilter = setTexParam++getMinFilter :: Texture -> IO MinFilter+getMinFilter = getTexParam++getMagFilter :: Texture -> IO MagFilter+getMagFilter = getTexParam++setTexParam :: TexParam a => a -> Texture -> IO ()+setTexParam param tex = withBindingByTopology tex $ \target ->+    glTexParameteri target (tpEnum param) (fromIntegral $ tpToConstant param)++getTexParam :: forall a. TexParam a => Texture -> IO a+getTexParam tex = withBindingByTopology tex $ \target ->+    alloca $ \result_ptr -> do+        glGetTexParameteriv target (tpEnum (undefined :: a)) result_ptr+        tpFromConstant . fromIntegral <$> peek result_ptr++setWrapping :: Wrapping -> Texture -> IO ()+setWrapping wrapping tex = withBindingByTopology tex $ \target -> do+    glTexParameteri target gl_TEXTURE_WRAP_S+                           (fromIntegral $ toConstantW wrapping)+    glTexParameteri target gl_TEXTURE_WRAP_T+                           (fromIntegral $ toConstantW wrapping)+    glTexParameteri target gl_TEXTURE_WRAP_R+                           (fromIntegral $ toConstantW wrapping)++setCompareMode :: CompareMode -> Texture -> IO ()+setCompareMode cmp_mode tex = withBindingByTopology tex $ \target ->+    glTexParameteri target gl_TEXTURE_COMPARE_MODE+                    (fromIntegral $ toConstantC cmp_mode)++getCompareMode :: Texture -> IO CompareMode+getCompareMode tex = withBindingByTopology tex $ \target ->+    alloca $ \result_ptr -> do+        glGetTexParameteriv target gl_TEXTURE_COMPARE_MODE result_ptr+        result <- fromIntegral <$> peek result_ptr+        return $ if+            | result == gl_NONE -> NoCompare+            | result == gl_COMPARE_REF_TO_TEXTURE -> CompareRefToTexture+            | otherwise -> error "getCompareMode: unexpected comparing mode."++getWrapping :: Texture -> IO Wrapping+getWrapping tex = withBindingByTopology tex $ \target ->+    alloca $ \result_ptr -> do+        glGetTexParameteriv target gl_TEXTURE_WRAP_S result_ptr+        result <- fromIntegral <$> peek result_ptr+        return $ if+            | result == gl_CLAMP_TO_EDGE -> Clamp+            | result == gl_REPEAT -> Repeat+            | otherwise -> error "getWrapping: unexpected wrapping mode."++setAnisotropy :: Float -> Texture -> IO ()+setAnisotropy ani tex = withBindingByTopology tex $ \target ->+    glTexParameterf target gl_TEXTURE_MAX_ANISOTROPY_EXT (CFloat ani)++getAnisotropy :: Texture -> IO Float+getAnisotropy tex = withBindingByTopology tex $ \target ->+    alloca $ \ani_ptr -> do+        glGetTexParameterfv target gl_TEXTURE_MAX_ANISOTROPY_EXT ani_ptr+        unwrap <$> peek ani_ptr+  where+    unwrap (CFloat f) = f++{-+nextMipmapLevel :: Int -> Int+nextMipmapLevel 0 = 0+nextMipmapLevel 1 = 1+nextMipmapLevel x = max 1 (x `div` 2)++nthMipmapLevel :: Int -> Int -> Int+nthMipmapLevel x 0 = x+nthMipmapLevel x n = nthMipmapLevel (nextMipmapLevel x) (n-1)+-}+
+ src/Caramia/Texture/Internal.hs view
@@ -0,0 +1,129 @@+{-# LANGUAGE RecordWildCards, NoImplicitPrelude, LambdaCase #-}+{-# LANGUAGE DeriveDataTypeable #-}++module Caramia.Texture.Internal where++import Caramia.Prelude++import Caramia.Resource+import Caramia.Internal.OpenGLCApi+import qualified Caramia.Buffer.Internal as Buf+import Caramia.ImageFormats+import System.IO.Unsafe+import Control.Exception++data Texture = Texture+    { resource :: !(Resource Texture_)+    , ordIndex :: !Int+    , viewSpecification :: !TextureSpecification }+    deriving ( Typeable )++newtype Texture_ = Texture_ GLuint++-- | The type of a texture unit.+--+-- The minimum valid value is 0 and maximum is implementation dependant but+-- in OpenGL at least 48 units will work at the same time in shaders.+type TextureUnit = Int++ordIndices :: IORef Int+ordIndices = unsafePerformIO $ newIORef 0+{-# NOINLINE ordIndices #-}++instance Eq Texture where+    tex1 == tex2 = resource tex1 == resource tex2++instance Ord Texture where+    tex1 `compare` tex2 = ordIndex tex1 `compare` ordIndex tex2++-- | Specification on what the texture should be like.+--+-- Use `textureSpecification` and set at least `topology` and `imageFormat`.+-- Future minor versions remain compatible if you use `textureSpecification`+-- instead of the constructor directly.+data TextureSpecification = TextureSpecification+    { topology     :: Topology+    , imageFormat  :: ImageFormat+    , mipmapLevels :: Int -- ^ How many mipmap levels including the base+                          --  level? Must be at least 1.+                          --+                          --  Ignored and not evaluated for multisampling+                          --  textures.+    }+    deriving ( Eq, Typeable )++-- | Specifies a topology of a texture.+data Topology =+    Tex1D { width1D  :: !Int }+  | Tex2D { width2D  :: !Int+          , height2D :: !Int }+  | Tex3D { width3D  :: !Int+          , height3D :: !Int+          , depth3D  :: !Int }+  | Tex1DArray+          { width1DArray :: !Int+          , layers1D :: !Int }+  | Tex2DArray+          { width2DArray :: !Int+          , height2DArray :: !Int+          , layers2D :: !Int }+  | Tex2DMultisample+          { width2DMS :: !Int+          , height2DMS :: !Int+          , samples2DMS :: !Int+          , fixedSampleLocations2DMS :: !Bool }+  | Tex2DMultisampleArray+          { width2DMSArray :: !Int+          , height2DMSArray :: !Int+          , layers2DMS :: !Int+          , samples2DMSArray :: !Int+          , fixedSampleLocations2DMSArray :: !Bool }+  | TexCube { widthCube  :: Int }+  | TexBuffer { texBuffer :: !Buf.Buffer }+    -- ^ Buffer textures, see+    -- <https://www.opengl.org/wiki/Buffer_Texture>+  deriving ( Eq, Typeable )++withBinding :: GLenum -> GLenum -> GLuint -> IO a -> IO a+withBinding tex tex_binding tex_name action = do+    old <- gi tex_binding+    finally+        (glBindTexture tex tex_name *>+         action)+        (glBindTexture tex old)++getTopologyBindPoints :: Topology -> (GLenum, GLenum)+getTopologyBindPoints = \case+    Tex1D {..} -> (gl_TEXTURE_1D, gl_TEXTURE_BINDING_1D)+    Tex2D {..} -> (gl_TEXTURE_2D, gl_TEXTURE_BINDING_2D)+    Tex3D {..} -> (gl_TEXTURE_3D, gl_TEXTURE_BINDING_3D)+    Tex1DArray {..} -> (gl_TEXTURE_1D_ARRAY, gl_TEXTURE_BINDING_1D_ARRAY)+    Tex2DArray {..} -> (gl_TEXTURE_2D_ARRAY, gl_TEXTURE_BINDING_2D_ARRAY)+    Tex2DMultisample {..} ->+        (gl_TEXTURE_2D_MULTISAMPLE+        ,gl_TEXTURE_BINDING_2D_MULTISAMPLE)+    Tex2DMultisampleArray {..} ->+        (gl_TEXTURE_2D_MULTISAMPLE_ARRAY+        ,gl_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY)+    TexCube {..} ->+        (gl_TEXTURE_CUBE_MAP+        ,gl_TEXTURE_BINDING_CUBE_MAP)+    TexBuffer {} ->+        (gl_TEXTURE_BUFFER+        ,gl_TEXTURE_BINDING_BUFFER)++withBindingByTopology :: Texture -> (GLenum -> IO a) -> IO a+withBindingByTopology tex action =+    withResource (resource tex) $ \(Texture_ name) ->+        let (bind_target, bind_query) = getTopologyBindPoints topo+         in withBinding bind_target bind_query name $ action bind_target+  where+    topo = topology $ viewSpecification tex++withTextureBinding :: Texture -> TextureUnit -> IO a -> IO a+withTextureBinding tex unit action = do+    old_active <- gi gl_ACTIVE_TEXTURE+    glActiveTexture (gl_TEXTURE0 + fromIntegral unit)+    finally (withBindingByTopology tex $ const action) $+        glActiveTexture old_active+
+ src/Caramia/VAO.hs view
@@ -0,0 +1,283 @@+-- | Vertex array objects, or VAOs as we abbreviate them.+--+-- These are used to specify how data in a `Caramia.Buffer.Buffer` is made+-- available in a shader program.+--+-- <https://www.opengl.org/wiki/Vertex_Array_Object>+--++module Caramia.VAO+    ( -- * Creation+      newVAO+    , VAO()+      -- * Sourcing+    , sourceVertexData+    , Sourcing(..)+    , defaultSourcing+    , defaultSourcingType+      -- * Sourceable types+    , SourceableType(..)+    , SourceType(..)+    , sourceTypeSize )+    where++import Caramia.Prelude++import Caramia.VAO.Internal+import Caramia.Resource+import qualified Caramia.Buffer.Internal as Buf+import Caramia.Internal.OpenGLCApi+import Control.Exception++-- | Creates a vertex array object.+--+-- Initially, the vertex array object makes no data available to a shader+-- program.+newVAO :: IO VAO+newVAO = mask_ $ do+    res <- newResource create+                       (\(VAO_ vao) -> mglDeleteVertexArray vao)+                       (return ())+    ref <- newIORef []+    return VAO { resource = res+               , boundBuffers = ref }+  where+    create = VAO_ <$> mglGenVertexArray++-- | Types allowed for sourcing.+--+-- These are mostly Haskell types except for `SHalfFloat` which has no Haskell+-- equivalent.+data SourceType =+     SWord8+   | SWord16+   | SWord32+   | SInt8+   | SInt16+   | SInt32+   | SHalfFloat   -- ^ 16-bit floating point value.+   | SFloat+   | SDouble+   deriving ( Eq, Ord, Show, Read )++-- | This returns the size of a `SourceType`, in bytes.+sourceTypeSize :: SourceType -> Int+sourceTypeSize SWord8 = 1+sourceTypeSize SWord16 = 2+sourceTypeSize SWord32 = 4+sourceTypeSize SInt8 = 1+sourceTypeSize SInt16 = 2+sourceTypeSize SInt32 = 4+sourceTypeSize SHalfFloat = 2+sourceTypeSize SFloat = 4+sourceTypeSize SDouble = 8++isIntegerType :: SourceType -> Bool+isIntegerType SWord8 = True+isIntegerType SWord16 = True+isIntegerType SWord32 = True+isIntegerType SInt8 = True+isIntegerType SInt16 = True+isIntegerType SInt32 = True+isIntegerType SHalfFloat = False+isIntegerType SFloat = False+isIntegerType SDouble = False++toConstant :: SourceType -> GLenum+toConstant SWord8 = gl_UNSIGNED_BYTE+toConstant SWord16 = gl_UNSIGNED_SHORT+toConstant SWord32 = gl_UNSIGNED_INT+toConstant SInt8 = gl_BYTE+toConstant SInt16 = gl_SHORT+toConstant SInt32 = gl_INT+toConstant SHalfFloat = gl_HALF_FLOAT+toConstant SFloat = gl_FLOAT+toConstant SDouble = gl_DOUBLE++-- | Class of types that are valid for sourcing data.+--+-- This is a convenience class to turn Haskell types to `SourceType`.+class SourceableType a where+    -- ^ Reify the type to a compatible `SourceType`.+    reifyType :: a -> SourceType++instance SourceableType Word8 where+    reifyType _ = SWord8++instance SourceableType Word16 where+    reifyType _ = SWord16++instance SourceableType Word32 where+    reifyType _ = SWord32++instance SourceableType Int8 where+    reifyType _ = SInt8++instance SourceableType Int16 where+    reifyType _ = SInt16++instance SourceableType Int32 where+    reifyType _ = SInt32++instance SourceableType Float where+    reifyType _ = SFloat++instance SourceableType Double where+    reifyType _ = SDouble++-- | Specifies how to source data.+--+-- For forward compatibility, you might want to use `defaultSourcing` or+-- `defaultSourcingType` and then set the fields that are of interest to you.+data Sourcing = Sourcing+    { offset :: Int+    -- ^ Offset, in bytes, at which point from buffer to start sourcing.+    , attributeIndex :: Int+    -- ^ Which attribute index in a shader program to source this data. See+    -- `Caramia.Shader` on attributes.+    , components :: Int+    -- ^ Number of components in one piece of data (that is, per vertex).+    -- This must be an integer between 1 and 4.+    , stride :: Int+    -- ^ How many bytes there are between pieces of data. Because of OpenGL+    -- inconsistencies behind the scenes, 0 means the data is tightly packed,+    -- that is, @ stride = components * sizeOf sourceType @+    , normalize :: Bool+    -- ^ This only applies when an integer type is used in `sourceType` and+    -- `integerMapping` is false.  It determines whether integer values should+    -- be normalized.+    --+    -- Normalization maps the integer value to [-1..1] or [0..1] range. For+    -- example, if you use `Word16` as the type parameter, then 0 is mapped to+    -- 0.0 and 65535 is mapped to 1.0. Signed types (for example, `Int16`) are+    -- mapped to [-1..1] instead so for `Int16` 32767 is mapped to 1 and -32768+    -- is mapped to -1.+    --+    -- This value is ignored and unevaluated for types that are one of the+    -- floating point types.+    , integerMapping :: Bool+    -- ^ Don't convert integers to floats in any way. Normally integers are+    -- converted to floating point. If this is set, then `normalize` is ignored+    -- and not evalutated.+    , instancingDivisor :: Int+    -- ^ When doing instanced rendering (`Caramia.Render.numInstances` > 1),+    -- this value tells how many instances must be rendered before the+    -- attribute from this source advances.+    --+    -- If zero (the default) then the attribute is advanced after every vertex.+    --+    -- You can look up @ glVertexAttribDivisor @ from OpenGL to find more+    -- information about this.+    , sourceType :: SourceType+    -- ^ The data type of values in the buffer. It tells the type of a single+    -- component.+    }++-- | The default sourcing.+--+-- Offset and stride are set to 0.+--+-- At the very least you must set `components` and `attributeIndex`.+--+-- You must also set `normalize`, `integerMapping` and `sourceType` in a+-- consistent way. See `Sourcing`.+defaultSourcing :: Sourcing+defaultSourcing = Sourcing+    { offset = 0+    , components =+        error "defaultSourcing: number of components is not set."+    , stride = 0+    , instancingDivisor = 0+    , attributeIndex =+        error "defaultSourcing: attribute index is not set."+    , integerMapping =+        error "defaultSourcing: whether to do integer mapping is not set."+    , normalize =+        error "defaultSourcing: normalize is not set for an integer type."+    , sourceType =+        error "defaultSourcing: source type is not set." }++-- | Same as `defaultSourcing` but sets `sourceType` according to a Haskell+-- type.+defaultSourcingType :: SourceableType a+                    => a   -- ^ Used to pass the type; not evaluated.+                    -> Sourcing+defaultSourcingType x =+    defaultSourcing { sourceType = reifyType x }++-- | Specifies that some data from a buffer should be sourced for each vertex.+--+-- The vertex array object retains a reference to the buffer which means it+-- will not be garbage collected as long as the VAO remains active.+--+-- Consequences are undefined if your `Sourcing` does not make sense. There is+-- some error checking but it can only detect obviously invalid values in the+-- sourcing.+sourceVertexData :: Buf.Buffer   -- ^ From which buffer to source the data.+                 -> Sourcing     -- ^ Specifies how the sourcing is done.+                 -> VAO+                 -> IO ()+sourceVertexData buffer sourcing vao = mask_ $+    withResource (resource vao) $ \(VAO_ name) ->+        withResource (Buf.resource buffer) $ \(Buf.Buffer_ bufname) -> do+            errorChecking++            if isIntegerType stype && integerMapping sourcing+              then doIntegerMapping name bufname+              else doOrdinaryMapping name bufname++            mglVertexArrayVertexAttribDivisor+                name+                (safeFromIntegral $ attributeIndex sourcing)+                (safeFromIntegral $ instancingDivisor sourcing)++            atomicModifyIORef' (boundBuffers vao) $ \old ->+                ( addIfNotUnique buffer old, () )+  where+    addIfNotUnique new old =+        maybe (new:old)+              (const old)+              (find (new ==) old)++    stype = sourceType sourcing+    ncomponents = components sourcing++    doIntegerMapping name bufname =+        mglVertexArrayVertexAttribIOffsetAndEnable+            name+            bufname+            (safeFromIntegral $ attributeIndex sourcing)+            (safeFromIntegral ncomponents)+            (toConstant stype)+            (safeFromIntegral $ stride sourcing)+            (safeFromIntegral $ offset sourcing)++    doOrdinaryMapping name bufname =+        mglVertexArrayVertexAttribOffsetAndEnable+            name+            bufname+            (safeFromIntegral $ attributeIndex sourcing)+            (safeFromIntegral ncomponents)+            (toConstant stype)+            (fromIntegral $ if isIntegerType stype && normalize sourcing+                              then gl_TRUE+                              else gl_FALSE)+            (safeFromIntegral $ stride sourcing)+            (safeFromIntegral $ offset sourcing)++    errorChecking = do+        when (isIntegerType stype) $+            unless (integerMapping sourcing) $+                let x = normalize sourcing+                 in x `seq` return ()++        attributeIndex sourcing `seq` return ()+        when (stride sourcing < 0) $+            error "sourceVertexData: stride is negative."+        when (offset sourcing < 0) $+            error "sourceVertexData: offset is negative."+        when (ncomponents < 1 ||+              ncomponents > 4) $ error $+            "sourceVertexData: number of components must be between " <>+            "1 and 4. I was given " <> show ncomponents+
+ src/Caramia/VAO/Internal.hs view
@@ -0,0 +1,24 @@+{-# LANGUAGE NoImplicitPrelude, ViewPatterns, DeriveDataTypeable #-}++module Caramia.VAO.Internal+    ( VAO(..)+    , VAO_(..) )+    where++import Caramia.Prelude++import Caramia.Resource+import Caramia.Internal.OpenGLCApi+import qualified Caramia.Buffer.Internal as Buf++-- | The vertex array object data type.+data VAO = VAO+    { resource :: !(Resource VAO_)+    , boundBuffers :: !(IORef [Buf.Buffer]) }+    deriving ( Typeable )++instance Eq VAO where+    (resource -> res1) == (resource -> res2) = res1 == res2++newtype VAO_ = VAO_ GLuint+