{-# LANGUAGE ForeignFunctionInterface, CPP #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Graphics.Rendering.OpenGL.Raw.EXT.VertexShader
-- Copyright   :  (c) Sven Panne 2009
-- License     :  BSD-style (see the file LICENSE)
--
-- Maintainer  :  sven.panne@aedion.de
-- Stability   :  stable
-- Portability :  portable
--
-- All raw functions and tokens from the EXT_vertex_shader extension, see
-- <http://www.opengl.org/registry/specs/EXT/vertex_shader.txt>.
--
--------------------------------------------------------------------------------

module Graphics.Rendering.OpenGL.Raw.EXT.VertexShader (
   -- * Functions
   glBeginVertexShader,
   glEndVertexShader,
   glBindVertexShader,
   glGenVertexShaders,
   glDeleteVertexShader,
   glShaderOp1,
   glShaderOp2,
   glShaderOp3,
   glSwizzle,
   glWriteMask,
   glInsertComponent,
   glExtractComponent,
   glGenSymbols,
   glSetInvariant,
   glSetLocalConstant,
   glVariantbv,
   glVariantsv,
   glVariantiv,
   glVariantfv,
   glVariantdv,
   glVariantubv,
   glVariantusv,
   glVariantuiv,
   glVariantPointer,
   glEnableVariantClientState,
   glDisableVariantClientState,
   glBindLightParameter,
   glBindMaterialParameter,
   glBindTexGenParameter,
   glBindTextureUnitParameter,
   glBindParameter,
   glIsVariantEnabled,
   glGetVariantBooleanv,
   glGetVariantIntegerv,
   glGetVariantFloatv,
   glGetVariantPointerv,
   glGetInvariantBooleanv,
   glGetInvariantIntegerv,
   glGetInvariantFloatv,
   glGetLocalConstantBooleanv,
   glGetLocalConstantIntegerv,
   glGetLocalConstantFloatv,
   -- * Tokens
   gl_VERTEX_SHADER,
   gl_VARIANT_VALUE,
   gl_VARIANT_DATATYPE,
   gl_VARIANT_ARRAY_STRIDE,
   gl_VARIANT_ARRAY_TYPE,
   gl_VARIANT_ARRAY,
   gl_VARIANT_ARRAY_POINTER,
   gl_INVARIANT_VALUE,
   gl_INVARIANT_DATATYPE,
   gl_LOCAL_CONSTANT_VALUE,
   gl_LOCAL_CONSTANT_DATATYPE,
   gl_OP_INDEX,
   gl_OP_NEGATE,
   gl_OP_DOT3,
   gl_OP_DOT4,
   gl_OP_MUL,
   gl_OP_ADD,
   gl_OP_MADD,
   gl_OP_FRAC,
   gl_OP_MAX,
   gl_OP_MIN,
   gl_OP_SET_GE,
   gl_OP_SET_LT,
   gl_OP_CLAMP,
   gl_OP_FLOOR,
   gl_OP_ROUND,
   gl_OP_EXP_BASE_2,
   gl_OP_LOG_BASE_2,
   gl_OP_POWER,
   gl_OP_RECIP,
   gl_OP_RECIP_SQRT,
   gl_OP_SUB,
   gl_OP_CROSS_PRODUCT,
   gl_OP_MULTIPLY_MATRIX,
   gl_OP_MOV,
   gl_OUTPUT_VERTEX,
   gl_OUTPUT_COLOR0,
   gl_OUTPUT_COLOR1,
   gl_OUTPUT_TEXTURE_COORD0,
   gl_OUTPUT_TEXTURE_COORD1,
   gl_OUTPUT_TEXTURE_COORD2,
   gl_OUTPUT_TEXTURE_COORD3,
   gl_OUTPUT_TEXTURE_COORD4,
   gl_OUTPUT_TEXTURE_COORD5,
   gl_OUTPUT_TEXTURE_COORD6,
   gl_OUTPUT_TEXTURE_COORD7,
   gl_OUTPUT_TEXTURE_COORD8,
   gl_OUTPUT_TEXTURE_COORD9,
   gl_OUTPUT_TEXTURE_COORD10,
   gl_OUTPUT_TEXTURE_COORD11,
   gl_OUTPUT_TEXTURE_COORD12,
   gl_OUTPUT_TEXTURE_COORD13,
   gl_OUTPUT_TEXTURE_COORD14,
   gl_OUTPUT_TEXTURE_COORD15,
   gl_OUTPUT_TEXTURE_COORD16,
   gl_OUTPUT_TEXTURE_COORD17,
   gl_OUTPUT_TEXTURE_COORD18,
   gl_OUTPUT_TEXTURE_COORD19,
   gl_OUTPUT_TEXTURE_COORD20,
   gl_OUTPUT_TEXTURE_COORD21,
   gl_OUTPUT_TEXTURE_COORD22,
   gl_OUTPUT_TEXTURE_COORD23,
   gl_OUTPUT_TEXTURE_COORD24,
   gl_OUTPUT_TEXTURE_COORD25,
   gl_OUTPUT_TEXTURE_COORD26,
   gl_OUTPUT_TEXTURE_COORD27,
   gl_OUTPUT_TEXTURE_COORD28,
   gl_OUTPUT_TEXTURE_COORD29,
   gl_OUTPUT_TEXTURE_COORD30,
   gl_OUTPUT_TEXTURE_COORD31,
   gl_OUTPUT_FOG,
   gl_SCALAR,
   gl_VECTOR,
   gl_MATRIX,
   gl_VARIANT,
   gl_INVARIANT,
   gl_LOCAL_CONSTANT,
   gl_LOCAL,
   gl_MAX_VERTEX_SHADER_INSTRUCTIONS,
   gl_MAX_VERTEX_SHADER_VARIANTS,
   gl_MAX_VERTEX_SHADER_INVARIANTS,
   gl_MAX_VERTEX_SHADER_LOCAL_CONSTANTS,
   gl_MAX_VERTEX_SHADER_LOCALS,
   gl_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS,
   gl_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS,
   gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS,
   gl_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS,
   gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS,
   gl_VERTEX_SHADER_INSTRUCTIONS,
   gl_VERTEX_SHADER_VARIANTS,
   gl_VERTEX_SHADER_INVARIANTS,
   gl_VERTEX_SHADER_LOCAL_CONSTANTS,
   gl_VERTEX_SHADER_LOCALS,
   gl_VERTEX_SHADER_BINDING,
   gl_VERTEX_SHADER_OPTIMIZED,
   gl_X,
   gl_Y,
   gl_Z,
   gl_W,
   gl_NEGATIVE_X,
   gl_NEGATIVE_Y,
   gl_NEGATIVE_Z,
   gl_NEGATIVE_W,
   gl_ZERO,
   gl_ONE,
   gl_NEGATIVE_ONE,
   gl_NORMALIZED_RANGE,
   gl_FULL_RANGE,
   gl_CURRENT_VERTEX,
   gl_MVP_MATRIX
) where

import Foreign.Ptr
import Foreign.C.Types
import Graphics.Rendering.OpenGL.Raw.Core31.TypesInternal
import Graphics.Rendering.OpenGL.Raw.Core32
import Graphics.Rendering.OpenGL.Raw.Extensions

#include "HsOpenGLRaw.h"

extensionNameString :: String
extensionNameString = "GL_EXT_vertex_shader"

EXTENSION_ENTRY(glBeginVertexShader,IO ())
EXTENSION_ENTRY(glEndVertexShader,IO ())
EXTENSION_ENTRY(glBindVertexShader,GLuint -> IO ())
EXTENSION_ENTRY(glGenVertexShaders,GLuint -> IO GLuint)
EXTENSION_ENTRY(glDeleteVertexShader,GLuint -> IO ())
EXTENSION_ENTRY(glShaderOp1,GLenum -> GLuint -> GLuint -> IO ())
EXTENSION_ENTRY(glShaderOp2,GLenum -> GLuint -> GLuint -> GLuint -> IO ())
EXTENSION_ENTRY(glShaderOp3,GLenum -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
EXTENSION_ENTRY(glSwizzle,GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
EXTENSION_ENTRY(glWriteMask,GLuint -> GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
EXTENSION_ENTRY(glInsertComponent,GLuint -> GLuint -> GLuint -> IO ())
EXTENSION_ENTRY(glExtractComponent,GLuint -> GLuint -> GLuint -> IO ())
EXTENSION_ENTRY(glGenSymbols,GLenum -> GLenum -> GLenum -> GLuint -> IO GLuint)
EXTENSION_ENTRY(glSetInvariant,GLuint -> GLenum -> Ptr () -> IO ())
EXTENSION_ENTRY(glSetLocalConstant,GLuint -> GLenum -> Ptr () -> IO ())
EXTENSION_ENTRY(glVariantbv,GLuint -> Ptr GLbyte -> IO ())
EXTENSION_ENTRY(glVariantsv,GLuint -> Ptr GLshort -> IO ())
EXTENSION_ENTRY(glVariantiv,GLuint -> Ptr GLint -> IO ())
EXTENSION_ENTRY(glVariantfv,GLuint -> Ptr GLfloat -> IO ())
EXTENSION_ENTRY(glVariantdv,GLuint -> Ptr GLdouble -> IO ())
EXTENSION_ENTRY(glVariantubv,GLuint -> Ptr GLubyte -> IO ())
EXTENSION_ENTRY(glVariantusv,GLuint -> Ptr GLushort -> IO ())
EXTENSION_ENTRY(glVariantuiv,GLuint -> Ptr GLuint -> IO ())
EXTENSION_ENTRY(glVariantPointer,GLuint -> GLenum -> GLuint -> Ptr () -> IO ())
EXTENSION_ENTRY(glEnableVariantClientState,GLuint-> IO ())
EXTENSION_ENTRY(glDisableVariantClientState,GLuint-> IO ())
EXTENSION_ENTRY(glBindLightParameter,GLenum -> GLenum-> IO GLuint)
EXTENSION_ENTRY(glBindMaterialParameter,GLenum -> GLenum-> IO GLuint)
EXTENSION_ENTRY(glBindTexGenParameter,GLenum -> GLenum -> GLenum-> IO GLuint)
EXTENSION_ENTRY(glBindTextureUnitParameter,GLenum -> GLenum-> IO GLuint)
EXTENSION_ENTRY(glBindParameter,GLenum -> IO GLuint)
EXTENSION_ENTRY(glIsVariantEnabled,GLuint -> GLenum -> IO GLboolean)
EXTENSION_ENTRY(glGetVariantBooleanv,GLuint -> GLenum -> Ptr GLboolean -> IO ())
EXTENSION_ENTRY(glGetVariantIntegerv,GLuint -> GLenum -> Ptr GLint -> IO ())
EXTENSION_ENTRY(glGetVariantFloatv,GLuint -> GLenum -> Ptr GLfloat -> IO ())
EXTENSION_ENTRY(glGetVariantPointerv,GLuint -> GLenum -> Ptr (Ptr a) -> IO ())
EXTENSION_ENTRY(glGetInvariantBooleanv,GLuint -> GLenum -> Ptr GLboolean -> IO ())
EXTENSION_ENTRY(glGetInvariantIntegerv,GLuint -> GLenum -> Ptr GLint -> IO ())
EXTENSION_ENTRY(glGetInvariantFloatv,GLuint -> GLenum -> Ptr GLfloat -> IO ())
EXTENSION_ENTRY(glGetLocalConstantBooleanv,GLuint -> GLenum -> Ptr GLboolean -> IO ())
EXTENSION_ENTRY(glGetLocalConstantIntegerv,GLuint -> GLenum -> Ptr GLint -> IO ())
EXTENSION_ENTRY(glGetLocalConstantFloatv,GLuint -> GLenum -> Ptr GLfloat -> IO ())

gl_VARIANT_VALUE :: GLenum
gl_VARIANT_VALUE = 0x87E4

gl_VARIANT_DATATYPE :: GLenum
gl_VARIANT_DATATYPE = 0x87E5

gl_VARIANT_ARRAY_STRIDE :: GLenum
gl_VARIANT_ARRAY_STRIDE = 0x87E6

gl_VARIANT_ARRAY_TYPE :: GLenum
gl_VARIANT_ARRAY_TYPE = 0x87E7

gl_VARIANT_ARRAY :: GLenum
gl_VARIANT_ARRAY = 0x87E8

gl_VARIANT_ARRAY_POINTER :: GLenum
gl_VARIANT_ARRAY_POINTER = 0x87E9

gl_INVARIANT_VALUE :: GLenum
gl_INVARIANT_VALUE = 0x87EA

gl_INVARIANT_DATATYPE :: GLenum
gl_INVARIANT_DATATYPE = 0x87EB

gl_LOCAL_CONSTANT_VALUE :: GLenum
gl_LOCAL_CONSTANT_VALUE = 0x87EC

gl_LOCAL_CONSTANT_DATATYPE :: GLenum
gl_LOCAL_CONSTANT_DATATYPE = 0x87ED

gl_OP_INDEX :: GLenum
gl_OP_INDEX = 0x8782

gl_OP_NEGATE :: GLenum
gl_OP_NEGATE = 0x8783

gl_OP_DOT3 :: GLenum
gl_OP_DOT3 = 0x8784

gl_OP_DOT4 :: GLenum
gl_OP_DOT4 = 0x8785

gl_OP_MUL :: GLenum
gl_OP_MUL = 0x8786

gl_OP_ADD :: GLenum
gl_OP_ADD = 0x8787

gl_OP_MADD :: GLenum
gl_OP_MADD = 0x8788

gl_OP_FRAC :: GLenum
gl_OP_FRAC = 0x8789

gl_OP_MAX :: GLenum
gl_OP_MAX = 0x878A

gl_OP_MIN :: GLenum
gl_OP_MIN = 0x878B

gl_OP_SET_GE :: GLenum
gl_OP_SET_GE = 0x878C

gl_OP_SET_LT :: GLenum
gl_OP_SET_LT = 0x878D

gl_OP_CLAMP :: GLenum
gl_OP_CLAMP = 0x878E

gl_OP_FLOOR :: GLenum
gl_OP_FLOOR = 0x878F

gl_OP_ROUND :: GLenum
gl_OP_ROUND = 0x8790

gl_OP_EXP_BASE_2 :: GLenum
gl_OP_EXP_BASE_2 = 0x8791

gl_OP_LOG_BASE_2 :: GLenum
gl_OP_LOG_BASE_2 = 0x8792

gl_OP_POWER :: GLenum
gl_OP_POWER = 0x8793

gl_OP_RECIP :: GLenum
gl_OP_RECIP = 0x8794

gl_OP_RECIP_SQRT :: GLenum
gl_OP_RECIP_SQRT = 0x8795

gl_OP_SUB :: GLenum
gl_OP_SUB = 0x8796

gl_OP_CROSS_PRODUCT :: GLenum
gl_OP_CROSS_PRODUCT = 0x8797

gl_OP_MULTIPLY_MATRIX :: GLenum
gl_OP_MULTIPLY_MATRIX = 0x8798

gl_OP_MOV :: GLenum
gl_OP_MOV = 0x8799

gl_OUTPUT_VERTEX :: GLenum
gl_OUTPUT_VERTEX = 0x879A

gl_OUTPUT_COLOR0 :: GLenum
gl_OUTPUT_COLOR0 = 0x879B

gl_OUTPUT_COLOR1 :: GLenum
gl_OUTPUT_COLOR1 = 0x879C

gl_OUTPUT_TEXTURE_COORD0 :: GLenum
gl_OUTPUT_TEXTURE_COORD0 = 0x879D

gl_OUTPUT_TEXTURE_COORD1 :: GLenum
gl_OUTPUT_TEXTURE_COORD1 = 0x879E

gl_OUTPUT_TEXTURE_COORD2 :: GLenum
gl_OUTPUT_TEXTURE_COORD2 = 0x879F

gl_OUTPUT_TEXTURE_COORD3 :: GLenum
gl_OUTPUT_TEXTURE_COORD3 = 0x87A0

gl_OUTPUT_TEXTURE_COORD4 :: GLenum
gl_OUTPUT_TEXTURE_COORD4 = 0x87A1

gl_OUTPUT_TEXTURE_COORD5 :: GLenum
gl_OUTPUT_TEXTURE_COORD5 = 0x87A2

gl_OUTPUT_TEXTURE_COORD6 :: GLenum
gl_OUTPUT_TEXTURE_COORD6 = 0x87A3

gl_OUTPUT_TEXTURE_COORD7 :: GLenum
gl_OUTPUT_TEXTURE_COORD7 = 0x87A4

gl_OUTPUT_TEXTURE_COORD8 :: GLenum
gl_OUTPUT_TEXTURE_COORD8 = 0x87A5

gl_OUTPUT_TEXTURE_COORD9 :: GLenum
gl_OUTPUT_TEXTURE_COORD9 = 0x87A6

gl_OUTPUT_TEXTURE_COORD10 :: GLenum
gl_OUTPUT_TEXTURE_COORD10 = 0x87A7

gl_OUTPUT_TEXTURE_COORD11 :: GLenum
gl_OUTPUT_TEXTURE_COORD11 = 0x87A8

gl_OUTPUT_TEXTURE_COORD12 :: GLenum
gl_OUTPUT_TEXTURE_COORD12 = 0x87A9

gl_OUTPUT_TEXTURE_COORD13 :: GLenum
gl_OUTPUT_TEXTURE_COORD13 = 0x87AA

gl_OUTPUT_TEXTURE_COORD14 :: GLenum
gl_OUTPUT_TEXTURE_COORD14 = 0x87AB

gl_OUTPUT_TEXTURE_COORD15 :: GLenum
gl_OUTPUT_TEXTURE_COORD15 = 0x87AC

gl_OUTPUT_TEXTURE_COORD16 :: GLenum
gl_OUTPUT_TEXTURE_COORD16 = 0x87AD

gl_OUTPUT_TEXTURE_COORD17 :: GLenum
gl_OUTPUT_TEXTURE_COORD17 = 0x87AE

gl_OUTPUT_TEXTURE_COORD18 :: GLenum
gl_OUTPUT_TEXTURE_COORD18 = 0x87AF

gl_OUTPUT_TEXTURE_COORD19 :: GLenum
gl_OUTPUT_TEXTURE_COORD19 = 0x87B0

gl_OUTPUT_TEXTURE_COORD20 :: GLenum
gl_OUTPUT_TEXTURE_COORD20 = 0x87B1

gl_OUTPUT_TEXTURE_COORD21 :: GLenum
gl_OUTPUT_TEXTURE_COORD21 = 0x87B2

gl_OUTPUT_TEXTURE_COORD22 :: GLenum
gl_OUTPUT_TEXTURE_COORD22 = 0x87B3

gl_OUTPUT_TEXTURE_COORD23 :: GLenum
gl_OUTPUT_TEXTURE_COORD23 = 0x87B4

gl_OUTPUT_TEXTURE_COORD24 :: GLenum
gl_OUTPUT_TEXTURE_COORD24 = 0x87B5

gl_OUTPUT_TEXTURE_COORD25 :: GLenum
gl_OUTPUT_TEXTURE_COORD25 = 0x87B6

gl_OUTPUT_TEXTURE_COORD26 :: GLenum
gl_OUTPUT_TEXTURE_COORD26 = 0x87B7

gl_OUTPUT_TEXTURE_COORD27 :: GLenum
gl_OUTPUT_TEXTURE_COORD27 = 0x87B8

gl_OUTPUT_TEXTURE_COORD28 :: GLenum
gl_OUTPUT_TEXTURE_COORD28 = 0x87B9

gl_OUTPUT_TEXTURE_COORD29 :: GLenum
gl_OUTPUT_TEXTURE_COORD29 = 0x87BA

gl_OUTPUT_TEXTURE_COORD30 :: GLenum
gl_OUTPUT_TEXTURE_COORD30 = 0x87BB

gl_OUTPUT_TEXTURE_COORD31 :: GLenum
gl_OUTPUT_TEXTURE_COORD31 = 0x87BC

gl_OUTPUT_FOG :: GLenum
gl_OUTPUT_FOG = 0x87BD

gl_SCALAR :: GLenum
gl_SCALAR = 0x87BE

gl_VECTOR :: GLenum
gl_VECTOR = 0x87BF

gl_MATRIX :: GLenum
gl_MATRIX = 0x87C0

gl_VARIANT :: GLenum
gl_VARIANT = 0x87C1

gl_INVARIANT :: GLenum
gl_INVARIANT = 0x87C2

gl_LOCAL_CONSTANT :: GLenum
gl_LOCAL_CONSTANT = 0x87C3

gl_LOCAL :: GLenum
gl_LOCAL = 0x87C4

gl_MAX_VERTEX_SHADER_INSTRUCTIONS :: GLenum
gl_MAX_VERTEX_SHADER_INSTRUCTIONS = 0x87C5

gl_MAX_VERTEX_SHADER_VARIANTS :: GLenum
gl_MAX_VERTEX_SHADER_VARIANTS = 0x87C6

gl_MAX_VERTEX_SHADER_INVARIANTS :: GLenum
gl_MAX_VERTEX_SHADER_INVARIANTS = 0x87C7

gl_MAX_VERTEX_SHADER_LOCAL_CONSTANTS :: GLenum
gl_MAX_VERTEX_SHADER_LOCAL_CONSTANTS = 0x87C8

gl_MAX_VERTEX_SHADER_LOCALS :: GLenum
gl_MAX_VERTEX_SHADER_LOCALS = 0x87C9

gl_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS :: GLenum
gl_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS = 0x87CA

gl_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS :: GLenum
gl_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS = 0x87CB

gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS :: GLenum
gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS = 0x87CC

gl_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS :: GLenum
gl_MAX_OPTIMIZED_VERTEX_SHADER_INARIANTS = 0x87CD

gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS :: GLenum
gl_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS = 0x87CE

gl_VERTEX_SHADER_INSTRUCTIONS :: GLenum
gl_VERTEX_SHADER_INSTRUCTIONS = 0x87CF

gl_VERTEX_SHADER_VARIANTS :: GLenum
gl_VERTEX_SHADER_VARIANTS = 0x87D0

gl_VERTEX_SHADER_INVARIANTS :: GLenum
gl_VERTEX_SHADER_INVARIANTS = 0x87D1

gl_VERTEX_SHADER_LOCAL_CONSTANTS :: GLenum
gl_VERTEX_SHADER_LOCAL_CONSTANTS = 0x87D2

gl_VERTEX_SHADER_LOCALS :: GLenum
gl_VERTEX_SHADER_LOCALS = 0x87D3

gl_VERTEX_SHADER_BINDING :: GLenum
gl_VERTEX_SHADER_BINDING = 0x8781

gl_VERTEX_SHADER_OPTIMIZED :: GLenum
gl_VERTEX_SHADER_OPTIMIZED = 0x87D4

gl_X :: GLenum
gl_X = 0x87D5

gl_Y :: GLenum
gl_Y = 0x87D6

gl_Z :: GLenum
gl_Z = 0x87D7

gl_W :: GLenum
gl_W = 0x87D8

gl_NEGATIVE_X :: GLenum
gl_NEGATIVE_X = 0x87D9

gl_NEGATIVE_Y :: GLenum
gl_NEGATIVE_Y = 0x87DA

gl_NEGATIVE_Z :: GLenum
gl_NEGATIVE_Z = 0x87DB

gl_NEGATIVE_W :: GLenum
gl_NEGATIVE_W = 0x87DC

gl_NEGATIVE_ONE :: GLenum
gl_NEGATIVE_ONE = 0x87DF

gl_NORMALIZED_RANGE :: GLenum
gl_NORMALIZED_RANGE = 0x87E0

gl_FULL_RANGE :: GLenum
gl_FULL_RANGE = 0x87E1

gl_CURRENT_VERTEX :: GLenum
gl_CURRENT_VERTEX = 0x87E2

gl_MVP_MATRIX :: GLenum
gl_MVP_MATRIX = 0x87E3