* added core functions for OpenGLES 1.0, 2.0, 3.0 and 3.1
authorBergmann89 <info@bergmann89.de>
Fri, 5 Dec 2014 23:00:52 +0000 (00:00 +0100)
committerBergmann89 <info@bergmann89.de>
Fri, 5 Dec 2014 23:01:38 +0000 (00:01 +0100)
dglOpenGLES.pas

index f891f8d..ebbadca 100644 (file)
@@ -66,13 +66,15 @@ const
 
 {$ENDIF}
 
-{ ================================================== OpenGL Es ======================================================= }
+{ ================================================== OpenGL ES ======================================================= }
 type
-  { OpenGL ES 2.0 }
+  { Types }
   GLbyte      = Byte;
   GLclampf    = Single;
   GLfixed     = Integer;
+  GLclampx    = Integer;
   GLshort     = ShortInt;
+  GLubyte     = Byte;
   GLushort    = Word;
   GLvoid      = Pointer;
   GLint64     = Int64;
@@ -85,11 +87,14 @@ type
   GLboolean   = ByteBool;
   GLsizei     = Integer;
   GLfloat     = Single;
+  GLdouble    = Double;
 
+  { Pointers }
   PGLbyte     = ^GLbyte;
   PGLclampf   = ^GLclampf;
   PGLfixed    = ^GLfixed;
   PGLshort    = ^GLshort;
+  PGLubyte    = ^GLubyte;
   PGLushort   = ^GLushort;
   PGLvoid     = Pointer;
   PPGLvoid    = ^PGLvoid;
@@ -104,18 +109,44 @@ type
   PGLboolean  = ^GLboolean;
   PGLsizei    = ^GLsizei;
   PGLfloat    = ^GLfloat;
+  PGLdouble   = ^GLdouble;
 
-  { OpenGL ES 3.0 }
+  { Special }
   GLsync = Pointer;
 
+  { Cutsom }
+  TGLvectorub2 = array[0..1] of GLubyte;
+  TGLvectorub3 = array[0..2] of GLubyte;
+  TGLvectorub4 = array[0..3] of GLubyte;
+
+  TGLvectori2 = array[0..1] of GLint;
+  TGLvectori3 = array[0..2] of GLint;
+  TGLvectori4 = array[0..3] of GLint;
+
+  TGLvectorf2 = array[0..1] of GLfloat;
+  TGLvectorf3 = array[0..2] of GLfloat;
+  TGLvectorf4 = array[0..3] of GLfloat;
+
+  TGLvectord2 = array[0..1] of GLdouble;
+  TGLvectord3 = array[0..2] of GLdouble;
+  TGLvectord4 = array[0..3] of GLdouble;
+
+  TGLvectorp2 = array[0..1] of PGLvoid;
+  TGLvectorp3 = array[0..2] of PGLvoid;
+  TGLvectorp4 = array[0..3] of PGLvoid;
 
 const
-  { OpenGL ES 2.0 }
+{ ============================================== OpenGL ES 1.0 ======================================================= }
+{ ClearBufferMask }
   GL_DEPTH_BUFFER_BIT                               = $00000100;
   GL_STENCIL_BUFFER_BIT                             = $00000400;
   GL_COLOR_BUFFER_BIT                               = $00004000;
-  GL_FALSE                                          = $0000;
-  GL_TRUE                                           = $0001;
+
+{ Boolean }
+  GL_FALSE                                          = 0;
+  GL_TRUE                                           = 1;
+
+{ BeginMode }
   GL_POINTS                                         = $0000;
   GL_LINES                                          = $0001;
   GL_LINE_LOOP                                      = $0002;
@@ -123,94 +154,187 @@ const
   GL_TRIANGLES                                      = $0004;
   GL_TRIANGLE_STRIP                                 = $0005;
   GL_TRIANGLE_FAN                                   = $0006;
-  GL_ZERO                                           = $0000;
-  GL_ONE                                            = $0001;
+
+{ AlphaFunction }
+  GL_NEVER                                          = $0200;
+  GL_LESS                                           = $0201;
+  GL_EQUAL                                          = $0202;
+  GL_LEQUAL                                         = $0203;
+  GL_GREATER                                        = $0204;
+  GL_NOTEQUAL                                       = $0205;
+  GL_GEQUAL                                         = $0206;
+  GL_ALWAYS                                         = $0207;
+
+{ BlendingFactorDest }
+  GL_ZERO                                           = 0;
+  GL_ONE                                            = 1;
   GL_SRC_COLOR                                      = $0300;
   GL_ONE_MINUS_SRC_COLOR                            = $0301;
   GL_SRC_ALPHA                                      = $0302;
   GL_ONE_MINUS_SRC_ALPHA                            = $0303;
   GL_DST_ALPHA                                      = $0304;
   GL_ONE_MINUS_DST_ALPHA                            = $0305;
+
+{ BlendingFactorSrc }
+{ GL_ZERO }
+{ GL_ONE }
   GL_DST_COLOR                                      = $0306;
   GL_ONE_MINUS_DST_COLOR                            = $0307;
   GL_SRC_ALPHA_SATURATE                             = $0308;
-  GL_FUNC_ADD                                       = $8006;
-  GL_BLEND_EQUATION                                 = $8009;
-  GL_BLEND_EQUATION_RGB                             = $8009;
-  GL_BLEND_EQUATION_ALPHA                           = $883D;
-  GL_FUNC_SUBTRACT                                  = $800A;
-  GL_FUNC_REVERSE_SUBTRACT                          = $800B;
-  GL_BLEND_DST_RGB                                  = $80C8;
-  GL_BLEND_SRC_RGB                                  = $80C9;
-  GL_BLEND_DST_ALPHA                                = $80CA;
-  GL_BLEND_SRC_ALPHA                                = $80CB;
-  GL_CONSTANT_COLOR                                 = $8001;
-  GL_ONE_MINUS_CONSTANT_COLOR                       = $8002;
-  GL_CONSTANT_ALPHA                                 = $8003;
-  GL_ONE_MINUS_CONSTANT_ALPHA                       = $8004;
-  GL_BLEND_COLOR                                    = $8005;
-  GL_ARRAY_BUFFER                                   = $8892;
-  GL_ELEMENT_ARRAY_BUFFER                           = $8893;
-  GL_ARRAY_BUFFER_BINDING                           = $8894;
-  GL_ELEMENT_ARRAY_BUFFER_BINDING                   = $8895;
-  GL_STREAM_DRAW                                    = $88E0;
-  GL_STATIC_DRAW                                    = $88E4;
-  GL_DYNAMIC_DRAW                                   = $88E8;
-  GL_BUFFER_SIZE                                    = $8764;
-  GL_BUFFER_USAGE                                   = $8765;
-  GL_CURRENT_VERTEX_ATTRIB                          = $8626;
+{ GL_SRC_ALPHA }
+{ GL_ONE_MINUS_SRC_ALPHA }
+{ GL_DST_ALPHA }
+{ GL_ONE_MINUS_DST_ALPHA }
+
+{ ClipPlaneName }
+  GL_CLIP_PLANE0                                    = $3000;
+  GL_CLIP_PLANE1                                    = $3001;
+  GL_CLIP_PLANE2                                    = $3002;
+  GL_CLIP_PLANE3                                    = $3003;
+  GL_CLIP_PLANE4                                    = $3004;
+  GL_CLIP_PLANE5                                    = $3005;
+
+{ ColorMaterialFace }
+{ GL_FRONT_AND_BACK }
+
+{ ColorMaterialParameter }
+{ GL_AMBIENT_AND_DIFFUSE }
+
+{ ColorPointerType }
+{ GL_UNSIGNED_BYTE }
+{ GL_FLOAT }
+{ GL_FIXED }
+
+{ CullFaceMode }
   GL_FRONT                                          = $0404;
   GL_BACK                                           = $0405;
   GL_FRONT_AND_BACK                                 = $0408;
+
+{ DepthFunction }
+{ GL_NEVER }
+{ GL_LESS }
+{ GL_EQUAL }
+{ GL_LEQUAL }
+{ GL_GREATER }
+{ GL_NOTEQUAL }
+{ GL_GEQUAL }
+{ GL_ALWAYS }
+
+{ EnableCap }
+  GL_FOG                                            = $0B60;
+  GL_LIGHTING                                       = $0B50;
   GL_TEXTURE_2D                                     = $0DE1;
   GL_CULL_FACE                                      = $0B44;
+  GL_ALPHA_TEST                                     = $0BC0;
   GL_BLEND                                          = $0BE2;
+  GL_COLOR_LOGIC_OP                                 = $0BF2;
   GL_DITHER                                         = $0BD0;
   GL_STENCIL_TEST                                   = $0B90;
   GL_DEPTH_TEST                                     = $0B71;
+{ GL_LIGHT0 }
+{ GL_LIGHT1 }
+{ GL_LIGHT2 }
+{ GL_LIGHT3 }
+{ GL_LIGHT4 }
+{ GL_LIGHT5 }
+{ GL_LIGHT6 }
+{ GL_LIGHT7 }
+  GL_POINT_SMOOTH                                   = $0B10;
+  GL_LINE_SMOOTH                                    = $0B20;
   GL_SCISSOR_TEST                                   = $0C11;
+  GL_COLOR_MATERIAL                                 = $0B57;
+  GL_NORMALIZE                                      = $0BA1;
+  GL_RESCALE_NORMAL                                 = $803A;
   GL_POLYGON_OFFSET_FILL                            = $8037;
+  GL_VERTEX_ARRAY                                   = $8074;
+  GL_NORMAL_ARRAY                                   = $8075;
+  GL_COLOR_ARRAY                                    = $8076;
+  GL_TEXTURE_COORD_ARRAY                            = $8078;
+  GL_MULTISAMPLE                                    = $809D;
   GL_SAMPLE_ALPHA_TO_COVERAGE                       = $809E;
+  GL_SAMPLE_ALPHA_TO_ONE                            = $809F;
   GL_SAMPLE_COVERAGE                                = $80A0;
-  GL_NO_ERROR                                       = $0000;
+
+{ ErrorCode }
+  GL_NO_ERROR                                       = 0;
   GL_INVALID_ENUM                                   = $0500;
   GL_INVALID_VALUE                                  = $0501;
   GL_INVALID_OPERATION                              = $0502;
+  GL_STACK_OVERFLOW                                 = $0503;
+  GL_STACK_UNDERFLOW                                = $0504;
   GL_OUT_OF_MEMORY                                  = $0505;
+
+{ FogMode }
+{ GL_LINEAR }
+  GL_EXP                                            = $0800;
+  GL_EXP2                                           = $0801;
+
+{ FogParameter }
+  GL_FOG_DENSITY                                    = $0B62;
+  GL_FOG_START                                      = $0B63;
+  GL_FOG_END                                        = $0B64;
+  GL_FOG_MODE                                       = $0B65;
+  GL_FOG_COLOR                                      = $0B66;
+
+{ FrontFaceDirection }
   GL_CW                                             = $0900;
   GL_CCW                                            = $0901;
+
+{ GetPName }
+  GL_CURRENT_COLOR                                  = $0B00;
+  GL_CURRENT_NORMAL                                 = $0B02;
+  GL_CURRENT_TEXTURE_COORDS                         = $0B03;
+  GL_POINT_SIZE                                     = $0B11;
+  GL_POINT_SIZE_MIN                                 = $8126;
+  GL_POINT_SIZE_MAX                                 = $8127;
+  GL_POINT_FADE_THRESHOLD_SIZE                      = $8128;
+  GL_POINT_DISTANCE_ATTENUATION                     = $8129;
+  GL_SMOOTH_POINT_SIZE_RANGE                        = $0B12;
   GL_LINE_WIDTH                                     = $0B21;
+  GL_SMOOTH_LINE_WIDTH_RANGE                        = $0B22;
   GL_ALIASED_POINT_SIZE_RANGE                       = $846D;
   GL_ALIASED_LINE_WIDTH_RANGE                       = $846E;
   GL_CULL_FACE_MODE                                 = $0B45;
   GL_FRONT_FACE                                     = $0B46;
+  GL_SHADE_MODEL                                    = $0B54;
   GL_DEPTH_RANGE                                    = $0B70;
   GL_DEPTH_WRITEMASK                                = $0B72;
   GL_DEPTH_CLEAR_VALUE                              = $0B73;
   GL_DEPTH_FUNC                                     = $0B74;
   GL_STENCIL_CLEAR_VALUE                            = $0B91;
   GL_STENCIL_FUNC                                   = $0B92;
+  GL_STENCIL_VALUE_MASK                             = $0B93;
   GL_STENCIL_FAIL                                   = $0B94;
   GL_STENCIL_PASS_DEPTH_FAIL                        = $0B95;
   GL_STENCIL_PASS_DEPTH_PASS                        = $0B96;
   GL_STENCIL_REF                                    = $0B97;
-  GL_STENCIL_VALUE_MASK                             = $0B93;
   GL_STENCIL_WRITEMASK                              = $0B98;
-  GL_STENCIL_BACK_FUNC                              = $8800;
-  GL_STENCIL_BACK_FAIL                              = $8801;
-  GL_STENCIL_BACK_PASS_DEPTH_FAIL                   = $8802;
-  GL_STENCIL_BACK_PASS_DEPTH_PASS                   = $8803;
-  GL_STENCIL_BACK_REF                               = $8CA3;
-  GL_STENCIL_BACK_VALUE_MASK                        = $8CA4;
-  GL_STENCIL_BACK_WRITEMASK                         = $8CA5;
+  GL_MATRIX_MODE                                    = $0BA0;
   GL_VIEWPORT                                       = $0BA2;
+  GL_MODELVIEW_STACK_DEPTH                          = $0BA3;
+  GL_PROJECTION_STACK_DEPTH                         = $0BA4;
+  GL_TEXTURE_STACK_DEPTH                            = $0BA5;
+  GL_MODELVIEW_MATRIX                               = $0BA6;
+  GL_PROJECTION_MATRIX                              = $0BA7;
+  GL_TEXTURE_MATRIX                                 = $0BA8;
+  GL_ALPHA_TEST_FUNC                                = $0BC1;
+  GL_ALPHA_TEST_REF                                 = $0BC2;
+  GL_BLEND_DST                                      = $0BE0;
+  GL_BLEND_SRC                                      = $0BE1;
+  GL_LOGIC_OP_MODE                                  = $0BF0;
   GL_SCISSOR_BOX                                    = $0C10;
   GL_COLOR_CLEAR_VALUE                              = $0C22;
   GL_COLOR_WRITEMASK                                = $0C23;
   GL_UNPACK_ALIGNMENT                               = $0CF5;
   GL_PACK_ALIGNMENT                                 = $0D05;
+  GL_MAX_LIGHTS                                     = $0D31;
+  GL_MAX_CLIP_PLANES                                = $0D32;
   GL_MAX_TEXTURE_SIZE                               = $0D33;
+  GL_MAX_MODELVIEW_STACK_DEPTH                      = $0D36;
+  GL_MAX_PROJECTION_STACK_DEPTH                     = $0D38;
+  GL_MAX_TEXTURE_STACK_DEPTH                        = $0D39;
   GL_MAX_VIEWPORT_DIMS                              = $0D3A;
+  GL_MAX_TEXTURE_UNITS                              = $84E2;
   GL_SUBPIXEL_BITS                                  = $0D50;
   GL_RED_BITS                                       = $0D52;
   GL_GREEN_BITS                                     = $0D53;
