* added extensions
[dglOpenGLES.git] / dglOpenGLES.pas
1 { ============================================================================
2
3        OpenGL 4.5 - Headertranslation
4        Version 4.5
5
6        Supported environments and targets :
7         - (Linux) FreePascal (1.9.3 and up)
8
9 ==============================================================================
10
11        Copyright (C) DGL-OpenGL-Portteam
12        All Rights Reserved
13
14        Obtained through:
15          - Delphi OpenGL Community(DGL)   - www.delphigl.com
16
17        Converted and maintained by DGL's OpenGL-Portteam :
18          - Bergmann89                     - http://www.bergmann89.de
19
20 ==============================================================================
21
22   You may retrieve the latest version of this file at the Delphi OpenGL
23   Community home page, located at http://www.delphigl.com/
24
25   The contents of this file are used with permission, subject to
26   the Mozilla Public License Version 1.1 (the "License"); you may
27   not use this file except in compliance with the License. You may
28   obtain a copy of the License at
29   http://www.mozilla.org/MPL/MPL-1.1.html
30
31   Software distributed under the License is distributed on an
32   "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
33   implied. See the License for the specific language governing
34   rights and limitations under the License.
35
36 ============================================================================== }
37
38 unit dglOpenGLES;
39
40 interface
41
42 {$IFDEF FPC}
43   {$MODE Delphi}
44 {$ENDIF}
45
46 // detecting Linux
47 {$IFDEF linux}          // Linux
48   {$DEFINE DGL_LINUX}
49 {$ENDIF}
50
51 //check if system is supported and set system dependent constants
52 uses
53   sysutils
54   {$IFDEF DGL_LINUX}
55   , dl
56   {$ENDIF}
57   ;
58
59 {$IFDEF DGL_LINUX}
60 const
61   LIBNAME_OPENGLES = 'libGLESv2.so';
62   LIBNAME_EGL      = 'libEGL.so';
63
64 {$ELSE}
65   {$ERROR 'unknown/unsupported system'}
66
67 {$ENDIF}
68
69 { ================================================== OpenGL ES ======================================================= }
70 type
71   { Types }
72   GLbyte      = Byte;
73   GLclampf    = Single;
74   GLfixed     = Integer;
75   GLclampx    = Integer;
76   GLshort     = ShortInt;
77   GLubyte     = Byte;
78   GLushort    = Word;
79   GLvoid      = Pointer;
80   GLint64     = Int64;
81   GLuint64    = UInt64;
82   GLenum      = Cardinal;
83   GLuint      = Cardinal;
84   GLchar      = AnsiChar;
85   GLbitfield  = Cardinal;
86   GLint       = Integer;
87   GLintptr    = GLint;
88   GLboolean   = ByteBool;
89   GLsizei     = Integer;
90   GLsizeiptr  = GLsizei;
91   GLfloat     = Single;
92   GLdouble    = Double;
93
94   { Pointers }
95   PGLbyte     = ^GLbyte;
96   PGLclampf   = ^GLclampf;
97   PGLfixed    = ^GLfixed;
98   PGLshort    = ^GLshort;
99   PGLubyte    = ^GLubyte;
100   PGLushort   = ^GLushort;
101   PGLvoid     = Pointer;
102   PPGLvoid    = ^PGLvoid;
103   PGLint64    = ^GLint64;
104   PGLuint64   = ^GLuint64;
105   PGLenum     = ^GLenum;
106   PGLuint     = ^GLuint;
107   PGLchar     = ^GLchar;
108   PPGLchar    = ^PGLChar;
109   PGLbitfield = ^GLbitfield;
110   PGLint      = ^GLint;
111   PGLboolean  = ^GLboolean;
112   PGLsizei    = ^GLsizei;
113   PGLfloat    = ^GLfloat;
114   PGLdouble   = ^GLdouble;
115
116   { Special }
117   GLsync = Pointer;
118
119   { Cutsom }
120   TGLvectorub2 = array[0..1] of GLubyte;
121   TGLvectorub3 = array[0..2] of GLubyte;
122   TGLvectorub4 = array[0..3] of GLubyte;
123
124   TGLvectori2 = array[0..1] of GLint;
125   TGLvectori3 = array[0..2] of GLint;
126   TGLvectori4 = array[0..3] of GLint;
127
128   TGLvectorui2 = array[0..1] of GLuint;
129   TGLvectorui3 = array[0..2] of GLuint;
130   TGLvectorui4 = array[0..3] of GLuint;
131
132   TGLvectorf2 = array[0..1] of GLfloat;
133   TGLvectorf3 = array[0..2] of GLfloat;
134   TGLvectorf4 = array[0..3] of GLfloat;
135
136   TGLvectord2 = array[0..1] of GLdouble;
137   TGLvectord3 = array[0..2] of GLdouble;
138   TGLvectord4 = array[0..3] of GLdouble;
139
140   TGLvectorp2 = array[0..1] of PGLvoid;
141   TGLvectorp3 = array[0..2] of PGLvoid;
142   TGLvectorp4 = array[0..3] of PGLvoid;
143
144 const
145 { ============================================== OpenGL ES 1.0 ======================================================= }
146 { ClearBufferMask }
147   GL_DEPTH_BUFFER_BIT                               = $00000100;
148   GL_STENCIL_BUFFER_BIT                             = $00000400;
149   GL_COLOR_BUFFER_BIT                               = $00004000;
150
151 { Boolean }
152   GL_FALSE                                          = 0;
153   GL_TRUE                                           = 1;
154
155 { BeginMode }
156   GL_POINTS                                         = $0000;
157   GL_LINES                                          = $0001;
158   GL_LINE_LOOP                                      = $0002;
159   GL_LINE_STRIP                                     = $0003;
160   GL_TRIANGLES                                      = $0004;
161   GL_TRIANGLE_STRIP                                 = $0005;
162   GL_TRIANGLE_FAN                                   = $0006;
163
164 { AlphaFunction }
165   GL_NEVER                                          = $0200;
166   GL_LESS                                           = $0201;
167   GL_EQUAL                                          = $0202;
168   GL_LEQUAL                                         = $0203;
169   GL_GREATER                                        = $0204;
170   GL_NOTEQUAL                                       = $0205;
171   GL_GEQUAL                                         = $0206;
172   GL_ALWAYS                                         = $0207;
173
174 { BlendingFactorDest }
175   GL_ZERO                                           = 0;
176   GL_ONE                                            = 1;
177   GL_SRC_COLOR                                      = $0300;
178   GL_ONE_MINUS_SRC_COLOR                            = $0301;
179   GL_SRC_ALPHA                                      = $0302;
180   GL_ONE_MINUS_SRC_ALPHA                            = $0303;
181   GL_DST_ALPHA                                      = $0304;
182   GL_ONE_MINUS_DST_ALPHA                            = $0305;
183
184 { BlendingFactorSrc }
185 { GL_ZERO }
186 { GL_ONE }
187   GL_DST_COLOR                                      = $0306;
188   GL_ONE_MINUS_DST_COLOR                            = $0307;
189   GL_SRC_ALPHA_SATURATE                             = $0308;
190 { GL_SRC_ALPHA }
191 { GL_ONE_MINUS_SRC_ALPHA }
192 { GL_DST_ALPHA }
193 { GL_ONE_MINUS_DST_ALPHA }
194
195 { ClipPlaneName }
196   GL_CLIP_PLANE0                                    = $3000;
197   GL_CLIP_PLANE1                                    = $3001;
198   GL_CLIP_PLANE2                                    = $3002;
199   GL_CLIP_PLANE3                                    = $3003;
200   GL_CLIP_PLANE4                                    = $3004;
201   GL_CLIP_PLANE5                                    = $3005;
202
203 { ColorMaterialFace }
204 { GL_FRONT_AND_BACK }
205
206 { ColorMaterialParameter }
207 { GL_AMBIENT_AND_DIFFUSE }
208
209 { ColorPointerType }
210 { GL_UNSIGNED_BYTE }
211 { GL_FLOAT }
212 { GL_FIXED }
213
214 { CullFaceMode }
215   GL_FRONT                                          = $0404;
216   GL_BACK                                           = $0405;
217   GL_FRONT_AND_BACK                                 = $0408;
218
219 { DepthFunction }
220 { GL_NEVER }
221 { GL_LESS }
222 { GL_EQUAL }
223 { GL_LEQUAL }
224 { GL_GREATER }
225 { GL_NOTEQUAL }
226 { GL_GEQUAL }
227 { GL_ALWAYS }
228
229 { EnableCap }
230   GL_FOG                                            = $0B60;
231   GL_LIGHTING                                       = $0B50;
232   GL_TEXTURE_2D                                     = $0DE1;
233   GL_CULL_FACE                                      = $0B44;
234   GL_ALPHA_TEST                                     = $0BC0;
235   GL_BLEND                                          = $0BE2;
236   GL_COLOR_LOGIC_OP                                 = $0BF2;
237   GL_DITHER                                         = $0BD0;
238   GL_STENCIL_TEST                                   = $0B90;
239   GL_DEPTH_TEST                                     = $0B71;
240 { GL_LIGHT0 }
241 { GL_LIGHT1 }
242 { GL_LIGHT2 }
243 { GL_LIGHT3 }
244 { GL_LIGHT4 }
245 { GL_LIGHT5 }
246 { GL_LIGHT6 }
247 { GL_LIGHT7 }
248   GL_POINT_SMOOTH                                   = $0B10;
249   GL_LINE_SMOOTH                                    = $0B20;
250   GL_SCISSOR_TEST                                   = $0C11;
251   GL_COLOR_MATERIAL                                 = $0B57;
252   GL_NORMALIZE                                      = $0BA1;
253   GL_RESCALE_NORMAL                                 = $803A;
254   GL_POLYGON_OFFSET_FILL                            = $8037;
255   GL_VERTEX_ARRAY                                   = $8074;
256   GL_NORMAL_ARRAY                                   = $8075;
257   GL_COLOR_ARRAY                                    = $8076;
258   GL_TEXTURE_COORD_ARRAY                            = $8078;
259   GL_MULTISAMPLE                                    = $809D;
260   GL_SAMPLE_ALPHA_TO_COVERAGE                       = $809E;
261   GL_SAMPLE_ALPHA_TO_ONE                            = $809F;
262   GL_SAMPLE_COVERAGE                                = $80A0;
263
264 { ErrorCode }
265   GL_NO_ERROR                                       = 0;
266   GL_INVALID_ENUM                                   = $0500;
267   GL_INVALID_VALUE                                  = $0501;
268   GL_INVALID_OPERATION                              = $0502;
269   GL_STACK_OVERFLOW                                 = $0503;
270   GL_STACK_UNDERFLOW                                = $0504;
271   GL_OUT_OF_MEMORY                                  = $0505;
272
273 { FogMode }
274 { GL_LINEAR }
275   GL_EXP                                            = $0800;
276   GL_EXP2                                           = $0801;
277
278 { FogParameter }
279   GL_FOG_DENSITY                                    = $0B62;
280   GL_FOG_START                                      = $0B63;
281   GL_FOG_END                                        = $0B64;
282   GL_FOG_MODE                                       = $0B65;
283   GL_FOG_COLOR                                      = $0B66;
284
285 { FrontFaceDirection }
286   GL_CW                                             = $0900;
287   GL_CCW                                            = $0901;
288
289 { GetPName }
290   GL_CURRENT_COLOR                                  = $0B00;
291   GL_CURRENT_NORMAL                                 = $0B02;
292   GL_CURRENT_TEXTURE_COORDS                         = $0B03;
293   GL_POINT_SIZE                                     = $0B11;
294   GL_POINT_SIZE_MIN                                 = $8126;
295   GL_POINT_SIZE_MAX                                 = $8127;
296   GL_POINT_FADE_THRESHOLD_SIZE                      = $8128;
297   GL_POINT_DISTANCE_ATTENUATION                     = $8129;
298   GL_SMOOTH_POINT_SIZE_RANGE                        = $0B12;
299   GL_LINE_WIDTH                                     = $0B21;
300   GL_SMOOTH_LINE_WIDTH_RANGE                        = $0B22;
301   GL_ALIASED_POINT_SIZE_RANGE                       = $846D;
302   GL_ALIASED_LINE_WIDTH_RANGE                       = $846E;
303   GL_CULL_FACE_MODE                                 = $0B45;
304   GL_FRONT_FACE                                     = $0B46;
305   GL_SHADE_MODEL                                    = $0B54;
306   GL_DEPTH_RANGE                                    = $0B70;
307   GL_DEPTH_WRITEMASK                                = $0B72;
308   GL_DEPTH_CLEAR_VALUE                              = $0B73;
309   GL_DEPTH_FUNC                                     = $0B74;
310   GL_STENCIL_CLEAR_VALUE                            = $0B91;
311   GL_STENCIL_FUNC                                   = $0B92;
312   GL_STENCIL_VALUE_MASK                             = $0B93;
313   GL_STENCIL_FAIL                                   = $0B94;
314   GL_STENCIL_PASS_DEPTH_FAIL                        = $0B95;
315   GL_STENCIL_PASS_DEPTH_PASS                        = $0B96;
316   GL_STENCIL_REF                                    = $0B97;
317   GL_STENCIL_WRITEMASK                              = $0B98;
318   GL_MATRIX_MODE                                    = $0BA0;
319   GL_VIEWPORT                                       = $0BA2;
320   GL_MODELVIEW_STACK_DEPTH                          = $0BA3;
321   GL_PROJECTION_STACK_DEPTH                         = $0BA4;
322   GL_TEXTURE_STACK_DEPTH                            = $0BA5;
323   GL_MODELVIEW_MATRIX                               = $0BA6;
324   GL_PROJECTION_MATRIX                              = $0BA7;
325   GL_TEXTURE_MATRIX                                 = $0BA8;
326   GL_ALPHA_TEST_FUNC                                = $0BC1;
327   GL_ALPHA_TEST_REF                                 = $0BC2;
328   GL_BLEND_DST                                      = $0BE0;
329   GL_BLEND_SRC                                      = $0BE1;
330   GL_LOGIC_OP_MODE                                  = $0BF0;
331   GL_SCISSOR_BOX                                    = $0C10;
332   GL_COLOR_CLEAR_VALUE                              = $0C22;
333   GL_COLOR_WRITEMASK                                = $0C23;
334   GL_UNPACK_ALIGNMENT                               = $0CF5;
335   GL_PACK_ALIGNMENT                                 = $0D05;
336   GL_MAX_LIGHTS                                     = $0D31;
337   GL_MAX_CLIP_PLANES                                = $0D32;
338   GL_MAX_TEXTURE_SIZE                               = $0D33;
339   GL_MAX_MODELVIEW_STACK_DEPTH                      = $0D36;
340   GL_MAX_PROJECTION_STACK_DEPTH                     = $0D38;
341   GL_MAX_TEXTURE_STACK_DEPTH                        = $0D39;
342   GL_MAX_VIEWPORT_DIMS                              = $0D3A;
343   GL_MAX_TEXTURE_UNITS                              = $84E2;
344   GL_SUBPIXEL_BITS                                  = $0D50;
345   GL_RED_BITS                                       = $0D52;
346   GL_GREEN_BITS                                     = $0D53;
347   GL_BLUE_BITS                                      = $0D54;
348   GL_ALPHA_BITS                                     = $0D55;
349   GL_DEPTH_BITS                                     = $0D56;
350   GL_STENCIL_BITS                                   = $0D57;
351   GL_POLYGON_OFFSET_UNITS                           = $2A00;
352   GL_POLYGON_OFFSET_FACTOR                          = $8038;
353   GL_TEXTURE_BINDING_2D                             = $8069;
354   GL_VERTEX_ARRAY_SIZE                              = $807A;
355   GL_VERTEX_ARRAY_TYPE                              = $807B;
356   GL_VERTEX_ARRAY_STRIDE                            = $807C;
357   GL_NORMAL_ARRAY_TYPE                              = $807E;
358   GL_NORMAL_ARRAY_STRIDE                            = $807F;
359   GL_COLOR_ARRAY_SIZE                               = $8081;
360   GL_COLOR_ARRAY_TYPE                               = $8082;
361   GL_COLOR_ARRAY_STRIDE                             = $8083;
362   GL_TEXTURE_COORD_ARRAY_SIZE                       = $8088;
363   GL_TEXTURE_COORD_ARRAY_TYPE                       = $8089;
364   GL_TEXTURE_COORD_ARRAY_STRIDE                     = $808A;
365   GL_VERTEX_ARRAY_POINTER                           = $808E;
366   GL_NORMAL_ARRAY_POINTER                           = $808F;
367   GL_COLOR_ARRAY_POINTER                            = $8090;
368   GL_TEXTURE_COORD_ARRAY_POINTER                    = $8092;
369   GL_SAMPLE_BUFFERS                                 = $80A8;
370   GL_SAMPLES                                        = $80A9;
371   GL_SAMPLE_COVERAGE_VALUE                          = $80AA;
372   GL_SAMPLE_COVERAGE_INVERT                         = $80AB;
373
374 { GetTextureParameter }
375 { GL_TEXTURE_MAG_FILTER }
376 { GL_TEXTURE_MIN_FILTER }
377 { GL_TEXTURE_WRAP_S }
378 { GL_TEXTURE_WRAP_T }
379
380   GL_NUM_COMPRESSED_TEXTURE_FORMATS                 = $86A2;
381   GL_COMPRESSED_TEXTURE_FORMATS                     = $86A3;
382
383 { HintMode }
384   GL_DONT_CARE                                      = $1100;
385   GL_FASTEST                                        = $1101;
386   GL_NICEST                                         = $1102;
387
388 { HintTarget }
389   GL_PERSPECTIVE_CORRECTION_HINT                    = $0C50;
390   GL_POINT_SMOOTH_HINT                              = $0C51;
391   GL_LINE_SMOOTH_HINT                               = $0C52;
392   GL_FOG_HINT                                       = $0C54;
393   GL_GENERATE_MIPMAP_HINT                           = $8192;
394
395 { LightModelParameter }
396   GL_LIGHT_MODEL_AMBIENT                            = $0B53;
397   GL_LIGHT_MODEL_TWO_SIDE                           = $0B52;
398
399 { LightParameter }
400   GL_AMBIENT                                        = $1200;
401   GL_DIFFUSE                                        = $1201;
402   GL_SPECULAR                                       = $1202;
403   GL_POSITION                                       = $1203;
404   GL_SPOT_DIRECTION                                 = $1204;
405   GL_SPOT_EXPONENT                                  = $1205;
406   GL_SPOT_CUTOFF                                    = $1206;
407   GL_CONSTANT_ATTENUATION                           = $1207;
408   GL_LINEAR_ATTENUATION                             = $1208;
409   GL_QUADRATIC_ATTENUATION                          = $1209;
410
411 { DataType }
412   GL_BYTE                                           = $1400;
413   GL_UNSIGNED_BYTE                                  = $1401;
414   GL_SHORT                                          = $1402;
415   GL_UNSIGNED_SHORT                                 = $1403;
416   GL_FLOAT                                          = $1406;
417   GL_FIXED                                          = $140C;
418
419 { LogicOp }
420   GL_CLEAR                                          = $1500;
421   GL_AND                                            = $1501;
422   GL_AND_REVERSE                                    = $1502;
423   GL_COPY                                           = $1503;
424   GL_AND_INVERTED                                   = $1504;
425   GL_NOOP                                           = $1505;
426   GL_XOR                                            = $1506;
427   GL_OR                                             = $1507;
428   GL_NOR                                            = $1508;
429   GL_EQUIV                                          = $1509;
430   GL_INVERT                                         = $150A;
431   GL_OR_REVERSE                                     = $150B;
432   GL_COPY_INVERTED                                  = $150C;
433   GL_OR_INVERTED                                    = $150D;
434   GL_NAND                                           = $150E;
435   GL_SET                                            = $150F;
436
437 { MaterialFace }
438 { GL_FRONT_AND_BACK }
439
440 { MaterialParameter }
441   GL_EMISSION                                       = $1600;
442   GL_SHININESS                                      = $1601;
443   GL_AMBIENT_AND_DIFFUSE                            = $1602;
444 { GL_AMBIENT }
445 { GL_DIFFUSE }
446 { GL_SPECULAR }
447
448 { MatrixMode }
449   GL_MODELVIEW                                      = $1700;
450   GL_PROJECTION                                     = $1701;
451   GL_TEXTURE                                        = $1702;
452
453 { NormalPointerType }
454 { GL_BYTE }
455 { GL_SHORT }
456 { GL_FLOAT }
457 { GL_FIXED }
458
459 { PixelFormat }
460   GL_ALPHA                                          = $1906;
461   GL_RGB                                            = $1907;
462   GL_RGBA                                           = $1908;
463   GL_LUMINANCE                                      = $1909;
464   GL_LUMINANCE_ALPHA                                = $190A;
465
466 { PixelType }
467 { GL_UNSIGNED_BYTE }
468   GL_UNSIGNED_SHORT_4_4_4_4                         = $8033;
469   GL_UNSIGNED_SHORT_5_5_5_1                         = $8034;
470   GL_UNSIGNED_SHORT_5_6_5                           = $8363;
471
472 { ShadingModel }
473   GL_FLAT                                           = $1D00;
474   GL_SMOOTH                                         = $1D01;
475
476 { StencilFunction }
477 { GL_NEVER }
478 { GL_LESS }
479 { GL_EQUAL }
480 { GL_LEQUAL }
481 { GL_GREATER }
482 { GL_NOTEQUAL }
483 { GL_GEQUAL }
484 { GL_ALWAYS }
485
486 { StencilOp }
487 { GL_ZERO }
488   GL_KEEP                                           = $1E00;
489   GL_REPLACE                                        = $1E01;
490   GL_INCR                                           = $1E02;
491   GL_DECR                                           = $1E03;
492 { GL_INVERT }
493
494 { StringName }
495   GL_VENDOR                                         = $1F00;
496   GL_RENDERER                                       = $1F01;
497   GL_VERSION                                        = $1F02;
498   GL_EXTENSIONS                                     = $1F03;
499
500 { TexCoordPointerType }
501 { GL_SHORT }
502 { GL_FLOAT }
503 { GL_FIXED }
504 { GL_BYTE }
505
506 { TextureEnvMode }
507   GL_MODULATE                                       = $2100;
508   GL_DECAL                                          = $2101;
509 { GL_BLEND }
510   GL_ADD                                            = $0104;
511 { GL_REPLACE }
512
513 { TextureEnvParameter }
514   GL_TEXTURE_ENV_MODE                               = $2200;
515   GL_TEXTURE_ENV_COLOR                              = $2201;
516
517 { TextureEnvTarget }
518   GL_TEXTURE_ENV                                    = $2300;
519
520 { TextureMagFilter }
521   GL_NEAREST                                        = $2600;
522   GL_LINEAR                                         = $2601;
523
524 { TextureMinFilter }
525 { GL_NEAREST }
526 { GL_LINEAR }
527   GL_NEAREST_MIPMAP_NEAREST                         = $2700;
528   GL_LINEAR_MIPMAP_NEAREST                          = $2701;
529   GL_NEAREST_MIPMAP_LINEAR                          = $2702;
530   GL_LINEAR_MIPMAP_LINEAR                           = $2703;
531
532 { TextureParameterName }
533   GL_TEXTURE_MAG_FILTER                             = $2800;
534   GL_TEXTURE_MIN_FILTER                             = $2801;
535   GL_TEXTURE_WRAP_S                                 = $2802;
536   GL_TEXTURE_WRAP_T                                 = $2803;
537   GL_GENERATE_MIPMAP                                = $8191;
538
539 { TextureTarget }
540 { GL_TEXTURE_2D }
541
542 { TextureUnit }
543   GL_TEXTURE0                                       = $84C0;
544   GL_TEXTURE1                                       = $84C1;
545   GL_TEXTURE2                                       = $84C2;
546   GL_TEXTURE3                                       = $84C3;
547   GL_TEXTURE4                                       = $84C4;
548   GL_TEXTURE5                                       = $84C5;
549   GL_TEXTURE6                                       = $84C6;
550   GL_TEXTURE7                                       = $84C7;
551   GL_TEXTURE8                                       = $84C8;
552   GL_TEXTURE9                                       = $84C9;
553   GL_TEXTURE10                                      = $84CA;
554   GL_TEXTURE11                                      = $84CB;
555   GL_TEXTURE12                                      = $84CC;
556   GL_TEXTURE13                                      = $84CD;
557   GL_TEXTURE14                                      = $84CE;
558   GL_TEXTURE15                                      = $84CF;
559   GL_TEXTURE16                                      = $84D0;
560   GL_TEXTURE17                                      = $84D1;
561   GL_TEXTURE18                                      = $84D2;
562   GL_TEXTURE19                                      = $84D3;
563   GL_TEXTURE20                                      = $84D4;
564   GL_TEXTURE21                                      = $84D5;
565   GL_TEXTURE22                                      = $84D6;
566   GL_TEXTURE23                                      = $84D7;
567   GL_TEXTURE24                                      = $84D8;
568   GL_TEXTURE25                                      = $84D9;
569   GL_TEXTURE26                                      = $84DA;
570   GL_TEXTURE27                                      = $84DB;
571   GL_TEXTURE28                                      = $84DC;
572   GL_TEXTURE29                                      = $84DD;
573   GL_TEXTURE30                                      = $84DE;
574   GL_TEXTURE31                                      = $84DF;
575   GL_ACTIVE_TEXTURE                                 = $84E0;
576   GL_CLIENT_ACTIVE_TEXTURE                          = $84E1;
577
578 { TextureWrapMode }
579   GL_REPEAT                                         = $2901;
580   GL_CLAMP_TO_EDGE                                  = $812F;
581
582 { VertexPointerType }
583 { GL_SHORT }
584 { GL_FLOAT }
585 { GL_FIXED }
586 { GL_BYTE }
587
588 { LightName }
589   GL_LIGHT0                                         = $4000;
590   GL_LIGHT1                                         = $4001;
591   GL_LIGHT2                                         = $4002;
592   GL_LIGHT3                                         = $4003;
593   GL_LIGHT4                                         = $4004;
594   GL_LIGHT5                                         = $4005;
595   GL_LIGHT6                                         = $4006;
596   GL_LIGHT7                                         = $4007;
597
598 { Buffer Objects }
599   GL_ARRAY_BUFFER                                   = $8892;
600   GL_ELEMENT_ARRAY_BUFFER                           = $8893;
601
602   GL_ARRAY_BUFFER_BINDING                           = $8894;
603   GL_ELEMENT_ARRAY_BUFFER_BINDING                   = $8895;
604   GL_VERTEX_ARRAY_BUFFER_BINDING                    = $8896;
605   GL_NORMAL_ARRAY_BUFFER_BINDING                    = $8897;
606   GL_COLOR_ARRAY_BUFFER_BINDING                     = $8898;
607   GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING             = $889A;
608
609   GL_STATIC_DRAW                                    = $88E4;
610   GL_DYNAMIC_DRAW                                   = $88E8;
611
612   GL_BUFFER_SIZE                                    = $8764;
613   GL_BUFFER_USAGE                                   = $8765;
614
615 { Texture combine + dot3 }
616   GL_SUBTRACT                                       = $84E7;
617   GL_COMBINE                                        = $8570;
618   GL_COMBINE_RGB                                    = $8571;
619   GL_COMBINE_ALPHA                                  = $8572;
620   GL_RGB_SCALE                                      = $8573;
621   GL_ADD_SIGNED                                     = $8574;
622   GL_INTERPOLATE                                    = $8575;
623   GL_CONSTANT                                       = $8576;
624   GL_PRIMARY_COLOR                                  = $8577;
625   GL_PREVIOUS                                       = $8578;
626   GL_OPERAND0_RGB                                   = $8590;
627   GL_OPERAND1_RGB                                   = $8591;
628   GL_OPERAND2_RGB                                   = $8592;
629   GL_OPERAND0_ALPHA                                 = $8598;
630   GL_OPERAND1_ALPHA                                 = $8599;
631   GL_OPERAND2_ALPHA                                 = $859A;
632
633   GL_ALPHA_SCALE                                    = $0D1C;
634
635   GL_SRC0_RGB                                       = $8580;
636   GL_SRC1_RGB                                       = $8581;
637   GL_SRC2_RGB                                       = $8582;
638   GL_SRC0_ALPHA                                     = $8588;
639   GL_SRC1_ALPHA                                     = $8589;
640   GL_SRC2_ALPHA                                     = $858A;
641
642   GL_DOT3_RGB                                       = $86AE;
643   GL_DOT3_RGBA                                      = $86AF;
644
645 { ============================================== OpenGL ES 2.0 ======================================================= }
646 { BlendEquationSeparate }
647   GL_FUNC_ADD                                       = $8006;
648   GL_BLEND_EQUATION                                 = $8009;
649   GL_BLEND_EQUATION_RGB                             = $8009;    // same as BLEND_EQUATION
650   GL_BLEND_EQUATION_ALPHA                           = $883D;
651
652 { BlendSubtract }
653   GL_FUNC_SUBTRACT                                  = $800A;
654   GL_FUNC_REVERSE_SUBTRACT                          = $800B;
655
656 { Separate Blend Functions }
657   GL_BLEND_DST_RGB                                  = $80C8;
658   GL_BLEND_SRC_RGB                                  = $80C9;
659   GL_BLEND_DST_ALPHA                                = $80CA;
660   GL_BLEND_SRC_ALPHA                                = $80CB;
661   GL_CONSTANT_COLOR                                 = $8001;
662   GL_ONE_MINUS_CONSTANT_COLOR                       = $8002;
663   GL_CONSTANT_ALPHA                                 = $8003;
664   GL_ONE_MINUS_CONSTANT_ALPHA                       = $8004;
665   GL_BLEND_COLOR                                    = $8005;
666
667 { Buffer Objects }
668   GL_STREAM_DRAW                                    = $88E0;
669   GL_CURRENT_VERTEX_ATTRIB                          = $8626;
670
671 { GetPName }
672   GL_STENCIL_BACK_FUNC                              = $8800;
673   GL_STENCIL_BACK_FAIL                              = $8801;
674   GL_STENCIL_BACK_PASS_DEPTH_FAIL                   = $8802;
675   GL_STENCIL_BACK_PASS_DEPTH_PASS                   = $8803;
676   GL_STENCIL_BACK_REF                               = $8CA3;
677   GL_STENCIL_BACK_VALUE_MASK                        = $8CA4;
678   GL_STENCIL_BACK_WRITEMASK                         = $8CA5;
679
680 { DataType }
681   GL_INT                                            = $1404;
682   GL_UNSIGNED_INT                                   = $1405;
683
684 { PixelFormat }
685   GL_DEPTH_COMPONENT                                = $1902;
686
687 { Shaders }
688   GL_FRAGMENT_SHADER                                = $8B30;
689   GL_VERTEX_SHADER                                  = $8B31;
690   GL_MAX_VERTEX_ATTRIBS                             = $8869;
691   GL_MAX_VERTEX_UNIFORM_VECTORS                     = $8DFB;
692   GL_MAX_VARYING_VECTORS                            = $8DFC;
693   GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS               = $8B4D;
694   GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS                 = $8B4C;
695   GL_MAX_TEXTURE_IMAGE_UNITS                        = $8872;
696   GL_MAX_FRAGMENT_UNIFORM_VECTORS                   = $8DFD;
697   GL_SHADER_TYPE                                    = $8B4F;
698   GL_DELETE_STATUS                                  = $8B80;
699   GL_LINK_STATUS                                    = $8B82;
700   GL_VALIDATE_STATUS                                = $8B83;
701   GL_ATTACHED_SHADERS                               = $8B85;
702   GL_ACTIVE_UNIFORMS                                = $8B86;
703   GL_ACTIVE_UNIFORM_MAX_LENGTH                      = $8B87;
704   GL_ACTIVE_ATTRIBUTES                              = $8B89;
705   GL_ACTIVE_ATTRIBUTE_MAX_LENGTH                    = $8B8A;
706   GL_SHADING_LANGUAGE_VERSION                       = $8B8C;
707   GL_CURRENT_PROGRAM                                = $8B8D;
708
709 { StencilOp }
710   GL_INCR_WRAP                                      = $8507;
711   GL_DECR_WRAP                                      = $8508;
712
713 { TextureTarget }
714   GL_TEXTURE_CUBE_MAP                               = $8513;
715   GL_TEXTURE_BINDING_CUBE_MAP                       = $8514;
716   GL_TEXTURE_CUBE_MAP_POSITIVE_X                    = $8515;
717   GL_TEXTURE_CUBE_MAP_NEGATIVE_X                    = $8516;
718   GL_TEXTURE_CUBE_MAP_POSITIVE_Y                    = $8517;
719   GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                    = $8518;
720   GL_TEXTURE_CUBE_MAP_POSITIVE_Z                    = $8519;
721   GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                    = $851A;
722   GL_MAX_CUBE_MAP_TEXTURE_SIZE                      = $851C;
723
724 { TextureWrapMode }
725   GL_MIRRORED_REPEAT                                = $8370;
726
727 { Uniform Types }
728   GL_FLOAT_VEC2                                     = $8B50;
729   GL_FLOAT_VEC3                                     = $8B51;
730   GL_FLOAT_VEC4                                     = $8B52;
731   GL_INT_VEC2                                       = $8B53;
732   GL_INT_VEC3                                       = $8B54;
733   GL_INT_VEC4                                       = $8B55;
734   GL_BOOL                                           = $8B56;
735   GL_BOOL_VEC2                                      = $8B57;
736   GL_BOOL_VEC3                                      = $8B58;
737   GL_BOOL_VEC4                                      = $8B59;
738   GL_FLOAT_MAT2                                     = $8B5A;
739   GL_FLOAT_MAT3                                     = $8B5B;
740   GL_FLOAT_MAT4                                     = $8B5C;
741   GL_SAMPLER_2D                                     = $8B5E;
742   GL_SAMPLER_CUBE                                   = $8B60;
743
744 { Vertex Arrays }
745   GL_VERTEX_ATTRIB_ARRAY_ENABLED                    = $8622;
746   GL_VERTEX_ATTRIB_ARRAY_SIZE                       = $8623;
747   GL_VERTEX_ATTRIB_ARRAY_STRIDE                     = $8624;
748   GL_VERTEX_ATTRIB_ARRAY_TYPE                       = $8625;
749   GL_VERTEX_ATTRIB_ARRAY_NORMALIZED                 = $886A;
750   GL_VERTEX_ATTRIB_ARRAY_POINTER                    = $8645;
751   GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING             = $889F;
752
753 { Read Format }
754   GL_IMPLEMENTATION_COLOR_READ_TYPE                 = $8B9A;
755   GL_IMPLEMENTATION_COLOR_READ_FORMAT               = $8B9B;
756
757 { Shader Source }
758   GL_COMPILE_STATUS                                 = $8B81;
759   GL_INFO_LOG_LENGTH                                = $8B84;
760   GL_SHADER_SOURCE_LENGTH                           = $8B88;
761   GL_SHADER_COMPILER                                = $8DFA;
762
763 { Shader Binary }
764   GL_SHADER_BINARY_FORMATS                          = $8DF8;
765   GL_NUM_SHADER_BINARY_FORMATS                      = $8DF9;
766
767 { Shader Precision-Specified Types }
768   GL_LOW_FLOAT                                      = $8DF0;
769   GL_MEDIUM_FLOAT                                   = $8DF1;
770   GL_HIGH_FLOAT                                     = $8DF2;
771   GL_LOW_INT                                        = $8DF3;
772   GL_MEDIUM_INT                                     = $8DF4;
773   GL_HIGH_INT                                       = $8DF5;
774
775 { Framebuffer Object. }
776   GL_FRAMEBUFFER                                    = $8D40;
777   GL_RENDERBUFFER                                   = $8D41;
778
779   GL_RGBA4                                          = $8056;
780   GL_RGB5_A1                                        = $8057;
781   GL_RGB565                                         = $8D62;
782   GL_DEPTH_COMPONENT16                              = $81A5;
783   GL_STENCIL_INDEX                                  = $1901;
784   GL_STENCIL_INDEX8                                 = $8D48;
785
786   GL_RENDERBUFFER_WIDTH                             = $8D42;
787   GL_RENDERBUFFER_HEIGHT                            = $8D43;
788   GL_RENDERBUFFER_INTERNAL_FORMAT                   = $8D44;
789   GL_RENDERBUFFER_RED_SIZE                          = $8D50;
790   GL_RENDERBUFFER_GREEN_SIZE                        = $8D51;
791   GL_RENDERBUFFER_BLUE_SIZE                         = $8D52;
792   GL_RENDERBUFFER_ALPHA_SIZE                        = $8D53;
793   GL_RENDERBUFFER_DEPTH_SIZE                        = $8D54;
794   GL_RENDERBUFFER_STENCIL_SIZE                      = $8D55;
795
796   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE             = $8CD0;
797   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME             = $8CD1;
798   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL           = $8CD2;
799   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE   = $8CD3;
800
801   GL_COLOR_ATTACHMENT0                              = $8CE0;
802   GL_DEPTH_ATTACHMENT                               = $8D00;
803   GL_STENCIL_ATTACHMENT                             = $8D20;
804
805   GL_NONE                                           = 0;
806
807   GL_FRAMEBUFFER_COMPLETE                           = $8CD5;
808   GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT              = $8CD6;
809   GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT      = $8CD7;
810   GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS              = $8CD9;
811   GL_FRAMEBUFFER_UNSUPPORTED                        = $8CDD;
812
813   GL_FRAMEBUFFER_BINDING                            = $8CA6;
814   GL_RENDERBUFFER_BINDING                           = $8CA7;
815   GL_MAX_RENDERBUFFER_SIZE                          = $84E8;
816
817   GL_INVALID_FRAMEBUFFER_OPERATION                  = $0506;
818
819 { ============================================== OpenGL ES 3.0 ======================================================= }
820   GL_READ_BUFFER                                    = $0C02;
821   GL_UNPACK_ROW_LENGTH                              = $0CF2;
822   GL_UNPACK_SKIP_ROWS                               = $0CF3;
823   GL_UNPACK_SKIP_PIXELS                             = $0CF4;
824   GL_PACK_ROW_LENGTH                                = $0D02;
825   GL_PACK_SKIP_ROWS                                 = $0D03;
826   GL_PACK_SKIP_PIXELS                               = $0D04;
827   GL_COLOR                                          = $1800;
828   GL_DEPTH                                          = $1801;
829   GL_STENCIL                                        = $1802;
830   GL_RED                                            = $1903;
831   GL_RGB8                                           = $8051;
832   GL_RGBA8                                          = $8058;
833   GL_RGB10_A2                                       = $8059;
834   GL_TEXTURE_BINDING_3D                             = $806A;
835   GL_UNPACK_SKIP_IMAGES                             = $806D;
836   GL_UNPACK_IMAGE_HEIGHT                            = $806E;
837   GL_TEXTURE_3D                                     = $806F;
838   GL_TEXTURE_WRAP_R                                 = $8072;
839   GL_MAX_3D_TEXTURE_SIZE                            = $8073;
840   GL_UNSIGNED_INT_2_10_10_10_REV                    = $8368;
841   GL_MAX_ELEMENTS_VERTICES                          = $80E8;
842   GL_MAX_ELEMENTS_INDICES                           = $80E9;
843   GL_TEXTURE_MIN_LOD                                = $813A;
844   GL_TEXTURE_MAX_LOD                                = $813B;
845   GL_TEXTURE_BASE_LEVEL                             = $813C;
846   GL_TEXTURE_MAX_LEVEL                              = $813D;
847   GL_MIN                                            = $8007;
848   GL_MAX                                            = $8008;
849   GL_DEPTH_COMPONENT24                              = $81A6;
850   GL_MAX_TEXTURE_LOD_BIAS                           = $84FD;
851   GL_TEXTURE_COMPARE_MODE                           = $884C;
852   GL_TEXTURE_COMPARE_FUNC                           = $884D;
853   GL_CURRENT_QUERY                                  = $8865;
854   GL_QUERY_RESULT                                   = $8866;
855   GL_QUERY_RESULT_AVAILABLE                         = $8867;
856   GL_BUFFER_MAPPED                                  = $88BC;
857   GL_BUFFER_MAP_POINTER                             = $88BD;
858   GL_STREAM_READ                                    = $88E1;
859   GL_STREAM_COPY                                    = $88E2;
860   GL_STATIC_READ                                    = $88E5;
861   GL_STATIC_COPY                                    = $88E6;
862   GL_DYNAMIC_READ                                   = $88E9;
863   GL_DYNAMIC_COPY                                   = $88EA;
864   GL_MAX_DRAW_BUFFERS                               = $8824;
865   GL_DRAW_BUFFER0                                   = $8825;
866   GL_DRAW_BUFFER1                                   = $8826;
867   GL_DRAW_BUFFER2                                   = $8827;
868   GL_DRAW_BUFFER3                                   = $8828;
869   GL_DRAW_BUFFER4                                   = $8829;
870   GL_DRAW_BUFFER5                                   = $882A;
871   GL_DRAW_BUFFER6                                   = $882B;
872   GL_DRAW_BUFFER7                                   = $882C;
873   GL_DRAW_BUFFER8                                   = $882D;
874   GL_DRAW_BUFFER9                                   = $882E;
875   GL_DRAW_BUFFER10                                  = $882F;
876   GL_DRAW_BUFFER11                                  = $8830;
877   GL_DRAW_BUFFER12                                  = $8831;
878   GL_DRAW_BUFFER13                                  = $8832;
879   GL_DRAW_BUFFER14                                  = $8833;
880   GL_DRAW_BUFFER15                                  = $8834;
881   GL_MAX_FRAGMENT_UNIFORM_COMPONENTS                = $8B49;
882   GL_MAX_VERTEX_UNIFORM_COMPONENTS                  = $8B4A;
883   GL_SAMPLER_3D                                     = $8B5F;
884   GL_SAMPLER_2D_SHADOW                              = $8B62;
885   GL_FRAGMENT_SHADER_DERIVATIVE_HINT                = $8B8B;
886   GL_PIXEL_PACK_BUFFER                              = $88EB;
887   GL_PIXEL_UNPACK_BUFFER                            = $88EC;
888   GL_PIXEL_PACK_BUFFER_BINDING                      = $88ED;
889   GL_PIXEL_UNPACK_BUFFER_BINDING                    = $88EF;
890   GL_FLOAT_MAT2x3                                   = $8B65;
891   GL_FLOAT_MAT2x4                                   = $8B66;
892   GL_FLOAT_MAT3x2                                   = $8B67;
893   GL_FLOAT_MAT3x4                                   = $8B68;
894   GL_FLOAT_MAT4x2                                   = $8B69;
895   GL_FLOAT_MAT4x3                                   = $8B6A;
896   GL_SRGB                                           = $8C40;
897   GL_SRGB8                                          = $8C41;
898   GL_SRGB8_ALPHA8                                   = $8C43;
899   GL_COMPARE_REF_TO_TEXTURE                         = $884E;
900   GL_MAJOR_VERSION                                  = $821B;
901   GL_MINOR_VERSION                                  = $821C;
902   GL_NUM_EXTENSIONS                                 = $821D;
903   GL_RGBA32F                                        = $8814;
904   GL_RGB32F                                         = $8815;
905   GL_RGBA16F                                        = $881A;
906   GL_RGB16F                                         = $881B;
907   GL_VERTEX_ATTRIB_ARRAY_INTEGER                    = $88FD;
908   GL_MAX_ARRAY_TEXTURE_LAYERS                       = $88FF;
909   GL_MIN_PROGRAM_TEXEL_OFFSET                       = $8904;
910   GL_MAX_PROGRAM_TEXEL_OFFSET                       = $8905;
911   GL_MAX_VARYING_COMPONENTS                         = $8B4B;
912   GL_TEXTURE_2D_ARRAY                               = $8C1A;
913   GL_TEXTURE_BINDING_2D_ARRAY                       = $8C1D;
914   GL_R11F_G11F_B10F                                 = $8C3A;
915   GL_UNSIGNED_INT_10F_11F_11F_REV                   = $8C3B;
916   GL_RGB9_E5                                        = $8C3D;
917   GL_UNSIGNED_INT_5_9_9_9_REV                       = $8C3E;
918   GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH          = $8C76;
919   GL_TRANSFORM_FEEDBACK_BUFFER_MODE                 = $8C7F;
920   GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS     = $8C80;
921   GL_TRANSFORM_FEEDBACK_VARYINGS                    = $8C83;
922   GL_TRANSFORM_FEEDBACK_BUFFER_START                = $8C84;
923   GL_TRANSFORM_FEEDBACK_BUFFER_SIZE                 = $8C85;
924   GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN          = $8C88;
925   GL_RASTERIZER_DISCARD                             = $8C89;
926   GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS  = $8C8A;
927   GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS        = $8C8B;
928   GL_INTERLEAVED_ATTRIBS                            = $8C8C;
929   GL_SEPARATE_ATTRIBS                               = $8C8D;
930   GL_TRANSFORM_FEEDBACK_BUFFER                      = $8C8E;
931   GL_TRANSFORM_FEEDBACK_BUFFER_BINDING              = $8C8F;
932   GL_RGBA32UI                                       = $8D70;
933   GL_RGB32UI                                        = $8D71;
934   GL_RGBA16UI                                       = $8D76;
935   GL_RGB16UI                                        = $8D77;
936   GL_RGBA8UI                                        = $8D7C;
937   GL_RGB8UI                                         = $8D7D;
938   GL_RGBA32I                                        = $8D82;
939   GL_RGB32I                                         = $8D83;
940   GL_RGBA16I                                        = $8D88;
941   GL_RGB16I                                         = $8D89;
942   GL_RGBA8I                                         = $8D8E;
943   GL_RGB8I                                          = $8D8F;
944   GL_RED_INTEGER                                    = $8D94;
945   GL_RGB_INTEGER                                    = $8D98;
946   GL_RGBA_INTEGER                                   = $8D99;
947   GL_SAMPLER_2D_ARRAY                               = $8DC1;
948   GL_SAMPLER_2D_ARRAY_SHADOW                        = $8DC4;
949   GL_SAMPLER_CUBE_SHADOW                            = $8DC5;
950   GL_UNSIGNED_INT_VEC2                              = $8DC6;
951   GL_UNSIGNED_INT_VEC3                              = $8DC7;
952   GL_UNSIGNED_INT_VEC4                              = $8DC8;
953   GL_INT_SAMPLER_2D                                 = $8DCA;
954   GL_INT_SAMPLER_3D                                 = $8DCB;
955   GL_INT_SAMPLER_CUBE                               = $8DCC;
956   GL_INT_SAMPLER_2D_ARRAY                           = $8DCF;
957   GL_UNSIGNED_INT_SAMPLER_2D                        = $8DD2;
958   GL_UNSIGNED_INT_SAMPLER_3D                        = $8DD3;
959   GL_UNSIGNED_INT_SAMPLER_CUBE                      = $8DD4;
960   GL_UNSIGNED_INT_SAMPLER_2D_ARRAY                  = $8DD7;
961   GL_BUFFER_ACCESS_FLAGS                            = $911F;
962   GL_BUFFER_MAP_LENGTH                              = $9120;
963   GL_BUFFER_MAP_OFFSET                              = $9121;
964   GL_DEPTH_COMPONENT32F                             = $8CAC;
965   GL_DEPTH32F_STENCIL8                              = $8CAD;
966   GL_FLOAT_32_UNSIGNED_INT_24_8_REV                 = $8DAD;
967   GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING          = $8210;
968   GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE          = $8211;
969   GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE                = $8212;
970   GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE              = $8213;
971   GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE               = $8214;
972   GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE              = $8215;
973   GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE              = $8216;
974   GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE            = $8217;
975   GL_FRAMEBUFFER_DEFAULT                            = $8218;
976   GL_FRAMEBUFFER_UNDEFINED                          = $8219;
977   GL_DEPTH_STENCIL_ATTACHMENT                       = $821A;
978   GL_DEPTH_STENCIL                                  = $84F9;
979   GL_UNSIGNED_INT_24_8                              = $84FA;
980   GL_DEPTH24_STENCIL8                               = $88F0;
981   GL_UNSIGNED_NORMALIZED                            = $8C17;
982   GL_DRAW_FRAMEBUFFER_BINDING                       = $8CA6;
983   GL_READ_FRAMEBUFFER                               = $8CA8;
984   GL_DRAW_FRAMEBUFFER                               = $8CA9;
985   GL_READ_FRAMEBUFFER_BINDING                       = $8CAA;
986   GL_RENDERBUFFER_SAMPLES                           = $8CAB;
987   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER           = $8CD4;
988   GL_MAX_COLOR_ATTACHMENTS                          = $8CDF;
989   GL_COLOR_ATTACHMENT1                              = $8CE1;
990   GL_COLOR_ATTACHMENT2                              = $8CE2;
991   GL_COLOR_ATTACHMENT3                              = $8CE3;
992   GL_COLOR_ATTACHMENT4                              = $8CE4;
993   GL_COLOR_ATTACHMENT5                              = $8CE5;
994   GL_COLOR_ATTACHMENT6                              = $8CE6;
995   GL_COLOR_ATTACHMENT7                              = $8CE7;
996   GL_COLOR_ATTACHMENT8                              = $8CE8;
997   GL_COLOR_ATTACHMENT9                              = $8CE9;
998   GL_COLOR_ATTACHMENT10                             = $8CEA;
999   GL_COLOR_ATTACHMENT11                             = $8CEB;
1000   GL_COLOR_ATTACHMENT12                             = $8CEC;
1001   GL_COLOR_ATTACHMENT13                             = $8CED;
1002   GL_COLOR_ATTACHMENT14                             = $8CEE;
1003   GL_COLOR_ATTACHMENT15                             = $8CEF;
1004   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE             = $8D56;
1005   GL_MAX_SAMPLES                                    = $8D57;
1006   GL_HALF_FLOAT                                     = $140B;
1007   GL_MAP_READ_BIT                                   = $0001;
1008   GL_MAP_WRITE_BIT                                  = $0002;
1009   GL_MAP_INVALIDATE_RANGE_BIT                       = $0004;
1010   GL_MAP_INVALIDATE_BUFFER_BIT                      = $0008;
1011   GL_MAP_FLUSH_EXPLICIT_BIT                         = $0010;
1012   GL_MAP_UNSYNCHRONIZED_BIT                         = $0020;
1013   GL_RG                                             = $8227;
1014   GL_RG_INTEGER                                     = $8228;
1015   GL_R8                                             = $8229;
1016   GL_RG8                                            = $822B;
1017   GL_R16F                                           = $822D;
1018   GL_R32F                                           = $822E;
1019   GL_RG16F                                          = $822F;
1020   GL_RG32F                                          = $8230;
1021   GL_R8I                                            = $8231;
1022   GL_R8UI                                           = $8232;
1023   GL_R16I                                           = $8233;
1024   GL_R16UI                                          = $8234;
1025   GL_R32I                                           = $8235;
1026   GL_R32UI                                          = $8236;
1027   GL_RG8I                                           = $8237;
1028   GL_RG8UI                                          = $8238;
1029   GL_RG16I                                          = $8239;
1030   GL_RG16UI                                         = $823A;
1031   GL_RG32I                                          = $823B;
1032   GL_RG32UI                                         = $823C;
1033   GL_VERTEX_ARRAY_BINDING                           = $85B5;
1034   GL_R8_SNORM                                       = $8F94;
1035   GL_RG8_SNORM                                      = $8F95;
1036   GL_RGB8_SNORM                                     = $8F96;
1037   GL_RGBA8_SNORM                                    = $8F97;
1038   GL_SIGNED_NORMALIZED                              = $8F9C;
1039   GL_PRIMITIVE_RESTART_FIXED_INDEX                  = $8D69;
1040   GL_COPY_READ_BUFFER                               = $8F36;
1041   GL_COPY_WRITE_BUFFER                              = $8F37;
1042   GL_COPY_READ_BUFFER_BINDING                       = $8F36;
1043   GL_COPY_WRITE_BUFFER_BINDING                      = $8F37;
1044   GL_UNIFORM_BUFFER                                 = $8A11;
1045   GL_UNIFORM_BUFFER_BINDING                         = $8A28;
1046   GL_UNIFORM_BUFFER_START                           = $8A29;
1047   GL_UNIFORM_BUFFER_SIZE                            = $8A2A;
1048   GL_MAX_VERTEX_UNIFORM_BLOCKS                      = $8A2B;
1049   GL_MAX_FRAGMENT_UNIFORM_BLOCKS                    = $8A2D;
1050   GL_MAX_COMBINED_UNIFORM_BLOCKS                    = $8A2E;
1051   GL_MAX_UNIFORM_BUFFER_BINDINGS                    = $8A2F;
1052   GL_MAX_UNIFORM_BLOCK_SIZE                         = $8A30;
1053   GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS         = $8A31;
1054   GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS       = $8A33;
1055   GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT                = $8A34;
1056   GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH           = $8A35;
1057   GL_ACTIVE_UNIFORM_BLOCKS                          = $8A36;
1058   GL_UNIFORM_TYPE                                   = $8A37;
1059   GL_UNIFORM_SIZE                                   = $8A38;
1060   GL_UNIFORM_NAME_LENGTH                            = $8A39;
1061   GL_UNIFORM_BLOCK_INDEX                            = $8A3A;
1062   GL_UNIFORM_OFFSET                                 = $8A3B;
1063   GL_UNIFORM_ARRAY_STRIDE                           = $8A3C;
1064   GL_UNIFORM_MATRIX_STRIDE                          = $8A3D;
1065   GL_UNIFORM_IS_ROW_MAJOR                           = $8A3E;
1066   GL_UNIFORM_BLOCK_BINDING                          = $8A3F;
1067   GL_UNIFORM_BLOCK_DATA_SIZE                        = $8A40;
1068   GL_UNIFORM_BLOCK_NAME_LENGTH                      = $8A41;
1069   GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS                  = $8A42;
1070   GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES           = $8A43;
1071   GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER      = $8A44;
1072   GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER    = $8A46;
1073   GL_INVALID_INDEX                                  = $FFFFFFFF;
1074   GL_MAX_VERTEX_OUTPUT_COMPONENTS                   = $9122;
1075   GL_MAX_FRAGMENT_INPUT_COMPONENTS                  = $9125;
1076   GL_MAX_SERVER_WAIT_TIMEOUT                        = $9111;
1077   GL_OBJECT_TYPE                                    = $9112;
1078   GL_SYNC_CONDITION                                 = $9113;
1079   GL_SYNC_STATUS                                    = $9114;
1080   GL_SYNC_FLAGS                                     = $9115;
1081   GL_SYNC_FENCE                                     = $9116;
1082   GL_SYNC_GPU_COMMANDS_COMPLETE                     = $9117;
1083   GL_UNSIGNALED                                     = $9118;
1084   GL_SIGNALED                                       = $9119;
1085   GL_ALREADY_SIGNALED                               = $911A;
1086   GL_TIMEOUT_EXPIRED                                = $911B;
1087   GL_CONDITION_SATISFIED                            = $911C;
1088   GL_WAIT_FAILED                                    = $911D;
1089   GL_SYNC_FLUSH_COMMANDS_BIT                        = $00000001;
1090   GL_TIMEOUT_IGNORED                                = $FFFFFFFFFFFFFFFF;
1091   GL_VERTEX_ATTRIB_ARRAY_DIVISOR                    = $88FE;
1092   GL_ANY_SAMPLES_PASSED                             = $8C2F;
1093   GL_ANY_SAMPLES_PASSED_CONSERVATIVE                = $8D6A;
1094   GL_SAMPLER_BINDING                                = $8919;
1095   GL_RGB10_A2UI                                     = $906F;
1096   GL_TEXTURE_SWIZZLE_R                              = $8E42;
1097   GL_TEXTURE_SWIZZLE_G                              = $8E43;
1098   GL_TEXTURE_SWIZZLE_B                              = $8E44;
1099   GL_TEXTURE_SWIZZLE_A                              = $8E45;
1100   GL_GREEN                                          = $1904;
1101   GL_BLUE                                           = $1905;
1102   GL_INT_2_10_10_10_REV                             = $8D9F;
1103   GL_TRANSFORM_FEEDBACK                             = $8E22;
1104   GL_TRANSFORM_FEEDBACK_PAUSED                      = $8E23;
1105   GL_TRANSFORM_FEEDBACK_ACTIVE                      = $8E24;
1106   GL_TRANSFORM_FEEDBACK_BINDING                     = $8E25;
1107   GL_PROGRAM_BINARY_RETRIEVABLE_HINT                = $8257;
1108   GL_PROGRAM_BINARY_LENGTH                          = $8741;
1109   GL_NUM_PROGRAM_BINARY_FORMATS                     = $87FE;
1110   GL_PROGRAM_BINARY_FORMATS                         = $87FF;
1111   GL_COMPRESSED_R11_EAC                             = $9270;
1112   GL_COMPRESSED_SIGNED_R11_EAC                      = $9271;
1113   GL_COMPRESSED_RG11_EAC                            = $9272;
1114   GL_COMPRESSED_SIGNED_RG11_EAC                     = $9273;
1115   GL_COMPRESSED_RGB8_ETC2                           = $9274;
1116   GL_COMPRESSED_SRGB8_ETC2                          = $9275;
1117   GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2       = $9276;
1118   GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2      = $9277;
1119   GL_COMPRESSED_RGBA8_ETC2_EAC                      = $9278;
1120   GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC               = $9279;
1121   GL_TEXTURE_IMMUTABLE_FORMAT                       = $912F;
1122   GL_MAX_ELEMENT_INDEX                              = $8D6B;
1123   GL_NUM_SAMPLE_COUNTS                              = $9380;
1124   GL_TEXTURE_IMMUTABLE_LEVELS                       = $82DF;
1125
1126 { ============================================== OpenGL ES 3.1 ======================================================= }
1127   GL_COMPUTE_SHADER                                 = $91B9;
1128   GL_MAX_COMPUTE_UNIFORM_BLOCKS                     = $91BB;
1129   GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS                = $91BC;
1130   GL_MAX_COMPUTE_IMAGE_UNIFORMS                     = $91BD;
1131   GL_MAX_COMPUTE_SHARED_MEMORY_SIZE                 = $8262;
1132   GL_MAX_COMPUTE_UNIFORM_COMPONENTS                 = $8263;
1133   GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS             = $8264;
1134   GL_MAX_COMPUTE_ATOMIC_COUNTERS                    = $8265;
1135   GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS        = $8266;
1136   GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS             = $90EB;
1137   GL_MAX_COMPUTE_WORK_GROUP_COUNT                   = $91BE;
1138   GL_MAX_COMPUTE_WORK_GROUP_SIZE                    = $91BF;
1139   GL_COMPUTE_WORK_GROUP_SIZE                        = $8267;
1140   GL_DISPATCH_INDIRECT_BUFFER                       = $90EE;
1141   GL_DISPATCH_INDIRECT_BUFFER_BINDING               = $90EF;
1142   GL_COMPUTE_SHADER_BIT                             = $00000020;
1143   GL_DRAW_INDIRECT_BUFFER                           = $8F3F;
1144   GL_DRAW_INDIRECT_BUFFER_BINDING                   = $8F43;
1145   GL_MAX_UNIFORM_LOCATIONS                          = $826E;
1146   GL_FRAMEBUFFER_DEFAULT_WIDTH                      = $9310;
1147   GL_FRAMEBUFFER_DEFAULT_HEIGHT                     = $9311;
1148   GL_FRAMEBUFFER_DEFAULT_SAMPLES                    = $9313;
1149   GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS     = $9314;
1150   GL_MAX_FRAMEBUFFER_WIDTH                          = $9315;
1151   GL_MAX_FRAMEBUFFER_HEIGHT                         = $9316;
1152   GL_MAX_FRAMEBUFFER_SAMPLES                        = $9318;
1153   GL_UNIFORM                                        = $92E1;
1154   GL_UNIFORM_BLOCK                                  = $92E2;
1155   GL_PROGRAM_INPUT                                  = $92E3;
1156   GL_PROGRAM_OUTPUT                                 = $92E4;
1157   GL_BUFFER_VARIABLE                                = $92E5;
1158   GL_SHADER_STORAGE_BLOCK                           = $92E6;
1159   GL_ATOMIC_COUNTER_BUFFER                          = $92C0;
1160   GL_TRANSFORM_FEEDBACK_VARYING                     = $92F4;
1161   GL_ACTIVE_RESOURCES                               = $92F5;
1162   GL_MAX_NAME_LENGTH                                = $92F6;
1163   GL_MAX_NUM_ACTIVE_VARIABLES                       = $92F7;
1164   GL_NAME_LENGTH                                    = $92F9;
1165   GL_TYPE                                           = $92FA;
1166   GL_ARRAY_SIZE                                     = $92FB;
1167   GL_OFFSET                                         = $92FC;
1168   GL_BLOCK_INDEX                                    = $92FD;
1169   GL_ARRAY_STRIDE                                   = $92FE;
1170   GL_MATRIX_STRIDE                                  = $92FF;
1171   GL_IS_ROW_MAJOR                                   = $9300;
1172   GL_ATOMIC_COUNTER_BUFFER_INDEX                    = $9301;
1173   GL_BUFFER_BINDING                                 = $9302;
1174   GL_BUFFER_DATA_SIZE                               = $9303;
1175   GL_NUM_ACTIVE_VARIABLES                           = $9304;
1176   GL_ACTIVE_VARIABLES                               = $9305;
1177   GL_REFERENCED_BY_VERTEX_SHADER                    = $9306;
1178   GL_REFERENCED_BY_FRAGMENT_SHADER                  = $930A;
1179   GL_REFERENCED_BY_COMPUTE_SHADER                   = $930B;
1180   GL_TOP_LEVEL_ARRAY_SIZE                           = $930C;
1181   GL_TOP_LEVEL_ARRAY_STRIDE                         = $930D;
1182   GL_LOCATION                                       = $930E;
1183   GL_VERTEX_SHADER_BIT                              = $00000001;
1184   GL_FRAGMENT_SHADER_BIT                            = $00000002;
1185   GL_ALL_SHADER_BITS                                = $FFFFFFFF;
1186   GL_PROGRAM_SEPARABLE                              = $8258;
1187   GL_ACTIVE_PROGRAM                                 = $8259;
1188   GL_PROGRAM_PIPELINE_BINDING                       = $825A;
1189   GL_ATOMIC_COUNTER_BUFFER_BINDING                  = $92C1;
1190   GL_ATOMIC_COUNTER_BUFFER_START                    = $92C2;
1191   GL_ATOMIC_COUNTER_BUFFER_SIZE                     = $92C3;
1192   GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS              = $92CC;
1193   GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS            = $92D0;
1194   GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS            = $92D1;
1195   GL_MAX_VERTEX_ATOMIC_COUNTERS                     = $92D2;
1196   GL_MAX_FRAGMENT_ATOMIC_COUNTERS                   = $92D6;
1197   GL_MAX_COMBINED_ATOMIC_COUNTERS                   = $92D7;
1198   GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE                 = $92D8;
1199   GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS             = $92DC;
1200   GL_ACTIVE_ATOMIC_COUNTER_BUFFERS                  = $92D9;
1201   GL_UNSIGNED_INT_ATOMIC_COUNTER                    = $92DB;
1202   GL_MAX_IMAGE_UNITS                                = $8F38;
1203   GL_MAX_VERTEX_IMAGE_UNIFORMS                      = $90CA;
1204   GL_MAX_FRAGMENT_IMAGE_UNIFORMS                    = $90CE;
1205   GL_MAX_COMBINED_IMAGE_UNIFORMS                    = $90CF;
1206   GL_IMAGE_BINDING_NAME                             = $8F3A;
1207   GL_IMAGE_BINDING_LEVEL                            = $8F3B;
1208   GL_IMAGE_BINDING_LAYERED                          = $8F3C;
1209   GL_IMAGE_BINDING_LAYER                            = $8F3D;
1210   GL_IMAGE_BINDING_ACCESS                           = $8F3E;
1211   GL_IMAGE_BINDING_FORMAT                           = $906E;
1212   GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT                = $00000001;
1213   GL_ELEMENT_ARRAY_BARRIER_BIT                      = $00000002;
1214   GL_UNIFORM_BARRIER_BIT                            = $00000004;
1215   GL_TEXTURE_FETCH_BARRIER_BIT                      = $00000008;
1216   GL_SHADER_IMAGE_ACCESS_BARRIER_BIT                = $00000020;
1217   GL_COMMAND_BARRIER_BIT                            = $00000040;
1218   GL_PIXEL_BUFFER_BARRIER_BIT                       = $00000080;
1219   GL_TEXTURE_UPDATE_BARRIER_BIT                     = $00000100;
1220   GL_BUFFER_UPDATE_BARRIER_BIT                      = $00000200;
1221   GL_FRAMEBUFFER_BARRIER_BIT                        = $00000400;
1222   GL_TRANSFORM_FEEDBACK_BARRIER_BIT                 = $00000800;
1223   GL_ATOMIC_COUNTER_BARRIER_BIT                     = $00001000;
1224   GL_ALL_BARRIER_BITS                               = $FFFFFFFF;
1225   GL_IMAGE_2D                                       = $904D;
1226   GL_IMAGE_3D                                       = $904E;
1227   GL_IMAGE_CUBE                                     = $9050;
1228   GL_IMAGE_2D_ARRAY                                 = $9053;
1229   GL_INT_IMAGE_2D                                   = $9058;
1230   GL_INT_IMAGE_3D                                   = $9059;
1231   GL_INT_IMAGE_CUBE                                 = $905B;
1232   GL_INT_IMAGE_2D_ARRAY                             = $905E;
1233   GL_UNSIGNED_INT_IMAGE_2D                          = $9063;
1234   GL_UNSIGNED_INT_IMAGE_3D                          = $9064;
1235   GL_UNSIGNED_INT_IMAGE_CUBE                        = $9066;
1236   GL_UNSIGNED_INT_IMAGE_2D_ARRAY                    = $9069;
1237   GL_IMAGE_FORMAT_COMPATIBILITY_TYPE                = $90C7;
1238   GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE             = $90C8;
1239   GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS            = $90C9;
1240   GL_READ_ONLY                                      = $88B8;
1241   GL_WRITE_ONLY                                     = $88B9;
1242   GL_READ_WRITE                                     = $88BA;
1243   GL_SHADER_STORAGE_BUFFER                          = $90D2;
1244   GL_SHADER_STORAGE_BUFFER_BINDING                  = $90D3;
1245   GL_SHADER_STORAGE_BUFFER_START                    = $90D4;
1246   GL_SHADER_STORAGE_BUFFER_SIZE                     = $90D5;
1247   GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS               = $90D6;
1248   GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS             = $90DA;
1249   GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS              = $90DB;
1250   GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS             = $90DC;
1251   GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS             = $90DD;
1252   GL_MAX_SHADER_STORAGE_BLOCK_SIZE                  = $90DE;
1253   GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT         = $90DF;
1254   GL_SHADER_STORAGE_BARRIER_BIT                     = $00002000;
1255   GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES           = $8F39;
1256   GL_DEPTH_STENCIL_TEXTURE_MODE                     = $90EA;
1257   GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET              = $8E5E;
1258   GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET              = $8E5F;
1259   GL_SAMPLE_POSITION                                = $8E50;
1260   GL_SAMPLE_MASK                                    = $8E51;
1261   GL_SAMPLE_MASK_VALUE                              = $8E52;
1262   GL_TEXTURE_2D_MULTISAMPLE                         = $9100;
1263   GL_MAX_SAMPLE_MASK_WORDS                          = $8E59;
1264   GL_MAX_COLOR_TEXTURE_SAMPLES                      = $910E;
1265   GL_MAX_DEPTH_TEXTURE_SAMPLES                      = $910F;
1266   GL_MAX_INTEGER_SAMPLES                            = $9110;
1267   GL_TEXTURE_BINDING_2D_MULTISAMPLE                 = $9104;
1268   GL_TEXTURE_SAMPLES                                = $9106;
1269   GL_TEXTURE_FIXED_SAMPLE_LOCATIONS                 = $9107;
1270   GL_TEXTURE_WIDTH                                  = $1000;
1271   GL_TEXTURE_HEIGHT                                 = $1001;
1272   GL_TEXTURE_DEPTH                                  = $8071;
1273   GL_TEXTURE_INTERNAL_FORMAT                        = $1003;
1274   GL_TEXTURE_RED_SIZE                               = $805C;
1275   GL_TEXTURE_GREEN_SIZE                             = $805D;
1276   GL_TEXTURE_BLUE_SIZE                              = $805E;
1277   GL_TEXTURE_ALPHA_SIZE                             = $805F;
1278   GL_TEXTURE_DEPTH_SIZE                             = $884A;
1279   GL_TEXTURE_STENCIL_SIZE                           = $88F1;
1280   GL_TEXTURE_SHARED_SIZE                            = $8C3F;
1281   GL_TEXTURE_RED_TYPE                               = $8C10;
1282   GL_TEXTURE_GREEN_TYPE                             = $8C11;
1283   GL_TEXTURE_BLUE_TYPE                              = $8C12;
1284   GL_TEXTURE_ALPHA_TYPE                             = $8C13;
1285   GL_TEXTURE_DEPTH_TYPE                             = $8C16;
1286   GL_TEXTURE_COMPRESSED                             = $86A1;
1287   GL_SAMPLER_2D_MULTISAMPLE                         = $9108;
1288   GL_INT_SAMPLER_2D_MULTISAMPLE                     = $9109;
1289   GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE            = $910A;
1290   GL_VERTEX_ATTRIB_BINDING                          = $82D4;
1291   GL_VERTEX_ATTRIB_RELATIVE_OFFSET                  = $82D5;
1292   GL_VERTEX_BINDING_DIVISOR                         = $82D6;
1293   GL_VERTEX_BINDING_OFFSET                          = $82D7;
1294   GL_VERTEX_BINDING_STRIDE                          = $82D8;
1295   GL_VERTEX_BINDING_BUFFER                          = $8F4F;
1296   GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET              = $82D9;
1297   GL_MAX_VERTEX_ATTRIB_BINDINGS                     = $82DA;
1298   GL_MAX_VERTEX_ATTRIB_STRIDE                       = $82E5;
1299
1300 type
1301 { ============================================== OpenGL ES 1.0 ======================================================= }
1302 { Available only in Common profile }
1303   TglAlphaFunc                              = procedure(aFunc: GLenum; aRef: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1304   TglClearColor                             = procedure(aRed: GLclampf; aGreen: GLclampf; aBlue: GLclampf; aAlpha: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1305   TglClearDepthf                            = procedure(aDepth: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1306   TglClipPlanef                             = procedure(aPlane: GLenum; const aEquation: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1307   TglColor4f                                = procedure(aRed: GLfloat; aGreen: GLfloat; aBlue: GLfloat; aAlpha: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1308   TglDepthRangef                            = procedure(aZNear: GLclampf; aZFar: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1309   TglFogf                                   = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1310   TglFogfv                                  = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1311   TglFrustumf                               = procedure(aLeft: GLfloat; aRight: GLfloat; aBottom: GLfloat; aTop: GLfloat; aZNear: GLfloat; aZFar: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1312   TglGetClipPlanef                          = procedure(aPname: GLenum; aEquation: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1313   TglGetFloatv                              = procedure(aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1314   TglGetLightfv                             = procedure(aLight: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1315   TglGetMaterialfv                          = procedure(aFace: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1316   TglGetTexEnvfv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1317   TglGetTexParameterfv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1318   TglLightModelf                            = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1319   TglLightModelfv                           = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1320   TglLightf                                 = procedure(aLight: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1321   TglLightfv                                = procedure(aLight: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1322   TglLineWidth                              = procedure(aWidth: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1323   TglLoadMatrixf                            = procedure(const aMatrix: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1324   TglMaterialf                              = procedure(aFace: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1325   TglMaterialfv                             = procedure(aFace: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1326   TglMultMatrixf                            = procedure(const aMatrix: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1327   TglMultiTexCoord4f                        = procedure(aTarget: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1328   TglNormal3f                               = procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1329   TglOrthof                                 = procedure(aLeft: GLfloat; aRight: GLfloat; aBottom: GLfloat; aTop: GLfloat; aZNear: GLfloat; aZFar: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1330   TglPointParameterf                        = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1331   TglPointParameterfv                       = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1332   TglPointSize                              = procedure(aSize: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1333   TglPolygonOffset                          = procedure(aFactor: GLfloat; aUnits: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1334   TglRotatef                                = procedure(aAngle: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1335   TglScalef                                 = procedure(x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1336   TglTexEnvf                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1337   TglTexEnvfv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1338   TglTexParameterf                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1339   TglTexParameterfv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1340   TglTranslatef                             = procedure(x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1341
1342 { Available in both Common and Common-Lite profiles }
1343   TglActiveTexture                          = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1344   TglAlphaFuncx                             = procedure(aFunc: GLenum; aRef: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1345   TglBindBuffer                             = procedure(aTarget: GLenum; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1346   TglBindTexture                            = procedure(aTarget: GLenum; aTexture: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1347   TglBlendFunc                              = procedure(aSfactor: GLenum; aDfactor: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1348   TglBufferData                             = procedure(aTarget: GLenum; aSize: GLsizeiptr; const aData: PGLvoid; aUsage: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1349   TglBufferSubData                          = procedure(aTarget: GLenum; aOffset: GLintptr; aSize: GLsizeiptr; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1350   TglClear                                  = procedure(aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1351   TglClearColorx                            = procedure(aRed: GLclampx; aGreen: GLclampx; aBlue: GLclampx; aAlpha: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1352   TglClearDepthx                            = procedure(aDepth: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1353   TglClearStencil                           = procedure(aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1354   TglClientActiveTexture                    = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1355   TglClipPlanex                             = procedure(aPlane: GLenum; const aEquation: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1356   TglColor4ub                               = procedure(aRed: GLubyte; aGreen: GLubyte; aBlue: GLubyte; aAlpha: GLubyte); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1357   TglColor4x                                = procedure(aRed: GLfixed; aGreen: GLfixed; aBlue: GLfixed; aAlpha: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1358   TglColorMask                              = procedure(aRed: GLboolean; aGreen: GLboolean; aBlue: GLboolean; aAlpha: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1359   TglColorPointer                           = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1360   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}
1361   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}
1362   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}
1363   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}
1364   TglCullFace                               = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1365   TglDeleteBuffers                          = procedure(n: GLsizei; const aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1366   TglDeleteTextures                         = procedure(n: GLsizei; const aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1367   TglDepthFunc                              = procedure(aFunc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1368   TglDepthMask                              = procedure(aFlag: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1369   TglDepthRangex                            = procedure(aZNear: GLclampx; aZFar: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1370   TglDisable                                = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1371   TglDisableClientState                     = procedure(aArray: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1372   TglDrawArrays                             = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1373   TglDrawElements                           = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1374   TglEnable                                 = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1375   TglEnableClientState                      = procedure(aArray: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1376   TglFinish                                 = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1377   TglFlush                                  = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1378   TglFogx                                   = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1379   TglFogxv                                  = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1380   TglFrontFace                              = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1381   TglFrustumx                               = procedure(aLeft: GLfixed; aRight: GLfixed; aBottom: GLfixed; aTop: GLfixed; aZNear: GLfixed; aZFar: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1382   TglGetBooleanv                            = procedure(aPname: GLenum; aParams: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1383   TglGetBufferParameteriv                   = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1384   TglGetClipPlanex                          = procedure(aPname: GLenum; aEquation: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1385   TglGenBuffers                             = procedure(n: GLsizei; aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1386   TglGenTextures                            = procedure(n: GLsizei; aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1387   TglGetError                               = function (): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1388   TglGetFixedv                              = procedure(aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1389   TglGetIntegerv                            = procedure(aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1390   TglGetLightxv                             = procedure(aLight: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1391   TglGetMaterialxv                          = procedure(aFace: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1392   TglGetPointerv                            = procedure(aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1393   TglGetString                              = function (name: GLenum): PGLubyte; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1394   TglGetTexEnviv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1395   TglGetTexEnvxv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1396   TglGetTexParameteriv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1397   TglGetTexParameterxv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1398   TglHint                                   = procedure(aTarget: GLenum; aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1399   TglIsBuffer                               = function (aBuffer: GLuint): GLboolean;                                                {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1400   TglIsEnabled                              = function (aCap: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1401   TglIsTexture                              = function (aTexture: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1402   TglLightModelx                            = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1403   TglLightModelxv                           = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1404   TglLightx                                 = procedure(aLight: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1405   TglLightxv                                = procedure(aLight: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1406   TglLineWidthx                             = procedure(aWidth: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1407   TglLoadIdentity                           = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1408   TglLoadMatrix                             = procedure(const aMatrix: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1409   TglLogicOp                                = procedure(aOpcode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1410   TglMaterialx                              = procedure(aFace: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1411   TglMaterialxv                             = procedure(aFace: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1412   TglMatrixMode                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1413   TglMultMatrixx                            = procedure(const aMatrix: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1414   TglMultiTexCoord4x                        = procedure(aTarget: GLenum; s: GLfixed; t: GLfixed; r: GLfixed; q: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1415   TglNormal3x                               = procedure(nx: GLfixed; ny: GLfixed; nz: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1416   TglNormalPointer                          = procedure(aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1417   TglOrthox                                 = procedure(aLeft: GLfixed; aRight: GLfixed; aBottom: GLfixed; aTop: GLfixed; aZNear: GLfixed; aZFar: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1418   TglPixelStorei                            = procedure(aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1419   TglPointParameterx                        = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1420   TglPointParameterxv                       = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1421   TglPointSizex                             = procedure(aSize: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1422   TglPolygonOffsetx                         = procedure(aFactor: GLfixed; aUnits: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1423   TglPopMatrix                              = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1424   TglPushMatrix                             = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1425   TglReadPixels                             = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1426   TglRotatex                                = procedure(aAngle: GLfixed; x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1427   TglSampleCoverage                         = procedure(aValue: GLclampf; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1428   TglSampleCoveragex                        = procedure(aValue: GLclampx; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1429   TglScalex                                 = procedure(x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1430   TglScissor                                = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1431   TglShadeModel                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1432   TglStencilFunc                            = procedure(aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1433   TglStencilMask                            = procedure(aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1434   TglStencilOp                              = procedure(aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1435   TglTexCoordPointer                        = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1436   TglTexEnvi                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1437   TglTexEnvx                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1438   TglTexEnviv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1439   TglTexEnvxv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1440   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}
1441   TglTexParameteri                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1442   TglTexParameterx                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1443   TglTexParameteriv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1444   TglTexParameterxv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1445   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}
1446   TglTranslatex                             = procedure(x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1447   TglVertexPointer                          = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1448   TglViewport                               = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1449
1450 { ============================================== OpenGL ES 2.0 ======================================================= }
1451   TglAttachShader                           = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1452   TglBindAttribLocation                     = procedure(aProgram: GLuint; aIndex: GLuint; const aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1453   TglBindFramebuffer                        = procedure(aTarget: GLenum; aFramebuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1454   TglBindRenderbuffer                       = procedure(aTarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1455   TglBlendColor                             = procedure(aRed: GLclampf; aGreen: GLclampf; aBlue: GLclampf; aAlpha: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1456   TglBlendEquation                          = procedure( mode : GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1457   TglBlendEquationSeparate                  = procedure(aModeRGB: GLenum; aModeAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1458   TglBlendFuncSeparate                      = procedure(aSrcRGB: GLenum; aDstRGB: GLenum; aSrcAlpha: GLenum; aDstAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1459   TglCheckFramebufferStatus                 = function (aTarget: GLenum): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1460   TglCompileShader                          = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1461   TglCreateProgram                          = function (): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1462   TglCreateShader                           = function (aType: GLenum): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1463   TglDeleteFramebuffers                     = procedure(n: GLsizei; const aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1464   TglDeleteProgram                          = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1465   TglDeleteRenderbuffers                    = procedure(n: GLsizei; const aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1466   TglDeleteShader                           = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1467   TglDetachShader                           = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1468   TglDisableVertexAttribArray               = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1469   TglEnableVertexAttribArray                = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1470   TglFramebufferRenderbuffer                = procedure(aTarget: GLenum; aAttachment: GLenum; aRenderbuffertarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1471   TglFramebufferTexture2D                   = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1472   TglGenerateMipmap                         = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1473   TglGenFramebuffers                        = procedure(n: GLsizei; aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1474   TglGenRenderbuffers                       = procedure(n: GLsizei; aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1475   TglGetActiveAttrib                        = procedure(aProgram: GLuint; aIndex: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1476   TglGetActiveUniform                       = procedure(aProgram: GLuint; aIndex: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1477   TglGetAttachedShaders                     = procedure(aProgram: GLuint; aMaxcount: GLsizei; aCount: PGLsizei; aShaders: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1478   TglGetAttribLocation                      = function (aProgram: GLuint; const aName: PGLchar): Integer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1479   TglGetFramebufferAttachmentParameteriv    = procedure(aTarget: GLenum; aAttachment: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1480   TglGetProgramiv                           = procedure(aProgram: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1481   TglGetProgramInfoLog                      = procedure(aProgram: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aInfolog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1482   TglGetRenderbufferParameteriv             = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1483   TglGetShaderiv                            = procedure(aShader: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1484   TglGetShaderInfoLog                       = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aInfolog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1485   TglGetShaderPrecisionFormat               = procedure(aShadertype: GLenum; aPrecisiontype: GLenum; aRange: PGLint; aPrecision: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1486   TglGetShaderSource                        = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSource: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1487   TglGetUniformfv                           = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1488   TglGetUniformiv                           = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1489   TglGetUniformLocation                     = function (aProgram: GLuint; const aName: PGLchar): Integer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1490   TglGetVertexAttribfv                      = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1491   TglGetVertexAttribiv                      = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1492   TglGetVertexAttribPointerv                = procedure(aIndex: GLuint; aPname: GLenum; aPointer: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1493   TglIsFramebuffer                          = function (aFramebuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1494   TglIsProgram                              = function (aProgram: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1495   TglIsRenderbuffer                         = function (aRenderbuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1496   TglIsShader                               = function (aShader: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1497   TglLinkProgram                            = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1498   TglReleaseShaderCompiler                  = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1499   TglRenderbufferStorage                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1500   TglShaderBinary                           = procedure(n: GLsizei; const aShaders: PGLuint; aBinaryformat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1501   TglShaderSource                           = procedure(aShader: GLuint; aCount: GLsizei; const aString: PPGLchar; const aLength: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1502   TglStencilFuncSeparate                    = procedure(aFace: GLenum; aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1503   TglStencilMaskSeparate                    = procedure(aFace: GLenum; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1504   TglStencilOpSeparate                      = procedure(aFace: GLenum; aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1505   TglUniform1f                              = procedure(aLocation: GLint; x: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1506   TglUniform1fv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1507   TglUniform1i                              = procedure(aLocation: GLint; x: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1508   TglUniform1iv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1509   TglUniform2f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1510   TglUniform2fv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1511   TglUniform2i                              = procedure(aLocation: GLint; x: GLint; y: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1512   TglUniform2iv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1513   TglUniform3f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1514   TglUniform3fv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1515   TglUniform3i                              = procedure(aLocation: GLint; x: GLint; y: GLint; z: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1516   TglUniform3iv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1517   TglUniform4f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1518   TglUniform4fv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1519   TglUniform4i                              = procedure(aLocation: GLint; x: GLint; y: GLint; z: GLint; w: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1520   TglUniform4iv                             = procedure(aLocation: GLint; aCount: GLsizei; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1521   TglUniformMatrix2fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1522   TglUniformMatrix3fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1523   TglUniformMatrix4fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1524   TglUseProgram                             = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1525   TglValidateProgram                        = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1526   TglVertexAttrib1f                         = procedure(aIndex: GLuint; x: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1527   TglVertexAttrib1fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1528   TglVertexAttrib2f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1529   TglVertexAttrib2fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1530   TglVertexAttrib3f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1531   TglVertexAttrib3fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1532   TglVertexAttrib4f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; w: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1533   TglVertexAttrib4fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1534   TglVertexAttribPointer                    = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aStride: GLsizei; const aPtr: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1535
1536 { ============================================== OpenGL ES 3.0 ======================================================= }
1537   TglReadBuffer                             = procedure(aSrc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1538   TglDrawRangeElements                      = procedure(aMode: GLenum; aStart: GLuint; aEnd: GLuint; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1539   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}
1540   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}
1541   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}
1542   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}
1543   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}
1544   TglGenQueries                             = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1545   TglDeleteQueries                          = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1546   TglIsQuery                                = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1547   TglBeginQuery                             = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1548   TglEndQuery                               = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1549   TglGetQueryiv                             = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1550   TglGetQueryObjectuiv                      = procedure(aId: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1551   TglUnmapBuffer                            = function (aTarget: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1552   TglGetBufferPointerv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1553   TglDrawBuffers                            = procedure(n: GLsizei; const aBuffers: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1554   TglUniformMatrix2x3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1555   TglUniformMatrix3x2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1556   TglUniformMatrix2x4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1557   TglUniformMatrix4x2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1558   TglUniformMatrix3x4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1559   TglUniformMatrix4x3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1560   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}
1561   TglRenderbufferStorageMultisample         = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1562   TglFramebufferTextureLayer                = procedure(aTarget: GLenum; aAttachment: GLenum; aTexture: GLuint; aLevel: GLint; aLayer: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1563   TglMapBufferRange                         = function (aTarget: GLenum; aOffset: GLintptr; aLength: GLsizeiptr; aAccess: GLbitfield): PGLvoid; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1564   TglFlushMappedBufferRange                 = procedure(aTarget: GLenum; aOffset: GLintptr; aLength: GLsizeiptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1565   TglBindVertexArray                        = procedure(aArray: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1566   TglDeleteVertexArrays                     = procedure(n: GLsizei; const aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1567   TglGenVertexArrays                        = procedure(n: GLsizei; aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1568   TglIsVertexArray                          = function (aArray: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1569   TglGetIntegeriv                           = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1570   TglBeginTransformFeedback                 = procedure(aPrimitiveMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1571   TglEndTransformFeedback                   = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1572   TglBindBufferRange                        = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint; aOffset: GLintptr; aSize: GLsizeiptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1573   TglBindBufferBase                         = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1574   TglTransformFeedbackVaryings              = procedure(aProgram: GLuint; aCount: GLsizei; const aVaryings: PPGLchar; aBufferMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1575   TglGetTransformFeedbackVarying            = procedure(aProgram: GLuint; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSize: PGLsizei; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1576   TglVertexAttribIPointer                   = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1577   TglGetVertexAttribIiv                     = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1578   TglGetVertexAttribIuiv                    = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1579   TglVertexAttribI4i                        = procedure(aIndex: GLuint; x: GLint; y: GLint; z: GLint; w: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1580   TglVertexAttribI4ui                       = procedure(aIndex: GLuint; x: GLuint; y: GLuint; z: GLuint; w: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1581   TglVertexAttribI4iv                       = procedure(aIndex: GLuint; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1582   TglVertexAttribI4uiv                      = procedure(aIndex: GLuint; const v: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1583   TglGetUniformuiv                          = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1584   TglGetFragDataLocation                    = function (aProgram: GLuint; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1585   TglUniform1ui                             = procedure(aLocation: GLint; v0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1586   TglUniform2ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1587   TglUniform3ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1588   TglUniform4ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1589   TglUniform1uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1590   TglUniform2uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1591   TglUniform3uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1592   TglUniform4uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1593   TglClearBufferiv                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1594   TglClearBufferuiv                         = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1595   TglClearBufferfv                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1596   TglClearBufferfi                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; aDepth: GLfloat; aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1597   TglGetStringi                             = function (aName: GLenum; aIndex: GLuint): PGLubyte; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1598   TglCopyBufferSubData                      = procedure(aReadTarget: GLenum; aWriteTarget: GLenum; aReadOffset: GLintptr; aWriteOffset: GLintptr; aSize: GLsizeiptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1599   TglGetUniformIndices                      = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformNames: PPGLchar; aUniformIndices: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1600   TglGetActiveUniformsiv                    = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformIndices: PGLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1601   TglGetUniformBlockIndex                   = function (aProgram: GLuint; const aUniformBlockName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1602   TglGetActiveUniformBlockiv                = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1603   TglGetActiveUniformBlockName              = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aUniformBlockName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1604   TglUniformBlockBinding                    = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aUniformBlockBinding: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1605   TglDrawArraysInstanced                    = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1606   TglDrawElementsInstanced                  = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1607   TglFenceSync                              = function (aCondition: GLenum; aFlags: GLbitfield): GLsync; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1608   TglIsSync                                 = function (aSync: GLsync): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1609   TglDeleteSync                             = procedure(aSync: GLsync); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1610   TglClientWaitSync                         = function (aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1611   TglWaitSync                               = procedure(aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1612   TglGetInteger64v                          = procedure(aPname: GLenum; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1613   TglGetSynciv                              = procedure(aSync: GLsync; aPname: GLenum; aBufSize: GLsizei; aLength: PGLsizei; aValues: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1614   TglGetInteger64iv                         = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1615   TglGetBufferParameteri64v                 = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1616   TglGenSamplers                            = procedure(aCount: GLsizei; aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1617   TglDeleteSamplers                         = procedure(aCount: GLsizei; const aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1618   TglIsSampler                              = function (aSampler: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1619   TglBindSampler                            = procedure(aUnit: GLuint; aSampler: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1620   TglSamplerParameteri                      = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1621   TglSamplerParameteriv                     = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1622   TglSamplerParameterf                      = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1623   TglSamplerParameterfv                     = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1624   TglGetSamplerParameteriv                  = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1625   TglGetSamplerParameterfv                  = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1626   TglVertexAttribDivisor                    = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1627   TglBindTransformFeedback                  = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1628   TglDeleteTransformFeedbacks               = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1629   TglGenTransformFeedbacks                  = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1630   TglIsTransformFeedback                    = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1631   TglPauseTransformFeedback                 = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1632   TglResumeTransformFeedback                = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1633   TglGetProgramBinary                       = procedure(aProgram: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aBinaryFormat: PGLenum; aBinary: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1634   TglProgramBinary                          = procedure(aProgram: GLuint; aBinaryFormat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1635   TglProgramParameteri                      = procedure(aProgram: GLuint; aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1636   TglInvalidateFramebuffer                  = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1637   TglInvalidateSubFramebuffer               = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum; x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1638   TglTexStorage2D                           = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1639   TglTexStorage3D                           = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1640   TglGetInternalformativ                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aPname: GLenum; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1641
1642 { ============================================== OpenGL ES 3.1 ======================================================= }
1643   TglDispatchCompute                        = procedure(aNumGroupsX: GLuint; aNumGroupsY: GLuint; aNumGroupsZ: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1644   TglDispatchComputeIndirect                = procedure(aIndirect: GLintptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1645   TglDrawArraysIndirect                     = procedure(aMode: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1646   TglDrawElementsIndirect                   = procedure(aMode: GLenum; aType: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1647   TglFramebufferParameteri                  = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1648   TglGetFramebufferParameteriv              = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1649   TglGetProgramInterfaceiv                  = procedure(aProgram: GLuint; aProgramInterface: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1650   TglGetProgramResourceIndex                = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1651   TglGetProgramResourceName                 = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1652   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}
1653   TglGetProgramResourceLocation             = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1654   TglUseProgramStages                       = procedure(aPipeline: GLuint; aStages: GLbitfield; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1655   TglActiveShaderProgram                    = procedure(aPipeline: GLuint; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1656   TglCreateShaderProgramv                   = function (aType: GLenum; aCount: GLsizei; const aStrings: PPGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1657   TglBindProgramPipeline                    = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1658   TglDeleteProgramPipelines                 = procedure(n: GLsizei; const aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1659   TglGenProgramPipelines                    = procedure(n: GLsizei; aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1660   TglIsProgramPipeline                      = function (aPipeline: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1661   TglGetProgramPipelineiv                   = procedure(aPipeline: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1662   TglProgramUniform1i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1663   TglProgramUniform2i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1664   TglProgramUniform3i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint; v2: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1665   TglProgramUniform4i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1666   TglProgramUniform1ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1667   TglProgramUniform2ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1668   TglProgramUniform3ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1669   TglProgramUniform4ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1670   TglProgramUniform1f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1671   TglProgramUniform2f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1672   TglProgramUniform3f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1673   TglProgramUniform4f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1674   TglProgramUniform1iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1675   TglProgramUniform2iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1676   TglProgramUniform3iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1677   TglProgramUniform4iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1678   TglProgramUniform1uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1679   TglProgramUniform2uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1680   TglProgramUniform3uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1681   TglProgramUniform4uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1682   TglProgramUniform1fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1683   TglProgramUniform2fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1684   TglProgramUniform3fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1685   TglProgramUniform4fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1686   TglProgramUniformMatrix2fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1687   TglProgramUniformMatrix3fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1688   TglProgramUniformMatrix4fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1689   TglProgramUniformMatrix2x3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1690   TglProgramUniformMatrix3x2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1691   TglProgramUniformMatrix2x4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1692   TglProgramUniformMatrix4x2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1693   TglProgramUniformMatrix3x4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1694   TglProgramUniformMatrix4x3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1695   TglValidateProgramPipeline                = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1696   TglGetProgramPipelineInfoLog              = procedure(aPipeline: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1697   TglBindImageTexture                       = procedure(aUnit: GLuint; aTexture: GLuint; aLevel: GLint; aLayered: GLboolean; aLayer: GLint; aAccess: GLenum; aFormat: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1698   TglGetBooleaniv                           = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1699   TglMemoryBarrier                          = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1700   TglMemoryBarrierByRegion                  = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1701   TglTexStorage2DMultisample                = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aFixedsamplelocations: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1702   TglGetMultisamplefv                       = procedure(aPname: GLenum; aIndex: GLuint; aVal: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1703   TglSampleMaski                            = procedure(aMaskNumber: GLuint; aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1704   TglGetTexLevelParameteriv                 = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1705   TglGetTexLevelParameterfv                 = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1706   TglBindVertexBuffer                       = procedure(aBindingindex: GLuint; aBuffer: GLuint; aOffset: GLintptr; aStride: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1707   TglVertexAttribFormat                     = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1708   TglVertexAttribIFormat                    = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1709   TglVertexAttribBinding                    = procedure(aAttribindex: GLuint; aBindingindex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1710   TglVertexBindingDivisor                   = procedure(aBindingindex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1711
1712 var
1713 { ============================================== OpenGL ES 1.0 ======================================================= }
1714 { Available only in Common profile }
1715   glAlphaFunc:                              TglAlphaFunc;
1716   glClearColor:                             TglClearColor;
1717   glClearDepthf:                            TglClearDepthf;
1718   glClipPlanef:                             TglClipPlanef;
1719   glColor4f:                                TglColor4f;
1720   glDepthRangef:                            TglDepthRangef;
1721   glFogf:                                   TglFogf;
1722   glFogfv:                                  TglFogfv;
1723   glFrustumf:                               TglFrustumf;
1724   glGetClipPlanef:                          TglGetClipPlanef;
1725   glGetFloatv:                              TglGetFloatv;
1726   glGetLightfv:                             TglGetLightfv;
1727   glGetMaterialfv:                          TglGetMaterialfv;
1728   glGetTexEnvfv:                            TglGetTexEnvfv;
1729   glGetTexParameterfv:                      TglGetTexParameterfv;
1730   glLightModelf:                            TglLightModelf;
1731   glLightModelfv:                           TglLightModelfv;
1732   glLightf:                                 TglLightf;
1733   glLightfv:                                TglLightfv;
1734   glLineWidth:                              TglLineWidth;
1735   glLoadMatrixf:                            TglLoadMatrixf;
1736   glMaterialf:                              TglMaterialf;
1737   glMaterialfv:                             TglMaterialfv;
1738   glMultMatrixf:                            TglMultMatrixf;
1739   glMultiTexCoord4f:                        TglMultiTexCoord4f;
1740   glNormal3f:                               TglNormal3f;
1741   glOrthof:                                 TglOrthof;
1742   glPointParameterf:                        TglPointParameterf;
1743   glPointParameterfv:                       TglPointParameterfv;
1744   glPointSize:                              TglPointSize;
1745   glPolygonOffset:                          TglPolygonOffset;
1746   glRotatef:                                TglRotatef;
1747   glScalef:                                 TglScalef;
1748   glTexEnvf:                                TglTexEnvf;
1749   glTexEnvfv:                               TglTexEnvfv;
1750   glTexParameterf:                          TglTexParameterf;
1751   glTexParameterfv:                         TglTexParameterfv;
1752   glTranslatef:                             TglTranslatef;
1753
1754 { Available in both Common and Common-Lite profiles }
1755   glActiveTexture:                          TglActiveTexture;
1756   glAlphaFuncx:                             TglAlphaFuncx;
1757   glBindBuffer:                             TglBindBuffer;
1758   glBindTexture:                            TglBindTexture;
1759   glBlendFunc:                              TglBlendFunc;
1760   glBufferData:                             TglBufferData;
1761   glBufferSubData:                          TglBufferSubData;
1762   glClear:                                  TglClear;
1763   glClearColorx:                            TglClearColorx;
1764   glClearDepthx:                            TglClearDepthx;
1765   glClearStencil:                           TglClearStencil;
1766   glClientActiveTexture:                    TglClientActiveTexture;
1767   glClipPlanex:                             TglClipPlanex;
1768   glColor4ub:                               TglColor4ub;
1769   glColor4x:                                TglColor4x;
1770   glColorMask:                              TglColorMask;
1771   glColorPointer:                           TglColorPointer;
1772   glCompressedTexImage2D:                   TglCompressedTexImage2D;
1773   glCompressedTexSubImage2D:                TglCompressedTexSubImage2D;
1774   glCopyTexImage2D:                         TglCopyTexImage2D;
1775   glCopyTexSubImage2D:                      TglCopyTexSubImage2D;
1776   glCullFace:                               TglCullFace;
1777   glDeleteBuffers:                          TglDeleteBuffers;
1778   glDeleteTextures:                         TglDeleteTextures;
1779   glDepthFunc:                              TglDepthFunc;
1780   glDepthMask:                              TglDepthMask;
1781   glDepthRangex:                            TglDepthRangex;
1782   glDisable:                                TglDisable;
1783   glDisableClientState:                     TglDisableClientState;
1784   glDrawArrays:                             TglDrawArrays;
1785   glDrawElements:                           TglDrawElements;
1786   glEnable:                                 TglEnable;
1787   glEnableClientState:                      TglEnableClientState;
1788   glFinish:                                 TglFinish;
1789   glFlush:                                  TglFlush;
1790   glFogx:                                   TglFogx;
1791   glFogxv:                                  TglFogxv;
1792   glFrontFace:                              TglFrontFace;
1793   glFrustumx:                               TglFrustumx;
1794   glGetBooleanv:                            TglGetBooleanv;
1795   glGetBufferParameteriv:                   TglGetBufferParameteriv;
1796   glGetClipPlanex:                          TglGetClipPlanex;
1797   glGenBuffers:                             TglGenBuffers;
1798   glGenTextures:                            TglGenTextures;
1799   glGetError:                               TglGetError;
1800   glGetFixedv:                              TglGetFixedv;
1801   glGetIntegerv:                            TglGetIntegerv;
1802   glGetLightxv:                             TglGetLightxv;
1803   glGetMaterialxv:                          TglGetMaterialxv;
1804   glGetPointerv:                            TglGetPointerv;
1805   glGetString:                              TglGetString;
1806   glGetTexEnviv:                            TglGetTexEnviv;
1807   glGetTexEnvxv:                            TglGetTexEnvxv;
1808   glGetTexParameteriv:                      TglGetTexParameteriv;
1809   glGetTexParameterxv:                      TglGetTexParameterxv;
1810   glHint:                                   TglHint;
1811   glIsBuffer:                               TglIsBuffer;
1812   glIsEnabled:                              TglIsEnabled;
1813   glIsTexture:                              TglIsTexture;
1814   glLightModelx:                            TglLightModelx;
1815   glLightModelxv:                           TglLightModelxv;
1816   glLightx:                                 TglLightx;
1817   glLightxv:                                TglLightxv;
1818   glLineWidthx:                             TglLineWidthx;
1819   glLoadIdentity:                           TglLoadIdentity;
1820   glLoadMatrix:                             TglLoadMatrix;
1821   glLogicOp:                                TglLogicOp;
1822   glMaterialx:                              TglMaterialx;
1823   glMaterialxv:                             TglMaterialxv;
1824   glMatrixMode:                             TglMatrixMode;
1825   glMultMatrixx:                            TglMultMatrixx;
1826   glMultiTexCoord4x:                        TglMultiTexCoord4x;
1827   glNormal3x:                               TglNormal3x;
1828   glNormalPointer:                          TglNormalPointer;
1829   glOrthox:                                 TglOrthox;
1830   glPixelStorei:                            TglPixelStorei;
1831   glPointParameterx:                        TglPointParameterx;
1832   glPointParameterxv:                       TglPointParameterxv;
1833   glPointSizex:                             TglPointSizex;
1834   glPolygonOffsetx:                         TglPolygonOffsetx;
1835   glPopMatrix:                              TglPopMatrix;
1836   glPushMatrix:                             TglPushMatrix;
1837   glReadPixels:                             TglReadPixels;
1838   glRotatex:                                TglRotatex;
1839   glSampleCoverage:                         TglSampleCoverage;
1840   glSampleCoveragex:                        TglSampleCoveragex;
1841   glScalex:                                 TglScalex;
1842   glScissor:                                TglScissor;
1843   glShadeModel:                             TglShadeModel;
1844   glStencilFunc:                            TglStencilFunc;
1845   glStencilMask:                            TglStencilMask;
1846   glStencilOp:                              TglStencilOp;
1847   glTexCoordPointer:                        TglTexCoordPointer;
1848   glTexEnvi:                                TglTexEnvi;
1849   glTexEnvx:                                TglTexEnvx;
1850   glTexEnviv:                               TglTexEnviv;
1851   glTexEnvxv:                               TglTexEnvxv;
1852   glTexImage2D:                             TglTexImage2D;
1853   glTexParameteri:                          TglTexParameteri;
1854   glTexParameterx:                          TglTexParameterx;
1855   glTexParameteriv:                         TglTexParameteriv;
1856   glTexParameterxv:                         TglTexParameterxv;
1857   glTexSubImage2D:                          TglTexSubImage2D;
1858   glTranslatex:                             TglTranslatex;
1859   glVertexPointer:                          TglVertexPointer;
1860   glViewport:                               TglViewport;
1861
1862 { ============================================== OpenGL ES 2.0 ======================================================= }
1863   glAttachShader:                           TglAttachShader;
1864   glBindAttribLocation:                     TglBindAttribLocation;
1865   glBindFramebuffer:                        TglBindFramebuffer;
1866   glBindRenderbuffer:                       TglBindRenderbuffer;
1867   glBlendColor:                             TglBlendColor;
1868   glBlendEquation:                          TglBlendEquation;
1869   glBlendEquationSeparate:                  TglBlendEquationSeparate;
1870   glBlendFuncSeparate:                      TglBlendFuncSeparate;
1871   glCheckFramebufferStatus:                 TglCheckFramebufferStatus;
1872   glCompileShader:                          TglCompileShader;
1873   glCreateProgram:                          TglCreateProgram;
1874   glCreateShader:                           TglCreateShader;
1875   glDeleteFramebuffers:                     TglDeleteFramebuffers;
1876   glDeleteProgram:                          TglDeleteProgram;
1877   glDeleteRenderbuffers:                    TglDeleteRenderbuffers;
1878   glDeleteShader:                           TglDeleteShader;
1879   glDetachShader:                           TglDetachShader;
1880   glDisableVertexAttribArray:               TglDisableVertexAttribArray;
1881   glEnableVertexAttribArray:                TglEnableVertexAttribArray;
1882   glFramebufferRenderbuffer:                TglFramebufferRenderbuffer;
1883   glFramebufferTexture2D:                   TglFramebufferTexture2D;
1884   glGenerateMipmap:                         TglGenerateMipmap;
1885   glGenFramebuffers:                        TglGenFramebuffers;
1886   glGenRenderbuffers:                       TglGenRenderbuffers;
1887   glGetActiveAttrib:                        TglGetActiveAttrib;
1888   glGetActiveUniform:                       TglGetActiveUniform;
1889   glGetAttachedShaders:                     TglGetAttachedShaders;
1890   glGetAttribLocation:                      TglGetAttribLocation;
1891   glGetFramebufferAttachmentParameteriv:    TglGetFramebufferAttachmentParameteriv;
1892   glGetProgramiv:                           TglGetProgramiv;
1893   glGetProgramInfoLog:                      TglGetProgramInfoLog;
1894   glGetRenderbufferParameteriv:             TglGetRenderbufferParameteriv;
1895   glGetShaderiv:                            TglGetShaderiv;
1896   glGetShaderInfoLog:                       TglGetShaderInfoLog;
1897   glGetShaderPrecisionFormat:               TglGetShaderPrecisionFormat;
1898   glGetShaderSource:                        TglGetShaderSource;
1899   glGetUniformfv:                           TglGetUniformfv;
1900   glGetUniformiv:                           TglGetUniformiv;
1901   glGetUniformLocation:                     TglGetUniformLocation;
1902   glGetVertexAttribfv:                      TglGetVertexAttribfv;
1903   glGetVertexAttribiv:                      TglGetVertexAttribiv;
1904   glGetVertexAttribPointerv:                TglGetVertexAttribPointerv;
1905   glIsFramebuffer:                          TglIsFramebuffer;
1906   glIsProgram:                              TglIsProgram;
1907   glIsRenderbuffer:                         TglIsRenderbuffer;
1908   glIsShader:                               TglIsShader;
1909   glLinkProgram:                            TglLinkProgram;
1910   glReleaseShaderCompiler:                  TglReleaseShaderCompiler;
1911   glRenderbufferStorage:                    TglRenderbufferStorage;
1912   glShaderBinary:                           TglShaderBinary;
1913   glShaderSource:                           TglShaderSource;
1914   glStencilFuncSeparate:                    TglStencilFuncSeparate;
1915   glStencilMaskSeparate:                    TglStencilMaskSeparate;
1916   glStencilOpSeparate:                      TglStencilOpSeparate;
1917   glUniform1f:                              TglUniform1f;
1918   glUniform1fv:                             TglUniform1fv;
1919   glUniform1i:                              TglUniform1i;
1920   glUniform1iv:                             TglUniform1iv;
1921   glUniform2f:                              TglUniform2f;
1922   glUniform2fv:                             TglUniform2fv;
1923   glUniform2i:                              TglUniform2i;
1924   glUniform2iv:                             TglUniform2iv;
1925   glUniform3f:                              TglUniform3f;
1926   glUniform3fv:                             TglUniform3fv;
1927   glUniform3i:                              TglUniform3i;
1928   glUniform3iv:                             TglUniform3iv;
1929   glUniform4f:                              TglUniform4f;
1930   glUniform4fv:                             TglUniform4fv;
1931   glUniform4i:                              TglUniform4i;
1932   glUniform4iv:                             TglUniform4iv;
1933   glUniformMatrix2fv:                       TglUniformMatrix2fv;
1934   glUniformMatrix3fv:                       TglUniformMatrix3fv;
1935   glUniformMatrix4fv:                       TglUniformMatrix4fv;
1936   glUseProgram:                             TglUseProgram;
1937   glValidateProgram:                        TglValidateProgram;
1938   glVertexAttrib1f:                         TglVertexAttrib1f;
1939   glVertexAttrib1fv:                        TglVertexAttrib1fv;
1940   glVertexAttrib2f:                         TglVertexAttrib2f;
1941   glVertexAttrib2fv:                        TglVertexAttrib2fv;
1942   glVertexAttrib3f:                         TglVertexAttrib3f;
1943   glVertexAttrib3fv:                        TglVertexAttrib3fv;
1944   glVertexAttrib4f:                         TglVertexAttrib4f;
1945   glVertexAttrib4fv:                        TglVertexAttrib4fv;
1946   glVertexAttribPointer:                    TglVertexAttribPointer;
1947
1948 { ============================================== OpenGL ES 3.0 ======================================================= }
1949   glReadBuffer:                             TglReadBuffer;
1950   glDrawRangeElements:                      TglDrawRangeElements;
1951   glTexImage3D:                             TglTexImage3D;
1952   glTexSubImage3D:                          TglTexSubImage3D;
1953   glCopyTexSubImage3D:                      TglCopyTexSubImage3D;
1954   glCompressedTexImage3D:                   TglCompressedTexImage3D;
1955   glCompressedTexSubImage3D:                TglCompressedTexSubImage3D;
1956   glGenQueries:                             TglGenQueries;
1957   glDeleteQueries:                          TglDeleteQueries;
1958   glIsQuery:                                TglIsQuery;
1959   glBeginQuery:                             TglBeginQuery;
1960   glEndQuery:                               TglEndQuery;
1961   glGetQueryiv:                             TglGetQueryiv;
1962   glGetQueryObjectuiv:                      TglGetQueryObjectuiv;
1963   glUnmapBuffer:                            TglUnmapBuffer;
1964   glGetBufferPointerv:                      TglGetBufferPointerv;
1965   glDrawBuffers:                            TglDrawBuffers;
1966   glUniformMatrix2x3fv:                     TglUniformMatrix2x3fv;
1967   glUniformMatrix3x2fv:                     TglUniformMatrix3x2fv;
1968   glUniformMatrix2x4fv:                     TglUniformMatrix2x4fv;
1969   glUniformMatrix4x2fv:                     TglUniformMatrix4x2fv;
1970   glUniformMatrix3x4fv:                     TglUniformMatrix3x4fv;
1971   glUniformMatrix4x3fv:                     TglUniformMatrix4x3fv;
1972   glBlitFramebuffer:                        TglBlitFramebuffer;
1973   glRenderbufferStorageMultisample:         TglRenderbufferStorageMultisample;
1974   glFramebufferTextureLayer:                TglFramebufferTextureLayer;
1975   glMapBufferRange:                         TglMapBufferRange;
1976   glFlushMappedBufferRange:                 TglFlushMappedBufferRange;
1977   glBindVertexArray:                        TglBindVertexArray;
1978   glDeleteVertexArrays:                     TglDeleteVertexArrays;
1979   glGenVertexArrays:                        TglGenVertexArrays;
1980   glIsVertexArray:                          TglIsVertexArray;
1981   glGetIntegeriv:                           TglGetIntegeriv;
1982   glBeginTransformFeedback:                 TglBeginTransformFeedback;
1983   glEndTransformFeedback:                   TglEndTransformFeedback;
1984   glBindBufferRange:                        TglBindBufferRange;
1985   glBindBufferBase:                         TglBindBufferBase;
1986   glTransformFeedbackVaryings:              TglTransformFeedbackVaryings;
1987   glGetTransformFeedbackVarying:            TglGetTransformFeedbackVarying;
1988   glVertexAttribIPointer:                   TglVertexAttribIPointer;
1989   glGetVertexAttribIiv:                     TglGetVertexAttribIiv;
1990   glGetVertexAttribIuiv:                    TglGetVertexAttribIuiv;
1991   glVertexAttribI4i:                        TglVertexAttribI4i;
1992   glVertexAttribI4ui:                       TglVertexAttribI4ui;
1993   glVertexAttribI4iv:                       TglVertexAttribI4iv;
1994   glVertexAttribI4uiv:                      TglVertexAttribI4uiv;
1995   glGetUniformuiv:                          TglGetUniformuiv;
1996   glGetFragDataLocation:                    TglGetFragDataLocation;
1997   glUniform1ui:                             TglUniform1ui;
1998   glUniform2ui:                             TglUniform2ui;
1999   glUniform3ui:                             TglUniform3ui;
2000   glUniform4ui:                             TglUniform4ui;
2001   glUniform1uiv:                            TglUniform1uiv;
2002   glUniform2uiv:                            TglUniform2uiv;
2003   glUniform3uiv:                            TglUniform3uiv;
2004   glUniform4uiv:                            TglUniform4uiv;
2005   glClearBufferiv:                          TglClearBufferiv;
2006   glClearBufferuiv:                         TglClearBufferuiv;
2007   glClearBufferfv:                          TglClearBufferfv;
2008   glClearBufferfi:                          TglClearBufferfi;
2009   glGetStringi:                             TglGetStringi;
2010   glCopyBufferSubData:                      TglCopyBufferSubData;
2011   glGetUniformIndices:                      TglGetUniformIndices;
2012   glGetActiveUniformsiv:                    TglGetActiveUniformsiv;
2013   glGetUniformBlockIndex:                   TglGetUniformBlockIndex;
2014   glGetActiveUniformBlockiv:                TglGetActiveUniformBlockiv;
2015   glGetActiveUniformBlockName:              TglGetActiveUniformBlockName;
2016   glUniformBlockBinding:                    TglUniformBlockBinding;
2017   glDrawArraysInstanced:                    TglDrawArraysInstanced;
2018   glDrawElementsInstanced:                  TglDrawElementsInstanced;
2019   glFenceSync:                              TglFenceSync;
2020   glIsSync:                                 TglIsSync;
2021   glDeleteSync:                             TglDeleteSync;
2022   glClientWaitSync:                         TglClientWaitSync;
2023   glWaitSync:                               TglWaitSync;
2024   glGetInteger64v:                          TglGetInteger64v;
2025   glGetSynciv:                              TglGetSynciv;
2026   glGetInteger64iv:                         TglGetInteger64iv;
2027   glGetBufferParameteri64v:                 TglGetBufferParameteri64v;
2028   glGenSamplers:                            TglGenSamplers;
2029   glDeleteSamplers:                         TglDeleteSamplers;
2030   glIsSampler:                              TglIsSampler;
2031   glBindSampler:                            TglBindSampler;
2032   glSamplerParameteri:                      TglSamplerParameteri;
2033   glSamplerParameteriv:                     TglSamplerParameteriv;
2034   glSamplerParameterf:                      TglSamplerParameterf;
2035   glSamplerParameterfv:                     TglSamplerParameterfv;
2036   glGetSamplerParameteriv:                  TglGetSamplerParameteriv;
2037   glGetSamplerParameterfv:                  TglGetSamplerParameterfv;
2038   glVertexAttribDivisor:                    TglVertexAttribDivisor;
2039   glBindTransformFeedback:                  TglBindTransformFeedback;
2040   glDeleteTransformFeedbacks:               TglDeleteTransformFeedbacks;
2041   glGenTransformFeedbacks:                  TglGenTransformFeedbacks;
2042   glIsTransformFeedback:                    TglIsTransformFeedback;
2043   glPauseTransformFeedback:                 TglPauseTransformFeedback;
2044   glResumeTransformFeedback:                TglResumeTransformFeedback;
2045   glGetProgramBinary:                       TglGetProgramBinary;
2046   glProgramBinary:                          TglProgramBinary;
2047   glProgramParameteri:                      TglProgramParameteri;
2048   glInvalidateFramebuffer:                  TglInvalidateFramebuffer;
2049   glInvalidateSubFramebuffer:               TglInvalidateSubFramebuffer;
2050   glTexStorage2D:                           TglTexStorage2D;
2051   glTexStorage3D:                           TglTexStorage3D;
2052   glGetInternalformativ:                    TglGetInternalformativ;
2053
2054 { ============================================== OpenGL ES 3.1 ======================================================= }
2055   glDispatchCompute:                        TglDispatchCompute;
2056   glDispatchComputeIndirect:                TglDispatchComputeIndirect;
2057   glDrawArraysIndirect:                     TglDrawArraysIndirect;
2058   glDrawElementsIndirect:                   TglDrawElementsIndirect;
2059   glFramebufferParameteri:                  TglFramebufferParameteri;
2060   glGetFramebufferParameteriv:              TglGetFramebufferParameteriv;
2061   glGetProgramInterfaceiv:                  TglGetProgramInterfaceiv;
2062   glGetProgramResourceIndex:                TglGetProgramResourceIndex;
2063   glGetProgramResourceName:                 TglGetProgramResourceName;
2064   glGetProgramResourceiv:                   TglGetProgramResourceiv;
2065   glGetProgramResourceLocation:             TglGetProgramResourceLocation;
2066   glUseProgramStages:                       TglUseProgramStages;
2067   glActiveShaderProgram:                    TglActiveShaderProgram;
2068   glCreateShaderProgramv:                   TglCreateShaderProgramv;
2069   glBindProgramPipeline:                    TglBindProgramPipeline;
2070   glDeleteProgramPipelines:                 TglDeleteProgramPipelines;
2071   glGenProgramPipelines:                    TglGenProgramPipelines;
2072   glIsProgramPipeline:                      TglIsProgramPipeline;
2073   glGetProgramPipelineiv:                   TglGetProgramPipelineiv;
2074   glProgramUniform1i:                       TglProgramUniform1i;
2075   glProgramUniform2i:                       TglProgramUniform2i;
2076   glProgramUniform3i:                       TglProgramUniform3i;
2077   glProgramUniform4i:                       TglProgramUniform4i;
2078   glProgramUniform1ui:                      TglProgramUniform1ui;
2079   glProgramUniform2ui:                      TglProgramUniform2ui;
2080   glProgramUniform3ui:                      TglProgramUniform3ui;
2081   glProgramUniform4ui:                      TglProgramUniform4ui;
2082   glProgramUniform1f:                       TglProgramUniform1f;
2083   glProgramUniform2f:                       TglProgramUniform2f;
2084   glProgramUniform3f:                       TglProgramUniform3f;
2085   glProgramUniform4f:                       TglProgramUniform4f;
2086   glProgramUniform1iv:                      TglProgramUniform1iv;
2087   glProgramUniform2iv:                      TglProgramUniform2iv;
2088   glProgramUniform3iv:                      TglProgramUniform3iv;
2089   glProgramUniform4iv:                      TglProgramUniform4iv;
2090   glProgramUniform1uiv:                     TglProgramUniform1uiv;
2091   glProgramUniform2uiv:                     TglProgramUniform2uiv;
2092   glProgramUniform3uiv:                     TglProgramUniform3uiv;
2093   glProgramUniform4uiv:                     TglProgramUniform4uiv;
2094   glProgramUniform1fv:                      TglProgramUniform1fv;
2095   glProgramUniform2fv:                      TglProgramUniform2fv;
2096   glProgramUniform3fv:                      TglProgramUniform3fv;
2097   glProgramUniform4fv:                      TglProgramUniform4fv;
2098   glProgramUniformMatrix2fv:                TglProgramUniformMatrix2fv;
2099   glProgramUniformMatrix3fv:                TglProgramUniformMatrix3fv;
2100   glProgramUniformMatrix4fv:                TglProgramUniformMatrix4fv;
2101   glProgramUniformMatrix2x3fv:              TglProgramUniformMatrix2x3fv;
2102   glProgramUniformMatrix3x2fv:              TglProgramUniformMatrix3x2fv;
2103   glProgramUniformMatrix2x4fv:              TglProgramUniformMatrix2x4fv;
2104   glProgramUniformMatrix4x2fv:              TglProgramUniformMatrix4x2fv;
2105   glProgramUniformMatrix3x4fv:              TglProgramUniformMatrix3x4fv;
2106   glProgramUniformMatrix4x3fv:              TglProgramUniformMatrix4x3fv;
2107   glValidateProgramPipeline:                TglValidateProgramPipeline;
2108   glGetProgramPipelineInfoLog:              TglGetProgramPipelineInfoLog;
2109   glBindImageTexture:                       TglBindImageTexture;
2110   glGetBooleaniv:                           TglGetBooleaniv;
2111   glMemoryBarrier:                          TglMemoryBarrier;
2112   glMemoryBarrierByRegion:                  TglMemoryBarrierByRegion;
2113   glTexStorage2DMultisample:                TglTexStorage2DMultisample;
2114   glGetMultisamplefv:                       TglGetMultisamplefv;
2115   glSampleMaski:                            TglSampleMaski;
2116   glGetTexLevelParameteriv:                 TglGetTexLevelParameteriv;
2117   glGetTexLevelParameterfv:                 TglGetTexLevelParameterfv;
2118   glBindVertexBuffer:                       TglBindVertexBuffer;
2119   glVertexAttribFormat:                     TglVertexAttribFormat;
2120   glVertexAttribIFormat:                    TglVertexAttribIFormat;
2121   glVertexAttribBinding:                    TglVertexAttribBinding;
2122   glVertexBindingDivisor:                   TglVertexBindingDivisor;
2123
2124 { =============================================== Extensions ========================================================= }
2125 { GL_KHR_blend_equation_advanced }
2126 const
2127   GL_MULTIPLY_KHR                                         = $9294;
2128   GL_SCREEN_KHR                                           = $9295;
2129   GL_OVERLAY_KHR                                          = $9296;
2130   GL_DARKEN_KHR                                           = $9297;
2131   GL_LIGHTEN_KHR                                          = $9298;
2132   GL_COLORDODGE_KHR                                       = $9299;
2133   GL_COLORBURN_KHR                                        = $929A;
2134   GL_HARDLIGHT_KHR                                        = $929B;
2135   GL_SOFTLIGHT_KHR                                        = $929C;
2136   GL_DIFFERENCE_KHR                                       = $929E;
2137   GL_EXCLUSION_KHR                                        = $92A0;
2138   GL_HSL_HUE_KHR                                          = $92AD;
2139   GL_HSL_SATURATION_KHR                                   = $92AE;
2140   GL_HSL_COLOR_KHR                                        = $92AF;
2141   GL_HSL_LUMINOSITY_KHR                                   = $92B0;
2142 type
2143   TglBlendBarrierKHR                                      = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2144 var
2145   glBlendBarrierKHR:                                        TglBlendBarrierKHR;
2146
2147 { GL_KHR_blend_equation_advanced_coherent }
2148 const
2149   GL_BLEND_ADVANCED_COHERENT_KHR                          = $9285;
2150
2151 { GL_KHR_context_flush_control }
2152 const
2153   GL_CONTEXT_RELEASE_BEHAVIOR_KHR                         = $82FB;
2154   GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR                   = $82FC;
2155
2156 { GL_KHR_debug }
2157 const
2158   GL_SAMPLER                                              = $82E6;
2159   GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR                         = $8242;
2160   GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR                 = $8243;
2161   GL_DEBUG_CALLBACK_FUNCTION_KHR                          = $8244;
2162   GL_DEBUG_CALLBACK_USER_PARAM_KHR                        = $8245;
2163   GL_DEBUG_SOURCE_API_KHR                                 = $8246;
2164   GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR                       = $8247;
2165   GL_DEBUG_SOURCE_SHADER_COMPILER_KHR                     = $8248;
2166   GL_DEBUG_SOURCE_THIRD_PARTY_KHR                         = $8249;
2167   GL_DEBUG_SOURCE_APPLICATION_KHR                         = $824A;
2168   GL_DEBUG_SOURCE_OTHER_KHR                               = $824B;
2169   GL_DEBUG_TYPE_ERROR_KHR                                 = $824C;
2170   GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR                   = $824D;
2171   GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR                    = $824E;
2172   GL_DEBUG_TYPE_PORTABILITY_KHR                           = $824F;
2173   GL_DEBUG_TYPE_PERFORMANCE_KHR                           = $8250;
2174   GL_DEBUG_TYPE_OTHER_KHR                                 = $8251;
2175   GL_DEBUG_TYPE_MARKER_KHR                                = $8268;
2176   GL_DEBUG_TYPE_PUSH_GROUP_KHR                            = $8269;
2177   GL_DEBUG_TYPE_POP_GROUP_KHR                             = $826A;
2178   GL_DEBUG_SEVERITY_NOTIFICATION_KHR                      = $826B;
2179   GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR                      = $826C;
2180   GL_DEBUG_GROUP_STACK_DEPTH_KHR                          = $826D;
2181   GL_BUFFER_KHR                                           = $82E0;
2182   GL_SHADER_KHR                                           = $82E1;
2183   GL_PROGRAM_KHR                                          = $82E2;
2184   GL_VERTEX_ARRAY_KHR                                     = $8074;
2185   GL_QUERY_KHR                                            = $82E3;
2186   GL_SAMPLER_KHR                                          = $82E6;
2187   GL_MAX_LABEL_LENGTH_KHR                                 = $82E8;
2188   GL_MAX_DEBUG_MESSAGE_LENGTH_KHR                         = $9143;
2189   GL_MAX_DEBUG_LOGGED_MESSAGES_KHR                        = $9144;
2190   GL_DEBUG_LOGGED_MESSAGES_KHR                            = $9145;
2191   GL_DEBUG_SEVERITY_HIGH_KHR                              = $9146;
2192   GL_DEBUG_SEVERITY_MEDIUM_KHR                            = $9147;
2193   GL_DEBUG_SEVERITY_LOW_KHR                               = $9148;
2194   GL_DEBUG_OUTPUT_KHR                                     = $92E0;
2195   GL_CONTEXT_FLAG_DEBUG_BIT_KHR                           = $00000002;
2196   GL_STACK_OVERFLOW_KHR                                   = $0503;
2197   GL_STACK_UNDERFLOW_KHR                                  = $0504;
2198 type
2199   TglDebugProcKHR                                         = procedure(aSource: GLenum; aType: GLenum; aId: GLuint; aSeverity: GLenum; aLength: GLsizei; const aMessage: PGLchar; const aUserParam: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2200   TglDebugMessageControlKHR                               = procedure(aSource: GLenum; aType: GLenum; aSeverity: GLenum; aCount: GLsizei; const aIds: PGLuint; aEnabled: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2201   TglDebugMessageInsertKHR                                = procedure(aSource: GLenum; aType: GLenum; aId: GLuint; aSeverity: GLenum; aLength: GLsizei; const aBuf: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2202   TglDebugMessageCallbackKHR                              = procedure(aCallback: TglDebugProcKHR; const aUserParam: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2203   TglGetDebugMessageLogKHR                                = function (aCount: GLuint; aBufSize: GLsizei; aSources: PGLenum; aTypes: PGLenum; aIds: PGLuint; aSeverities: PGLenum; aLengths: PGLsizei; aMessageLog: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2204   TglPushDebugGroupKHR                                    = procedure(aSource: GLenum; aId: GLuint; aLength: GLsizei; const aMessage: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2205   TglPopDebugGroupKHR                                     = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2206   TglObjectLabelKHR                                       = procedure(aIdentifier: GLenum; aName: GLuint; aLength: GLsizei; const aLabel: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2207   TglGetObjectLabelKHR                                    = procedure(aIdentifier: GLenum; aName: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aLabel: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2208   TglObjectPtrLabelKHR                                    = procedure(const aPtr: Pointer; aLength: GLsizei; const aLabel: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2209   TglGetObjectPtrLabelKHR                                 = procedure(const aPtr: Pointer; aBufSize: GLsizei; aLength: PGLsizei; aLabel: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2210   TglGetPointervKHR                                       = procedure(aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2211 var
2212   glDebugMessageControlKHR:                                 TglDebugMessageControlKHR;
2213   glDebugMessageInsertKHR:                                  TglDebugMessageInsertKHR;
2214   glDebugMessageCallbackKHR:                                TglDebugMessageCallbackKHR;
2215   glGetDebugMessageLogKHR:                                  TglGetDebugMessageLogKHR;
2216   glPushDebugGroupKHR:                                      TglPushDebugGroupKHR;
2217   glPopDebugGroupKHR:                                       TglPopDebugGroupKHR;
2218   glObjectLabelKHR:                                         TglObjectLabelKHR;
2219   glGetObjectLabelKHR:                                      TglGetObjectLabelKHR;
2220   glObjectPtrLabelKHR:                                      TglObjectPtrLabelKHR;
2221   glGetObjectPtrLabelKHR:                                   TglGetObjectPtrLabelKHR;
2222   glGetPointervKHR:                                         TglGetPointervKHR;
2223
2224 { GL_KHR_robust_buffer_access_behavior }
2225   // none
2226
2227 { GL_KHR_robustness }
2228 const
2229   GL_CONTEXT_ROBUST_ACCESS_KHR                            = $90F3;
2230   GL_LOSE_CONTEXT_ON_RESET_KHR                            = $8252;
2231   GL_GUILTY_CONTEXT_RESET_KHR                             = $8253;
2232   GL_INNOCENT_CONTEXT_RESET_KHR                           = $8254;
2233   GL_UNKNOWN_CONTEXT_RESET_KHR                            = $8255;
2234   GL_RESET_NOTIFICATION_STRATEGY_KHR                      = $8256;
2235   GL_NO_RESET_NOTIFICATION_KHR                            = $8261;
2236   GL_CONTEXT_LOST_KHR                                     = $0507;
2237 type
2238   TglGetGraphicsResetStatusKHR                            = function : GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2239   TglReadnPixelsKHR                                       = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; aBufSize: GLsizei; aData: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2240   TglGetnUniformfvKHR                                     = procedure(aProgram: GLuint; aLocation: GLint; aBufSize: GLsizei; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2241   TglGetnUniformivKHR                                     = procedure(aProgram: GLuint; aLocation: GLint; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2242   TglGetnUniformuivKHR                                    = procedure(aProgram: GLuint; aLocation: GLint; aBufSize: GLsizei; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2243 var
2244   glGetGraphicsResetStatusKHR:                              TglGetGraphicsResetStatusKHR;
2245   glReadnPixelsKHR:                                         TglReadnPixelsKHR;
2246   glGetnUniformfvKHR:                                       TglGetnUniformfvKHR;
2247   glGetnUniformivKHR:                                       TglGetnUniformivKHR;
2248   glGetnUniformuivKHR:                                      TglGetnUniformuivKHR;
2249
2250 { GL_KHR_texture_compression_astc_hdr }
2251 const
2252   GL_COMPRESSED_RGBA_ASTC_4x4_KHR                         = $93B0;
2253   GL_COMPRESSED_RGBA_ASTC_5x4_KHR                         = $93B1;
2254   GL_COMPRESSED_RGBA_ASTC_5x5_KHR                         = $93B2;
2255   GL_COMPRESSED_RGBA_ASTC_6x5_KHR                         = $93B3;
2256   GL_COMPRESSED_RGBA_ASTC_6x6_KHR                         = $93B4;
2257   GL_COMPRESSED_RGBA_ASTC_8x5_KHR                         = $93B5;
2258   GL_COMPRESSED_RGBA_ASTC_8x6_KHR                         = $93B6;
2259   GL_COMPRESSED_RGBA_ASTC_8x8_KHR                         = $93B7;
2260   GL_COMPRESSED_RGBA_ASTC_10x5_KHR                        = $93B8;
2261   GL_COMPRESSED_RGBA_ASTC_10x6_KHR                        = $93B9;
2262   GL_COMPRESSED_RGBA_ASTC_10x8_KHR                        = $93BA;
2263   GL_COMPRESSED_RGBA_ASTC_10x10_KHR                       = $93BB;
2264   GL_COMPRESSED_RGBA_ASTC_12x10_KHR                       = $93BC;
2265   GL_COMPRESSED_RGBA_ASTC_12x12_KHR                       = $93BD;
2266   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR                 = $93D0;
2267   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR                 = $93D1;
2268   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR                 = $93D2;
2269   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR                 = $93D3;
2270   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR                 = $93D4;
2271   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR                 = $93D5;
2272   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR                 = $93D6;
2273   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR                 = $93D7;
2274   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR                = $93D8;
2275   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR                = $93D9;
2276   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR                = $93DA;
2277   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR               = $93DB;
2278   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR               = $93DC;
2279   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR               = $93DD;
2280
2281 { GL_KHR_texture_compression_astc_ldr }
2282   // none
2283
2284 { GL_OES_EGL_image }
2285 type
2286   GLeglImageOES                                           = Pointer;
2287   TglEGLImageTargetTexture2DOES                           = procedure(aTarget: GLenum; aImage: GLeglImageOES); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2288   TglEGLImageTargetRenderbufferStorageOES                 = procedure(aTarget: GLenum; aImage: GLeglImageOES); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2289 var
2290   glEGLImageTargetTexture2DOES:                             TglEGLImageTargetTexture2DOES;
2291   glEGLImageTargetRenderbufferStorageOES:                   TglEGLImageTargetRenderbufferStorageOES;
2292
2293 { GL_OES_EGL_image_external }
2294 const
2295   GL_TEXTURE_EXTERNAL_OES                                 = $8D65;
2296   GL_TEXTURE_BINDING_EXTERNAL_OES                         = $8D67;
2297   GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     = $8D68;
2298   GL_SAMPLER_EXTERNAL_OES                                 = $8D66;
2299
2300 { GL_OES_compressed_ETC1_RGB8_sub_texture }
2301   // none
2302
2303 { GL_OES_compressed_ETC1_RGB8_texture }
2304 const
2305   GL_ETC1_RGB8_OES                                        = $8D64;
2306
2307 { GL_OES_compressed_paletted_texture }
2308 const
2309   GL_PALETTE4_RGB8_OES                                    = $8B90;
2310   GL_PALETTE4_RGBA8_OES                                   = $8B91;
2311   GL_PALETTE4_R5_G6_B5_OES                                = $8B92;
2312   GL_PALETTE4_RGBA4_OES                                   = $8B93;
2313   GL_PALETTE4_RGB5_A1_OES                                 = $8B94;
2314   GL_PALETTE8_RGB8_OES                                    = $8B95;
2315   GL_PALETTE8_RGBA8_OES                                   = $8B96;
2316   GL_PALETTE8_R5_G6_B5_OES                                = $8B97;
2317   GL_PALETTE8_RGBA4_OES                                   = $8B98;
2318   GL_PALETTE8_RGB5_A1_OES                                 = $8B99;
2319
2320 { GL_OES_depth24 }
2321 const
2322   GL_DEPTH_COMPONENT24_OES                                = $81A6;
2323
2324 { GL_OES_depth32 }
2325 const
2326   GL_DEPTH_COMPONENT32_OES                                = $81A7;
2327
2328 { GL_OES_depth_texture }
2329   // none
2330
2331 { GL_OES_element_index_uint }
2332   // none
2333
2334 { GL_OES_fbo_render_mipmap }
2335   // none
2336
2337 { GL_OES_fragment_precision_high }
2338   // none
2339
2340 { GL_OES_get_program_binary }
2341 const
2342   GL_PROGRAM_BINARY_LENGTH_OES                            = $8741;
2343   GL_NUM_PROGRAM_BINARY_FORMATS_OES                       = $87FE;
2344   GL_PROGRAM_BINARY_FORMATS_OES                           = $87FF;
2345 type
2346   TglGetProgramBinaryOES                                  = procedure(aProgram: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aBinaryFormat: PGLenum; aBinary: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2347   TglProgramBinaryOES                                     = procedure(aProgram: GLuint; aBinaryFormat: GLenum; const aBinary: Pointer; aLength: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2348 var
2349   glGetProgramBinaryOES:                                    TglGetProgramBinaryOES;
2350   glProgramBinaryOES:                                       TglProgramBinaryOES;
2351
2352 { GL_OES_mapbuffer }
2353 const
2354   GL_WRITE_ONLY_OES                                       = $88B9;
2355   GL_BUFFER_ACCESS_OES                                    = $88BB;
2356   GL_BUFFER_MAPPED_OES                                    = $88BC;
2357   GL_BUFFER_MAP_POINTER_OES                               = $88BD;
2358 type
2359   TglMapBufferOES                                         = function (aTarget: GLenum; aAccess: GLenum): Pointer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2360   TglUnmapBufferOES                                       = function (aTarget: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2361   TglGetBufferPointervOES                                 = procedure(aTarget: GLenum; aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2362 var
2363   glMapBufferOES:                                           TglMapBufferOES;
2364   glUnmapBufferOES:                                         TglUnmapBufferOES;
2365   glGetBufferPointervOES:                                   TglGetBufferPointervOES;
2366
2367 { GL_OES_packed_depth_stencil }
2368 const
2369   GL_DEPTH_STENCIL_OES                                    = $84F9;
2370   GL_UNSIGNED_INT_24_8_OES                                = $84FA;
2371   GL_DEPTH24_STENCIL8_OES                                 = $88F0;
2372
2373 { GL_OES_required_internalformat }
2374 const
2375   GL_ALPHA8_OES                                           = $803C;
2376   GL_DEPTH_COMPONENT16_OES                                = $81A5;
2377   GL_LUMINANCE4_ALPHA4_OES                                = $8043;
2378   GL_LUMINANCE8_ALPHA8_OES                                = $8045;
2379   GL_LUMINANCE8_OES                                       = $8040;
2380   GL_RGBA4_OES                                            = $8056;
2381   GL_RGB5_A1_OES                                          = $8057;
2382   GL_RGB565_OES                                           = $8D62;
2383   GL_RGB8_OES                                             = $8051;
2384   GL_RGBA8_OES                                            = $8058;
2385   GL_RGB10_EXT                                            = $8052;
2386   GL_RGB10_A2_EXT                                         = $8059;
2387
2388 { GL_OES_rgb8_rgba8 }
2389   // none
2390
2391 { GL_OES_sample_shading }
2392 const
2393   GL_SAMPLE_SHADING_OES                                   = $8C36;
2394   GL_MIN_SAMPLE_SHADING_VALUE_OES                         = $8C37;
2395 type
2396   TglMinSampleShadingOES                                  = procedure(aValue: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2397 var
2398   glMinSampleShadingOES:                                    TglMinSampleShadingOES;
2399
2400 { GL_OES_sample_
2401 variables }
2402   // none
2403
2404 { GL_OES_shader_image_atomic }
2405   // none
2406
2407 { GL_OES_shader_multisample_interpolation }
2408 const
2409   GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES                = $8E5B;
2410   GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES                = $8E5C;
2411   GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES               = $8E5D;
2412
2413 { GL_OES_standard_derivatives }
2414 const
2415   GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  = $8B8B;
2416
2417 { GL_OES_stencil1 }
2418 const
2419   GL_STENCIL_INDEX1_OES                                   = $8D46;
2420
2421 { GL_OES_stencil4 }
2422 const
2423   GL_STENCIL_INDEX4_OES                                   = $8D47;
2424
2425 { GL_OES_surfaceless_context }
2426 const
2427   GL_FRAMEBUFFER_UNDEFINED_OES                            = $8219;
2428
2429 { GL_OES_texture_3D }
2430 const
2431   GL_TEXTURE_WRAP_R_OES                                   = $8072;
2432   GL_TEXTURE_3D_OES                                       = $806F;
2433   GL_TEXTURE_BINDING_3D_OES                               = $806A;
2434   GL_MAX_3D_TEXTURE_SIZE_OES                              = $8073;
2435   GL_SAMPLER_3D_OES                                       = $8B5F;
2436   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        = $8CD4;
2437 type
2438   TglTexImage3DOES                                        = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aBorder: GLint; aFormat: GLenum; aType: GLenum; const aPixels: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2439   TglTexSubImage3DOES                                     = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aType: GLenum; const aPixels: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2440   TglCopyTexSubImage3DOES                                 = 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}
2441   TglCompressedTexImage3DOES                              = procedure(aTarget: GLenum; aLevel: GLint; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aBorder: GLint; aImageSize: GLsizei; const aData: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2442   TglCompressedTexSubImage3DOES                           = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aImageSize: GLsizei; const aData: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2443   TglFramebufferTexture3DOES                              = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint; aZoffset: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2444 var
2445   glTexImage3DOES:                                          TglTexImage3DOES;
2446   glTexSubImage3DOES:                                       TglTexSubImage3DOES;
2447   glCopyTexSubImage3DOES:                                   TglCopyTexSubImage3DOES;
2448   glCompressedTexImage3DOES:                                TglCompressedTexImage3DOES;
2449   glCompressedTexSubImage3DOES:                             TglCompressedTexSubImage3DOES;
2450   glFramebufferTexture3DOES:                                TglFramebufferTexture3DOES;
2451
2452 { GL_OES_texture_compression_astc }
2453 const
2454   GL_COMPRESSED_RGBA_ASTC_3x3x3_OES                       = $93C0;
2455   GL_COMPRESSED_RGBA_ASTC_4x3x3_OES                       = $93C1;
2456   GL_COMPRESSED_RGBA_ASTC_4x4x3_OES                       = $93C2;
2457   GL_COMPRESSED_RGBA_ASTC_4x4x4_OES                       = $93C3;
2458   GL_COMPRESSED_RGBA_ASTC_5x4x4_OES                       = $93C4;
2459   GL_COMPRESSED_RGBA_ASTC_5x5x4_OES                       = $93C5;
2460   GL_COMPRESSED_RGBA_ASTC_5x5x5_OES                       = $93C6;
2461   GL_COMPRESSED_RGBA_ASTC_6x5x5_OES                       = $93C7;
2462   GL_COMPRESSED_RGBA_ASTC_6x6x5_OES                       = $93C8;
2463   GL_COMPRESSED_RGBA_ASTC_6x6x6_OES                       = $93C9;
2464   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES               = $93E0;
2465   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES               = $93E1;
2466   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES               = $93E2;
2467   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES               = $93E3;
2468   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES               = $93E4;
2469   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES               = $93E5;
2470   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES               = $93E6;
2471   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES               = $93E7;
2472   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES               = $93E8;
2473   GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES               = $93E9;
2474
2475 { GL_OES_texture_float }
2476   // none
2477
2478 { GL_OES_texture_float_linear }
2479   // none
2480
2481 { GL_OES_texture_half_float }
2482 const
2483   GL_HALF_FLOAT_OES                                       = $8D61;
2484
2485 { GL_OES_texture_half_float_linear }
2486   // none
2487
2488 { GL_OES_texture_npot }
2489   // none
2490
2491 { GL_OES_texture_stencil8 }
2492 const
2493   GL_STENCIL_INDEX_OES                                    = $1901;
2494   GL_STENCIL_INDEX8_OES                                   = $8D48;
2495
2496 { GL_OES_texture_storage_multisample_2d_array }
2497 const
2498   GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES                     = $9102;
2499   GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES             = $9105;
2500   GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES                     = $910B;
2501   GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES                 = $910C;
2502   GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES        = $910D;
2503 type
2504   TglTexStorage3DMultisampleOES                           = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFixedsamplelocations: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2505 var
2506   glTexStorage3DMultisampleOES:                             TglTexStorage3DMultisampleOES;
2507
2508 { GL_OES_vertex_array_object }
2509 const
2510   GL_VERTEX_ARRAY_BINDING_OES                             = $85B5;
2511 type
2512   TglBindVertexArrayOES                                   = procedure(aArray: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2513   TglDeleteVertexArraysOES                                = procedure(n: GLsizei; const aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2514   TglGenVertexArraysOES                                   = procedure(n: GLsizei; aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2515   TglIsVertexArrayOES                                     = function (aArray: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2516 var
2517   glBindVertexArrayOES:                                     TglBindVertexArrayOES;
2518   glDeleteVertexArraysOES:                                  TglDeleteVertexArraysOES;
2519   glGenVertexArraysOES:                                     TglGenVertexArraysOES;
2520   glIsVertexArrayOES:                                       TglIsVertexArrayOES;
2521
2522 { GL_OES_vertex_half_float }
2523   // none
2524
2525 { GL_OES_vertex_type_10_10_10_2 }
2526 const
2527   GL_UNSIGNED_INT_10_10_10_2_OES                          = $8DF6;
2528   GL_INT_10_10_10_2_OES                                   = $8DF7;
2529
2530 { GL_AMD_compressed_3DC_texture }
2531 const
2532   GL_3DC_X_AMD                                            = $87F9;
2533   GL_3DC_XY_AMD                                           = $87FA;
2534
2535 { GL_AMD_compressed_ATC_texture }
2536 const
2537   GL_ATC_RGB_AMD                                          = $8C92;
2538   GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          = $8C93;
2539   GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      = $87EE;
2540
2541 { GL_AMD_performance_monitor }
2542 const
2543   GL_COUNTER_TYPE_AMD                                     = $8BC0;
2544   GL_COUNTER_RANGE_AMD                                    = $8BC1;
2545   GL_UNSIGNED_INT64_AMD                                   = $8BC2;
2546   GL_PERCENTAGE_AMD                                       = $8BC3;
2547   GL_PERFMON_RESULT_AVAILABLE_AMD                         = $8BC4;
2548   GL_PERFMON_RESULT_SIZE_AMD                              = $8BC5;
2549   GL_PERFMON_RESULT_AMD                                   = $8BC6;
2550 type
2551   TglGetPerfMonitorGroupsAMD                              = procedure(aNumGroups: PGLint; aGroupsSize: GLsizei; aGroups: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2552   TglGetPerfMonitorCountersAMD                            = procedure(aGroup: GLuint; aNumCounters: PGLint; aMaxActiveCounters: PGLint; aCounterSize: GLsizei; aCounters: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2553   TglGetPerfMonitorGroupStringAMD                         = procedure(aGroup: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aGroupString: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2554   TglGetPerfMonitorCounterStringAMD                       = procedure(aGroup: GLuint; aCounter: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aCounterString: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2555   TglGetPerfMonitorCounterInfoAMD                         = procedure(aGroup: GLuint; aCounter: GLuint; aPname: GLenum; aData: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2556   TglGenPerfMonitorsAMD                                   = procedure(n: GLsizei; aMonitors: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2557   TglDeletePerfMonitorsAMD                                = procedure(n: GLsizei; aMonitors: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2558   TglSelectPerfMonitorCountersAMD                         = procedure(aMonitor: GLuint; aEnable: GLboolean; aGroup: GLuint; aNumCounters: GLint; aCounterList: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2559   TglBeginPerfMonitorAMD                                  = procedure(aMonitor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2560   TglEndPerfMonitorAMD                                    = procedure(aMonitor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2561   TglGetPerfMonitorCounterDataAMD                         = procedure(aMonitor: GLuint; aPname: GLenum; aDataSize: GLsizei; aData: PGLuint; aBytesWritten: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2562 var
2563   glGetPerfMonitorGroupsAMD:                                TglGetPerfMonitorGroupsAMD;
2564   glGetPerfMonitorCountersAMD:                              TglGetPerfMonitorCountersAMD;
2565   glGetPerfMonitorGroupStringAMD:                           TglGetPerfMonitorGroupStringAMD;
2566   glGetPerfMonitorCounterStringAMD:                         TglGetPerfMonitorCounterStringAMD;
2567   glGetPerfMonitorCounterInfoAMD:                           TglGetPerfMonitorCounterInfoAMD;
2568   glGenPerfMonitorsAMD:                                     TglGenPerfMonitorsAMD;
2569   glDeletePerfMonitorsAMD:                                  TglDeletePerfMonitorsAMD;
2570   glSelectPerfMonitorCountersAMD:                           TglSelectPerfMonitorCountersAMD;
2571   glBeginPerfMonitorAMD:                                    TglBeginPerfMonitorAMD;
2572   glEndPerfMonitorAMD:                                      TglEndPerfMonitorAMD;
2573   glGetPerfMonitorCounterDataAMD:                           TglGetPerfMonitorCounterDataAMD;
2574
2575 { GL_AMD_program_binary_Z400 }
2576 const
2577   GL_Z400_BINARY_AMD                                      = $8740;
2578
2579 { GL_ANDROID_extension_pack_es31a }
2580   // none
2581
2582 { GL_ANGLE_depth_texture }
2583   // none
2584
2585 { GL_ANGLE_framebuffer_blit }
2586 const
2587   GL_READ_FRAMEBUFFER_ANGLE                               = $8CA8;
2588   GL_DRAW_FRAMEBUFFER_ANGLE                               = $8CA9;
2589   GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                       = $8CA6;
2590   GL_READ_FRAMEBUFFER_BINDING_ANGLE                       = $8CAA;
2591 type
2592   TglBlitFramebufferANGLE                                 = 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}
2593 var
2594   glBlitFramebufferANGLE:                                   TglBlitFramebufferANGLE;
2595
2596 { GL_ANGLE_framebuffer_multisample }
2597 const
2598   GL_RENDERBUFFER_SAMPLES_ANGLE                           = $8CAB;
2599   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE             = $8D56;
2600   GL_MAX_SAMPLES_ANGLE                                    = $8D57;
2601 type
2602   TglRenderbufferStorageMultisampleANGLE                  = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2603 var
2604   glRenderbufferStorageMultisampleANGLE:                    TglRenderbufferStorageMultisampleANGLE;
2605
2606 { GL_ANGLE_instanced_arrays }
2607 const
2608   GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE                    = $88FE;
2609 type
2610   TglDrawArraysInstancedANGLE                             = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2611   TglDrawElementsInstancedANGLE                           = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2612   TglVertexAttribDivisorANGLE                             = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2613 var
2614   glDrawArraysInstancedANGLE:                               TglDrawArraysInstancedANGLE;
2615   glDrawElementsInstancedANGLE:                             TglDrawElementsInstancedANGLE;
2616   glVertexAttribDivisorANGLE:                               TglVertexAttribDivisorANGLE;
2617
2618 { GL_ANGLE_pack_reverse_row_order }
2619 const
2620   GL_PACK_REVERSE_ROW_ORDER_ANGLE                         = $93A4;
2621
2622 { GL_ANGLE_program_binary }
2623 const
2624   GL_PROGRAM_BINARY_ANGLE                                 = $93A6;
2625
2626 { GL_ANGLE_texture_compression_dxt3 }
2627 const
2628   GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE                      = $83F2;
2629
2630 { GL_ANGLE_texture_compression_dxt5 }
2631 const
2632   GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE                      = $83F3;
2633
2634 { GL_ANGLE_texture_usage }
2635 const
2636   GL_TEXTURE_USAGE_ANGLE                                  = $93A2;
2637   GL_FRAMEBUFFER_ATTACHMENT_ANGLE                         = $93A3;
2638
2639 { GL_ANGLE_translated_shader_source }
2640 const
2641   GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE                = $93A0;
2642 type
2643   TglGetTranslatedShaderSourceANGLE                       = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSource: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2644 var
2645   glGetTranslatedShaderSourceANGLE:                         TglGetTranslatedShaderSourceANGLE;
2646
2647 { GL_APPLE_clip_distance }
2648 const
2649   GL_MAX_CLIP_DISTANCES_APPLE                             = $0D32;
2650   GL_CLIP_DISTANCE0_APPLE                                 = $3000;
2651   GL_CLIP_DISTANCE1_APPLE                                 = $3001;
2652   GL_CLIP_DISTANCE2_APPLE                                 = $3002;
2653   GL_CLIP_DISTANCE3_APPLE                                 = $3003;
2654   GL_CLIP_DISTANCE4_APPLE                                 = $3004;
2655   GL_CLIP_DISTANCE5_APPLE                                 = $3005;
2656   GL_CLIP_DISTANCE6_APPLE                                 = $3006;
2657   GL_CLIP_DISTANCE7_APPLE                                 = $3007;
2658
2659 { GL_APPLE_color_buffer_packed_float }
2660   // none
2661
2662 { GL_APPLE_copy_texture_levels }
2663 type
2664   TglCopyTextureLevelsAPPLE                               = procedure(aDestinationTexture: GLuint; aSourceTexture: GLuint; aSourceBaseLevel: GLint; aSourceLevelCount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2665 var
2666   glCopyTextureLevelsAPPLE:                                 TglCopyTextureLevelsAPPLE;
2667
2668 { GL_APPLE_framebuffer_multisample }
2669 const
2670   GL_RENDERBUFFER_SAMPLES_APPLE                           = $8CAB;
2671   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             = $8D56;
2672   GL_MAX_SAMPLES_APPLE                                    = $8D57;
2673   GL_READ_FRAMEBUFFER_APPLE                               = $8CA8;
2674   GL_DRAW_FRAMEBUFFER_APPLE                               = $8CA9;
2675   GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       = $8CA6;
2676   GL_READ_FRAMEBUFFER_BINDING_APPLE                       = $8CAA;
2677 type
2678   TglRenderbufferStorageMultisampleAPPLE                  = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2679   TglResolveMultisampleFramebufferAPPLE                   = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2680 var
2681   glRenderbufferStorageMultisampleAPPLE:                    TglRenderbufferStorageMultisampleAPPLE;
2682   glResolveMultisampleFramebufferAPPLE:                     TglResolveMultisampleFramebufferAPPLE;
2683
2684 { GL_APPLE_rgb_422 }
2685 const
2686   GL_RGB_422_APPLE                                        = $8A1F;
2687   GL_UNSIGNED_SHORT_8_8_APPLE                             = $85BA;
2688   GL_UNSIGNED_SHORT_8_8_REV_APPLE                         = $85BB;
2689   GL_RGB_RAW_422_APPLE                                    = $8A51;
2690
2691 { GL_APPLE_sync }
2692 const
2693   GL_SYNC_OBJECT_APPLE                                    = $8A53;
2694   GL_MAX_SERVER_WAIT_TIMEOUT_APPLE                        = $9111;
2695   GL_OBJECT_TYPE_APPLE                                    = $9112;
2696   GL_SYNC_CONDITION_APPLE                                 = $9113;
2697   GL_SYNC_STATUS_APPLE                                    = $9114;
2698   GL_SYNC_FLAGS_APPLE                                     = $9115;
2699   GL_SYNC_FENCE_APPLE                                     = $9116;
2700   GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE                     = $9117;
2701   GL_UNSIGNALED_APPLE                                     = $9118;
2702   GL_SIGNALED_APPLE                                       = $9119;
2703   GL_ALREADY_SIGNALED_APPLE                               = $911A;
2704   GL_TIMEOUT_EXPIRED_APPLE                                = $911B;
2705   GL_CONDITION_SATISFIED_APPLE                            = $911C;
2706   GL_WAIT_FAILED_APPLE                                    = $911D;
2707   GL_SYNC_FLUSH_COMMANDS_BIT_APPLE                        = $00000001;
2708   GL_TIMEOUT_IGNORED_APPLE                                = $FFFFFFFFFFFFFFFF;
2709 type
2710   TglFenceSyncAPPLE                                       = function (aCondition: GLenum; aFlags: GLbitfield): GLsync; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2711   TglIsSyncAPPLE                                          = function (aSync: GLsync): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2712   TglDeleteSyncAPPLE                                      = procedure(aSync: GLsync); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2713   TglClientWaitSyncAPPLE                                  = function (aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2714   TglWaitSyncAPPLE                                        = procedure(aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2715   TglGetInteger64vAPPLE                                   = procedure(aPname: GLenum; aParams: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2716   TglGetSyncivAPPLE                                       = procedure(aSync: GLsync; aPname: GLenum; aBufSize: GLsizei; aLength: PGLsizei; aValues: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2717 var
2718   glFenceSyncAPPLE:                                         TglFenceSyncAPPLE;
2719   glIsSyncAPPLE:                                            TglIsSyncAPPLE;
2720   glDeleteSyncAPPLE:                                        TglDeleteSyncAPPLE;
2721   glClientWaitSyncAPPLE:                                    TglClientWaitSyncAPPLE;
2722   glWaitSyncAPPLE:                                          TglWaitSyncAPPLE;
2723   glGetInteger64vAPPLE:                                     TglGetInteger64vAPPLE;
2724   glGetSyncivAPPLE:                                         TglGetSyncivAPPLE;
2725
2726 { GL_APPLE_texture_format_BGRA8888 }
2727 const
2728   GL_BGRA_EXT                                             = $80E1;
2729   GL_BGRA8_EXT                                            = $93A1;
2730
2731 { GL_APPLE_texture_max_level }
2732 const
2733   GL_TEXTURE_MAX_LEVEL_APPLE                              = $813D;
2734
2735 { GL_APPLE_texture_packed_float }
2736 const
2737   GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE                   = $8C3B;
2738   GL_UNSIGNED_INT_5_9_9_9_REV_APPLE                       = $8C3E;
2739   GL_R11F_G11F_B10F_APPLE                                 = $8C3A;
2740   GL_RGB9_E5_APPLE                                        = $8C3D;
2741
2742 { GL_ARM_mali_program_binary }
2743 const
2744   GL_MALI_PROGRAM_BINARY_ARM                              = $8F61;
2745
2746 { GL_ARM_mali_shader_binary }
2747 const
2748   GL_MALI_SHADER_BINARY_ARM                               = $8F60;
2749
2750 { GL_ARM_rgba8 }
2751   // none
2752
2753 { GL_ARM_shader_framebuffer_fetch }
2754 const
2755   GL_FETCH_PER_SAMPLE_ARM                                 = $8F65;
2756   GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM            = $8F66;
2757
2758 { GL_ARM_shader_framebuffer_fetch_depth_stencil }
2759
2760 { GL_DMP_program_binary }
2761 const
2762   GL_SMAPHS30_PROGRAM_BINARY_DMP                          = $9251;
2763   GL_SMAPHS_PROGRAM_BINARY_DMP                            = $9252;
2764   GL_DMP_PROGRAM_BINARY_DMP                               = $9253;
2765
2766 { GL_DMP_shader_binary }
2767 const
2768   GL_SHADER_BINARY_DMP                                    = $9250;
2769
2770 { GL_EXT_base_instance }
2771 type
2772   TglDrawArraysInstancedBaseInstanceEXT                   = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aInstancecount: GLsizei; aBaseinstance: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2773   TglDrawElementsInstancedBaseInstanceEXT                 = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aInstancecount: GLsizei; aBaseinstance: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2774   TglDrawElementsInstancedBaseVertexBaseInstanceEXT       = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aInstancecount: GLsizei; aBasevertex: GLint; aBaseinstance: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2775 var
2776   glDrawArraysInstancedBaseInstanceEXT:                     TglDrawArraysInstancedBaseInstanceEXT;
2777   glDrawElementsInstancedBaseInstanceEXT:                   TglDrawElementsInstancedBaseInstanceEXT;
2778   glDrawElementsInstancedBaseVertexBaseInstanceEXT:         TglDrawElementsInstancedBaseVertexBaseInstanceEXT;
2779
2780 { GL_EXT_blend_minmax }
2781 const
2782   GL_MIN_EXT                                              = $8007;
2783   GL_MAX_EXT                                              = $8008;
2784
2785 { GL_EXT_color_buffer_half_float }
2786 const
2787   GL_RGBA16F_EXT                                          = $881A;
2788   GL_RGB16F_EXT                                           = $881B;
2789   GL_RG16F_EXT                                            = $822F;
2790   GL_R16F_EXT                                             = $822D;
2791   GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT            = $8211;
2792   GL_UNSIGNED_NORMALIZED_EXT                              = $8C17;
2793
2794 { GL_EXT_copy_image }
2795 type
2796   TglCopyImageSubDataEXT                                  = procedure(aSrcName: GLuint; aSrcTarget: GLenum; aSrcLevel: GLint; aSrcX: GLint; aSrcY: GLint; aSrcZ: GLint; aDstName: GLuint; aDstTarget: GLenum; aDstLevel: GLint; aDstX: GLint; aDstY: GLint; aDstZ: GLint; aSrcWidth: GLsizei; aSrcHeight: GLsizei; aSrcDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2797 var
2798   glCopyImageSubDataEXT:                                    TglCopyImageSubDataEXT;
2799
2800 { GL_EXT_debug_label }
2801 const
2802   GL_PROGRAM_PIPELINE_OBJECT_EXT                          = $8A4F;
2803   GL_PROGRAM_OBJECT_EXT                                   = $8B40;
2804   GL_SHADER_OBJECT_EXT                                    = $8B48;
2805   GL_BUFFER_OBJECT_EXT                                    = $9151;
2806   GL_QUERY_OBJECT_EXT                                     = $9153;
2807   GL_VERTEX_ARRAY_OBJECT_EXT                              = $9154;
2808   // GL_TRANSFORM_FEEDBACK                                = $8E22;
2809 type
2810   TglLabelObjectEXT                                       = procedure(aType: GLenum; aObject: GLuint; aLength: GLsizei; const aLabel: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2811   TglGetObjectLabelEXT                                    = procedure(aType: GLenum; aObject: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aLabel: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2812 var
2813   glLabelObjectEXT:                                         TglLabelObjectEXT;
2814   glGetObjectLabelEXT:                                      TglGetObjectLabelEXT;
2815
2816 { GL_EXT_debug_marker }
2817 type
2818   TglInsertEventMarkerEXT                                 = procedure(aLength: GLsizei; const aMarker: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2819   TglPushGroupMarkerEXT                                   = procedure(aLength: GLsizei; const aMarker: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2820   TglPopGroupMarkerEXT                                    = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2821 var
2822   glInsertEventMarkerEXT:                                   TglInsertEventMarkerEXT;
2823   glPushGroupMarkerEXT:                                     TglPushGroupMarkerEXT;
2824   glPopGroupMarkerEXT:                                      TglPopGroupMarkerEXT;
2825
2826 { GL_EXT_discard_framebuffer }
2827 const
2828   GL_COLOR_EXT                                            = $1800;
2829   GL_DEPTH_EXT                                            = $1801;
2830   GL_STENCIL_EXT                                          = $1802;
2831 type
2832   TglDiscardFramebufferEXT                                = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2833 var
2834   glDiscardFramebufferEXT:                                  TglDiscardFramebufferEXT;
2835
2836 { GL_EXT_disjoint_timer_query }
2837 const
2838   GL_QUERY_COUNTER_BITS_EXT                               = $8864;
2839   GL_CURRENT_QUERY_EXT                                    = $8865;
2840   GL_QUERY_RESULT_EXT                                     = $8866;
2841   GL_QUERY_RESULT_AVAILABLE_EXT                           = $8867;
2842   GL_TIME_ELAPSED_EXT                                     = $88BF;
2843   GL_TIMESTAMP_EXT                                        = $8E28;
2844   GL_GPU_DISJOINT_EXT                                     = $8FBB;
2845 type
2846   TglGenQueriesEXT                                        = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2847   TglDeleteQueriesEXT                                     = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2848   TglIsQueryEXT                                           = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2849   TglBeginQueryEXT                                        = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2850   TglEndQueryEXT                                          = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2851   TglQueryCounterEXT                                      = procedure(aId: GLuint; aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2852   TglGetQueryivEXT                                        = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2853   TglGetQueryObjectivEXT                                  = procedure(aId: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2854   TglGetQueryObjectuivEXT                                 = procedure(aId: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2855   TglGetQueryObjecti64vEXT                                = procedure(aId: GLuint; aPname: GLenum; aParams: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2856   TglGetQueryObjectui64vEXT                               = procedure(aId: GLuint; aPname: GLenum; aParams: PGLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2857 var
2858   glGenQueriesEXT:                                          TglGenQueriesEXT;
2859   glDeleteQueriesEXT:                                       TglDeleteQueriesEXT;
2860   glIsQueryEXT:                                             TglIsQueryEXT;
2861   glBeginQueryEXT:                                          TglBeginQueryEXT;
2862   glEndQueryEXT:                                            TglEndQueryEXT;
2863   glQueryCounterEXT:                                        TglQueryCounterEXT;
2864   glGetQueryivEXT:                                          TglGetQueryivEXT;
2865   glGetQueryObjectivEXT:                                    TglGetQueryObjectivEXT;
2866   glGetQueryObjectuivEXT:                                   TglGetQueryObjectuivEXT;
2867   glGetQueryObjecti64vEXT:                                  TglGetQueryObjecti64vEXT;
2868   glGetQueryObjectui64vEXT:                                 TglGetQueryObjectui64vEXT;
2869
2870 { GL_EXT_draw_buffers }
2871 const
2872   GL_MAX_COLOR_ATTACHMENTS_EXT                            = $8CDF;
2873   GL_MAX_DRAW_BUFFERS_EXT                                 = $8824;
2874   GL_DRAW_BUFFER0_EXT                                     = $8825;
2875   GL_DRAW_BUFFER1_EXT                                     = $8826;
2876   GL_DRAW_BUFFER2_EXT                                     = $8827;
2877   GL_DRAW_BUFFER3_EXT                                     = $8828;
2878   GL_DRAW_BUFFER4_EXT                                     = $8829;
2879   GL_DRAW_BUFFER5_EXT                                     = $882A;
2880   GL_DRAW_BUFFER6_EXT                                     = $882B;
2881   GL_DRAW_BUFFER7_EXT                                     = $882C;
2882   GL_DRAW_BUFFER8_EXT                                     = $882D;
2883   GL_DRAW_BUFFER9_EXT                                     = $882E;
2884   GL_DRAW_BUFFER10_EXT                                    = $882F;
2885   GL_DRAW_BUFFER11_EXT                                    = $8830;
2886   GL_DRAW_BUFFER12_EXT                                    = $8831;
2887   GL_DRAW_BUFFER13_EXT                                    = $8832;
2888   GL_DRAW_BUFFER14_EXT                                    = $8833;
2889   GL_DRAW_BUFFER15_EXT                                    = $8834;
2890   GL_COLOR_ATTACHMENT0_EXT                                = $8CE0;
2891   GL_COLOR_ATTACHMENT1_EXT                                = $8CE1;
2892   GL_COLOR_ATTACHMENT2_EXT                                = $8CE2;
2893   GL_COLOR_ATTACHMENT3_EXT                                = $8CE3;
2894   GL_COLOR_ATTACHMENT4_EXT                                = $8CE4;
2895   GL_COLOR_ATTACHMENT5_EXT                                = $8CE5;
2896   GL_COLOR_ATTACHMENT6_EXT                                = $8CE6;
2897   GL_COLOR_ATTACHMENT7_EXT                                = $8CE7;
2898   GL_COLOR_ATTACHMENT8_EXT                                = $8CE8;
2899   GL_COLOR_ATTACHMENT9_EXT                                = $8CE9;
2900   GL_COLOR_ATTACHMENT10_EXT                               = $8CEA;
2901   GL_COLOR_ATTACHMENT11_EXT                               = $8CEB;
2902   GL_COLOR_ATTACHMENT12_EXT                               = $8CEC;
2903   GL_COLOR_ATTACHMENT13_EXT                               = $8CED;
2904   GL_COLOR_ATTACHMENT14_EXT                               = $8CEE;
2905   GL_COLOR_ATTACHMENT15_EXT                               = $8CEF;
2906 type
2907   TglDrawBuffersEXT                                       = procedure(n: GLsizei; const aBufs: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2908 var
2909   glDrawBuffersEXT:                                         TglDrawBuffersEXT;
2910
2911 { GL_EXT_draw_buffers_indexed }
2912   //GL_MIN                                                = $8007;
2913   //GL_MAX                                                = $8008;
2914 type
2915   TglEnableiEXT                                           = procedure(aTarget: GLenum; aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2916   TglDisableiEXT                                          = procedure(aTarget: GLenum; aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2917   TglBlendEquationiEXT                                    = procedure(aBuf: GLuint; aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2918   TglBlendEquationSeparateiEXT                            = procedure(aBuf: GLuint; aModeRGB: GLenum; aModeAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2919   TglBlendFunciEXT                                        = procedure(aBuf: GLuint; aSrc: GLenum; aDst: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2920   TglBlendFuncSeparateiEXT                                = procedure(aBuf: GLuint; aSrcRGB: GLenum; aDstRGB: GLenum; aSrcAlpha: GLenum; aDstAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2921   TglColorMaskiEXT                                        = procedure(aIndex: GLuint; r: GLboolean; g: GLboolean; b: GLboolean; a: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2922   TglIsEnablediEXT                                        = function (aTarget: GLenum; aIndex: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2923 var
2924   glEnableiEXT:                                             TglEnableiEXT;
2925   glDisableiEXT:                                            TglDisableiEXT;
2926   glBlendEquationiEXT:                                      TglBlendEquationiEXT;
2927   glBlendEquationSeparateiEXT:                              TglBlendEquationSeparateiEXT;
2928   glBlendFunciEXT:                                          TglBlendFunciEXT;
2929   glBlendFuncSeparateiEXT:                                  TglBlendFuncSeparateiEXT;
2930   glColorMaskiEXT:                                          TglColorMaskiEXT;
2931   glIsEnablediEXT:                                          TglIsEnablediEXT;
2932
2933 { GL_EXT_draw_elements_base_vertex }
2934 type
2935   TglDrawElementsBaseVertexEXT                            = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aBasevertex: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2936   TglDrawRangeElementsBaseVertexEXT                       = procedure(aMode: GLenum; aStart: GLuint; aEnd: GLuint; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aBasevertex: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2937   TglDrawElementsInstancedBaseVertexEXT                   = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aInstancecount: GLsizei; aBasevertex: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2938   TglMultiDrawElementsBaseVertexEXT                       = procedure(aMode: GLenum; const aCount: PGLsizei; aType: GLenum; const aConstPindices: Pointer; aPrimcount: GLsizei; const aBasevertex: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2939 var
2940   glDrawElementsBaseVertexEXT:                              TglDrawElementsBaseVertexEXT;
2941   glDrawRangeElementsBaseVertexEXT:                         TglDrawRangeElementsBaseVertexEXT;
2942   glDrawElementsInstancedBaseVertexEXT:                     TglDrawElementsInstancedBaseVertexEXT;
2943   glMultiDrawElementsBaseVertexEXT:                         TglMultiDrawElementsBaseVertexEXT;
2944
2945 { GL_EXT_draw_instanced }
2946 type
2947   TglDrawArraysInstancedEXT                               = procedure(aMode: GLenum; aStart: GLint; aCount: GLsizei; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2948   TglDrawElementsInstancedEXT                             = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2949 var
2950   glDrawArraysInstancedEXT:                                 TglDrawArraysInstancedEXT;
2951   glDrawElementsInstancedEXT:                               TglDrawElementsInstancedEXT;
2952
2953 { GL_EXT_geometry_point_size }
2954
2955 { GL_EXT_geometry_shader }
2956 const
2957   GL_GEOMETRY_SHADER_EXT                                  = $8DD9;
2958   GL_GEOMETRY_SHADER_BIT_EXT                              = $00000004;
2959   GL_GEOMETRY_LINKED_VERTICES_OUT_EXT                     = $8916;
2960   GL_GEOMETRY_LINKED_INPUT_TYPE_EXT                       = $8917;
2961   GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT                      = $8918;
2962   GL_GEOMETRY_SHADER_INVOCATIONS_EXT                      = $887F;
2963   GL_LAYER_PROVOKING_VERTEX_EXT                           = $825E;
2964   GL_LINES_ADJACENCY_EXT                                  = $000A;
2965   GL_LINE_STRIP_ADJACENCY_EXT                             = $000B;
2966   GL_TRIANGLES_ADJACENCY_EXT                              = $000C;
2967   GL_TRIANGLE_STRIP_ADJACENCY_EXT                         = $000D;
2968   GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT                  = $8DDF;
2969   GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT                      = $8A2C;
2970   GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT         = $8A32;
2971   GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT                    = $9123;
2972   GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT                   = $9124;
2973   GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT                     = $8DE0;
2974   GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT             = $8DE1;
2975   GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT                  = $8E5A;
2976   GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT                 = $8C29;
2977   GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT              = $92CF;
2978   GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT                     = $92D5;
2979   GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT                      = $90CD;
2980   GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT               = $90D7;
2981   GL_FIRST_VERTEX_CONVENTION_EXT                          = $8E4D;
2982   GL_LAST_VERTEX_CONVENTION_EXT                           = $8E4E;
2983   GL_UNDEFINED_VERTEX_EXT                                 = $8260;
2984   GL_PRIMITIVES_GENERATED_EXT                             = $8C87;
2985   GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT                       = $9312;
2986   GL_MAX_FRAMEBUFFER_LAYERS_EXT                           = $9317;
2987   GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT             = $8DA8;
2988   GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT                   = $8DA7;
2989   GL_REFERENCED_BY_GEOMETRY_SHADER_EXT                    = $9309;
2990 type
2991   TglFramebufferTextureEXT                                = procedure(aTarget: GLenum; aAttachment: GLenum; aTexture: GLuint; aLevel: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2992 var
2993   glFramebufferTextureEXT:                                  TglFramebufferTextureEXT;
2994
2995 { GL_EXT_gpu_shader5 }
2996   // none
2997
2998 { GL_EXT_instanced_arrays }
2999 const
3000   GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT                      = $88FE;
3001 type
3002   TglVertexAttribDivisorEXT                               = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3003 var
3004   glVertexAttribDivisorEXT:                                 TglVertexAttribDivisorEXT;
3005
3006 { GL_EXT_map_buffer_range }
3007 const
3008   GL_MAP_READ_BIT_EXT                                     = $0001;
3009   GL_MAP_WRITE_BIT_EXT                                    = $0002;
3010   GL_MAP_INVALIDATE_RANGE_BIT_EXT                         = $0004;
3011   GL_MAP_INVALIDATE_BUFFER_BIT_EXT                        = $0008;
3012   GL_MAP_FLUSH_EXPLICIT_BIT_EXT                           = $0010;
3013   GL_MAP_UNSYNCHRONIZED_BIT_EXT                           = $0020;
3014 type
3015   TglMapBufferRangeEXT                                    = function (aTarget: GLenum; aOffset: GLintptr; aLength: GLsizeiptr; aAccess: GLbitfield): Pointer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3016   TglFlushMappedBufferRangeEXT                            = procedure(aTarget: GLenum; aOffset: GLintptr; aLength: GLsizeiptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3017 var
3018   glMapBufferRangeEXT:                                      TglMapBufferRangeEXT;
3019   glFlushMappedBufferRangeEXT:                              TglFlushMappedBufferRangeEXT;
3020
3021 { GL_EXT_multi_draw_arrays }
3022 type
3023   TglMultiDrawArraysEXT                                   = procedure(aMode: GLenum; const aFirst: PGLint; const aCount: PGLsizei; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3024   TglMultiDrawElementsEXT                                 = procedure(aMode: GLenum; const aCount: PGLsizei; aType: GLenum; const aConstPindices: Pointer; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3025 var
3026   glMultiDrawArraysEXT:                                     TglMultiDrawArraysEXT;
3027   glMultiDrawElementsEXT:                                   TglMultiDrawElementsEXT;
3028
3029 { GL_EXT_multi_draw_indirect }
3030 type
3031   TglMultiDrawArraysIndirectEXT                           = procedure(aMode: GLenum; const aIndirect: Pointer; aDrawcount: GLsizei; aStride: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3032   TglMultiDrawElementsIndirectEXT                         = procedure(aMode: GLenum; aType: GLenum; const aIndirect: Pointer; aDrawcount: GLsizei; aStride: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3033 var
3034   glMultiDrawArraysIndirectEXT:                             TglMultiDrawArraysIndirectEXT;
3035   glMultiDrawElementsIndirectEXT:                           TglMultiDrawElementsIndirectEXT;
3036
3037 { GL_EXT_multisampled_render_to_texture }
3038 const
3039   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT           = $8D6C;
3040   GL_RENDERBUFFER_SAMPLES_EXT                             = $8CAB;
3041   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT               = $8D56;
3042   GL_MAX_SAMPLES_EXT                                      = $8D57;
3043 type
3044   TglRenderbufferStorageMultisampleEXT                    = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3045   TglFramebufferTexture2DMultisampleEXT                   = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint; aSamples: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3046 var
3047   glRenderbufferStorageMultisampleEXT:                      TglRenderbufferStorageMultisampleEXT;
3048   glFramebufferTexture2DMultisampleEXT:                     TglFramebufferTexture2DMultisampleEXT;
3049
3050 { GL_EXT_multiview_draw_buffers }
3051 const
3052   GL_COLOR_ATTACHMENT_EXT                                 = $90F0;
3053   GL_MULTIVIEW_EXT                                        = $90F1;
3054   GL_DRAW_BUFFER_EXT                                      = $0C01;
3055   GL_READ_BUFFER_EXT                                      = $0C02;
3056   GL_MAX_MULTIVIEW_BUFFERS_EXT                            = $90F2;
3057 type
3058   TglReadBufferIndexedEXT                                 = procedure(aSrc: GLenum; aIndex: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3059   TglDrawBuffersIndexedEXT                                = procedure(n: GLint; const aLocation: PGLenum; const aIndices: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3060   TglGetIntegeri_vEXT                                     = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3061 var
3062   glReadBufferIndexedEXT:                                   TglReadBufferIndexedEXT;
3063   glDrawBuffersIndexedEXT:                                  TglDrawBuffersIndexedEXT;
3064   glGetIntegeri_vEXT:                                       TglGetIntegeri_vEXT;
3065
3066 { GL_EXT_occlusion_query_boolean }
3067 const
3068   GL_ANY_SAMPLES_PASSED_EXT                               = $8C2F;
3069   GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT                  = $8D6A;
3070
3071 { GL_EXT_primitive_bounding_box }
3072 const
3073   GL_PRIMITIVE_BOUNDING_BOX_EXT                           = $92BE;
3074 type
3075   TglPrimitiveBoundingBoxEXT                              = procedure(aMinX: GLfloat; aMinY: GLfloat; aMinZ: GLfloat; aMinW: GLfloat; aMaxX: GLfloat; aMaxY: GLfloat; aMaxZ: GLfloat; aMaxW: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3076 var
3077   glPrimitiveBoundingBoxEXT:                                TglPrimitiveBoundingBoxEXT;
3078
3079 { GL_EXT_pvrtc_sRGB }
3080 const
3081   GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT                     = $8A54;
3082   GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT                     = $8A55;
3083   GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT               = $8A56;
3084   GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT               = $8A57;
3085   GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG               = $93F0;
3086   GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG               = $93F1;
3087
3088 { GL_EXT_read_format_bgra }
3089 const
3090   GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       = $8365;
3091   GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       = $8366;
3092
3093 { GL_EXT_render_snorm }
3094 const
3095   //GL_R8_SNORM                                           = $8F94;
3096   //GL_RG8_SNORM                                          = $8F95;
3097   //GL_RGBA8_SNORM                                        = $8F97;
3098   GL_R16_SNORM_EXT                                        = $8F98;
3099   GL_RG16_SNORM_EXT                                       = $8F99;
3100   GL_RGBA16_SNORM_EXT                                     = $8F9B;
3101
3102 { GL_EXT_robustness }
3103 const
3104   GL_GUILTY_CONTEXT_RESET_EXT                             = $8253;
3105   GL_INNOCENT_CONTEXT_RESET_EXT                           = $8254;
3106   GL_UNKNOWN_CONTEXT_RESET_EXT                            = $8255;
3107   GL_CONTEXT_ROBUST_ACCESS_EXT                            = $90F3;
3108   GL_RESET_NOTIFICATION_STRATEGY_EXT                      = $8256;
3109   GL_LOSE_CONTEXT_ON_RESET_EXT                            = $8252;
3110   GL_NO_RESET_NOTIFICATION_EXT                            = $8261;
3111 type
3112   TglGetGraphicsResetStatusEXT                            = function : GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3113   TglReadnPixelsEXT                                       = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; aBufSize: GLsizei; aData: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3114   TglGetnUniformfvEXT                                     = procedure(aProgram: GLuint; aLocation: GLint; aBufSize: GLsizei; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3115   TglGetnUniformivEXT                                     = procedure(aProgram: GLuint; aLocation: GLint; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3116 var
3117   glGetGraphicsResetStatusEXT:                              TglGetGraphicsResetStatusEXT;
3118   glReadnPixelsEXT:                                         TglReadnPixelsEXT;
3119   glGetnUniformfvEXT:                                       TglGetnUniformfvEXT;
3120   glGetnUniformivEXT:                                       TglGetnUniformivEXT;
3121
3122 { GL_EXT_sRGB }
3123 const
3124   GL_SRGB_EXT                                             = $8C40;
3125   GL_SRGB_ALPHA_EXT                                       = $8C42;
3126   GL_SRGB8_ALPHA8_EXT                                     = $8C43;
3127   GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT            = $8210;
3128
3129 { GL_EXT_sRGB_write_control }
3130 const
3131   GL_FRAMEBUFFER_SRGB_EXT                                 = $8DB9;
3132
3133 { GL_EXT_separate_shader_objects }
3134 const
3135   GL_ACTIVE_PROGRAM_EXT                                   = $8259;
3136   GL_VERTEX_SHADER_BIT_EXT                                = $00000001;
3137   GL_FRAGMENT_SHADER_BIT_EXT                              = $00000002;
3138   GL_ALL_SHADER_BITS_EXT                                  = $FFFFFFFF;
3139   GL_PROGRAM_SEPARABLE_EXT                                = $8258;
3140   GL_PROGRAM_PIPELINE_BINDING_EXT                         = $825A;
3141 type
3142   TglActiveShaderProgramEXT                               = procedure(aPipeline: GLuint; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3143   TglBindProgramPipelineEXT                               = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3144   TglCreateShaderProgramvEXT                              = function (aType: GLenum; aCount: GLsizei; const aStrings: PPGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3145   TglDeleteProgramPipelinesEXT                            = procedure(n: GLsizei; const aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3146   TglGenProgramPipelinesEXT                               = procedure(n: GLsizei; aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3147   TglGetProgramPipelineInfoLogEXT                         = procedure(aPipeline: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3148   TglGetProgramPipelineivEXT                              = procedure(aPipeline: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3149   TglIsProgramPipelineEXT                                 = function (aPipeline: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3150   TglProgramParameteriEXT                                 = procedure(aProgram: GLuint; aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3151   TglProgramUniform1fEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3152   TglProgramUniform1fvEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3153   TglProgramUniform1iEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3154   TglProgramUniform1ivEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3155   TglProgramUniform2fEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat; aV1: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3156   TglProgramUniform2fvEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3157   TglProgramUniform2iEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint; aV1: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3158   TglProgramUniform2ivEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3159   TglProgramUniform3fEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat; aV1: GLfloat; aV2: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3160   TglProgramUniform3fvEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3161   TglProgramUniform3iEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint; aV1: GLint; aV2: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3162   TglProgramUniform3ivEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3163   TglProgramUniform4fEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLfloat; aV1: GLfloat; aV2: GLfloat; aV3: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3164   TglProgramUniform4fvEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3165   TglProgramUniform4iEXT                                  = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLint; aV1: GLint; aV2: GLint; aV3: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3166   TglProgramUniform4ivEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3167   TglProgramUniformMatrix2fvEXT                           = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3168   TglProgramUniformMatrix3fvEXT                           = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3169   TglProgramUniformMatrix4fvEXT                           = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3170   TglUseProgramStagesEXT                                  = procedure(aPipeline: GLuint; aStages: GLbitfield; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3171   TglValidateProgramPipelineEXT                           = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3172   TglProgramUniform1uiEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3173   TglProgramUniform2uiEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint; aV1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3174   TglProgramUniform3uiEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint; aV1: GLuint; aV2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3175   TglProgramUniform4uiEXT                                 = procedure(aProgram: GLuint; aLocation: GLint; aV0: GLuint; aV1: GLuint; aV2: GLuint; aV3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3176   TglProgramUniform1uivEXT                                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3177   TglProgramUniform2uivEXT                                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3178   TglProgramUniform3uivEXT                                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3179   TglProgramUniform4uivEXT                                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3180   TglProgramUniformMatrix2x3fvEXT                         = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3181   TglProgramUniformMatrix3x2fvEXT                         = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3182   TglProgramUniformMatrix2x4fvEXT                         = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3183   TglProgramUniformMatrix4x2fvEXT                         = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3184   TglProgramUniformMatrix3x4fvEXT                         = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3185   TglProgramUniformMatrix4x3fvEXT                         = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3186 var
3187   glActiveShaderProgramEXT:                                 TglActiveShaderProgramEXT;
3188   glBindProgramPipelineEXT:                                 TglBindProgramPipelineEXT;
3189   glCreateShaderProgramvEXT:                                TglCreateShaderProgramvEXT;
3190   glDeleteProgramPipelinesEXT:                              TglDeleteProgramPipelinesEXT;
3191   glGenProgramPipelinesEXT:                                 TglGenProgramPipelinesEXT;
3192   glGetProgramPipelineInfoLogEXT:                           TglGetProgramPipelineInfoLogEXT;
3193   glGetProgramPipelineivEXT:                                TglGetProgramPipelineivEXT;
3194   glIsProgramPipelineEXT:                                   TglIsProgramPipelineEXT;
3195   glProgramParameteriEXT:                                   TglProgramParameteriEXT;
3196   glProgramUniform1fEXT:                                    TglProgramUniform1fEXT;
3197   glProgramUniform1fvEXT:                                   TglProgramUniform1fvEXT;
3198   glProgramUniform1iEXT:                                    TglProgramUniform1iEXT;
3199   glProgramUniform1ivEXT:                                   TglProgramUniform1ivEXT;
3200   glProgramUniform2fEXT:                                    TglProgramUniform2fEXT;
3201   glProgramUniform2fvEXT:                                   TglProgramUniform2fvEXT;
3202   glProgramUniform2iEXT:                                    TglProgramUniform2iEXT;
3203   glProgramUniform2ivEXT:                                   TglProgramUniform2ivEXT;
3204   glProgramUniform3fEXT:                                    TglProgramUniform3fEXT;
3205   glProgramUniform3fvEXT:                                   TglProgramUniform3fvEXT;
3206   glProgramUniform3iEXT:                                    TglProgramUniform3iEXT;
3207   glProgramUniform3ivEXT:                                   TglProgramUniform3ivEXT;
3208   glProgramUniform4fEXT:                                    TglProgramUniform4fEXT;
3209   glProgramUniform4fvEXT:                                   TglProgramUniform4fvEXT;
3210   glProgramUniform4iEXT:                                    TglProgramUniform4iEXT;
3211   glProgramUniform4ivEXT:                                   TglProgramUniform4ivEXT;
3212   glProgramUniformMatrix2fvEXT:                             TglProgramUniformMatrix2fvEXT;
3213   glProgramUniformMatrix3fvEXT:                             TglProgramUniformMatrix3fvEXT;
3214   glProgramUniformMatrix4fvEXT:                             TglProgramUniformMatrix4fvEXT;
3215   glUseProgramStagesEXT:                                    TglUseProgramStagesEXT;
3216   glValidateProgramPipelineEXT:                             TglValidateProgramPipelineEXT;
3217   glProgramUniform1uiEXT:                                   TglProgramUniform1uiEXT;
3218   glProgramUniform2uiEXT:                                   TglProgramUniform2uiEXT;
3219   glProgramUniform3uiEXT:                                   TglProgramUniform3uiEXT;
3220   glProgramUniform4uiEXT:                                   TglProgramUniform4uiEXT;
3221   glProgramUniform1uivEXT:                                  TglProgramUniform1uivEXT;
3222   glProgramUniform2uivEXT:                                  TglProgramUniform2uivEXT;
3223   glProgramUniform3uivEXT:                                  TglProgramUniform3uivEXT;
3224   glProgramUniform4uivEXT:                                  TglProgramUniform4uivEXT;
3225   glProgramUniformMatrix2x3fvEXT:                           TglProgramUniformMatrix2x3fvEXT;
3226   glProgramUniformMatrix3x2fvEXT:                           TglProgramUniformMatrix3x2fvEXT;
3227   glProgramUniformMatrix2x4fvEXT:                           TglProgramUniformMatrix2x4fvEXT;
3228   glProgramUniformMatrix4x2fvEXT:                           TglProgramUniformMatrix4x2fvEXT;
3229   glProgramUniformMatrix3x4fvEXT:                           TglProgramUniformMatrix3x4fvEXT;
3230   glProgramUniformMatrix4x3fvEXT:                           TglProgramUniformMatrix4x3fvEXT;
3231
3232 { GL_EXT_shader_framebuffer_fetch }
3233 const
3234   GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT                 = $8A52;
3235
3236 { GL_EXT_shader_implicit_conversions }
3237   // none
3238
3239 { GL_EXT_shader_integer_mix }
3240   // none
3241
3242 { GL_EXT_shader_io_blocks }
3243   // none
3244
3245 { GL_EXT_shader_pixel_local_storage }
3246 const
3247   GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT         = $8F63;
3248   GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT              = $8F67;
3249   GL_SHADER_PIXEL_LOCAL_STORAGE_EXT                       = $8F64;
3250
3251 { GL_EXT_shader_texture_lod }
3252
3253 { GL_EXT_shadow_samplers }
3254 const
3255   GL_TEXTURE_COMPARE_MODE_EXT                             = $884C;
3256   GL_TEXTURE_COMPARE_FUNC_EXT                             = $884D;
3257   GL_COMPARE_REF_TO_TEXTURE_EXT                           = $884E;
3258   GL_SAMPLER_2D_SHADOW_EXT                                = $8B62;
3259
3260 { GL_EXT_tessellation_point_size }
3261   // none
3262
3263 { GL_EXT_tessellation_shader }
3264 const
3265   GL_PATCHES_EXT                                          = $000E;
3266   GL_PATCH_VERTICES_EXT                                   = $8E72;
3267   GL_TESS_CONTROL_OUTPUT_VERTICES_EXT                     = $8E75;
3268   GL_TESS_GEN_MODE_EXT                                    = $8E76;
3269   GL_TESS_GEN_SPACING_EXT                                 = $8E77;
3270   GL_TESS_GEN_VERTEX_ORDER_EXT                            = $8E78;
3271   GL_TESS_GEN_POINT_MODE_EXT                              = $8E79;
3272   GL_ISOLINES_EXT                                         = $8E7A;
3273   GL_QUADS_EXT                                            = $0007;
3274   GL_FRACTIONAL_ODD_EXT                                   = $8E7B;
3275   GL_FRACTIONAL_EVEN_EXT                                  = $8E7C;
3276   GL_MAX_PATCH_VERTICES_EXT                               = $8E7D;
3277   GL_MAX_TESS_GEN_LEVEL_EXT                               = $8E7E;
3278   GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT              = $8E7F;
3279   GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT           = $8E80;
3280   GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT             = $8E81;
3281   GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT          = $8E82;
3282   GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT               = $8E83;
3283   GL_MAX_TESS_PATCH_COMPONENTS_EXT                        = $8E84;
3284   GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT         = $8E85;
3285   GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT            = $8E86;
3286   GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT                  = $8E89;
3287   GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT               = $8E8A;
3288   GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT                = $886C;
3289   GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT             = $886D;
3290   GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT     = $8E1E;
3291   GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT  = $8E1F;
3292   GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT          = $92CD;
3293   GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT       = $92CE;
3294   GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT                 = $92D3;
3295   GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT              = $92D4;
3296   GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT                  = $90CB;
3297   GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT               = $90CC;
3298   GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT           = $90D8;
3299   GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT        = $90D9;
3300   GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED              = $8221;
3301   GL_IS_PER_PATCH_EXT                                     = $92E7;
3302   GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT                = $9307;
3303   GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT             = $9308;
3304   GL_TESS_CONTROL_SHADER_EXT                              = $8E88;
3305   GL_TESS_EVALUATION_SHADER_EXT                           = $8E87;
3306   GL_TESS_CONTROL_SHADER_BIT_EXT                          = $00000008;
3307   GL_TESS_EVALUATION_SHADER_BIT_EXT                       = $00000010;
3308 type
3309   TglPatchParameteriEXT                                   = procedure(aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3310 var
3311   glPatchParameteriEXT:                                     TglPatchParameteriEXT;
3312
3313 { GL_EXT_texture_border_clamp }
3314 const
3315   GL_TEXTURE_BORDER_COLOR_EXT                             = $1004;
3316   GL_CLAMP_TO_BORDER_EXT                                  = $812D;
3317 type
3318   TglTexParameterIivEXT                                   = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3319   TglTexParameterIuivEXT                                  = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3320   TglGetTexParameterIivEXT                                = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3321   TglGetTexParameterIuivEXT                               = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3322   TglSamplerParameterIivEXT                               = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3323   TglSamplerParameterIuivEXT                              = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3324   TglGetSamplerParameterIivEXT                            = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3325   TglGetSamplerParameterIuivEXT                           = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3326 var
3327   glTexParameterIivEXT:                                     TglTexParameterIivEXT;
3328   glTexParameterIuivEXT:                                    TglTexParameterIuivEXT;
3329   glGetTexParameterIivEXT:                                  TglGetTexParameterIivEXT;
3330   glGetTexParameterIuivEXT:                                 TglGetTexParameterIuivEXT;
3331   glSamplerParameterIivEXT:                                 TglSamplerParameterIivEXT;
3332   glSamplerParameterIuivEXT:                                TglSamplerParameterIuivEXT;
3333   glGetSamplerParameterIivEXT:                              TglGetSamplerParameterIivEXT;
3334   glGetSamplerParameterIuivEXT:                             TglGetSamplerParameterIuivEXT;
3335
3336 { GL_EXT_texture_buffer }
3337 const
3338   GL_TEXTURE_BUFFER_EXT                                   = $8C2A;
3339   GL_TEXTURE_BUFFER_BINDING_EXT                           = $8C2A;
3340   GL_MAX_TEXTURE_BUFFER_SIZE_EXT                          = $8C2B;
3341   GL_TEXTURE_BINDING_BUFFER_EXT                           = $8C2C;
3342   GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT                = $8C2D;
3343   GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT                  = $919F;
3344   GL_SAMPLER_BUFFER_EXT                                   = $8DC2;
3345   GL_INT_SAMPLER_BUFFER_EXT                               = $8DD0;
3346   GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT                      = $8DD8;
3347   GL_IMAGE_BUFFER_EXT                                     = $9051;
3348   GL_INT_IMAGE_BUFFER_EXT                                 = $905C;
3349   GL_UNSIGNED_INT_IMAGE_BUFFER_EXT                        = $9067;
3350   GL_TEXTURE_BUFFER_OFFSET_EXT                            = $919D;
3351   GL_TEXTURE_BUFFER_SIZE_EXT                              = $919E;
3352 type
3353   TglTexBufferEXT                                         = procedure(aTarget: GLenum; aInternalformat: GLenum; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3354   TglTexBufferRangeEXT                                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aBuffer: GLuint; aOffset: GLintptr; aSize: GLsizeiptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3355 var
3356   glTexBufferEXT:                                           TglTexBufferEXT;
3357   glTexBufferRangeEXT:                                      TglTexBufferRangeEXT;
3358
3359 { GL_EXT_texture_compression_dxt1 }
3360 const
3361   GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         = $83F0;
3362   GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        = $83F1;
3363
3364 { GL_EXT_texture_compression_s3tc }
3365 const
3366   GL_COMPRESSED_RGBA_S3TC_DXT3_EXT                        = $83F2;
3367   GL_COMPRESSED_RGBA_S3TC_DXT5_EXT                        = $83F3;
3368
3369 { GL_EXT_texture_cube_map_array }
3370 const
3371   GL_TEXTURE_CUBE_MAP_ARRAY_EXT                           = $9009;
3372   GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT                   = $900A;
3373   GL_SAMPLER_CUBE_MAP_ARRAY_EXT                           = $900C;
3374   GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT                    = $900D;
3375   GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT                       = $900E;
3376   GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT              = $900F;
3377   GL_IMAGE_CUBE_MAP_ARRAY_EXT                             = $9054;
3378   GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT                         = $905F;
3379   GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT                = $906A;
3380
3381 { GL_EXT_texture_filter_anisotropic }
3382 const
3383   GL_TEXTURE_MAX_ANISOTROPY_EXT                           = $84FE;
3384   GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       = $84FF;
3385
3386 { GL_EXT_texture_format_BGRA8888 }
3387
3388 { GL_EXT_texture_norm16 }
3389 const
3390   GL_R16_EXT                                              = $822A;
3391   GL_RG16_EXT                                             = $822C;
3392   GL_RGBA16_EXT                                           = $805B;
3393   GL_RGB16_EXT                                            = $8054;
3394   GL_RGB16_SNORM_EXT                                      = $8F9A;
3395
3396 { GL_EXT_texture_rg }
3397 const
3398   GL_RED_EXT                                              = $1903;
3399   GL_RG_EXT                                               = $8227;
3400   GL_R8_EXT                                               = $8229;
3401   GL_RG8_EXT                                              = $822B;
3402
3403 { GL_EXT_texture_sRGB_decode }
3404 const
3405   GL_TEXTURE_SRGB_DECODE_EXT                              = $8A48;
3406   GL_DECODE_EXT                                           = $8A49;
3407   GL_SKIP_DECODE_EXT                                      = $8A4A;
3408
3409 { GL_EXT_texture_storage }
3410 const
3411   GL_TEXTURE_IMMUTABLE_FORMAT_EXT                         = $912F;
3412   GL_ALPHA8_EXT                                           = $803C;
3413   GL_LUMINANCE8_EXT                                       = $8040;
3414   GL_LUMINANCE8_ALPHA8_EXT                                = $8045;
3415   GL_RGBA32F_EXT                                          = $8814;
3416   GL_RGB32F_EXT                                           = $8815;
3417   GL_ALPHA32F_EXT                                         = $8816;
3418   GL_LUMINANCE32F_EXT                                     = $8818;
3419   GL_LUMINANCE_ALPHA32F_EXT                               = $8819;
3420   GL_ALPHA16F_EXT                                         = $881C;
3421   GL_LUMINANCE16F_EXT                                     = $881E;
3422   GL_LUMINANCE_ALPHA16F_EXT                               = $881F;
3423   GL_R32F_EXT                                             = $822E;
3424   GL_RG32F_EXT                                            = $8230;
3425 type
3426   TglTexStorage1DEXT                                      = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3427   TglTexStorage2DEXT                                      = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3428   TglTexStorage3DEXT                                      = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3429   TglTextureStorage1DEXT                                  = procedure(aTexture: GLuint; aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3430   TglTextureStorage2DEXT                                  = procedure(aTexture: GLuint; aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3431   TglTextureStorage3DEXT                                  = procedure(aTexture: GLuint; aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3432 var
3433   glTexStorage1DEXT:                                        TglTexStorage1DEXT;
3434   glTexStorage2DEXT:                                        TglTexStorage2DEXT;
3435   glTexStorage3DEXT:                                        TglTexStorage3DEXT;
3436   glTextureStorage1DEXT:                                    TglTextureStorage1DEXT;
3437   glTextureStorage2DEXT:                                    TglTextureStorage2DEXT;
3438   glTextureStorage3DEXT:                                    TglTextureStorage3DEXT;
3439
3440 { GL_EXT_texture_type_2_10_10_10_REV }
3441 const
3442   GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      = $8368;
3443
3444 { GL_EXT_texture_view }
3445 const
3446   GL_TEXTURE_VIEW_MIN_LEVEL_EXT                           = $82DB;
3447   GL_TEXTURE_VIEW_NUM_LEVELS_EXT                          = $82DC;
3448   GL_TEXTURE_VIEW_MIN_LAYER_EXT                           = $82DD;
3449   GL_TEXTURE_VIEW_NUM_LAYERS_EXT                          = $82DE;
3450   //GL_TEXTURE_IMMUTABLE_LEVELS                           = $82DF;
3451 type
3452   TglTextureViewEXT                                       = procedure(aTexture: GLuint; aTarget: GLenum; aOrigtexture: GLuint; aInternalformat: GLenum; aMinlevel: GLuint; aNumlevels: GLuint; aMinlayer: GLuint; aNumlayers: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3453 var
3454   glTextureViewEXT:                                         TglTextureViewEXT;
3455
3456 { GL_EXT_unpack_subimage }
3457 const
3458   GL_UNPACK_ROW_LENGTH_EXT                                = $0CF2;
3459   GL_UNPACK_SKIP_ROWS_EXT                                 = $0CF3;
3460   GL_UNPACK_SKIP_PIXELS_EXT                               = $0CF4;
3461
3462 { GL_FJ_shader_binary_GCCSO }
3463 const
3464   GL_GCCSO_SHADER_BINARY_FJ                               = $9260;
3465
3466 { GL_IMG_multisampled_render_to_texture }
3467 const
3468   GL_RENDERBUFFER_SAMPLES_IMG                             = $9133;
3469   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               = $9134;
3470   GL_MAX_SAMPLES_IMG                                      = $9135;
3471   GL_TEXTURE_SAMPLES_IMG                                  = $9136;
3472 type
3473   TglRenderbufferStorageMultisampleIMG                    = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3474   TglFramebufferTexture2DMultisampleIMG                   = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint; aSamples: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3475 var
3476   glRenderbufferStorageMultisampleIMG:                      TglRenderbufferStorageMultisampleIMG;
3477   glFramebufferTexture2DMultisampleIMG:                     TglFramebufferTexture2DMultisampleIMG;
3478
3479 { GL_IMG_program_binary }
3480 const
3481   GL_SGX_PROGRAM_BINARY_IMG                               = $9130;
3482
3483 { GL_IMG_read_format }
3484 const
3485   GL_BGRA_IMG                                             = $80E1;
3486   GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       = $8365;
3487
3488 { GL_IMG_shader_binary }
3489 const
3490   GL_SGX_BINARY_IMG                                       = $8C0A;
3491
3492 { GL_IMG_texture_compression_pvrtc }
3493 const
3494   GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      = $8C00;
3495   GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      = $8C01;
3496   GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     = $8C02;
3497   GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     = $8C03;
3498
3499 { GL_IMG_texture_compression_pvrtc2 }
3500 const
3501   GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG                     = $9137;
3502   GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG                     = $9138;
3503
3504 { GL_INTEL_performance_query }
3505 const
3506   GL_PERFQUERY_SINGLE_CONTEXT_INTEL                       = $00000000;
3507   GL_PERFQUERY_GLOBAL_CONTEXT_INTEL                       = $00000001;
3508   GL_PERFQUERY_WAIT_INTEL                                 = $83FB;
3509   GL_PERFQUERY_FLUSH_INTEL                                = $83FA;
3510   GL_PERFQUERY_DONOT_FLUSH_INTEL                          = $83F9;
3511   GL_PERFQUERY_COUNTER_EVENT_INTEL                        = $94F0;
3512   GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL                = $94F1;
3513   GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL                 = $94F2;
3514   GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL                   = $94F3;
3515   GL_PERFQUERY_COUNTER_RAW_INTEL                          = $94F4;
3516   GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL                    = $94F5;
3517   GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL                  = $94F8;
3518   GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL                  = $94F9;
3519   GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL                   = $94FA;
3520   GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL                  = $94FB;
3521   GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL                  = $94FC;
3522   GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL                = $94FD;
3523   GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL              = $94FE;
3524   GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL              = $94FF;
3525   GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL                = $9500;
3526 type
3527   TglBeginPerfQueryINTEL                                  = procedure(aQueryHandle: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3528   TglCreatePerfQueryINTEL                                 = procedure(aQueryId: GLuint; aQueryHandle: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3529   TglDeletePerfQueryINTEL                                 = procedure(aQueryHandle: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3530   TglEndPerfQueryINTEL                                    = procedure(aQueryHandle: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3531   TglGetFirstPerfQueryIdINTEL                             = procedure(aQueryId: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3532   TglGetNextPerfQueryIdINTEL                              = procedure(aQueryId: GLuint; aNextQueryId: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3533   TglGetPerfCounterInfoINTEL                              = procedure(aQueryId: GLuint; aCounterId: GLuint; aCounterNameLength: GLuint; aCounterName: PGLchar; aCounterDescLength: GLuint; aCounterDesc: PGLchar; aCounterOffset: PGLuint; aCounterDataSize: PGLuint; aCounterTypeEnum: PGLuint; aCounterDataTypeEnum: PGLuint; aRawCounterMaxValue: PGLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3534   TglGetPerfQueryDataINTEL                                = procedure(aQueryHandle: GLuint; aFlags: GLuint; aDataSize: GLsizei; aData: PGLvoid; aBytesWritten: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3535   TglGetPerfQueryIdByNameINTEL                            = procedure(aQueryName: PGLchar; aQueryId: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3536   TglGetPerfQueryInfoINTEL                                = procedure(aQueryId: GLuint; aQueryNameLength: GLuint; aQueryName: PGLchar; aDataSize: PGLuint; aNoCounters: PGLuint; aNoInstances: PGLuint; aCapsMask: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3537 var
3538   glBeginPerfQueryINTEL:                                    TglBeginPerfQueryINTEL;
3539   glCreatePerfQueryINTEL:                                   TglCreatePerfQueryINTEL;
3540   glDeletePerfQueryINTEL:                                   TglDeletePerfQueryINTEL;
3541   glEndPerfQueryINTEL:                                      TglEndPerfQueryINTEL;
3542   glGetFirstPerfQueryIdINTEL:                               TglGetFirstPerfQueryIdINTEL;
3543   glGetNextPerfQueryIdINTEL:                                TglGetNextPerfQueryIdINTEL;
3544   glGetPerfCounterInfoINTEL:                                TglGetPerfCounterInfoINTEL;
3545   glGetPerfQueryDataINTEL:                                  TglGetPerfQueryDataINTEL;
3546   glGetPerfQueryIdByNameINTEL:                              TglGetPerfQueryIdByNameINTEL;
3547   glGetPerfQueryInfoINTEL:                                  TglGetPerfQueryInfoINTEL;
3548
3549 { GL_NV_bindless_texture }
3550 type
3551   TglGetTextureHandleNV                                   = function (aTexture: GLuint): GLuint64; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3552   TglGetTextureSamplerHandleNV                            = function (aTexture: GLuint; aSampler: GLuint): GLuint64; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3553   TglMakeTextureHandleResidentNV                          = procedure(aHandle: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3554   TglMakeTextureHandleNonResidentNV                       = procedure(aHandle: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3555   TglGetImageHandleNV                                     = function (aTexture: GLuint; aLevel: GLint; aLayered: GLboolean; aLayer: GLint; aFormat: GLenum): GLuint64; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3556   TglMakeImageHandleResidentNV                            = procedure(aHandle: GLuint64; aAccess: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3557   TglMakeImageHandleNonResidentNV                         = procedure(aHandle: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3558   TglUniformHandleui64NV                                  = procedure(aLocation: GLint; aValue: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3559   TglUniformHandleui64vNV                                 = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3560   TglProgramUniformHandleui64NV                           = procedure(aProgram: GLuint; aLocation: GLint; aValue: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3561   TglProgramUniformHandleui64vNV                          = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValues: PGLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3562   TglIsTextureHandleResidentNV                            = function (aHandle: GLuint64): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3563   TglIsImageHandleResidentNV                              = function (aHandle: GLuint64): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3564 var
3565   glGetTextureHandleNV:                                     TglGetTextureHandleNV;
3566   glGetTextureSamplerHandleNV:                              TglGetTextureSamplerHandleNV;
3567   glMakeTextureHandleResidentNV:                            TglMakeTextureHandleResidentNV;
3568   glMakeTextureHandleNonResidentNV:                         TglMakeTextureHandleNonResidentNV;
3569   glGetImageHandleNV:                                       TglGetImageHandleNV;
3570   glMakeImageHandleResidentNV:                              TglMakeImageHandleResidentNV;
3571   glMakeImageHandleNonResidentNV:                           TglMakeImageHandleNonResidentNV;
3572   glUniformHandleui64NV:                                    TglUniformHandleui64NV;
3573   glUniformHandleui64vNV:                                   TglUniformHandleui64vNV;
3574   glProgramUniformHandleui64NV:                             TglProgramUniformHandleui64NV;
3575   glProgramUniformHandleui64vNV:                            TglProgramUniformHandleui64vNV;
3576   glIsTextureHandleResidentNV:                              TglIsTextureHandleResidentNV;
3577   glIsImageHandleResidentNV:                                TglIsImageHandleResidentNV;
3578
3579 { GL_NV_blend_equation_advanced }
3580 const
3581   GL_BLEND_OVERLAP_NV                                     = $9281;
3582   GL_BLEND_PREMULTIPLIED_SRC_NV                           = $9280;
3583   GL_BLUE_NV                                              = $1905;
3584   GL_COLORBURN_NV                                         = $929A;
3585   GL_COLORDODGE_NV                                        = $9299;
3586   GL_CONJOINT_NV                                          = $9284;
3587   GL_CONTRAST_NV                                          = $92A1;
3588   GL_DARKEN_NV                                            = $9297;
3589   GL_DIFFERENCE_NV                                        = $929E;
3590   GL_DISJOINT_NV                                          = $9283;
3591   GL_DST_ATOP_NV                                          = $928F;
3592   GL_DST_IN_NV                                            = $928B;
3593   GL_DST_NV                                               = $9287;
3594   GL_DST_OUT_NV                                           = $928D;
3595   GL_DST_OVER_NV                                          = $9289;
3596   GL_EXCLUSION_NV                                         = $92A0;
3597   GL_GREEN_NV                                             = $1904;
3598   GL_HARDLIGHT_NV                                         = $929B;
3599   GL_HARDMIX_NV                                           = $92A9;
3600   GL_HSL_COLOR_NV                                         = $92AF;
3601   GL_HSL_HUE_NV                                           = $92AD;
3602   GL_HSL_LUMINOSITY_NV                                    = $92B0;
3603   GL_HSL_SATURATION_NV                                    = $92AE;
3604   GL_INVERT_OVG_NV                                        = $92B4;
3605   GL_INVERT_RGB_NV                                        = $92A3;
3606   GL_LIGHTEN_NV                                           = $9298;
3607   GL_LINEARBURN_NV                                        = $92A5;
3608   GL_LINEARDODGE_NV                                       = $92A4;
3609   GL_LINEARLIGHT_NV                                       = $92A7;
3610   GL_MINUS_CLAMPED_NV                                     = $92B3;
3611   GL_MINUS_NV                                             = $929F;
3612   GL_MULTIPLY_NV                                          = $9294;
3613   GL_OVERLAY_NV                                           = $9296;
3614   GL_PINLIGHT_NV                                          = $92A8;
3615   GL_PLUS_CLAMPED_ALPHA_NV                                = $92B2;
3616   GL_PLUS_CLAMPED_NV                                      = $92B1;
3617   GL_PLUS_DARKER_NV                                       = $9292;
3618   GL_PLUS_NV                                              = $9291;
3619   GL_RED_NV                                               = $1903;
3620   GL_SCREEN_NV                                            = $9295;
3621   GL_SOFTLIGHT_NV                                         = $929C;
3622   GL_SRC_ATOP_NV                                          = $928E;
3623   GL_SRC_IN_NV                                            = $928A;
3624   GL_SRC_NV                                               = $9286;
3625   GL_SRC_OUT_NV                                           = $928C;
3626   GL_SRC_OVER_NV                                          = $9288;
3627   GL_UNCORRELATED_NV                                      = $9282;
3628   GL_VIVIDLIGHT_NV                                        = $92A6;
3629   GL_XOR_NV                                               = $1506;
3630 type
3631   TglBlendParameteriNV                                    = procedure(aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3632   TglBlendBarrierNV                                       = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3633 var
3634   glBlendParameteriNV:                                      TglBlendParameteriNV;
3635   glBlendBarrierNV:                                         TglBlendBarrierNV;
3636
3637 { GL_NV_blend_equation_advanced_coherent }
3638 const
3639   GL_BLEND_ADVANCED_COHERENT_NV                           = $9285;
3640
3641 { GL_NV_conditional_render }
3642 const
3643   GL_QUERY_WAIT_NV                                        = $8E13;
3644   GL_QUERY_NO_WAIT_NV                                     = $8E14;
3645   GL_QUERY_BY_REGION_WAIT_NV                              = $8E15;
3646   GL_QUERY_BY_REGION_NO_WAIT_NV                           = $8E16;
3647 type
3648   TglBeginConditionalRenderNV                             = procedure(aId: GLuint; aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3649   TglEndConditionalRenderNV                               = procedure; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3650 var
3651   glBeginConditionalRenderNV:                               TglBeginConditionalRenderNV;
3652   glEndConditionalRenderNV:                                 TglEndConditionalRenderNV;
3653
3654 { GL_NV_copy_buffer }
3655 const
3656   GL_COPY_READ_BUFFER_NV                                  = $8F36;
3657   GL_COPY_WRITE_BUFFER_NV                                 = $8F37;
3658 type
3659   TglCopyBufferSubDataNV                                  = procedure(aReadTarget: GLenum; aWriteTarget: GLenum; aReadOffset: GLintptr; aWriteOffset: GLintptr; aSize: GLsizeiptr); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3660 var
3661   glCopyBufferSubDataNV:                                    TglCopyBufferSubDataNV;
3662
3663 { GL_NV_coverage_sample }
3664 const
3665   GL_COVERAGE_COMPONENT_NV                                = $8ED0;
3666   GL_COVERAGE_COMPONENT4_NV                               = $8ED1;
3667   GL_COVERAGE_ATTACHMENT_NV                               = $8ED2;
3668   GL_COVERAGE_BUFFERS_NV                                  = $8ED3;
3669   GL_COVERAGE_SAMPLES_NV                                  = $8ED4;
3670   GL_COVERAGE_ALL_FRAGMENTS_NV                            = $8ED5;
3671   GL_COVERAGE_EDGE_FRAGMENTS_NV                           = $8ED6;
3672   GL_COVERAGE_AUTOMATIC_NV                                = $8ED7;
3673   GL_COVERAGE_BUFFER_BIT_NV                               = $00008000;
3674 type
3675   TglCoverageMaskNV                                       = procedure(aMask: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3676   TglCoverageOperationNV                                  = procedure(aOperation: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3677 var
3678   glCoverageMaskNV:                                         TglCoverageMaskNV;
3679   glCoverageOperationNV:                                    TglCoverageOperationNV;
3680
3681 { GL_NV_depth_nonlinear }
3682 const
3683   GL_DEPTH_COMPONENT16_NONLINEAR_NV                       = $8E2C;
3684
3685 { GL_NV_draw_buffers }
3686 const
3687   GL_MAX_DRAW_BUFFERS_NV                                  = $8824;
3688   GL_DRAW_BUFFER0_NV                                      = $8825;
3689   GL_DRAW_BUFFER1_NV                                      = $8826;
3690   GL_DRAW_BUFFER2_NV                                      = $8827;
3691   GL_DRAW_BUFFER3_NV                                      = $8828;
3692   GL_DRAW_BUFFER4_NV                                      = $8829;
3693   GL_DRAW_BUFFER5_NV                                      = $882A;
3694   GL_DRAW_BUFFER6_NV                                      = $882B;
3695   GL_DRAW_BUFFER7_NV                                      = $882C;
3696   GL_DRAW_BUFFER8_NV                                      = $882D;
3697   GL_DRAW_BUFFER9_NV                                      = $882E;
3698   GL_DRAW_BUFFER10_NV                                     = $882F;
3699   GL_DRAW_BUFFER11_NV                                     = $8830;
3700   GL_DRAW_BUFFER12_NV                                     = $8831;
3701   GL_DRAW_BUFFER13_NV                                     = $8832;
3702   GL_DRAW_BUFFER14_NV                                     = $8833;
3703   GL_DRAW_BUFFER15_NV                                     = $8834;
3704   GL_COLOR_ATTACHMENT0_NV                                 = $8CE0;
3705   GL_COLOR_ATTACHMENT1_NV                                 = $8CE1;
3706   GL_COLOR_ATTACHMENT2_NV                                 = $8CE2;
3707   GL_COLOR_ATTACHMENT3_NV                                 = $8CE3;
3708   GL_COLOR_ATTACHMENT4_NV                                 = $8CE4;
3709   GL_COLOR_ATTACHMENT5_NV                                 = $8CE5;
3710   GL_COLOR_ATTACHMENT6_NV                                 = $8CE6;
3711   GL_COLOR_ATTACHMENT7_NV                                 = $8CE7;
3712   GL_COLOR_ATTACHMENT8_NV                                 = $8CE8;
3713   GL_COLOR_ATTACHMENT9_NV                                 = $8CE9;
3714   GL_COLOR_ATTACHMENT10_NV                                = $8CEA;
3715   GL_COLOR_ATTACHMENT11_NV                                = $8CEB;
3716   GL_COLOR_ATTACHMENT12_NV                                = $8CEC;
3717   GL_COLOR_ATTACHMENT13_NV                                = $8CED;
3718   GL_COLOR_ATTACHMENT14_NV                                = $8CEE;
3719   GL_COLOR_ATTACHMENT15_NV                                = $8CEF;
3720 type
3721   TglDrawBuffersNV                                        = procedure(n: GLsizei; const aBufs: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3722 var
3723   glDrawBuffersNV:                                          TglDrawBuffersNV;
3724
3725 { GL_NV_draw_instanced }
3726 type
3727   TglDrawArraysInstancedNV                                = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3728   TglDrawElementsInstancedNV                              = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: Pointer; aPrimcount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3729 var
3730   glDrawArraysInstancedNV:                                  TglDrawArraysInstancedNV;
3731   glDrawElementsInstancedNV:                                TglDrawElementsInstancedNV;
3732
3733 { GL_NV_explicit_attrib_location }
3734   // none
3735
3736 { GL_NV_fbo_color_attachments }
3737 const
3738   GL_MAX_COLOR_ATTACHMENTS_NV                             = $8CDF;
3739
3740 { GL_NV_fence }
3741 const
3742   GL_ALL_COMPLETED_NV                                     = $84F2;
3743   GL_FENCE_STATUS_NV                                      = $84F3;
3744   GL_FENCE_CONDITION_NV                                   = $84F4;
3745 type
3746   TglDeleteFencesNV                                       = procedure(n: GLsizei; const aFences: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3747   TglGenFencesNV                                          = procedure(n: GLsizei; aFences: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3748   TglIsFenceNV                                            = function (aFence: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3749   TglTestFenceNV                                          = function (aFence: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3750   TglGetFenceivNV                                         = procedure(aFence: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3751   TglFinishFenceNV                                        = procedure(aFence: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3752   TglSetFenceNV                                           = procedure(aFence: GLuint; aCondition: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3753 var
3754   glDeleteFencesNV:                                         TglDeleteFencesNV;
3755   glGenFencesNV:                                            TglGenFencesNV;
3756   glIsFenceNV:                                              TglIsFenceNV;
3757   glTestFenceNV:                                            TglTestFenceNV;
3758   glGetFenceivNV:                                           TglGetFenceivNV;
3759   glFinishFenceNV:                                          TglFinishFenceNV;
3760   glSetFenceNV:                                             TglSetFenceNV;
3761
3762 { GL_NV_framebuffer_blit }
3763 const
3764   GL_READ_FRAMEBUFFER_NV                                  = $8CA8;
3765   GL_DRAW_FRAMEBUFFER_NV                                  = $8CA9;
3766   GL_DRAW_FRAMEBUFFER_BINDING_NV                          = $8CA6;
3767   GL_READ_FRAMEBUFFER_BINDING_NV                          = $8CAA;
3768 type
3769   TglBlitFramebufferNV                                    = 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}
3770 var
3771   glBlitFramebufferNV:                                      TglBlitFramebufferNV;
3772
3773 { GL_NV_framebuffer_multisample }
3774 const
3775   GL_RENDERBUFFER_SAMPLES_NV                              = $8CAB;
3776   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV                = $8D56;
3777   GL_MAX_SAMPLES_NV                                       = $8D57;
3778 type
3779   TglRenderbufferStorageMultisampleNV                     = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3780 var
3781   glRenderbufferStorageMultisampleNV:                       TglRenderbufferStorageMultisampleNV;
3782
3783 { GL_NV_generate_mipmap_sRGB }
3784   // none
3785
3786 { GL_NV_image_formats }
3787   // none
3788
3789 { GL_NV_instanced_arrays }
3790 const
3791   GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV                       = $88FE;
3792 type
3793   TglVertexAttribDivisorNV                                = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3794 var
3795   glVertexAttribDivisorNV:                                  TglVertexAttribDivisorNV;
3796
3797 { GL_NV_internalformat_sample_query }
3798 const
3799   //GL_TEXTURE_2D_MULTISAMPLE                             = $9100;
3800   GL_TEXTURE_2D_MULTISAMPLE_ARRAY                         = $9102;
3801   GL_MULTISAMPLES_NV                                      = $9371;
3802   GL_SUPERSAMPLE_SCALE_X_NV                               = $9372;
3803   GL_SUPERSAMPLE_SCALE_Y_NV                               = $9373;
3804   GL_CONFORMANT_NV                                        = $9374;
3805 type
3806   TglGetInternalformatSampleivNV                          = procedure(aTarget: GLenum; aInternalformat: GLenum; aSamples: GLsizei; aPname: GLenum; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3807 var
3808   glGetInternalformatSampleivNV:                            TglGetInternalformatSampleivNV;
3809
3810 { GL_NV_non_square_matrices }
3811 const
3812   GL_FLOAT_MAT2x3_NV                                      = $8B65;
3813   GL_FLOAT_MAT2x4_NV                                      = $8B66;
3814   GL_FLOAT_MAT3x2_NV                                      = $8B67;
3815   GL_FLOAT_MAT3x4_NV                                      = $8B68;
3816   GL_FLOAT_MAT4x2_NV                                      = $8B69;
3817   GL_FLOAT_MAT4x3_NV                                      = $8B6A;
3818 type
3819   TglUniformMatrix2x3fvNV                                 = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3820   TglUniformMatrix3x2fvNV                                 = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3821   TglUniformMatrix2x4fvNV                                 = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3822   TglUniformMatrix4x2fvNV                                 = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3823   TglUniformMatrix3x4fvNV                                 = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3824   TglUniformMatrix4x3fvNV                                 = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3825 var
3826   glUniformMatrix2x3fvNV:                                   TglUniformMatrix2x3fvNV;
3827   glUniformMatrix3x2fvNV:                                   TglUniformMatrix3x2fvNV;
3828   glUniformMatrix2x4fvNV:                                   TglUniformMatrix2x4fvNV;
3829   glUniformMatrix4x2fvNV:                                   TglUniformMatrix4x2fvNV;
3830   glUniformMatrix3x4fvNV:                                   TglUniformMatrix3x4fvNV;
3831   glUniformMatrix4x3fvNV:                                   TglUniformMatrix4x3fvNV;
3832
3833 { GL_NV_path_rendering }
3834 const
3835   GL_PATH_FORMAT_SVG_NV                                   = $9070;
3836   GL_PATH_FORMAT_PS_NV                                    = $9071;
3837   GL_STANDARD_FONT_NAME_NV                                = $9072;
3838   GL_SYSTEM_FONT_NAME_NV                                  = $9073;
3839   GL_FILE_NAME_NV                                         = $9074;
3840   GL_PATH_STROKE_WIDTH_NV                                 = $9075;
3841   GL_PATH_END_CAPS_NV                                     = $9076;
3842   GL_PATH_INITIAL_END_CAP_NV                              = $9077;
3843   GL_PATH_TERMINAL_END_CAP_NV                             = $9078;
3844   GL_PATH_JOIN_STYLE_NV                                   = $9079;
3845   GL_PATH_MITER_LIMIT_NV                                  = $907A;
3846   GL_PATH_DASH_CAPS_NV                                    = $907B;
3847   GL_PATH_INITIAL_DASH_CAP_NV                             = $907C;
3848   GL_PATH_TERMINAL_DASH_CAP_NV                            = $907D;
3849   GL_PATH_DASH_OFFSET_NV                                  = $907E;
3850   GL_PATH_CLIENT_LENGTH_NV                                = $907F;
3851   GL_PATH_FILL_MODE_NV                                    = $9080;
3852   GL_PATH_FILL_MASK_NV                                    = $9081;
3853   GL_PATH_FILL_COVER_MODE_NV                              = $9082;
3854   GL_PATH_STROKE_COVER_MODE_NV                            = $9083;
3855   GL_PATH_STROKE_MASK_NV                                  = $9084;
3856   GL_COUNT_UP_NV                                          = $9088;
3857   GL_COUNT_DOWN_NV                                        = $9089;
3858   GL_PATH_OBJECT_BOUNDING_BOX_NV                          = $908A;
3859   GL_CONVEX_HULL_NV                                       = $908B;
3860   GL_BOUNDING_BOX_NV                                      = $908D;
3861   GL_TRANSLATE_X_NV                                       = $908E;
3862   GL_TRANSLATE_Y_NV                                       = $908F;
3863   GL_TRANSLATE_2D_NV                                      = $9090;
3864   GL_TRANSLATE_3D_NV                                      = $9091;
3865   GL_AFFINE_2D_NV                                         = $9092;
3866   GL_AFFINE_3D_NV                                         = $9094;
3867   GL_TRANSPOSE_AFFINE_2D_NV                               = $9096;
3868   GL_TRANSPOSE_AFFINE_3D_NV                               = $9098;
3869   GL_UTF8_NV                                              = $909A;
3870   GL_UTF16_NV                                             = $909B;
3871   GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV                    = $909C;
3872   GL_PATH_COMMAND_COUNT_NV                                = $909D;
3873   GL_PATH_COORD_COUNT_NV                                  = $909E;
3874   GL_PATH_DASH_ARRAY_COUNT_NV                             = $909F;
3875   GL_PATH_COMPUTED_LENGTH_NV                              = $90A0;
3876   GL_PATH_FILL_BOUNDING_BOX_NV                            = $90A1;
3877   GL_PATH_STROKE_BOUNDING_BOX_NV                          = $90A2;
3878   GL_SQUARE_NV                                            = $90A3;
3879   GL_ROUND_NV                                             = $90A4;
3880   GL_TRIANGULAR_NV                                        = $90A5;
3881   GL_BEVEL_NV                                             = $90A6;
3882   GL_MITER_REVERT_NV                                      = $90A7;
3883   GL_MITER_TRUNCATE_NV                                    = $90A8;
3884   GL_SKIP_MISSING_GLYPH_NV                                = $90A9;
3885   GL_USE_MISSING_GLYPH_NV                                 = $90AA;
3886   GL_PATH_ERROR_POSITION_NV                               = $90AB;
3887   GL_ACCUM_ADJACENT_PAIRS_NV                              = $90AD;
3888   GL_ADJACENT_PAIRS_NV                                    = $90AE;
3889   GL_FIRST_TO_REST_NV                                     = $90AF;
3890   GL_PATH_GEN_MODE_NV                                     = $90B0;
3891   GL_PATH_GEN_COEFF_NV                                    = $90B1;
3892   GL_PATH_GEN_COMPONENTS_NV                               = $90B3;
3893   GL_PATH_STENCIL_FUNC_NV                                 = $90B7;
3894   GL_PATH_STENCIL_REF_NV                                  = $90B8;
3895   GL_PATH_STENCIL_VALUE_MASK_NV                           = $90B9;
3896   GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV                  = $90BD;
3897   GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV                   = $90BE;
3898   GL_PATH_COVER_DEPTH_FUNC_NV                             = $90BF;
3899   GL_PATH_DASH_OFFSET_RESET_NV                            = $90B4;
3900   GL_MOVE_TO_RESETS_NV                                    = $90B5;
3901   GL_MOVE_TO_CONTINUES_NV                                 = $90B6;
3902   GL_CLOSE_PATH_NV                                        = $00;
3903   GL_MOVE_TO_NV                                           = $02;
3904   GL_RELATIVE_MOVE_TO_NV                                  = $03;
3905   GL_LINE_TO_NV                                           = $04;
3906   GL_RELATIVE_LINE_TO_NV                                  = $05;
3907   GL_HORIZONTAL_LINE_TO_NV                                = $06;
3908   GL_RELATIVE_HORIZONTAL_LINE_TO_NV                       = $07;
3909   GL_VERTICAL_LINE_TO_NV                                  = $08;
3910   GL_RELATIVE_VERTICAL_LINE_TO_NV                         = $09;
3911   GL_QUADRATIC_CURVE_TO_NV                                = $0A;
3912   GL_RELATIVE_QUADRATIC_CURVE_TO_NV                       = $0B;
3913   GL_CUBIC_CURVE_TO_NV                                    = $0C;
3914   GL_RELATIVE_CUBIC_CURVE_TO_NV                           = $0D;
3915   GL_SMOOTH_QUADRATIC_CURVE_TO_NV                         = $0E;
3916   GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV                = $0F;
3917   GL_SMOOTH_CUBIC_CURVE_TO_NV                             = $10;
3918   GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV                    = $11;
3919   GL_SMALL_CCW_ARC_TO_NV                                  = $12;
3920   GL_RELATIVE_SMALL_CCW_ARC_TO_NV                         = $13;
3921   GL_SMALL_CW_ARC_TO_NV                                   = $14;
3922   GL_RELATIVE_SMALL_CW_ARC_TO_NV                          = $15;
3923   GL_LARGE_CCW_ARC_TO_NV                                  = $16;
3924   GL_RELATIVE_LARGE_CCW_ARC_TO_NV                         = $17;
3925   GL_LARGE_CW_ARC_TO_NV                                   = $18;
3926   GL_RELATIVE_LARGE_CW_ARC_TO_NV                          = $19;
3927   GL_RESTART_PATH_NV                                      = $F0;
3928   GL_DUP_FIRST_CUBIC_CURVE_TO_NV                          = $F2;
3929   GL_DUP_LAST_CUBIC_CURVE_TO_NV                           = $F4;
3930   GL_RECT_NV                                              = $F6;
3931   GL_CIRCULAR_CCW_ARC_TO_NV                               = $F8;
3932   GL_CIRCULAR_CW_ARC_TO_NV                                = $FA;
3933   GL_CIRCULAR_TANGENT_ARC_TO_NV                           = $FC;
3934   GL_ARC_TO_NV                                            = $FE;
3935   GL_RELATIVE_ARC_TO_NV                                   = $FF;
3936   GL_BOLD_BIT_NV                                          = $01;
3937   GL_ITALIC_BIT_NV                                        = $02;
3938   GL_GLYPH_WIDTH_BIT_NV                                   = $01;
3939   GL_GLYPH_HEIGHT_BIT_NV                                  = $02;
3940   GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV                    = $04;
3941   GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV                    = $08;
3942   GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV              = $10;
3943   GL_GLYPH_VERTICAL_BEARING_X_BIT_NV                      = $20;
3944   GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV                      = $40;
3945   GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV                = $80;
3946   GL_GLYPH_HAS_KERNING_BIT_NV                             = $100;
3947   GL_FONT_X_MIN_BOUNDS_BIT_NV                             = $00010000;
3948   GL_FONT_Y_MIN_BOUNDS_BIT_NV                             = $00020000;
3949   GL_FONT_X_MAX_BOUNDS_BIT_NV                             = $00040000;
3950   GL_FONT_Y_MAX_BOUNDS_BIT_NV                             = $00080000;
3951   GL_FONT_UNITS_PER_EM_BIT_NV                             = $00100000;
3952   GL_FONT_ASCENDER_BIT_NV                                 = $00200000;
3953   GL_FONT_DESCENDER_BIT_NV                                = $00400000;
3954   GL_FONT_HEIGHT_BIT_NV                                   = $00800000;
3955   GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV                        = $01000000;
3956   GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV                       = $02000000;
3957   GL_FONT_UNDERLINE_POSITION_BIT_NV                       = $04000000;
3958   GL_FONT_UNDERLINE_THICKNESS_BIT_NV                      = $08000000;
3959   GL_FONT_HAS_KERNING_BIT_NV                              = $10000000;
3960   GL_ROUNDED_RECT_NV                                      = $E8;
3961   GL_RELATIVE_ROUNDED_RECT_NV                             = $E9;
3962   GL_ROUNDED_RECT2_NV                                     = $EA;
3963   GL_RELATIVE_ROUNDED_RECT2_NV                            = $EB;
3964   GL_ROUNDED_RECT4_NV                                     = $EC;
3965   GL_RELATIVE_ROUNDED_RECT4_NV                            = $ED;
3966   GL_ROUNDED_RECT8_NV                                     = $EE;
3967   GL_RELATIVE_ROUNDED_RECT8_NV                            = $EF;
3968   GL_RELATIVE_RECT_NV                                     = $F7;
3969   GL_FONT_GLYPHS_AVAILABLE_NV                             = $9368;
3970   GL_FONT_TARGET_UNAVAILABLE_NV                           = $9369;
3971   GL_FONT_UNAVAILABLE_NV                                  = $936A;
3972   GL_FONT_UNINTELLIGIBLE_NV                               = $936B;
3973   GL_CONIC_CURVE_TO_NV                                    = $1A;
3974   GL_RELATIVE_CONIC_CURVE_TO_NV                           = $1B;
3975   GL_FONT_NUM_GLYPH_INDICES_BIT_NV                        = $20000000;
3976   GL_STANDARD_FONT_FORMAT_NV                              = $936C;
3977   GL_PATH_PROJECTION_NV                                   = $1701;
3978   GL_PATH_MODELVIEW_NV                                    = $1700;
3979   GL_PATH_MODELVIEW_STACK_DEPTH_NV                        = $0BA3;
3980   GL_PATH_MODELVIEW_MATRIX_NV                             = $0BA6;
3981   GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV                    = $0D36;
3982   GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV                   = $84E3;
3983   GL_PATH_PROJECTION_STACK_DEPTH_NV                       = $0BA4;
3984   GL_PATH_PROJECTION_MATRIX_NV                            = $0BA7;
3985   GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV                   = $0D38;
3986   GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV                  = $84E4;
3987   GL_FRAGMENT_INPUT_NV                                    = $936D;
3988 type
3989   TglGenPathsNV                                           = function (aRange: GLsizei): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3990   TglDeletePathsNV                                        = procedure(aPath: GLuint; aRange: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3991   TglIsPathNV                                             = function (aPath: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3992   TglPathCommandsNV                                       = procedure(aPath: GLuint; aNumCommands: GLsizei; const aCommands: PGLubyte; aNumCoords: GLsizei; aCoordType: GLenum; const aCoords: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3993   TglPathCoordsNV                                         = procedure(aPath: GLuint; aNumCoords: GLsizei; aCoordType: GLenum; const aCoords: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3994   TglPathSubCommandsNV                                    = procedure(aPath: GLuint; aCommandStart: GLsizei; aCommandsToDelete: GLsizei; aNumCommands: GLsizei; const aCommands: PGLubyte; aNumCoords: GLsizei; aCoordType: GLenum; const aCoords: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3995   TglPathSubCoordsNV                                      = procedure(aPath: GLuint; aCoordStart: GLsizei; aNumCoords: GLsizei; aCoordType: GLenum; const aCoords: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3996   TglPathStringNV                                         = procedure(aPath: GLuint; aFormat: GLenum; aLength: GLsizei; const aPathString: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3997   TglPathGlyphsNV                                         = procedure(aFirstPathName: GLuint; aFontTarget: GLenum; const aFontName: Pointer; aFontStyle: GLbitfield; aNumGlyphs: GLsizei; aType: GLenum; const aCharcodes: Pointer; aHandleMissingGlyphs: GLenum; aPathParameterTemplate: GLuint; aEmScale: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3998   TglPathGlyphRangeNV                                     = procedure(aFirstPathName: GLuint; aFontTarget: GLenum; const aFontName: Pointer; aFontStyle: GLbitfield; aFirstGlyph: GLuint; aNumGlyphs: GLsizei; aHandleMissingGlyphs: GLenum; aPathParameterTemplate: GLuint; aEmScale: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
3999   TglWeightPathsNV                                        = procedure(aResultPath: GLuint; aNumPaths: GLsizei; const aPaths: PGLuint; const aWeights: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4000   TglCopyPathNV                                           = procedure(aResultPath: GLuint; aSrcPath: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4001   TglInterpolatePathsNV                                   = procedure(aResultPath: GLuint; aPathA: GLuint; aPathB: GLuint; aWeight: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4002   TglTransformPathNV                                      = procedure(aResultPath: GLuint; aSrcPath: GLuint; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4003   TglPathParameterivNV                                    = procedure(aPath: GLuint; aPname: GLenum; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4004   TglPathParameteriNV                                     = procedure(aPath: GLuint; aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4005   TglPathParameterfvNV                                    = procedure(aPath: GLuint; aPname: GLenum; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4006   TglPathParameterfNV                                     = procedure(aPath: GLuint; aPname: GLenum; aValue: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4007   TglPathDashArrayNV                                      = procedure(aPath: GLuint; aDashCount: GLsizei; const aDashArray: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4008   TglPathStencilFuncNV                                    = procedure(aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4009   TglPathStencilDepthOffsetNV                             = procedure(aFactor: GLfloat; aUnits: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4010   TglStencilFillPathNV                                    = procedure(aPath: GLuint; aFillMode: GLenum; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4011   TglStencilStrokePathNV                                  = procedure(aPath: GLuint; aReference: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4012   TglStencilFillPathInstancedNV                           = procedure(aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aFillMode: GLenum; aMask: GLuint; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4013   TglStencilStrokePathInstancedNV                         = procedure(aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aReference: GLint; aMask: GLuint; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4014   TglPathCoverDepthFuncNV                                 = procedure(aFunc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4015   TglCoverFillPathNV                                      = procedure(aPath: GLuint; aCoverMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4016   TglCoverStrokePathNV                                    = procedure(aPath: GLuint; aCoverMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4017   TglCoverFillPathInstancedNV                             = procedure(aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aCoverMode: GLenum; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4018   TglCoverStrokePathInstancedNV                           = procedure(aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aCoverMode: GLenum; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4019   TglGetPathParameterivNV                                 = procedure(aPath: GLuint; aPname: GLenum; aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4020   TglGetPathParameterfvNV                                 = procedure(aPath: GLuint; aPname: GLenum; aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4021   TglGetPathCommandsNV                                    = procedure(aPath: GLuint; aCommands: PGLubyte); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4022   TglGetPathCoordsNV                                      = procedure(aPath: GLuint; aCoords: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4023   TglGetPathDashArrayNV                                   = procedure(aPath: GLuint; aDashArray: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4024   TglGetPathMetricsNV                                     = procedure(aMetricQueryMask: GLbitfield; aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aStride: GLsizei; aMetrics: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4025   TglGetPathMetricRangeNV                                 = procedure(aMetricQueryMask: GLbitfield; aFirstPathName: GLuint; aNumPaths: GLsizei; aStride: GLsizei; aMetrics: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4026   TglGetPathSpacingNV                                     = procedure(aPathListMode: GLenum; aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aAdvanceScale: GLfloat; aKerningScale: GLfloat; aTransformType: GLenum; aReturnedSpacing: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4027   TglIsPointInFillPathNV                                  = function (aPath: GLuint; aMask: GLuint; x: GLfloat; y: GLfloat): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4028   TglIsPointInStrokePathNV                                = function (aPath: GLuint; x: GLfloat; y: GLfloat): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4029   TglGetPathLengthNV                                      = function (aPath: GLuint; aStartSegment: GLsizei; aNumSegments: GLsizei): GLfloat; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4030   TglPointAlongPathNV                                     = function (aPath: GLuint; aStartSegment: GLsizei; aNumSegments: GLsizei; aDistance: GLfloat; x: PGLfloat; y: PGLfloat; aTangentX: PGLfloat; aTangentY: PGLfloat): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4031   TglMatrixLoad3x2fNV                                     = procedure(aMatrixMode: GLenum; const m: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4032   TglMatrixLoad3x3fNV                                     = procedure(aMatrixMode: GLenum; const m: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4033   TglMatrixLoadTranspose3x3fNV                            = procedure(aMatrixMode: GLenum; const m: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4034   TglMatrixMult3x2fNV                                     = procedure(aMatrixMode: GLenum; const m: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4035   TglMatrixMult3x3fNV                                     = procedure(aMatrixMode: GLenum; const m: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4036   TglMatrixMultTranspose3x3fNV                            = procedure(aMatrixMode: GLenum; const m: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4037   TglStencilThenCoverFillPathNV                           = procedure(aPath: GLuint; aFillMode: GLenum; aMask: GLuint; aCoverMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4038   TglStencilThenCoverStrokePathNV                         = procedure(aPath: GLuint; aReference: GLint; aMask: GLuint; aCoverMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4039   TglStencilThenCoverFillPathInstancedNV                  = procedure(aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aFillMode: GLenum; aMask: GLuint; aCoverMode: GLenum; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4040   TglStencilThenCoverStrokePathInstancedNV                = procedure(aNumPaths: GLsizei; aPathNameType: GLenum; const aPaths: Pointer; aPathBase: GLuint; aReference: GLint; aMask: GLuint; aCoverMode: GLenum; aTransformType: GLenum; const aTransformValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4041   TglPathGlyphIndexRangeNV                                = function (aFontTarget: GLenum; const aFontName: Pointer; aFontStyle: GLbitfield; aPathParameterTemplate: GLuint; aEmScale: GLfloat; aBaseAndCount: PGLuint): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4042   TglPathGlyphIndexArrayNV                                = function (aFirstPathName: GLuint; aFontTarget: GLenum; const aFontName: Pointer; aFontStyle: GLbitfield; aFirstGlyphIndex: GLuint; aNumGlyphs: GLsizei; aPathParameterTemplate: GLuint; aEmScale: GLfloat): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4043   TglPathMemoryGlyphIndexArrayNV                          = function (aFirstPathName: GLuint; aFontTarget: GLenum; aFontSize: GLsizeiptr; const aFontData: Pointer; aFaceIndex: GLsizei; aFirstGlyphIndex: GLuint; aNumGlyphs: GLsizei; aPathParameterTemplate: GLuint; aEmScale: GLfloat): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4044   TglProgramPathFragmentInputGenNV                        = procedure(aProgram: GLuint; aLocation: GLint; aGenMode: GLenum; aComponents: GLint; const aCoeffs: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4045   TglGetProgramResourcefvNV                               = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aPropCount: GLsizei; const aProps: PGLenum; aBufSize: GLsizei; aLength: PGLsizei; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4046 var
4047   glGenPathsNV:                                             TglGenPathsNV;
4048   glDeletePathsNV:                                          TglDeletePathsNV;
4049   glIsPathNV:                                               TglIsPathNV;
4050   glPathCommandsNV:                                         TglPathCommandsNV;
4051   glPathCoordsNV:                                           TglPathCoordsNV;
4052   glPathSubCommandsNV:                                      TglPathSubCommandsNV;
4053   glPathSubCoordsNV:                                        TglPathSubCoordsNV;
4054   glPathStringNV:                                           TglPathStringNV;
4055   glPathGlyphsNV:                                           TglPathGlyphsNV;
4056   glPathGlyphRangeNV:                                       TglPathGlyphRangeNV;
4057   glWeightPathsNV:                                          TglWeightPathsNV;
4058   glCopyPathNV:                                             TglCopyPathNV;
4059   glInterpolatePathsNV:                                     TglInterpolatePathsNV;
4060   glTransformPathNV:                                        TglTransformPathNV;
4061   glPathParameterivNV:                                      TglPathParameterivNV;
4062   glPathParameteriNV:                                       TglPathParameteriNV;
4063   glPathParameterfvNV:                                      TglPathParameterfvNV;
4064   glPathParameterfNV:                                       TglPathParameterfNV;
4065   glPathDashArrayNV:                                        TglPathDashArrayNV;
4066   glPathStencilFuncNV:                                      TglPathStencilFuncNV;
4067   glPathStencilDepthOffsetNV:                               TglPathStencilDepthOffsetNV;
4068   glStencilFillPathNV:                                      TglStencilFillPathNV;
4069   glStencilStrokePathNV:                                    TglStencilStrokePathNV;
4070   glStencilFillPathInstancedNV:                             TglStencilFillPathInstancedNV;
4071   glStencilStrokePathInstancedNV:                           TglStencilStrokePathInstancedNV;
4072   glPathCoverDepthFuncNV:                                   TglPathCoverDepthFuncNV;
4073   glCoverFillPathNV:                                        TglCoverFillPathNV;
4074   glCoverStrokePathNV:                                      TglCoverStrokePathNV;
4075   glCoverFillPathInstancedNV:                               TglCoverFillPathInstancedNV;
4076   glCoverStrokePathInstancedNV:                             TglCoverStrokePathInstancedNV;
4077   glGetPathParameterivNV:                                   TglGetPathParameterivNV;
4078   glGetPathParameterfvNV:                                   TglGetPathParameterfvNV;
4079   glGetPathCommandsNV:                                      TglGetPathCommandsNV;
4080   glGetPathCoordsNV:                                        TglGetPathCoordsNV;
4081   glGetPathDashArrayNV:                                     TglGetPathDashArrayNV;
4082   glGetPathMetricsNV:                                       TglGetPathMetricsNV;
4083   glGetPathMetricRangeNV:                                   TglGetPathMetricRangeNV;
4084   glGetPathSpacingNV:                                       TglGetPathSpacingNV;
4085   glIsPointInFillPathNV:                                    TglIsPointInFillPathNV;
4086   glIsPointInStrokePathNV:                                  TglIsPointInStrokePathNV;
4087   glGetPathLengthNV:                                        TglGetPathLengthNV;
4088   glPointAlongPathNV:                                       TglPointAlongPathNV;
4089   glMatrixLoad3x2fNV:                                       TglMatrixLoad3x2fNV;
4090   glMatrixLoad3x3fNV:                                       TglMatrixLoad3x3fNV;
4091   glMatrixLoadTranspose3x3fNV:                              TglMatrixLoadTranspose3x3fNV;
4092   glMatrixMult3x2fNV:                                       TglMatrixMult3x2fNV;
4093   glMatrixMult3x3fNV:                                       TglMatrixMult3x3fNV;
4094   glMatrixMultTranspose3x3fNV:                              TglMatrixMultTranspose3x3fNV;
4095   glStencilThenCoverFillPathNV:                             TglStencilThenCoverFillPathNV;
4096   glStencilThenCoverStrokePathNV:                           TglStencilThenCoverStrokePathNV;
4097   glStencilThenCoverFillPathInstancedNV:                    TglStencilThenCoverFillPathInstancedNV;
4098   glStencilThenCoverStrokePathInstancedNV:                  TglStencilThenCoverStrokePathInstancedNV;
4099   glPathGlyphIndexRangeNV:                                  TglPathGlyphIndexRangeNV;
4100   glPathGlyphIndexArrayNV:                                  TglPathGlyphIndexArrayNV;
4101   glPathMemoryGlyphIndexArrayNV:                            TglPathMemoryGlyphIndexArrayNV;
4102   glProgramPathFragmentInputGenNV:                          TglProgramPathFragmentInputGenNV;
4103   glGetProgramResourcefvNV:                                 TglGetProgramResourcefvNV;
4104
4105 { GL_NV_read_buffer }
4106 const
4107   GL_READ_BUFFER_NV                                       = $0C02;
4108 type
4109   TglReadBufferNV                                         = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4110 var
4111   glReadBufferNV:                                           TglReadBufferNV;
4112
4113 { GL_NV_read_buffer_front }
4114   // none
4115
4116 { GL_NV_read_depth }
4117   // none
4118
4119 { GL_NV_read_depth_stencil }
4120   // none
4121
4122 { GL_NV_read_stencil }
4123   // none
4124
4125 { GL_NV_sRGB_formats }
4126 const
4127   GL_SLUMINANCE_NV                                        = $8C46;
4128   GL_SLUMINANCE_ALPHA_NV                                  = $8C44;
4129   GL_SRGB8_NV                                             = $8C41;
4130   GL_SLUMINANCE8_NV                                       = $8C47;
4131   GL_SLUMINANCE8_ALPHA8_NV                                = $8C45;
4132   GL_COMPRESSED_SRGB_S3TC_DXT1_NV                         = $8C4C;
4133   GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV                   = $8C4D;
4134   GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV                   = $8C4E;
4135   GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV                   = $8C4F;
4136   GL_ETC1_SRGB8_NV                                        = $88EE;
4137
4138 { GL_NV_shader_noperspective_interpolation }
4139   // none
4140
4141 { GL_NV_shadow_samplers_array }
4142 const
4143   GL_SAMPLER_2D_ARRAY_SHADOW_NV                           = $8DC4;
4144
4145 { GL_NV_shadow_samplers_cube }
4146 const
4147   GL_SAMPLER_CUBE_SHADOW_NV                               = $8DC5;
4148
4149 { GL_NV_texture_border_clamp }
4150 const
4151   GL_TEXTURE_BORDER_COLOR_NV                              = $1004;
4152   GL_CLAMP_TO_BORDER_NV                                   = $812D;
4153
4154 { GL_NV_texture_compression_s3tc_update }
4155   // none
4156
4157 { GL_NV_texture_npot_2D_mipmap }
4158   // none
4159
4160 { GL_NV_viewport_array }
4161 const
4162   GL_MAX_VIEWPORTS_NV                                     = $825B;
4163   GL_VIEWPORT_SUBPIXEL_BITS_NV                            = $825C;
4164   GL_VIEWPORT_BOUNDS_RANGE_NV                             = $825D;
4165   GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV                   = $825F;
4166 type
4167   TglViewportArrayvNV                                     = procedure(aFirst: GLuint; aCount: GLsizei; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4168   TglViewportIndexedfNV                                   = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; w: GLfloat; h: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4169   TglViewportIndexedfvNV                                  = procedure(aIndex: GLuint; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4170   TglScissorArrayvNV                                      = procedure(aFirst: GLuint; aCount: GLsizei; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4171   TglScissorIndexedNV                                     = procedure(aIndex: GLuint; aLeft: GLint; aBottom: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4172   TglScissorIndexedvNV                                    = procedure(aIndex: GLuint; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4173   TglDepthRangeArrayfvNV                                  = procedure(aFirst: GLuint; aCount: GLsizei; const v: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4174   TglDepthRangeIndexedfNV                                 = procedure(aIndex: GLuint; n: GLfloat; f: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4175   TglGetFloati_vNV                                        = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4176   TglEnableiNV                                            = procedure(aTarget: GLenum; aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4177   TglDisableiNV                                           = procedure(aTarget: GLenum; aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4178   TglIsEnablediNV                                         = function (aTarget: GLenum; aIndex: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4179 var
4180   glViewportArrayvNV:                                       TglViewportArrayvNV;
4181   glViewportIndexedfNV:                                     TglViewportIndexedfNV;
4182   glViewportIndexedfvNV:                                    TglViewportIndexedfvNV;
4183   glScissorArrayvNV:                                        TglScissorArrayvNV;
4184   glScissorIndexedNV:                                       TglScissorIndexedNV;
4185   glScissorIndexedvNV:                                      TglScissorIndexedvNV;
4186   glDepthRangeArrayfvNV:                                    TglDepthRangeArrayfvNV;
4187   glDepthRangeIndexedfNV:                                   TglDepthRangeIndexedfNV;
4188   glGetFloati_vNV:                                          TglGetFloati_vNV;
4189   glEnableiNV:                                              TglEnableiNV;
4190   glDisableiNV:                                             TglDisableiNV;
4191   glIsEnablediNV:                                           TglIsEnablediNV;
4192
4193 { GL_QCOM_alpha_test }
4194 const
4195   GL_ALPHA_TEST_QCOM                                      = $0BC0;
4196   GL_ALPHA_TEST_FUNC_QCOM                                 = $0BC1;
4197   GL_ALPHA_TEST_REF_QCOM                                  = $0BC2;
4198 type
4199   TglAlphaFuncQCOM                                        = procedure(aFunc: GLenum; aRef: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4200 var
4201   glAlphaFuncQCOM:                                          TglAlphaFuncQCOM;
4202
4203 { GL_QCOM_binning_control }
4204 const
4205   GL_BINNING_CONTROL_HINT_QCOM                            = $8FB0;
4206   GL_CPU_OPTIMIZED_QCOM                                   = $8FB1;
4207   GL_GPU_OPTIMIZED_QCOM                                   = $8FB2;
4208   GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM                    = $8FB3;
4209
4210 { GL_QCOM_driver_control }
4211 type
4212   TglGetDriverControlsQCOM                                = procedure(aNum: PGLint; aSize: GLsizei; aDriverControls: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4213   TglGetDriverControlStringQCOM                           = procedure(aDriverControl: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aDriverControlString: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4214   TglEnableDriverControlQCOM                              = procedure(aDriverControl: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4215   TglDisableDriverControlQCOM                             = procedure(aDriverControl: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4216 var
4217   glGetDriverControlsQCOM:                                  TglGetDriverControlsQCOM;
4218   glGetDriverControlStringQCOM:                             TglGetDriverControlStringQCOM;
4219   glEnableDriverControlQCOM:                                TglEnableDriverControlQCOM;
4220   glDisableDriverControlQCOM:                               TglDisableDriverControlQCOM;
4221
4222 { GL_QCOM_extended_get }
4223 const
4224   GL_TEXTURE_WIDTH_QCOM                                   = $8BD2;
4225   GL_TEXTURE_HEIGHT_QCOM                                  = $8BD3;
4226   GL_TEXTURE_DEPTH_QCOM                                   = $8BD4;
4227   GL_TEXTURE_INTERNAL_FORMAT_QCOM                         = $8BD5;
4228   GL_TEXTURE_FORMAT_QCOM                                  = $8BD6;
4229   GL_TEXTURE_TYPE_QCOM                                    = $8BD7;
4230   GL_TEXTURE_IMAGE_VALID_QCOM                             = $8BD8;
4231   GL_TEXTURE_NUM_LEVELS_QCOM                              = $8BD9;
4232   GL_TEXTURE_TARGET_QCOM                                  = $8BDA;
4233   GL_TEXTURE_OBJECT_VALID_QCOM                            = $8BDB;
4234   GL_STATE_RESTORE                                        = $8BDC;
4235 type
4236   TglExtGetTexturesQCOM                                   = procedure(aTextures: PGLuint; aMaxTextures: GLint; aNumTextures: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4237   TglExtGetBuffersQCOM                                    = procedure(aBuffers: PGLuint; aMaxBuffers: GLint; aNumBuffers: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4238   TglExtGetRenderbuffersQCOM                              = procedure(aRenderbuffers: PGLuint; aMaxRenderbuffers: GLint; aNumRenderbuffers: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4239   TglExtGetFramebuffersQCOM                               = procedure(aFramebuffers: PGLuint; aMaxFramebuffers: GLint; aNumFramebuffers: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4240   TglExtGetTexLevelParameterivQCOM                        = procedure(aTexture: GLuint; aFace: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4241   TglExtTexObjectStateOverrideiQCOM                       = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4242   TglExtGetTexSubImageQCOM                                = procedure(aTarget: GLenum; aLevel: GLint; aXoffset: GLint; aYoffset: GLint; aZoffset: GLint; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei; aFormat: GLenum; aType: GLenum; aTexels: Pointer); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4243   TglExtGetBufferPointervQCOM                             = procedure(aTarget: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4244 var
4245   glExtGetTexturesQCOM:                                     TglExtGetTexturesQCOM;
4246   glExtGetBuffersQCOM:                                      TglExtGetBuffersQCOM;
4247   glExtGetRenderbuffersQCOM:                                TglExtGetRenderbuffersQCOM;
4248   glExtGetFramebuffersQCOM:                                 TglExtGetFramebuffersQCOM;
4249   glExtGetTexLevelParameterivQCOM:                          TglExtGetTexLevelParameterivQCOM;
4250   glExtTexObjectStateOverrideiQCOM:                         TglExtTexObjectStateOverrideiQCOM;
4251   glExtGetTexSubImageQCOM:                                  TglExtGetTexSubImageQCOM;
4252   glExtGetBufferPointervQCOM:                               TglExtGetBufferPointervQCOM;
4253
4254 { GL_QCOM_extended_get2 }
4255 type
4256   TglExtGetShadersQCOM                                    = procedure(aShaders: PGLuint; aMaxShaders: GLint; aNumShaders: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4257   TglExtGetProgramsQCOM                                   = procedure(aPrograms: PGLuint; aMaxPrograms: GLint; aNumPrograms: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4258   TglExtIsProgramBinaryQCOM                               = function (aProgram: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4259   TglExtGetProgramBinarySourceQCOM                        = procedure(aProgram: GLuint; aShadertype: GLenum; aSource: PGLchar; aLength: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4260 var
4261   glExtGetShadersQCOM:                                      TglExtGetShadersQCOM;
4262   glExtGetProgramsQCOM:                                     TglExtGetProgramsQCOM;
4263   glExtIsProgramBinaryQCOM:                                 TglExtIsProgramBinaryQCOM;
4264   glExtGetProgramBinarySourceQCOM:                          TglExtGetProgramBinarySourceQCOM;
4265
4266 { GL_QCOM_perfmon_global_mode }
4267 const
4268   GL_PERFMON_GLOBAL_MODE_QCOM                             = $8FA0;
4269
4270 { GL_QCOM_tiled_rendering }
4271 const
4272   GL_COLOR_BUFFER_BIT0_QCOM                               = $00000001;
4273   GL_COLOR_BUFFER_BIT1_QCOM                               = $00000002;
4274   GL_COLOR_BUFFER_BIT2_QCOM                               = $00000004;
4275   GL_COLOR_BUFFER_BIT3_QCOM                               = $00000008;
4276   GL_COLOR_BUFFER_BIT4_QCOM                               = $00000010;
4277   GL_COLOR_BUFFER_BIT5_QCOM                               = $00000020;
4278   GL_COLOR_BUFFER_BIT6_QCOM                               = $00000040;
4279   GL_COLOR_BUFFER_BIT7_QCOM                               = $00000080;
4280   GL_DEPTH_BUFFER_BIT0_QCOM                               = $00000100;
4281   GL_DEPTH_BUFFER_BIT1_QCOM                               = $00000200;
4282   GL_DEPTH_BUFFER_BIT2_QCOM                               = $00000400;
4283   GL_DEPTH_BUFFER_BIT3_QCOM                               = $00000800;
4284   GL_DEPTH_BUFFER_BIT4_QCOM                               = $00001000;
4285   GL_DEPTH_BUFFER_BIT5_QCOM                               = $00002000;
4286   GL_DEPTH_BUFFER_BIT6_QCOM                               = $00004000;
4287   GL_DEPTH_BUFFER_BIT7_QCOM                               = $00008000;
4288   GL_STENCIL_BUFFER_BIT0_QCOM                             = $00010000;
4289   GL_STENCIL_BUFFER_BIT1_QCOM                             = $00020000;
4290   GL_STENCIL_BUFFER_BIT2_QCOM                             = $00040000;
4291   GL_STENCIL_BUFFER_BIT3_QCOM                             = $00080000;
4292   GL_STENCIL_BUFFER_BIT4_QCOM                             = $00100000;
4293   GL_STENCIL_BUFFER_BIT5_QCOM                             = $00200000;
4294   GL_STENCIL_BUFFER_BIT6_QCOM                             = $00400000;
4295   GL_STENCIL_BUFFER_BIT7_QCOM                             = $00800000;
4296   GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         = $01000000;
4297   GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         = $02000000;
4298   GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         = $04000000;
4299   GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         = $08000000;
4300   GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         = $10000000;
4301   GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         = $20000000;
4302   GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         = $40000000;
4303   GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         = $80000000;
4304 type
4305   TglStartTilingQCOM                                      = procedure(x: GLuint; y: GLuint; aWidth: GLuint; aHeight: GLuint; aPreserveMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4306   TglEndTilingQCOM                                        = procedure(aPreserveMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4307 var
4308   glStartTilingQCOM:                                        TglStartTilingQCOM;
4309   glEndTilingQCOM:                                          TglEndTilingQCOM;
4310
4311 { GL_QCOM_writeonly_rendering }
4312 const
4313   GL_WRITEONLY_RENDERING_QCOM                             = $8823;
4314
4315 { GL_VIV_shader_binary }
4316 const
4317   GL_SHADER_BINARY_VIV                                    = $8FC4;
4318
4319 { ================================================== EGL ============================================================= }
4320 type
4321   EGLint                = Integer;
4322   EGLboolean            = Cardinal;
4323   EGLenum               = Cardinal;
4324   EGLConfig             = Pointer;
4325   EGLContext            = Pointer;
4326   EGLDisplay            = Pointer;
4327   EGLSurface            = Pointer;
4328   EGLClientBuffer       = Pointer;
4329   EGLNativeDisplayType  = Pointer;
4330   EGLNativePixmapType   = Pointer;
4331   EGLNativeWindowType   = packed record
4332      element: Cardinal;
4333      width: Integer;
4334      height: Integer;
4335   end;
4336
4337   PEGLint               = ^EGLint;
4338   PEGLboolean           = ^EGLboolean;
4339   PEGLenum              = ^EGLenum;
4340   PEGLConfig            = ^EGLConfig;
4341   PEGLContext           = ^EGLContext;
4342   PEGLDisplay           = ^EGLDisplay;
4343   PEGLSurface           = ^EGLSurface;
4344   PEGLClientBuffer      = ^EGLClientBuffer;
4345   PEGLNativeDisplayType = ^EGLNativeDisplayType;
4346   PEGLNativePixmapType  = ^EGLNativePixmapType;
4347   PEGLNativeWindowType  = ^EGLNativeWindowType;
4348
4349 const
4350   EGL_FALSE: EGLboolean = 0;
4351   EGL_TRUE:  EGLboolean = 1;
4352
4353   EGL_DEFAULT_DISPLAY:  EGLNativeDisplayType  = nil;
4354   EGL_NO_CONTEXT:       EGLContext              = nil;
4355   EGL_NO_DISPLAY:                         EGLDisplay            = nil;
4356   EGL_NO_SURFACE:                         EGLSurface            = nil;
4357
4358   EGL_DONT_CARE: EGLint = -1;
4359
4360   EGL_SUCCESS                         = $3000;
4361   EGL_NOT_INITIALIZED                 = $3001;
4362   EGL_BAD_ACCESS                      = $3002;
4363   EGL_BAD_ALLOC                       = $3003;
4364   EGL_BAD_ATTRIBUTE                   = $3004;
4365   EGL_BAD_CONFIG                      = $3005;
4366   EGL_BAD_CONTEXT                     = $3006;
4367   EGL_BAD_CURRENT_SURFACE             = $3007;
4368   EGL_BAD_DISPLAY                     = $3008;
4369   EGL_BAD_MATCH                       = $3009;
4370   EGL_BAD_NATIVE_PIXMAP               = $300A;
4371   EGL_BAD_NATIVE_WINDOW               = $300B;
4372   EGL_BAD_PARAMETER                   = $300C;
4373   EGL_BAD_SURFACE                     = $300D;
4374   EGL_CONTEXT_LOST                    = $300E;
4375
4376   EGL_BUFFER_SIZE                     = $3020;
4377   EGL_ALPHA_SIZE                      = $3021;
4378   EGL_BLUE_SIZE                       = $3022;
4379   EGL_GREEN_SIZE                      = $3023;
4380   EGL_RED_SIZE                        = $3024;
4381   EGL_DEPTH_SIZE                      = $3025;
4382   EGL_STENCIL_SIZE                    = $3026;
4383   EGL_CONFIG_CAVEAT                   = $3027;
4384   EGL_CONFIG_ID                       = $3028;
4385   EGL_LEVEL                           = $3029;
4386   EGL_MAX_PBUFFER_HEIGHT              = $302A;
4387   EGL_MAX_PBUFFER_PIXELS              = $302B;
4388   EGL_MAX_PBUFFER_WIDTH               = $302C;
4389   EGL_NATIVE_RENDERABLE               = $302D;
4390   EGL_NATIVE_VISUAL_ID                = $302E;
4391   EGL_NATIVE_VISUAL_TYPE              = $302F;
4392   EGL_SAMPLES                         = $3031;
4393   EGL_SAMPLE_BUFFERS                  = $3032;
4394   EGL_SURFACE_TYPE                    = $3033;
4395   EGL_TRANSPARENT_TYPE                = $3034;
4396   EGL_TRANSPARENT_BLUE_VALUE          = $3035;
4397   EGL_TRANSPARENT_GREEN_VALUE         = $3036;
4398   EGL_TRANSPARENT_RED_VALUE           = $3037;
4399   EGL_NONE                            = $3038;
4400   EGL_BIND_TO_TEXTURE_RGB             = $3039;
4401   EGL_BIND_TO_TEXTURE_RGBA            = $303A;
4402   EGL_MIN_SWAP_INTERVAL               = $303B;
4403   EGL_MAX_SWAP_INTERVAL               = $303C;
4404   EGL_LUMINANCE_SIZE                  = $303D;
4405   EGL_ALPHA_MASK_SIZE                 = $303E;
4406   EGL_COLOR_BUFFER_TYPE               = $303F;
4407   EGL_RENDERABLE_TYPE                 = $3040;
4408   EGL_MATCH_NATIVE_PIXMAP             = $3041;
4409   EGL_CONFORMANT                      = $3042;
4410
4411   EGL_SLOW_CONFIG                     = $3050;
4412   EGL_NON_CONFORMANT_CONFIG           = $3051;
4413   EGL_TRANSPARENT_RGB                 = $3052;
4414   EGL_RGB_BUFFER                      = $308E;
4415   EGL_LUMINANCE_BUFFER                = $308F;
4416
4417   EGL_NO_TEXTURE                      = $305C;
4418   EGL_TEXTURE_RGB                     = $305D;
4419   EGL_TEXTURE_RGBA                    = $305E;
4420   EGL_TEXTURE_2D                      = $305F;
4421
4422   EGL_PBUFFER_BIT                     = $0001;
4423   EGL_PIXMAP_BIT                      = $0002;
4424   EGL_WINDOW_BIT                      = $0004;
4425   EGL_VG_COLORSPACE_LINEAR_BIT        = $0020;
4426   EGL_VG_ALPHA_FORMAT_PRE_BIT         = $0040;
4427   EGL_MULTISAMPLE_RESOLVE_BOX_BIT     = $0200;
4428   EGL_SWAP_BEHAVIOR_PRESERVED_BIT     = $0400;
4429
4430   EGL_OPENGL_ES_BIT                   = $0001;
4431   EGL_OPENVG_BIT                      = $0002;
4432   EGL_OPENGL_ES2_BIT                  = $0004;
4433   EGL_OPENGL_BIT                      = $0008;
4434
4435   EGL_VENDOR                          = $3053;
4436   EGL_VERSION                         = $3054;
4437   EGL_EXTENSIONS                      = $3055;
4438   EGL_CLIENT_APIS                     = $308D;
4439
4440   EGL_HEIGHT                          = $3056;
4441   EGL_WIDTH                           = $3057;
4442   EGL_LARGEST_PBUFFER                 = $3058;
4443   EGL_TEXTURE_FORMAT                  = $3080;
4444   EGL_TEXTURE_TARGET                  = $3081;
4445   EGL_MIPMAP_TEXTURE                  = $3082;
4446   EGL_MIPMAP_LEVEL                    = $3083;
4447   EGL_RENDER_BUFFER                   = $3086;
4448   EGL_VG_COLORSPACE                   = $3087;
4449   EGL_VG_ALPHA_FORMAT                 = $3088;
4450   EGL_HORIZONTAL_RESOLUTION           = $3090;
4451   EGL_VERTICAL_RESOLUTION             = $3091;
4452   EGL_PIXEL_ASPECT_RATIO              = $3092;
4453   EGL_SWAP_BEHAVIOR                   = $3093;
4454   EGL_MULTISAMPLE_RESOLVE             = $3099;
4455
4456   EGL_BACK_BUFFER                     = $3084;
4457   EGL_SINGLE_BUFFER                   = $3085;
4458
4459   EGL_VG_COLORSPACE_sRGB              = $3089;
4460   EGL_VG_COLORSPACE_LINEAR            = $308A;
4461
4462   EGL_VG_ALPHA_FORMAT_NONPRE          = $308B;
4463   EGL_VG_ALPHA_FORMAT_PRE             = $308C;
4464
4465   EGL_DISPLAY_SCALING                 = 10000;
4466
4467   EGL_UNKNOWN: EGLint                 = -1;
4468
4469   EGL_BUFFER_PRESERVED                = $3094;
4470   EGL_BUFFER_DESTROYED                = $3095;
4471
4472   EGL_OPENVG_IMAGE                    = $3096;
4473
4474   EGL_CONTEXT_CLIENT_TYPE             = $3097;
4475
4476   EGL_CONTEXT_CLIENT_VERSION          = $3098;
4477
4478   EGL_MULTISAMPLE_RESOLVE_DEFAULT     = $309A;
4479   EGL_MULTISAMPLE_RESOLVE_BOX         = $309B;
4480
4481   EGL_OPENGL_ES_API                   = $30A0;
4482   EGL_OPENVG_API                      = $30A1;
4483   EGL_OPENGL_API                      = $30A2;
4484
4485   EGL_DRAW                            = $3059;
4486   EGL_READ                            = $305A;
4487
4488   EGL_CORE_NATIVE_ENGINE              = $305B;
4489
4490   EGL_COLORSPACE                      = EGL_VG_COLORSPACE;
4491   EGL_ALPHA_FORMAT                    = EGL_VG_ALPHA_FORMAT;
4492   EGL_COLORSPACE_sRGB                 = EGL_VG_COLORSPACE_sRGB;
4493   EGL_COLORSPACE_LINEAR               = EGL_VG_COLORSPACE_LINEAR;
4494   EGL_ALPHA_FORMAT_NONPRE             = EGL_VG_ALPHA_FORMAT_NONPRE;
4495   EGL_ALPHA_FORMAT_PRE                = EGL_VG_ALPHA_FORMAT_PRE;
4496
4497 type
4498   TeglGetError  = function: EGLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4499
4500   TeglGetDisplay  = function(aDisplayID: EGLNativeDisplayType): EGLDisplay; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4501   TeglInitialize  = function(aDisplay: EGLDisplay; aMajor, aMinor: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4502   TeglTerminate   = function(aDisplay: EGLDisplay): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4503
4504   TeglQueryString = function(aDisplay: EGLDisplay; name: EGLint): PAnsiChar; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4505
4506   TeglGetConfigs      = function(aDisplay: EGLDisplay; aConfigs: PEGLConfig; aConfigSize: EGLint; numConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4507   TeglChooseConfig    = function(aDisplay: EGLDisplay; const aAttribList: PEGLint; aConfigs: PEGLConfig; aConfigSize: EGLint; numConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4508   TeglGetConfigAttrib = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aAttribute: EGLint; aValue : PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4509
4510   TeglCreateWindowSurface   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aWinType: PEGLNativeWindowType; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4511   TeglCreatePbufferSurface  = function(aDisplay: EGLDisplay; aConfig: EGLConfig; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4512   TeglCreatePixmapSurface   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aPixmap: EGLNativePixmapType; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4513   TeglDestroySurface        = function(aDisplay: EGLDisplay; aSurface: EGLSurface): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4514   TeglQuerySurface          = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aAttribute: EGLint; aValue: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4515
4516   TeglBindAPI   = function(aApi: EGLenum): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4517   TeglQueryAPI  = function: EGLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4518
4519   TeglWaitClient = function: EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4520
4521   TeglReleaseThread = function: EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4522
4523   TeglCreatePbufferFromClientBuffer = function(aDisplay: EGLDisplay; aBufType: EGLenum; aBuffer: EGLClientBuffer; aConfig: EGLConfig; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4524
4525   TeglSurfaceAttrib   = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aAttribute: EGLint; aValue: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4526   TeglBindTexImage    = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aBuffer: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4527   TeglReleaseTexImage = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aBuffer: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4528
4529   TeglSwapInterval = function(aDisplay: EGLDisplay; aInterval: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4530
4531   TeglCreateContext   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aShareContext: EGLContext; const aAttribList: PEGLint): EGLContext; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4532   TeglDestroyContext  = function(aDisplay: EGLDisplay; aContext: EGLContext): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4533   TeglMakeCurrent     = function(aDisplay: EGLDisplay; aDraw: EGLSurface; aRead: EGLSurface; aContext: EGLContext): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4534
4535   TeglGetCurrentContext = function: EGLContext; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4536   TeglGetCurrentSurface = function(aReadDraw: EGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4537   TeglGetCurrentDisplay = function: EGLDisplay; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4538   TeglQueryContext      = function(aDisplay: EGLDisplay; aContext: EGLContext; aAttribute: EGLint; aValue: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4539
4540   TeglWaitGL      = function: EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4541   TeglWaitNative  = function(aEngine: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4542   TeglSwapBuffers = function(aDisplay: EGLDisplay; aSurface: EGLSurface): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4543   TeglCopyBuffers = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aTarget: EGLNativePixmapType): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4544
4545   TeglGetProcAddress = function(const aProcName: PAnsiChar): Pointer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
4546
4547 var
4548   eglGetError: TeglGetError;
4549
4550   eglGetDisplay:  TeglGetDisplay;
4551   eglInitialize:  TeglInitialize;
4552   eglTerminate:   TeglTerminate;
4553
4554   eglQueryString: TeglQueryString;
4555
4556   eglGetConfigs:      TeglGetConfigs;
4557   eglChooseConfig:    TeglChooseConfig;
4558   eglGetConfigAttrib: TeglGetConfigAttrib;
4559
4560   eglCreateWindowSurface:   TeglCreateWindowSurface;
4561   eglCreatePbufferSurface:  TeglCreatePbufferSurface;
4562   eglCreatePixmapSurface:   TeglCreatePixmapSurface;
4563   eglDestroySurface:        TeglDestroySurface;
4564   eglQuerySurface:          TeglQuerySurface;
4565
4566   eglBindAPI:   TeglBindAPI;
4567   eglQueryAPI:  TeglQueryAPI;
4568
4569   eglWaitClient: TeglWaitClient;
4570
4571   eglReleaseThread: TeglReleaseThread;
4572
4573   eglCreatePbufferFromClientBuffer: TeglCreatePbufferFromClientBuffer;
4574
4575   eglSurfaceAttrib:   TeglSurfaceAttrib;
4576   eglBindTexImage:    TeglBindTexImage;
4577   eglReleaseTexImage: TeglReleaseTexImage;
4578
4579   eglSwapInterval: TeglSwapInterval;
4580
4581   eglCreateContext:   TeglCreateContext;
4582   eglDestroyContext:  TeglDestroyContext;
4583   eglMakeCurrent:     TeglMakeCurrent;
4584
4585   eglGetCurrentContext: TeglGetCurrentContext;
4586   eglGetCurrentSurface: TeglGetCurrentSurface;
4587   eglGetCurrentDisplay: TeglGetCurrentDisplay;
4588   eglQueryContext:      TeglQueryContext;
4589
4590   eglWaitGL:      TeglWaitGL;
4591   eglWaitNative:  TeglWaitNative;
4592   eglSwapBuffers: TeglSwapBuffers;
4593   eglCopyBuffers: TeglCopyBuffers;
4594
4595   eglGetProcAddress: TeglGetProcAddress;
4596
4597 { =================================================== DelphiGL ======================================================= }
4598 var
4599   GLmajor: Integer;
4600   GLminor: Integer;
4601
4602   GL_VERSION_1_0,
4603   GL_VERSION_1_1,
4604   GL_VERSION_2_0,
4605   GL_VERSION_3_0,
4606   GL_VERSION_3_1,
4607   GL_KHR_blend_equation_advanced,
4608   GL_KHR_blend_equation_advanced_coherent,
4609   GL_KHR_context_flush_control,
4610   GL_KHR_debug,
4611   GL_KHR_robust_buffer_access_behavior,
4612   GL_KHR_robustness,
4613   GL_KHR_texture_compression_astc_hdr,
4614   GL_KHR_texture_compression_astc_ldr,
4615   GL_OES_EGL_image,
4616   GL_OES_EGL_image_external,
4617   GL_OES_compressed_ETC1_RGB8_sub_texture,
4618   GL_OES_compressed_ETC1_RGB8_texture,
4619   GL_OES_compressed_paletted_texture,
4620   GL_OES_depth24,
4621   GL_OES_depth32,
4622   GL_OES_depth_texture,
4623   GL_OES_element_index_uint,
4624   GL_OES_fbo_render_mipmap,
4625   GL_OES_fragment_precision_high,
4626   GL_OES_get_program_binary,
4627   GL_OES_mapbuffer,
4628   GL_OES_packed_depth_stencil,
4629   GL_OES_required_internalformat,
4630   GL_OES_rgb8_rgba8,
4631   GL_OES_sample_shading,
4632   GL_OES_sample_variables,
4633   GL_OES_shader_image_atomic,
4634   GL_OES_shader_multisample_interpolation,
4635   GL_OES_standard_derivatives,
4636   GL_OES_stencil1,
4637   GL_OES_stencil4,
4638   GL_OES_surfaceless_context,
4639   GL_OES_texture_3D,
4640   GL_OES_texture_compression_astc,
4641   GL_OES_texture_float,
4642   GL_OES_texture_float_linear,
4643   GL_OES_texture_half_float,
4644   GL_OES_texture_half_float_linear,
4645   GL_OES_texture_npot,
4646   GL_OES_texture_stencil8,
4647   GL_OES_texture_storage_multisample_2d_array,
4648   GL_OES_vertex_array_object,
4649   GL_OES_vertex_half_float,
4650   GL_OES_vertex_type_10_10_10_2,
4651   GL_AMD_compressed_3DC_texture,
4652   GL_AMD_compressed_ATC_texture,
4653   GL_AMD_performance_monitor,
4654   GL_AMD_program_binary_Z400,
4655   GL_ANDROID_extension_pack_es31a,
4656   GL_ANGLE_depth_texture,
4657   GL_ANGLE_framebuffer_blit,
4658   GL_ANGLE_framebuffer_multisample,
4659   GL_ANGLE_instanced_arrays,
4660   GL_ANGLE_pack_reverse_row_order,
4661   GL_ANGLE_program_binary,
4662   GL_ANGLE_texture_compression_dxt3,
4663   GL_ANGLE_texture_compression_dxt5,
4664   GL_ANGLE_texture_usage,
4665   GL_ANGLE_translated_shader_source,
4666   GL_APPLE_clip_distance,
4667   GL_APPLE_color_buffer_packed_float,
4668   GL_APPLE_copy_texture_levels,
4669   GL_APPLE_framebuffer_multisample,
4670   GL_APPLE_rgb_422,
4671   GL_APPLE_sync,
4672   GL_APPLE_texture_format_BGRA8888,
4673   GL_APPLE_texture_max_level,
4674   GL_APPLE_texture_packed_float,
4675   GL_ARM_mali_program_binary,
4676   GL_ARM_mali_shader_binary,
4677   GL_ARM_rgba8,
4678   GL_ARM_shader_framebuffer_fetch,
4679   GL_ARM_shader_framebuffer_fetch_depth_stencil,
4680   GL_DMP_program_binary,
4681   GL_DMP_shader_binary,
4682   GL_EXT_base_instance,
4683   GL_EXT_blend_minmax,
4684   GL_EXT_color_buffer_half_float,
4685   GL_EXT_copy_image,
4686   GL_EXT_debug_label,
4687   GL_EXT_debug_marker,
4688   GL_EXT_discard_framebuffer,
4689   GL_EXT_disjoint_timer_query,
4690   GL_EXT_draw_buffers,
4691   GL_EXT_draw_buffers_indexed,
4692   GL_EXT_draw_elements_base_vertex,
4693   GL_EXT_draw_instanced,
4694   GL_EXT_geometry_point_size,
4695   GL_EXT_geometry_shader,
4696   GL_EXT_gpu_shader5,
4697   GL_EXT_instanced_arrays,
4698   GL_EXT_map_buffer_range,
4699   GL_EXT_multi_draw_arrays,
4700   GL_EXT_multi_draw_indirect,
4701   GL_EXT_multisampled_render_to_texture,
4702   GL_EXT_multiview_draw_buffers,
4703   GL_EXT_occlusion_query_boolean,
4704   GL_EXT_primitive_bounding_box,
4705   GL_EXT_pvrtc_sRGB,
4706   GL_EXT_read_format_bgra,
4707   GL_EXT_render_snorm,
4708   GL_EXT_robustness,
4709   GL_EXT_sRGB,
4710   GL_EXT_sRGB_write_control,
4711   GL_EXT_separate_shader_objects,
4712   GL_EXT_shader_framebuffer_fetch,
4713   GL_EXT_shader_implicit_conversions,
4714   GL_EXT_shader_integer_mix,
4715   GL_EXT_shader_io_blocks,
4716   GL_EXT_shader_pixel_local_storage,
4717   GL_EXT_shader_texture_lod,
4718   GL_EXT_shadow_samplers,
4719   GL_EXT_tessellation_point_size,
4720   GL_EXT_tessellation_shader,
4721   GL_EXT_texture_border_clamp,
4722   GL_EXT_texture_buffer,
4723   GL_EXT_texture_compression_dxt1,
4724   GL_EXT_texture_compression_s3tc,
4725   GL_EXT_texture_cube_map_array,
4726   GL_EXT_texture_filter_anisotropic,
4727   GL_EXT_texture_format_BGRA8888,
4728   GL_EXT_texture_norm16,
4729   GL_EXT_texture_rg,
4730   GL_EXT_texture_sRGB_decode,
4731   GL_EXT_texture_storage,
4732   GL_EXT_texture_type_2_10_10_10_REV,
4733   GL_EXT_texture_view,
4734   GL_EXT_unpack_subimage,
4735   GL_FJ_shader_binary_GCCSO,
4736   GL_IMG_multisampled_render_to_texture,
4737   GL_IMG_program_binary,
4738   GL_IMG_read_format,
4739   GL_IMG_shader_binary,
4740   GL_IMG_texture_compression_pvrtc,
4741   GL_IMG_texture_compression_pvrtc2,
4742   GL_INTEL_performance_query,
4743   GL_NV_bindless_texture,
4744   GL_NV_blend_equation_advanced,
4745   GL_NV_blend_equation_advanced_coherent,
4746   GL_NV_conditional_render,
4747   GL_NV_copy_buffer,
4748   GL_NV_coverage_sample,
4749   GL_NV_depth_nonlinear,
4750   GL_NV_draw_buffers,
4751   GL_NV_draw_instanced,
4752   GL_NV_explicit_attrib_location,
4753   GL_NV_fbo_color_attachments,
4754   GL_NV_fence,
4755   GL_NV_framebuffer_blit,
4756   GL_NV_framebuffer_multisample,
4757   GL_NV_generate_mipmap_sRGB,
4758   GL_NV_image_formats,
4759   GL_NV_instanced_arrays,
4760   GL_NV_internalformat_sample_query,
4761   GL_NV_non_square_matrices,
4762   GL_NV_path_rendering,
4763   GL_NV_read_buffer,
4764   GL_NV_read_buffer_front,
4765   GL_NV_read_depth,
4766   GL_NV_read_depth_stencil,
4767   GL_NV_read_stencil,
4768   GL_NV_sRGB_formats,
4769   GL_NV_shader_noperspective_interpolation,
4770   GL_NV_shadow_samplers_array,
4771   GL_NV_shadow_samplers_cube,
4772   GL_NV_texture_border_clamp,
4773   GL_NV_texture_compression_s3tc_update,
4774   GL_NV_texture_npot_2D_mipmap,
4775   GL_NV_viewport_array,
4776   GL_QCOM_alpha_test,
4777   GL_QCOM_binning_control,
4778   GL_QCOM_driver_control,
4779   GL_QCOM_extended_get,
4780   GL_QCOM_extended_get2,
4781   GL_QCOM_perfmon_global_mode,
4782   GL_QCOM_tiled_rendering,
4783   GL_QCOM_writeonly_rendering,
4784   GL_VIV_shader_binary: Boolean;
4785
4786 type
4787   EdglOpenGLES = class(Exception);
4788   EeglError = class(EdglOpenGLES)
4789   public
4790     ErrorCode: EGLint;
4791     constructor Create(const msg: string; const aErrorCode: EGLint);
4792   end;
4793
4794   TActivationFlag = (
4795     afReadOpenGLCore,
4796     afReadExtensions,
4797     afReadCoreVersion,
4798     afReadImplProp
4799   );
4800   TActivationFlags = set of TActivationFlag;
4801
4802   TdglRenderContext = packed record
4803     Display: EGLDisplay;
4804     Surface: EGLSurface;
4805     Context: EGLContext;
4806   end;
4807
4808 function InitOpenGLES(const aOpenGLESLibName: String = LIBNAME_OPENGLES; aEGLLibName: String = LIBNAME_EGL): Boolean;
4809
4810 function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType;
4811                                 const aWindowType: PEGLNativeWindowType;
4812                                 const aConfigAttribs: PEGLint;
4813                                 const aContextAttribs: PEGLint): TdglRenderContext;
4814 procedure DestroyRenderingContext(const aContext: TdglRenderContext);
4815 function ActivateRenderingContext(const aContext: TdglRenderContext; const aFlags: TActivationFlags = [afReadOpenGLCore, afReadExtensions, afReadCoreVersion, afReadImplProp]): Boolean;
4816 function DeactivateRenderingContext(const aContext: TdglRenderContext): Boolean;
4817 procedure SwapBuffers(const aContext: TdglRenderContext);
4818
4819 procedure ReadOpenGLCore;
4820 procedure ReadExtensions;
4821 procedure ReadCoreVersion;
4822 procedure ReadImplementationProperties;
4823
4824 procedure Read_GL_KHR_blend_equation_advanced;
4825 procedure Read_GL_KHR_debug;
4826 procedure Read_GL_KHR_robustness;
4827 procedure Read_GL_OES_EGL_image;
4828 procedure Read_GL_OES_get_program_binary;
4829 procedure Read_GL_OES_mapbuffer;
4830 procedure Read_GL_OES_sample_shading;
4831 procedure Read_GL_OES_texture_3D;
4832 procedure Read_GL_OES_texture_storage_multisample_2d_array;
4833 procedure Read_GL_OES_vertex_array_object;
4834 procedure Read_GL_AMD_performance_monitor;
4835 procedure Read_GL_ANGLE_framebuffer_blit;
4836 procedure Read_GL_ANGLE_framebuffer_multisample;
4837 procedure Read_GL_ANGLE_instanced_arrays;
4838 procedure Read_GL_ANGLE_translated_shader_source;
4839 procedure Read_GL_APPLE_copy_texture_levels;
4840 procedure Read_GL_APPLE_framebuffer_multisample;
4841 procedure Read_GL_APPLE_sync;
4842 procedure Read_GL_EXT_base_instance;
4843 procedure Read_GL_EXT_copy_image;
4844 procedure Read_GL_EXT_debug_label;
4845 procedure Read_GL_EXT_debug_marker;
4846 procedure Read_GL_EXT_discard_framebuffer;
4847 procedure Read_GL_EXT_disjoint_timer_query;
4848 procedure Read_GL_EXT_draw_buffers;
4849 procedure Read_GL_EXT_draw_buffers_indexed;
4850 procedure Read_GL_EXT_draw_elements_base_vertex;
4851 procedure Read_GL_EXT_draw_instanced;
4852 procedure Read_GL_EXT_geometry_shader;
4853 procedure Read_GL_EXT_instanced_arrays;
4854 procedure Read_GL_EXT_map_buffer_range;
4855 procedure Read_GL_EXT_multi_draw_arrays;
4856 procedure Read_GL_EXT_multi_draw_indirect;
4857 procedure Read_GL_EXT_multisampled_render_to_texture;
4858 procedure Read_GL_EXT_multiview_draw_buffers;
4859 procedure Read_GL_EXT_primitive_bounding_box;
4860 procedure Read_GL_EXT_robustness;
4861 procedure Read_GL_EXT_separate_shader_objects;
4862 procedure Read_GL_EXT_tessellation_shader;
4863 procedure Read_GL_EXT_texture_border_clamp;
4864 procedure Read_GL_EXT_texture_buffer;
4865 procedure Read_GL_EXT_texture_storage;
4866 procedure Read_GL_EXT_texture_view;
4867 procedure Read_GL_IMG_multisampled_render_to_texture;
4868 procedure Read_GL_INTEL_performance_query;
4869 procedure Read_GL_NV_bindless_texture;
4870 procedure Read_GL_NV_blend_equation_advanced;
4871 procedure Read_GL_NV_conditional_render;
4872 procedure Read_GL_NV_copy_buffer;
4873 procedure Read_GL_NV_coverage_sample;
4874 procedure Read_GL_NV_draw_buffers;
4875 procedure Read_GL_NV_draw_instanced;
4876 procedure Read_GL_NV_fence;
4877 procedure Read_GL_NV_framebuffer_blit;
4878 procedure Read_GL_NV_framebuffer_multisample;
4879 procedure Read_GL_NV_instanced_arrays;
4880 procedure Read_GL_NV_internalformat_sample_query;
4881 procedure Read_GL_NV_non_square_matrices;
4882 procedure Read_GL_NV_path_rendering;
4883 procedure Read_GL_NV_read_buffer;
4884 procedure Read_GL_NV_viewport_array;
4885 procedure Read_GL_QCOM_alpha_test;
4886 procedure Read_GL_QCOM_driver_control;
4887 procedure Read_GL_QCOM_extended_get;
4888 procedure Read_GL_QCOM_extended_get2;
4889 procedure Read_GL_QCOM_tiled_rendering;
4890
4891 implementation
4892
4893 var
4894   LibHandleOpenGLES: Pointer = nil;
4895   LibHandleEGL:      Pointer = nil;
4896
4897 function dglLoadLibrary(const name: PChar): Pointer;
4898 begin
4899   {$IFDEF DGL_LINUX}
4900   result := dlopen(name, RTLD_LAZY);
4901   {$ENDIF}
4902 end;
4903
4904 function dglGetProcAddress(const aProcName: PAnsiChar): Pointer;
4905 begin
4906   result := nil;
4907
4908   {$IFDEF DGL_LINUX}
4909   if Assigned(LibHandleOpenGLES) then
4910     result := dlsym(LibHandleOpenGLES, aProcName);
4911
4912   if not Assigned(result) and Assigned(eglGetProcAddress) then
4913     result := eglGetProcAddress(aProcName);
4914
4915   if not Assigned(result) and Assigned(LibHandleEGL) then
4916     result := dlsym(LibHandleEGL, aProcName);
4917   {$ENDIF}
4918 end;
4919
4920 function dglFreeAndNilLibrary(var aLibHandle: Pointer): Boolean;
4921 begin
4922   if Assigned(aLibHandle) then begin
4923     {$IFDEF DGL_LINUX}
4924     result := (dlclose(aLibHandle) = 0);
4925     aLibHandle := nil;
4926     {$ENDIF}
4927   end else
4928     result := false;
4929 end;
4930
4931 function InitOpenGLES(const aOpenGLESLibName: String; aEGLLibName: String): Boolean;
4932 begin
4933   result := true;
4934
4935   if Assigned(LibHandleOpenGLES) then
4936     dglFreeAndNilLibrary(LibHandleOpenGLES);
4937
4938   if Assigned(LibHandleEGL) then
4939     dglFreeAndNilLibrary(LibHandleEGL);
4940
4941   LibHandleOpenGLES := dglLoadLibrary(PChar(aOpenGLESLibName));
4942   LibHandleEGL      := dglLoadLibrary(PChar(aEGLLibName));
4943
4944   // load EGL procedures
4945   if Assigned(LibHandleEGL) then begin
4946     eglGetProcAddress                 := dglGetProcAddress('eglGetProcAddress');
4947     eglGetError                       := dglGetProcAddress('eglGetError');
4948     eglGetDisplay                     := dglGetProcAddress('eglGetDisplay');
4949     eglInitialize                     := dglGetProcAddress('eglInitialize');
4950     eglTerminate                      := dglGetProcAddress('eglTerminate');
4951     eglQueryString                    := dglGetProcAddress('eglQueryString');
4952     eglGetConfigs                     := dglGetProcAddress('eglGetConfigs');
4953     eglChooseConfig                   := dglGetProcAddress('eglChooseConfig');
4954     eglGetConfigAttrib                := dglGetProcAddress('eglGetConfigAttrib');
4955     eglCreateWindowSurface            := dglGetProcAddress('eglCreateWindowSurface');
4956     eglCreatePbufferSurface           := dglGetProcAddress('eglCreatePbufferSurface');
4957     eglCreatePixmapSurface            := dglGetProcAddress('eglCreatePixmapSurface');
4958     eglDestroySurface                 := dglGetProcAddress('eglDestroySurface');
4959     eglQuerySurface                   := dglGetProcAddress('eglQuerySurface');
4960     eglBindAPI                        := dglGetProcAddress('eglBindAPI');
4961     eglQueryAPI                       := dglGetProcAddress('eglQueryAPI');
4962     eglWaitClient                     := dglGetProcAddress('eglWaitClient');
4963     eglReleaseThread                  := dglGetProcAddress('eglReleaseThread');
4964     eglCreatePbufferFromClientBuffer  := dglGetProcAddress('eglCreatePbufferFromClientBuffer');
4965     eglSurfaceAttrib                  := dglGetProcAddress('eglSurfaceAttrib');
4966     eglBindTexImage                   := dglGetProcAddress('eglBindTexImage');
4967     eglReleaseTexImage                := dglGetProcAddress('eglReleaseTexImage');
4968     eglSwapInterval                   := dglGetProcAddress('eglSwapInterval');
4969     eglCreateContext                  := dglGetProcAddress('eglCreateContext');
4970     eglDestroyContext                 := dglGetProcAddress('eglDestroyContext');
4971     eglMakeCurrent                    := dglGetProcAddress('eglMakeCurrent');
4972     eglGetCurrentContext              := dglGetProcAddress('eglGetCurrentContext');
4973     eglGetCurrentSurface              := dglGetProcAddress('eglGetCurrentSurface');
4974     eglGetCurrentDisplay              := dglGetProcAddress('eglGetCurrentDisplay');
4975     eglQueryContext                   := dglGetProcAddress('eglQueryContext');
4976     eglWaitGL                         := dglGetProcAddress('eglWaitGL');
4977     eglWaitNative                     := dglGetProcAddress('eglWaitNative');
4978     eglSwapBuffers                    := dglGetProcAddress('eglSwapBuffers');
4979     eglCopyBuffers                    := dglGetProcAddress('eglCopyBuffers');
4980   end else
4981     result := false;
4982 end;
4983
4984 procedure RaiseEglError(const aMsg: String);
4985 var err: EGLint;
4986 begin
4987   err := eglGetError();
4988   raise EeglError.Create(aMsg + ' ErrorCode: 0x' + IntToHex(err, 8), err);
4989 end;
4990
4991 function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType; const aWindowType: PEGLNativeWindowType;
4992   const aConfigAttribs: PEGLint; const aContextAttribs: PEGLint): TdglRenderContext;
4993 var
4994   ConfigCount: EGLint;
4995   Config: EGLConfig;
4996 begin
4997   if (not Assigned(LibHandleOpenGLES) or not Assigned(LibHandleEGL)) and
4998      not InitOpenGLES then
4999       raise EdglOpenGLES.Create('unable to initialize OpenGL library');
5000
5001   result.Display := eglGetDisplay(aDisplayType);
5002   if (result.Display = EGL_NO_DISPLAY) then
5003     RaiseEglError('unable to get display.');
5004
5005   if (eglInitialize(result.Display, nil, nil) <> EGL_TRUE) then
5006     RaiseEglError('unable to initialize egl.');
5007
5008   if (eglChooseConfig(result.Display, aConfigAttribs, @Config, 1, @ConfigCount) <> EGL_TRUE) or
5009      (ConfigCount < 1) then
5010     RaiseEglError('unable to get suitable config.');
5011
5012   if (eglBindAPI(EGL_OPENGL_ES_API) <> EGL_TRUE) then
5013     RaiseEglError('unable to get an appropriate EGL frame buffer configuration.');
5014
5015   result.Surface := eglCreateWindowSurface(result.Display, Config, aWindowType, nil);
5016   if (result.Surface = EGL_NO_SURFACE) then
5017     RaiseEglError('unable to create window surface.');
5018
5019   result.Context := eglCreateContext(result.Display, Config, EGL_NO_CONTEXT, aContextAttribs);
5020   if (result.Context = EGL_NO_CONTEXT) then begin
5021     eglDestroySurface(result.Display, result.Surface);
5022     RaiseEglError('unable to create context.');
5023   end;
5024 end;
5025
5026 procedure DestroyRenderingContext(const aContext: TdglRenderContext);
5027 begin
5028   if (eglGetCurrentContext = aContext.Context) and
5029      not DeactivateRenderingContext(aContext) then
5030     RaiseEglError('unable to unbind context.');
5031
5032   if (eglDestroyContext(aContext.Display, aContext.Context) <> EGL_TRUE) then
5033     RaiseEglError('unable to destory context.');
5034
5035   if (eglDestroySurface(aContext.Display, aContext.Surface) <> EGL_TRUE) then
5036     RaiseEglError('unable to destroy surface.');
5037 end;
5038
5039 function ActivateRenderingContext(const aContext: TdglRenderContext; const aFlags: TActivationFlags): Boolean;
5040 begin
5041   result := (eglMakeCurrent(aContext.Display, aContext.Surface, aContext.Surface, aContext.Context) = GL_TRUE);
5042   if (afReadOpenGLCore in aFlags) then
5043     ReadOpenGLCore;
5044   if (afReadExtensions in aFlags) then
5045     ReadExtensions;
5046   if (afReadCoreVersion in aFlags) then
5047     ReadCoreVersion;
5048   if (afReadImplProp in aFlags) then
5049     ReadImplementationProperties;
5050 end;
5051
5052 function DeactivateRenderingContext(const aContext: TdglRenderContext): Boolean;
5053 begin
5054   result := (eglMakeCurrent(aContext.Display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT) = EGL_TRUE);
5055 end;
5056
5057 procedure SwapBuffers(const aContext: TdglRenderContext);
5058 begin
5059   eglSwapBuffers(aContext.Display, aContext.Surface);
5060 end;
5061
5062 procedure ReadOpenGLCore;
5063 begin
5064   { ============================================= OpenGL ES 1.0 ====================================================== }
5065   { Available only in Common profile }
5066   glAlphaFunc                              := dglGetProcAddress('glAlphaFunc');
5067   glClearColor                             := dglGetProcAddress('glClearColor');
5068   glClearDepthf                            := dglGetProcAddress('glClearDepthf');
5069   glClipPlanef                             := dglGetProcAddress('glClipPlanef');
5070   glColor4f                                := dglGetProcAddress('glColor4f');
5071   glDepthRangef                            := dglGetProcAddress('glDepthRangef');
5072   glFogf                                   := dglGetProcAddress('glFogf');
5073   glFogfv                                  := dglGetProcAddress('glFogfv');
5074   glFrustumf                               := dglGetProcAddress('glFrustumf');
5075   glGetClipPlanef                          := dglGetProcAddress('glGetClipPlanef');
5076   glGetFloatv                              := dglGetProcAddress('glGetFloatv');
5077   glGetLightfv                             := dglGetProcAddress('glGetLightfv');
5078   glGetMaterialfv                          := dglGetProcAddress('glGetMaterialfv');
5079   glGetTexEnvfv                            := dglGetProcAddress('glGetTexEnvfv');
5080   glGetTexParameterfv                      := dglGetProcAddress('glGetTexParameterfv');
5081   glLightModelf                            := dglGetProcAddress('glLightModelf');
5082   glLightModelfv                           := dglGetProcAddress('glLightModelfv');
5083   glLightf                                 := dglGetProcAddress('glLightf');
5084   glLightfv                                := dglGetProcAddress('glLightfv');
5085   glLineWidth                              := dglGetProcAddress('glLineWidth');
5086   glLoadMatrixf                            := dglGetProcAddress('glLoadMatrixf');
5087   glMaterialf                              := dglGetProcAddress('glMaterialf');
5088   glMaterialfv                             := dglGetProcAddress('glMaterialfv');
5089   glMultMatrixf                            := dglGetProcAddress('glMultMatrixf');
5090   glMultiTexCoord4f                        := dglGetProcAddress('glMultiTexCoord4f');
5091   glNormal3f                               := dglGetProcAddress('glNormal3f');
5092   glOrthof                                 := dglGetProcAddress('glOrthof');
5093   glPointParameterf                        := dglGetProcAddress('glPointParameterf');
5094   glPointParameterfv                       := dglGetProcAddress('glPointParameterfv');
5095   glPointSize                              := dglGetProcAddress('glPointSize');
5096   glPolygonOffset                          := dglGetProcAddress('glPolygonOffset');
5097   glRotatef                                := dglGetProcAddress('glRotatef');
5098   glScalef                                 := dglGetProcAddress('glScalef');
5099   glTexEnvf                                := dglGetProcAddress('glTexEnvf');
5100   glTexEnvfv                               := dglGetProcAddress('glTexEnvfv');
5101   glTexParameterf                          := dglGetProcAddress('glTexParameterf');
5102   glTexParameterfv                         := dglGetProcAddress('glTexParameterfv');
5103   glTranslatef                             := dglGetProcAddress('glTranslatef');
5104
5105   { Available in both Common and Common-Lite profiles }
5106   glActiveTexture                          := dglGetProcAddress('glActiveTexture');
5107   glAlphaFuncx                             := dglGetProcAddress('glAlphaFuncx');
5108   glBindBuffer                             := dglGetProcAddress('glBindBuffer');
5109   glBindTexture                            := dglGetProcAddress('glBindTexture');
5110   glBlendFunc                              := dglGetProcAddress('glBlendFunc');
5111   glBufferData                             := dglGetProcAddress('glBufferData');
5112   glBufferSubData                          := dglGetProcAddress('glBufferSubData');
5113   glClear                                  := dglGetProcAddress('glClear');
5114   glClearColorx                            := dglGetProcAddress('glClearColorx');
5115   glClearDepthx                            := dglGetProcAddress('glClearDepthx');
5116   glClearStencil                           := dglGetProcAddress('glClearStencil');
5117   glClientActiveTexture                    := dglGetProcAddress('glClientActiveTexture');
5118   glClipPlanex                             := dglGetProcAddress('glClipPlanex');
5119   glColor4ub                               := dglGetProcAddress('glColor4ub');
5120   glColor4x                                := dglGetProcAddress('glColor4x');
5121   glColorMask                              := dglGetProcAddress('glColorMask');
5122   glColorPointer                           := dglGetProcAddress('glColorPointer');
5123   glCompressedTexImage2D                   := dglGetProcAddress('glCompressedTexImage2D');
5124   glCompressedTexSubImage2D                := dglGetProcAddress('glCompressedTexSubImage2D');
5125   glCopyTexImage2D                         := dglGetProcAddress('glCopyTexImage2D');
5126   glCopyTexSubImage2D                      := dglGetProcAddress('glCopyTexSubImage2D');
5127   glCullFace                               := dglGetProcAddress('glCullFace');
5128   glDeleteBuffers                          := dglGetProcAddress('glDeleteBuffers');
5129   glDeleteTextures                         := dglGetProcAddress('glDeleteTextures');
5130   glDepthFunc                              := dglGetProcAddress('glDepthFunc');
5131   glDepthMask                              := dglGetProcAddress('glDepthMask');
5132   glDepthRangex                            := dglGetProcAddress('glDepthRangex');
5133   glDisable                                := dglGetProcAddress('glDisable');
5134   glDisableClientState                     := dglGetProcAddress('glDisableClientState');
5135   glDrawArrays                             := dglGetProcAddress('glDrawArrays');
5136   glDrawElements                           := dglGetProcAddress('glDrawElements');
5137   glEnable                                 := dglGetProcAddress('glEnable');
5138   glEnableClientState                      := dglGetProcAddress('glEnableClientState');
5139   glFinish                                 := dglGetProcAddress('glFinish');
5140   glFlush                                  := dglGetProcAddress('glFlush');
5141   glFogx                                   := dglGetProcAddress('glFogx');
5142   glFogxv                                  := dglGetProcAddress('glFogxv');
5143   glFrontFace                              := dglGetProcAddress('glFrontFace');
5144   glFrustumx                               := dglGetProcAddress('glFrustumx');
5145   glGetBooleanv                            := dglGetProcAddress('glGetBooleanv');
5146   glGetBufferParameteriv                   := dglGetProcAddress('glGetBufferParameteriv');
5147   glGetClipPlanex                          := dglGetProcAddress('glGetClipPlanex');
5148   glGenBuffers                             := dglGetProcAddress('glGenBuffers');
5149   glGenTextures                            := dglGetProcAddress('glGenTextures');
5150   glGetError                               := dglGetProcAddress('glGetError');
5151   glGetFixedv                              := dglGetProcAddress('glGetFixedv');
5152   glGetIntegerv                            := dglGetProcAddress('glGetIntegerv');
5153   glGetLightxv                             := dglGetProcAddress('glGetLightxv');
5154   glGetMaterialxv                          := dglGetProcAddress('glGetMaterialxv');
5155   glGetPointerv                            := dglGetProcAddress('glGetPointerv');
5156   glGetString                              := dglGetProcAddress('glGetString');
5157   glGetTexEnviv                            := dglGetProcAddress('glGetTexEnviv');
5158   glGetTexEnvxv                            := dglGetProcAddress('glGetTexEnvxv');
5159   glGetTexParameteriv                      := dglGetProcAddress('glGetTexParameteriv');
5160   glGetTexParameterxv                      := dglGetProcAddress('glGetTexParameterxv');
5161   glHint                                   := dglGetProcAddress('glHint');
5162   glIsBuffer                               := dglGetProcAddress('glIsBuffer');
5163   glIsEnabled                              := dglGetProcAddress('glIsEnabled');
5164   glIsTexture                              := dglGetProcAddress('glIsTexture');
5165   glLightModelx                            := dglGetProcAddress('glLightModelx');
5166   glLightModelxv                           := dglGetProcAddress('glLightModelxv');
5167   glLightx                                 := dglGetProcAddress('glLightx');
5168   glLightxv                                := dglGetProcAddress('glLightxv');
5169   glLineWidthx                             := dglGetProcAddress('glLineWidthx');
5170   glLoadIdentity                           := dglGetProcAddress('glLoadIdentity');
5171   glLoadMatrix                             := dglGetProcAddress('glLoadMatrix');
5172   glLogicOp                                := dglGetProcAddress('glLogicOp');
5173   glMaterialx                              := dglGetProcAddress('glMaterialx');
5174   glMaterialxv                             := dglGetProcAddress('glMaterialxv');
5175   glMatrixMode                             := dglGetProcAddress('glMatrixMode');
5176   glMultMatrixx                            := dglGetProcAddress('glMultMatrixx');
5177   glMultiTexCoord4x                        := dglGetProcAddress('glMultiTexCoord4x');
5178   glNormal3x                               := dglGetProcAddress('glNormal3x');
5179   glNormalPointer                          := dglGetProcAddress('glNormalPointer');
5180   glOrthox                                 := dglGetProcAddress('glOrthox');
5181   glPixelStorei                            := dglGetProcAddress('glPixelStorei');
5182   glPointParameterx                        := dglGetProcAddress('glPointParameterx');
5183   glPointParameterxv                       := dglGetProcAddress('glPointParameterxv');
5184   glPointSizex                             := dglGetProcAddress('glPointSizex');
5185   glPolygonOffsetx                         := dglGetProcAddress('glPolygonOffsetx');
5186   glPopMatrix                              := dglGetProcAddress('glPopMatrix');
5187   glPushMatrix                             := dglGetProcAddress('glPushMatrix');
5188   glReadPixels                             := dglGetProcAddress('glReadPixels');
5189   glRotatex                                := dglGetProcAddress('glRotatex');
5190   glSampleCoverage                         := dglGetProcAddress('glSampleCoverage');
5191   glSampleCoveragex                        := dglGetProcAddress('glSampleCoveragex');
5192   glScalex                                 := dglGetProcAddress('glScalex');
5193   glScissor                                := dglGetProcAddress('glScissor');
5194   glShadeModel                             := dglGetProcAddress('glShadeModel');
5195   glStencilFunc                            := dglGetProcAddress('glStencilFunc');
5196   glStencilMask                            := dglGetProcAddress('glStencilMask');
5197   glStencilOp                              := dglGetProcAddress('glStencilOp');
5198   glTexCoordPointer                        := dglGetProcAddress('glTexCoordPointer');
5199   glTexEnvi                                := dglGetProcAddress('glTexEnvi');
5200   glTexEnvx                                := dglGetProcAddress('glTexEnvx');
5201   glTexEnviv                               := dglGetProcAddress('glTexEnviv');
5202   glTexEnvxv                               := dglGetProcAddress('glTexEnvxv');
5203   glTexImage2D                             := dglGetProcAddress('glTexImage2D');
5204   glTexParameteri                          := dglGetProcAddress('glTexParameteri');
5205   glTexParameterx                          := dglGetProcAddress('glTexParameterx');
5206   glTexParameteriv                         := dglGetProcAddress('glTexParameteriv');
5207   glTexParameterxv                         := dglGetProcAddress('glTexParameterxv');
5208   glTexSubImage2D                          := dglGetProcAddress('glTexSubImage2D');
5209   glTranslatex                             := dglGetProcAddress('glTranslatex');
5210   glVertexPointer                          := dglGetProcAddress('glVertexPointer');
5211   glViewport                               := dglGetProcAddress('glViewport');
5212
5213   { ============================================= OpenGL ES 2.0 ====================================================== }
5214   glAttachShader                           := dglGetProcAddress('glAttachShader');
5215   glBindAttribLocation                     := dglGetProcAddress('glBindAttribLocation');
5216   glBindFramebuffer                        := dglGetProcAddress('glBindFramebuffer');
5217   glBindRenderbuffer                       := dglGetProcAddress('glBindRenderbuffer');
5218   glBlendColor                             := dglGetProcAddress('glBlendColor');
5219   glBlendEquation                          := dglGetProcAddress('glBlendEquation');
5220   glBlendEquationSeparate                  := dglGetProcAddress('glBlendEquationSeparate');
5221   glBlendFuncSeparate                      := dglGetProcAddress('glBlendFuncSeparate');
5222   glCheckFramebufferStatus                 := dglGetProcAddress('glCheckFramebufferStatus');
5223   glCompileShader                          := dglGetProcAddress('glCompileShader');
5224   glCreateProgram                          := dglGetProcAddress('glCreateProgram');
5225   glCreateShader                           := dglGetProcAddress('glCreateShader');
5226   glDeleteFramebuffers                     := dglGetProcAddress('glDeleteFramebuffers');
5227   glDeleteProgram                          := dglGetProcAddress('glDeleteProgram');
5228   glDeleteRenderbuffers                    := dglGetProcAddress('glDeleteRenderbuffers');
5229   glDeleteShader                           := dglGetProcAddress('glDeleteShader');
5230   glDetachShader                           := dglGetProcAddress('glDetachShader');
5231   glDisableVertexAttribArray               := dglGetProcAddress('glDisableVertexAttribArray');
5232   glEnableVertexAttribArray                := dglGetProcAddress('glEnableVertexAttribArray');
5233   glFramebufferRenderbuffer                := dglGetProcAddress('glFramebufferRenderbuffer');
5234   glFramebufferTexture2D                   := dglGetProcAddress('glFramebufferTexture2D');
5235   glGenerateMipmap                         := dglGetProcAddress('glGenerateMipmap');
5236   glGenFramebuffers                        := dglGetProcAddress('glGenFramebuffers');
5237   glGenRenderbuffers                       := dglGetProcAddress('glGenRenderbuffers');
5238   glGetActiveAttrib                        := dglGetProcAddress('glGetActiveAttrib');
5239   glGetActiveUniform                       := dglGetProcAddress('glGetActiveUniform');
5240   glGetAttachedShaders                     := dglGetProcAddress('glGetAttachedShaders');
5241   glGetAttribLocation                      := dglGetProcAddress('glGetAttribLocation');
5242   glGetFramebufferAttachmentParameteriv    := dglGetProcAddress('glGetFramebufferAttachmentParameteriv');
5243   glGetProgramiv                           := dglGetProcAddress('glGetProgramiv');
5244   glGetProgramInfoLog                      := dglGetProcAddress('glGetProgramInfoLog');
5245   glGetRenderbufferParameteriv             := dglGetProcAddress('glGetRenderbufferParameteriv');
5246   glGetShaderiv                            := dglGetProcAddress('glGetShaderiv');
5247   glGetShaderInfoLog                       := dglGetProcAddress('glGetShaderInfoLog');
5248   glGetShaderPrecisionFormat               := dglGetProcAddress('glGetShaderPrecisionFormat');
5249   glGetShaderSource                        := dglGetProcAddress('glGetShaderSource');
5250   glGetUniformfv                           := dglGetProcAddress('glGetUniformfv');
5251   glGetUniformiv                           := dglGetProcAddress('glGetUniformiv');
5252   glGetUniformLocation                     := dglGetProcAddress('glGetUniformLocation');
5253   glGetVertexAttribfv                      := dglGetProcAddress('glGetVertexAttribfv');
5254   glGetVertexAttribiv                      := dglGetProcAddress('glGetVertexAttribiv');
5255   glGetVertexAttribPointerv                := dglGetProcAddress('glGetVertexAttribPointerv');
5256   glIsFramebuffer                          := dglGetProcAddress('glIsFramebuffer');
5257   glIsProgram                              := dglGetProcAddress('glIsProgram');
5258   glIsRenderbuffer                         := dglGetProcAddress('glIsRenderbuffer');
5259   glIsShader                               := dglGetProcAddress('glIsShader');
5260   glLinkProgram                            := dglGetProcAddress('glLinkProgram');
5261   glReleaseShaderCompiler                  := dglGetProcAddress('glReleaseShaderCompiler');
5262   glRenderbufferStorage                    := dglGetProcAddress('glRenderbufferStorage');
5263   glShaderBinary                           := dglGetProcAddress('glShaderBinary');
5264   glShaderSource                           := dglGetProcAddress('glShaderSource');
5265   glStencilFuncSeparate                    := dglGetProcAddress('glStencilFuncSeparate');
5266   glStencilMaskSeparate                    := dglGetProcAddress('glStencilMaskSeparate');
5267   glStencilOpSeparate                      := dglGetProcAddress('glStencilOpSeparate');
5268   glUniform1f                              := dglGetProcAddress('glUniform1f');
5269   glUniform1fv                             := dglGetProcAddress('glUniform1fv');
5270   glUniform1i                              := dglGetProcAddress('glUniform1i');
5271   glUniform1iv                             := dglGetProcAddress('glUniform1iv');
5272   glUniform2f                              := dglGetProcAddress('glUniform2f');
5273   glUniform2fv                             := dglGetProcAddress('glUniform2fv');
5274   glUniform2i                              := dglGetProcAddress('glUniform2i');
5275   glUniform2iv                             := dglGetProcAddress('glUniform2iv');
5276   glUniform3f                              := dglGetProcAddress('glUniform3f');
5277   glUniform3fv                             := dglGetProcAddress('glUniform3fv');
5278   glUniform3i                              := dglGetProcAddress('glUniform3i');
5279   glUniform3iv                             := dglGetProcAddress('glUniform3iv');
5280   glUniform4f                              := dglGetProcAddress('glUniform4f');
5281   glUniform4fv                             := dglGetProcAddress('glUniform4fv');
5282   glUniform4i                              := dglGetProcAddress('glUniform4i');
5283   glUniform4iv                             := dglGetProcAddress('glUniform4iv');
5284   glUniformMatrix2fv                       := dglGetProcAddress('glUniformMatrix2fv');
5285   glUniformMatrix3fv                       := dglGetProcAddress('glUniformMatrix3fv');
5286   glUniformMatrix4fv                       := dglGetProcAddress('glUniformMatrix4fv');
5287   glUseProgram                             := dglGetProcAddress('glUseProgram');
5288   glValidateProgram                        := dglGetProcAddress('glValidateProgram');
5289   glVertexAttrib1f                         := dglGetProcAddress('glVertexAttrib1f');
5290   glVertexAttrib1fv                        := dglGetProcAddress('glVertexAttrib1fv');
5291   glVertexAttrib2f                         := dglGetProcAddress('glVertexAttrib2f');
5292   glVertexAttrib2fv                        := dglGetProcAddress('glVertexAttrib2fv');
5293   glVertexAttrib3f                         := dglGetProcAddress('glVertexAttrib3f');
5294   glVertexAttrib3fv                        := dglGetProcAddress('glVertexAttrib3fv');
5295   glVertexAttrib4f                         := dglGetProcAddress('glVertexAttrib4f');
5296   glVertexAttrib4fv                        := dglGetProcAddress('glVertexAttrib4fv');
5297   glVertexAttribPointer                    := dglGetProcAddress('glVertexAttribPointer');
5298
5299   { ============================================= OpenGL ES 3.0 ====================================================== }
5300   glReadBuffer                             := dglGetProcAddress('glReadBuffer');
5301   glDrawRangeElements                      := dglGetProcAddress('glDrawRangeElements');
5302   glTexImage3D                             := dglGetProcAddress('glTexImage3D');
5303   glTexSubImage3D                          := dglGetProcAddress('glTexSubImage3D');
5304   glCopyTexSubImage3D                      := dglGetProcAddress('glCopyTexSubImage3D');
5305   glCompressedTexImage3D                   := dglGetProcAddress('glCompressedTexImage3D');
5306   glCompressedTexSubImage3D                := dglGetProcAddress('glCompressedTexSubImage3D');
5307   glGenQueries                             := dglGetProcAddress('glGenQueries');
5308   glDeleteQueries                          := dglGetProcAddress('glDeleteQueries');
5309   glIsQuery                                := dglGetProcAddress('glIsQuery');
5310   glBeginQuery                             := dglGetProcAddress('glBeginQuery');
5311   glEndQuery                               := dglGetProcAddress('glEndQuery');
5312   glGetQueryiv                             := dglGetProcAddress('glGetQueryiv');
5313   glGetQueryObjectuiv                      := dglGetProcAddress('glGetQueryObjectuiv');
5314   glUnmapBuffer                            := dglGetProcAddress('glUnmapBuffer');
5315   glGetBufferPointerv                      := dglGetProcAddress('glGetBufferPointerv');
5316   glDrawBuffers                            := dglGetProcAddress('glDrawBuffers');
5317   glUniformMatrix2x3fv                     := dglGetProcAddress('glUniformMatrix2x3fv');
5318   glUniformMatrix3x2fv                     := dglGetProcAddress('glUniformMatrix3x2fv');
5319   glUniformMatrix2x4fv                     := dglGetProcAddress('glUniformMatrix2x4fv');
5320   glUniformMatrix4x2fv                     := dglGetProcAddress('glUniformMatrix4x2fv');
5321   glUniformMatrix3x4fv                     := dglGetProcAddress('glUniformMatrix3x4fv');
5322   glUniformMatrix4x3fv                     := dglGetProcAddress('glUniformMatrix4x3fv');
5323   glBlitFramebuffer                        := dglGetProcAddress('glBlitFramebuffer');
5324   glRenderbufferStorageMultisample         := dglGetProcAddress('glRenderbufferStorageMultisample');
5325   glFramebufferTextureLayer                := dglGetProcAddress('glFramebufferTextureLayer');
5326   glMapBufferRange                         := dglGetProcAddress('glMapBufferRange');
5327   glFlushMappedBufferRange                 := dglGetProcAddress('glFlushMappedBufferRange');
5328   glBindVertexArray                        := dglGetProcAddress('glBindVertexArray');
5329   glDeleteVertexArrays                     := dglGetProcAddress('glDeleteVertexArrays');
5330   glGenVertexArrays                        := dglGetProcAddress('glGenVertexArrays');
5331   glIsVertexArray                          := dglGetProcAddress('glIsVertexArray');
5332   glGetIntegeriv                           := dglGetProcAddress('glGetIntegeriv');
5333   glBeginTransformFeedback                 := dglGetProcAddress('glBeginTransformFeedback');
5334   glEndTransformFeedback                   := dglGetProcAddress('glEndTransformFeedback');
5335   glBindBufferRange                        := dglGetProcAddress('glBindBufferRange');
5336   glBindBufferBase                         := dglGetProcAddress('glBindBufferBase');
5337   glTransformFeedbackVaryings              := dglGetProcAddress('glTransformFeedbackVaryings');
5338   glGetTransformFeedbackVarying            := dglGetProcAddress('glGetTransformFeedbackVarying');
5339   glVertexAttribIPointer                   := dglGetProcAddress('glVertexAttribIPointer');
5340   glGetVertexAttribIiv                     := dglGetProcAddress('glGetVertexAttribIiv');
5341   glGetVertexAttribIuiv                    := dglGetProcAddress('glGetVertexAttribIuiv');
5342   glVertexAttribI4i                        := dglGetProcAddress('glVertexAttribI4i');
5343   glVertexAttribI4ui                       := dglGetProcAddress('glVertexAttribI4ui');
5344   glVertexAttribI4iv                       := dglGetProcAddress('glVertexAttribI4iv');
5345   glVertexAttribI4uiv                      := dglGetProcAddress('glVertexAttribI4uiv');
5346   glGetUniformuiv                          := dglGetProcAddress('glGetUniformuiv');
5347   glGetFragDataLocation                    := dglGetProcAddress('glGetFragDataLocation');
5348   glUniform1ui                             := dglGetProcAddress('glUniform1ui');
5349   glUniform2ui                             := dglGetProcAddress('glUniform2ui');
5350   glUniform3ui                             := dglGetProcAddress('glUniform3ui');
5351   glUniform4ui                             := dglGetProcAddress('glUniform4ui');
5352   glUniform1uiv                            := dglGetProcAddress('glUniform1uiv');
5353   glUniform2uiv                            := dglGetProcAddress('glUniform2uiv');
5354   glUniform3uiv                            := dglGetProcAddress('glUniform3uiv');
5355   glUniform4uiv                            := dglGetProcAddress('glUniform4uiv');
5356   glClearBufferiv                          := dglGetProcAddress('glClearBufferiv');
5357   glClearBufferuiv                         := dglGetProcAddress('glClearBufferuiv');
5358   glClearBufferfv                          := dglGetProcAddress('glClearBufferfv');
5359   glClearBufferfi                          := dglGetProcAddress('glClearBufferfi');
5360   glGetStringi                             := dglGetProcAddress('glGetStringi');
5361   glCopyBufferSubData                      := dglGetProcAddress('glCopyBufferSubData');
5362   glGetUniformIndices                      := dglGetProcAddress('glGetUniformIndices');
5363   glGetActiveUniformsiv                    := dglGetProcAddress('glGetActiveUniformsiv');
5364   glGetUniformBlockIndex                   := dglGetProcAddress('glGetUniformBlockIndex');
5365   glGetActiveUniformBlockiv                := dglGetProcAddress('glGetActiveUniformBlockiv');
5366   glGetActiveUniformBlockName              := dglGetProcAddress('glGetActiveUniformBlockName');
5367   glUniformBlockBinding                    := dglGetProcAddress('glUniformBlockBinding');
5368   glDrawArraysInstanced                    := dglGetProcAddress('glDrawArraysInstanced');
5369   glDrawElementsInstanced                  := dglGetProcAddress('glDrawElementsInstanced');
5370   glFenceSync                              := dglGetProcAddress('glFenceSync');
5371   glIsSync                                 := dglGetProcAddress('glIsSync');
5372   glDeleteSync                             := dglGetProcAddress('glDeleteSync');
5373   glClientWaitSync                         := dglGetProcAddress('glClientWaitSync');
5374   glWaitSync                               := dglGetProcAddress('glWaitSync');
5375   glGetInteger64v                          := dglGetProcAddress('glGetInteger64v');
5376   glGetSynciv                              := dglGetProcAddress('glGetSynciv');
5377   glGetInteger64iv                         := dglGetProcAddress('glGetInteger64iv');
5378   glGetBufferParameteri64v                 := dglGetProcAddress('glGetBufferParameteri64v');
5379   glGenSamplers                            := dglGetProcAddress('glGenSamplers');
5380   glDeleteSamplers                         := dglGetProcAddress('glDeleteSamplers');
5381   glIsSampler                              := dglGetProcAddress('glIsSampler');
5382   glBindSampler                            := dglGetProcAddress('glBindSampler');
5383   glSamplerParameteri                      := dglGetProcAddress('glSamplerParameteri');
5384   glSamplerParameteriv                     := dglGetProcAddress('glSamplerParameteriv');
5385   glSamplerParameterf                      := dglGetProcAddress('glSamplerParameterf');
5386   glSamplerParameterfv                     := dglGetProcAddress('glSamplerParameterfv');
5387   glGetSamplerParameteriv                  := dglGetProcAddress('glGetSamplerParameteriv');
5388   glGetSamplerParameterfv                  := dglGetProcAddress('glGetSamplerParameterfv');
5389   glVertexAttribDivisor                    := dglGetProcAddress('glVertexAttribDivisor');
5390   glBindTransformFeedback                  := dglGetProcAddress('glBindTransformFeedback');
5391   glDeleteTransformFeedbacks               := dglGetProcAddress('glDeleteTransformFeedbacks');
5392   glGenTransformFeedbacks                  := dglGetProcAddress('glGenTransformFeedbacks');
5393   glIsTransformFeedback                    := dglGetProcAddress('glIsTransformFeedback');
5394   glPauseTransformFeedback                 := dglGetProcAddress('glPauseTransformFeedback');
5395   glResumeTransformFeedback                := dglGetProcAddress('glResumeTransformFeedback');
5396   glGetProgramBinary                       := dglGetProcAddress('glGetProgramBinary');
5397   glProgramBinary                          := dglGetProcAddress('glProgramBinary');
5398   glProgramParameteri                      := dglGetProcAddress('glProgramParameteri');
5399   glInvalidateFramebuffer                  := dglGetProcAddress('glInvalidateFramebuffer');
5400   glInvalidateSubFramebuffer               := dglGetProcAddress('glInvalidateSubFramebuffer');
5401   glTexStorage2D                           := dglGetProcAddress('glTexStorage2D');
5402   glTexStorage3D                           := dglGetProcAddress('glTexStorage3D');
5403   glGetInternalformativ                    := dglGetProcAddress('glGetInternalformativ');
5404
5405   { ============================================= OpenGL ES 3.1 ====================================================== }
5406   glDispatchCompute                        := dglGetProcAddress('glDispatchCompute');
5407   glDispatchComputeIndirect                := dglGetProcAddress('glDispatchComputeIndirect');
5408   glDrawArraysIndirect                     := dglGetProcAddress('glDrawArraysIndirect');
5409   glDrawElementsIndirect                   := dglGetProcAddress('glDrawElementsIndirect');
5410   glFramebufferParameteri                  := dglGetProcAddress('glFramebufferParameteri');
5411   glGetFramebufferParameteriv              := dglGetProcAddress('glGetFramebufferParameteriv');
5412   glGetProgramInterfaceiv                  := dglGetProcAddress('glGetProgramInterfaceiv');
5413   glGetProgramResourceIndex                := dglGetProcAddress('glGetProgramResourceIndex');
5414   glGetProgramResourceName                 := dglGetProcAddress('glGetProgramResourceName');
5415   glGetProgramResourceiv                   := dglGetProcAddress('glGetProgramResourceiv');
5416   glGetProgramResourceLocation             := dglGetProcAddress('glGetProgramResourceLocation');
5417   glUseProgramStages                       := dglGetProcAddress('glUseProgramStages');
5418   glActiveShaderProgram                    := dglGetProcAddress('glActiveShaderProgram');
5419   glCreateShaderProgramv                   := dglGetProcAddress('glCreateShaderProgramv');
5420   glBindProgramPipeline                    := dglGetProcAddress('glBindProgramPipeline');
5421   glDeleteProgramPipelines                 := dglGetProcAddress('glDeleteProgramPipelines');
5422   glGenProgramPipelines                    := dglGetProcAddress('glGenProgramPipelines');
5423   glIsProgramPipeline                      := dglGetProcAddress('glIsProgramPipeline');
5424   glGetProgramPipelineiv                   := dglGetProcAddress('glGetProgramPipelineiv');
5425   glProgramUniform1i                       := dglGetProcAddress('glProgramUniform1i');
5426   glProgramUniform2i                       := dglGetProcAddress('glProgramUniform2i');
5427   glProgramUniform3i                       := dglGetProcAddress('glProgramUniform3i');
5428   glProgramUniform4i                       := dglGetProcAddress('glProgramUniform4i');
5429   glProgramUniform1ui                      := dglGetProcAddress('glProgramUniform1ui');
5430   glProgramUniform2ui                      := dglGetProcAddress('glProgramUniform2ui');
5431   glProgramUniform3ui                      := dglGetProcAddress('glProgramUniform3ui');
5432   glProgramUniform4ui                      := dglGetProcAddress('glProgramUniform4ui');
5433   glProgramUniform1f                       := dglGetProcAddress('glProgramUniform1f');
5434   glProgramUniform2f                       := dglGetProcAddress('glProgramUniform2f');
5435   glProgramUniform3f                       := dglGetProcAddress('glProgramUniform3f');
5436   glProgramUniform4f                       := dglGetProcAddress('glProgramUniform4f');
5437   glProgramUniform1iv                      := dglGetProcAddress('glProgramUniform1iv');
5438   glProgramUniform2iv                      := dglGetProcAddress('glProgramUniform2iv');
5439   glProgramUniform3iv                      := dglGetProcAddress('glProgramUniform3iv');
5440   glProgramUniform4iv                      := dglGetProcAddress('glProgramUniform4iv');
5441   glProgramUniform1uiv                     := dglGetProcAddress('glProgramUniform1uiv');
5442   glProgramUniform2uiv                     := dglGetProcAddress('glProgramUniform2uiv');
5443   glProgramUniform3uiv                     := dglGetProcAddress('glProgramUniform3uiv');
5444   glProgramUniform4uiv                     := dglGetProcAddress('glProgramUniform4uiv');
5445   glProgramUniform1fv                      := dglGetProcAddress('glProgramUniform1fv');
5446   glProgramUniform2fv                      := dglGetProcAddress('glProgramUniform2fv');
5447   glProgramUniform3fv                      := dglGetProcAddress('glProgramUniform3fv');
5448   glProgramUniform4fv                      := dglGetProcAddress('glProgramUniform4fv');
5449   glProgramUniformMatrix2fv                := dglGetProcAddress('glProgramUniformMatrix2fv');
5450   glProgramUniformMatrix3fv                := dglGetProcAddress('glProgramUniformMatrix3fv');
5451   glProgramUniformMatrix4fv                := dglGetProcAddress('glProgramUniformMatrix4fv');
5452   glProgramUniformMatrix2x3fv              := dglGetProcAddress('glProgramUniformMatrix2x3fv');
5453   glProgramUniformMatrix3x2fv              := dglGetProcAddress('glProgramUniformMatrix3x2fv');
5454   glProgramUniformMatrix2x4fv              := dglGetProcAddress('glProgramUniformMatrix2x4fv');
5455   glProgramUniformMatrix4x2fv              := dglGetProcAddress('glProgramUniformMatrix4x2fv');
5456   glProgramUniformMatrix3x4fv              := dglGetProcAddress('glProgramUniformMatrix3x4fv');
5457   glProgramUniformMatrix4x3fv              := dglGetProcAddress('glProgramUniformMatrix4x3fv');
5458   glValidateProgramPipeline                := dglGetProcAddress('glValidateProgramPipeline');
5459   glGetProgramPipelineInfoLog              := dglGetProcAddress('glGetProgramPipelineInfoLog');
5460   glBindImageTexture                       := dglGetProcAddress('glBindImageTexture');
5461   glGetBooleaniv                           := dglGetProcAddress('glGetBooleaniv');
5462   glMemoryBarrier                          := dglGetProcAddress('glMemoryBarrier');
5463   glMemoryBarrierByRegion                  := dglGetProcAddress('glMemoryBarrierByRegion');
5464   glTexStorage2DMultisample                := dglGetProcAddress('glTexStorage2DMultisample');
5465   glGetMultisamplefv                       := dglGetProcAddress('glGetMultisamplefv');
5466   glSampleMaski                            := dglGetProcAddress('glSampleMaski');
5467   glGetTexLevelParameteriv                 := dglGetProcAddress('glGetTexLevelParameteriv');
5468   glGetTexLevelParameterfv                 := dglGetProcAddress('glGetTexLevelParameterfv');
5469   glBindVertexBuffer                       := dglGetProcAddress('glBindVertexBuffer');
5470   glVertexAttribFormat                     := dglGetProcAddress('glVertexAttribFormat');
5471   glVertexAttribIFormat                    := dglGetProcAddress('glVertexAttribIFormat');
5472   glVertexAttribBinding                    := dglGetProcAddress('glVertexAttribBinding');
5473   glVertexBindingDivisor                   := dglGetProcAddress('glVertexBindingDivisor');
5474 end;
5475
5476 procedure ReadExtensions;
5477 begin
5478   Read_GL_KHR_blend_equation_advanced;
5479   Read_GL_KHR_debug;
5480   Read_GL_KHR_robustness;
5481   Read_GL_OES_EGL_image;
5482   Read_GL_OES_get_program_binary;
5483   Read_GL_OES_mapbuffer;
5484   Read_GL_OES_sample_shading;
5485   Read_GL_OES_texture_3D;
5486   Read_GL_OES_texture_storage_multisample_2d_array;
5487   Read_GL_OES_vertex_array_object;
5488   Read_GL_AMD_performance_monitor;
5489   Read_GL_ANGLE_framebuffer_blit;
5490   Read_GL_ANGLE_framebuffer_multisample;
5491   Read_GL_ANGLE_instanced_arrays;
5492   Read_GL_ANGLE_translated_shader_source;
5493   Read_GL_APPLE_copy_texture_levels;
5494   Read_GL_APPLE_framebuffer_multisample;
5495   Read_GL_APPLE_sync;
5496   Read_GL_EXT_base_instance;
5497   Read_GL_EXT_copy_image;
5498   Read_GL_EXT_debug_label;
5499   Read_GL_EXT_debug_marker;
5500   Read_GL_EXT_discard_framebuffer;
5501   Read_GL_EXT_disjoint_timer_query;
5502   Read_GL_EXT_draw_buffers;
5503   Read_GL_EXT_draw_buffers_indexed;
5504   Read_GL_EXT_draw_elements_base_vertex;
5505   Read_GL_EXT_draw_instanced;
5506   Read_GL_EXT_geometry_shader;
5507   Read_GL_EXT_instanced_arrays;
5508   Read_GL_EXT_map_buffer_range;
5509   Read_GL_EXT_multi_draw_arrays;
5510   Read_GL_EXT_multi_draw_indirect;
5511   Read_GL_EXT_multisampled_render_to_texture;
5512   Read_GL_EXT_multiview_draw_buffers;
5513   Read_GL_EXT_primitive_bounding_box;
5514   Read_GL_EXT_robustness;
5515   Read_GL_EXT_separate_shader_objects;
5516   Read_GL_EXT_tessellation_shader;
5517   Read_GL_EXT_texture_border_clamp;
5518   Read_GL_EXT_texture_buffer;
5519   Read_GL_EXT_texture_storage;
5520   Read_GL_EXT_texture_view;
5521   Read_GL_IMG_multisampled_render_to_texture;
5522   Read_GL_INTEL_performance_query;
5523   Read_GL_NV_bindless_texture;
5524   Read_GL_NV_blend_equation_advanced;
5525   Read_GL_NV_conditional_render;
5526   Read_GL_NV_copy_buffer;
5527   Read_GL_NV_coverage_sample;
5528   Read_GL_NV_draw_buffers;
5529   Read_GL_NV_draw_instanced;
5530   Read_GL_NV_fence;
5531   Read_GL_NV_framebuffer_blit;
5532   Read_GL_NV_framebuffer_multisample;
5533   Read_GL_NV_instanced_arrays;
5534   Read_GL_NV_internalformat_sample_query;
5535   Read_GL_NV_non_square_matrices;
5536   Read_GL_NV_path_rendering;
5537   Read_GL_NV_read_buffer;
5538   Read_GL_NV_viewport_array;
5539   Read_GL_QCOM_alpha_test;
5540   Read_GL_QCOM_driver_control;
5541   Read_GL_QCOM_extended_get;
5542   Read_GL_QCOM_extended_get2;
5543   Read_GL_QCOM_tiled_rendering;
5544 end;
5545
5546 procedure ReadCoreVersion;
5547 var
5548   AnsiBuffer: AnsiString;
5549   Buffer: String;
5550
5551   procedure TrimAndSplitVersionString(const aBuffer: String; out aMajor, aMinor: Integer);
5552   var
5553     p, s, e, len: Integer;
5554   begin
5555     aMajor := 0;
5556     aMinor := 0;
5557     try
5558       len := Length(aBuffer);
5559       p := Pos('.', aBuffer);
5560       if (p = 0) then
5561         exit;
5562
5563       s := p;
5564       while (s > 1) and (aBuffer[s - 1] in ['0'..'9']) do
5565         dec(s);
5566       if (s = p) then
5567         exit;
5568
5569       e := p;
5570       while (e < len) and (aBuffer[e + 1] in ['0'..'9']) do
5571         inc(e);
5572       if (s = p) then
5573         exit;
5574
5575       aMajor := StrToInt(Copy(aBuffer, s - 1, p - s + 1));
5576       aMinor := StrToInt(Copy(aBuffer, p + 1, e - p + 1));
5577     except
5578       aMajor := 0;
5579       aMinor := 0;
5580     end;
5581   end;
5582
5583 begin
5584   if not Assigned(glGetString) then
5585     glGetString := dglGetProcAddress('glGetString');
5586   AnsiBuffer := PAnsiChar(glGetString(GL_VERSION));
5587   Buffer     := String(AnsiBuffer);
5588
5589   TrimAndSplitVersionString(Buffer, GLmajor, GLminor);
5590
5591   GL_VERSION_1_0 := true; // OpenGL ES is always supported
5592   GL_VERSION_1_1 := (GLmajor >= 1) and (GLminor >= 1);
5593   GL_VERSION_2_0 := (GLmajor >= 2) and (GLminor >= 0);
5594   GL_VERSION_3_0 := (GLmajor >= 3) and (GLminor >= 0);
5595   GL_VERSION_3_1 := (GLmajor >= 3) and (GLminor >= 1);
5596 end;
5597
5598 procedure ReadImplementationProperties;
5599
5600   function GetExtensions: String;
5601   var
5602     ExtCount, i: GLint;
5603   begin
5604     result := '';
5605
5606     if not Assigned(glGetString) then
5607       glGetString := dglGetProcAddress('glGetString');
5608     if Assigned(glGetString) then
5609       result := String(PAnsiChar(glGetString(GL_EXTENSIONS)));
5610
5611     if (result = '') then begin
5612       if not Assigned(glGetIntegerv) then
5613         glGetIntegerv := dglGetProcAddress('glGetIntegerv');
5614       if not Assigned(glGetStringi) then
5615         glGetStringi := dglGetProcAddress('glGetStringi');
5616       if Assigned(glGetStringi) and Assigned(glGetIntegerv) then begin
5617         glGetIntegerv(GL_NUM_EXTENSIONS, @ExtCount);
5618         for i := 0 to ExtCount-1 do begin
5619           if (result <> '') then
5620             result := result + #$20;
5621           result := result + PAnsiChar(glGetStringi(GL_EXTENSIONS, i));
5622         end;
5623       end;
5624     end;
5625
5626     result := #$20 + result + #$20;
5627   end;
5628
5629   function CheckEx(const aAllExt, aExt: String): Boolean;
5630   begin
5631     result := (Pos(#$20 + aExt + #$20, aAllExt) > 0);
5632   end;
5633
5634 var
5635   Buffer: String;
5636 begin
5637   ReadCoreVersion;
5638
5639   Buffer := GetExtensions;
5640
5641   // KHR
5642   GL_KHR_blend_equation_advanced                := CheckEx(Buffer, 'GL_KHR_blend_equation_advanced');
5643   GL_KHR_blend_equation_advanced_coherent       := CheckEx(Buffer, 'GL_KHR_blend_equation_advanced_coherent');
5644   GL_KHR_context_flush_control                  := CheckEx(Buffer, 'GL_KHR_context_flush_control');
5645   GL_KHR_debug                                  := CheckEx(Buffer, 'GL_KHR_debug');
5646   GL_KHR_robust_buffer_access_behavior          := CheckEx(Buffer, 'GL_KHR_robust_buffer_access_behavior');
5647   GL_KHR_robustness                             := CheckEx(Buffer, 'GL_KHR_robustness');
5648   GL_KHR_texture_compression_astc_hdr           := CheckEx(Buffer, 'GL_KHR_texture_compression_astc_hdr');
5649   GL_KHR_texture_compression_astc_ldr           := CheckEx(Buffer, 'GL_KHR_texture_compression_astc_ldr');
5650
5651   // OES
5652   GL_OES_EGL_image                              := CheckEx(Buffer, 'GL_OES_EGL_image');
5653   GL_OES_EGL_image_external                     := CheckEx(Buffer, 'GL_OES_EGL_image_external');
5654   GL_OES_compressed_ETC1_RGB8_sub_texture       := CheckEx(Buffer, 'GL_OES_compressed_ETC1_RGB8_sub_texture');
5655   GL_OES_compressed_ETC1_RGB8_texture           := CheckEx(Buffer, 'GL_OES_compressed_ETC1_RGB8_texture');
5656   GL_OES_compressed_paletted_texture            := CheckEx(Buffer, 'GL_OES_compressed_paletted_texture');
5657   GL_OES_depth24                                := CheckEx(Buffer, 'GL_OES_depth24');
5658   GL_OES_depth32                                := CheckEx(Buffer, 'GL_OES_depth32');
5659   GL_OES_depth_texture                          := CheckEx(Buffer, 'GL_OES_depth_texture');
5660   GL_OES_element_index_uint                     := CheckEx(Buffer, 'GL_OES_element_index_uint');
5661   GL_OES_fbo_render_mipmap                      := CheckEx(Buffer, 'GL_OES_fbo_render_mipmap');
5662   GL_OES_fragment_precision_high                := CheckEx(Buffer, 'GL_OES_fragment_precision_high');
5663   GL_OES_get_program_binary                     := CheckEx(Buffer, 'GL_OES_get_program_binary');
5664   GL_OES_mapbuffer                              := CheckEx(Buffer, 'GL_OES_mapbuffer');
5665   GL_OES_packed_depth_stencil                   := CheckEx(Buffer, 'GL_OES_packed_depth_stencil');
5666   GL_OES_required_internalformat                := CheckEx(Buffer, 'GL_OES_required_internalformat');
5667   GL_OES_rgb8_rgba8                             := CheckEx(Buffer, 'GL_OES_rgb8_rgba8');
5668   GL_OES_sample_shading                         := CheckEx(Buffer, 'GL_OES_sample_shading');
5669   GL_OES_sample_variables                       := CheckEx(Buffer, 'GL_OES_sample_variables');
5670   GL_OES_shader_image_atomic                    := CheckEx(Buffer, 'GL_OES_shader_image_atomic');
5671   GL_OES_shader_multisample_interpolation       := CheckEx(Buffer, 'GL_OES_shader_multisample_interpolation');
5672   GL_OES_standard_derivatives                   := CheckEx(Buffer, 'GL_OES_standard_derivatives');
5673   GL_OES_stencil1                               := CheckEx(Buffer, 'GL_OES_stencil1');
5674   GL_OES_stencil4                               := CheckEx(Buffer, 'GL_OES_stencil4');
5675   GL_OES_surfaceless_context                    := CheckEx(Buffer, 'GL_OES_surfaceless_context');
5676   GL_OES_texture_3D                             := CheckEx(Buffer, 'GL_OES_texture_3D');
5677   GL_OES_texture_compression_astc               := CheckEx(Buffer, 'GL_OES_texture_compression_astc');
5678   GL_OES_texture_float                          := CheckEx(Buffer, 'GL_OES_texture_float');
5679   GL_OES_texture_float_linear                   := CheckEx(Buffer, 'GL_OES_texture_float_linear');
5680   GL_OES_texture_half_float                     := CheckEx(Buffer, 'GL_OES_texture_half_float');
5681   GL_OES_texture_half_float_linear              := CheckEx(Buffer, 'GL_OES_texture_half_float_linear');
5682   GL_OES_texture_npot                           := CheckEx(Buffer, 'GL_OES_texture_npot');
5683   GL_OES_texture_stencil8                       := CheckEx(Buffer, 'GL_OES_texture_stencil8');
5684   GL_OES_texture_storage_multisample_2d_array   := CheckEx(Buffer, 'GL_OES_texture_storage_multisample_2d_array');
5685   GL_OES_vertex_array_object                    := CheckEx(Buffer, 'GL_OES_vertex_array_object');
5686   GL_OES_vertex_half_float                      := CheckEx(Buffer, 'GL_OES_vertex_half_float');
5687   GL_OES_vertex_type_10_10_10_2                 := CheckEx(Buffer, 'GL_OES_vertex_type_10_10_10_2');
5688
5689   // AMD
5690   GL_AMD_compressed_3DC_texture                 := CheckEx(Buffer, 'GL_AMD_compressed_3DC_texture');
5691   GL_AMD_compressed_ATC_texture                 := CheckEx(Buffer, 'GL_AMD_compressed_ATC_texture');
5692   GL_AMD_performance_monitor                    := CheckEx(Buffer, 'GL_AMD_performance_monitor');
5693   GL_AMD_program_binary_Z400                    := CheckEx(Buffer, 'GL_AMD_program_binary_Z400');
5694
5695   // ANDROID
5696   GL_ANDROID_extension_pack_es31a               := CheckEx(Buffer, 'GL_ANDROID_extension_pack_es31a');
5697
5698   // ANGLE
5699   GL_ANGLE_depth_texture                        := CheckEx(Buffer, 'GL_ANGLE_depth_texture');
5700   GL_ANGLE_framebuffer_blit                     := CheckEx(Buffer, 'GL_ANGLE_framebuffer_blit');
5701   GL_ANGLE_framebuffer_multisample              := CheckEx(Buffer, 'GL_ANGLE_framebuffer_multisample');
5702   GL_ANGLE_instanced_arrays                     := CheckEx(Buffer, 'GL_ANGLE_instanced_arrays');
5703   GL_ANGLE_pack_reverse_row_order               := CheckEx(Buffer, 'GL_ANGLE_pack_reverse_row_order');
5704   GL_ANGLE_program_binary                       := CheckEx(Buffer, 'GL_ANGLE_program_binary');
5705   GL_ANGLE_texture_compression_dxt3             := CheckEx(Buffer, 'GL_ANGLE_texture_compression_dxt3');
5706   GL_ANGLE_texture_compression_dxt5             := CheckEx(Buffer, 'GL_ANGLE_texture_compression_dxt5');
5707   GL_ANGLE_texture_usage                        := CheckEx(Buffer, 'GL_ANGLE_texture_usage');
5708   GL_ANGLE_translated_shader_source             := CheckEx(Buffer, 'GL_ANGLE_translated_shader_source');
5709
5710   // APPLE
5711   GL_APPLE_clip_distance                        := CheckEx(Buffer, 'GL_APPLE_clip_distance');
5712   GL_APPLE_color_buffer_packed_float            := CheckEx(Buffer, 'GL_APPLE_color_buffer_packed_float');
5713   GL_APPLE_copy_texture_levels                  := CheckEx(Buffer, 'GL_APPLE_copy_texture_levels');
5714   GL_APPLE_framebuffer_multisample              := CheckEx(Buffer, 'GL_APPLE_framebuffer_multisample');
5715   GL_APPLE_rgb_422                              := CheckEx(Buffer, 'GL_APPLE_rgb_422');
5716   GL_APPLE_sync                                 := CheckEx(Buffer, 'GL_APPLE_sync');
5717   GL_APPLE_texture_format_BGRA8888              := CheckEx(Buffer, 'GL_APPLE_texture_format_BGRA8888');
5718   GL_APPLE_texture_max_level                    := CheckEx(Buffer, 'GL_APPLE_texture_max_level');
5719   GL_APPLE_texture_packed_float                 := CheckEx(Buffer, 'GL_APPLE_texture_packed_float');
5720
5721   // ARM
5722   GL_ARM_mali_program_binary                    := CheckEx(Buffer, 'GL_ARM_mali_program_binary');
5723   GL_ARM_mali_shader_binary                     := CheckEx(Buffer, 'GL_ARM_mali_shader_binary');
5724   GL_ARM_rgba8                                  := CheckEx(Buffer, 'GL_ARM_rgba8');
5725   GL_ARM_shader_framebuffer_fetch               := CheckEx(Buffer, 'GL_ARM_shader_framebuffer_fetch');
5726   GL_ARM_shader_framebuffer_fetch_depth_stencil := CheckEx(Buffer, 'GL_ARM_shader_framebuffer_fetch_depth_stencil');
5727
5728   // DMP
5729   GL_DMP_program_binary                         := CheckEx(Buffer, 'GL_DMP_program_binary');
5730   GL_DMP_shader_binary                          := CheckEx(Buffer, 'GL_DMP_shader_binary');
5731
5732   // EXT
5733   GL_EXT_base_instance                          := CheckEx(Buffer, 'GL_EXT_base_instance');
5734   GL_EXT_blend_minmax                           := CheckEx(Buffer, 'GL_EXT_blend_minmax');
5735   GL_EXT_color_buffer_half_float                := CheckEx(Buffer, 'GL_EXT_color_buffer_half_float');
5736   GL_EXT_copy_image                             := CheckEx(Buffer, 'GL_EXT_copy_image');
5737   GL_EXT_debug_label                            := CheckEx(Buffer, 'GL_EXT_debug_label');
5738   GL_EXT_debug_marker                           := CheckEx(Buffer, 'GL_EXT_debug_marker');
5739   GL_EXT_discard_framebuffer                    := CheckEx(Buffer, 'GL_EXT_discard_framebuffer');
5740   GL_EXT_disjoint_timer_query                   := CheckEx(Buffer, 'GL_EXT_disjoint_timer_query');
5741   GL_EXT_draw_buffers                           := CheckEx(Buffer, 'GL_EXT_draw_buffers');
5742   GL_EXT_draw_buffers_indexed                   := CheckEx(Buffer, 'GL_EXT_draw_buffers_indexed');
5743   GL_EXT_draw_elements_base_vertex              := CheckEx(Buffer, 'GL_EXT_draw_elements_base_vertex');
5744   GL_EXT_draw_instanced                         := CheckEx(Buffer, 'GL_EXT_draw_instanced');
5745   GL_EXT_geometry_point_size                    := CheckEx(Buffer, 'GL_EXT_geometry_point_size');
5746   GL_EXT_geometry_shader                        := CheckEx(Buffer, 'GL_EXT_geometry_shader');
5747   GL_EXT_gpu_shader5                            := CheckEx(Buffer, 'GL_EXT_gpu_shader5');
5748   GL_EXT_instanced_arrays                       := CheckEx(Buffer, 'GL_EXT_instanced_arrays');
5749   GL_EXT_map_buffer_range                       := CheckEx(Buffer, 'GL_EXT_map_buffer_range');
5750   GL_EXT_multi_draw_arrays                      := CheckEx(Buffer, 'GL_EXT_multi_draw_arrays');
5751   GL_EXT_multi_draw_indirect                    := CheckEx(Buffer, 'GL_EXT_multi_draw_indirect');
5752   GL_EXT_multisampled_render_to_texture         := CheckEx(Buffer, 'GL_EXT_multisampled_render_to_texture');
5753   GL_EXT_multiview_draw_buffers                 := CheckEx(Buffer, 'GL_EXT_multiview_draw_buffers');
5754   GL_EXT_occlusion_query_boolean                := CheckEx(Buffer, 'GL_EXT_occlusion_query_boolean');
5755   GL_EXT_primitive_bounding_box                 := CheckEx(Buffer, 'GL_EXT_primitive_bounding_box');
5756   GL_EXT_pvrtc_sRGB                             := CheckEx(Buffer, 'GL_EXT_pvrtc_sRGB');
5757   GL_EXT_read_format_bgra                       := CheckEx(Buffer, 'GL_EXT_read_format_bgra');
5758   GL_EXT_render_snorm                           := CheckEx(Buffer, 'GL_EXT_render_snorm');
5759   GL_EXT_robustness                             := CheckEx(Buffer, 'GL_EXT_robustness');
5760   GL_EXT_sRGB                                   := CheckEx(Buffer, 'GL_EXT_sRGB');
5761   GL_EXT_sRGB_write_control                     := CheckEx(Buffer, 'GL_EXT_sRGB_write_control');
5762   GL_EXT_separate_shader_objects                := CheckEx(Buffer, 'GL_EXT_separate_shader_objects');
5763   GL_EXT_shader_framebuffer_fetch               := CheckEx(Buffer, 'GL_EXT_shader_framebuffer_fetch');
5764   GL_EXT_shader_implicit_conversions            := CheckEx(Buffer, 'GL_EXT_shader_implicit_conversions');
5765   GL_EXT_shader_integer_mix                     := CheckEx(Buffer, 'GL_EXT_shader_integer_mix');
5766   GL_EXT_shader_io_blocks                       := CheckEx(Buffer, 'GL_EXT_shader_io_blocks');
5767   GL_EXT_shader_pixel_local_storage             := CheckEx(Buffer, 'GL_EXT_shader_pixel_local_storage');
5768   GL_EXT_shader_texture_lod                     := CheckEx(Buffer, 'GL_EXT_shader_texture_lod');
5769   GL_EXT_shadow_samplers                        := CheckEx(Buffer, 'GL_EXT_shadow_samplers');
5770   GL_EXT_tessellation_point_size                := CheckEx(Buffer, 'GL_EXT_tessellation_point_size');
5771   GL_EXT_tessellation_shader                    := CheckEx(Buffer, 'GL_EXT_tessellation_shader');
5772   GL_EXT_texture_border_clamp                   := CheckEx(Buffer, 'GL_EXT_texture_border_clamp');
5773   GL_EXT_texture_buffer                         := CheckEx(Buffer, 'GL_EXT_texture_buffer');
5774   GL_EXT_texture_compression_dxt1               := CheckEx(Buffer, 'GL_EXT_texture_compression_dxt1');
5775   GL_EXT_texture_compression_s3tc               := CheckEx(Buffer, 'GL_EXT_texture_compression_s3tc');
5776   GL_EXT_texture_cube_map_array                 := CheckEx(Buffer, 'GL_EXT_texture_cube_map_array');
5777   GL_EXT_texture_filter_anisotropic             := CheckEx(Buffer, 'GL_EXT_texture_filter_anisotropic');
5778   GL_EXT_texture_format_BGRA8888                := CheckEx(Buffer, 'GL_EXT_texture_format_BGRA8888');
5779   GL_EXT_texture_norm16                         := CheckEx(Buffer, 'GL_EXT_texture_norm16');
5780   GL_EXT_texture_rg                             := CheckEx(Buffer, 'GL_EXT_texture_rg');
5781   GL_EXT_texture_sRGB_decode                    := CheckEx(Buffer, 'GL_EXT_texture_sRGB_decode');
5782   GL_EXT_texture_storage                        := CheckEx(Buffer, 'GL_EXT_texture_storage');
5783   GL_EXT_texture_type_2_10_10_10_REV            := CheckEx(Buffer, 'GL_EXT_texture_type_2_10_10_10_REV');
5784   GL_EXT_texture_view                           := CheckEx(Buffer, 'GL_EXT_texture_view');
5785   GL_EXT_unpack_subimage                        := CheckEx(Buffer, 'GL_EXT_unpack_subimage');
5786
5787   // FJ
5788   GL_FJ_shader_binary_GCCSO                     := CheckEx(Buffer, 'GL_FJ_shader_binary_GCCSO');
5789
5790   // IMG
5791   GL_IMG_multisampled_render_to_texture         := CheckEx(Buffer, 'GL_IMG_multisampled_render_to_texture');
5792   GL_IMG_program_binary                         := CheckEx(Buffer, 'GL_IMG_program_binary');
5793   GL_IMG_read_format                            := CheckEx(Buffer, 'GL_IMG_read_format');
5794   GL_IMG_shader_binary                          := CheckEx(Buffer, 'GL_IMG_shader_binary');
5795   GL_IMG_texture_compression_pvrtc              := CheckEx(Buffer, 'GL_IMG_texture_compression_pvrtc');
5796   GL_IMG_texture_compression_pvrtc2             := CheckEx(Buffer, 'GL_IMG_texture_compression_pvrtc2');
5797
5798   // INTEL
5799   GL_INTEL_performance_query                    := CheckEx(Buffer, 'GL_INTEL_performance_query');
5800
5801   // NV
5802   GL_NV_bindless_texture                        := CheckEx(Buffer, 'GL_NV_bindless_texture');
5803   GL_NV_blend_equation_advanced                 := CheckEx(Buffer, 'GL_NV_blend_equation_advanced');
5804   GL_NV_blend_equation_advanced_coherent        := CheckEx(Buffer, 'GL_NV_blend_equation_advanced_coherent');
5805   GL_NV_conditional_render                      := CheckEx(Buffer, 'GL_NV_conditional_render');
5806   GL_NV_copy_buffer                             := CheckEx(Buffer, 'GL_NV_copy_buffer');
5807   GL_NV_coverage_sample                         := CheckEx(Buffer, 'GL_NV_coverage_sample');
5808   GL_NV_depth_nonlinear                         := CheckEx(Buffer, 'GL_NV_depth_nonlinear');
5809   GL_NV_draw_buffers                            := CheckEx(Buffer, 'GL_NV_draw_buffers');
5810   GL_NV_draw_instanced                          := CheckEx(Buffer, 'GL_NV_draw_instanced');
5811   GL_NV_explicit_attrib_location                := CheckEx(Buffer, 'GL_NV_explicit_attrib_location');
5812   GL_NV_fbo_color_attachments                   := CheckEx(Buffer, 'GL_NV_fbo_color_attachments');
5813   GL_NV_fence                                   := CheckEx(Buffer, 'GL_NV_fence');
5814   GL_NV_framebuffer_blit                        := CheckEx(Buffer, 'GL_NV_framebuffer_blit');
5815   GL_NV_framebuffer_multisample                 := CheckEx(Buffer, 'GL_NV_framebuffer_multisample');
5816   GL_NV_generate_mipmap_sRGB                    := CheckEx(Buffer, 'GL_NV_generate_mipmap_sRGB');
5817   GL_NV_image_formats                           := CheckEx(Buffer, 'GL_NV_image_formats');
5818   GL_NV_instanced_arrays                        := CheckEx(Buffer, 'GL_NV_instanced_arrays');
5819   GL_NV_internalformat_sample_query             := CheckEx(Buffer, 'GL_NV_internalformat_sample_query');
5820   GL_NV_non_square_matrices                     := CheckEx(Buffer, 'GL_NV_non_square_matrices');
5821   GL_NV_path_rendering                          := CheckEx(Buffer, 'GL_NV_path_rendering');
5822   GL_NV_read_buffer                             := CheckEx(Buffer, 'GL_NV_read_buffer');
5823   GL_NV_read_buffer_front                       := CheckEx(Buffer, 'GL_NV_read_buffer_front');
5824   GL_NV_read_depth                              := CheckEx(Buffer, 'GL_NV_read_depth');
5825   GL_NV_read_depth_stencil                      := CheckEx(Buffer, 'GL_NV_read_depth_stencil');
5826   GL_NV_read_stencil                            := CheckEx(Buffer, 'GL_NV_read_stencil');
5827   GL_NV_sRGB_formats                            := CheckEx(Buffer, 'GL_NV_sRGB_formats');
5828   GL_NV_shader_noperspective_interpolation      := CheckEx(Buffer, 'GL_NV_shader_noperspective_interpolation');
5829   GL_NV_shadow_samplers_array                   := CheckEx(Buffer, 'GL_NV_shadow_samplers_array');
5830   GL_NV_shadow_samplers_cube                    := CheckEx(Buffer, 'GL_NV_shadow_samplers_cube');
5831   GL_NV_texture_border_clamp                    := CheckEx(Buffer, 'GL_NV_texture_border_clamp');
5832   GL_NV_texture_compression_s3tc_update         := CheckEx(Buffer, 'GL_NV_texture_compression_s3tc_update');
5833   GL_NV_texture_npot_2D_mipmap                  := CheckEx(Buffer, 'GL_NV_texture_npot_2D_mipmap');
5834   GL_NV_viewport_array                          := CheckEx(Buffer, 'GL_NV_viewport_array');
5835
5836   // QCOM
5837   GL_QCOM_alpha_test                            := CheckEx(Buffer, 'GL_QCOM_alpha_test');
5838   GL_QCOM_binning_control                       := CheckEx(Buffer, 'GL_QCOM_binning_control');
5839   GL_QCOM_driver_control                        := CheckEx(Buffer, 'GL_QCOM_driver_control');
5840   GL_QCOM_extended_get                          := CheckEx(Buffer, 'GL_QCOM_extended_get');
5841   GL_QCOM_extended_get2                         := CheckEx(Buffer, 'GL_QCOM_extended_get2');
5842   GL_QCOM_perfmon_global_mode                   := CheckEx(Buffer, 'GL_QCOM_perfmon_global_mode');
5843   GL_QCOM_tiled_rendering                       := CheckEx(Buffer, 'GL_QCOM_tiled_rendering');
5844   GL_QCOM_writeonly_rendering                   := CheckEx(Buffer, 'GL_QCOM_writeonly_rendering');
5845
5846   // VIV
5847   GL_VIV_shader_binary                          := CheckEx(Buffer, 'GL_VIV_shader_binary');
5848 end;
5849
5850 procedure Read_GL_KHR_blend_equation_advanced;
5851 begin
5852   glBlendBarrierKHR                                        := dglGetProcAddress('glBlendBarrierKHR');
5853 end;
5854
5855 procedure Read_GL_KHR_debug;
5856 begin
5857   glDebugMessageControlKHR                                 := dglGetProcAddress('glDebugMessageControlKHR');
5858   glDebugMessageInsertKHR                                  := dglGetProcAddress('glDebugMessageInsertKHR');
5859   glDebugMessageCallbackKHR                                := dglGetProcAddress('glDebugMessageCallbackKHR');
5860   glGetDebugMessageLogKHR                                  := dglGetProcAddress('glGetDebugMessageLogKHR');
5861   glPushDebugGroupKHR                                      := dglGetProcAddress('glPushDebugGroupKHR');
5862   glPopDebugGroupKHR                                       := dglGetProcAddress('glPopDebugGroupKHR');
5863   glObjectLabelKHR                                         := dglGetProcAddress('glObjectLabelKHR');
5864   glGetObjectLabelKHR                                      := dglGetProcAddress('glGetObjectLabelKHR');
5865   glObjectPtrLabelKHR                                      := dglGetProcAddress('glObjectPtrLabelKHR');
5866   glGetObjectPtrLabelKHR                                   := dglGetProcAddress('glGetObjectPtrLabelKHR');
5867   glGetPointervKHR                                         := dglGetProcAddress('glGetPointervKHR');
5868 end;
5869
5870 procedure Read_GL_KHR_robustness;
5871 begin
5872   glGetGraphicsResetStatusKHR                              := dglGetProcAddress('glGetGraphicsResetStatusKHR');
5873   glReadnPixelsKHR                                         := dglGetProcAddress('glReadnPixelsKHR');
5874   glGetnUniformfvKHR                                       := dglGetProcAddress('glGetnUniformfvKHR');
5875   glGetnUniformivKHR                                       := dglGetProcAddress('glGetnUniformivKHR');
5876   glGetnUniformuivKHR                                      := dglGetProcAddress('glGetnUniformuivKHR');
5877 end;
5878
5879 procedure Read_GL_OES_EGL_image;
5880 begin
5881   glEGLImageTargetTexture2DOES                             := dglGetProcAddress('glEGLImageTargetTexture2DOES');
5882   glEGLImageTargetRenderbufferStorageOES                   := dglGetProcAddress('glEGLImageTargetRenderbufferStorageOES');
5883 end;
5884
5885 procedure Read_GL_OES_get_program_binary;
5886 begin
5887   glGetProgramBinaryOES                                    := dglGetProcAddress('glGetProgramBinaryOES');
5888   glProgramBinaryOES                                       := dglGetProcAddress('glProgramBinaryOES');
5889 end;
5890
5891 procedure Read_GL_OES_mapbuffer;
5892 begin
5893   glMapBufferOES                                           := dglGetProcAddress('glMapBufferOES');
5894   glUnmapBufferOES                                         := dglGetProcAddress('glUnmapBufferOES');
5895   glGetBufferPointervOES                                   := dglGetProcAddress('glGetBufferPointervOES');
5896 end;
5897
5898 procedure Read_GL_OES_sample_shading;
5899 begin
5900   glMinSampleShadingOES                                    := dglGetProcAddress('glMinSampleShadingOES');
5901 end;
5902
5903 procedure Read_GL_OES_texture_3D;
5904 begin
5905   glTexImage3DOES                                          := dglGetProcAddress('glTexImage3DOES');
5906   glTexSubImage3DOES                                       := dglGetProcAddress('glTexSubImage3DOES');
5907   glCopyTexSubImage3DOES                                   := dglGetProcAddress('glCopyTexSubImage3DOES');
5908   glCompressedTexImage3DOES                                := dglGetProcAddress('glCompressedTexImage3DOES');
5909   glCompressedTexSubImage3DOES                             := dglGetProcAddress('glCompressedTexSubImage3DOES');
5910   glFramebufferTexture3DOES                                := dglGetProcAddress('glFramebufferTexture3DOES');
5911 end;
5912
5913 procedure Read_GL_OES_texture_storage_multisample_2d_array;
5914 begin
5915   glTexStorage3DMultisampleOES                             := dglGetProcAddress('glTexStorage3DMultisampleOES');
5916 end;
5917
5918 procedure Read_GL_OES_vertex_array_object;
5919 begin
5920   glBindVertexArrayOES                                     := dglGetProcAddress('glBindVertexArrayOES');
5921   glDeleteVertexArraysOES                                  := dglGetProcAddress('glDeleteVertexArraysOES');
5922   glGenVertexArraysOES                                     := dglGetProcAddress('glGenVertexArraysOES');
5923   glIsVertexArrayOES                                       := dglGetProcAddress('glIsVertexArrayOES');
5924 end;
5925
5926 procedure Read_GL_AMD_performance_monitor;
5927 begin
5928   glGetPerfMonitorGroupsAMD                                := dglGetProcAddress('glGetPerfMonitorGroupsAMD');
5929   glGetPerfMonitorCountersAMD                              := dglGetProcAddress('glGetPerfMonitorCountersAMD');
5930   glGetPerfMonitorGroupStringAMD                           := dglGetProcAddress('glGetPerfMonitorGroupStringAMD');
5931   glGetPerfMonitorCounterStringAMD                         := dglGetProcAddress('glGetPerfMonitorCounterStringAMD');
5932   glGetPerfMonitorCounterInfoAMD                           := dglGetProcAddress('glGetPerfMonitorCounterInfoAMD');
5933   glGenPerfMonitorsAMD                                     := dglGetProcAddress('glGenPerfMonitorsAMD');
5934   glDeletePerfMonitorsAMD                                  := dglGetProcAddress('glDeletePerfMonitorsAMD');
5935   glSelectPerfMonitorCountersAMD                           := dglGetProcAddress('glSelectPerfMonitorCountersAMD');
5936   glBeginPerfMonitorAMD                                    := dglGetProcAddress('glBeginPerfMonitorAMD');
5937   glEndPerfMonitorAMD                                      := dglGetProcAddress('glEndPerfMonitorAMD');
5938   glGetPerfMonitorCounterDataAMD                           := dglGetProcAddress('glGetPerfMonitorCounterDataAMD');
5939 end;
5940
5941 procedure Read_GL_ANGLE_framebuffer_blit;
5942 begin
5943   glBlitFramebufferANGLE                                   := dglGetProcAddress('glBlitFramebufferANGLE');
5944 end;
5945
5946 procedure Read_GL_ANGLE_framebuffer_multisample;
5947 begin
5948   glRenderbufferStorageMultisampleANGLE                    := dglGetProcAddress('glRenderbufferStorageMultisampleANGLE');
5949 end;
5950
5951 procedure Read_GL_ANGLE_instanced_arrays;
5952 begin
5953   glDrawArraysInstancedANGLE                               := dglGetProcAddress('glDrawArraysInstancedANGLE');
5954   glDrawElementsInstancedANGLE                             := dglGetProcAddress('glDrawElementsInstancedANGLE');
5955   glVertexAttribDivisorANGLE                               := dglGetProcAddress('glVertexAttribDivisorANGLE');
5956 end;
5957
5958 procedure Read_GL_ANGLE_translated_shader_source;
5959 begin
5960   glGetTranslatedShaderSourceANGLE                         := dglGetProcAddress('glGetTranslatedShaderSourceANGLE');
5961 end;
5962
5963 procedure Read_GL_APPLE_copy_texture_levels;
5964 begin
5965   glCopyTextureLevelsAPPLE                                 := dglGetProcAddress('glCopyTextureLevelsAPPLE');
5966 end;
5967
5968 procedure Read_GL_APPLE_framebuffer_multisample;
5969 begin
5970   glRenderbufferStorageMultisampleAPPLE                    := dglGetProcAddress('glRenderbufferStorageMultisampleAPPLE');
5971   glResolveMultisampleFramebufferAPPLE                     := dglGetProcAddress('glResolveMultisampleFramebufferAPPLE');
5972 end;
5973
5974 procedure Read_GL_APPLE_sync;
5975 begin
5976   glFenceSyncAPPLE                                         := dglGetProcAddress('glFenceSyncAPPLE');
5977   glIsSyncAPPLE                                            := dglGetProcAddress('glIsSyncAPPLE');
5978   glDeleteSyncAPPLE                                        := dglGetProcAddress('glDeleteSyncAPPLE');
5979   glClientWaitSyncAPPLE                                    := dglGetProcAddress('glClientWaitSyncAPPLE');
5980   glWaitSyncAPPLE                                          := dglGetProcAddress('glWaitSyncAPPLE');
5981   glGetInteger64vAPPLE                                     := dglGetProcAddress('glGetInteger64vAPPLE');
5982   glGetSyncivAPPLE                                         := dglGetProcAddress('glGetSyncivAPPLE');
5983 end;
5984
5985 procedure Read_GL_EXT_base_instance;
5986 begin
5987   glDrawArraysInstancedBaseInstanceEXT                     := dglGetProcAddress('glDrawArraysInstancedBaseInstanceEXT');
5988   glDrawElementsInstancedBaseInstanceEXT                   := dglGetProcAddress('glDrawElementsInstancedBaseInstanceEXT');
5989   glDrawElementsInstancedBaseVertexBaseInstanceEXT         := dglGetProcAddress('glDrawElementsInstancedBaseVertexBaseInstanceEXT');
5990 end;
5991
5992 procedure Read_GL_EXT_copy_image;
5993 begin
5994   glCopyImageSubDataEXT                                    := dglGetProcAddress('glCopyImageSubDataEXT');
5995 end;
5996
5997 procedure Read_GL_EXT_debug_label;
5998 begin
5999   glLabelObjectEXT                                         := dglGetProcAddress('glLabelObjectEXT');
6000   glGetObjectLabelEXT                                      := dglGetProcAddress('glGetObjectLabelEXT');
6001 end;
6002
6003 procedure Read_GL_EXT_debug_marker;
6004 begin
6005   glInsertEventMarkerEXT                                   := dglGetProcAddress('glInsertEventMarkerEXT');
6006   glPushGroupMarkerEXT                                     := dglGetProcAddress('glPushGroupMarkerEXT');
6007   glPopGroupMarkerEXT                                      := dglGetProcAddress('glPopGroupMarkerEXT');
6008 end;
6009
6010 procedure Read_GL_EXT_discard_framebuffer;
6011 begin
6012   glDiscardFramebufferEXT                                  := dglGetProcAddress('glDiscardFramebufferEXT');
6013 end;
6014
6015 procedure Read_GL_EXT_disjoint_timer_query;
6016 begin
6017   glGenQueriesEXT                                          := dglGetProcAddress('glGenQueriesEXT');
6018   glDeleteQueriesEXT                                       := dglGetProcAddress('glDeleteQueriesEXT');
6019   glIsQueryEXT                                             := dglGetProcAddress('glIsQueryEXT');
6020   glBeginQueryEXT                                          := dglGetProcAddress('glBeginQueryEXT');
6021   glEndQueryEXT                                            := dglGetProcAddress('glEndQueryEXT');
6022   glQueryCounterEXT                                        := dglGetProcAddress('glQueryCounterEXT');
6023   glGetQueryivEXT                                          := dglGetProcAddress('glGetQueryivEXT');
6024   glGetQueryObjectivEXT                                    := dglGetProcAddress('glGetQueryObjectivEXT');
6025   glGetQueryObjectuivEXT                                   := dglGetProcAddress('glGetQueryObjectuivEXT');
6026   glGetQueryObjecti64vEXT                                  := dglGetProcAddress('glGetQueryObjecti64vEXT');
6027   glGetQueryObjectui64vEXT                                 := dglGetProcAddress('glGetQueryObjectui64vEXT');
6028 end;
6029
6030 procedure Read_GL_EXT_draw_buffers;
6031 begin
6032   glDrawBuffersEXT                                         := dglGetProcAddress('glDrawBuffersEXT');
6033 end;
6034
6035 procedure Read_GL_EXT_draw_buffers_indexed;
6036 begin
6037   glEnableiEXT                                             := dglGetProcAddress('glEnableiEXT');
6038   glDisableiEXT                                            := dglGetProcAddress('glDisableiEXT');
6039   glBlendEquationiEXT                                      := dglGetProcAddress('glBlendEquationiEXT');
6040   glBlendEquationSeparateiEXT                              := dglGetProcAddress('glBlendEquationSeparateiEXT');
6041   glBlendFunciEXT                                          := dglGetProcAddress('glBlendFunciEXT');
6042   glBlendFuncSeparateiEXT                                  := dglGetProcAddress('glBlendFuncSeparateiEXT');
6043   glColorMaskiEXT                                          := dglGetProcAddress('glColorMaskiEXT');
6044   glIsEnablediEXT                                          := dglGetProcAddress('glIsEnablediEXT');
6045 end;
6046
6047 procedure Read_GL_EXT_draw_elements_base_vertex;
6048 begin
6049   glDrawElementsBaseVertexEXT                              := dglGetProcAddress('glDrawElementsBaseVertexEXT');
6050   glDrawRangeElementsBaseVertexEXT                         := dglGetProcAddress('glDrawRangeElementsBaseVertexEXT');
6051   glDrawElementsInstancedBaseVertexEXT                     := dglGetProcAddress('glDrawElementsInstancedBaseVertexEXT');
6052   glMultiDrawElementsBaseVertexEXT                         := dglGetProcAddress('glMultiDrawElementsBaseVertexEXT');
6053 end;
6054
6055 procedure Read_GL_EXT_draw_instanced;
6056 begin
6057   glDrawArraysInstancedEXT                                 := dglGetProcAddress('glDrawArraysInstancedEXT');
6058   glDrawElementsInstancedEXT                               := dglGetProcAddress('glDrawElementsInstancedEXT');
6059 end;
6060
6061 procedure Read_GL_EXT_geometry_shader;
6062 begin
6063   glFramebufferTextureEXT                                  := dglGetProcAddress('glFramebufferTextureEXT');
6064 end;
6065
6066 procedure Read_GL_EXT_instanced_arrays;
6067 begin
6068   glVertexAttribDivisorEXT                                 := dglGetProcAddress('glVertexAttribDivisorEXT');
6069 end;
6070
6071 procedure Read_GL_EXT_map_buffer_range;
6072 begin
6073   glMapBufferRangeEXT                                      := dglGetProcAddress('glMapBufferRangeEXT');
6074   glFlushMappedBufferRangeEXT                              := dglGetProcAddress('glFlushMappedBufferRangeEXT');
6075 end;
6076
6077 procedure Read_GL_EXT_multi_draw_arrays;
6078 begin
6079   glMultiDrawArraysEXT                                     := dglGetProcAddress('glMultiDrawArraysEXT');
6080   glMultiDrawElementsEXT                                   := dglGetProcAddress('glMultiDrawElementsEXT');
6081 end;
6082
6083 procedure Read_GL_EXT_multi_draw_indirect;
6084 begin
6085   glMultiDrawArraysIndirectEXT                             := dglGetProcAddress('glMultiDrawArraysIndirectEXT');
6086   glMultiDrawElementsIndirectEXT                           := dglGetProcAddress('glMultiDrawElementsIndirectEXT');
6087 end;
6088
6089 procedure Read_GL_EXT_multisampled_render_to_texture;
6090 begin
6091   glRenderbufferStorageMultisampleEXT                      := dglGetProcAddress('glRenderbufferStorageMultisampleEXT');
6092   glFramebufferTexture2DMultisampleEXT                     := dglGetProcAddress('glFramebufferTexture2DMultisampleEXT');
6093 end;
6094
6095 procedure Read_GL_EXT_multiview_draw_buffers;
6096 begin
6097   glReadBufferIndexedEXT                                   := dglGetProcAddress('glReadBufferIndexedEXT');
6098   glDrawBuffersIndexedEXT                                  := dglGetProcAddress('glDrawBuffersIndexedEXT');
6099   glGetIntegeri_vEXT                                       := dglGetProcAddress('glGetIntegeri_vEXT');
6100 end;
6101
6102 procedure Read_GL_EXT_primitive_bounding_box;
6103 begin
6104   glPrimitiveBoundingBoxEXT                                := dglGetProcAddress('glPrimitiveBoundingBoxEXT');
6105 end;
6106
6107 procedure Read_GL_EXT_robustness;
6108 begin
6109   glGetGraphicsResetStatusEXT                              := dglGetProcAddress('glGetGraphicsResetStatusEXT');
6110   glReadnPixelsEXT                                         := dglGetProcAddress('glReadnPixelsEXT');
6111   glGetnUniformfvEXT                                       := dglGetProcAddress('glGetnUniformfvEXT');
6112   glGetnUniformivEXT                                       := dglGetProcAddress('glGetnUniformivEXT');
6113 end;
6114
6115 procedure Read_GL_EXT_separate_shader_objects;
6116 begin
6117   glActiveShaderProgramEXT                                 := dglGetProcAddress('glActiveShaderProgramEXT');
6118   glBindProgramPipelineEXT                                 := dglGetProcAddress('glBindProgramPipelineEXT');
6119   glCreateShaderProgramvEXT                                := dglGetProcAddress('glCreateShaderProgramvEXT');
6120   glDeleteProgramPipelinesEXT                              := dglGetProcAddress('glDeleteProgramPipelinesEXT');
6121   glGenProgramPipelinesEXT                                 := dglGetProcAddress('glGenProgramPipelinesEXT');
6122   glGetProgramPipelineInfoLogEXT                           := dglGetProcAddress('glGetProgramPipelineInfoLogEXT');
6123   glGetProgramPipelineivEXT                                := dglGetProcAddress('glGetProgramPipelineivEXT');
6124   glIsProgramPipelineEXT                                   := dglGetProcAddress('glIsProgramPipelineEXT');
6125   glProgramParameteriEXT                                   := dglGetProcAddress('glProgramParameteriEXT');
6126   glProgramUniform1fEXT                                    := dglGetProcAddress('glProgramUniform1fEXT');
6127   glProgramUniform1fvEXT                                   := dglGetProcAddress('glProgramUniform1fvEXT');
6128   glProgramUniform1iEXT                                    := dglGetProcAddress('glProgramUniform1iEXT');
6129   glProgramUniform1ivEXT                                   := dglGetProcAddress('glProgramUniform1ivEXT');
6130   glProgramUniform2fEXT                                    := dglGetProcAddress('glProgramUniform2fEXT');
6131   glProgramUniform2fvEXT                                   := dglGetProcAddress('glProgramUniform2fvEXT');
6132   glProgramUniform2iEXT                                    := dglGetProcAddress('glProgramUniform2iEXT');
6133   glProgramUniform2ivEXT                                   := dglGetProcAddress('glProgramUniform2ivEXT');
6134   glProgramUniform3fEXT                                    := dglGetProcAddress('glProgramUniform3fEXT');
6135   glProgramUniform3fvEXT                                   := dglGetProcAddress('glProgramUniform3fvEXT');
6136   glProgramUniform3iEXT                                    := dglGetProcAddress('glProgramUniform3iEXT');
6137   glProgramUniform3ivEXT                                   := dglGetProcAddress('glProgramUniform3ivEXT');
6138   glProgramUniform4fEXT                                    := dglGetProcAddress('glProgramUniform4fEXT');
6139   glProgramUniform4fvEXT                                   := dglGetProcAddress('glProgramUniform4fvEXT');
6140   glProgramUniform4iEXT                                    := dglGetProcAddress('glProgramUniform4iEXT');
6141   glProgramUniform4ivEXT                                   := dglGetProcAddress('glProgramUniform4ivEXT');
6142   glProgramUniformMatrix2fvEXT                             := dglGetProcAddress('glProgramUniformMatrix2fvEXT');
6143   glProgramUniformMatrix3fvEXT                             := dglGetProcAddress('glProgramUniformMatrix3fvEXT');
6144   glProgramUniformMatrix4fvEXT                             := dglGetProcAddress('glProgramUniformMatrix4fvEXT');
6145   glUseProgramStagesEXT                                    := dglGetProcAddress('glUseProgramStagesEXT');
6146   glValidateProgramPipelineEXT                             := dglGetProcAddress('glValidateProgramPipelineEXT');
6147   glProgramUniform1uiEXT                                   := dglGetProcAddress('glProgramUniform1uiEXT');
6148   glProgramUniform2uiEXT                                   := dglGetProcAddress('glProgramUniform2uiEXT');
6149   glProgramUniform3uiEXT                                   := dglGetProcAddress('glProgramUniform3uiEXT');
6150   glProgramUniform4uiEXT                                   := dglGetProcAddress('glProgramUniform4uiEXT');
6151   glProgramUniform1uivEXT                                  := dglGetProcAddress('glProgramUniform1uivEXT');
6152   glProgramUniform2uivEXT                                  := dglGetProcAddress('glProgramUniform2uivEXT');
6153   glProgramUniform3uivEXT                                  := dglGetProcAddress('glProgramUniform3uivEXT');
6154   glProgramUniform4uivEXT                                  := dglGetProcAddress('glProgramUniform4uivEXT');
6155   glProgramUniformMatrix2x3fvEXT                           := dglGetProcAddress('glProgramUniformMatrix2x3fvEXT');
6156   glProgramUniformMatrix3x2fvEXT                           := dglGetProcAddress('glProgramUniformMatrix3x2fvEXT');
6157   glProgramUniformMatrix2x4fvEXT                           := dglGetProcAddress('glProgramUniformMatrix2x4fvEXT');
6158   glProgramUniformMatrix4x2fvEXT                           := dglGetProcAddress('glProgramUniformMatrix4x2fvEXT');
6159   glProgramUniformMatrix3x4fvEXT                           := dglGetProcAddress('glProgramUniformMatrix3x4fvEXT');
6160   glProgramUniformMatrix4x3fvEXT                           := dglGetProcAddress('glProgramUniformMatrix4x3fvEXT');
6161 end;
6162
6163 procedure Read_GL_EXT_tessellation_shader;
6164 begin
6165   glPatchParameteriEXT                                     := dglGetProcAddress('glPatchParameteriEXT');
6166 end;
6167
6168 procedure Read_GL_EXT_texture_border_clamp;
6169 begin
6170   glTexParameterIivEXT                                     := dglGetProcAddress('glTexParameterIivEXT');
6171   glTexParameterIuivEXT                                    := dglGetProcAddress('glTexParameterIuivEXT');
6172   glGetTexParameterIivEXT                                  := dglGetProcAddress('glGetTexParameterIivEXT');
6173   glGetTexParameterIuivEXT                                 := dglGetProcAddress('glGetTexParameterIuivEXT');
6174   glSamplerParameterIivEXT                                 := dglGetProcAddress('glSamplerParameterIivEXT');
6175   glSamplerParameterIuivEXT                                := dglGetProcAddress('glSamplerParameterIuivEXT');
6176   glGetSamplerParameterIivEXT                              := dglGetProcAddress('glGetSamplerParameterIivEXT');
6177   glGetSamplerParameterIuivEXT                             := dglGetProcAddress('glGetSamplerParameterIuivEXT');
6178 end;
6179
6180 procedure Read_GL_EXT_texture_buffer;
6181 begin
6182   glTexBufferEXT                                           := dglGetProcAddress('glTexBufferEXT');
6183   glTexBufferRangeEXT                                      := dglGetProcAddress('glTexBufferRangeEXT');
6184 end;
6185
6186 procedure Read_GL_EXT_texture_storage;
6187 begin
6188   glTexStorage1DEXT                                        := dglGetProcAddress('glTexStorage1DEXT');
6189   glTexStorage2DEXT                                        := dglGetProcAddress('glTexStorage2DEXT');
6190   glTexStorage3DEXT                                        := dglGetProcAddress('glTexStorage3DEXT');
6191   glTextureStorage1DEXT                                    := dglGetProcAddress('glTextureStorage1DEXT');
6192   glTextureStorage2DEXT                                    := dglGetProcAddress('glTextureStorage2DEXT');
6193   glTextureStorage3DEXT                                    := dglGetProcAddress('glTextureStorage3DEXT');
6194 end;
6195
6196 procedure Read_GL_EXT_texture_view;
6197 begin
6198   glTextureViewEXT                                         := dglGetProcAddress('glTextureViewEXT');
6199 end;
6200
6201 procedure Read_GL_IMG_multisampled_render_to_texture;
6202 begin
6203   glRenderbufferStorageMultisampleIMG                      := dglGetProcAddress('glRenderbufferStorageMultisampleIMG');
6204   glFramebufferTexture2DMultisampleIMG                     := dglGetProcAddress('glFramebufferTexture2DMultisampleIMG');
6205 end;
6206
6207 procedure Read_GL_INTEL_performance_query;
6208 begin
6209   glBeginPerfQueryINTEL                                    := dglGetProcAddress('glBeginPerfQueryINTEL');
6210   glCreatePerfQueryINTEL                                   := dglGetProcAddress('glCreatePerfQueryINTEL');
6211   glDeletePerfQueryINTEL                                   := dglGetProcAddress('glDeletePerfQueryINTEL');
6212   glEndPerfQueryINTEL                                      := dglGetProcAddress('glEndPerfQueryINTEL');
6213   glGetFirstPerfQueryIdINTEL                               := dglGetProcAddress('glGetFirstPerfQueryIdINTEL');
6214   glGetNextPerfQueryIdINTEL                                := dglGetProcAddress('glGetNextPerfQueryIdINTEL');
6215   glGetPerfCounterInfoINTEL                                := dglGetProcAddress('glGetPerfCounterInfoINTEL');
6216   glGetPerfQueryDataINTEL                                  := dglGetProcAddress('glGetPerfQueryDataINTEL');
6217   glGetPerfQueryIdByNameINTEL                              := dglGetProcAddress('glGetPerfQueryIdByNameINTEL');
6218   glGetPerfQueryInfoINTEL                                  := dglGetProcAddress('glGetPerfQueryInfoINTEL');
6219 end;
6220
6221 procedure Read_GL_NV_bindless_texture;
6222 begin
6223   glGetTextureHandleNV                                     := dglGetProcAddress('glGetTextureHandleNV');
6224   glGetTextureSamplerHandleNV                              := dglGetProcAddress('glGetTextureSamplerHandleNV');
6225   glMakeTextureHandleResidentNV                            := dglGetProcAddress('glMakeTextureHandleResidentNV');
6226   glMakeTextureHandleNonResidentNV                         := dglGetProcAddress('glMakeTextureHandleNonResidentNV');
6227   glGetImageHandleNV                                       := dglGetProcAddress('glGetImageHandleNV');
6228   glMakeImageHandleResidentNV                              := dglGetProcAddress('glMakeImageHandleResidentNV');
6229   glMakeImageHandleNonResidentNV                           := dglGetProcAddress('glMakeImageHandleNonResidentNV');
6230   glUniformHandleui64NV                                    := dglGetProcAddress('glUniformHandleui64NV');
6231   glUniformHandleui64vNV                                   := dglGetProcAddress('glUniformHandleui64vNV');
6232   glProgramUniformHandleui64NV                             := dglGetProcAddress('glProgramUniformHandleui64NV');
6233   glProgramUniformHandleui64vNV                            := dglGetProcAddress('glProgramUniformHandleui64vNV');
6234   glIsTextureHandleResidentNV                              := dglGetProcAddress('glIsTextureHandleResidentNV');
6235   glIsImageHandleResidentNV                                := dglGetProcAddress('glIsImageHandleResidentNV');
6236 end;
6237
6238 procedure Read_GL_NV_blend_equation_advanced;
6239 begin
6240   glBlendParameteriNV                                      := dglGetProcAddress('glBlendParameteriNV');
6241   glBlendBarrierNV                                         := dglGetProcAddress('glBlendBarrierNV');
6242 end;
6243
6244 procedure Read_GL_NV_conditional_render;
6245 begin
6246   glBeginConditionalRenderNV                               := dglGetProcAddress('glBeginConditionalRenderNV');
6247   glEndConditionalRenderNV                                 := dglGetProcAddress('glEndConditionalRenderNV');
6248 end;
6249
6250 procedure Read_GL_NV_copy_buffer;
6251 begin
6252   glCopyBufferSubDataNV                                    := dglGetProcAddress('glCopyBufferSubDataNV');
6253 end;
6254
6255 procedure Read_GL_NV_coverage_sample;
6256 begin
6257   glCoverageMaskNV                                         := dglGetProcAddress('glCoverageMaskNV');
6258   glCoverageOperationNV                                    := dglGetProcAddress('glCoverageOperationNV');
6259 end;
6260
6261 procedure Read_GL_NV_draw_buffers;
6262 begin
6263   glDrawBuffersNV                                          := dglGetProcAddress('glDrawBuffersNV');
6264 end;
6265
6266 procedure Read_GL_NV_draw_instanced;
6267 begin
6268   glDrawArraysInstancedNV                                  := dglGetProcAddress('glDrawArraysInstancedNV');
6269   glDrawElementsInstancedNV                                := dglGetProcAddress('glDrawElementsInstancedNV');
6270 end;
6271
6272 procedure Read_GL_NV_fence;
6273 begin
6274   glDeleteFencesNV                                         := dglGetProcAddress('glDeleteFencesNV');
6275   glGenFencesNV                                            := dglGetProcAddress('glGenFencesNV');
6276   glIsFenceNV                                              := dglGetProcAddress('glIsFenceNV');
6277   glTestFenceNV                                            := dglGetProcAddress('glTestFenceNV');
6278   glGetFenceivNV                                           := dglGetProcAddress('glGetFenceivNV');
6279   glFinishFenceNV                                          := dglGetProcAddress('glFinishFenceNV');
6280   glSetFenceNV                                             := dglGetProcAddress('glSetFenceNV');
6281 end;
6282
6283 procedure Read_GL_NV_framebuffer_blit;
6284 begin
6285   glBlitFramebufferNV                                      := dglGetProcAddress('glBlitFramebufferNV');
6286 end;
6287
6288 procedure Read_GL_NV_framebuffer_multisample;
6289 begin
6290   glRenderbufferStorageMultisampleNV                       := dglGetProcAddress('glRenderbufferStorageMultisampleNV');
6291 end;
6292
6293 procedure Read_GL_NV_instanced_arrays;
6294 begin
6295   glVertexAttribDivisorNV                                  := dglGetProcAddress('glVertexAttribDivisorNV');
6296 end;
6297
6298 procedure Read_GL_NV_internalformat_sample_query;
6299 begin
6300   glGetInternalformatSampleivNV                            := dglGetProcAddress('glGetInternalformatSampleivNV');
6301 end;
6302
6303 procedure Read_GL_NV_non_square_matrices;
6304 begin
6305   glUniformMatrix2x3fvNV                                   := dglGetProcAddress('glUniformMatrix2x3fvNV');
6306   glUniformMatrix3x2fvNV                                   := dglGetProcAddress('glUniformMatrix3x2fvNV');
6307   glUniformMatrix2x4fvNV                                   := dglGetProcAddress('glUniformMatrix2x4fvNV');
6308   glUniformMatrix4x2fvNV                                   := dglGetProcAddress('glUniformMatrix4x2fvNV');
6309   glUniformMatrix3x4fvNV                                   := dglGetProcAddress('glUniformMatrix3x4fvNV');
6310   glUniformMatrix4x3fvNV                                   := dglGetProcAddress('glUniformMatrix4x3fvNV');
6311 end;
6312
6313 procedure Read_GL_NV_path_rendering;
6314 begin
6315   glGenPathsNV                                             := dglGetProcAddress('glGenPathsNV');
6316   glDeletePathsNV                                          := dglGetProcAddress('glDeletePathsNV');
6317   glIsPathNV                                               := dglGetProcAddress('glIsPathNV');
6318   glPathCommandsNV                                         := dglGetProcAddress('glPathCommandsNV');
6319   glPathCoordsNV                                           := dglGetProcAddress('glPathCoordsNV');
6320   glPathSubCommandsNV                                      := dglGetProcAddress('glPathSubCommandsNV');
6321   glPathSubCoordsNV                                        := dglGetProcAddress('glPathSubCoordsNV');
6322   glPathStringNV                                           := dglGetProcAddress('glPathStringNV');
6323   glPathGlyphsNV                                           := dglGetProcAddress('glPathGlyphsNV');
6324   glPathGlyphRangeNV                                       := dglGetProcAddress('glPathGlyphRangeNV');
6325   glWeightPathsNV                                          := dglGetProcAddress('glWeightPathsNV');
6326   glCopyPathNV                                             := dglGetProcAddress('glCopyPathNV');
6327   glInterpolatePathsNV                                     := dglGetProcAddress('glInterpolatePathsNV');
6328   glTransformPathNV                                        := dglGetProcAddress('glTransformPathNV');
6329   glPathParameterivNV                                      := dglGetProcAddress('glPathParameterivNV');
6330   glPathParameteriNV                                       := dglGetProcAddress('glPathParameteriNV');
6331   glPathParameterfvNV                                      := dglGetProcAddress('glPathParameterfvNV');
6332   glPathParameterfNV                                       := dglGetProcAddress('glPathParameterfNV');
6333   glPathDashArrayNV                                        := dglGetProcAddress('glPathDashArrayNV');
6334   glPathStencilFuncNV                                      := dglGetProcAddress('glPathStencilFuncNV');
6335   glPathStencilDepthOffsetNV                               := dglGetProcAddress('glPathStencilDepthOffsetNV');
6336   glStencilFillPathNV                                      := dglGetProcAddress('glStencilFillPathNV');
6337   glStencilStrokePathNV                                    := dglGetProcAddress('glStencilStrokePathNV');
6338   glStencilFillPathInstancedNV                             := dglGetProcAddress('glStencilFillPathInstancedNV');
6339   glStencilStrokePathInstancedNV                           := dglGetProcAddress('glStencilStrokePathInstancedNV');
6340   glPathCoverDepthFuncNV                                   := dglGetProcAddress('glPathCoverDepthFuncNV');
6341   glCoverFillPathNV                                        := dglGetProcAddress('glCoverFillPathNV');
6342   glCoverStrokePathNV                                      := dglGetProcAddress('glCoverStrokePathNV');
6343   glCoverFillPathInstancedNV                               := dglGetProcAddress('glCoverFillPathInstancedNV');
6344   glCoverStrokePathInstancedNV                             := dglGetProcAddress('glCoverStrokePathInstancedNV');
6345   glGetPathParameterivNV                                   := dglGetProcAddress('glGetPathParameterivNV');
6346   glGetPathParameterfvNV                                   := dglGetProcAddress('glGetPathParameterfvNV');
6347   glGetPathCommandsNV                                      := dglGetProcAddress('glGetPathCommandsNV');
6348   glGetPathCoordsNV                                        := dglGetProcAddress('glGetPathCoordsNV');
6349   glGetPathDashArrayNV                                     := dglGetProcAddress('glGetPathDashArrayNV');
6350   glGetPathMetricsNV                                       := dglGetProcAddress('glGetPathMetricsNV');
6351   glGetPathMetricRangeNV                                   := dglGetProcAddress('glGetPathMetricRangeNV');
6352   glGetPathSpacingNV                                       := dglGetProcAddress('glGetPathSpacingNV');
6353   glIsPointInFillPathNV                                    := dglGetProcAddress('glIsPointInFillPathNV');
6354   glIsPointInStrokePathNV                                  := dglGetProcAddress('glIsPointInStrokePathNV');
6355   glGetPathLengthNV                                        := dglGetProcAddress('glGetPathLengthNV');
6356   glPointAlongPathNV                                       := dglGetProcAddress('glPointAlongPathNV');
6357   glMatrixLoad3x2fNV                                       := dglGetProcAddress('glMatrixLoad3x2fNV');
6358   glMatrixLoad3x3fNV                                       := dglGetProcAddress('glMatrixLoad3x3fNV');
6359   glMatrixLoadTranspose3x3fNV                              := dglGetProcAddress('glMatrixLoadTranspose3x3fNV');
6360   glMatrixMult3x2fNV                                       := dglGetProcAddress('glMatrixMult3x2fNV');
6361   glMatrixMult3x3fNV                                       := dglGetProcAddress('glMatrixMult3x3fNV');
6362   glMatrixMultTranspose3x3fNV                              := dglGetProcAddress('glMatrixMultTranspose3x3fNV');
6363   glStencilThenCoverFillPathNV                             := dglGetProcAddress('glStencilThenCoverFillPathNV');
6364   glStencilThenCoverStrokePathNV                           := dglGetProcAddress('glStencilThenCoverStrokePathNV');
6365   glStencilThenCoverFillPathInstancedNV                    := dglGetProcAddress('glStencilThenCoverFillPathInstancedNV');
6366   glStencilThenCoverStrokePathInstancedNV                  := dglGetProcAddress('glStencilThenCoverStrokePathInstancedNV');
6367   glPathGlyphIndexRangeNV                                  := dglGetProcAddress('glPathGlyphIndexRangeNV');
6368   glPathGlyphIndexArrayNV                                  := dglGetProcAddress('glPathGlyphIndexArrayNV');
6369   glPathMemoryGlyphIndexArrayNV                            := dglGetProcAddress('glPathMemoryGlyphIndexArrayNV');
6370   glProgramPathFragmentInputGenNV                          := dglGetProcAddress('glProgramPathFragmentInputGenNV');
6371   glGetProgramResourcefvNV                                 := dglGetProcAddress('glGetProgramResourcefvNV');
6372 end;
6373
6374 procedure Read_GL_NV_read_buffer;
6375 begin
6376   glReadBufferNV                                           := dglGetProcAddress('glReadBufferNV');
6377 end;
6378
6379 procedure Read_GL_NV_viewport_array;
6380 begin
6381   glViewportArrayvNV                                       := dglGetProcAddress('glViewportArrayvNV');
6382   glViewportIndexedfNV                                     := dglGetProcAddress('glViewportIndexedfNV');
6383   glViewportIndexedfvNV                                    := dglGetProcAddress('glViewportIndexedfvNV');
6384   glScissorArrayvNV                                        := dglGetProcAddress('glScissorArrayvNV');
6385   glScissorIndexedNV                                       := dglGetProcAddress('glScissorIndexedNV');
6386   glScissorIndexedvNV                                      := dglGetProcAddress('glScissorIndexedvNV');
6387   glDepthRangeArrayfvNV                                    := dglGetProcAddress('glDepthRangeArrayfvNV');
6388   glDepthRangeIndexedfNV                                   := dglGetProcAddress('glDepthRangeIndexedfNV');
6389   glGetFloati_vNV                                          := dglGetProcAddress('glGetFloati_vNV');
6390   glEnableiNV                                              := dglGetProcAddress('glEnableiNV');
6391   glDisableiNV                                             := dglGetProcAddress('glDisableiNV');
6392   glIsEnablediNV                                           := dglGetProcAddress('glIsEnablediNV');
6393 end;
6394
6395 procedure Read_GL_QCOM_alpha_test;
6396 begin
6397   glAlphaFuncQCOM                                          := dglGetProcAddress('glAlphaFuncQCOM');
6398 end;
6399
6400 procedure Read_GL_QCOM_driver_control;
6401 begin
6402   glGetDriverControlsQCOM                                  := dglGetProcAddress('glGetDriverControlsQCOM');
6403   glGetDriverControlStringQCOM                             := dglGetProcAddress('glGetDriverControlStringQCOM');
6404   glEnableDriverControlQCOM                                := dglGetProcAddress('glEnableDriverControlQCOM');
6405   glDisableDriverControlQCOM                               := dglGetProcAddress('glDisableDriverControlQCOM');
6406 end;
6407
6408 procedure Read_GL_QCOM_extended_get;
6409 begin
6410   glExtGetTexturesQCOM                                     := dglGetProcAddress('glExtGetTexturesQCOM');
6411   glExtGetBuffersQCOM                                      := dglGetProcAddress('glExtGetBuffersQCOM');
6412   glExtGetRenderbuffersQCOM                                := dglGetProcAddress('glExtGetRenderbuffersQCOM');
6413   glExtGetFramebuffersQCOM                                 := dglGetProcAddress('glExtGetFramebuffersQCOM');
6414   glExtGetTexLevelParameterivQCOM                          := dglGetProcAddress('glExtGetTexLevelParameterivQCOM');
6415   glExtTexObjectStateOverrideiQCOM                         := dglGetProcAddress('glExtTexObjectStateOverrideiQCOM');
6416   glExtGetTexSubImageQCOM                                  := dglGetProcAddress('glExtGetTexSubImageQCOM');
6417   glExtGetBufferPointervQCOM                               := dglGetProcAddress('glExtGetBufferPointervQCOM');
6418 end;
6419
6420 procedure Read_GL_QCOM_extended_get2;
6421 begin
6422   glExtGetShadersQCOM                                      := dglGetProcAddress('glExtGetShadersQCOM');
6423   glExtGetProgramsQCOM                                     := dglGetProcAddress('glExtGetProgramsQCOM');
6424   glExtIsProgramBinaryQCOM                                 := dglGetProcAddress('glExtIsProgramBinaryQCOM');
6425   glExtGetProgramBinarySourceQCOM                          := dglGetProcAddress('glExtGetProgramBinarySourceQCOM');
6426 end;
6427
6428 procedure Read_GL_QCOM_tiled_rendering;
6429 begin
6430   glStartTilingQCOM                                        := dglGetProcAddress('glStartTilingQCOM');
6431   glEndTilingQCOM                                          := dglGetProcAddress('glEndTilingQCOM');
6432 end;
6433
6434 constructor EeglError.Create(const msg: string; const aErrorCode: EGLint);
6435 begin
6436   inherited Create(msg);
6437   ErrorCode := aErrorCode;
6438 end;
6439
6440 end.