text: //-----------------------------------------------------------------------------
  // Copyright (c) 2013 GarageGames, LLC
  //
  // 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.
  //-----------------------------------------------------------------------------
  
  //
  //  iOSGL2ES.h
  //  TGE
  //
  //  Created by Puap Puap on 7/31/08.
  //  Copyright 2008 Pick Up And Play. All rights reserved.
  //
  
  #ifndef _GL2ES_H_
  #define _GL2ES_H_
  
  
  #include "platform/types.h"
  
  #include "OpenGLES/ES1/gl.h"
  #include "OpenGLES/ES1/glext.h"
  
  extern "C"
  {
  void iPhoneGLPushMatrix();
  void iPhoneGLPopMatrix();
  void iPhoneGLMatrixMode( GLenum mode );
  }
  
  // help out the shallow matrix stacks...
  #define glPushMatrix iPhoneGLPushMatrix
  #define glPopMatrix iPhoneGLPopMatrix
  #define glMatrixMode iPhoneGLMatrixMode
  
  class ColorI;
  
  // defines that need functional workarounds
  //
  //typedef unsigned int GLenum;
  //typedef unsigned char GLboolean;
  //typedef unsigned int GLbitfield;
  //typedef signed char GLbyte;
  //typedef short GLshort;
  //typedef int GLint;
  //typedef int GLsizei;
  //typedef unsigned char GLubyte;
  //typedef unsigned short GLushort;
  //typedef unsigned int GLuint;
  //typedef float GLfloat;
  //typedef float GLclampf;
  //typedef double GLdouble;
  //typedef double GLclampd;
  //typedef void GLvoid;
  //typedef int GLfixed;
  //typedef int GLclampx;
  //
  ///* AccumOp */
  //#define GL_ACCUM                          0x0100
  //#define GL_LOAD                           0x0101
  //#define GL_RETURN                         0x0102
  //#define GL_MULT                           0x0103
  //#define GL_ADD                            0x0104
  //
  ///* AlphaFunction */
  //#define GL_NEVER                          0x0200
  //#define GL_LESS                           0x0201
  //#define GL_EQUAL                          0x0202
  //#define GL_LEQUAL                         0x0203
  //#define GL_GREATER                        0x0204
  //#define GL_NOTEQUAL                       0x0205
  //#define GL_GEQUAL                         0x0206
  //#define GL_ALWAYS                         0x0207
  //
  ///* AttribMask */
  //#define GL_CURRENT_BIT                    0x00000001
  //#define GL_POINT_BIT                      0x00000002
  //#define GL_LINE_BIT                       0x00000004
  //#define GL_POLYGON_BIT                    0x00000008
  //#define GL_POLYGON_STIPPLE_BIT            0x00000010
  //#define GL_PIXEL_MODE_BIT                 0x00000020
  //#define GL_LIGHTING_BIT                   0x00000040
  //#define GL_FOG_BIT                        0x00000080
  //#define GL_DEPTH_BUFFER_BIT               0x00000100
  //#define GL_ACCUM_BUFFER_BIT               0x00000200
  //#define GL_STENCIL_BUFFER_BIT             0x00000400
  //#define GL_VIEWPORT_BIT                   0x00000800
  //#define GL_TRANSFORM_BIT                  0x00001000
  //#define GL_ENABLE_BIT                     0x00002000
  //#define GL_COLOR_BUFFER_BIT               0x00004000
  //#define GL_HINT_BIT                       0x00008000
  //#define GL_EVAL_BIT                       0x00010000
  //#define GL_LIST_BIT                       0x00020000
  //#define GL_TEXTURE_BIT                    0x00040000
  //#define GL_SCISSOR_BIT                    0x00080000
  //#define GL_ALL_ATTRIB_BITS                0x000fffff
  //
  ///* BeginMode */
  //#define GL_POINTS                         0x0000
  //#define GL_LINES                          0x0001
  //#define GL_LINE_LOOP                      0x0002
  //#define GL_LINE_STRIP                     0x0003
  //#define GL_TRIANGLES                      0x0004
  //#define GL_TRIANGLE_STRIP                 0x0005
  //#define GL_TRIANGLE_FAN                   0x0006
  #define GL_QUADS                          0x0007
  #define GL_QUAD_STRIP                     0x0008
  #define GL_POLYGON                        0x0009
  //
  ///* BlendingFactorDest */
  //#define GL_ZERO                           0
  //#define GL_ONE                            1
  //#define GL_SRC_COLOR                      0x0300
  //#define GL_ONE_MINUS_SRC_COLOR            0x0301
  //#define GL_SRC_ALPHA                      0x0302
  //#define GL_ONE_MINUS_SRC_ALPHA            0x0303
  //#define GL_DST_ALPHA                      0x0304
  //#define GL_ONE_MINUS_DST_ALPHA            0x0305
  //
  ///* BlendingFactorSrc */
  ///*      GL_ZERO */
  ///*      GL_ONE */
  //#define GL_DST_COLOR                      0x0306
  //#define GL_ONE_MINUS_DST_COLOR            0x0307
  //#define GL_SRC_ALPHA_SATURATE             0x0308
  ///*      GL_SRC_ALPHA */
  ///*      GL_ONE_MINUS_SRC_ALPHA */
  ///*      GL_DST_ALPHA */
  ///*      GL_ONE_MINUS_DST_ALPHA */
  //
  ///* Boolean */
  //#define GL_TRUE                           1
  //#define GL_FALSE                          0
  //
  ///* ClearBufferMask */
  ///*      GL_COLOR_BUFFER_BIT */
  ///*      GL_ACCUM_BUFFER_BIT */
  ///*      GL_STENCIL_BUFFER_BIT */
  ///*      GL_DEPTH_BUFFER_BIT */
  //
  ///* ClientArrayType */
  ///*      GL_VERTEX_ARRAY */
  ///*      GL_NORMAL_ARRAY */
  ///*      GL_COLOR_ARRAY */
  ///*      GL_INDEX_ARRAY */
  ///*      GL_TEXTURE_COORD_ARRAY */
  ///*      GL_EDGE_FLAG_ARRAY */
  //
  ///* ClipPlaneName */
  //#define GL_CLIP_PLANE0                    0x3000
  //#define GL_CLIP_PLANE1                    0x3001
  //#define GL_CLIP_PLANE2                    0x3002
  //#define GL_CLIP_PLANE3                    0x3003
  //#define GL_CLIP_PLANE4                    0x3004
  //#define GL_CLIP_PLANE5                    0x3005
  //
  ///* ColorMaterialFace */
  ///*      GL_FRONT */
  ///*      GL_BACK */
  ///*      GL_FRONT_AND_BACK */
  //
  ///* ColorMaterialParameter */
  ///*      GL_AMBIENT */
  ///*      GL_DIFFUSE */
  ///*      GL_SPECULAR */
  ///*      GL_EMISSION */
  ///*      GL_AMBIENT_AND_DIFFUSE */
  //
  ///* ColorPointerType */
  ///*      GL_BYTE */
  ///*      GL_UNSIGNED_BYTE */
  ///*      GL_SHORT */
  ///*      GL_UNSIGNED_SHORT */
  ///*      GL_INT */
  ///*      GL_UNSIGNED_INT */
  ///*      GL_FLOAT */
  ///*      GL_DOUBLE */
  //
  ///* CullFaceMode */
  ///*      GL_FRONT */
  ///*      GL_BACK */
  ///*      GL_FRONT_AND_BACK */
  //
  ///* DataType */
  //#define GL_BYTE                           0x1400
  //#define GL_UNSIGNED_BYTE                  0x1401
  //#define GL_SHORT                          0x1402
  //#define GL_UNSIGNED_SHORT                 0x1403
  //#define GL_INT                            0x1404
  #define GL_UNSIGNED_INT                   0x1405
  //#define GL_FLOAT                          0x1406
  //#define GL_2_BYTES                        0x1407
  //#define GL_3_BYTES                        0x1408
  //#define GL_4_BYTES                        0x1409
  //#define GL_DOUBLE                         0x140A
  //#define GL_FIXED                          0x140C
  //
  ///* DepthFunction */
  ///*      GL_NEVER */
  ///*      GL_LESS */
  ///*      GL_EQUAL */
  ///*      GL_LEQUAL */
  ///*      GL_GREATER */
  ///*      GL_NOTEQUAL */
  ///*      GL_GEQUAL */
  ///*      GL_ALWAYS */
  //
  ///* DrawBufferMode */
  //#define GL_NONE                           0
  //#define GL_FRONT_LEFT                     0x0400
  //#define GL_FRONT_RIGHT                    0x0401
  //#define GL_BACK_LEFT                      0x0402
  //#define GL_BACK_RIGHT                     0x0403
  //#define GL_FRONT                          0x0404
  //#define GL_BACK                           0x0405
  //#define GL_LEFT                           0x0406
  //#define GL_RIGHT                          0x0407
  //#define GL_FRONT_AND_BACK                 0x0408
  //#define GL_AUX0                           0x0409
  //#define GL_AUX1                           0x040A
  //#define GL_AUX2                           0x040B
  //#define GL_AUX3                           0x040C
  //
  ///* Enable */
  ///*      GL_FOG */
  ///*      GL_LIGHTING */
  ///*      GL_TEXTURE_1D */
  ///*      GL_TEXTURE_2D */
  ///*      GL_LINE_STIPPLE */
  ///*      GL_POLYGON_STIPPLE */
  ///*      GL_CULL_FACE */
  ///*      GL_ALPHA_TEST */
  ///*      GL_BLEND */
  ///*      GL_INDEX_LOGIC_OP */
  ///*      GL_COLOR_LOGIC_OP */
  ///*      GL_DITHER */
  ///*      GL_STENCIL_TEST */
  ///*      GL_DEPTH_TEST */
  ///*      GL_CLIP_PLANE0 */
  ///*      GL_CLIP_PLANE1 */
  ///*      GL_CLIP_PLANE2 */
  ///*      GL_CLIP_PLANE3 */
  ///*      GL_CLIP_PLANE4 */
  ///*      GL_CLIP_PLANE5 */
  ///*      GL_LIGHT0 */
  ///*      GL_LIGHT1 */
  ///*      GL_LIGHT2 */
  ///*      GL_LIGHT3 */
  ///*      GL_LIGHT4 */
  ///*      GL_LIGHT5 */
  ///*      GL_LIGHT6 */
  ///*      GL_LIGHT7 */
  ///*      GL_TEXTURE_GEN_S */
  ///*      GL_TEXTURE_GEN_T */
  ///*      GL_TEXTURE_GEN_R */
  ///*      GL_TEXTURE_GEN_Q */
  ///*      GL_MAP1_VERTEX_3 */
  ///*      GL_MAP1_VERTEX_4 */
  ///*      GL_MAP1_COLOR_4 */
  ///*      GL_MAP1_INDEX */
  ///*      GL_MAP1_NORMAL */
  ///*      GL_MAP1_TEXTURE_COORD_1 */
  ///*      GL_MAP1_TEXTURE_COORD_2 */
  ///*      GL_MAP1_TEXTURE_COORD_3 */
  ///*      GL_MAP1_TEXTURE_COORD_4 */
  ///*      GL_MAP2_VERTEX_3 */
  ///*      GL_MAP2_VERTEX_4 */
  ///*      GL_MAP2_COLOR_4 */
  ///*      GL_MAP2_INDEX */
  ///*      GL_MAP2_NORMAL */
  ///*      GL_MAP2_TEXTURE_COORD_1 */
  ///*      GL_MAP2_TEXTURE_COORD_2 */
  ///*      GL_MAP2_TEXTURE_COORD_3 */
  ///*      GL_MAP2_TEXTURE_COORD_4 */
  ///*      GL_POINT_SMOOTH */
  ///*      GL_LINE_SMOOTH */
  ///*      GL_POLYGON_SMOOTH */
  ///*      GL_SCISSOR_TEST */
  ///*      GL_COLOR_MATERIAL */
  ///*      GL_NORMALIZE */
  ///*      GL_AUTO_NORMAL */
  ///*      GL_VERTEX_ARRAY */
  ///*      GL_NORMAL_ARRAY */
  ///*      GL_COLOR_ARRAY */
  ///*      GL_INDEX_ARRAY */
  ///*      GL_TEXTURE_COORD_ARRAY */
  ///*      GL_EDGE_FLAG_ARRAY */
  ///*      GL_POLYGON_OFFSET_POINT */
  ///*      GL_POLYGON_OFFSET_LINE */
  ///*      GL_POLYGON_OFFSET_FILL */
  //
  ///* ErrorCode */
  //#define GL_NO_ERROR                       0
  //#define GL_INVALID_ENUM                   0x0500
  //#define GL_INVALID_VALUE                  0x0501
  //#define GL_INVALID_OPERATION              0x0502
  //#define GL_STACK_OVERFLOW                 0x0503
  //#define GL_STACK_UNDERFLOW                0x0504
  //#define GL_OUT_OF_MEMORY                  0x0505
  //
  ///* FeedBackMode */
  //#define GL_2D                             0x0600
  //#define GL_3D                             0x0601
  //#define GL_3D_COLOR                       0x0602
  //#define GL_3D_COLOR_TEXTURE               0x0603
  //#define GL_4D_COLOR_TEXTURE               0x0604
  //
  ///* FeedBackToken */
  //#define GL_PASS_THROUGH_TOKEN             0x0700
  //#define GL_POINT_TOKEN                    0x0701
  //#define GL_LINE_TOKEN                     0x0702
  //#define GL_POLYGON_TOKEN                  0x0703
  //#define GL_BITMAP_TOKEN                   0x0704
  //#define GL_DRAW_PIXEL_TOKEN               0x0705
  //#define GL_COPY_PIXEL_TOKEN               0x0706
  //#define GL_LINE_RESET_TOKEN               0x0707
  //
  ///* FogMode */
  ///*      GL_LINEAR */
  //#define GL_EXP                            0x0800
  //#define GL_EXP2                           0x0801
  //
  //
  ///* FogParameter */
  ///*      GL_FOG_COLOR */
  ///*      GL_FOG_DENSITY */
  ///*      GL_FOG_END */
  ///*      GL_FOG_INDEX */
  ///*      GL_FOG_MODE */
  ///*      GL_FOG_START */
  //
  #define GL_FOG_COORDINATE_SOURCE_EXT 0x8450
  #define GL_FOG_COORDINATE_EXT 0x8451
  #define GL_FRAGMENT_DEPTH_EXT 0x8452
  //#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453
  //#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454
  //#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455
  //#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456
  #define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 
  //
  ///* FrontFaceDirection */
  //#define GL_CW                             0x0900
  //#define GL_CCW                            0x0901
  //
  ///* GetMapTarget */
  //#define GL_COEFF                          0x0A00
  //#define GL_ORDER                          0x0A01
  //#define GL_DOMAIN                         0x0A02
  //
  ///* GetPixelMap */
  ///*      GL_PIXEL_MAP_I_TO_I */
  ///*      GL_PIXEL_MAP_S_TO_S */
  ///*      GL_PIXEL_MAP_I_TO_R */
  ///*      GL_PIXEL_MAP_I_TO_G */
  ///*      GL_PIXEL_MAP_I_TO_B */
  ///*      GL_PIXEL_MAP_I_TO_A */
  ///*      GL_PIXEL_MAP_R_TO_R */
  ///*      GL_PIXEL_MAP_G_TO_G */
  ///*      GL_PIXEL_MAP_B_TO_B */
  ///*      GL_PIXEL_MAP_A_TO_A */
  //
  ///* GetPointerTarget */
  ///*      GL_VERTEX_ARRAY_POINTER */
  ///*      GL_NORMAL_ARRAY_POINTER */
  ///*      GL_COLOR_ARRAY_POINTER */
  ///*      GL_INDEX_ARRAY_POINTER */
  ///*      GL_TEXTURE_COORD_ARRAY_POINTER */
  ///*      GL_EDGE_FLAG_ARRAY_POINTER */
  //
  ///* GetTarget */
  //#define GL_CURRENT_COLOR                  0x0B00
  //#define GL_CURRENT_INDEX                  0x0B01
  //#define GL_CURRENT_NORMAL                 0x0B02
  //#define GL_CURRENT_TEXTURE_COORDS         0x0B03
  //#define GL_CURRENT_RASTER_COLOR           0x0B04
  //#define GL_CURRENT_RASTER_INDEX           0x0B05
  //#define GL_CURRENT_RASTER_TEXTURE_COORDS  0x0B06
  //#define GL_CURRENT_RASTER_POSITION        0x0B07
  //#define GL_CURRENT_RASTER_POSITION_VALID  0x0B08
  //#define GL_CURRENT_RASTER_DISTANCE        0x0B09
  //#define GL_POINT_SMOOTH                   0x0B10
  //#define GL_POINT_SIZE                     0x0B11
  //#define GL_POINT_SIZE_RANGE               0x0B12
  //#define GL_POINT_SIZE_GRANULARITY         0x0B13
  //#define GL_LINE_SMOOTH                    0x0B20
  //#define GL_LINE_WIDTH                     0x0B21
  //#define GL_LINE_WIDTH_RANGE               0x0B22
  //#define GL_LINE_WIDTH_GRANULARITY         0x0B23
  //#define GL_LINE_STIPPLE                   0x0B24
  //#define GL_LINE_STIPPLE_PATTERN           0x0B25
  //#define GL_LINE_STIPPLE_REPEAT            0x0B26
  //#define GL_LIST_MODE                      0x0B30
  //#define GL_MAX_LIST_NESTING               0x0B31
  //#define GL_LIST_BASE                      0x0B32
  //#define GL_LIST_INDEX                     0x0B33
  #define GL_POLYGON_MODE                   0x0B40
  //#define GL_POLYGON_SMOOTH                 0x0B41
  //#define GL_POLYGON_STIPPLE                0x0B42
  //#define GL_EDGE_FLAG                      0x0B43
  //#define GL_CULL_FACE                      0x0B44
  //#define GL_CULL_FACE_MODE                 0x0B45
  //#define GL_FRONT_FACE                     0x0B46
  //#define GL_LIGHTING                       0x0B50
  //#define GL_LIGHT_MODEL_LOCAL_VIEWER       0x0B51
  //#define GL_LIGHT_MODEL_TWO_SIDE           0x0B52
  //#define GL_LIGHT_MODEL_AMBIENT            0x0B53
  //#define GL_SHADE_MODEL                    0x0B54
  //#define GL_COLOR_MATERIAL_FACE            0x0B55
  //#define GL_COLOR_MATERIAL_PARAMETER       0x0B56
  //#define GL_COLOR_MATERIAL                 0x0B57
  //#define GL_FOG                            0x0B60
  //#define GL_FOG_INDEX                      0x0B61
  //#define GL_FOG_DENSITY                    0x0B62
  //#define GL_FOG_START                      0x0B63
  //#define GL_FOG_END                        0x0B64
  //#define GL_FOG_MODE                       0x0B65
  //#define GL_FOG_COLOR                      0x0B66
  //#define GL_DEPTH_RANGE                    0x0B70
  //#define GL_DEPTH_TEST                     0x0B71
  //#define GL_DEPTH_WRITEMASK                0x0B72
  //#define GL_DEPTH_CLEAR_VALUE              0x0B73
  //#define GL_DEPTH_FUNC                     0x0B74
  //#define GL_ACCUM_CLEAR_VALUE              0x0B80
  //#define GL_STENCIL_TEST                   0x0B90
  //#define GL_STENCIL_CLEAR_VALUE            0x0B91
  //#define GL_STENCIL_FUNC                   0x0B92
  //#define GL_STENCIL_VALUE_MASK             0x0B93
  //#define GL_STENCIL_FAIL                   0x0B94
  //#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
  //#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
  //#define GL_STENCIL_REF                    0x0B97
  //#define GL_STENCIL_WRITEMASK              0x0B98
  //#define GL_MATRIX_MODE                    0x0BA0
  //#define GL_NORMALIZE                      0x0BA1
  //#define GL_VIEWPORT                       0x0BA2
  //#define GL_MODELVIEW_STACK_DEPTH          0x0BA3
  //#define GL_PROJECTION_STACK_DEPTH         0x0BA4
  //#define GL_TEXTURE_STACK_DEPTH            0x0BA5
  //#define GL_MODELVIEW_MATRIX               0x0BA6
  //#define GL_PROJECTION_MATRIX              0x0BA7
  //#define GL_TEXTURE_MATRIX                 0x0BA8
  //#define GL_ATTRIB_STACK_DEPTH             0x0BB0
  //#define GL_CLIENT_ATTRIB_STACK_DEPTH      0x0BB1
  //#define GL_ALPHA_TEST                     0x0BC0
  //#define GL_ALPHA_TEST_FUNC                0x0BC1
  //#define GL_ALPHA_TEST_REF                 0x0BC2
  //#define GL_DITHER                         0x0BD0
  //#define GL_BLEND_DST                      0x0BE0
  //#define GL_BLEND_SRC                      0x0BE1
  //#define GL_BLEND                          0x0BE2
  //#define GL_LOGIC_OP_MODE                  0x0BF0
  //#define GL_INDEX_LOGIC_OP                 0x0BF1
  //#define GL_COLOR_LOGIC_OP                 0x0BF2
  //#define GL_AUX_BUFFERS                    0x0C00
  //#define GL_DRAW_BUFFER                    0x0C01
  //#define GL_READ_BUFFER                    0x0C02
  //#define GL_SCISSOR_BOX                    0x0C10
  //#define GL_SCISSOR_TEST                   0x0C11
  //#define GL_INDEX_CLEAR_VALUE              0x0C20
  //#define GL_INDEX_WRITEMASK                0x0C21
  //#define GL_COLOR_CLEAR_VALUE              0x0C22
  //#define GL_COLOR_WRITEMASK                0x0C23
  //#define GL_INDEX_MODE                     0x0C30
  //#define GL_RGBA_MODE                      0x0C31
  //#define GL_DOUBLEBUFFER                   0x0C32
  //#define GL_STEREO                         0x0C33
  //#define GL_RENDER_MODE                    0x0C40
  //#define GL_PERSPECTIVE_CORRECTION_HINT    0x0C50
  //#define GL_POINT_SMOOTH_HINT              0x0C51
  //#define GL_LINE_SMOOTH_HINT               0x0C52
  //#define GL_POLYGON_SMOOTH_HINT            0x0C53
  //#define GL_FOG_HINT                       0x0C54
  #define GL_TEXTURE_GEN_S                  0x0C60
  #define GL_TEXTURE_GEN_T                  0x0C61
  //#define GL_TEXTURE_GEN_R                  0x0C62
  //#define GL_TEXTURE_GEN_Q                  0x0C63
  //#define GL_PIXEL_MAP_I_TO_I               0x0C70
  //#define GL_PIXEL_MAP_S_TO_S               0x0C71
  //#define GL_PIXEL_MAP_I_TO_R               0x0C72
  //#define GL_PIXEL_MAP_I_TO_G               0x0C73
  //#define GL_PIXEL_MAP_I_TO_B               0x0C74
  //#define GL_PIXEL_MAP_I_TO_A               0x0C75
  //#define GL_PIXEL_MAP_R_TO_R               0x0C76
  //#define GL_PIXEL_MAP_G_TO_G               0x0C77
  //#define GL_PIXEL_MAP_B_TO_B               0x0C78
  //#define GL_PIXEL_MAP_A_TO_A               0x0C79
  //#define GL_PIXEL_MAP_I_TO_I_SIZE          0x0CB0
  //#define GL_PIXEL_MAP_S_TO_S_SIZE          0x0CB1
  //#define GL_PIXEL_MAP_I_TO_R_SIZE          0x0CB2
  //#define GL_PIXEL_MAP_I_TO_G_SIZE          0x0CB3
  //#define GL_PIXEL_MAP_I_TO_B_SIZE          0x0CB4
  //#define GL_PIXEL_MAP_I_TO_A_SIZE          0x0CB5
  //#define GL_PIXEL_MAP_R_TO_R_SIZE          0x0CB6
  //#define GL_PIXEL_MAP_G_TO_G_SIZE          0x0CB7
  //#define GL_PIXEL_MAP_B_TO_B_SIZE          0x0CB8
  //#define GL_PIXEL_MAP_A_TO_A_SIZE          0x0CB9
  //#define GL_UNPACK_SWAP_BYTES              0x0CF0
  //#define GL_UNPACK_LSB_FIRST               0x0CF1
  //#define GL_UNPACK_ROW_LENGTH              0x0CF2
  //#define GL_UNPACK_SKIP_ROWS               0x0CF3
  //#define GL_UNPACK_SKIP_PIXELS             0x0CF4
  //#define GL_UNPACK_ALIGNMENT               0x0CF5
  //#define GL_PACK_SWAP_BYTES                0x0D00
  //#define GL_PACK_LSB_FIRST                 0x0D01
  //#define GL_PACK_ROW_LENGTH                0x0D02
  //#define GL_PACK_SKIP_ROWS                 0x0D03
  //#define GL_PACK_SKIP_PIXELS               0x0D04
  //#define GL_PACK_ALIGNMENT                 0x0D05
  //#define GL_MAP_COLOR                      0x0D10
  //#define GL_MAP_STENCIL                    0x0D11
  //#define GL_INDEX_SHIFT                    0x0D12
  //#define GL_INDEX_OFFSET                   0x0D13
  //#define GL_RED_SCALE                      0x0D14
  //#define GL_RED_BIAS                       0x0D15
  //#define GL_ZOOM_X                         0x0D16
  //#define GL_ZOOM_Y                         0x0D17
  //#define GL_GREEN_SCALE                    0x0D18
  //#define GL_GREEN_BIAS                     0x0D19
  //#define GL_BLUE_SCALE                     0x0D1A
  //#define GL_BLUE_BIAS                      0x0D1B
  //#define GL_ALPHA_SCALE                    0x0D1C
  //#define GL_ALPHA_BIAS                     0x0D1D
  //#define GL_DEPTH_SCALE                    0x0D1E
  //#define GL_DEPTH_BIAS                     0x0D1F
  //#define GL_MAX_EVAL_ORDER                 0x0D30
  //#define GL_MAX_LIGHTS                     0x0D31
  //#define GL_MAX_CLIP_PLANES                0x0D32
  //#define GL_MAX_TEXTURE_SIZE               0x0D33
  //#define GL_MAX_PIXEL_MAP_TABLE            0x0D34
  //#define GL_MAX_ATTRIB_STACK_DEPTH         0x0D35
  //#define GL_MAX_MODELVIEW_STACK_DEPTH      0x0D36
  //#define GL_MAX_NAME_STACK_DEPTH           0x0D37
  //#define GL_MAX_PROJECTION_STACK_DEPTH     0x0D38
  //#define GL_MAX_TEXTURE_STACK_DEPTH        0x0D39
  //#define GL_MAX_VIEWPORT_DIMS              0x0D3A
  //#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH  0x0D3B
  //#define GL_SUBPIXEL_BITS                  0x0D50
  //#define GL_INDEX_BITS                     0x0D51
  //#define GL_RED_BITS                       0x0D52
  //#define GL_GREEN_BITS                     0x0D53
  //#define GL_BLUE_BITS                      0x0D54
  //#define GL_ALPHA_BITS                     0x0D55
  //#define GL_DEPTH_BITS                     0x0D56
  //#define GL_STENCIL_BITS                   0x0D57
  //#define GL_ACCUM_RED_BITS                 0x0D58
  //#define GL_ACCUM_GREEN_BITS               0x0D59
  //#define GL_ACCUM_BLUE_BITS                0x0D5A
  //#define GL_ACCUM_ALPHA_BITS               0x0D5B
  //#define GL_NAME_STACK_DEPTH               0x0D70
  //#define GL_AUTO_NORMAL                    0x0D80
  //#define GL_MAP1_COLOR_4                   0x0D90
  //#define GL_MAP1_INDEX                     0x0D91
  //#define GL_MAP1_NORMAL                    0x0D92
  //#define GL_MAP1_TEXTURE_COORD_1           0x0D93
  //#define GL_MAP1_TEXTURE_COORD_2           0x0D94
  //#define GL_MAP1_TEXTURE_COORD_3           0x0D95
  //#define GL_MAP1_TEXTURE_COORD_4           0x0D96
  //#define GL_MAP1_VERTEX_3                  0x0D97
  //#define GL_MAP1_VERTEX_4                  0x0D98
  //#define GL_MAP2_COLOR_4                   0x0DB0
  //#define GL_MAP2_INDEX                     0x0DB1
  //#define GL_MAP2_NORMAL                    0x0DB2
  //#define GL_MAP2_TEXTURE_COORD_1           0x0DB3
  //#define GL_MAP2_TEXTURE_COORD_2           0x0DB4
  //#define GL_MAP2_TEXTURE_COORD_3           0x0DB5
  //#define GL_MAP2_TEXTURE_COORD_4           0x0DB6
  //#define GL_MAP2_VERTEX_3                  0x0DB7
  //#define GL_MAP2_VERTEX_4                  0x0DB8
  //#define GL_MAP1_GRID_DOMAIN               0x0DD0
  //#define GL_MAP1_GRID_SEGMENTS             0x0DD1
  //#define GL_MAP2_GRID_DOMAIN               0x0DD2
  //#define GL_MAP2_GRID_SEGMENTS             0x0DD3
  //#define GL_TEXTURE_1D                     0x0DE0
  //#define GL_TEXTURE_2D                     0x0DE1
  //#define GL_FEEDBACK_BUFFER_POINTER        0x0DF0
  //#define GL_FEEDBACK_BUFFER_SIZE           0x0DF1
  //#define GL_FEEDBACK_BUFFER_TYPE           0x0DF2
  //#define GL_SELECTION_BUFFER_POINTER       0x0DF3
  //#define GL_SELECTION_BUFFER_SIZE          0x0DF4
  ///*      GL_TEXTURE_BINDING_1D */
  ///*      GL_TEXTURE_BINDING_2D */
  ///*      GL_VERTEX_ARRAY */
  ///*      GL_NORMAL_ARRAY */
  ///*      GL_COLOR_ARRAY */
  ///*      GL_INDEX_ARRAY */
  ///*      GL_TEXTURE_COORD_ARRAY */
  ///*      GL_EDGE_FLAG_ARRAY */
  ///*      GL_VERTEX_ARRAY_SIZE */
  ///*      GL_VERTEX_ARRAY_TYPE */
  ///*      GL_VERTEX_ARRAY_STRIDE */
  ///*      GL_NORMAL_ARRAY_TYPE */
  ///*      GL_NORMAL_ARRAY_STRIDE */
  ///*      GL_COLOR_ARRAY_SIZE */
  ///*      GL_COLOR_ARRAY_TYPE */
  ///*      GL_COLOR_ARRAY_STRIDE */
  ///*      GL_INDEX_ARRAY_TYPE */
  ///*      GL_INDEX_ARRAY_STRIDE */
  ///*      GL_TEXTURE_COORD_ARRAY_SIZE */
  ///*      GL_TEXTURE_COORD_ARRAY_TYPE */
  ///*      GL_TEXTURE_COORD_ARRAY_STRIDE */
  ///*      GL_EDGE_FLAG_ARRAY_STRIDE */
  ///*      GL_POLYGON_OFFSET_FACTOR */
  ///*      GL_POLYGON_OFFSET_UNITS */
  //
  ///* GetTextureParameter */
  ///*      GL_TEXTURE_MAG_FILTER */
  ///*      GL_TEXTURE_MIN_FILTER */
  ///*      GL_TEXTURE_WRAP_S */
  ///*      GL_TEXTURE_WRAP_T */
  //#define GL_TEXTURE_WIDTH                  0x1000
  //#define GL_TEXTURE_HEIGHT                 0x1001
  //#define GL_TEXTURE_INTERNAL_FORMAT        0x1003
  #define GL_TEXTURE_BORDER_COLOR           0x1004
  //#define GL_TEXTURE_BORDER                 0x1005
  ///*      GL_TEXTURE_RED_SIZE */
  ///*      GL_TEXTURE_GREEN_SIZE */
  ///*      GL_TEXTURE_BLUE_SIZE */
  ///*      GL_TEXTURE_ALPHA_SIZE */
  ///*      GL_TEXTURE_LUMINANCE_SIZE */
  ///*      GL_TEXTURE_INTENSITY_SIZE */
  ///*      GL_TEXTURE_PRIORITY */
  ///*      GL_TEXTURE_RESIDENT */
  //
  ///* HintMode */
  //#define GL_DONT_CARE                      0x1100
  //#define GL_FASTEST                        0x1101
  //#define GL_NICEST                         0x1102
  //
  ///* HintTarget */
  ///*      GL_PERSPECTIVE_CORRECTION_HINT */
  ///*      GL_POINT_SMOOTH_HINT */
  ///*      GL_LINE_SMOOTH_HINT */
  ///*      GL_POLYGON_SMOOTH_HINT */
  ///*      GL_FOG_HINT */
  ///*      GL_PHONG_HINT */
  //
  ///* IndexPointerType */
  ///*      GL_SHORT */
  ///*      GL_INT */
  ///*      GL_FLOAT */
  ///*      GL_DOUBLE */
  //
  ///* LightModelParameter */
  ///*      GL_LIGHT_MODEL_AMBIENT */
  ///*      GL_LIGHT_MODEL_LOCAL_VIEWER */
  ///*      GL_LIGHT_MODEL_TWO_SIDE */
  //
  ///* LightName */
  //#define GL_LIGHT0                         0x4000
  //#define GL_LIGHT1                         0x4001
  //#define GL_LIGHT2                         0x4002
  //#define GL_LIGHT3                         0x4003
  //#define GL_LIGHT4                         0x4004
  //#define GL_LIGHT5                         0x4005
  //#define GL_LIGHT6                         0x4006
  //#define GL_LIGHT7                         0x4007
  //
  ///* LightParameter */
  //#define GL_AMBIENT                        0x1200
  //#define GL_DIFFUSE                        0x1201
  //#define GL_SPECULAR                       0x1202
  //#define GL_POSITION                       0x1203
  //#define GL_SPOT_DIRECTION                 0x1204
  //#define GL_SPOT_EXPONENT                  0x1205
  //#define GL_SPOT_CUTOFF                    0x1206
  //#define GL_CONSTANT_ATTENUATION           0x1207
  //#define GL_LINEAR_ATTENUATION             0x1208
  //#define GL_QUADRATIC_ATTENUATION          0x1209
  //
  ///* InterleavedArrays */
  ///*      GL_V2F */
  ///*      GL_V3F */
  ///*      GL_C4UB_V2F */
  ///*      GL_C4UB_V3F */
  ///*      GL_C3F_V3F */
  ///*      GL_N3F_V3F */
  ///*      GL_C4F_N3F_V3F */
  ///*      GL_T2F_V3F */
  ///*      GL_T4F_V4F */
  ///*      GL_T2F_C4UB_V3F */
  ///*      GL_T2F_C3F_V3F */
  ///*      GL_T2F_N3F_V3F */
  ///*      GL_T2F_C4F_N3F_V3F */
  ///*      GL_T4F_C4F_N3F_V4F */
  //
  ///* ListMode */
  //#define GL_COMPILE                        0x1300
  //#define GL_COMPILE_AND_EXECUTE            0x1301
  //
  ///* ListNameType */
  ///*      GL_BYTE */
  ///*      GL_UNSIGNED_BYTE */
  ///*      GL_SHORT */
  ///*      GL_UNSIGNED_SHORT */
  ///*      GL_INT */
  ///*      GL_UNSIGNED_INT */
  ///*      GL_FLOAT */
  ///*      GL_2_BYTES */
  ///*      GL_3_BYTES */
  ///*      GL_4_BYTES */
  //
  ///* LogicOp */
  //#define GL_CLEAR                          0x1500
  //#define GL_AND                            0x1501
  //#define GL_AND_REVERSE                    0x1502
  //#define GL_COPY                           0x1503
  //#define GL_AND_INVERTED                   0x1504
  //#define GL_NOOP                           0x1505
  //#define GL_XOR                            0x1506
  //#define GL_OR                             0x1507
  //#define GL_NOR                            0x1508
  //#define GL_EQUIV                          0x1509
  //#define GL_INVERT                         0x150A
  //#define GL_OR_REVERSE                     0x150B
  //#define GL_COPY_INVERTED                  0x150C
  //#define GL_OR_INVERTED                    0x150D
  //#define GL_NAND                           0x150E
  //#define GL_SET                            0x150F
  //
  ///* MapTarget */
  ///*      GL_MAP1_COLOR_4 */
  ///*      GL_MAP1_INDEX */
  ///*      GL_MAP1_NORMAL */
  ///*      GL_MAP1_TEXTURE_COORD_1 */
  ///*      GL_MAP1_TEXTURE_COORD_2 */
  ///*      GL_MAP1_TEXTURE_COORD_3 */
  ///*      GL_MAP1_TEXTURE_COORD_4 */
  ///*      GL_MAP1_VERTEX_3 */
  ///*      GL_MAP1_VERTEX_4 */
  ///*      GL_MAP2_COLOR_4 */
  ///*      GL_MAP2_INDEX */
  ///*      GL_MAP2_NORMAL */
  ///*      GL_MAP2_TEXTURE_COORD_1 */
  ///*      GL_MAP2_TEXTURE_COORD_2 */
  ///*      GL_MAP2_TEXTURE_COORD_3 */
  ///*      GL_MAP2_TEXTURE_COORD_4 */
  ///*      GL_MAP2_VERTEX_3 */
  ///*      GL_MAP2_VERTEX_4 */
  //
  ///* MaterialFace */
  ///*      GL_FRONT */
  ///*      GL_BACK */
  ///*      GL_FRONT_AND_BACK */
  //
  ///* MaterialParameter */
  //#define GL_EMISSION                       0x1600
  //#define GL_SHININESS                      0x1601
  //#define GL_AMBIENT_AND_DIFFUSE            0x1602
  //#define GL_COLOR_INDEXES                  0x1603
  ///*      GL_AMBIENT */
  ///*      GL_DIFFUSE */
  ///*      GL_SPECULAR */
  //
  ///* MatrixMode */
  //#define GL_MODELVIEW                      0x1700
  //#define GL_PROJECTION                     0x1701
  //#define GL_TEXTURE                        0x1702
  //
  ///* MeshMode1 */
  ///*      GL_POINT */
  ///*      GL_LINE */
  //
  ///* MeshMode2 */
  ///*      GL_POINT */
  ///*      GL_LINE */
  ///*      GL_FILL */
  //
  ///* NormalPointerType */
  ///*      GL_BYTE */
  ///*      GL_SHORT */
  ///*      GL_INT */
  ///*      GL_FLOAT */
  ///*      GL_DOUBLE */
  //
  ///* PixelCopyType */
  //#define GL_COLOR                          0x1800
  //#define GL_DEPTH                          0x1801
  //#define GL_STENCIL                        0x1802
  //
  ///* PixelFormat */
  #define GL_COLOR_INDEX                    0x1900
  //#define GL_STENCIL_INDEX                  0x1901
  //#define GL_DEPTH_COMPONENT                0x1902
  //#define GL_RED                            0x1903
  //#define GL_GREEN                          0x1904
  //#define GL_BLUE                           0x1905
  //#define GL_ALPHA                          0x1906
  //#define GL_RGB                            0x1907
  //#define GL_RGBA                           0x1908
  //#define GL_LUMINANCE                      0x1909
  //#define GL_LUMINANCE_ALPHA                0x190A
  //#define GL_BGR					          0x80E0
  //#define GL_BGRA					          0x80E1
  //
  ///* PixelMap */
  ///*      GL_PIXEL_MAP_I_TO_I */
  ///*      GL_PIXEL_MAP_S_TO_S */
  ///*      GL_PIXEL_MAP_I_TO_R */
  ///*      GL_PIXEL_MAP_I_TO_G */
  ///*      GL_PIXEL_MAP_I_TO_B */
  ///*      GL_PIXEL_MAP_I_TO_A */
  ///*      GL_PIXEL_MAP_R_TO_R */
  ///*      GL_PIXEL_MAP_G_TO_G */
  ///*      GL_PIXEL_MAP_B_TO_B */
  ///*      GL_PIXEL_MAP_A_TO_A */
  //
  ///* PixelStore */
  ///*      GL_UNPACK_SWAP_BYTES */
  ///*      GL_UNPACK_LSB_FIRST */
  ///*      GL_UNPACK_ROW_LENGTH */
  ///*      GL_UNPACK_SKIP_ROWS */
  ///*      GL_UNPACK_SKIP_PIXELS */
  ///*      GL_UNPACK_ALIGNMENT */
  ///*      GL_PACK_SWAP_BYTES */
  ///*      GL_PACK_LSB_FIRST */
  ///*      GL_PACK_ROW_LENGTH */
  ///*      GL_PACK_SKIP_ROWS */
  ///*      GL_PACK_SKIP_PIXELS */
  ///*      GL_PACK_ALIGNMENT */
  //
  ///* PixelTransfer */
  ///*      GL_MAP_COLOR */
  ///*      GL_MAP_STENCIL */
  ///*      GL_INDEX_SHIFT */
  ///*      GL_INDEX_OFFSET */
  ///*      GL_RED_SCALE */
  ///*      GL_RED_BIAS */
  ///*      GL_GREEN_SCALE */
  ///*      GL_GREEN_BIAS */
  ///*      GL_BLUE_SCALE */
  ///*      GL_BLUE_BIAS */
  ///*      GL_ALPHA_SCALE */
  ///*      GL_ALPHA_BIAS */
  ///*      GL_DEPTH_SCALE */
  ///*      GL_DEPTH_BIAS */
  //
  ///* PixelType */
  //#define GL_BITMAP                         0x1A00
  ///*      GL_BYTE */
  ///*      GL_UNSIGNED_BYTE */
  ///*      GL_SHORT */
  ///*      GL_UNSIGNED_SHORT */
  ///*      GL_INT */
  ///*      GL_UNSIGNED_INT */
  ///*      GL_FLOAT */
  //
  ///* PolygonMode */
  //#define GL_POINT                          0x1B00
  #define GL_LINE                           0x1B01
  #define GL_FILL                           0x1B02
  //
  ///* ReadBufferMode */
  ///*      GL_FRONT_LEFT */
  ///*      GL_FRONT_RIGHT */
  ///*      GL_BACK_LEFT */
  ///*      GL_BACK_RIGHT */
  ///*      GL_FRONT */
  ///*      GL_BACK */
  ///*      GL_LEFT */
  ///*      GL_RIGHT */
  ///*      GL_AUX0 */
  ///*      GL_AUX1 */
  ///*      GL_AUX2 */
  ///*      GL_AUX3 */
  //
  ///* RenderingMode */
  //#define GL_RENDER                         0x1C00
  //#define GL_FEEDBACK                       0x1C01
  //#define GL_SELECT                         0x1C02
  //
  ///* ShadingModel */
  //#define GL_FLAT                           0x1D00
  //#define GL_SMOOTH                         0x1D01
  //
  //
  ///* StencilFunction */
  ///*      GL_NEVER */
  ///*      GL_LESS */
  ///*      GL_EQUAL */
  ///*      GL_LEQUAL */
  ///*      GL_GREATER */
  ///*      GL_NOTEQUAL */
  ///*      GL_GEQUAL */
  ///*      GL_ALWAYS */
  //
  ///* StencilOp */
  ///*      GL_ZERO */
  //#define GL_KEEP                           0x1E00
  //#define GL_REPLACE                        0x1E01
  //#define GL_INCR                           0x1E02
  //#define GL_DECR                           0x1E03
  ///*      GL_INVERT */
  //
  ///* StringName */
  //#define GL_VENDOR                         0x1F00
  //#define GL_RENDERER                       0x1F01
  //#define GL_VERSION                        0x1F02
  //#define GL_EXTENSIONS                     0x1F03
  //
  ///* TextureCoordName */
  #define GL_S                              0x2000
  #define GL_T                              0x2001
  //#define GL_R                              0x2002
  //#define GL_Q                              0x2003
  //
  ///* TexCoordPointerType */
  ///*      GL_SHORT */
  ///*      GL_INT */
  ///*      GL_FLOAT */
  ///*      GL_DOUBLE */
  //
  ///* TextureEnvMode */
  //#define GL_MODULATE                       0x2100
  //#define GL_DECAL                          0x2101
  ///*      GL_BLEND */
  ///*      GL_REPLACE */
  //
  ///* TextureEnvParameter */
  //#define GL_TEXTURE_ENV_MODE               0x2200
  //#define GL_TEXTURE_ENV_COLOR              0x2201
  //
  ///* TextureEnvTarget */
  //#define GL_TEXTURE_ENV                    0x2300
  //
  ///* TextureGenMode */
  //#define GL_EYE_LINEAR                     0x2400
  #define GL_OBJECT_LINEAR                  0x2401
  #define GL_SPHERE_MAP                     0x2402
  //
  ///* TextureGenParameter */
  #define GL_TEXTURE_GEN_MODE               0x2500
  #define GL_OBJECT_PLANE                   0x2501
  //#define GL_EYE_PLANE                      0x2502
  //
  ///* TextureMagFilter */
  //#define GL_NEAREST                        0x2600
  //#define GL_LINEAR                         0x2601
  //
  ///* TextureMinFilter */
  ///*      GL_NEAREST */
  ///*      GL_LINEAR */
  //#define GL_NEAREST_MIPMAP_NEAREST         0x2700
  //#define GL_LINEAR_MIPMAP_NEAREST          0x2701
  //#define GL_NEAREST_MIPMAP_LINEAR          0x2702
  //#define GL_LINEAR_MIPMAP_LINEAR           0x2703
  //
  ///* TextureParameterName */
  //#define GL_TEXTURE_MAG_FILTER             0x2800
  //#define GL_TEXTURE_MIN_FILTER             0x2801
  //#define GL_TEXTURE_WRAP_S                 0x2802
  //#define GL_TEXTURE_WRAP_T                 0x2803
  ///*      GL_TEXTURE_BORDER_COLOR */
  ///*      GL_TEXTURE_PRIORITY */
  //
  ///* TextureTarget */
  ///*      GL_TEXTURE_1D */
  ///*      GL_TEXTURE_2D */
  ///*      GL_PROXY_TEXTURE_1D */
  ///*      GL_PROXY_TEXTURE_2D */
  //
  ///* TextureWrapMode */
  #define GL_CLAMP                          0x2900
  //#define GL_REPEAT                         0x2901
  //
  //#define GL_TEXTURE0                       0x84C0
  //#define GL_TEXTURE1                       0x84C1
  //#define GL_TEXTURE2                       0x84C2
  //#define GL_TEXTURE3                       0x84C3
  //#define GL_TEXTURE4                       0x84C4
  //#define GL_TEXTURE5                       0x84C5
  //#define GL_TEXTURE6                       0x84C6
  //#define GL_TEXTURE7                       0x84C7
  //#define GL_TEXTURE8                       0x84C8
  //#define GL_TEXTURE9                       0x84C9
  //#define GL_TEXTURE10                      0x84CA
  //#define GL_TEXTURE11                      0x84CB
  //#define GL_TEXTURE12                      0x84CC
  //#define GL_TEXTURE13                      0x84CD
  //#define GL_TEXTURE14                      0x84CE
  //#define GL_TEXTURE15                      0x84CF
  //#define GL_TEXTURE16                      0x84D0
  //#define GL_TEXTURE17                      0x84D1
  //#define GL_TEXTURE18                      0x84D2
  //#define GL_TEXTURE19                      0x84D3
  //#define GL_TEXTURE20                      0x84D4
  //#define GL_TEXTURE21                      0x84D5
  //#define GL_TEXTURE22                      0x84D6
  //#define GL_TEXTURE23                      0x84D7
  //#define GL_TEXTURE24                      0x84D8
  //#define GL_TEXTURE25                      0x84D9
  //#define GL_TEXTURE26                      0x84DA
  //#define GL_TEXTURE27                      0x84DB
  //#define GL_TEXTURE28                      0x84DC
  //#define GL_TEXTURE29                      0x84DD
  //#define GL_TEXTURE30                      0x84DE
  //#define GL_TEXTURE31                      0x84DF
  //#define GL_ACTIVE_TEXTURE                 0x84E0
  //#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
  //#define GL_MAX_TEXTURE_UNITS              0x84E2
  //#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3
  //#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4
  //#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5
  //#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6
  //#define GL_MULTISAMPLE                    0x809D
  //#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
  //#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
  //#define GL_SAMPLE_COVERAGE                0x80A0
  //#define GL_SAMPLE_BUFFERS                 0x80A8
  //#define GL_SAMPLES                        0x80A9
  //#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
  //#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
  //#define GL_MULTISAMPLE_BIT                0x20000000
  //#define GL_NORMAL_MAP                     0x8511
  //#define GL_REFLECTION_MAP                 0x8512
  //#define GL_TEXTURE_CUBE_MAP               0x8513
  //#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
  //#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
  //#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
  //#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
  //#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
  //#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
  //#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
  //#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B
  //#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
  //#define GL_COMPRESSED_ALPHA               0x84E9
  //#define GL_COMPRESSED_LUMINANCE           0x84EA
  //#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB
  //#define GL_COMPRESSED_INTENSITY           0x84EC
  //#define GL_COMPRESSED_RGB                 0x84ED
  //#define GL_COMPRESSED_RGBA                0x84EE
  //#define GL_TEXTURE_COMPRESSION_HINT       0x84EF
  //#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0
  //#define GL_TEXTURE_COMPRESSED             0x86A1
  //#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
  //#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
  //#define GL_CLAMP_TO_BORDER                0x812D
  //#define GL_COMBINE                        0x8570
  //#define GL_COMBINE_RGB                    0x8571
  //#define GL_COMBINE_ALPHA                  0x8572
  #define GL_SOURCE0_RGB                    0x8580
  #define GL_SOURCE1_RGB                    0x8581
  #define GL_SOURCE2_RGB                    0x8582
  #define GL_SOURCE0_ALPHA                  0x8588
  #define GL_SOURCE1_ALPHA                  0x8589
  #define GL_SOURCE2_ALPHA                  0x858A
  //#define GL_OPERAND0_RGB                   0x8590
  //#define GL_OPERAND1_RGB                   0x8591
  //#define GL_OPERAND2_RGB                   0x8592
  //#define GL_OPERAND0_ALPHA                 0x8598
  //#define GL_OPERAND1_ALPHA                 0x8599
  //#define GL_OPERAND2_ALPHA                 0x859A
  //#define GL_RGB_SCALE                      0x8573
  //#define GL_ADD_SIGNED                     0x8574
  //#define GL_INTERPOLATE                    0x8575
  //#define GL_SUBTRACT                       0x84E7
  //#define GL_CONSTANT                       0x8576
  //#define GL_PRIMARY_COLOR                  0x8577
  //#define GL_PREVIOUS                       0x8578
  //#define GL_DOT3_RGB                       0x86AE
  //#define GL_DOT3_RGBA                      0x86AF
  //
  ///* VertexPointerType */
  ///*      GL_SHORT */
  ///*      GL_INT */
  ///*      GL_FLOAT */
  ///*      GL_DOUBLE */
  //
  ///* ClientAttribMask */
  //#define GL_CLIENT_PIXEL_STORE_BIT         0x00000001
  //#define GL_CLIENT_VERTEX_ARRAY_BIT        0x00000002
  //#define GL_CLIENT_ALL_ATTRIB_BITS         0xffffffff
  //
  ///* polygon_offset */
  //#define GL_POLYGON_OFFSET_FACTOR          0x8038
  //#define GL_POLYGON_OFFSET_UNITS           0x2A00
  //#define GL_POLYGON_OFFSET_POINT           0x2A01
  //#define GL_POLYGON_OFFSET_LINE            0x2A02
  //#define GL_POLYGON_OFFSET_FILL            0x8037
  //
  ///* texture */
  //#define GL_ALPHA4                         0x803B
  //#define GL_ALPHA8                         0x803C
  //#define GL_ALPHA12                        0x803D
  //#define GL_ALPHA16                        0x803E
  //#define GL_LUMINANCE4                     0x803F
  //#define GL_LUMINANCE8                     0x8040
  //#define GL_LUMINANCE12                    0x8041
  //#define GL_LUMINANCE16                    0x8042
  //#define GL_LUMINANCE4_ALPHA4              0x8043
  //#define GL_LUMINANCE6_ALPHA2              0x8044
  //#define GL_LUMINANCE8_ALPHA8              0x8045
  //#define GL_LUMINANCE12_ALPHA4             0x8046
  //#define GL_LUMINANCE12_ALPHA12            0x8047
  //#define GL_LUMINANCE16_ALPHA16            0x8048
  #define GL_INTENSITY                      0x8049
  //#define GL_INTENSITY4                     0x804A
  //#define GL_INTENSITY8                     0x804B
  //#define GL_INTENSITY12                    0x804C
  //#define GL_INTENSITY16                    0x804D
  //#define GL_R3_G3_B2                       0x2A10
  //#define GL_RGB4                           0x804F
  #define GL_RGB5                           0x8050
  #define GL_RGB8                           0x8051
  //#define GL_RGB10                          0x8052
  //#define GL_RGB12                          0x8053
  //#define GL_RGB16                          0x8054
  //#define GL_RGBA2                          0x8055
  #define GL_RGBA4                          0x8056
  #define GL_RGB5_A1                        0x8057
  #define GL_RGBA8                          0x8058
  //#define GL_RGB10_A2                       0x8059
  //#define GL_RGBA12                         0x805A
  //#define GL_RGBA16                         0x805B
  //#define GL_TEXTURE_RED_SIZE               0x805C
  //#define GL_TEXTURE_GREEN_SIZE             0x805D
  //#define GL_TEXTURE_BLUE_SIZE              0x805E
  //#define GL_TEXTURE_ALPHA_SIZE             0x805F
  //#define GL_TEXTURE_LUMINANCE_SIZE         0x8060
  //#define GL_TEXTURE_INTENSITY_SIZE         0x8061
  //#define GL_PROXY_TEXTURE_1D               0x8063
  //#define GL_PROXY_TEXTURE_2D               0x8064
  //
  ///* texture_object */
  //#define GL_TEXTURE_PRIORITY               0x8066
  //#define GL_TEXTURE_RESIDENT               0x8067
  //#define GL_TEXTURE_BINDING_1D             0x8068
  //#define GL_TEXTURE_BINDING_2D             0x8069
  //
  ///* vertex_array */
  //#define GL_VERTEX_ARRAY                   0x8074
  //#define GL_NORMAL_ARRAY                   0x8075
  //#define GL_COLOR_ARRAY                    0x8076
  //#define GL_INDEX_ARRAY                    0x8077
  //#define GL_TEXTURE_COORD_ARRAY            0x8078
  //#define GL_EDGE_FLAG_ARRAY                0x8079
  //#define GL_VERTEX_ARRAY_SIZE              0x807A
  //#define GL_VERTEX_ARRAY_TYPE              0x807B
  //#define GL_VERTEX_ARRAY_STRIDE            0x807C
  //#define GL_NORMAL_ARRAY_TYPE              0x807E
  //#define GL_NORMAL_ARRAY_STRIDE            0x807F
  //#define GL_COLOR_ARRAY_SIZE               0x8081
  //#define GL_COLOR_ARRAY_TYPE               0x8082
  //#define GL_COLOR_ARRAY_STRIDE             0x8083
  //#define GL_INDEX_ARRAY_TYPE               0x8085
  //#define GL_INDEX_ARRAY_STRIDE             0x8086
  //#define GL_TEXTURE_COORD_ARRAY_SIZE       0x8088
  //#define GL_TEXTURE_COORD_ARRAY_TYPE       0x8089
  //#define GL_TEXTURE_COORD_ARRAY_STRIDE     0x808A
  //#define GL_EDGE_FLAG_ARRAY_STRIDE         0x808C
  //#define GL_VERTEX_ARRAY_POINTER           0x808E
  //#define GL_NORMAL_ARRAY_POINTER           0x808F
  //#define GL_COLOR_ARRAY_POINTER            0x8090
  //#define GL_INDEX_ARRAY_POINTER            0x8091
  //#define GL_TEXTURE_COORD_ARRAY_POINTER    0x8092
  //#define GL_EDGE_FLAG_ARRAY_POINTER        0x8093
  //#define GL_V2F                            0x2A20
  //#define GL_V3F                            0x2A21
  //#define GL_C4UB_V2F                       0x2A22
  //#define GL_C4UB_V3F                       0x2A23
  //#define GL_C3F_V3F                        0x2A24
  //#define GL_N3F_V3F                        0x2A25
  //#define GL_C4F_N3F_V3F                    0x2A26
  //#define GL_T2F_V3F                        0x2A27
  //#define GL_T4F_V4F                        0x2A28
  //#define GL_T2F_C4UB_V3F                   0x2A29
  //#define GL_T2F_C3F_V3F                    0x2A2A
  //#define GL_T2F_N3F_V3F                    0x2A2B
  //#define GL_T2F_C4F_N3F_V3F                0x2A2C
  //#define GL_T4F_C4F_N3F_V4F                0x2A2D
  //
  ///* Extensions */
  //#define GL_EXT_vertex_array               1
  //#define GL_EXT_bgra                       1
  //#define GL_EXT_paletted_texture           1
  //#define GL_WIN_swap_hint                  1
  //#define GL_WIN_draw_range_elements        1
  //// #define GL_WIN_phong_shading              1
  //// #define GL_WIN_specular_fog               1
  //
  ///* EXT_vertex_array */
  //#define GL_VERTEX_ARRAY_EXT               0x8074
  //#define GL_NORMAL_ARRAY_EXT               0x8075
  //#define GL_COLOR_ARRAY_EXT                0x8076
  //#define GL_INDEX_ARRAY_EXT                0x8077
  //#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078
  //#define GL_EDGE_FLAG_ARRAY_EXT            0x8079
  //#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A
  //#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B
  //#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C
  //#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D
  //#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E
  //#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F
  //#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080
  //#define GL_COLOR_ARRAY_SIZE_EXT           0x8081
  //#define GL_COLOR_ARRAY_TYPE_EXT           0x8082
  //#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083
  //#define GL_COLOR_ARRAY_COUNT_EXT          0x8084
  //#define GL_INDEX_ARRAY_TYPE_EXT           0x8085
  //#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086
  //#define GL_INDEX_ARRAY_COUNT_EXT          0x8087
  //#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088
  //#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089
  //#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A
  //#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B
  //#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C
  //#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D
  //#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E
  //#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F
  //#define GL_COLOR_ARRAY_POINTER_EXT        0x8090
  //#define GL_INDEX_ARRAY_POINTER_EXT        0x8091
  //#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092
  //#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093
  //#define GL_DOUBLE_EXT                     GL_DOUBLE
  //
  ///* EXT_bgra */
  //#define GL_BGR_EXT                        0x80E0
  #define GL_BGRA_EXT                       0x80E1
  //
  ///* Extensions */
  //#define GL_EXT_abgr                       1
  //#define GL_EXT_blend_color                1
  //#define GL_EXT_blend_minmax               1
  //#define GL_EXT_blend_subtract             1
  //
  ///* EXT_abgr */
  //#define GL_ABGR_EXT                       0x8000
  //
  ///* EXT_blend_color */
  #define GL_CONSTANT_COLOR_EXT             0x8001
  //#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002
  //#define GL_CONSTANT_ALPHA_EXT             0x8003
  //#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004
  #define GL_BLEND_COLOR_EXT                0x8005
  //
  ///* EXT_blend_minmax */
  #define GL_FUNC_ADD_EXT                   0x8006
  //#define GL_MIN_EXT                        0x8007
  //#define GL_MAX_EXT                        0x8008
  //#define GL_BLEND_EQUATION_EXT             0x8009
  //
  ///* EXT_blend_subtract */
  //#define GL_FUNC_SUBTRACT_EXT              0x800A
  //#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B
  //
  ///* EXT_paletted_texture */
  //
  ///* These must match the GL_COLOR_TABLE_*_SGI enumerants */
  //#define GL_COLOR_TABLE_FORMAT_EXT         0x80D8
  //#define GL_COLOR_TABLE_WIDTH_EXT          0x80D9
  //#define GL_COLOR_TABLE_RED_SIZE_EXT       0x80DA
  //#define GL_COLOR_TABLE_GREEN_SIZE_EXT     0x80DB
  //#define GL_COLOR_TABLE_BLUE_SIZE_EXT      0x80DC
  //#define GL_COLOR_TABLE_ALPHA_SIZE_EXT     0x80DD
  //#define GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 0x80DE
  //#define GL_COLOR_TABLE_INTENSITY_SIZE_EXT 0x80DF
  //
  //#define GL_COLOR_INDEX1_EXT               0x80E2
  //#define GL_COLOR_INDEX2_EXT               0x80E3
  //#define GL_COLOR_INDEX4_EXT               0x80E4
  #define GL_COLOR_INDEX8_EXT               0x80E5
  //#define GL_COLOR_INDEX12_EXT              0x80E6
  //#define GL_COLOR_INDEX16_EXT              0x80E7
  //
  ///* WIN_draw_range_elements */
  //#define GL_MAX_ELEMENTS_VERTICES_WIN      0x80E8
  //#define GL_MAX_ELEMENTS_INDICES_WIN       0x80E9
  //
  ///* WIN_phong_shading */
  //#define GL_PHONG_WIN                      0x80EA 
  //#define GL_PHONG_HINT_WIN                 0x80EB 
  //
  ///* WIN_specular_fog */
  //#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC
  //
  ///* For compatibility with OpenGL v1.0 */
  //#define GL_LOGIC_OP GL_INDEX_LOGIC_OP
  //#define GL_TEXTURE_COMPONENTS GL_TEXTURE_INTERNAL_FORMAT
  //
  //// Pi
  //#ifndef M_PI
  //#define M_PI 3.1415926f
  //#endif 
  //
  //#ifndef EGL_FALSE
  //#define EGL_FALSE                      0
  //#endif
  //
  //#ifndef EGL_TRUE
  //#define EGL_TRUE                       1
  //#endif
  //
  //#define EGL_DRAW                       0x3059
  //#define EGL_READ                       0x305A
  //
  //typedef void *	EGLDisplay;
  //typedef void *	EGLConfig;
  //typedef void *	EGLSurface;
  //typedef void *	EGLContext;
  //
  //typedef int				EGLBoolean;
  //typedef unsigned int	EGLint;
  //
  //
  //#define EGL_DEFAULT_DISPLAY ((NativeDisplayType)0)
  //#define EGL_NO_CONTEXT ((EGLContext)0)
  //#define EGL_NO_DISPLAY ((EGLDisplay)0)
  //#define EGL_NO_SURFACE ((EGLSurface)0)
  //
  //typedef void*		NativeDisplayType;
  //typedef void*		NativeWindowType;
  //typedef void*		NativePixmapType;
  
  #define GL_TEXTURE0_ARB                   0x84C0
  #define GL_TEXTURE1_ARB                   0x84C1
  #define GL_TEXTURE2_ARB                   0x84C2
  #define GL_TEXTURE3_ARB                   0x84C3
  //#define GL_TEXTURE4_ARB                   0x84C4
  //#define GL_TEXTURE5_ARB                   0x84C5
  //#define GL_TEXTURE6_ARB                   0x84C6
  //#define GL_TEXTURE7_ARB                   0x84C7
  //#define GL_TEXTURE8_ARB                   0x84C8
  //#define GL_TEXTURE9_ARB                   0x84C9
  //#define GL_TEXTURE10_ARB                  0x84CA
  //#define GL_TEXTURE11_ARB                  0x84CB
  //#define GL_TEXTURE12_ARB                  0x84CC
  //#define GL_TEXTURE13_ARB                  0x84CD
  //#define GL_TEXTURE14_ARB                  0x84CE
  //#define GL_TEXTURE15_ARB                  0x84CF
  //#define GL_TEXTURE16_ARB                  0x84D0
  //#define GL_TEXTURE17_ARB                  0x84D1
  //#define GL_TEXTURE18_ARB                  0x84D2
  //#define GL_TEXTURE19_ARB                  0x84D3
  //#define GL_TEXTURE20_ARB                  0x84D4
  //#define GL_TEXTURE21_ARB                  0x84D5
  //#define GL_TEXTURE22_ARB                  0x84D6
  //#define GL_TEXTURE23_ARB                  0x84D7
  //#define GL_TEXTURE24_ARB                  0x84D8
  //#define GL_TEXTURE25_ARB                  0x84D9
  //#define GL_TEXTURE26_ARB                  0x84DA
  //#define GL_TEXTURE27_ARB                  0x84DB
  //#define GL_TEXTURE28_ARB                  0x84DC
  //#define GL_TEXTURE29_ARB                  0x84DD
  //#define GL_TEXTURE30_ARB                  0x84DE
  //#define GL_TEXTURE31_ARB                  0x84DF
  //#define GL_ACTIVE_TEXTURE_ARB             0x84E0
  //#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1
  #define GL_MAX_TEXTURE_UNITS_ARB          0x84E2
  //
  //#define GL_COMPRESSED_ALPHA_ARB 0x84E9
  //#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA
  //#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB
  //#define GL_COMPRESSED_INTENSITY_ARB 0x84EC
  #define GL_COMPRESSED_RGB_ARB 0x84ED
  #define GL_COMPRESSED_RGBA_ARB 0x84EE
  #define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF
  //#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0
  //#define GL_TEXTURE_COMPRESSED_ARB 0x86A1
  //#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2
  //#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3
  #ifndef GL_UNSIGNED_SHORT_1_5_5_5_REV
  #define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366
  #endif
  //
  
  // ------------------------------------------------------------------------------------------------------
  //  Only function prototypes that were actually used in TGE are
  //    listed here
  // ------------------------------------------------------------------------------------------------------
  	
  	
  	// straightforward conversions
  #define glColor3f(r,g,b) glColor4f(r,g,b,1)
  #define GLdouble F64
  #define glOrtho( left, right, bottom, top, near, far ) glOrthof( left, right, bottom, top, near, far )
  #define glFrustum( left, right, bottom, top, near, far ) glFrustumf( left, right, bottom, top, near, far )
  #define glDepthRange( near, far ) glDepthRangef( near, far )
  
  // functions that need workarounds
  void glBegin( GLint );
  void glEnd();
  
  void glTexCoord2f( GLfloat, GLfloat );
  void glActiveTextureARB( GLint );
  void glMultiTexCoord2fARB( GLint, GLfloat, GLfloat);
  void glPushAttrib( GLint );
  void glPopAttrib();
  void glReadBuffer( GLint );
  void glVertex3f( GLfloat, GLfloat, GLfloat );
  void glVertex2f( GLfloat, GLfloat );
  void glVertex2i( GLint, GLint );
  void glClientActiveTextureARB( GLint );
  void glVertex3fv( const F32 * );
  void glVertex2fv( const F32 * );
  void glNormal3fv( const F32 * );
  void glColor3fv( const F32 * );
  void glColor4fv( const F32 * );
  void glColor3i( GLint, GLint, GLint );
  void glColor3ubv( const GLubyte *v );
  void glColor4ubv( const GLubyte *v );
  void glRecti( GLint, GLint, GLint, GLint );
  void glGetDoublev( GLint, GLdouble * );
  void glPolygonMode( GLint, GLint );
  void glLockArraysEXT( GLint, GLint );
  void glUnlockArraysEXT();
  void glColor3ub( GLint, GLint, GLint );
  void glFogi( GLint, GLint );
  
  // PUAP -Mat see comment in mm file
  //void glDrawBuffer( GLint );
  
  void glColorTableEXT( GLint, GLint, GLint, GLint, GLint, const ColorI * );
  void glBlendColorEXT( GLfloat, GLfloat, GLfloat, GLfloat );
  void glBlendEquationEXT( GLint );
  void glArrayElement( GLint );
  void glFogCoordPointerEXT(GLenum, GLsizei, void *);
  void glTexGeni( GLenum coord, GLenum pname, GLint param );
  void glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
  void glClipPlane( GLuint plane, GLdouble * equation );
  GLboolean glAreTexturesResident( GLsizei, const GLuint *, GLboolean*);
  
  void gluOrtho2D( GLfloat, GLfloat, GLfloat, GLfloat );
  GLint gluProject( GLdouble winx, GLdouble winy, GLdouble winz, const F64 *model, const F64 * proj, const GLint * vp, F64 * x, F64 * y, F64 * z );
  GLint gluUnProject( GLdouble winx, GLdouble winy, GLdouble winz, const F64 *model, const F64 * proj, const GLint * vp, F64 * x, F64 * y, F64 * z );
  
  
  #endif //_GL2ES_H_
  