@@ -221,92 +345,195 @@ const
   GL_POLYGON_OFFSET_UNITS                           = $2A00;
   GL_POLYGON_OFFSET_FACTOR                          = $8038;
   GL_TEXTURE_BINDING_2D                             = $8069;
+  GL_VERTEX_ARRAY_SIZE                              = $807A;
+  GL_VERTEX_ARRAY_TYPE                              = $807B;
+  GL_VERTEX_ARRAY_STRIDE                            = $807C;
+  GL_NORMAL_ARRAY_TYPE                              = $807E;
+  GL_NORMAL_ARRAY_STRIDE                            = $807F;
+  GL_COLOR_ARRAY_SIZE                               = $8081;
+  GL_COLOR_ARRAY_TYPE                               = $8082;
+  GL_COLOR_ARRAY_STRIDE                             = $8083;
+  GL_TEXTURE_COORD_ARRAY_SIZE                       = $8088;
+  GL_TEXTURE_COORD_ARRAY_TYPE                       = $8089;
+  GL_TEXTURE_COORD_ARRAY_STRIDE                     = $808A;
+  GL_VERTEX_ARRAY_POINTER                           = $808E;
+  GL_NORMAL_ARRAY_POINTER                           = $808F;
+  GL_COLOR_ARRAY_POINTER                            = $8090;
+  GL_TEXTURE_COORD_ARRAY_POINTER                    = $8092;
   GL_SAMPLE_BUFFERS                                 = $80A8;
   GL_SAMPLES                                        = $80A9;
   GL_SAMPLE_COVERAGE_VALUE                          = $80AA;
   GL_SAMPLE_COVERAGE_INVERT                         = $80AB;
+
+{ GetTextureParameter }
+{ GL_TEXTURE_MAG_FILTER }
+{ GL_TEXTURE_MIN_FILTER }
+{ GL_TEXTURE_WRAP_S }
+{ GL_TEXTURE_WRAP_T }
+
   GL_NUM_COMPRESSED_TEXTURE_FORMATS                 = $86A2;
   GL_COMPRESSED_TEXTURE_FORMATS                     = $86A3;
+
+{ HintMode }
   GL_DONT_CARE                                      = $1100;
   GL_FASTEST                                        = $1101;
   GL_NICEST                                         = $1102;
+
+{ HintTarget }
+  GL_PERSPECTIVE_CORRECTION_HINT                    = $0C50;
+  GL_POINT_SMOOTH_HINT                              = $0C51;
+  GL_LINE_SMOOTH_HINT                               = $0C52;
+  GL_FOG_HINT                                       = $0C54;
   GL_GENERATE_MIPMAP_HINT                           = $8192;
+
+{ LightModelParameter }
+  GL_LIGHT_MODEL_AMBIENT                            = $0B53;
+  GL_LIGHT_MODEL_TWO_SIDE                           = $0B52;
+
+{ LightParameter }
+  GL_AMBIENT                                        = $1200;
+  GL_DIFFUSE                                        = $1201;
+  GL_SPECULAR                                       = $1202;
+  GL_POSITION                                       = $1203;
+  GL_SPOT_DIRECTION                                 = $1204;
+  GL_SPOT_EXPONENT                                  = $1205;
+  GL_SPOT_CUTOFF                                    = $1206;
+  GL_CONSTANT_ATTENUATION                           = $1207;
+  GL_LINEAR_ATTENUATION                             = $1208;
+  GL_QUADRATIC_ATTENUATION                          = $1209;
+
+{ DataType }
   GL_BYTE                                           = $1400;
   GL_UNSIGNED_BYTE                                  = $1401;
   GL_SHORT                                          = $1402;
   GL_UNSIGNED_SHORT                                 = $1403;
-  GL_INT                                            = $1404;
-  GL_UNSIGNED_INT                                   = $1405;
   GL_FLOAT                                          = $1406;
   GL_FIXED                                          = $140C;
-  GL_DEPTH_COMPONENT                                = $1902;
+
+{ LogicOp }
+  GL_CLEAR                                          = $1500;
+  GL_AND                                            = $1501;
+  GL_AND_REVERSE                                    = $1502;
+  GL_COPY                                           = $1503;
+  GL_AND_INVERTED                                   = $1504;
+  GL_NOOP                                           = $1505;
+  GL_XOR                                            = $1506;
+  GL_OR                                             = $1507;
+  GL_NOR                                            = $1508;
+  GL_EQUIV                                          = $1509;
+  GL_INVERT                                         = $150A;
+  GL_OR_REVERSE                                     = $150B;
+  GL_COPY_INVERTED                                  = $150C;
+  GL_OR_INVERTED                                    = $150D;
+  GL_NAND                                           = $150E;
+  GL_SET                                            = $150F;
+
+{ MaterialFace }
+{ GL_FRONT_AND_BACK }
+
+{ MaterialParameter }
+  GL_EMISSION                                       = $1600;
+  GL_SHININESS                                      = $1601;
+  GL_AMBIENT_AND_DIFFUSE                            = $1602;
+{ GL_AMBIENT }
+{ GL_DIFFUSE }
+{ GL_SPECULAR }
+
+{ MatrixMode }
+  GL_MODELVIEW                                      = $1700;
+  GL_PROJECTION                                     = $1701;
+  GL_TEXTURE                                        = $1702;
+
+{ NormalPointerType }
+{ GL_BYTE }
+{ GL_SHORT }
+{ GL_FLOAT }
+{ GL_FIXED }
+
+{ PixelFormat }
   GL_ALPHA                                          = $1906;
   GL_RGB                                            = $1907;
   GL_RGBA                                           = $1908;
   GL_LUMINANCE                                      = $1909;
   GL_LUMINANCE_ALPHA                                = $190A;
+
+{ PixelType }
+{ GL_UNSIGNED_BYTE }
   GL_UNSIGNED_SHORT_4_4_4_4                         = $8033;
   GL_UNSIGNED_SHORT_5_5_5_1                         = $8034;
   GL_UNSIGNED_SHORT_5_6_5                           = $8363;
-  GL_FRAGMENT_SHADER                                = $8B30;
-  GL_VERTEX_SHADER                                  = $8B31;
-  GL_MAX_VERTEX_ATTRIBS                             = $8869;
-  GL_MAX_VERTEX_UNIFORM_VECTORS                     = $8DFB;
-  GL_MAX_VARYING_VECTORS                            = $8DFC;
-  GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS               = $8B4D;
-  GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS                 = $8B4C;
-  GL_MAX_TEXTURE_IMAGE_UNITS                        = $8872;
-  GL_MAX_FRAGMENT_UNIFORM_VECTORS                   = $8DFD;
-  GL_SHADER_TYPE                                    = $8B4F;
-  GL_DELETE_STATUS                                  = $8B80;
-  GL_LINK_STATUS                                    = $8B82;
-  GL_VALIDATE_STATUS                                = $8B83;
-  GL_ATTACHED_SHADERS                               = $8B85;
-  GL_ACTIVE_UNIFORMS                                = $8B86;
-  GL_ACTIVE_UNIFORM_MAX_LENGTH                      = $8B87;
-  GL_ACTIVE_ATTRIBUTES                              = $8B89;
-  GL_ACTIVE_ATTRIBUTE_MAX_LENGTH                    = $8B8A;
-  GL_SHADING_LANGUAGE_VERSION                       = $8B8C;
-  GL_CURRENT_PROGRAM                                = $8B8D;
-  GL_NEVER                                          = $0200;
-  GL_LESS                                           = $0201;
-  GL_EQUAL                                          = $0202;
-  GL_LEQUAL                                         = $0203;
-  GL_GREATER                                        = $0204;
-  GL_NOTEQUAL                                       = $0205;
-  GL_GEQUAL                                         = $0206;
-  GL_ALWAYS                                         = $0207;
+
+{ ShadingModel }
+  GL_FLAT                                           = $1D00;
+  GL_SMOOTH                                         = $1D01;
+
+{ StencilFunction }
+{ GL_NEVER }
+{ GL_LESS }
+{ GL_EQUAL }
+{ GL_LEQUAL }
+{ GL_GREATER }
+{ GL_NOTEQUAL }
+{ GL_GEQUAL }
+{ GL_ALWAYS }
+
+{ StencilOp }
+{ GL_ZERO }
   GL_KEEP                                           = $1E00;
   GL_REPLACE                                        = $1E01;
   GL_INCR                                           = $1E02;
   GL_DECR                                           = $1E03;
-  GL_INVERT                                         = $150A;
-  GL_INCR_WRAP                                      = $8507;
-  GL_DECR_WRAP                                      = $8508;
+{ GL_INVERT }
+
+{ StringName }
   GL_VENDOR                                         = $1F00;
   GL_RENDERER                                       = $1F01;
   GL_VERSION                                        = $1F02;
   GL_EXTENSIONS                                     = $1F03;
+
+{ TexCoordPointerType }
+{ GL_SHORT }
+{ GL_FLOAT }
+{ GL_FIXED }
+{ GL_BYTE }
+
+{ TextureEnvMode }
+  GL_MODULATE                                       = $2100;
+  GL_DECAL                                          = $2101;
+{ GL_BLEND }
+  GL_ADD                                            = $0104;
+{ GL_REPLACE }
+
+{ TextureEnvParameter }
+  GL_TEXTURE_ENV_MODE                               = $2200;
+  GL_TEXTURE_ENV_COLOR                              = $2201;
+
+{ TextureEnvTarget }
+  GL_TEXTURE_ENV                                    = $2300;
+
+{ TextureMagFilter }
   GL_NEAREST                                        = $2600;
   GL_LINEAR                                         = $2601;
+
+{ TextureMinFilter }
+{ GL_NEAREST }
+{ GL_LINEAR }
   GL_NEAREST_MIPMAP_NEAREST                         = $2700;
   GL_LINEAR_MIPMAP_NEAREST                          = $2701;
   GL_NEAREST_MIPMAP_LINEAR                          = $2702;
   GL_LINEAR_MIPMAP_LINEAR                           = $2703;
+
+{ TextureParameterName }
   GL_TEXTURE_MAG_FILTER                             = $2800;
   GL_TEXTURE_MIN_FILTER                             = $2801;
   GL_TEXTURE_WRAP_S                                 = $2802;
   GL_TEXTURE_WRAP_T                                 = $2803;
-  GL_TEXTURE                                        = $1702;
-  GL_TEXTURE_CUBE_MAP                               = $8513;
-  GL_TEXTURE_BINDING_CUBE_MAP                       = $8514;
-  GL_TEXTURE_CUBE_MAP_POSITIVE_X                    = $8515;
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_X                    = $8516;
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Y                    = $8517;
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                    = $8518;
-  GL_TEXTURE_CUBE_MAP_POSITIVE_Z                    = $8519;
-  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                    = $851A;
-  GL_MAX_CUBE_MAP_TEXTURE_SIZE                      = $851C;
+  GL_GENERATE_MIPMAP                                = $8191;
+
+{ TextureTarget }
+{ GL_TEXTURE_2D }
+
+{ TextureUnit }
   GL_TEXTURE0                                       = $84C0;
   GL_TEXTURE1                                       = $84C1;
   GL_TEXTURE2                                       = $84C2;
@@ -340,9 +567,158 @@ const
   GL_TEXTURE30                                      = $84DE;
   GL_TEXTURE31                                      = $84DF;
   GL_ACTIVE_TEXTURE                                 = $84E0;
+  GL_CLIENT_ACTIVE_TEXTURE                          = $84E1;
+
+{ TextureWrapMode }
   GL_REPEAT                                         = $2901;
   GL_CLAMP_TO_EDGE                                  = $812F;
+
+{ VertexPointerType }
+{ GL_SHORT }
+{ GL_FLOAT }
+{ GL_FIXED }
+{ GL_BYTE }
+
+{ LightName }
+  GL_LIGHT0                                         = $4000;
+  GL_LIGHT1                                         = $4001;
+  GL_LIGHT2                                         = $4002;
+  GL_LIGHT3                                         = $4003;
+  GL_LIGHT4                                         = $4004;
+  GL_LIGHT5                                         = $4005;
+  GL_LIGHT6                                         = $4006;
+  GL_LIGHT7                                         = $4007;
+
+{ Buffer Objects }
+  GL_ARRAY_BUFFER                                   = $8892;
+  GL_ELEMENT_ARRAY_BUFFER                           = $8893;
+
+  GL_ARRAY_BUFFER_BINDING                           = $8894;
+  GL_ELEMENT_ARRAY_BUFFER_BINDING                   = $8895;
+  GL_VERTEX_ARRAY_BUFFER_BINDING                    = $8896;
+  GL_NORMAL_ARRAY_BUFFER_BINDING                    = $8897;
+  GL_COLOR_ARRAY_BUFFER_BINDING                     = $8898;
+  GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING             = $889A;
+
+  GL_STATIC_DRAW                                    = $88E4;
+  GL_DYNAMIC_DRAW                                   = $88E8;
+
+  GL_BUFFER_SIZE                                    = $8764;
+  GL_BUFFER_USAGE                                   = $8765;
+
+{ Texture combine + dot3 }
+  GL_SUBTRACT                                       = $84E7;
+  GL_COMBINE                                        = $8570;
+  GL_COMBINE_RGB                                    = $8571;
+  GL_COMBINE_ALPHA                                  = $8572;
+  GL_RGB_SCALE                                      = $8573;
+  GL_ADD_SIGNED                                     = $8574;
+  GL_INTERPOLATE                                    = $8575;
+  GL_CONSTANT                                       = $8576;
+  GL_PRIMARY_COLOR                                  = $8577;
+  GL_PREVIOUS                                       = $8578;
+  GL_OPERAND0_RGB                                   = $8590;
+  GL_OPERAND1_RGB                                   = $8591;
+  GL_OPERAND2_RGB                                   = $8592;
+  GL_OPERAND0_ALPHA                                 = $8598;
+  GL_OPERAND1_ALPHA                                 = $8599;
+  GL_OPERAND2_ALPHA                                 = $859A;
+
+  GL_ALPHA_SCALE                                    = $0D1C;
+
+  GL_SRC0_RGB                                       = $8580;
+  GL_SRC1_RGB                                       = $8581;
+  GL_SRC2_RGB                                       = $8582;
+  GL_SRC0_ALPHA                                     = $8588;
+  GL_SRC1_ALPHA                                     = $8589;
+  GL_SRC2_ALPHA                                     = $858A;
+
+  GL_DOT3_RGB                                       = $86AE;
+  GL_DOT3_RGBA                                      = $86AF;
+
+{ ============================================== OpenGL ES 2.0 ======================================================= }
+{ BlendEquationSeparate }
+  GL_FUNC_ADD                                       = $8006;
+  GL_BLEND_EQUATION                                 = $8009;
+  GL_BLEND_EQUATION_RGB                             = $8009;    // same as BLEND_EQUATION
+  GL_BLEND_EQUATION_ALPHA                           = $883D;
+
+{ BlendSubtract }
+  GL_FUNC_SUBTRACT                                  = $800A;
+  GL_FUNC_REVERSE_SUBTRACT                          = $800B;
+
+{ Separate Blend Functions }
+  GL_BLEND_DST_RGB                                  = $80C8;
+  GL_BLEND_SRC_RGB                                  = $80C9;
+  GL_BLEND_DST_ALPHA                                = $80CA;
+  GL_BLEND_SRC_ALPHA                                = $80CB;
+  GL_CONSTANT_COLOR                                 = $8001;
+  GL_ONE_MINUS_CONSTANT_COLOR                       = $8002;
+  GL_CONSTANT_ALPHA                                 = $8003;
+  GL_ONE_MINUS_CONSTANT_ALPHA                       = $8004;
+  GL_BLEND_COLOR                                    = $8005;
+
+{ Buffer Objects }
+  GL_STREAM_DRAW                                    = $88E0;
+  GL_CURRENT_VERTEX_ATTRIB                          = $8626;
+
+{ GetPName }
+  GL_STENCIL_BACK_FUNC                              = $8800;
+  GL_STENCIL_BACK_FAIL                              = $8801;
+  GL_STENCIL_BACK_PASS_DEPTH_FAIL                   = $8802;
+  GL_STENCIL_BACK_PASS_DEPTH_PASS                   = $8803;
+  GL_STENCIL_BACK_REF                               = $8CA3;
+  GL_STENCIL_BACK_VALUE_MASK                        = $8CA4;
+  GL_STENCIL_BACK_WRITEMASK                         = $8CA5;
+
+{ DataType }
+  GL_INT                                            = $1404;
+  GL_UNSIGNED_INT                                   = $1405;
+
+{ PixelFormat }
+  GL_DEPTH_COMPONENT                                = $1902;
+
+{ Shaders }
+  GL_FRAGMENT_SHADER                                = $8B30;
+  GL_VERTEX_SHADER                                  = $8B31;
+  GL_MAX_VERTEX_ATTRIBS                             = $8869;
+  GL_MAX_VERTEX_UNIFORM_VECTORS                     = $8DFB;
+  GL_MAX_VARYING_VECTORS                            = $8DFC;
+  GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS               = $8B4D;
+  GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS                 = $8B4C;
+  GL_MAX_TEXTURE_IMAGE_UNITS                        = $8872;
+  GL_MAX_FRAGMENT_UNIFORM_VECTORS                   = $8DFD;
+  GL_SHADER_TYPE                                    = $8B4F;
+  GL_DELETE_STATUS                                  = $8B80;
+  GL_LINK_STATUS                                    = $8B82;
+  GL_VALIDATE_STATUS                                = $8B83;
+  GL_ATTACHED_SHADERS                               = $8B85;
+  GL_ACTIVE_UNIFORMS                                = $8B86;
+  GL_ACTIVE_UNIFORM_MAX_LENGTH                      = $8B87;
+  GL_ACTIVE_ATTRIBUTES                              = $8B89;
+  GL_ACTIVE_ATTRIBUTE_MAX_LENGTH                    = $8B8A;
+  GL_SHADING_LANGUAGE_VERSION                       = $8B8C;
+  GL_CURRENT_PROGRAM                                = $8B8D;
+
+{ StencilOp }
+  GL_INCR_WRAP                                      = $8507;
+  GL_DECR_WRAP                                      = $8508;
+
+{ TextureTarget }
+  GL_TEXTURE_CUBE_MAP                               = $8513;
+  GL_TEXTURE_BINDING_CUBE_MAP                       = $8514;
+  GL_TEXTURE_CUBE_MAP_POSITIVE_X                    = $8515;
+  GL_TEXTURE_CUBE_MAP_NEGATIVE_X                    = $8516;
+  GL_TEXTURE_CUBE_MAP_POSITIVE_Y                    = $8517;
+  GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                    = $8518;
+  GL_TEXTURE_CUBE_MAP_POSITIVE_Z                    = $8519;
+  GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                    = $851A;
+  GL_MAX_CUBE_MAP_TEXTURE_SIZE                      = $851C;
+
+{ TextureWrapMode }
   GL_MIRRORED_REPEAT                                = $8370;
+
+{ Uniform Types }
   GL_FLOAT_VEC2                                     = $8B50;
   GL_FLOAT_VEC3                                     = $8B51;
   GL_FLOAT_VEC4                                     = $8B52;
@@ -358,6 +734,8 @@ const
   GL_FLOAT_MAT4                                     = $8B5C;
   GL_SAMPLER_2D                                     = $8B5E;
   GL_SAMPLER_CUBE                                   = $8B60;
+
+{ Vertex Arrays }
   GL_VERTEX_ATTRIB_ARRAY_ENABLED                    = $8622;
   GL_VERTEX_ATTRIB_ARRAY_SIZE                       = $8623;
   GL_VERTEX_ATTRIB_ARRAY_STRIDE                     = $8624;
@@ -365,27 +743,40 @@ const
   GL_VERTEX_ATTRIB_ARRAY_NORMALIZED                 = $886A;
   GL_VERTEX_ATTRIB_ARRAY_POINTER                    = $8645;
   GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING             = $889F;
+
+{ Read Format }
   GL_IMPLEMENTATION_COLOR_READ_TYPE                 = $8B9A;
   GL_IMPLEMENTATION_COLOR_READ_FORMAT               = $8B9B;
+
+{ Shader Source }
   GL_COMPILE_STATUS                                 = $8B81;
   GL_INFO_LOG_LENGTH                                = $8B84;
   GL_SHADER_SOURCE_LENGTH                           = $8B88;
   GL_SHADER_COMPILER                                = $8DFA;
+
+{ Shader Binary }
   GL_SHADER_BINARY_FORMATS                          = $8DF8;
   GL_NUM_SHADER_BINARY_FORMATS                      = $8DF9;
+
+{ Shader Precision-Specified Types }
   GL_LOW_FLOAT                                      = $8DF0;
   GL_MEDIUM_FLOAT                                   = $8DF1;
   GL_HIGH_FLOAT                                     = $8DF2;
   GL_LOW_INT                                        = $8DF3;
   GL_MEDIUM_INT                                     = $8DF4;
   GL_HIGH_INT                                       = $8DF5;
+
+{ Framebuffer Object. }
   GL_FRAMEBUFFER                                    = $8D40;
   GL_RENDERBUFFER                                   = $8D41;
+
   GL_RGBA4                                          = $8056;
   GL_RGB5_A1                                        = $8057;
   GL_RGB565                                         = $8D62;
   GL_DEPTH_COMPONENT16                              = $81A5;
+  GL_STENCIL_INDEX                                  = $1901;
   GL_STENCIL_INDEX8                                 = $8D48;
+
   GL_RENDERBUFFER_WIDTH                             = $8D42;
   GL_RENDERBUFFER_HEIGHT                            = $8D43;
   GL_RENDERBUFFER_INTERNAL_FORMAT                   = $8D44;
@@ -395,25 +786,31 @@ const
   GL_RENDERBUFFER_ALPHA_SIZE                        = $8D53;
   GL_RENDERBUFFER_DEPTH_SIZE                        = $8D54;
   GL_RENDERBUFFER_STENCIL_SIZE                      = $8D55;
+
   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE             = $8CD0;
   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME             = $8CD1;
   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL           = $8CD2;
   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE   = $8CD3;
+
   GL_COLOR_ATTACHMENT0                              = $8CE0;
   GL_DEPTH_ATTACHMENT                               = $8D00;
   GL_STENCIL_ATTACHMENT                             = $8D20;
-  GL_NONE                                           = $0000;
+
+  GL_NONE                                           = 0;
+
   GL_FRAMEBUFFER_COMPLETE                           = $8CD5;
   GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT              = $8CD6;
   GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT      = $8CD7;
   GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS              = $8CD9;
   GL_FRAMEBUFFER_UNSUPPORTED                        = $8CDD;
+
   GL_FRAMEBUFFER_BINDING                            = $8CA6;
   GL_RENDERBUFFER_BINDING                           = $8CA7;
   GL_MAX_RENDERBUFFER_SIZE                          = $84E8;
+
   GL_INVALID_FRAMEBUFFER_OPERATION                  = $0506;
 
-  { OpenGL ES 3.0 }
+{ ============================================== OpenGL ES 3.0 ======================================================= }
   GL_READ_BUFFER                                    = $0C02;
   GL_UNPACK_ROW_LENGTH                              = $0CF2;
   GL_UNPACK_SKIP_ROWS                               = $0CF3;
@@ -720,7 +1117,7 @@ const
   GL_NUM_SAMPLE_COUNTS                              = $9380;
   GL_TEXTURE_IMMUTABLE_LEVELS                       = $82DF;
 
-  { OpenGL ES 3.1 }
+{ ============================================== OpenGL ES 3.1 ======================================================= }
   GL_COMPUTE_SHADER                                 = $91B9;
   GL_MAX_COMPUTE_UNIFORM_BLOCKS                     = $91BB;
   GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS                = $91BC;
@@ -851,7 +1248,6 @@ const
   GL_SHADER_STORAGE_BARRIER_BIT                     = $00002000;
   GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES           = $8F39;
   GL_DEPTH_STENCIL_TEXTURE_MODE                     = $90EA;
-  GL_STENCIL_INDEX                                  = $1901;
   GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET              = $8E5E;
   GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET              = $8E5F;
   GL_SAMPLE_POSITION                                = $8E50;
@@ -895,396 +1291,598 @@ const
   GL_MAX_VERTEX_ATTRIB_BINDINGS                     = $82DA;
   GL_MAX_VERTEX_ATTRIB_STRIDE                       = $82E5;
 
-
 type
-  { OpenGL Es 2.0 }
-  TglActiveTexture                        = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglAttachShader                         = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindAttribLocation                   = procedure(aProgram: GLuint; aIndex: GLuint; const aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindBuffer                           = procedure(aTarget: GLenum; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindFramebuffer                      = procedure(aTarget: GLenum; aFramebuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindRenderbuffer                     = procedure(aTarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindTexture                          = procedure(aTarget: GLenum; aTexture: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBlendColor                           = procedure(aRed: GLfloat; aGreen: GLfloat; aBlue: GLfloat; aAlpha: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBlendEquation                        = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBlendEquationSeparate                = procedure(aModeRGB: GLenum; aModeAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBlendFunc                            = procedure(aSFactor: GLenum; aDFactor: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBlendFuncSeparate                    = procedure(aSFactorRGB: GLenum; aDFactorRGB: GLenum; aSFactorAlpha: GLenum; aDFactorAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBufferData                           = procedure(aTarget: GLenum; aSize: PGLsizei; const aData: PGLvoid; aUsage: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBufferSubData                        = procedure(aTarget: GLenum; aOffset: PGLint; aSize: PGLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCheckFramebufferStatus               = function(aTarget: GLenum): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClear                                = procedure(aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearColor                           = procedure(aRed: GLfloat; aGreen: GLfloat; aBlue: GLfloat; aAlpha: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearDepthf                          = procedure(d: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearStencil                         = procedure(s: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglColorMask                            = procedure(aRed: GLboolean; aGreen: GLboolean; aBlue: GLboolean; aAlpha: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCompileShader                        = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCompressedTexImage2D                 = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aBorder: GLint; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCompressedTexSubImage2D              = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCopyTexImage2D                       = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei; aBorder: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCopyTexSubImage2D                    = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCreateProgram                        = function: GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCreateShader                         = function(aType: GLenum): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCullFace                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteBuffers                        = procedure(n: GLsizei; const aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteFramebuffers                   = procedure(n: GLsizei; const aFrameBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteProgram                        = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteRenderbuffers                  = procedure(n: GLsizei; const aRenderBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteShader                         = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteTextures                       = procedure(n: GLsizei; const aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDepthFunc                            = procedure(aFunc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDepthMask                            = procedure(aFlag: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDepthRangef                          = procedure(n: GLfloat; aF: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDetachShader                         = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDisable                              = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDisableVertexAttribArray             = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawArrays                           = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawElements                         = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglEnable                               = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglEnableVertexAttribArray              = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFinish                               = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFlush                                = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFramebufferRenderbuffer              = procedure(aTarget: GLenum; aAttachment: GLenum; aRenderbuffertarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFramebufferTexture2D                 = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFrontFace                            = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenBuffers                           = procedure(n: GLsizei; aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenerateMipmap                       = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenFramebuffers                      = procedure(n: GLsizei; aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenRenderbuffers                     = procedure(n: GLsizei; aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenTextures                          = procedure(n: GLsizei; aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetActiveAttrib                      = procedure(aProgram: GLuint; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetActiveUniform                     = procedure(aProgram: GLuint; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetAttachedShaders                   = procedure(aProgram: GLuint; aMaxCount: GLsizei; aCount: PGLsizei; aShaders: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetAttribLocation                    = function(aProgram: GLuint; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetBooleanv                          = procedure(aPname: GLenum; aData: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetBufferParameteriv                 = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetError                             = function: GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetFloatv                            = procedure(aPname: GLenum; aData: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetFramebufferAttachmentParameteriv  = procedure(aTarget: GLenum; aAttachment: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetIntegerv                          = procedure(aPname: GLenum; aData: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramiv                         = procedure(aProgram: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramInfoLog                    = procedure(aProgram: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetRenderbufferParameteriv           = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetShaderiv                          = procedure(aShader: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetShaderInfoLog                     = procedure(aShader: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetShaderPrecisionFormat             = procedure(aShadertype: GLenum; aPrecisiontype: GLenum; aRange: PGLint; aPrecision: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetShaderSource                      = procedure(aShader: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSource: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetString                            = function(aName: GLenum): PAnsiChar; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetTexParameterfv                    = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetTexParameteriv                    = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetUniformfv                         = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetUniformiv                         = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetUniformLocation                   = function(aProgram: GLuint; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetVertexAttribfv                    = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetVertexAttribiv                    = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetVertexAttribPointerv              = procedure(aIndex: GLuint; aPname: GLenum; aPointer: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglHint                                 = procedure(aTarget: GLenum; aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsBuffer                             = function(aBuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsEnabled                            = function(aCap: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsFramebuffer                        = function(aFramebuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsProgram                            = function(aProgram: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsRenderbuffer                       = function(aRenderbuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsShader                             = function(aShader: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsTexture                            = function(aTexture: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglLineWidth                            = procedure(aWidth: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglLinkProgram                          = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglPixelStorei                          = procedure(aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglPolygonOffset                        = procedure(aFactor: GLfloat; aUnits: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglReadPixels                           = procedure(aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglReleaseShaderCompiler                = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglRenderbufferStorage                  = procedure(aTarget: GLenum; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglSampleCoverage                       = procedure(aValue: GLfloat; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglScissor                              = procedure(aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglShaderBinary                         = procedure(aCount: GLsizei; const aShaders: PGLuint; aBinaryformat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglShaderSource                         = procedure(aShader: GLuint; aCount: GLsizei; const aString: PPGLchar; const aLength: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglStencilFunc                          = procedure(aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglStencilFuncSeparate                  = procedure(aFace: GLenum; aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglStencilMask                          = procedure(aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglStencilMaskSeparate                  = procedure(aFace: GLenum; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglStencilOp                            = procedure(aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglStencilOpSeparate                    = procedure(aFace: GLenum; aSfail: GLenum; aDpfail: GLenum; aDppass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexImage2D                           = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLint; aWidth: GLsizei; aHeight: GLsizei; aBorder: GLint; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexParameterf                        = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexParameterfv                       = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexParameteri                        = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexParameteriv                       = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexSubImage2D                        = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform1f                            = procedure(aLocation: GLint; aV0: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform1fv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform1i                            = procedure(aLocation: GLint; aV0: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform1iv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform2f                            = procedure(aLocation: GLint; aV0: GLfloat; aV1: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform2fv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform2i                            = procedure(aLocation: GLint; aV0: GLint; aV1: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform2iv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform3f                            = procedure(aLocation: GLint; aV0: GLfloat; aV1: GLfloat; aV2: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform3fv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform3i                            = procedure(aLocation: GLint; aV0: GLint; aV1: GLint; aV2: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform3iv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform4f                            = procedure(aLocation: GLint; aV0: GLfloat; aV1: GLfloat; aV2: GLfloat; aV3: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform4fv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform4i                            = procedure(aLocation: GLint; aV0: GLint; aV1: GLint; aV2: GLint; aV3: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform4iv                           = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUseProgram                           = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglValidateProgram                      = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib1f                       = procedure(aIndex: GLuint; aX: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib1fv                      = procedure(aIndex: GLuint; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib2f                       = procedure(aIndex: GLuint; aX: GLfloat; aY: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib2fv                      = procedure(aIndex: GLuint; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib3f                       = procedure(aIndex: GLuint; aX: GLfloat; aY: GLfloat; aZ: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib3fv                      = procedure(aIndex: GLuint; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib4f                       = procedure(aIndex: GLuint; aX: GLfloat; aY: GLfloat; aZ: GLfloat; aW: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttrib4fv                      = procedure(aIndex: GLuint; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribPointer                  = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglViewport                             = procedure(aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-  { OpenGL ES 3.0 }
-  TglReadBuffer                           = procedure(aSrc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawRangeElements                    = procedure(aMode: GLenum; aStart: GLuint; aEnd: GLuint; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexImage3D                           = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aBorder: GLint; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexSubImage3D                        = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCopyTexSubImage3D                    = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCompressedTexImage3D                 = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aBorder: GLint; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCompressedTexSubImage3D              = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenQueries                           = procedure(n: GLsizei; aIDs: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteQueries                        = procedure(n: GLsizei; const aIDs: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsQuery                              = function(aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBeginQuery                           = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglEndQuery                             = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetQueryiv                           = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetQueryObjectuiv                    = procedure(aId: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUnmapBuffer                          = function(aTarget: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetBufferPointerv                    = procedure(aTarget: GLenum; aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawBuffers                          = procedure(n: GLsizei; const aBufs: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix2x3fv                   = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix3x2fv                   = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix2x4fv                   = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix4x2fv                   = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix3x4fv                   = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformMatrix4x3fv                   = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBlitFramebuffer                      = procedure(aSrcX0: GLint; aSrcY0: GLint; aSrcX1: GLint; aSrcY1: GLint; aDstX0: GLint; aDstY0: GLint; aDstX1: GLint; aDstY1: GLint; aMask: GLbitfield; aFilter: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglRenderbufferStorageMultisample       = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFramebufferTextureLayer              = procedure(aTarget: GLenum; aAttachment: GLenum; aTexture: GLuint; aLevel: GLint; aLayer: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglMapBufferRange                       = function(aTarget: GLenum; aOffset: PGLint; aLength: PGLsizei; aAccess: GLbitfield): PGLvoid; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFlushMappedBufferRange               = procedure(aTarget: GLenum; aOffset: PGLint; aLength: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindVertexArray                      = procedure(aArray: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteVertexArrays                   = procedure(n: GLsizei; const aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenVertexArrays                      = procedure(n: GLsizei; aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsVertexArray                        = function(aArray: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetIntegeri_v                        = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBeginTransformFeedback               = procedure(aPrimitiveMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglEndTransformFeedback                 = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindBufferRange                      = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint; aOffset: PGLint; aSize: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindBufferBase                       = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTransformFeedbackVaryings            = procedure(aProgram: GLuint; aCount: GLsizei; const aVaryings: PPGLchar; aBufferMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetTransformFeedbackVarying          = procedure(aProgram: GLuint; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSize: PGLsizei; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribIPointer                 = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetVertexAttribIiv                   = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetVertexAttribIuiv                  = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribI4i                      = procedure(aIndex: GLuint; aX: GLint; aY: GLint; aZ: GLint; aW: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribI4ui                     = procedure(aIndex: GLuint; aX: GLuint; aY: GLuint; aZ: GLuint; aW: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribI4iv                     = procedure(aIndex: GLuint; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribI4uiv                    = procedure(aIndex: GLuint; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetUniformuiv                        = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetFragDataLocation                  = function(aProgram: GLuint; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform1ui                           = procedure(aLocation: GLint; aV0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform2ui                           = procedure(aLocation: GLint; aV0: GLuint; aV1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform3ui                           = procedure(aLocation: GLint; aV0: GLuint; aV1: GLuint; aV2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform4ui                           = procedure(aLocation: GLint; aV0: GLuint; aV1: GLuint; aV2: GLuint; aV3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform1uiv                          = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform2uiv                          = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform3uiv                          = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniform4uiv                          = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearBufferiv                        = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearBufferuiv                       = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearBufferfv                        = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClearBufferfi                        = procedure(aBuffer: GLenum; aDrawbuffer: GLint; aDepth: GLfloat; aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetStringi                           = function(aName: GLenum; aIndex: GLuint): PGLchar; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCopyBufferSubData                    = procedure(aReadTarget: GLenum; aWriteTarget: GLenum; aReadOffset: PGLint; aWriteOffset: PGLint; aSize: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetUniformIndices                    = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformNames: PPGLchar; aUniformIndices: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetActiveUniformsiv                  = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformIndices: PGLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetUniformBlockIndex                 = function(aProgram: GLuint; const aUniformBlockName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetActiveUniformBlockiv              = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetActiveUniformBlockName            = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aUniformBlockName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUniformBlockBinding                  = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aUniformBlockBinding: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawArraysInstanced                  = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawElementsInstanced                = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid; aInstanceCount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFenceSync                            = function(aCondition: GLenum; aFlags: GLbitfield): GLsync; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsSync                               = function(aSync: GLsync): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteSync                           = procedure(aSync: GLsync); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglClientWaitSync                       = function(aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglWaitSync                             = procedure(aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetInteger64v                        = procedure(aPname: GLenum; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetSynciv                            = procedure(aSync: GLsync; aPname: GLenum; aBufSize: GLsizei; aLength: PGLsizei; aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetInteger64i_v                      = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetBufferParameteri64v               = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenSamplers                          = procedure(aCount: GLsizei; aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteSamplers                       = procedure(aCount: GLsizei; const aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsSampler                            = function(aSampler: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindSampler                          = procedure(aUnit: GLuint; aSampler: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglSamplerParameteri                    = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglSamplerParameteriv                   = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglSamplerParameterf                    = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglSamplerParameterfv                   = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetSamplerParameteriv                = procedure(aSampler: GLuint; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetSamplerParameterfv                = procedure(aSampler: GLuint; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribDivisor                  = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindTransformFeedback                = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteTransformFeedbacks             = procedure(n: GLsizei; const aIDs: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenTransformFeedbacks                = procedure(n: GLsizei; const aIDs: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsTransformFeedback                  = function(aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglPauseTransformFeedback               = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglResumeTransformFeedback              = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramBinary                     = procedure(aProgram: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aBinaryFormat: PGLenum; aBinary: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramBinary                        = procedure(aProgram: GLuint; aBinaryFormat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramParameteri                    = procedure(aProgram: GLuint; aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglInvalidateFramebuffer                = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglInvalidateSubFramebuffer             = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum; aX: GLint; aY: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexStorage2D                         = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexStorage3D                         = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetInternalformativ                  = procedure(aTarget: GLenum; aInternalformat: GLenum; aPname: GLenum; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-  { OpenGL ES 3.1 }
-  TglDispatchCompute                      = procedure(aNumGroupsX: GLuint; aNumGroupsY: GLuint; aNumGroupsZ: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDispatchComputeIndirect              = procedure(aIndirect: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawArraysIndirect                   = procedure(aMode: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDrawElementsIndirect                 = procedure(aMode: GLenum; aType: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglFramebufferParameteri                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetFramebufferParameteriv            = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramInterfaceiv                = procedure(aProgram: GLuint; aProgramInterface: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramResourceIndex              = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramResourceName               = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramResourceiv                 = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aPropCount: GLsizei; const aProps: PGLenum; aBufSize: GLsizei; aLength: PGLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramResourceLocation           = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglUseProgramStages                     = procedure(aPipeline: GLuint; aStages: GLbitfield; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglActiveShaderProgram                  = procedure(aPipeline: GLuint; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglCreateShaderProgramv                 = function (aType: GLenum; aCount: GLsizei; const aStrings: PPGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindProgramPipeline                  = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglDeleteProgramPipelines               = procedure(aN: GLsizei; const aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGenProgramPipelines                  = procedure(aN: GLsizei; aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglIsProgramPipeline                    = function (aPipeline: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramPipelineiv                 = procedure(aPipeline: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform1i                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform2i                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint; aV1: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform3i                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint; aV1: GLint; aV2: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform4i                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint; aV1: GLint; aV2: GLint; aV3: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform1ui                    = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform2ui                    = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint; aV1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform3ui                    = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint; aV1: GLuint; aV2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform4ui                    = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint; aV1: GLuint; aV2: GLuint; aV3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform1f                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform2f                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat; aV1: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform3f                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat; aV1: GLfloat; aV2: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform4f                     = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat; aV1: GLfloat; aV2: GLfloat; aV3: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform1iv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform2iv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform3iv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform4iv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform1uiv                   = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform2uiv                   = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform3uiv                   = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform4uiv                   = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform1fv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform2fv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform3fv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniform4fv                    = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix2x3fv            = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix3x2fv            = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix2x4fv            = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix4x2fv            = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix3x4fv            = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglProgramUniformMatrix4x3fv            = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglValidateProgramPipeline              = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetProgramPipelineInfoLog            = procedure(aPipeline: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindImageTexture                     = procedure(aUnit: GLuint; aTexture: GLuint; aLevel: GLint; aLayered: GLboolean; aLayer: GLint; aAccess: GLenum; aFormat: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetBooleaniV                         = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglMemoryBarrier                        = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglMemoryBarrierByRegion                = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglTexStorage2DMultisample              = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aFixedsamplelocations: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetMultisamplefv                     = procedure(aPname: GLenum; aIndex: GLuint; aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglSampleMaski                          = procedure(aMaskNumber: GLuint; aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetTexLevelParameteriv               = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglGetTexLevelParameterfv               = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglBindVertexBuffer                     = procedure(aBindingindex: GLuint; aBuffer: GLuint; aOffset: PGLint; aStride: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribFormat                   = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribIFormat                  = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexAttribBinding                  = procedure(aAttribindex: GLuint; aBindingindex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TglVertexBindingDivisor                 = procedure(aBindingindex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-
+{ ============================================== OpenGL ES 1.0 ======================================================= }
+{ Available only in Common profile }
+  TglAlphaFunc                              = procedure(aFunc: GLenum; aRef: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearColor                             = procedure(aRed: GLclampf; aGreen: GLclampf; aBlue: GLclampf; aAlpha: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearDepthf                            = procedure(aDepth: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClipPlanef                             = procedure(aPlane: GLenum; const aEquation: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglColor4f                                = procedure(aRed: GLfloat; aGreen: GLfloat; aBlue: GLfloat; aAlpha: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDepthRangef                            = procedure(aZNear: GLclampf; aZFar: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFogf                                   = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFogfv                                  = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFrustumf                               = procedure(aLeft: GLfloat; aRight: GLfloat; aBottom: GLfloat; aTop: GLfloat; aZNear: GLfloat; aZFar: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetClipPlanef                          = procedure(aPname: GLenum; aEquation: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetFloatv                              = procedure(aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetLightfv                             = procedure(aLight: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetMaterialfv                          = procedure(aFace: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexEnvfv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexParameterfv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightModelf                            = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightModelfv                           = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightf                                 = procedure(aLight: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightfv                                = procedure(aLight: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLineWidth                              = procedure(aWidth: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLoadMatrixf                            = procedure(const aMatrix: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMaterialf                              = procedure(aFace: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMaterialfv                             = procedure(aFace: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMultMatrixf                            = procedure(const aMatrix: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMultiTexCoord4f                        = procedure(aTarget: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglNormal3f                               = procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglOrthof                                 = procedure(aLeft: GLfloat; aRight: GLfloat; aBottom: GLfloat; aTop: GLfloat; aZNear: GLfloat; aZFar: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPointParameterf                        = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPointParameterfv                       = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPointSize                              = procedure(aSize: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPolygonOffset                          = procedure(aFactor: GLfloat; aUnits: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglRotatef                                = procedure(aAngle: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglScalef                                 = procedure(x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexEnvf                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexEnvfv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexParameterf                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexParameterfv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTranslatef                             = procedure(x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+
+{ Available in both Common and Common-Lite profiles }
+  TglActiveTexture                          = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglAlphaFuncx                             = procedure(aFunc: GLenum; aRef: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindBuffer                             = procedure(aTarget: GLenum; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindTexture                            = procedure(aTarget: GLenum; aTexture: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBlendFunc                              = procedure(aSfactor: GLenum; aDfactor: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBufferData                             = procedure(aTarget: GLenum; aSize: PGLsizei; const aData: PGLvoid; aUsage: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBufferSubData                          = procedure(aTarget: GLenum; aOffset: PGLint; aSize: PGLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClear                                  = procedure(aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearColorx                            = procedure(aRed: GLclampx; aGreen: GLclampx; aBlue: GLclampx; aAlpha: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearDepthx                            = procedure(aDepth: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearStencil                           = procedure(aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClientActiveTexture                    = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClipPlanex                             = procedure(aPlane: GLenum; const aEquation: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglColor4ub                               = procedure(aRed: GLubyte; aGreen: GLubyte; aBlue: GLubyte; aAlpha: GLubyte); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglColor4x                                = procedure(aRed: GLfixed; aGreen: GLfixed; aBlue: GLfixed; aAlpha: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglColorMask                              = procedure(aRed: GLboolean; aGreen: GLboolean; aBlue: GLboolean; aAlpha: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglColorPointer                           = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCompressedTexImage2D                   = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aBorder: GLint; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCompressedTexSubImage2D                = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCopyTexImage2D                         = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei; aBorder: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCopyTexSubImage2D                      = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCullFace                               = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteBuffers                          = procedure(n: GLsizei; const aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteTextures                         = procedure(n: GLsizei; const aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDepthFunc                              = procedure(aFunc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDepthMask                              = procedure(aFlag: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDepthRangex                            = procedure(aZNear: GLclampx; aZFar: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDisable                                = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDisableClientState                     = procedure(aArray: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawArrays                             = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawElements                           = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglEnable                                 = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglEnableClientState                      = procedure(aArray: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFinish                                 = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFlush                                  = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFogx                                   = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFogxv                                  = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFrontFace                              = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFrustumx                               = procedure(aLeft: GLfixed; aRight: GLfixed; aBottom: GLfixed; aTop: GLfixed; aZNear: GLfixed; aZFar: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetBooleanv                            = procedure(aPname: GLenum; aParams: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetBufferParameteriv                   = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetClipPlanex                          = procedure(aPname: GLenum; aEquation: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenBuffers                             = procedure(n: GLsizei; aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenTextures                            = procedure(n: GLsizei; aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetError                               = function (): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetFixedv                              = procedure(aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetIntegerv                            = procedure(aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetLightxv                             = procedure(aLight: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetMaterialxv                          = procedure(aFace: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetPointerv                            = procedure(aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetString                              = function (name: GLenum): PGLubyte; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexEnviv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexEnvxv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexParameteriv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexParameterxv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglHint                                   = procedure(aTarget: GLenum; aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsBuffer                               = function (aBuffer: GLuint): GLboolean;                                                {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsEnabled                              = function (aCap: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsTexture                              = function (aTexture: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightModelx                            = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightModelxv                           = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightx                                 = procedure(aLight: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLightxv                                = procedure(aLight: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLineWidthx                             = procedure(aWidth: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLoadIdentity                           = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLoadMatrix                             = procedure(const aMatrix: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLogicOp                                = procedure(aOpcode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMaterialx                              = procedure(aFace: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMaterialxv                             = procedure(aFace: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMatrixMode                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMultMatrixx                            = procedure(const aMatrix: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMultiTexCoord4x                        = procedure(aTarget: GLenum; s: GLfixed; t: GLfixed; r: GLfixed; q: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglNormal3x                               = procedure(nx: GLfixed; ny: GLfixed; nz: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglNormalPointer                          = procedure(aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglOrthox                                 = procedure(aLeft: GLfixed; aRight: GLfixed; aBottom: GLfixed; aTop: GLfixed; aZNear: GLfixed; aZFar: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPixelStorei                            = procedure(aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPointParameterx                        = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPointParameterxv                       = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPointSizex                             = procedure(aSize: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPolygonOffsetx                         = procedure(aFactor: GLfixed; aUnits: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPopMatrix                              = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPushMatrix                             = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglReadPixels                             = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglRotatex                                = procedure(aAngle: GLfixed; x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSampleCoverage                         = procedure(aValue: GLclampf; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSampleCoveragex                        = procedure(aValue: GLclampx; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglScalex                                 = procedure(x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglScissor                                = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglShadeModel                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglStencilFunc                            = procedure(aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglStencilMask                            = procedure(aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglStencilOp                              = procedure(aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexCoordPointer                        = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexEnvi                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexEnvx                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexEnviv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexEnvxv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexImage2D                             = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLint; aWidth: GLsizei; aHeight: GLsizei; aBorder: GLint; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexParameteri                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexParameterx                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexParameteriv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexParameterxv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexSubImage2D                          = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTranslatex                             = procedure(x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexPointer                          = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglViewport                               = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+
+{ ============================================== OpenGL ES 2.0 ======================================================= }
+  TglAttachShader                           = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindAttribLocation                     = procedure(aProgram: GLuint; aIndex: GLuint; const aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindFramebuffer                        = procedure(aTarget: GLenum; aFramebuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindRenderbuffer                       = procedure(aTarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBlendColor                             = procedure(aRed: GLclampf; aGreen: GLclampf; aBlue: GLclampf; aAlpha: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBlendEquation                          = procedure( mode : GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBlendEquationSeparate                  = procedure(aModeRGB: GLenum; aModeAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBlendFuncSeparate                      = procedure(aSrcRGB: GLenum; aDstRGB: GLenum; aSrcAlpha: GLenum; aDstAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCheckFramebufferStatus                 = function (aTarget: GLenum): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCompileShader                          = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCreateProgram                          = function (): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCreateShader                           = function (aType: GLenum): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteFramebuffers                     = procedure(n: GLsizei; const aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteProgram                          = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteRenderbuffers                    = procedure(n: GLsizei; const aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteShader                           = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDetachShader                           = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDisableVertexAttribArray               = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglEnableVertexAttribArray                = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFramebufferRenderbuffer                = procedure(aTarget: GLenum; aAttachment: GLenum; aRenderbuffertarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFramebufferTexture2D                   = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenerateMipmap                         = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenFramebuffers                        = procedure(n: GLsizei; aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenRenderbuffers                       = procedure(n: GLsizei; aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetActiveAttrib                        = procedure(aProgram: GLuint; aIndex: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetActiveUniform                       = procedure(aProgram: GLuint; aIndex: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetAttachedShaders                     = procedure(aProgram: GLuint; aMaxcount: GLsizei; aCount: PGLsizei; aShaders: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetAttribLocation                      = function (aProgram: GLuint; const aName: PGLchar): Integer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetFramebufferAttachmentParameteriv    = procedure(aTarget: GLenum; aAttachment: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramiv                           = procedure(aProgram: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramInfoLog                      = procedure(aProgram: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aInfolog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetRenderbufferParameteriv             = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetShaderiv                            = procedure(aShader: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetShaderInfoLog                       = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aInfolog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetShaderPrecisionFormat               = procedure(aShadertype: GLenum; aPrecisiontype: GLenum; aRange: PGLint; aPrecision: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetShaderSource                        = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSource: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetUniformfv                           = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetUniformiv                           = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetUniformLocation                     = function (aProgram: GLuint; const aName: PGLchar): Integer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetVertexAttribfv                      = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetVertexAttribiv                      = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetVertexAttribPointerv                = procedure(aIndex: GLuint; aPname: GLenum; aPointer: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsFramebuffer                          = function (aFramebuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsProgram                              = function (aProgram: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsRenderbuffer                         = function (aRenderbuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsShader                               = function (aShader: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglLinkProgram                            = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglReleaseShaderCompiler                  = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglRenderbufferStorage                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglShaderBinary                           = procedure(n: GLsizei; const aShaders: PGLuint; aBinaryformat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglShaderSource                           = procedure(aShader: GLuint; aCount: GLsizei; const aString: PPGLchar; const aLength: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglStencilFuncSeparate                    = procedure(aFace: GLenum; aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglStencilMaskSeparate                    = procedure(aFace: GLenum; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglStencilOpSeparate                      = procedure(aFace: GLenum; aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform1f                              = procedure(aLocation: GLint; x: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform1fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform1i                              = procedure(aLocation: GLint; x: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform1iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform2f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform2fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform2i                              = procedure(aLocation: GLint; x: GLint; y: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform2iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform3f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform3fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform3i                              = procedure(aLocation: GLint; x: GLint; y: GLint; z: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform3iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform4f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat; z: GLfloat; aW: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform4fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform4i                              = procedure(aLocation: GLint; x: GLint; y: GLint; z: GLint; aW: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform4iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix2fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix3fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix4fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUseProgram                             = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglValidateProgram                        = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib1f                         = procedure(aIndex: GLuint; x: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib1fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib2f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib2fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib3f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib3fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib4f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; aW: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttrib4fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribPointer                    = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aStride: GLsizei; const aPtr: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+
+{ ============================================== OpenGL ES 3.0 ======================================================= }
+  TglReadBuffer                             = procedure(aSrc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawRangeElements                      = procedure(aMode: GLenum; aStart: GLuint; aEnd: GLuint; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexImage3D                             = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aBorder: GLint; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexSubImage3D                          = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aType: GLenum; const aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCopyTexSubImage3D                      = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCompressedTexImage3D                   = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aBorder: GLint; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCompressedTexSubImage3D                = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aImageSize: GLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenQueries                             = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteQueries                          = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsQuery                                = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBeginQuery                             = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglEndQuery                               = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetQueryiv                             = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetQueryObjectuiv                      = procedure(aId: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUnmapBuffer                            = function (aTarget: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetBufferPointerv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawBuffers                            = procedure(n: GLsizei; const aBuffers: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix2x3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix3x2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix2x4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix4x2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix3x4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformMatrix4x3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBlitFramebuffer                        = procedure(srcX0: GLint; srcY0: GLint; srcX1: GLint; srcY1: GLint; dstX0: GLint; dstY0: GLint; dstX1: GLint; dstY1: GLint; aMask: GLbitfield; aFilter: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglRenderbufferStorageMultisample         = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFramebufferTextureLayer                = procedure(aTarget: GLenum; aAttachment: GLenum; aTexture: GLuint; aLevel: GLint; aLayer: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMapBufferRange                         = function (aTarget: GLenum; aOffset: PGLint; aLength: PGLsizei; aAccess: GLbitfield): PGLvoid; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFlushMappedBufferRange                 = procedure(aTarget: GLenum; aOffset: PGLint; aLength: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindVertexArray                        = procedure(aArray: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteVertexArrays                     = procedure(n: GLsizei; const aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenVertexArrays                        = procedure(n: GLsizei; aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsVertexArray                          = function (aArray: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetIntegeriv                           = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBeginTransformFeedback                 = procedure(aPrimitiveMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglEndTransformFeedback                   = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindBufferRange                        = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint; aOffset: PGLint; aSize: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindBufferBase                         = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTransformFeedbackVaryings              = procedure(aProgram: GLuint; aCount: GLsizei; const aVaryings: PPGLchar; aBufferMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTransformFeedbackVarying            = procedure(aProgram: GLuint; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSize: PGLsizei; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribIPointer                   = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetVertexAttribIiv                     = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetVertexAttribIuiv                    = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribI4i                        = procedure(aIndex: GLuint; x: GLint; y: GLint; z: GLint; aW: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribI4ui                       = procedure(aIndex: GLuint; x: GLuint; y: GLuint; z: GLuint; aW: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribI4iv                       = procedure(aIndex: GLuint; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribI4uiv                      = procedure(aIndex: GLuint; const v: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetUniformuiv                          = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetFragDataLocation                    = function (aProgram: GLuint; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform1ui                             = procedure(aLocation: GLint; v0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform2ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform3ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform4ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform1uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform2uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform3uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniform4uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearBufferiv                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearBufferuiv                         = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearBufferfv                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClearBufferfi                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; aDepth: GLfloat; aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetStringi                             = function (aName: GLenum; aIndex: GLuint): PGLubyte; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCopyBufferSubData                      = procedure(aReadTarget: GLenum; aWriteTarget: GLenum; aReadOffset: PGLint; aWriteOffset: PGLint; aSize: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetUniformIndices                      = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformNames: PPGLchar; aUniformIndices: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetActiveUniformsiv                    = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformIndices: PGLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetUniformBlockIndex                   = function (aProgram: GLuint; const aUniformBlockName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetActiveUniformBlockiv                = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetActiveUniformBlockName              = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aUniformBlockName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUniformBlockBinding                    = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aUniformBlockBinding: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawArraysInstanced                    = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawElementsInstanced                  = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFenceSync                              = function (aCondition: GLenum; aFlags: GLbitfield): GLsync; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsSync                                 = function (aSync: GLsync): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteSync                             = procedure(aSync: GLsync); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglClientWaitSync                         = function (aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglWaitSync                               = procedure(aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetInteger64v                          = procedure(aPname: GLenum; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetSynciv                              = procedure(aSync: GLsync; aPname: GLenum; aBufSize: GLsizei; aLength: PGLsizei; aValues: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetInteger64iv                         = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetBufferParameteri64v                 = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenSamplers                            = procedure(aCount: GLsizei; aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteSamplers                         = procedure(aCount: GLsizei; const aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsSampler                              = function (aSampler: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindSampler                            = procedure(aUnit: GLuint; aSampler: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSamplerParameteri                      = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSamplerParameteriv                     = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSamplerParameterf                      = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSamplerParameterfv                     = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetSamplerParameteriv                  = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetSamplerParameterfv                  = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribDivisor                    = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindTransformFeedback                  = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteTransformFeedbacks               = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenTransformFeedbacks                  = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsTransformFeedback                    = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglPauseTransformFeedback                 = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglResumeTransformFeedback                = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramBinary                       = procedure(aProgram: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aBinaryFormat: PGLenum; aBinary: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramBinary                          = procedure(aProgram: GLuint; aBinaryFormat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramParameteri                      = procedure(aProgram: GLuint; aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglInvalidateFramebuffer                  = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglInvalidateSubFramebuffer               = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum; x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexStorage2D                           = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexStorage3D                           = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetInternalformativ                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aPname: GLenum; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+
+{ ============================================== OpenGL ES 3.1 ======================================================= }
+  TglDispatchCompute                        = procedure(aNumGroupsX: GLuint; aNumGroupsY: GLuint; aNumGroupsZ: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDispatchComputeIndirect                = procedure(aIndirect: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawArraysIndirect                     = procedure(aMode: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDrawElementsIndirect                   = procedure(aMode: GLenum; aType: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglFramebufferParameteri                  = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetFramebufferParameteriv              = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramInterfaceiv                  = procedure(aProgram: GLuint; aProgramInterface: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramResourceIndex                = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramResourceName                 = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramResourceiv                   = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aPropCount: GLsizei; const aProps: PGLenum; aBufSize: GLsizei; aLength: PGLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramResourceLocation             = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglUseProgramStages                       = procedure(aPipeline: GLuint; aStages: GLbitfield; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglActiveShaderProgram                    = procedure(aPipeline: GLuint; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglCreateShaderProgramv                   = function (aType: GLenum; aCount: GLsizei; const aStrings: PPGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindProgramPipeline                    = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglDeleteProgramPipelines                 = procedure(aN: GLsizei; const aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGenProgramPipelines                    = procedure(aN: GLsizei; aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglIsProgramPipeline                      = function (aPipeline: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramPipelineiv                   = procedure(aPipeline: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform1i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform2i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform3i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint; v2: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform4i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform1ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform2ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform3ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform4ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform1f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform2f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform3f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform4f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform1iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform2iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform3iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform4iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform1uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform2uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform3uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform4uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform1fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform2fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform3fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniform4fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix2fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix3fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix4fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix2x3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix3x2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix2x4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix4x2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix3x4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglProgramUniformMatrix4x3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglValidateProgramPipeline                = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetProgramPipelineInfoLog              = procedure(aPipeline: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindImageTexture                       = procedure(aUnit: GLuint; aTexture: GLuint; aLevel: GLint; aLayered: GLboolean; aLayer: GLint; aAccess: GLenum; aFormat: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetBooleaniv                           = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMemoryBarrier                          = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglMemoryBarrierByRegion                  = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglTexStorage2DMultisample                = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aFixedsamplelocations: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetMultisamplefv                       = procedure(aPname: GLenum; aIndex: GLuint; aVal: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglSampleMaski                            = procedure(aMaskNumber: GLuint; aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexLevelParameteriv                 = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglGetTexLevelParameterfv                 = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglBindVertexBuffer                       = procedure(aBindingindex: GLuint; aBuffer: GLuint; aOffset: PGLint; aStride: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribFormat                     = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribIFormat                    = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexAttribBinding                    = procedure(aAttribindex: GLuint; aBindingindex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TglVertexBindingDivisor                   = procedure(aBindingindex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
 
 var
-  { *** PROCEDURES *** }
-  { OpenGL ES 2.0 }
+{ ============================================== OpenGL ES 1.0 ======================================================= }
+{ Available only in Common profile }
+  glAlphaFunc:                              TglAlphaFunc;
+  glClearColor:                             TglClearColor;
+  glClearDepthf:                            TglClearDepthf;
+  glClipPlanef:                             TglClipPlanef;
+  glColor4f:                                TglColor4f;
+  glDepthRangef:                            TglDepthRangef;
+  glFogf:                                   TglFogf;
+  glFogfv:                                  TglFogfv;
+  glFrustumf:                               TglFrustumf;
+  glGetClipPlanef:                          TglGetClipPlanef;
+  glGetFloatv:                              TglGetFloatv;
+  glGetLightfv:                             TglGetLightfv;
+  glGetMaterialfv:                          TglGetMaterialfv;
+  glGetTexEnvfv:                            TglGetTexEnvfv;
+  glGetTexParameterfv:                      TglGetTexParameterfv;
+  glLightModelf:                            TglLightModelf;
+  glLightModelfv:                           TglLightModelfv;
+  glLightf:                                 TglLightf;
+  glLightfv:                                TglLightfv;
+  glLineWidth:                              TglLineWidth;
+  glLoadMatrixf:                            TglLoadMatrixf;
+  glMaterialf:                              TglMaterialf;
+  glMaterialfv:                             TglMaterialfv;
+  glMultMatrixf:                            TglMultMatrixf;
+  glMultiTexCoord4f:                        TglMultiTexCoord4f;
+  glNormal3f:                               TglNormal3f;
+  glOrthof:                                 TglOrthof;
+  glPointParameterf:                        TglPointParameterf;
+  glPointParameterfv:                       TglPointParameterfv;
+  glPointSize:                              TglPointSize;
+  glPolygonOffset:                          TglPolygonOffset;
+  glRotatef:                                TglRotatef;
+  glScalef:                                 TglScalef;
+  glTexEnvf:                                TglTexEnvf;
+  glTexEnvfv:                               TglTexEnvfv;
+  glTexParameterf:                          TglTexParameterf;
+  glTexParameterfv:                         TglTexParameterfv;
+  glTranslatef:                             TglTranslatef;
+
+{ Available in both Common and Common-Lite profiles }
   glActiveTexture:                          TglActiveTexture;
-  glAttachShader:                           TglAttachShader;
-  glBindAttribLocation:                     TglBindAttribLocation;
+  glAlphaFuncx:                             TglAlphaFuncx;
   glBindBuffer:                             TglBindBuffer;
-  glBindFramebuffer:                        TglBindFramebuffer;
-  glBindRenderbuffer:                       TglBindRenderbuffer;
   glBindTexture:                            TglBindTexture;
-  glBlendColor:                             TglBlendColor;
-  glBlendEquation:                          TglBlendEquation;
-  glBlendEquationSeparate:                  TglBlendEquationSeparate;
   glBlendFunc:                              TglBlendFunc;
-  glBlendFuncSeparate:                      TglBlendFuncSeparate;
   glBufferData:                             TglBufferData;
   glBufferSubData:                          TglBufferSubData;
-  glCheckFramebufferStatus:                 TglCheckFramebufferStatus;
   glClear:                                  TglClear;
-  glClearColor:                             TglClearColor;
-  glClearDepthf:                            TglClearDepthf;
+  glClearColorx:                            TglClearColorx;
+  glClearDepthx:                            TglClearDepthx;
   glClearStencil:                           TglClearStencil;
+  glClientActiveTexture:                    TglClientActiveTexture;
+  glClipPlanex:                             TglClipPlanex;
+  glColor4ub:                               TglColor4ub;
+  glColor4x:                                TglColor4x;
   glColorMask:                              TglColorMask;
-  glCompileShader:                          TglCompileShader;
+  glColorPointer:                           TglColorPointer;
   glCompressedTexImage2D:                   TglCompressedTexImage2D;
   glCompressedTexSubImage2D:                TglCompressedTexSubImage2D;
   glCopyTexImage2D:                         TglCopyTexImage2D;
   glCopyTexSubImage2D:                      TglCopyTexSubImage2D;
-  glCreateProgram:                          TglCreateProgram;
-  glCreateShader:                           TglCreateShader;
   glCullFace:                               TglCullFace;
   glDeleteBuffers:                          TglDeleteBuffers;
-  glDeleteFramebuffers:                     TglDeleteFramebuffers;
-  glDeleteProgram:                          TglDeleteProgram;
-  glDeleteRenderbuffers:                    TglDeleteRenderbuffers;
-  glDeleteShader:                           TglDeleteShader;
   glDeleteTextures:                         TglDeleteTextures;
   glDepthFunc:                              TglDepthFunc;
   glDepthMask:                              TglDepthMask;
-  glDepthRangef:                            TglDepthRangef;
-  glDetachShader:                           TglDetachShader;
+  glDepthRangex:                            TglDepthRangex;
   glDisable:                                TglDisable;
-  glDisableVertexAttribArray:               TglDisableVertexAttribArray;
+  glDisableClientState:                     TglDisableClientState;
   glDrawArrays:                             TglDrawArrays;
   glDrawElements:                           TglDrawElements;
   glEnable:                                 TglEnable;
-  glEnableVertexAttribArray:                TglEnableVertexAttribArray;
+  glEnableClientState:                      TglEnableClientState;
   glFinish:                                 TglFinish;
   glFlush:                                  TglFlush;
-  glFramebufferRenderbuffer:                TglFramebufferRenderbuffer;
-  glFramebufferTexture2D:                   TglFramebufferTexture2D;
+  glFogx:                                   TglFogx;
+  glFogxv:                                  TglFogxv;
   glFrontFace:                              TglFrontFace;
+  glFrustumx:                               TglFrustumx;
+  glGetBooleanv:                            TglGetBooleanv;
+  glGetBufferParameteriv:                   TglGetBufferParameteriv;
+  glGetClipPlanex:                          TglGetClipPlanex;
   glGenBuffers:                             TglGenBuffers;
+  glGenTextures:                            TglGenTextures;
+  glGetError:                               TglGetError;
+  glGetFixedv:                              TglGetFixedv;
+  glGetIntegerv:                            TglGetIntegerv;
+  glGetLightxv:                             TglGetLightxv;
+  glGetMaterialxv:                          TglGetMaterialxv;
+  glGetPointerv:                            TglGetPointerv;
+  glGetString:                              TglGetString;
+  glGetTexEnviv:                            TglGetTexEnviv;
+  glGetTexEnvxv:                            TglGetTexEnvxv;
+  glGetTexParameteriv:                      TglGetTexParameteriv;
+  glGetTexParameterxv:                      TglGetTexParameterxv;
+  glHint:                                   TglHint;
+  glIsBuffer:                               TglIsBuffer;
+  glIsEnabled:                              TglIsEnabled;
+  glIsTexture:                              TglIsTexture;
+  glLightModelx:                            TglLightModelx;
+  glLightModelxv:                           TglLightModelxv;
+  glLightx:                                 TglLightx;
+  glLightxv:                                TglLightxv;
+  glLineWidthx:                             TglLineWidthx;
+  glLoadIdentity:                           TglLoadIdentity;
+  glLoadMatrix:                             TglLoadMatrix;
+  glLogicOp:                                TglLogicOp;
+  glMaterialx:                              TglMaterialx;
+  glMaterialxv:                             TglMaterialxv;
+  glMatrixMode:                             TglMatrixMode;
+  glMultMatrixx:                            TglMultMatrixx;
+  glMultiTexCoord4x:                        TglMultiTexCoord4x;
+  glNormal3x:                               TglNormal3x;
+  glNormalPointer:                          TglNormalPointer;
+  glOrthox:                                 TglOrthox;
+  glPixelStorei:                            TglPixelStorei;
+  glPointParameterx:                        TglPointParameterx;
+  glPointParameterxv:                       TglPointParameterxv;
+  glPointSizex:                             TglPointSizex;
+  glPolygonOffsetx:                         TglPolygonOffsetx;
+  glPopMatrix:                              TglPopMatrix;
+  glPushMatrix:                             TglPushMatrix;
+  glReadPixels:                             TglReadPixels;
+  glRotatex:                                TglRotatex;
+  glSampleCoverage:                         TglSampleCoverage;
+  glSampleCoveragex:                        TglSampleCoveragex;
+  glScalex:                                 TglScalex;
+  glScissor:                                TglScissor;
+  glShadeModel:                             TglShadeModel;
+  glStencilFunc:                            TglStencilFunc;
+  glStencilMask:                            TglStencilMask;
+  glStencilOp:                              TglStencilOp;
+  glTexCoordPointer:                        TglTexCoordPointer;
+  glTexEnvi:                                TglTexEnvi;
+  glTexEnvx:                                TglTexEnvx;
+  glTexEnviv:                               TglTexEnviv;
+  glTexEnvxv:                               TglTexEnvxv;
+  glTexImage2D:                             TglTexImage2D;
+  glTexParameteri:                          TglTexParameteri;
+  glTexParameterx:                          TglTexParameterx;
+  glTexParameteriv:                         TglTexParameteriv;
+  glTexParameterxv:                         TglTexParameterxv;
+  glTexSubImage2D:                          TglTexSubImage2D;
+  glTranslatex:                             TglTranslatex;
+  glVertexPointer:                          TglVertexPointer;
+  glViewport:                               TglViewport;
+
+{ ============================================== OpenGL ES 2.0 ======================================================= }
+  glAttachShader:                           TglAttachShader;
+  glBindAttribLocation:                     TglBindAttribLocation;
+  glBindFramebuffer:                        TglBindFramebuffer;
+  glBindRenderbuffer:                       TglBindRenderbuffer;
+  glBlendColor:                             TglBlendColor;
+  glBlendEquation:                          TglBlendEquation;
+  glBlendEquationSeparate:                  TglBlendEquationSeparate;
+  glBlendFuncSeparate:                      TglBlendFuncSeparate;
+  glCheckFramebufferStatus:                 TglCheckFramebufferStatus;
+  glCompileShader:                          TglCompileShader;
+  glCreateProgram:                          TglCreateProgram;
+  glCreateShader:                           TglCreateShader;
+  glDeleteFramebuffers:                     TglDeleteFramebuffers;
+  glDeleteProgram:                          TglDeleteProgram;
+  glDeleteRenderbuffers:                    TglDeleteRenderbuffers;
+  glDeleteShader:                           TglDeleteShader;
+  glDetachShader:                           TglDetachShader;
+  glDisableVertexAttribArray:               TglDisableVertexAttribArray;
+  glEnableVertexAttribArray:                TglEnableVertexAttribArray;
+  glFramebufferRenderbuffer:                TglFramebufferRenderbuffer;
+  glFramebufferTexture2D:                   TglFramebufferTexture2D;
   glGenerateMipmap:                         TglGenerateMipmap;
   glGenFramebuffers:                        TglGenFramebuffers;
   glGenRenderbuffers:                       TglGenRenderbuffers;
-  glGenTextures:                            TglGenTextures;
   glGetActiveAttrib:                        TglGetActiveAttrib;
   glGetActiveUniform:                       TglGetActiveUniform;
   glGetAttachedShaders:                     TglGetAttachedShaders;
   glGetAttribLocation:                      TglGetAttribLocation;
-  glGetBooleanv:                            TglGetBooleanv;
-  glGetBufferParameteriv:                   TglGetBufferParameteriv;
-  glGetError:                               TglGetError;
-  glGetFloatv:                              TglGetFloatv;
   glGetFramebufferAttachmentParameteriv:    TglGetFramebufferAttachmentParameteriv;
-  glGetIntegerv:                            TglGetIntegerv;
   glGetProgramiv:                           TglGetProgramiv;
   glGetProgramInfoLog:                      TglGetProgramInfoLog;
   glGetRenderbufferParameteriv:             TglGetRenderbufferParameteriv;
@@ -1292,46 +1890,24 @@ var
   glGetShaderInfoLog:                       TglGetShaderInfoLog;
   glGetShaderPrecisionFormat:               TglGetShaderPrecisionFormat;
   glGetShaderSource:                        TglGetShaderSource;
-  glGetString:                              TglGetString;
-  glGetTexParameterfv:                      TglGetTexParameterfv;
-  glGetTexParameteriv:                      TglGetTexParameteriv;
   glGetUniformfv:                           TglGetUniformfv;
   glGetUniformiv:                           TglGetUniformiv;
   glGetUniformLocation:                     TglGetUniformLocation;
   glGetVertexAttribfv:                      TglGetVertexAttribfv;
   glGetVertexAttribiv:                      TglGetVertexAttribiv;
   glGetVertexAttribPointerv:                TglGetVertexAttribPointerv;
-  glHint:                                   TglHint;
-  glIsBuffer:                               TglIsBuffer;
-  glIsEnabled:                              TglIsEnabled;
   glIsFramebuffer:                          TglIsFramebuffer;
   glIsProgram:                              TglIsProgram;
   glIsRenderbuffer:                         TglIsRenderbuffer;
   glIsShader:                               TglIsShader;
-  glIsTexture:                              TglIsTexture;
-  glLineWidth:                              TglLineWidth;
   glLinkProgram:                            TglLinkProgram;
-  glPixelStorei:                            TglPixelStorei;
-  glPolygonOffset:                          TglPolygonOffset;
-  glReadPixels:                             TglReadPixels;
   glReleaseShaderCompiler:                  TglReleaseShaderCompiler;
   glRenderbufferStorage:                    TglRenderbufferStorage;
-  glSampleCoverage:                         TglSampleCoverage;
-  glScissor:                                TglScissor;
   glShaderBinary:                           TglShaderBinary;
   glShaderSource:                           TglShaderSource;
-  glStencilFunc:                            TglStencilFunc;
   glStencilFuncSeparate:                    TglStencilFuncSeparate;
-  glStencilMask:                            TglStencilMask;
   glStencilMaskSeparate:                    TglStencilMaskSeparate;
-  glStencilOp:                              TglStencilOp;
   glStencilOpSeparate:                      TglStencilOpSeparate;
-  glTexImage2D:                             TglTexImage2D;
-  glTexParameterf:                          TglTexParameterf;
-  glTexParameterfv:                         TglTexParameterfv;
-  glTexParameteri:                          TglTexParameteri;
-  glTexParameteriv:                         TglTexParameteriv;
-  glTexSubImage2D:                          TglTexSubImage2D;
   glUniform1f:                              TglUniform1f;
   glUniform1fv:                             TglUniform1fv;
   glUniform1i:                              TglUniform1i;
@@ -1362,9 +1938,8 @@ var
   glVertexAttrib4f:                         TglVertexAttrib4f;
   glVertexAttrib4fv:                        TglVertexAttrib4fv;
   glVertexAttribPointer:                    TglVertexAttribPointer;
-  glViewport:                               TglViewport;
 
-  { OpenGL ES 3.0 }
+{ ============================================== OpenGL ES 3.0 ======================================================= }
   glReadBuffer:                             TglReadBuffer;
   glDrawRangeElements:                      TglDrawRangeElements;
   glTexImage3D:                             TglTexImage3D;
@@ -1397,7 +1972,7 @@ var
   glDeleteVertexArrays:                     TglDeleteVertexArrays;
   glGenVertexArrays:                        TglGenVertexArrays;
   glIsVertexArray:                          TglIsVertexArray;
-  glGetIntegeri_v:                          TglGetIntegeri_v;
+  glGetIntegeriv:                           TglGetIntegeriv;
   glBeginTransformFeedback:                 TglBeginTransformFeedback;
   glEndTransformFeedback:                   TglEndTransformFeedback;
   glBindBufferRange:                        TglBindBufferRange;
@@ -1442,7 +2017,7 @@ var
   glWaitSync:                               TglWaitSync;
   glGetInteger64v:                          TglGetInteger64v;
   glGetSynciv:                              TglGetSynciv;
-  glGetInteger64i_v:                        TglGetInteger64i_v;
+  glGetInteger64iv:                         TglGetInteger64iv;
   glGetBufferParameteri64v:                 TglGetBufferParameteri64v;
   glGenSamplers:                            TglGenSamplers;
   glDeleteSamplers:                         TglDeleteSamplers;
@@ -1470,7 +2045,7 @@ var
   glTexStorage3D:                           TglTexStorage3D;
   glGetInternalformativ:                    TglGetInternalformativ;
 
-  { OpenGL ES 3.1 }
+{ ============================================== OpenGL ES 3.1 ======================================================= }
   glDispatchCompute:                        TglDispatchCompute;
   glDispatchComputeIndirect:                TglDispatchComputeIndirect;
   glDrawArraysIndirect:                     TglDrawArraysIndirect;
@@ -1526,7 +2101,7 @@ var
   glValidateProgramPipeline:                TglValidateProgramPipeline;
   glGetProgramPipelineInfoLog:              TglGetProgramPipelineInfoLog;
   glBindImageTexture:                       TglBindImageTexture;
-  glGetBooleaniV:                           TglGetBooleaniV;
+  glGetBooleaniv:                           TglGetBooleaniv;
   glMemoryBarrier:                          TglMemoryBarrier;
   glMemoryBarrierByRegion:                  TglMemoryBarrierByRegion;
   glTexStorage2DMultisample:                TglTexStorage2DMultisample;
@@ -1540,7 +2115,6 @@ var
   glVertexAttribBinding:                    TglVertexAttribBinding;
   glVertexBindingDivisor:                   TglVertexBindingDivisor;
 
-
 { ===================================================== EGL ========================================================== }
 type
   EGLint                = Integer;
@@ -1726,10 +2300,10 @@ type
   TeglInitialize  = function(aDisplay: EGLDisplay; aMajor, aMinor: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
   TeglTerminate   = function(aDisplay: EGLDisplay): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
 
-  TeglQueryString = function(aDisplay: EGLDisplay; aName: EGLint): PAnsiChar; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TeglQueryString = function(aDisplay: EGLDisplay; name: EGLint): PAnsiChar; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
 
-  TeglGetConfigs      = function(aDisplay: EGLDisplay; aConfigs: PEGLConfig; aConfigSize: EGLint; aNumConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TeglChooseConfig    = function(aDisplay: EGLDisplay; const aAttribList: PEGLint; aConfigs: PEGLConfig; aConfigSize: EGLint; aNumConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TeglGetConfigs      = function(aDisplay: EGLDisplay; aConfigs: PEGLConfig; aConfigSize: EGLint; numConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
+  TeglChooseConfig    = function(aDisplay: EGLDisplay; const aAttribList: PEGLint; aConfigs: PEGLConfig; aConfigSize: EGLint; numConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
   TeglGetConfigAttrib = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aAttribute: EGLint; aValue : PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
 
   TeglCreateWindowSurface   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aWinType: PEGLNativeWindowType; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
@@ -1769,7 +2343,6 @@ type
 
   TeglGetProcAddress = function(const aProcName: PAnsiChar): Pointer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
 
-
 var
   eglGetError: TeglGetError;
 
@@ -1820,7 +2393,6 @@ var
 
   eglGetProcAddress: TeglGetProcAddress;
 
-
 { =================================================== DelphiGL ======================================================= }
 type
   EdglOpenGLES = class(Exception);
@@ -1855,10 +2427,10 @@ var
   LibHandleOpenGLES: Pointer = nil;
   LibHandleEGL:      Pointer = nil;
 
-function dglLoadLibrary(const aName: PChar): Pointer;
+function dglLoadLibrary(const name: PChar): Pointer;
 begin
   {$IFDEF DGL_LINUX}
-  result := dlopen(aName, RTLD_LAZY);
+  result := dlopen(name, RTLD_LAZY);
   {$ENDIF}
 end;
 
@@ -2017,324 +2589,7 @@ end;
 
 procedure ReadExtensions;
 begin
-  glActiveTexture                           := dglGetProcAddress('glActiveTexture');
-  glAttachShader                            := dglGetProcAddress('glAttachShader');
-  glBindAttribLocation                      := dglGetProcAddress('glBindAttribLocation');
-  glBindBuffer                              := dglGetProcAddress('glBindBuffer');
-  glBindFramebuffer                         := dglGetProcAddress('glBindFramebuffer');
-  glBindRenderbuffer                        := dglGetProcAddress('glBindRenderbuffer');
-  glBindTexture                             := dglGetProcAddress('glBindTexture');
-  glBlendColor                              := dglGetProcAddress('glBlendColor');
-  glBlendEquation                           := dglGetProcAddress('glBlendEquation');
-  glBlendEquationSeparate                   := dglGetProcAddress('glBlendEquationSeparate');
-  glBlendFunc                               := dglGetProcAddress('glBlendFunc');
-  glBlendFuncSeparate                       := dglGetProcAddress('glBlendFuncSeparate');
-  glBufferData                              := dglGetProcAddress('glBufferData');
-  glBufferSubData                           := dglGetProcAddress('glBufferSubData');
-  glCheckFramebufferStatus                  := dglGetProcAddress('glCheckFramebufferStatus');
-  glClear                                   := dglGetProcAddress('glClear');
-  glClearColor                              := dglGetProcAddress('glClearColor');
-  glClearDepthf                             := dglGetProcAddress('glClearDepthf');
-  glClearStencil                            := dglGetProcAddress('glClearStencil');
-  glColorMask                               := dglGetProcAddress('glColorMask');
-  glCompileShader                           := dglGetProcAddress('glCompileShader');
-  glCompressedTexImage2D                    := dglGetProcAddress('glCompressedTexImage2D');
-  glCompressedTexSubImage2D                 := dglGetProcAddress('glCompressedTexSubImage2D');
-  glCopyTexImage2D                          := dglGetProcAddress('glCopyTexImage2D');
-  glCopyTexSubImage2D                       := dglGetProcAddress('glCopyTexSubImage2D');
-  glCreateProgram                           := dglGetProcAddress('glCreateProgram');
-  glCreateShader                            := dglGetProcAddress('glCreateShader');
-  glCullFace                                := dglGetProcAddress('glCullFace');
-  glDeleteBuffers                           := dglGetProcAddress('glDeleteBuffers');
-  glDeleteFramebuffers                      := dglGetProcAddress('glDeleteFramebuffers');
-  glDeleteProgram                           := dglGetProcAddress('glDeleteProgram');
-  glDeleteRenderbuffers                     := dglGetProcAddress('glDeleteRenderbuffers');
-  glDeleteShader                            := dglGetProcAddress('glDeleteShader');
-  glDeleteTextures                          := dglGetProcAddress('glDeleteTextures');
-  glDepthFunc                               := dglGetProcAddress('glDepthFunc');
-  glDepthMask                               := dglGetProcAddress('glDepthMask');
-  glDepthRangef                             := dglGetProcAddress('glDepthRangef');
-  glDetachShader                            := dglGetProcAddress('glDetachShader');
-  glDisable                                 := dglGetProcAddress('glDisable');
-  glDisableVertexAttribArray                := dglGetProcAddress('glDisableVertexAttribArray');
-  glDrawArrays                              := dglGetProcAddress('glDrawArrays');
-  glDrawElements                            := dglGetProcAddress('glDrawElements');
-  glEnable                                  := dglGetProcAddress('glEnable');
-  glEnableVertexAttribArray                 := dglGetProcAddress('glEnableVertexAttribArray');
-  glFinish                                  := dglGetProcAddress('glFinish');
-  glFlush                                   := dglGetProcAddress('glFlush');
-  glFramebufferRenderbuffer                 := dglGetProcAddress('glFramebufferRenderbuffer');
-  glFramebufferTexture2D                    := dglGetProcAddress('glFramebufferTexture2D');
-  glFrontFace                               := dglGetProcAddress('glFrontFace');
-  glGenBuffers                              := dglGetProcAddress('glGenBuffers');
-  glGenerateMipmap                          := dglGetProcAddress('glGenerateMipmap');
-  glGenFramebuffers                         := dglGetProcAddress('glGenFramebuffers');
-  glGenRenderbuffers                        := dglGetProcAddress('glGenRenderbuffers');
-  glGenTextures                             := dglGetProcAddress('glGenTextures');
-  glGetActiveAttrib                         := dglGetProcAddress('glGetActiveAttrib');
-  glGetActiveUniform                        := dglGetProcAddress('glGetActiveUniform');
-  glGetAttachedShaders                      := dglGetProcAddress('glGetAttachedShaders');
-  glGetAttribLocation                       := dglGetProcAddress('glGetAttribLocation');
-  glGetBooleanv                             := dglGetProcAddress('glGetBooleanv');
-  glGetBufferParameteriv                    := dglGetProcAddress('glGetBufferParameteriv');
-  glGetError                                := dglGetProcAddress('glGetError');
-  glGetFloatv                               := dglGetProcAddress('glGetFloatv');
-  glGetFramebufferAttachmentParameteriv     := dglGetProcAddress('glGetFramebufferAttachmentParameteriv');
-  glGetIntegerv                             := dglGetProcAddress('glGetIntegerv');
-  glGetProgramiv                            := dglGetProcAddress('glGetProgramiv');
-  glGetProgramInfoLog                       := dglGetProcAddress('glGetProgramInfoLog');
-  glGetRenderbufferParameteriv              := dglGetProcAddress('glGetRenderbufferParameteriv');
-  glGetShaderiv                             := dglGetProcAddress('glGetShaderiv');
-  glGetShaderInfoLog                        := dglGetProcAddress('glGetShaderInfoLog');
-  glGetShaderPrecisionFormat                := dglGetProcAddress('glGetShaderPrecisionFormat');
-  glGetShaderSource                         := dglGetProcAddress('glGetShaderSource');
-  glGetString                               := dglGetProcAddress('glGetString');
-  glGetTexParameterfv                       := dglGetProcAddress('glGetTexParameterfv');
-  glGetTexParameteriv                       := dglGetProcAddress('glGetTexParameteriv');
-  glGetUniformfv                            := dglGetProcAddress('glGetUniformfv');
-  glGetUniformiv                            := dglGetProcAddress('glGetUniformiv');
-  glGetUniformLocation                      := dglGetProcAddress('glGetUniformLocation');
-  glGetVertexAttribfv                       := dglGetProcAddress('glGetVertexAttribfv');
-  glGetVertexAttribiv                       := dglGetProcAddress('glGetVertexAttribiv');
-  glGetVertexAttribPointerv                 := dglGetProcAddress('glGetVertexAttribPointerv');
-  glHint                                    := dglGetProcAddress('glHint');
-  glIsBuffer                                := dglGetProcAddress('glIsBuffer');
-  glIsEnabled                               := dglGetProcAddress('glIsEnabled');
-  glIsFramebuffer                           := dglGetProcAddress('glIsFramebuffer');
-  glIsProgram                               := dglGetProcAddress('glIsProgram');
-  glIsRenderbuffer                          := dglGetProcAddress('glIsRenderbuffer');
-  glIsShader                                := dglGetProcAddress('glIsShader');
-  glIsTexture                               := dglGetProcAddress('glIsTexture');
-  glLineWidth                               := dglGetProcAddress('glLineWidth');
-  glLinkProgram                             := dglGetProcAddress('glLinkProgram');
-  glPixelStorei                             := dglGetProcAddress('glPixelStorei');
-  glPolygonOffset                           := dglGetProcAddress('glPolygonOffset');
-  glReadPixels                              := dglGetProcAddress('glReadPixels');
-  glReleaseShaderCompiler                   := dglGetProcAddress('glReleaseShaderCompiler');
-  glRenderbufferStorage                     := dglGetProcAddress('glRenderbufferStorage');
-  glSampleCoverage                          := dglGetProcAddress('glSampleCoverage');
-  glScissor                                 := dglGetProcAddress('glScissor');
-  glShaderBinary                            := dglGetProcAddress('glShaderBinary');
-  glShaderSource                            := dglGetProcAddress('glShaderSource');
-  glStencilFunc                             := dglGetProcAddress('glStencilFunc');
-  glStencilFuncSeparate                     := dglGetProcAddress('glStencilFuncSeparate');
-  glStencilMask                             := dglGetProcAddress('glStencilMask');
-  glStencilMaskSeparate                     := dglGetProcAddress('glStencilMaskSeparate');
-  glStencilOp                               := dglGetProcAddress('glStencilOp');
-  glStencilOpSeparate                       := dglGetProcAddress('glStencilOpSeparate');
-  glTexImage2D                              := dglGetProcAddress('glTexImage2D');
-  glTexParameterf                           := dglGetProcAddress('glTexParameterf');
-  glTexParameterfv                          := dglGetProcAddress('glTexParameterfv');
-  glTexParameteri                           := dglGetProcAddress('glTexParameteri');
-  glTexParameteriv                          := dglGetProcAddress('glTexParameteriv');
-  glTexSubImage2D                           := dglGetProcAddress('glTexSubImage2D');
-  glUniform1f                               := dglGetProcAddress('glUniform1f');
-  glUniform1fv                              := dglGetProcAddress('glUniform1fv');
-  glUniform1i                               := dglGetProcAddress('glUniform1i');
-  glUniform1iv                              := dglGetProcAddress('glUniform1iv');
-  glUniform2f                               := dglGetProcAddress('glUniform2f');
-  glUniform2fv                              := dglGetProcAddress('glUniform2fv');
-  glUniform2i                               := dglGetProcAddress('glUniform2i');
-  glUniform2iv                              := dglGetProcAddress('glUniform2iv');
-  glUniform3f                               := dglGetProcAddress('glUniform3f');
-  glUniform3fv                              := dglGetProcAddress('glUniform3fv');
-  glUniform3i                               := dglGetProcAddress('glUniform3i');
-  glUniform3iv                              := dglGetProcAddress('glUniform3iv');
-  glUniform4f                               := dglGetProcAddress('glUniform4f');
-  glUniform4fv                              := dglGetProcAddress('glUniform4fv');
-  glUniform4i                               := dglGetProcAddress('glUniform4i');
-  glUniform4iv                              := dglGetProcAddress('glUniform4iv');
-  glUniformMatrix2fv                        := dglGetProcAddress('glUniformMatrix2fv');
-  glUniformMatrix3fv                        := dglGetProcAddress('glUniformMatrix3fv');
-  glUniformMatrix4fv                        := dglGetProcAddress('glUniformMatrix4fv');
-  glUseProgram                              := dglGetProcAddress('glUseProgram');
-  glValidateProgram                         := dglGetProcAddress('glValidateProgram');
-  glVertexAttrib1f                          := dglGetProcAddress('glVertexAttrib1f');
-  glVertexAttrib1fv                         := dglGetProcAddress('glVertexAttrib1fv');
-  glVertexAttrib2f                          := dglGetProcAddress('glVertexAttrib2f');
-  glVertexAttrib2fv                         := dglGetProcAddress('glVertexAttrib2fv');
-  glVertexAttrib3f                          := dglGetProcAddress('glVertexAttrib3f');
-  glVertexAttrib3fv                         := dglGetProcAddress('glVertexAttrib3fv');
-  glVertexAttrib4f                          := dglGetProcAddress('glVertexAttrib4f');
-  glVertexAttrib4fv                         := dglGetProcAddress('glVertexAttrib4fv');
-  glVertexAttribPointer                     := dglGetProcAddress('glVertexAttribPointer');
-  glViewport                                := dglGetProcAddress('glViewport');
-
-  { OpenGL ES 3.0 }
-  glReadBuffer                              := dglGetProcAddress('glReadBuffer');
-  glDrawRangeElements                       := dglGetProcAddress('glDrawRangeElements');
-  glTexImage3D                              := dglGetProcAddress('glTexImage3D');
-  glTexSubImage3D                           := dglGetProcAddress('glTexSubImage3D');
-  glCopyTexSubImage3D                       := dglGetProcAddress('glCopyTexSubImage3D');
-  glCompressedTexImage3D                    := dglGetProcAddress('glCompressedTexImage3D');
-  glCompressedTexSubImage3D                 := dglGetProcAddress('glCompressedTexSubImage3D');
-  glGenQueries                              := dglGetProcAddress('glGenQueries');
-  glDeleteQueries                           := dglGetProcAddress('glDeleteQueries');
-  glIsQuery                                 := dglGetProcAddress('glIsQuery');
-  glBeginQuery                              := dglGetProcAddress('glBeginQuery');
-  glEndQuery                                := dglGetProcAddress('glEndQuery');
-  glGetQueryiv                              := dglGetProcAddress('glGetQueryiv');
-  glGetQueryObjectuiv                       := dglGetProcAddress('glGetQueryObjectuiv');
-  glUnmapBuffer                             := dglGetProcAddress('glUnmapBuffer');
-  glGetBufferPointerv                       := dglGetProcAddress('glGetBufferPointerv');
-  glDrawBuffers                             := dglGetProcAddress('glDrawBuffers');
-  glUniformMatrix2x3fv                      := dglGetProcAddress('glUniformMatrix2x3fv');
-  glUniformMatrix3x2fv                      := dglGetProcAddress('glUniformMatrix3x2fv');
-  glUniformMatrix2x4fv                      := dglGetProcAddress('glUniformMatrix2x4fv');
-  glUniformMatrix4x2fv                      := dglGetProcAddress('glUniformMatrix4x2fv');
-  glUniformMatrix3x4fv                      := dglGetProcAddress('glUniformMatrix3x4fv');
-  glUniformMatrix4x3fv                      := dglGetProcAddress('glUniformMatrix4x3fv');
-  glBlitFramebuffer                         := dglGetProcAddress('glBlitFramebuffer');
-  glRenderbufferStorageMultisample          := dglGetProcAddress('glRenderbufferStorageMultisample');
-  glFramebufferTextureLayer                 := dglGetProcAddress('glFramebufferTextureLayer');
-  glMapBufferRange                          := dglGetProcAddress('glMapBufferRange');
-  glFlushMappedBufferRange                  := dglGetProcAddress('glFlushMappedBufferRange');
-  glBindVertexArray                         := dglGetProcAddress('glBindVertexArray');
-  glDeleteVertexArrays                      := dglGetProcAddress('glDeleteVertexArrays');
-  glGenVertexArrays                         := dglGetProcAddress('glGenVertexArrays');
-  glIsVertexArray                           := dglGetProcAddress('glIsVertexArray');
-  glGetIntegeri_v                           := dglGetProcAddress('glGetIntegeri_v');
-  glBeginTransformFeedback                  := dglGetProcAddress('glBeginTransformFeedback');
-  glEndTransformFeedback                    := dglGetProcAddress('glEndTransformFeedback');
-  glBindBufferRange                         := dglGetProcAddress('glBindBufferRange');
-  glBindBufferBase                          := dglGetProcAddress('glBindBufferBase');
-  glTransformFeedbackVaryings               := dglGetProcAddress('glTransformFeedbackVaryings');
-  glGetTransformFeedbackVarying             := dglGetProcAddress('glGetTransformFeedbackVarying');
-  glVertexAttribIPointer                    := dglGetProcAddress('glVertexAttribIPointer');
-  glGetVertexAttribIiv                      := dglGetProcAddress('glGetVertexAttribIiv');
-  glGetVertexAttribIuiv                     := dglGetProcAddress('glGetVertexAttribIuiv');
-  glVertexAttribI4i                         := dglGetProcAddress('glVertexAttribI4i');
-  glVertexAttribI4ui                        := dglGetProcAddress('glVertexAttribI4ui');
-  glVertexAttribI4iv                        := dglGetProcAddress('glVertexAttribI4iv');
-  glVertexAttribI4uiv                       := dglGetProcAddress('glVertexAttribI4uiv');
-  glGetUniformuiv                           := dglGetProcAddress('glGetUniformuiv');
-  glGetFragDataLocation                     := dglGetProcAddress('glGetFragDataLocation');
-  glUniform1ui                              := dglGetProcAddress('glUniform1ui');
-  glUniform2ui                              := dglGetProcAddress('glUniform2ui');
-  glUniform3ui                              := dglGetProcAddress('glUniform3ui');
-  glUniform4ui                              := dglGetProcAddress('glUniform4ui');
-  glUniform1uiv                             := dglGetProcAddress('glUniform1uiv');
-  glUniform2uiv                             := dglGetProcAddress('glUniform2uiv');
-  glUniform3uiv                             := dglGetProcAddress('glUniform3uiv');
-  glUniform4uiv                             := dglGetProcAddress('glUniform4uiv');
-  glClearBufferiv                           := dglGetProcAddress('glClearBufferiv');
-  glClearBufferuiv                          := dglGetProcAddress('glClearBufferuiv');
-  glClearBufferfv                           := dglGetProcAddress('glClearBufferfv');
-  glClearBufferfi                           := dglGetProcAddress('glClearBufferfi');
-  glGetStringi                              := dglGetProcAddress('glGetStringi');
-  glCopyBufferSubData                       := dglGetProcAddress('glCopyBufferSubData');
-  glGetUniformIndices                       := dglGetProcAddress('glGetUniformIndices');
-  glGetActiveUniformsiv                     := dglGetProcAddress('glGetActiveUniformsiv');
-  glGetUniformBlockIndex                    := dglGetProcAddress('glGetUniformBlockIndex');
-  glGetActiveUniformBlockiv                 := dglGetProcAddress('glGetActiveUniformBlockiv');
-  glGetActiveUniformBlockName               := dglGetProcAddress('glGetActiveUniformBlockName');
-  glUniformBlockBinding                     := dglGetProcAddress('glUniformBlockBinding');
-  glDrawArraysInstanced                     := dglGetProcAddress('glDrawArraysInstanced');
-  glDrawElementsInstanced                   := dglGetProcAddress('glDrawElementsInstanced');
-  glFenceSync                               := dglGetProcAddress('glFenceSync');
-  glIsSync                                  := dglGetProcAddress('glIsSync');
-  glDeleteSync                              := dglGetProcAddress('glDeleteSync');
-  glClientWaitSync                          := dglGetProcAddress('glClientWaitSync');
-  glWaitSync                                := dglGetProcAddress('glWaitSync');
-  glGetInteger64v                           := dglGetProcAddress('glGetInteger64v');
-  glGetSynciv                               := dglGetProcAddress('glGetSynciv');
-  glGetInteger64i_v                         := dglGetProcAddress('glGetInteger64i_v');
-  glGetBufferParameteri64v                  := dglGetProcAddress('glGetBufferParameteri64v');
-  glGenSamplers                             := dglGetProcAddress('glGenSamplers');
-  glDeleteSamplers                          := dglGetProcAddress('glDeleteSamplers');
-  glIsSampler                               := dglGetProcAddress('glIsSampler');
-  glBindSampler                             := dglGetProcAddress('glBindSampler');
-  glSamplerParameteri                       := dglGetProcAddress('glSamplerParameteri');
-  glSamplerParameteriv                      := dglGetProcAddress('glSamplerParameteriv');
-  glSamplerParameterf                       := dglGetProcAddress('glSamplerParameterf');
-  glSamplerParameterfv                      := dglGetProcAddress('glSamplerParameterfv');
-  glGetSamplerParameteriv                   := dglGetProcAddress('glGetSamplerParameteriv');
-  glGetSamplerParameterfv                   := dglGetProcAddress('glGetSamplerParameterfv');
-  glVertexAttribDivisor                     := dglGetProcAddress('glVertexAttribDivisor');
-  glBindTransformFeedback                   := dglGetProcAddress('glBindTransformFeedback');
-  glDeleteTransformFeedbacks                := dglGetProcAddress('glDeleteTransformFeedbacks');
-  glGenTransformFeedbacks                   := dglGetProcAddress('glGenTransformFeedbacks');
-  glIsTransformFeedback                     := dglGetProcAddress('glIsTransformFeedback');
-  glPauseTransformFeedback                  := dglGetProcAddress('glPauseTransformFeedback');
-  glResumeTransformFeedback                 := dglGetProcAddress('glResumeTransformFeedback');
-  glGetProgramBinary                        := dglGetProcAddress('glGetProgramBinary');
-  glProgramBinary                           := dglGetProcAddress('glProgramBinary');
-  glProgramParameteri                       := dglGetProcAddress('glProgramParameteri');
-  glInvalidateFramebuffer                   := dglGetProcAddress('glInvalidateFramebuffer');
-  glInvalidateSubFramebuffer                := dglGetProcAddress('glInvalidateSubFramebuffer');
-  glTexStorage2D                            := dglGetProcAddress('glTexStorage2D');
-  glTexStorage3D                            := dglGetProcAddress('glTexStorage3D');
-  glGetInternalformativ                     := dglGetProcAddress('glGetInternalformativ');
-
-  { OpenGL ES 3.1 }
-  glDispatchCompute                         := dglGetProcAddress('glDispatchCompute');
-  glDispatchComputeIndirect                 := dglGetProcAddress('glDispatchComputeIndirect');
-  glDrawArraysIndirect                      := dglGetProcAddress('glDrawArraysIndirect');
-  glDrawElementsIndirect                    := dglGetProcAddress('glDrawElementsIndirect');
-  glFramebufferParameteri                   := dglGetProcAddress('glFramebufferParameteri');
-  glGetFramebufferParameteriv               := dglGetProcAddress('glGetFramebufferParameteriv');
-  glGetProgramInterfaceiv                   := dglGetProcAddress('glGetProgramInterfaceiv');
-  glGetProgramResourceIndex                 := dglGetProcAddress('glGetProgramResourceIndex');
-  glGetProgramResourceName                  := dglGetProcAddress('glGetProgramResourceName');
-  glGetProgramResourceiv                    := dglGetProcAddress('glGetProgramResourceiv');
-  glGetProgramResourceLocation              := dglGetProcAddress('glGetProgramResourceLocation');
-  glUseProgramStages                        := dglGetProcAddress('glUseProgramStages');
-  glActiveShaderProgram                     := dglGetProcAddress('glActiveShaderProgram');
-  glCreateShaderProgramv                    := dglGetProcAddress('glCreateShaderProgramv');
-  glBindProgramPipeline                     := dglGetProcAddress('glBindProgramPipeline');
-  glDeleteProgramPipelines                  := dglGetProcAddress('glDeleteProgramPipelines');
-  glGenProgramPipelines                     := dglGetProcAddress('glGenProgramPipelines');
-  glIsProgramPipeline                       := dglGetProcAddress('glIsProgramPipeline');
-  glGetProgramPipelineiv                    := dglGetProcAddress('glGetProgramPipelineiv');
-  glProgramUniform1i                        := dglGetProcAddress('glProgramUniform1i');
-  glProgramUniform2i                        := dglGetProcAddress('glProgramUniform2i');
-  glProgramUniform3i                        := dglGetProcAddress('glProgramUniform3i');
-  glProgramUniform4i                        := dglGetProcAddress('glProgramUniform4i');
-  glProgramUniform1ui                       := dglGetProcAddress('glProgramUniform1ui');
-  glProgramUniform2ui                       := dglGetProcAddress('glProgramUniform2ui');
-  glProgramUniform3ui                       := dglGetProcAddress('glProgramUniform3ui');
-  glProgramUniform4ui                       := dglGetProcAddress('glProgramUniform4ui');
-  glProgramUniform1f                        := dglGetProcAddress('glProgramUniform1f');
-  glProgramUniform2f                        := dglGetProcAddress('glProgramUniform2f');
-  glProgramUniform3f                        := dglGetProcAddress('glProgramUniform3f');
-  glProgramUniform4f                        := dglGetProcAddress('glProgramUniform4f');
-  glProgramUniform1iv                       := dglGetProcAddress('glProgramUniform1iv');
-  glProgramUniform2iv                       := dglGetProcAddress('glProgramUniform2iv');
-  glProgramUniform3iv                       := dglGetProcAddress('glProgramUniform3iv');
-  glProgramUniform4iv                       := dglGetProcAddress('glProgramUniform4iv');
-  glProgramUniform1uiv                      := dglGetProcAddress('glProgramUniform1uiv');
-  glProgramUniform2uiv                      := dglGetProcAddress('glProgramUniform2uiv');
-  glProgramUniform3uiv                      := dglGetProcAddress('glProgramUniform3uiv');
-  glProgramUniform4uiv                      := dglGetProcAddress('glProgramUniform4uiv');
-  glProgramUniform1fv                       := dglGetProcAddress('glProgramUniform1fv');
-  glProgramUniform2fv                       := dglGetProcAddress('glProgramUniform2fv');
-  glProgramUniform3fv                       := dglGetProcAddress('glProgramUniform3fv');
-  glProgramUniform4fv                       := dglGetProcAddress('glProgramUniform4fv');
-  glProgramUniformMatrix2fv                 := dglGetProcAddress('glProgramUniformMatrix2fv');
-  glProgramUniformMatrix3fv                 := dglGetProcAddress('glProgramUniformMatrix3fv');
-  glProgramUniformMatrix4fv                 := dglGetProcAddress('glProgramUniformMatrix4fv');
-  glProgramUniformMatrix2x3fv               := dglGetProcAddress('glProgramUniformMatrix2x3fv');
-  glProgramUniformMatrix3x2fv               := dglGetProcAddress('glProgramUniformMatrix3x2fv');
-  glProgramUniformMatrix2x4fv               := dglGetProcAddress('glProgramUniformMatrix2x4fv');
-  glProgramUniformMatrix4x2fv               := dglGetProcAddress('glProgramUniformMatrix4x2fv');
-  glProgramUniformMatrix3x4fv               := dglGetProcAddress('glProgramUniformMatrix3x4fv');
-  glProgramUniformMatrix4x3fv               := dglGetProcAddress('glProgramUniformMatrix4x3fv');
-  glValidateProgramPipeline                 := dglGetProcAddress('glValidateProgramPipeline');
-  glGetProgramPipelineInfoLog               := dglGetProcAddress('glGetProgramPipelineInfoLog');
-  glBindImageTexture                        := dglGetProcAddress('glBindImageTexture');
-  glGetBooleaniV                            := dglGetProcAddress('glGetBooleaniV');
-  glMemoryBarrier                           := dglGetProcAddress('glMemoryBarrier');
-  glMemoryBarrierByRegion                   := dglGetProcAddress('glMemoryBarrierByRegion');
-  glTexStorage2DMultisample                 := dglGetProcAddress('glTexStorage2DMultisample');
-  glGetMultisamplefv                        := dglGetProcAddress('glGetMultisamplefv');
-  glSampleMaski                             := dglGetProcAddress('glSampleMaski');
-  glGetTexLevelParameteriv                  := dglGetProcAddress('glGetTexLevelParameteriv');
-  glGetTexLevelParameterfv                  := dglGetProcAddress('glGetTexLevelParameterfv');
-  glBindVertexBuffer                        := dglGetProcAddress('glBindVertexBuffer');
-  glVertexAttribFormat                      := dglGetProcAddress('glVertexAttribFormat');
-  glVertexAttribIFormat                     := dglGetProcAddress('glVertexAttribIFormat');
-  glVertexAttribBinding                     := dglGetProcAddress('glVertexAttribBinding');
-  glVertexBindingDivisor                    := dglGetProcAddress('glVertexBindingDivisor');
+
 end;
 
 constructor EeglError.Create(const msg: string; const aErrorCode: EGLint);
@@ -2344,4 +2599,3 @@ begin
 end;
 
 end.
-