ebbadcabf1885e02aadccb049ea21ec5dce6c7c5
[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   GLboolean   = ByteBool;
88   GLsizei     = Integer;
89   GLfloat     = Single;
90   GLdouble    = Double;
91
92   { Pointers }
93   PGLbyte     = ^GLbyte;
94   PGLclampf   = ^GLclampf;
95   PGLfixed    = ^GLfixed;
96   PGLshort    = ^GLshort;
97   PGLubyte    = ^GLubyte;
98   PGLushort   = ^GLushort;
99   PGLvoid     = Pointer;
100   PPGLvoid    = ^PGLvoid;
101   PGLint64    = ^GLint64;
102   PGLuint64   = ^GLuint64;
103   PGLenum     = ^GLenum;
104   PGLuint     = ^GLuint;
105   PGLchar     = ^GLchar;
106   PPGLchar    = ^PGLChar;
107   PGLbitfield = ^GLbitfield;
108   PGLint      = ^GLint;
109   PGLboolean  = ^GLboolean;
110   PGLsizei    = ^GLsizei;
111   PGLfloat    = ^GLfloat;
112   PGLdouble   = ^GLdouble;
113
114   { Special }
115   GLsync = Pointer;
116
117   { Cutsom }
118   TGLvectorub2 = array[0..1] of GLubyte;
119   TGLvectorub3 = array[0..2] of GLubyte;
120   TGLvectorub4 = array[0..3] of GLubyte;
121
122   TGLvectori2 = array[0..1] of GLint;
123   TGLvectori3 = array[0..2] of GLint;
124   TGLvectori4 = array[0..3] of GLint;
125
126   TGLvectorf2 = array[0..1] of GLfloat;
127   TGLvectorf3 = array[0..2] of GLfloat;
128   TGLvectorf4 = array[0..3] of GLfloat;
129
130   TGLvectord2 = array[0..1] of GLdouble;
131   TGLvectord3 = array[0..2] of GLdouble;
132   TGLvectord4 = array[0..3] of GLdouble;
133
134   TGLvectorp2 = array[0..1] of PGLvoid;
135   TGLvectorp3 = array[0..2] of PGLvoid;
136   TGLvectorp4 = array[0..3] of PGLvoid;
137
138 const
139 { ============================================== OpenGL ES 1.0 ======================================================= }
140 { ClearBufferMask }
141   GL_DEPTH_BUFFER_BIT                               = $00000100;
142   GL_STENCIL_BUFFER_BIT                             = $00000400;
143   GL_COLOR_BUFFER_BIT                               = $00004000;
144
145 { Boolean }
146   GL_FALSE                                          = 0;
147   GL_TRUE                                           = 1;
148
149 { BeginMode }
150   GL_POINTS                                         = $0000;
151   GL_LINES                                          = $0001;
152   GL_LINE_LOOP                                      = $0002;
153   GL_LINE_STRIP                                     = $0003;
154   GL_TRIANGLES                                      = $0004;
155   GL_TRIANGLE_STRIP                                 = $0005;
156   GL_TRIANGLE_FAN                                   = $0006;
157
158 { AlphaFunction }
159   GL_NEVER                                          = $0200;
160   GL_LESS                                           = $0201;
161   GL_EQUAL                                          = $0202;
162   GL_LEQUAL                                         = $0203;
163   GL_GREATER                                        = $0204;
164   GL_NOTEQUAL                                       = $0205;
165   GL_GEQUAL                                         = $0206;
166   GL_ALWAYS                                         = $0207;
167
168 { BlendingFactorDest }
169   GL_ZERO                                           = 0;
170   GL_ONE                                            = 1;
171   GL_SRC_COLOR                                      = $0300;
172   GL_ONE_MINUS_SRC_COLOR                            = $0301;
173   GL_SRC_ALPHA                                      = $0302;
174   GL_ONE_MINUS_SRC_ALPHA                            = $0303;
175   GL_DST_ALPHA                                      = $0304;
176   GL_ONE_MINUS_DST_ALPHA                            = $0305;
177
178 { BlendingFactorSrc }
179 { GL_ZERO }
180 { GL_ONE }
181   GL_DST_COLOR                                      = $0306;
182   GL_ONE_MINUS_DST_COLOR                            = $0307;
183   GL_SRC_ALPHA_SATURATE                             = $0308;
184 { GL_SRC_ALPHA }
185 { GL_ONE_MINUS_SRC_ALPHA }
186 { GL_DST_ALPHA }
187 { GL_ONE_MINUS_DST_ALPHA }
188
189 { ClipPlaneName }
190   GL_CLIP_PLANE0                                    = $3000;
191   GL_CLIP_PLANE1                                    = $3001;
192   GL_CLIP_PLANE2                                    = $3002;
193   GL_CLIP_PLANE3                                    = $3003;
194   GL_CLIP_PLANE4                                    = $3004;
195   GL_CLIP_PLANE5                                    = $3005;
196
197 { ColorMaterialFace }
198 { GL_FRONT_AND_BACK }
199
200 { ColorMaterialParameter }
201 { GL_AMBIENT_AND_DIFFUSE }
202
203 { ColorPointerType }
204 { GL_UNSIGNED_BYTE }
205 { GL_FLOAT }
206 { GL_FIXED }
207
208 { CullFaceMode }
209   GL_FRONT                                          = $0404;
210   GL_BACK                                           = $0405;
211   GL_FRONT_AND_BACK                                 = $0408;
212
213 { DepthFunction }
214 { GL_NEVER }
215 { GL_LESS }
216 { GL_EQUAL }
217 { GL_LEQUAL }
218 { GL_GREATER }
219 { GL_NOTEQUAL }
220 { GL_GEQUAL }
221 { GL_ALWAYS }
222
223 { EnableCap }
224   GL_FOG                                            = $0B60;
225   GL_LIGHTING                                       = $0B50;
226   GL_TEXTURE_2D                                     = $0DE1;
227   GL_CULL_FACE                                      = $0B44;
228   GL_ALPHA_TEST                                     = $0BC0;
229   GL_BLEND                                          = $0BE2;
230   GL_COLOR_LOGIC_OP                                 = $0BF2;
231   GL_DITHER                                         = $0BD0;
232   GL_STENCIL_TEST                                   = $0B90;
233   GL_DEPTH_TEST                                     = $0B71;
234 { GL_LIGHT0 }
235 { GL_LIGHT1 }
236 { GL_LIGHT2 }
237 { GL_LIGHT3 }
238 { GL_LIGHT4 }
239 { GL_LIGHT5 }
240 { GL_LIGHT6 }
241 { GL_LIGHT7 }
242   GL_POINT_SMOOTH                                   = $0B10;
243   GL_LINE_SMOOTH                                    = $0B20;
244   GL_SCISSOR_TEST                                   = $0C11;
245   GL_COLOR_MATERIAL                                 = $0B57;
246   GL_NORMALIZE                                      = $0BA1;
247   GL_RESCALE_NORMAL                                 = $803A;
248   GL_POLYGON_OFFSET_FILL                            = $8037;
249   GL_VERTEX_ARRAY                                   = $8074;
250   GL_NORMAL_ARRAY                                   = $8075;
251   GL_COLOR_ARRAY                                    = $8076;
252   GL_TEXTURE_COORD_ARRAY                            = $8078;
253   GL_MULTISAMPLE                                    = $809D;
254   GL_SAMPLE_ALPHA_TO_COVERAGE                       = $809E;
255   GL_SAMPLE_ALPHA_TO_ONE                            = $809F;
256   GL_SAMPLE_COVERAGE                                = $80A0;
257
258 { ErrorCode }
259   GL_NO_ERROR                                       = 0;
260   GL_INVALID_ENUM                                   = $0500;
261   GL_INVALID_VALUE                                  = $0501;
262   GL_INVALID_OPERATION                              = $0502;
263   GL_STACK_OVERFLOW                                 = $0503;
264   GL_STACK_UNDERFLOW                                = $0504;
265   GL_OUT_OF_MEMORY                                  = $0505;
266
267 { FogMode }
268 { GL_LINEAR }
269   GL_EXP                                            = $0800;
270   GL_EXP2                                           = $0801;
271
272 { FogParameter }
273   GL_FOG_DENSITY                                    = $0B62;
274   GL_FOG_START                                      = $0B63;
275   GL_FOG_END                                        = $0B64;
276   GL_FOG_MODE                                       = $0B65;
277   GL_FOG_COLOR                                      = $0B66;
278
279 { FrontFaceDirection }
280   GL_CW                                             = $0900;
281   GL_CCW                                            = $0901;
282
283 { GetPName }
284   GL_CURRENT_COLOR                                  = $0B00;
285   GL_CURRENT_NORMAL                                 = $0B02;
286   GL_CURRENT_TEXTURE_COORDS                         = $0B03;
287   GL_POINT_SIZE                                     = $0B11;
288   GL_POINT_SIZE_MIN                                 = $8126;
289   GL_POINT_SIZE_MAX                                 = $8127;
290   GL_POINT_FADE_THRESHOLD_SIZE                      = $8128;
291   GL_POINT_DISTANCE_ATTENUATION                     = $8129;
292   GL_SMOOTH_POINT_SIZE_RANGE                        = $0B12;
293   GL_LINE_WIDTH                                     = $0B21;
294   GL_SMOOTH_LINE_WIDTH_RANGE                        = $0B22;
295   GL_ALIASED_POINT_SIZE_RANGE                       = $846D;
296   GL_ALIASED_LINE_WIDTH_RANGE                       = $846E;
297   GL_CULL_FACE_MODE                                 = $0B45;
298   GL_FRONT_FACE                                     = $0B46;
299   GL_SHADE_MODEL                                    = $0B54;
300   GL_DEPTH_RANGE                                    = $0B70;
301   GL_DEPTH_WRITEMASK                                = $0B72;
302   GL_DEPTH_CLEAR_VALUE                              = $0B73;
303   GL_DEPTH_FUNC                                     = $0B74;
304   GL_STENCIL_CLEAR_VALUE                            = $0B91;
305   GL_STENCIL_FUNC                                   = $0B92;
306   GL_STENCIL_VALUE_MASK                             = $0B93;
307   GL_STENCIL_FAIL                                   = $0B94;
308   GL_STENCIL_PASS_DEPTH_FAIL                        = $0B95;
309   GL_STENCIL_PASS_DEPTH_PASS                        = $0B96;
310   GL_STENCIL_REF                                    = $0B97;
311   GL_STENCIL_WRITEMASK                              = $0B98;
312   GL_MATRIX_MODE                                    = $0BA0;
313   GL_VIEWPORT                                       = $0BA2;
314   GL_MODELVIEW_STACK_DEPTH                          = $0BA3;
315   GL_PROJECTION_STACK_DEPTH                         = $0BA4;
316   GL_TEXTURE_STACK_DEPTH                            = $0BA5;
317   GL_MODELVIEW_MATRIX                               = $0BA6;
318   GL_PROJECTION_MATRIX                              = $0BA7;
319   GL_TEXTURE_MATRIX                                 = $0BA8;
320   GL_ALPHA_TEST_FUNC                                = $0BC1;
321   GL_ALPHA_TEST_REF                                 = $0BC2;
322   GL_BLEND_DST                                      = $0BE0;
323   GL_BLEND_SRC                                      = $0BE1;
324   GL_LOGIC_OP_MODE                                  = $0BF0;
325   GL_SCISSOR_BOX                                    = $0C10;
326   GL_COLOR_CLEAR_VALUE                              = $0C22;
327   GL_COLOR_WRITEMASK                                = $0C23;
328   GL_UNPACK_ALIGNMENT                               = $0CF5;
329   GL_PACK_ALIGNMENT                                 = $0D05;
330   GL_MAX_LIGHTS                                     = $0D31;
331   GL_MAX_CLIP_PLANES                                = $0D32;
332   GL_MAX_TEXTURE_SIZE                               = $0D33;
333   GL_MAX_MODELVIEW_STACK_DEPTH                      = $0D36;
334   GL_MAX_PROJECTION_STACK_DEPTH                     = $0D38;
335   GL_MAX_TEXTURE_STACK_DEPTH                        = $0D39;
336   GL_MAX_VIEWPORT_DIMS                              = $0D3A;
337   GL_MAX_TEXTURE_UNITS                              = $84E2;
338   GL_SUBPIXEL_BITS                                  = $0D50;
339   GL_RED_BITS                                       = $0D52;
340   GL_GREEN_BITS                                     = $0D53;
341   GL_BLUE_BITS                                      = $0D54;
342   GL_ALPHA_BITS                                     = $0D55;
343   GL_DEPTH_BITS                                     = $0D56;
344   GL_STENCIL_BITS                                   = $0D57;
345   GL_POLYGON_OFFSET_UNITS                           = $2A00;
346   GL_POLYGON_OFFSET_FACTOR                          = $8038;
347   GL_TEXTURE_BINDING_2D                             = $8069;
348   GL_VERTEX_ARRAY_SIZE                              = $807A;
349   GL_VERTEX_ARRAY_TYPE                              = $807B;
350   GL_VERTEX_ARRAY_STRIDE                            = $807C;
351   GL_NORMAL_ARRAY_TYPE                              = $807E;
352   GL_NORMAL_ARRAY_STRIDE                            = $807F;
353   GL_COLOR_ARRAY_SIZE                               = $8081;
354   GL_COLOR_ARRAY_TYPE                               = $8082;
355   GL_COLOR_ARRAY_STRIDE                             = $8083;
356   GL_TEXTURE_COORD_ARRAY_SIZE                       = $8088;
357   GL_TEXTURE_COORD_ARRAY_TYPE                       = $8089;
358   GL_TEXTURE_COORD_ARRAY_STRIDE                     = $808A;
359   GL_VERTEX_ARRAY_POINTER                           = $808E;
360   GL_NORMAL_ARRAY_POINTER                           = $808F;
361   GL_COLOR_ARRAY_POINTER                            = $8090;
362   GL_TEXTURE_COORD_ARRAY_POINTER                    = $8092;
363   GL_SAMPLE_BUFFERS                                 = $80A8;
364   GL_SAMPLES                                        = $80A9;
365   GL_SAMPLE_COVERAGE_VALUE                          = $80AA;
366   GL_SAMPLE_COVERAGE_INVERT                         = $80AB;
367
368 { GetTextureParameter }
369 { GL_TEXTURE_MAG_FILTER }
370 { GL_TEXTURE_MIN_FILTER }
371 { GL_TEXTURE_WRAP_S }
372 { GL_TEXTURE_WRAP_T }
373
374   GL_NUM_COMPRESSED_TEXTURE_FORMATS                 = $86A2;
375   GL_COMPRESSED_TEXTURE_FORMATS                     = $86A3;
376
377 { HintMode }
378   GL_DONT_CARE                                      = $1100;
379   GL_FASTEST                                        = $1101;
380   GL_NICEST                                         = $1102;
381
382 { HintTarget }
383   GL_PERSPECTIVE_CORRECTION_HINT                    = $0C50;
384   GL_POINT_SMOOTH_HINT                              = $0C51;
385   GL_LINE_SMOOTH_HINT                               = $0C52;
386   GL_FOG_HINT                                       = $0C54;
387   GL_GENERATE_MIPMAP_HINT                           = $8192;
388
389 { LightModelParameter }
390   GL_LIGHT_MODEL_AMBIENT                            = $0B53;
391   GL_LIGHT_MODEL_TWO_SIDE                           = $0B52;
392
393 { LightParameter }
394   GL_AMBIENT                                        = $1200;
395   GL_DIFFUSE                                        = $1201;
396   GL_SPECULAR                                       = $1202;
397   GL_POSITION                                       = $1203;
398   GL_SPOT_DIRECTION                                 = $1204;
399   GL_SPOT_EXPONENT                                  = $1205;
400   GL_SPOT_CUTOFF                                    = $1206;
401   GL_CONSTANT_ATTENUATION                           = $1207;
402   GL_LINEAR_ATTENUATION                             = $1208;
403   GL_QUADRATIC_ATTENUATION                          = $1209;
404
405 { DataType }
406   GL_BYTE                                           = $1400;
407   GL_UNSIGNED_BYTE                                  = $1401;
408   GL_SHORT                                          = $1402;
409   GL_UNSIGNED_SHORT                                 = $1403;
410   GL_FLOAT                                          = $1406;
411   GL_FIXED                                          = $140C;
412
413 { LogicOp }
414   GL_CLEAR                                          = $1500;
415   GL_AND                                            = $1501;
416   GL_AND_REVERSE                                    = $1502;
417   GL_COPY                                           = $1503;
418   GL_AND_INVERTED                                   = $1504;
419   GL_NOOP                                           = $1505;
420   GL_XOR                                            = $1506;
421   GL_OR                                             = $1507;
422   GL_NOR                                            = $1508;
423   GL_EQUIV                                          = $1509;
424   GL_INVERT                                         = $150A;
425   GL_OR_REVERSE                                     = $150B;
426   GL_COPY_INVERTED                                  = $150C;
427   GL_OR_INVERTED                                    = $150D;
428   GL_NAND                                           = $150E;
429   GL_SET                                            = $150F;
430
431 { MaterialFace }
432 { GL_FRONT_AND_BACK }
433
434 { MaterialParameter }
435   GL_EMISSION                                       = $1600;
436   GL_SHININESS                                      = $1601;
437   GL_AMBIENT_AND_DIFFUSE                            = $1602;
438 { GL_AMBIENT }
439 { GL_DIFFUSE }
440 { GL_SPECULAR }
441
442 { MatrixMode }
443   GL_MODELVIEW                                      = $1700;
444   GL_PROJECTION                                     = $1701;
445   GL_TEXTURE                                        = $1702;
446
447 { NormalPointerType }
448 { GL_BYTE }
449 { GL_SHORT }
450 { GL_FLOAT }
451 { GL_FIXED }
452
453 { PixelFormat }
454   GL_ALPHA                                          = $1906;
455   GL_RGB                                            = $1907;
456   GL_RGBA                                           = $1908;
457   GL_LUMINANCE                                      = $1909;
458   GL_LUMINANCE_ALPHA                                = $190A;
459
460 { PixelType }
461 { GL_UNSIGNED_BYTE }
462   GL_UNSIGNED_SHORT_4_4_4_4                         = $8033;
463   GL_UNSIGNED_SHORT_5_5_5_1                         = $8034;
464   GL_UNSIGNED_SHORT_5_6_5                           = $8363;
465
466 { ShadingModel }
467   GL_FLAT                                           = $1D00;
468   GL_SMOOTH                                         = $1D01;
469
470 { StencilFunction }
471 { GL_NEVER }
472 { GL_LESS }
473 { GL_EQUAL }
474 { GL_LEQUAL }
475 { GL_GREATER }
476 { GL_NOTEQUAL }
477 { GL_GEQUAL }
478 { GL_ALWAYS }
479
480 { StencilOp }
481 { GL_ZERO }
482   GL_KEEP                                           = $1E00;
483   GL_REPLACE                                        = $1E01;
484   GL_INCR                                           = $1E02;
485   GL_DECR                                           = $1E03;
486 { GL_INVERT }
487
488 { StringName }
489   GL_VENDOR                                         = $1F00;
490   GL_RENDERER                                       = $1F01;
491   GL_VERSION                                        = $1F02;
492   GL_EXTENSIONS                                     = $1F03;
493
494 { TexCoordPointerType }
495 { GL_SHORT }
496 { GL_FLOAT }
497 { GL_FIXED }
498 { GL_BYTE }
499
500 { TextureEnvMode }
501   GL_MODULATE                                       = $2100;
502   GL_DECAL                                          = $2101;
503 { GL_BLEND }
504   GL_ADD                                            = $0104;
505 { GL_REPLACE }
506
507 { TextureEnvParameter }
508   GL_TEXTURE_ENV_MODE                               = $2200;
509   GL_TEXTURE_ENV_COLOR                              = $2201;
510
511 { TextureEnvTarget }
512   GL_TEXTURE_ENV                                    = $2300;
513
514 { TextureMagFilter }
515   GL_NEAREST                                        = $2600;
516   GL_LINEAR                                         = $2601;
517
518 { TextureMinFilter }
519 { GL_NEAREST }
520 { GL_LINEAR }
521   GL_NEAREST_MIPMAP_NEAREST                         = $2700;
522   GL_LINEAR_MIPMAP_NEAREST                          = $2701;
523   GL_NEAREST_MIPMAP_LINEAR                          = $2702;
524   GL_LINEAR_MIPMAP_LINEAR                           = $2703;
525
526 { TextureParameterName }
527   GL_TEXTURE_MAG_FILTER                             = $2800;
528   GL_TEXTURE_MIN_FILTER                             = $2801;
529   GL_TEXTURE_WRAP_S                                 = $2802;
530   GL_TEXTURE_WRAP_T                                 = $2803;
531   GL_GENERATE_MIPMAP                                = $8191;
532
533 { TextureTarget }
534 { GL_TEXTURE_2D }
535
536 { TextureUnit }
537   GL_TEXTURE0                                       = $84C0;
538   GL_TEXTURE1                                       = $84C1;
539   GL_TEXTURE2                                       = $84C2;
540   GL_TEXTURE3                                       = $84C3;
541   GL_TEXTURE4                                       = $84C4;
542   GL_TEXTURE5                                       = $84C5;
543   GL_TEXTURE6                                       = $84C6;
544   GL_TEXTURE7                                       = $84C7;
545   GL_TEXTURE8                                       = $84C8;
546   GL_TEXTURE9                                       = $84C9;
547   GL_TEXTURE10                                      = $84CA;
548   GL_TEXTURE11                                      = $84CB;
549   GL_TEXTURE12                                      = $84CC;
550   GL_TEXTURE13                                      = $84CD;
551   GL_TEXTURE14                                      = $84CE;
552   GL_TEXTURE15                                      = $84CF;
553   GL_TEXTURE16                                      = $84D0;
554   GL_TEXTURE17                                      = $84D1;
555   GL_TEXTURE18                                      = $84D2;
556   GL_TEXTURE19                                      = $84D3;
557   GL_TEXTURE20                                      = $84D4;
558   GL_TEXTURE21                                      = $84D5;
559   GL_TEXTURE22                                      = $84D6;
560   GL_TEXTURE23                                      = $84D7;
561   GL_TEXTURE24                                      = $84D8;
562   GL_TEXTURE25                                      = $84D9;
563   GL_TEXTURE26                                      = $84DA;
564   GL_TEXTURE27                                      = $84DB;
565   GL_TEXTURE28                                      = $84DC;
566   GL_TEXTURE29                                      = $84DD;
567   GL_TEXTURE30                                      = $84DE;
568   GL_TEXTURE31                                      = $84DF;
569   GL_ACTIVE_TEXTURE                                 = $84E0;
570   GL_CLIENT_ACTIVE_TEXTURE                          = $84E1;
571
572 { TextureWrapMode }
573   GL_REPEAT                                         = $2901;
574   GL_CLAMP_TO_EDGE                                  = $812F;
575
576 { VertexPointerType }
577 { GL_SHORT }
578 { GL_FLOAT }
579 { GL_FIXED }
580 { GL_BYTE }
581
582 { LightName }
583   GL_LIGHT0                                         = $4000;
584   GL_LIGHT1                                         = $4001;
585   GL_LIGHT2                                         = $4002;
586   GL_LIGHT3                                         = $4003;
587   GL_LIGHT4                                         = $4004;
588   GL_LIGHT5                                         = $4005;
589   GL_LIGHT6                                         = $4006;
590   GL_LIGHT7                                         = $4007;
591
592 { Buffer Objects }
593   GL_ARRAY_BUFFER                                   = $8892;
594   GL_ELEMENT_ARRAY_BUFFER                           = $8893;
595
596   GL_ARRAY_BUFFER_BINDING                           = $8894;
597   GL_ELEMENT_ARRAY_BUFFER_BINDING                   = $8895;
598   GL_VERTEX_ARRAY_BUFFER_BINDING                    = $8896;
599   GL_NORMAL_ARRAY_BUFFER_BINDING                    = $8897;
600   GL_COLOR_ARRAY_BUFFER_BINDING                     = $8898;
601   GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING             = $889A;
602
603   GL_STATIC_DRAW                                    = $88E4;
604   GL_DYNAMIC_DRAW                                   = $88E8;
605
606   GL_BUFFER_SIZE                                    = $8764;
607   GL_BUFFER_USAGE                                   = $8765;
608
609 { Texture combine + dot3 }
610   GL_SUBTRACT                                       = $84E7;
611   GL_COMBINE                                        = $8570;
612   GL_COMBINE_RGB                                    = $8571;
613   GL_COMBINE_ALPHA                                  = $8572;
614   GL_RGB_SCALE                                      = $8573;
615   GL_ADD_SIGNED                                     = $8574;
616   GL_INTERPOLATE                                    = $8575;
617   GL_CONSTANT                                       = $8576;
618   GL_PRIMARY_COLOR                                  = $8577;
619   GL_PREVIOUS                                       = $8578;
620   GL_OPERAND0_RGB                                   = $8590;
621   GL_OPERAND1_RGB                                   = $8591;
622   GL_OPERAND2_RGB                                   = $8592;
623   GL_OPERAND0_ALPHA                                 = $8598;
624   GL_OPERAND1_ALPHA                                 = $8599;
625   GL_OPERAND2_ALPHA                                 = $859A;
626
627   GL_ALPHA_SCALE                                    = $0D1C;
628
629   GL_SRC0_RGB                                       = $8580;
630   GL_SRC1_RGB                                       = $8581;
631   GL_SRC2_RGB                                       = $8582;
632   GL_SRC0_ALPHA                                     = $8588;
633   GL_SRC1_ALPHA                                     = $8589;
634   GL_SRC2_ALPHA                                     = $858A;
635
636   GL_DOT3_RGB                                       = $86AE;
637   GL_DOT3_RGBA                                      = $86AF;
638
639 { ============================================== OpenGL ES 2.0 ======================================================= }
640 { BlendEquationSeparate }
641   GL_FUNC_ADD                                       = $8006;
642   GL_BLEND_EQUATION                                 = $8009;
643   GL_BLEND_EQUATION_RGB                             = $8009;    // same as BLEND_EQUATION
644   GL_BLEND_EQUATION_ALPHA                           = $883D;
645
646 { BlendSubtract }
647   GL_FUNC_SUBTRACT                                  = $800A;
648   GL_FUNC_REVERSE_SUBTRACT                          = $800B;
649
650 { Separate Blend Functions }
651   GL_BLEND_DST_RGB                                  = $80C8;
652   GL_BLEND_SRC_RGB                                  = $80C9;
653   GL_BLEND_DST_ALPHA                                = $80CA;
654   GL_BLEND_SRC_ALPHA                                = $80CB;
655   GL_CONSTANT_COLOR                                 = $8001;
656   GL_ONE_MINUS_CONSTANT_COLOR                       = $8002;
657   GL_CONSTANT_ALPHA                                 = $8003;
658   GL_ONE_MINUS_CONSTANT_ALPHA                       = $8004;
659   GL_BLEND_COLOR                                    = $8005;
660
661 { Buffer Objects }
662   GL_STREAM_DRAW                                    = $88E0;
663   GL_CURRENT_VERTEX_ATTRIB                          = $8626;
664
665 { GetPName }
666   GL_STENCIL_BACK_FUNC                              = $8800;
667   GL_STENCIL_BACK_FAIL                              = $8801;
668   GL_STENCIL_BACK_PASS_DEPTH_FAIL                   = $8802;
669   GL_STENCIL_BACK_PASS_DEPTH_PASS                   = $8803;
670   GL_STENCIL_BACK_REF                               = $8CA3;
671   GL_STENCIL_BACK_VALUE_MASK                        = $8CA4;
672   GL_STENCIL_BACK_WRITEMASK                         = $8CA5;
673
674 { DataType }
675   GL_INT                                            = $1404;
676   GL_UNSIGNED_INT                                   = $1405;
677
678 { PixelFormat }
679   GL_DEPTH_COMPONENT                                = $1902;
680
681 { Shaders }
682   GL_FRAGMENT_SHADER                                = $8B30;
683   GL_VERTEX_SHADER                                  = $8B31;
684   GL_MAX_VERTEX_ATTRIBS                             = $8869;
685   GL_MAX_VERTEX_UNIFORM_VECTORS                     = $8DFB;
686   GL_MAX_VARYING_VECTORS                            = $8DFC;
687   GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS               = $8B4D;
688   GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS                 = $8B4C;
689   GL_MAX_TEXTURE_IMAGE_UNITS                        = $8872;
690   GL_MAX_FRAGMENT_UNIFORM_VECTORS                   = $8DFD;
691   GL_SHADER_TYPE                                    = $8B4F;
692   GL_DELETE_STATUS                                  = $8B80;
693   GL_LINK_STATUS                                    = $8B82;
694   GL_VALIDATE_STATUS                                = $8B83;
695   GL_ATTACHED_SHADERS                               = $8B85;
696   GL_ACTIVE_UNIFORMS                                = $8B86;
697   GL_ACTIVE_UNIFORM_MAX_LENGTH                      = $8B87;
698   GL_ACTIVE_ATTRIBUTES                              = $8B89;
699   GL_ACTIVE_ATTRIBUTE_MAX_LENGTH                    = $8B8A;
700   GL_SHADING_LANGUAGE_VERSION                       = $8B8C;
701   GL_CURRENT_PROGRAM                                = $8B8D;
702
703 { StencilOp }
704   GL_INCR_WRAP                                      = $8507;
705   GL_DECR_WRAP                                      = $8508;
706
707 { TextureTarget }
708   GL_TEXTURE_CUBE_MAP                               = $8513;
709   GL_TEXTURE_BINDING_CUBE_MAP                       = $8514;
710   GL_TEXTURE_CUBE_MAP_POSITIVE_X                    = $8515;
711   GL_TEXTURE_CUBE_MAP_NEGATIVE_X                    = $8516;
712   GL_TEXTURE_CUBE_MAP_POSITIVE_Y                    = $8517;
713   GL_TEXTURE_CUBE_MAP_NEGATIVE_Y                    = $8518;
714   GL_TEXTURE_CUBE_MAP_POSITIVE_Z                    = $8519;
715   GL_TEXTURE_CUBE_MAP_NEGATIVE_Z                    = $851A;
716   GL_MAX_CUBE_MAP_TEXTURE_SIZE                      = $851C;
717
718 { TextureWrapMode }
719   GL_MIRRORED_REPEAT                                = $8370;
720
721 { Uniform Types }
722   GL_FLOAT_VEC2                                     = $8B50;
723   GL_FLOAT_VEC3                                     = $8B51;
724   GL_FLOAT_VEC4                                     = $8B52;
725   GL_INT_VEC2                                       = $8B53;
726   GL_INT_VEC3                                       = $8B54;
727   GL_INT_VEC4                                       = $8B55;
728   GL_BOOL                                           = $8B56;
729   GL_BOOL_VEC2                                      = $8B57;
730   GL_BOOL_VEC3                                      = $8B58;
731   GL_BOOL_VEC4                                      = $8B59;
732   GL_FLOAT_MAT2                                     = $8B5A;
733   GL_FLOAT_MAT3                                     = $8B5B;
734   GL_FLOAT_MAT4                                     = $8B5C;
735   GL_SAMPLER_2D                                     = $8B5E;
736   GL_SAMPLER_CUBE                                   = $8B60;
737
738 { Vertex Arrays }
739   GL_VERTEX_ATTRIB_ARRAY_ENABLED                    = $8622;
740   GL_VERTEX_ATTRIB_ARRAY_SIZE                       = $8623;
741   GL_VERTEX_ATTRIB_ARRAY_STRIDE                     = $8624;
742   GL_VERTEX_ATTRIB_ARRAY_TYPE                       = $8625;
743   GL_VERTEX_ATTRIB_ARRAY_NORMALIZED                 = $886A;
744   GL_VERTEX_ATTRIB_ARRAY_POINTER                    = $8645;
745   GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING             = $889F;
746
747 { Read Format }
748   GL_IMPLEMENTATION_COLOR_READ_TYPE                 = $8B9A;
749   GL_IMPLEMENTATION_COLOR_READ_FORMAT               = $8B9B;
750
751 { Shader Source }
752   GL_COMPILE_STATUS                                 = $8B81;
753   GL_INFO_LOG_LENGTH                                = $8B84;
754   GL_SHADER_SOURCE_LENGTH                           = $8B88;
755   GL_SHADER_COMPILER                                = $8DFA;
756
757 { Shader Binary }
758   GL_SHADER_BINARY_FORMATS                          = $8DF8;
759   GL_NUM_SHADER_BINARY_FORMATS                      = $8DF9;
760
761 { Shader Precision-Specified Types }
762   GL_LOW_FLOAT                                      = $8DF0;
763   GL_MEDIUM_FLOAT                                   = $8DF1;
764   GL_HIGH_FLOAT                                     = $8DF2;
765   GL_LOW_INT                                        = $8DF3;
766   GL_MEDIUM_INT                                     = $8DF4;
767   GL_HIGH_INT                                       = $8DF5;
768
769 { Framebuffer Object. }
770   GL_FRAMEBUFFER                                    = $8D40;
771   GL_RENDERBUFFER                                   = $8D41;
772
773   GL_RGBA4                                          = $8056;
774   GL_RGB5_A1                                        = $8057;
775   GL_RGB565                                         = $8D62;
776   GL_DEPTH_COMPONENT16                              = $81A5;
777   GL_STENCIL_INDEX                                  = $1901;
778   GL_STENCIL_INDEX8                                 = $8D48;
779
780   GL_RENDERBUFFER_WIDTH                             = $8D42;
781   GL_RENDERBUFFER_HEIGHT                            = $8D43;
782   GL_RENDERBUFFER_INTERNAL_FORMAT                   = $8D44;
783   GL_RENDERBUFFER_RED_SIZE                          = $8D50;
784   GL_RENDERBUFFER_GREEN_SIZE                        = $8D51;
785   GL_RENDERBUFFER_BLUE_SIZE                         = $8D52;
786   GL_RENDERBUFFER_ALPHA_SIZE                        = $8D53;
787   GL_RENDERBUFFER_DEPTH_SIZE                        = $8D54;
788   GL_RENDERBUFFER_STENCIL_SIZE                      = $8D55;
789
790   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE             = $8CD0;
791   GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME             = $8CD1;
792   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL           = $8CD2;
793   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE   = $8CD3;
794
795   GL_COLOR_ATTACHMENT0                              = $8CE0;
796   GL_DEPTH_ATTACHMENT                               = $8D00;
797   GL_STENCIL_ATTACHMENT                             = $8D20;
798
799   GL_NONE                                           = 0;
800
801   GL_FRAMEBUFFER_COMPLETE                           = $8CD5;
802   GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT              = $8CD6;
803   GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT      = $8CD7;
804   GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS              = $8CD9;
805   GL_FRAMEBUFFER_UNSUPPORTED                        = $8CDD;
806
807   GL_FRAMEBUFFER_BINDING                            = $8CA6;
808   GL_RENDERBUFFER_BINDING                           = $8CA7;
809   GL_MAX_RENDERBUFFER_SIZE                          = $84E8;
810
811   GL_INVALID_FRAMEBUFFER_OPERATION                  = $0506;
812
813 { ============================================== OpenGL ES 3.0 ======================================================= }
814   GL_READ_BUFFER                                    = $0C02;
815   GL_UNPACK_ROW_LENGTH                              = $0CF2;
816   GL_UNPACK_SKIP_ROWS                               = $0CF3;
817   GL_UNPACK_SKIP_PIXELS                             = $0CF4;
818   GL_PACK_ROW_LENGTH                                = $0D02;
819   GL_PACK_SKIP_ROWS                                 = $0D03;
820   GL_PACK_SKIP_PIXELS                               = $0D04;
821   GL_COLOR                                          = $1800;
822   GL_DEPTH                                          = $1801;
823   GL_STENCIL                                        = $1802;
824   GL_RED                                            = $1903;
825   GL_RGB8                                           = $8051;
826   GL_RGBA8                                          = $8058;
827   GL_RGB10_A2                                       = $8059;
828   GL_TEXTURE_BINDING_3D                             = $806A;
829   GL_UNPACK_SKIP_IMAGES                             = $806D;
830   GL_UNPACK_IMAGE_HEIGHT                            = $806E;
831   GL_TEXTURE_3D                                     = $806F;
832   GL_TEXTURE_WRAP_R                                 = $8072;
833   GL_MAX_3D_TEXTURE_SIZE                            = $8073;
834   GL_UNSIGNED_INT_2_10_10_10_REV                    = $8368;
835   GL_MAX_ELEMENTS_VERTICES                          = $80E8;
836   GL_MAX_ELEMENTS_INDICES                           = $80E9;
837   GL_TEXTURE_MIN_LOD                                = $813A;
838   GL_TEXTURE_MAX_LOD                                = $813B;
839   GL_TEXTURE_BASE_LEVEL                             = $813C;
840   GL_TEXTURE_MAX_LEVEL                              = $813D;
841   GL_MIN                                            = $8007;
842   GL_MAX                                            = $8008;
843   GL_DEPTH_COMPONENT24                              = $81A6;
844   GL_MAX_TEXTURE_LOD_BIAS                           = $84FD;
845   GL_TEXTURE_COMPARE_MODE                           = $884C;
846   GL_TEXTURE_COMPARE_FUNC                           = $884D;
847   GL_CURRENT_QUERY                                  = $8865;
848   GL_QUERY_RESULT                                   = $8866;
849   GL_QUERY_RESULT_AVAILABLE                         = $8867;
850   GL_BUFFER_MAPPED                                  = $88BC;
851   GL_BUFFER_MAP_POINTER                             = $88BD;
852   GL_STREAM_READ                                    = $88E1;
853   GL_STREAM_COPY                                    = $88E2;
854   GL_STATIC_READ                                    = $88E5;
855   GL_STATIC_COPY                                    = $88E6;
856   GL_DYNAMIC_READ                                   = $88E9;
857   GL_DYNAMIC_COPY                                   = $88EA;
858   GL_MAX_DRAW_BUFFERS                               = $8824;
859   GL_DRAW_BUFFER0                                   = $8825;
860   GL_DRAW_BUFFER1                                   = $8826;
861   GL_DRAW_BUFFER2                                   = $8827;
862   GL_DRAW_BUFFER3                                   = $8828;
863   GL_DRAW_BUFFER4                                   = $8829;
864   GL_DRAW_BUFFER5                                   = $882A;
865   GL_DRAW_BUFFER6                                   = $882B;
866   GL_DRAW_BUFFER7                                   = $882C;
867   GL_DRAW_BUFFER8                                   = $882D;
868   GL_DRAW_BUFFER9                                   = $882E;
869   GL_DRAW_BUFFER10                                  = $882F;
870   GL_DRAW_BUFFER11                                  = $8830;
871   GL_DRAW_BUFFER12                                  = $8831;
872   GL_DRAW_BUFFER13                                  = $8832;
873   GL_DRAW_BUFFER14                                  = $8833;
874   GL_DRAW_BUFFER15                                  = $8834;
875   GL_MAX_FRAGMENT_UNIFORM_COMPONENTS                = $8B49;
876   GL_MAX_VERTEX_UNIFORM_COMPONENTS                  = $8B4A;
877   GL_SAMPLER_3D                                     = $8B5F;
878   GL_SAMPLER_2D_SHADOW                              = $8B62;
879   GL_FRAGMENT_SHADER_DERIVATIVE_HINT                = $8B8B;
880   GL_PIXEL_PACK_BUFFER                              = $88EB;
881   GL_PIXEL_UNPACK_BUFFER                            = $88EC;
882   GL_PIXEL_PACK_BUFFER_BINDING                      = $88ED;
883   GL_PIXEL_UNPACK_BUFFER_BINDING                    = $88EF;
884   GL_FLOAT_MAT2x3                                   = $8B65;
885   GL_FLOAT_MAT2x4                                   = $8B66;
886   GL_FLOAT_MAT3x2                                   = $8B67;
887   GL_FLOAT_MAT3x4                                   = $8B68;
888   GL_FLOAT_MAT4x2                                   = $8B69;
889   GL_FLOAT_MAT4x3                                   = $8B6A;
890   GL_SRGB                                           = $8C40;
891   GL_SRGB8                                          = $8C41;
892   GL_SRGB8_ALPHA8                                   = $8C43;
893   GL_COMPARE_REF_TO_TEXTURE                         = $884E;
894   GL_MAJOR_VERSION                                  = $821B;
895   GL_MINOR_VERSION                                  = $821C;
896   GL_NUM_EXTENSIONS                                 = $821D;
897   GL_RGBA32F                                        = $8814;
898   GL_RGB32F                                         = $8815;
899   GL_RGBA16F                                        = $881A;
900   GL_RGB16F                                         = $881B;
901   GL_VERTEX_ATTRIB_ARRAY_INTEGER                    = $88FD;
902   GL_MAX_ARRAY_TEXTURE_LAYERS                       = $88FF;
903   GL_MIN_PROGRAM_TEXEL_OFFSET                       = $8904;
904   GL_MAX_PROGRAM_TEXEL_OFFSET                       = $8905;
905   GL_MAX_VARYING_COMPONENTS                         = $8B4B;
906   GL_TEXTURE_2D_ARRAY                               = $8C1A;
907   GL_TEXTURE_BINDING_2D_ARRAY                       = $8C1D;
908   GL_R11F_G11F_B10F                                 = $8C3A;
909   GL_UNSIGNED_INT_10F_11F_11F_REV                   = $8C3B;
910   GL_RGB9_E5                                        = $8C3D;
911   GL_UNSIGNED_INT_5_9_9_9_REV                       = $8C3E;
912   GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH          = $8C76;
913   GL_TRANSFORM_FEEDBACK_BUFFER_MODE                 = $8C7F;
914   GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS     = $8C80;
915   GL_TRANSFORM_FEEDBACK_VARYINGS                    = $8C83;
916   GL_TRANSFORM_FEEDBACK_BUFFER_START                = $8C84;
917   GL_TRANSFORM_FEEDBACK_BUFFER_SIZE                 = $8C85;
918   GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN          = $8C88;
919   GL_RASTERIZER_DISCARD                             = $8C89;
920   GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS  = $8C8A;
921   GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS        = $8C8B;
922   GL_INTERLEAVED_ATTRIBS                            = $8C8C;
923   GL_SEPARATE_ATTRIBS                               = $8C8D;
924   GL_TRANSFORM_FEEDBACK_BUFFER                      = $8C8E;
925   GL_TRANSFORM_FEEDBACK_BUFFER_BINDING              = $8C8F;
926   GL_RGBA32UI                                       = $8D70;
927   GL_RGB32UI                                        = $8D71;
928   GL_RGBA16UI                                       = $8D76;
929   GL_RGB16UI                                        = $8D77;
930   GL_RGBA8UI                                        = $8D7C;
931   GL_RGB8UI                                         = $8D7D;
932   GL_RGBA32I                                        = $8D82;
933   GL_RGB32I                                         = $8D83;
934   GL_RGBA16I                                        = $8D88;
935   GL_RGB16I                                         = $8D89;
936   GL_RGBA8I                                         = $8D8E;
937   GL_RGB8I                                          = $8D8F;
938   GL_RED_INTEGER                                    = $8D94;
939   GL_RGB_INTEGER                                    = $8D98;
940   GL_RGBA_INTEGER                                   = $8D99;
941   GL_SAMPLER_2D_ARRAY                               = $8DC1;
942   GL_SAMPLER_2D_ARRAY_SHADOW                        = $8DC4;
943   GL_SAMPLER_CUBE_SHADOW                            = $8DC5;
944   GL_UNSIGNED_INT_VEC2                              = $8DC6;
945   GL_UNSIGNED_INT_VEC3                              = $8DC7;
946   GL_UNSIGNED_INT_VEC4                              = $8DC8;
947   GL_INT_SAMPLER_2D                                 = $8DCA;
948   GL_INT_SAMPLER_3D                                 = $8DCB;
949   GL_INT_SAMPLER_CUBE                               = $8DCC;
950   GL_INT_SAMPLER_2D_ARRAY                           = $8DCF;
951   GL_UNSIGNED_INT_SAMPLER_2D                        = $8DD2;
952   GL_UNSIGNED_INT_SAMPLER_3D                        = $8DD3;
953   GL_UNSIGNED_INT_SAMPLER_CUBE                      = $8DD4;
954   GL_UNSIGNED_INT_SAMPLER_2D_ARRAY                  = $8DD7;
955   GL_BUFFER_ACCESS_FLAGS                            = $911F;
956   GL_BUFFER_MAP_LENGTH                              = $9120;
957   GL_BUFFER_MAP_OFFSET                              = $9121;
958   GL_DEPTH_COMPONENT32F                             = $8CAC;
959   GL_DEPTH32F_STENCIL8                              = $8CAD;
960   GL_FLOAT_32_UNSIGNED_INT_24_8_REV                 = $8DAD;
961   GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING          = $8210;
962   GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE          = $8211;
963   GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE                = $8212;
964   GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE              = $8213;
965   GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE               = $8214;
966   GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE              = $8215;
967   GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE              = $8216;
968   GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE            = $8217;
969   GL_FRAMEBUFFER_DEFAULT                            = $8218;
970   GL_FRAMEBUFFER_UNDEFINED                          = $8219;
971   GL_DEPTH_STENCIL_ATTACHMENT                       = $821A;
972   GL_DEPTH_STENCIL                                  = $84F9;
973   GL_UNSIGNED_INT_24_8                              = $84FA;
974   GL_DEPTH24_STENCIL8                               = $88F0;
975   GL_UNSIGNED_NORMALIZED                            = $8C17;
976   GL_DRAW_FRAMEBUFFER_BINDING                       = $8CA6;
977   GL_READ_FRAMEBUFFER                               = $8CA8;
978   GL_DRAW_FRAMEBUFFER                               = $8CA9;
979   GL_READ_FRAMEBUFFER_BINDING                       = $8CAA;
980   GL_RENDERBUFFER_SAMPLES                           = $8CAB;
981   GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER           = $8CD4;
982   GL_MAX_COLOR_ATTACHMENTS                          = $8CDF;
983   GL_COLOR_ATTACHMENT1                              = $8CE1;
984   GL_COLOR_ATTACHMENT2                              = $8CE2;
985   GL_COLOR_ATTACHMENT3                              = $8CE3;
986   GL_COLOR_ATTACHMENT4                              = $8CE4;
987   GL_COLOR_ATTACHMENT5                              = $8CE5;
988   GL_COLOR_ATTACHMENT6                              = $8CE6;
989   GL_COLOR_ATTACHMENT7                              = $8CE7;
990   GL_COLOR_ATTACHMENT8                              = $8CE8;
991   GL_COLOR_ATTACHMENT9                              = $8CE9;
992   GL_COLOR_ATTACHMENT10                             = $8CEA;
993   GL_COLOR_ATTACHMENT11                             = $8CEB;
994   GL_COLOR_ATTACHMENT12                             = $8CEC;
995   GL_COLOR_ATTACHMENT13                             = $8CED;
996   GL_COLOR_ATTACHMENT14                             = $8CEE;
997   GL_COLOR_ATTACHMENT15                             = $8CEF;
998   GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE             = $8D56;
999   GL_MAX_SAMPLES                                    = $8D57;
1000   GL_HALF_FLOAT                                     = $140B;
1001   GL_MAP_READ_BIT                                   = $0001;
1002   GL_MAP_WRITE_BIT                                  = $0002;
1003   GL_MAP_INVALIDATE_RANGE_BIT                       = $0004;
1004   GL_MAP_INVALIDATE_BUFFER_BIT                      = $0008;
1005   GL_MAP_FLUSH_EXPLICIT_BIT                         = $0010;
1006   GL_MAP_UNSYNCHRONIZED_BIT                         = $0020;
1007   GL_RG                                             = $8227;
1008   GL_RG_INTEGER                                     = $8228;
1009   GL_R8                                             = $8229;
1010   GL_RG8                                            = $822B;
1011   GL_R16F                                           = $822D;
1012   GL_R32F                                           = $822E;
1013   GL_RG16F                                          = $822F;
1014   GL_RG32F                                          = $8230;
1015   GL_R8I                                            = $8231;
1016   GL_R8UI                                           = $8232;
1017   GL_R16I                                           = $8233;
1018   GL_R16UI                                          = $8234;
1019   GL_R32I                                           = $8235;
1020   GL_R32UI                                          = $8236;
1021   GL_RG8I                                           = $8237;
1022   GL_RG8UI                                          = $8238;
1023   GL_RG16I                                          = $8239;
1024   GL_RG16UI                                         = $823A;
1025   GL_RG32I                                          = $823B;
1026   GL_RG32UI                                         = $823C;
1027   GL_VERTEX_ARRAY_BINDING                           = $85B5;
1028   GL_R8_SNORM                                       = $8F94;
1029   GL_RG8_SNORM                                      = $8F95;
1030   GL_RGB8_SNORM                                     = $8F96;
1031   GL_RGBA8_SNORM                                    = $8F97;
1032   GL_SIGNED_NORMALIZED                              = $8F9C;
1033   GL_PRIMITIVE_RESTART_FIXED_INDEX                  = $8D69;
1034   GL_COPY_READ_BUFFER                               = $8F36;
1035   GL_COPY_WRITE_BUFFER                              = $8F37;
1036   GL_COPY_READ_BUFFER_BINDING                       = $8F36;
1037   GL_COPY_WRITE_BUFFER_BINDING                      = $8F37;
1038   GL_UNIFORM_BUFFER                                 = $8A11;
1039   GL_UNIFORM_BUFFER_BINDING                         = $8A28;
1040   GL_UNIFORM_BUFFER_START                           = $8A29;
1041   GL_UNIFORM_BUFFER_SIZE                            = $8A2A;
1042   GL_MAX_VERTEX_UNIFORM_BLOCKS                      = $8A2B;
1043   GL_MAX_FRAGMENT_UNIFORM_BLOCKS                    = $8A2D;
1044   GL_MAX_COMBINED_UNIFORM_BLOCKS                    = $8A2E;
1045   GL_MAX_UNIFORM_BUFFER_BINDINGS                    = $8A2F;
1046   GL_MAX_UNIFORM_BLOCK_SIZE                         = $8A30;
1047   GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS         = $8A31;
1048   GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS       = $8A33;
1049   GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT                = $8A34;
1050   GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH           = $8A35;
1051   GL_ACTIVE_UNIFORM_BLOCKS                          = $8A36;
1052   GL_UNIFORM_TYPE                                   = $8A37;
1053   GL_UNIFORM_SIZE                                   = $8A38;
1054   GL_UNIFORM_NAME_LENGTH                            = $8A39;
1055   GL_UNIFORM_BLOCK_INDEX                            = $8A3A;
1056   GL_UNIFORM_OFFSET                                 = $8A3B;
1057   GL_UNIFORM_ARRAY_STRIDE                           = $8A3C;
1058   GL_UNIFORM_MATRIX_STRIDE                          = $8A3D;
1059   GL_UNIFORM_IS_ROW_MAJOR                           = $8A3E;
1060   GL_UNIFORM_BLOCK_BINDING                          = $8A3F;
1061   GL_UNIFORM_BLOCK_DATA_SIZE                        = $8A40;
1062   GL_UNIFORM_BLOCK_NAME_LENGTH                      = $8A41;
1063   GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS                  = $8A42;
1064   GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES           = $8A43;
1065   GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER      = $8A44;
1066   GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER    = $8A46;
1067   GL_INVALID_INDEX                                  = $FFFFFFFF;
1068   GL_MAX_VERTEX_OUTPUT_COMPONENTS                   = $9122;
1069   GL_MAX_FRAGMENT_INPUT_COMPONENTS                  = $9125;
1070   GL_MAX_SERVER_WAIT_TIMEOUT                        = $9111;
1071   GL_OBJECT_TYPE                                    = $9112;
1072   GL_SYNC_CONDITION                                 = $9113;
1073   GL_SYNC_STATUS                                    = $9114;
1074   GL_SYNC_FLAGS                                     = $9115;
1075   GL_SYNC_FENCE                                     = $9116;
1076   GL_SYNC_GPU_COMMANDS_COMPLETE                     = $9117;
1077   GL_UNSIGNALED                                     = $9118;
1078   GL_SIGNALED                                       = $9119;
1079   GL_ALREADY_SIGNALED                               = $911A;
1080   GL_TIMEOUT_EXPIRED                                = $911B;
1081   GL_CONDITION_SATISFIED                            = $911C;
1082   GL_WAIT_FAILED                                    = $911D;
1083   GL_SYNC_FLUSH_COMMANDS_BIT                        = $00000001;
1084   GL_TIMEOUT_IGNORED                                = $FFFFFFFFFFFFFFFF;
1085   GL_VERTEX_ATTRIB_ARRAY_DIVISOR                    = $88FE;
1086   GL_ANY_SAMPLES_PASSED                             = $8C2F;
1087   GL_ANY_SAMPLES_PASSED_CONSERVATIVE                = $8D6A;
1088   GL_SAMPLER_BINDING                                = $8919;
1089   GL_RGB10_A2UI                                     = $906F;
1090   GL_TEXTURE_SWIZZLE_R                              = $8E42;
1091   GL_TEXTURE_SWIZZLE_G                              = $8E43;
1092   GL_TEXTURE_SWIZZLE_B                              = $8E44;
1093   GL_TEXTURE_SWIZZLE_A                              = $8E45;
1094   GL_GREEN                                          = $1904;
1095   GL_BLUE                                           = $1905;
1096   GL_INT_2_10_10_10_REV                             = $8D9F;
1097   GL_TRANSFORM_FEEDBACK                             = $8E22;
1098   GL_TRANSFORM_FEEDBACK_PAUSED                      = $8E23;
1099   GL_TRANSFORM_FEEDBACK_ACTIVE                      = $8E24;
1100   GL_TRANSFORM_FEEDBACK_BINDING                     = $8E25;
1101   GL_PROGRAM_BINARY_RETRIEVABLE_HINT                = $8257;
1102   GL_PROGRAM_BINARY_LENGTH                          = $8741;
1103   GL_NUM_PROGRAM_BINARY_FORMATS                     = $87FE;
1104   GL_PROGRAM_BINARY_FORMATS                         = $87FF;
1105   GL_COMPRESSED_R11_EAC                             = $9270;
1106   GL_COMPRESSED_SIGNED_R11_EAC                      = $9271;
1107   GL_COMPRESSED_RG11_EAC                            = $9272;
1108   GL_COMPRESSED_SIGNED_RG11_EAC                     = $9273;
1109   GL_COMPRESSED_RGB8_ETC2                           = $9274;
1110   GL_COMPRESSED_SRGB8_ETC2                          = $9275;
1111   GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2       = $9276;
1112   GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2      = $9277;
1113   GL_COMPRESSED_RGBA8_ETC2_EAC                      = $9278;
1114   GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC               = $9279;
1115   GL_TEXTURE_IMMUTABLE_FORMAT                       = $912F;
1116   GL_MAX_ELEMENT_INDEX                              = $8D6B;
1117   GL_NUM_SAMPLE_COUNTS                              = $9380;
1118   GL_TEXTURE_IMMUTABLE_LEVELS                       = $82DF;
1119
1120 { ============================================== OpenGL ES 3.1 ======================================================= }
1121   GL_COMPUTE_SHADER                                 = $91B9;
1122   GL_MAX_COMPUTE_UNIFORM_BLOCKS                     = $91BB;
1123   GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS                = $91BC;
1124   GL_MAX_COMPUTE_IMAGE_UNIFORMS                     = $91BD;
1125   GL_MAX_COMPUTE_SHARED_MEMORY_SIZE                 = $8262;
1126   GL_MAX_COMPUTE_UNIFORM_COMPONENTS                 = $8263;
1127   GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS             = $8264;
1128   GL_MAX_COMPUTE_ATOMIC_COUNTERS                    = $8265;
1129   GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS        = $8266;
1130   GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS             = $90EB;
1131   GL_MAX_COMPUTE_WORK_GROUP_COUNT                   = $91BE;
1132   GL_MAX_COMPUTE_WORK_GROUP_SIZE                    = $91BF;
1133   GL_COMPUTE_WORK_GROUP_SIZE                        = $8267;
1134   GL_DISPATCH_INDIRECT_BUFFER                       = $90EE;
1135   GL_DISPATCH_INDIRECT_BUFFER_BINDING               = $90EF;
1136   GL_COMPUTE_SHADER_BIT                             = $00000020;
1137   GL_DRAW_INDIRECT_BUFFER                           = $8F3F;
1138   GL_DRAW_INDIRECT_BUFFER_BINDING                   = $8F43;
1139   GL_MAX_UNIFORM_LOCATIONS                          = $826E;
1140   GL_FRAMEBUFFER_DEFAULT_WIDTH                      = $9310;
1141   GL_FRAMEBUFFER_DEFAULT_HEIGHT                     = $9311;
1142   GL_FRAMEBUFFER_DEFAULT_SAMPLES                    = $9313;
1143   GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS     = $9314;
1144   GL_MAX_FRAMEBUFFER_WIDTH                          = $9315;
1145   GL_MAX_FRAMEBUFFER_HEIGHT                         = $9316;
1146   GL_MAX_FRAMEBUFFER_SAMPLES                        = $9318;
1147   GL_UNIFORM                                        = $92E1;
1148   GL_UNIFORM_BLOCK                                  = $92E2;
1149   GL_PROGRAM_INPUT                                  = $92E3;
1150   GL_PROGRAM_OUTPUT                                 = $92E4;
1151   GL_BUFFER_VARIABLE                                = $92E5;
1152   GL_SHADER_STORAGE_BLOCK                           = $92E6;
1153   GL_ATOMIC_COUNTER_BUFFER                          = $92C0;
1154   GL_TRANSFORM_FEEDBACK_VARYING                     = $92F4;
1155   GL_ACTIVE_RESOURCES                               = $92F5;
1156   GL_MAX_NAME_LENGTH                                = $92F6;
1157   GL_MAX_NUM_ACTIVE_VARIABLES                       = $92F7;
1158   GL_NAME_LENGTH                                    = $92F9;
1159   GL_TYPE                                           = $92FA;
1160   GL_ARRAY_SIZE                                     = $92FB;
1161   GL_OFFSET                                         = $92FC;
1162   GL_BLOCK_INDEX                                    = $92FD;
1163   GL_ARRAY_STRIDE                                   = $92FE;
1164   GL_MATRIX_STRIDE                                  = $92FF;
1165   GL_IS_ROW_MAJOR                                   = $9300;
1166   GL_ATOMIC_COUNTER_BUFFER_INDEX                    = $9301;
1167   GL_BUFFER_BINDING                                 = $9302;
1168   GL_BUFFER_DATA_SIZE                               = $9303;
1169   GL_NUM_ACTIVE_VARIABLES                           = $9304;
1170   GL_ACTIVE_VARIABLES                               = $9305;
1171   GL_REFERENCED_BY_VERTEX_SHADER                    = $9306;
1172   GL_REFERENCED_BY_FRAGMENT_SHADER                  = $930A;
1173   GL_REFERENCED_BY_COMPUTE_SHADER                   = $930B;
1174   GL_TOP_LEVEL_ARRAY_SIZE                           = $930C;
1175   GL_TOP_LEVEL_ARRAY_STRIDE                         = $930D;
1176   GL_LOCATION                                       = $930E;
1177   GL_VERTEX_SHADER_BIT                              = $00000001;
1178   GL_FRAGMENT_SHADER_BIT                            = $00000002;
1179   GL_ALL_SHADER_BITS                                = $FFFFFFFF;
1180   GL_PROGRAM_SEPARABLE                              = $8258;
1181   GL_ACTIVE_PROGRAM                                 = $8259;
1182   GL_PROGRAM_PIPELINE_BINDING                       = $825A;
1183   GL_ATOMIC_COUNTER_BUFFER_BINDING                  = $92C1;
1184   GL_ATOMIC_COUNTER_BUFFER_START                    = $92C2;
1185   GL_ATOMIC_COUNTER_BUFFER_SIZE                     = $92C3;
1186   GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS              = $92CC;
1187   GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS            = $92D0;
1188   GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS            = $92D1;
1189   GL_MAX_VERTEX_ATOMIC_COUNTERS                     = $92D2;
1190   GL_MAX_FRAGMENT_ATOMIC_COUNTERS                   = $92D6;
1191   GL_MAX_COMBINED_ATOMIC_COUNTERS                   = $92D7;
1192   GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE                 = $92D8;
1193   GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS             = $92DC;
1194   GL_ACTIVE_ATOMIC_COUNTER_BUFFERS                  = $92D9;
1195   GL_UNSIGNED_INT_ATOMIC_COUNTER                    = $92DB;
1196   GL_MAX_IMAGE_UNITS                                = $8F38;
1197   GL_MAX_VERTEX_IMAGE_UNIFORMS                      = $90CA;
1198   GL_MAX_FRAGMENT_IMAGE_UNIFORMS                    = $90CE;
1199   GL_MAX_COMBINED_IMAGE_UNIFORMS                    = $90CF;
1200   GL_IMAGE_BINDING_NAME                             = $8F3A;
1201   GL_IMAGE_BINDING_LEVEL                            = $8F3B;
1202   GL_IMAGE_BINDING_LAYERED                          = $8F3C;
1203   GL_IMAGE_BINDING_LAYER                            = $8F3D;
1204   GL_IMAGE_BINDING_ACCESS                           = $8F3E;
1205   GL_IMAGE_BINDING_FORMAT                           = $906E;
1206   GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT                = $00000001;
1207   GL_ELEMENT_ARRAY_BARRIER_BIT                      = $00000002;
1208   GL_UNIFORM_BARRIER_BIT                            = $00000004;
1209   GL_TEXTURE_FETCH_BARRIER_BIT                      = $00000008;
1210   GL_SHADER_IMAGE_ACCESS_BARRIER_BIT                = $00000020;
1211   GL_COMMAND_BARRIER_BIT                            = $00000040;
1212   GL_PIXEL_BUFFER_BARRIER_BIT                       = $00000080;
1213   GL_TEXTURE_UPDATE_BARRIER_BIT                     = $00000100;
1214   GL_BUFFER_UPDATE_BARRIER_BIT                      = $00000200;
1215   GL_FRAMEBUFFER_BARRIER_BIT                        = $00000400;
1216   GL_TRANSFORM_FEEDBACK_BARRIER_BIT                 = $00000800;
1217   GL_ATOMIC_COUNTER_BARRIER_BIT                     = $00001000;
1218   GL_ALL_BARRIER_BITS                               = $FFFFFFFF;
1219   GL_IMAGE_2D                                       = $904D;
1220   GL_IMAGE_3D                                       = $904E;
1221   GL_IMAGE_CUBE                                     = $9050;
1222   GL_IMAGE_2D_ARRAY                                 = $9053;
1223   GL_INT_IMAGE_2D                                   = $9058;
1224   GL_INT_IMAGE_3D                                   = $9059;
1225   GL_INT_IMAGE_CUBE                                 = $905B;
1226   GL_INT_IMAGE_2D_ARRAY                             = $905E;
1227   GL_UNSIGNED_INT_IMAGE_2D                          = $9063;
1228   GL_UNSIGNED_INT_IMAGE_3D                          = $9064;
1229   GL_UNSIGNED_INT_IMAGE_CUBE                        = $9066;
1230   GL_UNSIGNED_INT_IMAGE_2D_ARRAY                    = $9069;
1231   GL_IMAGE_FORMAT_COMPATIBILITY_TYPE                = $90C7;
1232   GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE             = $90C8;
1233   GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS            = $90C9;
1234   GL_READ_ONLY                                      = $88B8;
1235   GL_WRITE_ONLY                                     = $88B9;
1236   GL_READ_WRITE                                     = $88BA;
1237   GL_SHADER_STORAGE_BUFFER                          = $90D2;
1238   GL_SHADER_STORAGE_BUFFER_BINDING                  = $90D3;
1239   GL_SHADER_STORAGE_BUFFER_START                    = $90D4;
1240   GL_SHADER_STORAGE_BUFFER_SIZE                     = $90D5;
1241   GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS               = $90D6;
1242   GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS             = $90DA;
1243   GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS              = $90DB;
1244   GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS             = $90DC;
1245   GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS             = $90DD;
1246   GL_MAX_SHADER_STORAGE_BLOCK_SIZE                  = $90DE;
1247   GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT         = $90DF;
1248   GL_SHADER_STORAGE_BARRIER_BIT                     = $00002000;
1249   GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES           = $8F39;
1250   GL_DEPTH_STENCIL_TEXTURE_MODE                     = $90EA;
1251   GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET              = $8E5E;
1252   GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET              = $8E5F;
1253   GL_SAMPLE_POSITION                                = $8E50;
1254   GL_SAMPLE_MASK                                    = $8E51;
1255   GL_SAMPLE_MASK_VALUE                              = $8E52;
1256   GL_TEXTURE_2D_MULTISAMPLE                         = $9100;
1257   GL_MAX_SAMPLE_MASK_WORDS                          = $8E59;
1258   GL_MAX_COLOR_TEXTURE_SAMPLES                      = $910E;
1259   GL_MAX_DEPTH_TEXTURE_SAMPLES                      = $910F;
1260   GL_MAX_INTEGER_SAMPLES                            = $9110;
1261   GL_TEXTURE_BINDING_2D_MULTISAMPLE                 = $9104;
1262   GL_TEXTURE_SAMPLES                                = $9106;
1263   GL_TEXTURE_FIXED_SAMPLE_LOCATIONS                 = $9107;
1264   GL_TEXTURE_WIDTH                                  = $1000;
1265   GL_TEXTURE_HEIGHT                                 = $1001;
1266   GL_TEXTURE_DEPTH                                  = $8071;
1267   GL_TEXTURE_INTERNAL_FORMAT                        = $1003;
1268   GL_TEXTURE_RED_SIZE                               = $805C;
1269   GL_TEXTURE_GREEN_SIZE                             = $805D;
1270   GL_TEXTURE_BLUE_SIZE                              = $805E;
1271   GL_TEXTURE_ALPHA_SIZE                             = $805F;
1272   GL_TEXTURE_DEPTH_SIZE                             = $884A;
1273   GL_TEXTURE_STENCIL_SIZE                           = $88F1;
1274   GL_TEXTURE_SHARED_SIZE                            = $8C3F;
1275   GL_TEXTURE_RED_TYPE                               = $8C10;
1276   GL_TEXTURE_GREEN_TYPE                             = $8C11;
1277   GL_TEXTURE_BLUE_TYPE                              = $8C12;
1278   GL_TEXTURE_ALPHA_TYPE                             = $8C13;
1279   GL_TEXTURE_DEPTH_TYPE                             = $8C16;
1280   GL_TEXTURE_COMPRESSED                             = $86A1;
1281   GL_SAMPLER_2D_MULTISAMPLE                         = $9108;
1282   GL_INT_SAMPLER_2D_MULTISAMPLE                     = $9109;
1283   GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE            = $910A;
1284   GL_VERTEX_ATTRIB_BINDING                          = $82D4;
1285   GL_VERTEX_ATTRIB_RELATIVE_OFFSET                  = $82D5;
1286   GL_VERTEX_BINDING_DIVISOR                         = $82D6;
1287   GL_VERTEX_BINDING_OFFSET                          = $82D7;
1288   GL_VERTEX_BINDING_STRIDE                          = $82D8;
1289   GL_VERTEX_BINDING_BUFFER                          = $8F4F;
1290   GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET              = $82D9;
1291   GL_MAX_VERTEX_ATTRIB_BINDINGS                     = $82DA;
1292   GL_MAX_VERTEX_ATTRIB_STRIDE                       = $82E5;
1293
1294 type
1295 { ============================================== OpenGL ES 1.0 ======================================================= }
1296 { Available only in Common profile }
1297   TglAlphaFunc                              = procedure(aFunc: GLenum; aRef: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1298   TglClearColor                             = procedure(aRed: GLclampf; aGreen: GLclampf; aBlue: GLclampf; aAlpha: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1299   TglClearDepthf                            = procedure(aDepth: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1300   TglClipPlanef                             = procedure(aPlane: GLenum; const aEquation: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1301   TglColor4f                                = procedure(aRed: GLfloat; aGreen: GLfloat; aBlue: GLfloat; aAlpha: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1302   TglDepthRangef                            = procedure(aZNear: GLclampf; aZFar: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1303   TglFogf                                   = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1304   TglFogfv                                  = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1305   TglFrustumf                               = procedure(aLeft: GLfloat; aRight: GLfloat; aBottom: GLfloat; aTop: GLfloat; aZNear: GLfloat; aZFar: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1306   TglGetClipPlanef                          = procedure(aPname: GLenum; aEquation: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1307   TglGetFloatv                              = procedure(aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1308   TglGetLightfv                             = procedure(aLight: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1309   TglGetMaterialfv                          = procedure(aFace: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1310   TglGetTexEnvfv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1311   TglGetTexParameterfv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1312   TglLightModelf                            = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1313   TglLightModelfv                           = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1314   TglLightf                                 = procedure(aLight: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1315   TglLightfv                                = procedure(aLight: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1316   TglLineWidth                              = procedure(aWidth: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1317   TglLoadMatrixf                            = procedure(const aMatrix: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1318   TglMaterialf                              = procedure(aFace: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1319   TglMaterialfv                             = procedure(aFace: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1320   TglMultMatrixf                            = procedure(const aMatrix: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1321   TglMultiTexCoord4f                        = procedure(aTarget: GLenum; s: GLfloat; t: GLfloat; r: GLfloat; q: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1322   TglNormal3f                               = procedure(nx: GLfloat; ny: GLfloat; nz: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1323   TglOrthof                                 = procedure(aLeft: GLfloat; aRight: GLfloat; aBottom: GLfloat; aTop: GLfloat; aZNear: GLfloat; aZFar: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1324   TglPointParameterf                        = procedure(aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1325   TglPointParameterfv                       = procedure(aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1326   TglPointSize                              = procedure(aSize: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1327   TglPolygonOffset                          = procedure(aFactor: GLfloat; aUnits: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1328   TglRotatef                                = procedure(aAngle: GLfloat; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1329   TglScalef                                 = procedure(x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1330   TglTexEnvf                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1331   TglTexEnvfv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1332   TglTexParameterf                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1333   TglTexParameterfv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1334   TglTranslatef                             = procedure(x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1335
1336 { Available in both Common and Common-Lite profiles }
1337   TglActiveTexture                          = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1338   TglAlphaFuncx                             = procedure(aFunc: GLenum; aRef: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1339   TglBindBuffer                             = procedure(aTarget: GLenum; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1340   TglBindTexture                            = procedure(aTarget: GLenum; aTexture: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1341   TglBlendFunc                              = procedure(aSfactor: GLenum; aDfactor: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1342   TglBufferData                             = procedure(aTarget: GLenum; aSize: PGLsizei; const aData: PGLvoid; aUsage: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1343   TglBufferSubData                          = procedure(aTarget: GLenum; aOffset: PGLint; aSize: PGLsizei; const aData: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1344   TglClear                                  = procedure(aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1345   TglClearColorx                            = procedure(aRed: GLclampx; aGreen: GLclampx; aBlue: GLclampx; aAlpha: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1346   TglClearDepthx                            = procedure(aDepth: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1347   TglClearStencil                           = procedure(aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1348   TglClientActiveTexture                    = procedure(aTexture: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1349   TglClipPlanex                             = procedure(aPlane: GLenum; const aEquation: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1350   TglColor4ub                               = procedure(aRed: GLubyte; aGreen: GLubyte; aBlue: GLubyte; aAlpha: GLubyte); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1351   TglColor4x                                = procedure(aRed: GLfixed; aGreen: GLfixed; aBlue: GLfixed; aAlpha: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1352   TglColorMask                              = procedure(aRed: GLboolean; aGreen: GLboolean; aBlue: GLboolean; aAlpha: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1353   TglColorPointer                           = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1354   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}
1355   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}
1356   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}
1357   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}
1358   TglCullFace                               = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1359   TglDeleteBuffers                          = procedure(n: GLsizei; const aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1360   TglDeleteTextures                         = procedure(n: GLsizei; const aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1361   TglDepthFunc                              = procedure(aFunc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1362   TglDepthMask                              = procedure(aFlag: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1363   TglDepthRangex                            = procedure(aZNear: GLclampx; aZFar: GLclampx); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1364   TglDisable                                = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1365   TglDisableClientState                     = procedure(aArray: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1366   TglDrawArrays                             = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1367   TglDrawElements                           = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1368   TglEnable                                 = procedure(aCap: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1369   TglEnableClientState                      = procedure(aArray: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1370   TglFinish                                 = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1371   TglFlush                                  = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1372   TglFogx                                   = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1373   TglFogxv                                  = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1374   TglFrontFace                              = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1375   TglFrustumx                               = procedure(aLeft: GLfixed; aRight: GLfixed; aBottom: GLfixed; aTop: GLfixed; aZNear: GLfixed; aZFar: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1376   TglGetBooleanv                            = procedure(aPname: GLenum; aParams: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1377   TglGetBufferParameteriv                   = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1378   TglGetClipPlanex                          = procedure(aPname: GLenum; aEquation: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1379   TglGenBuffers                             = procedure(n: GLsizei; aBuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1380   TglGenTextures                            = procedure(n: GLsizei; aTextures: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1381   TglGetError                               = function (): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1382   TglGetFixedv                              = procedure(aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1383   TglGetIntegerv                            = procedure(aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1384   TglGetLightxv                             = procedure(aLight: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1385   TglGetMaterialxv                          = procedure(aFace: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1386   TglGetPointerv                            = procedure(aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1387   TglGetString                              = function (name: GLenum): PGLubyte; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1388   TglGetTexEnviv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1389   TglGetTexEnvxv                            = procedure(aEnv: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1390   TglGetTexParameteriv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1391   TglGetTexParameterxv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1392   TglHint                                   = procedure(aTarget: GLenum; aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1393   TglIsBuffer                               = function (aBuffer: GLuint): GLboolean;                                                {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1394   TglIsEnabled                              = function (aCap: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1395   TglIsTexture                              = function (aTexture: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1396   TglLightModelx                            = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1397   TglLightModelxv                           = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1398   TglLightx                                 = procedure(aLight: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1399   TglLightxv                                = procedure(aLight: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1400   TglLineWidthx                             = procedure(aWidth: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1401   TglLoadIdentity                           = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1402   TglLoadMatrix                             = procedure(const aMatrix: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1403   TglLogicOp                                = procedure(aOpcode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1404   TglMaterialx                              = procedure(aFace: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1405   TglMaterialxv                             = procedure(aFace: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1406   TglMatrixMode                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1407   TglMultMatrixx                            = procedure(const aMatrix: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1408   TglMultiTexCoord4x                        = procedure(aTarget: GLenum; s: GLfixed; t: GLfixed; r: GLfixed; q: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1409   TglNormal3x                               = procedure(nx: GLfixed; ny: GLfixed; nz: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1410   TglNormalPointer                          = procedure(aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1411   TglOrthox                                 = procedure(aLeft: GLfixed; aRight: GLfixed; aBottom: GLfixed; aTop: GLfixed; aZNear: GLfixed; aZFar: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1412   TglPixelStorei                            = procedure(aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1413   TglPointParameterx                        = procedure(aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1414   TglPointParameterxv                       = procedure(aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1415   TglPointSizex                             = procedure(aSize: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1416   TglPolygonOffsetx                         = procedure(aFactor: GLfixed; aUnits: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1417   TglPopMatrix                              = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1418   TglPushMatrix                             = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1419   TglReadPixels                             = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei; aFormat: GLenum; aType: GLenum; aPixels: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1420   TglRotatex                                = procedure(aAngle: GLfixed; x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1421   TglSampleCoverage                         = procedure(aValue: GLclampf; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1422   TglSampleCoveragex                        = procedure(aValue: GLclampx; aInvert: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1423   TglScalex                                 = procedure(x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1424   TglScissor                                = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1425   TglShadeModel                             = procedure(aMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1426   TglStencilFunc                            = procedure(aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1427   TglStencilMask                            = procedure(aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1428   TglStencilOp                              = procedure(aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1429   TglTexCoordPointer                        = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1430   TglTexEnvi                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1431   TglTexEnvx                                = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1432   TglTexEnviv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1433   TglTexEnvxv                               = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1434   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}
1435   TglTexParameteri                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1436   TglTexParameterx                          = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1437   TglTexParameteriv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1438   TglTexParameterxv                         = procedure(aTarget: GLenum; aPname: GLenum; const aParams: PGLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1439   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}
1440   TglTranslatex                             = procedure(x: GLfixed; y: GLfixed; z: GLfixed); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1441   TglVertexPointer                          = procedure(aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1442   TglViewport                               = procedure(x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1443
1444 { ============================================== OpenGL ES 2.0 ======================================================= }
1445   TglAttachShader                           = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1446   TglBindAttribLocation                     = procedure(aProgram: GLuint; aIndex: GLuint; const aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1447   TglBindFramebuffer                        = procedure(aTarget: GLenum; aFramebuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1448   TglBindRenderbuffer                       = procedure(aTarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1449   TglBlendColor                             = procedure(aRed: GLclampf; aGreen: GLclampf; aBlue: GLclampf; aAlpha: GLclampf); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1450   TglBlendEquation                          = procedure( mode : GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1451   TglBlendEquationSeparate                  = procedure(aModeRGB: GLenum; aModeAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1452   TglBlendFuncSeparate                      = procedure(aSrcRGB: GLenum; aDstRGB: GLenum; aSrcAlpha: GLenum; aDstAlpha: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1453   TglCheckFramebufferStatus                 = function (aTarget: GLenum): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1454   TglCompileShader                          = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1455   TglCreateProgram                          = function (): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1456   TglCreateShader                           = function (aType: GLenum): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1457   TglDeleteFramebuffers                     = procedure(n: GLsizei; const aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1458   TglDeleteProgram                          = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1459   TglDeleteRenderbuffers                    = procedure(n: GLsizei; const aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1460   TglDeleteShader                           = procedure(aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1461   TglDetachShader                           = procedure(aProgram: GLuint; aShader: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1462   TglDisableVertexAttribArray               = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1463   TglEnableVertexAttribArray                = procedure(aIndex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1464   TglFramebufferRenderbuffer                = procedure(aTarget: GLenum; aAttachment: GLenum; aRenderbuffertarget: GLenum; aRenderbuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1465   TglFramebufferTexture2D                   = procedure(aTarget: GLenum; aAttachment: GLenum; aTextarget: GLenum; aTexture: GLuint; aLevel: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1466   TglGenerateMipmap                         = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1467   TglGenFramebuffers                        = procedure(n: GLsizei; aFramebuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1468   TglGenRenderbuffers                       = procedure(n: GLsizei; aRenderbuffers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1469   TglGetActiveAttrib                        = procedure(aProgram: GLuint; aIndex: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1470   TglGetActiveUniform                       = procedure(aProgram: GLuint; aIndex: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSize: PGLint; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1471   TglGetAttachedShaders                     = procedure(aProgram: GLuint; aMaxcount: GLsizei; aCount: PGLsizei; aShaders: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1472   TglGetAttribLocation                      = function (aProgram: GLuint; const aName: PGLchar): Integer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1473   TglGetFramebufferAttachmentParameteriv    = procedure(aTarget: GLenum; aAttachment: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1474   TglGetProgramiv                           = procedure(aProgram: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1475   TglGetProgramInfoLog                      = procedure(aProgram: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aInfolog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1476   TglGetRenderbufferParameteriv             = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1477   TglGetShaderiv                            = procedure(aShader: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1478   TglGetShaderInfoLog                       = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aInfolog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1479   TglGetShaderPrecisionFormat               = procedure(aShadertype: GLenum; aPrecisiontype: GLenum; aRange: PGLint; aPrecision: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1480   TglGetShaderSource                        = procedure(aShader: GLuint; aBufsize: GLsizei; aLength: PGLsizei; aSource: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1481   TglGetUniformfv                           = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1482   TglGetUniformiv                           = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1483   TglGetUniformLocation                     = function (aProgram: GLuint; const aName: PGLchar): Integer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1484   TglGetVertexAttribfv                      = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1485   TglGetVertexAttribiv                      = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1486   TglGetVertexAttribPointerv                = procedure(aIndex: GLuint; aPname: GLenum; aPointer: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1487   TglIsFramebuffer                          = function (aFramebuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1488   TglIsProgram                              = function (aProgram: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1489   TglIsRenderbuffer                         = function (aRenderbuffer: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1490   TglIsShader                               = function (aShader: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1491   TglLinkProgram                            = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1492   TglReleaseShaderCompiler                  = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1493   TglRenderbufferStorage                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1494   TglShaderBinary                           = procedure(n: GLsizei; const aShaders: PGLuint; aBinaryformat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1495   TglShaderSource                           = procedure(aShader: GLuint; aCount: GLsizei; const aString: PPGLchar; const aLength: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1496   TglStencilFuncSeparate                    = procedure(aFace: GLenum; aFunc: GLenum; aRef: GLint; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1497   TglStencilMaskSeparate                    = procedure(aFace: GLenum; aMask: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1498   TglStencilOpSeparate                      = procedure(aFace: GLenum; aFail: GLenum; aZfail: GLenum; aZpass: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1499   TglUniform1f                              = procedure(aLocation: GLint; x: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1500   TglUniform1fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1501   TglUniform1i                              = procedure(aLocation: GLint; x: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1502   TglUniform1iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1503   TglUniform2f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1504   TglUniform2fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1505   TglUniform2i                              = procedure(aLocation: GLint; x: GLint; y: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1506   TglUniform2iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1507   TglUniform3f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1508   TglUniform3fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1509   TglUniform3i                              = procedure(aLocation: GLint; x: GLint; y: GLint; z: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1510   TglUniform3iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1511   TglUniform4f                              = procedure(aLocation: GLint; x: GLfloat; y: GLfloat; z: GLfloat; aW: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1512   TglUniform4fv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1513   TglUniform4i                              = procedure(aLocation: GLint; x: GLint; y: GLint; z: GLint; aW: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1514   TglUniform4iv                             = procedure(aLocation: GLint; aCount: GLsizei; const aV: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1515   TglUniformMatrix2fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1516   TglUniformMatrix3fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1517   TglUniformMatrix4fv                       = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1518   TglUseProgram                             = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1519   TglValidateProgram                        = procedure(aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1520   TglVertexAttrib1f                         = procedure(aIndex: GLuint; x: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1521   TglVertexAttrib1fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1522   TglVertexAttrib2f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1523   TglVertexAttrib2fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1524   TglVertexAttrib3f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; z: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1525   TglVertexAttrib3fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1526   TglVertexAttrib4f                         = procedure(aIndex: GLuint; x: GLfloat; y: GLfloat; z: GLfloat; aW: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1527   TglVertexAttrib4fv                        = procedure(aIndex: GLuint; const aValues: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1528   TglVertexAttribPointer                    = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aStride: GLsizei; const aPtr: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1529
1530 { ============================================== OpenGL ES 3.0 ======================================================= }
1531   TglReadBuffer                             = procedure(aSrc: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1532   TglDrawRangeElements                      = procedure(aMode: GLenum; aStart: GLuint; aEnd: GLuint; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1533   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}
1534   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}
1535   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}
1536   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}
1537   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}
1538   TglGenQueries                             = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1539   TglDeleteQueries                          = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1540   TglIsQuery                                = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1541   TglBeginQuery                             = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1542   TglEndQuery                               = procedure(aTarget: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1543   TglGetQueryiv                             = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1544   TglGetQueryObjectuiv                      = procedure(aId: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1545   TglUnmapBuffer                            = function (aTarget: GLenum): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1546   TglGetBufferPointerv                      = procedure(aTarget: GLenum; aPname: GLenum; aParams: PPGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1547   TglDrawBuffers                            = procedure(n: GLsizei; const aBuffers: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1548   TglUniformMatrix2x3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1549   TglUniformMatrix3x2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1550   TglUniformMatrix2x4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1551   TglUniformMatrix4x2fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1552   TglUniformMatrix3x4fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1553   TglUniformMatrix4x3fv                     = procedure(aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1554   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}
1555   TglRenderbufferStorageMultisample         = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1556   TglFramebufferTextureLayer                = procedure(aTarget: GLenum; aAttachment: GLenum; aTexture: GLuint; aLevel: GLint; aLayer: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1557   TglMapBufferRange                         = function (aTarget: GLenum; aOffset: PGLint; aLength: PGLsizei; aAccess: GLbitfield): PGLvoid; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1558   TglFlushMappedBufferRange                 = procedure(aTarget: GLenum; aOffset: PGLint; aLength: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1559   TglBindVertexArray                        = procedure(aArray: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1560   TglDeleteVertexArrays                     = procedure(n: GLsizei; const aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1561   TglGenVertexArrays                        = procedure(n: GLsizei; aArrays: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1562   TglIsVertexArray                          = function (aArray: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1563   TglGetIntegeriv                           = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1564   TglBeginTransformFeedback                 = procedure(aPrimitiveMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1565   TglEndTransformFeedback                   = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1566   TglBindBufferRange                        = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint; aOffset: PGLint; aSize: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1567   TglBindBufferBase                         = procedure(aTarget: GLenum; aIndex: GLuint; aBuffer: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1568   TglTransformFeedbackVaryings              = procedure(aProgram: GLuint; aCount: GLsizei; const aVaryings: PPGLchar; aBufferMode: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1569   TglGetTransformFeedbackVarying            = procedure(aProgram: GLuint; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aSize: PGLsizei; aType: PGLenum; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1570   TglVertexAttribIPointer                   = procedure(aIndex: GLuint; aSize: GLint; aType: GLenum; aStride: GLsizei; const aPointer: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1571   TglGetVertexAttribIiv                     = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1572   TglGetVertexAttribIuiv                    = procedure(aIndex: GLuint; aPname: GLenum; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1573   TglVertexAttribI4i                        = procedure(aIndex: GLuint; x: GLint; y: GLint; z: GLint; aW: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1574   TglVertexAttribI4ui                       = procedure(aIndex: GLuint; x: GLuint; y: GLuint; z: GLuint; aW: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1575   TglVertexAttribI4iv                       = procedure(aIndex: GLuint; const v: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1576   TglVertexAttribI4uiv                      = procedure(aIndex: GLuint; const v: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1577   TglGetUniformuiv                          = procedure(aProgram: GLuint; aLocation: GLint; aParams: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1578   TglGetFragDataLocation                    = function (aProgram: GLuint; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1579   TglUniform1ui                             = procedure(aLocation: GLint; v0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1580   TglUniform2ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1581   TglUniform3ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1582   TglUniform4ui                             = procedure(aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1583   TglUniform1uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1584   TglUniform2uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1585   TglUniform3uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1586   TglUniform4uiv                            = procedure(aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1587   TglClearBufferiv                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1588   TglClearBufferuiv                         = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1589   TglClearBufferfv                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1590   TglClearBufferfi                          = procedure(aBuffer: GLenum; aDrawbuffer: GLint; aDepth: GLfloat; aStencil: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1591   TglGetStringi                             = function (aName: GLenum; aIndex: GLuint): PGLubyte; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1592   TglCopyBufferSubData                      = procedure(aReadTarget: GLenum; aWriteTarget: GLenum; aReadOffset: PGLint; aWriteOffset: PGLint; aSize: PGLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1593   TglGetUniformIndices                      = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformNames: PPGLchar; aUniformIndices: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1594   TglGetActiveUniformsiv                    = procedure(aProgram: GLuint; aUniformCount: GLsizei; const aUniformIndices: PGLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1595   TglGetUniformBlockIndex                   = function (aProgram: GLuint; const aUniformBlockName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1596   TglGetActiveUniformBlockiv                = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1597   TglGetActiveUniformBlockName              = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aUniformBlockName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1598   TglUniformBlockBinding                    = procedure(aProgram: GLuint; aUniformBlockIndex: GLuint; aUniformBlockBinding: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1599   TglDrawArraysInstanced                    = procedure(aMode: GLenum; aFirst: GLint; aCount: GLsizei; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1600   TglDrawElementsInstanced                  = procedure(aMode: GLenum; aCount: GLsizei; aType: GLenum; const aIndices: PGLvoid; aInstancecount: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1601   TglFenceSync                              = function (aCondition: GLenum; aFlags: GLbitfield): GLsync; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1602   TglIsSync                                 = function (aSync: GLsync): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1603   TglDeleteSync                             = procedure(aSync: GLsync); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1604   TglClientWaitSync                         = function (aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64): GLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1605   TglWaitSync                               = procedure(aSync: GLsync; aFlags: GLbitfield; aTimeout: GLuint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1606   TglGetInteger64v                          = procedure(aPname: GLenum; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1607   TglGetSynciv                              = procedure(aSync: GLsync; aPname: GLenum; aBufSize: GLsizei; aLength: PGLsizei; aValues: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1608   TglGetInteger64iv                         = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1609   TglGetBufferParameteri64v                 = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint64); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1610   TglGenSamplers                            = procedure(aCount: GLsizei; aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1611   TglDeleteSamplers                         = procedure(aCount: GLsizei; const aSamplers: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1612   TglIsSampler                              = function (aSampler: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1613   TglBindSampler                            = procedure(aUnit: GLuint; aSampler: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1614   TglSamplerParameteri                      = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1615   TglSamplerParameteriv                     = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1616   TglSamplerParameterf                      = procedure(aSampler: GLuint; aPname: GLenum; aParam: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1617   TglSamplerParameterfv                     = procedure(aSampler: GLuint; aPname: GLenum; const aParam: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1618   TglGetSamplerParameteriv                  = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1619   TglGetSamplerParameterfv                  = procedure(aSampler: GLuint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1620   TglVertexAttribDivisor                    = procedure(aIndex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1621   TglBindTransformFeedback                  = procedure(aTarget: GLenum; aId: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1622   TglDeleteTransformFeedbacks               = procedure(n: GLsizei; const aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1623   TglGenTransformFeedbacks                  = procedure(n: GLsizei; aIds: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1624   TglIsTransformFeedback                    = function (aId: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1625   TglPauseTransformFeedback                 = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1626   TglResumeTransformFeedback                = procedure(); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1627   TglGetProgramBinary                       = procedure(aProgram: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aBinaryFormat: PGLenum; aBinary: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1628   TglProgramBinary                          = procedure(aProgram: GLuint; aBinaryFormat: GLenum; const aBinary: PGLvoid; aLength: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1629   TglProgramParameteri                      = procedure(aProgram: GLuint; aPname: GLenum; aValue: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1630   TglInvalidateFramebuffer                  = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1631   TglInvalidateSubFramebuffer               = procedure(aTarget: GLenum; aNumAttachments: GLsizei; const aAttachments: PGLenum; x: GLint; y: GLint; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1632   TglTexStorage2D                           = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1633   TglTexStorage3D                           = procedure(aTarget: GLenum; aLevels: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aDepth: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1634   TglGetInternalformativ                    = procedure(aTarget: GLenum; aInternalformat: GLenum; aPname: GLenum; aBufSize: GLsizei; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1635
1636 { ============================================== OpenGL ES 3.1 ======================================================= }
1637   TglDispatchCompute                        = procedure(aNumGroupsX: GLuint; aNumGroupsY: GLuint; aNumGroupsZ: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1638   TglDispatchComputeIndirect                = procedure(aIndirect: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1639   TglDrawArraysIndirect                     = procedure(aMode: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1640   TglDrawElementsIndirect                   = procedure(aMode: GLenum; aType: GLenum; const aIndirect: PGLvoid); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1641   TglFramebufferParameteri                  = procedure(aTarget: GLenum; aPname: GLenum; aParam: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1642   TglGetFramebufferParameteriv              = procedure(aTarget: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1643   TglGetProgramInterfaceiv                  = procedure(aProgram: GLuint; aProgramInterface: GLenum; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1644   TglGetProgramResourceIndex                = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1645   TglGetProgramResourceName                 = procedure(aProgram: GLuint; aProgramInterface: GLenum; aIndex: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aName: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1646   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}
1647   TglGetProgramResourceLocation             = function (aProgram: GLuint; aProgramInterface: GLenum; const aName: PGLchar): GLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1648   TglUseProgramStages                       = procedure(aPipeline: GLuint; aStages: GLbitfield; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1649   TglActiveShaderProgram                    = procedure(aPipeline: GLuint; aProgram: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1650   TglCreateShaderProgramv                   = function (aType: GLenum; aCount: GLsizei; const aStrings: PPGLchar): GLuint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1651   TglBindProgramPipeline                    = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1652   TglDeleteProgramPipelines                 = procedure(aN: GLsizei; const aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1653   TglGenProgramPipelines                    = procedure(aN: GLsizei; aPipelines: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1654   TglIsProgramPipeline                      = function (aPipeline: GLuint): GLboolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1655   TglGetProgramPipelineiv                   = procedure(aPipeline: GLuint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1656   TglProgramUniform1i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1657   TglProgramUniform2i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1658   TglProgramUniform3i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint; v2: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1659   TglProgramUniform4i                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLint; v1: GLint; v2: GLint; v3: GLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1660   TglProgramUniform1ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1661   TglProgramUniform2ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1662   TglProgramUniform3ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1663   TglProgramUniform4ui                      = procedure(aProgram: GLuint; aLocation: GLint; v0: GLuint; v1: GLuint; v2: GLuint; v3: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1664   TglProgramUniform1f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1665   TglProgramUniform2f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1666   TglProgramUniform3f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1667   TglProgramUniform4f                       = procedure(aProgram: GLuint; aLocation: GLint; v0: GLfloat; v1: GLfloat; v2: GLfloat; v3: GLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1668   TglProgramUniform1iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1669   TglProgramUniform2iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1670   TglProgramUniform3iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1671   TglProgramUniform4iv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1672   TglProgramUniform1uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1673   TglProgramUniform2uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1674   TglProgramUniform3uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1675   TglProgramUniform4uiv                     = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1676   TglProgramUniform1fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1677   TglProgramUniform2fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1678   TglProgramUniform3fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1679   TglProgramUniform4fv                      = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1680   TglProgramUniformMatrix2fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1681   TglProgramUniformMatrix3fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1682   TglProgramUniformMatrix4fv                = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1683   TglProgramUniformMatrix2x3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1684   TglProgramUniformMatrix3x2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1685   TglProgramUniformMatrix2x4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1686   TglProgramUniformMatrix4x2fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1687   TglProgramUniformMatrix3x4fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1688   TglProgramUniformMatrix4x3fv              = procedure(aProgram: GLuint; aLocation: GLint; aCount: GLsizei; aTranspose: GLboolean; const aValue: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1689   TglValidateProgramPipeline                = procedure(aPipeline: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1690   TglGetProgramPipelineInfoLog              = procedure(aPipeline: GLuint; aBufSize: GLsizei; aLength: PGLsizei; aInfoLog: PGLchar); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1691   TglBindImageTexture                       = procedure(aUnit: GLuint; aTexture: GLuint; aLevel: GLint; aLayered: GLboolean; aLayer: GLint; aAccess: GLenum; aFormat: GLenum); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1692   TglGetBooleaniv                           = procedure(aTarget: GLenum; aIndex: GLuint; aData: PGLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1693   TglMemoryBarrier                          = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1694   TglMemoryBarrierByRegion                  = procedure(aBarriers: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1695   TglTexStorage2DMultisample                = procedure(aTarget: GLenum; aSamples: GLsizei; aInternalformat: GLenum; aWidth: GLsizei; aHeight: GLsizei; aFixedsamplelocations: GLboolean); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1696   TglGetMultisamplefv                       = procedure(aPname: GLenum; aIndex: GLuint; aVal: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1697   TglSampleMaski                            = procedure(aMaskNumber: GLuint; aMask: GLbitfield); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1698   TglGetTexLevelParameteriv                 = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1699   TglGetTexLevelParameterfv                 = procedure(aTarget: GLenum; aLevel: GLint; aPname: GLenum; aParams: PGLfloat); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1700   TglBindVertexBuffer                       = procedure(aBindingindex: GLuint; aBuffer: GLuint; aOffset: PGLint; aStride: GLsizei); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1701   TglVertexAttribFormat                     = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aNormalized: GLboolean; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1702   TglVertexAttribIFormat                    = procedure(aAttribindex: GLuint; aSize: GLint; aType: GLenum; aRelativeoffset: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1703   TglVertexAttribBinding                    = procedure(aAttribindex: GLuint; aBindingindex: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1704   TglVertexBindingDivisor                   = procedure(aBindingindex: GLuint; aDivisor: GLuint); {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
1705
1706 var
1707 { ============================================== OpenGL ES 1.0 ======================================================= }
1708 { Available only in Common profile }
1709   glAlphaFunc:                              TglAlphaFunc;
1710   glClearColor:                             TglClearColor;
1711   glClearDepthf:                            TglClearDepthf;
1712   glClipPlanef:                             TglClipPlanef;
1713   glColor4f:                                TglColor4f;
1714   glDepthRangef:                            TglDepthRangef;
1715   glFogf:                                   TglFogf;
1716   glFogfv:                                  TglFogfv;
1717   glFrustumf:                               TglFrustumf;
1718   glGetClipPlanef:                          TglGetClipPlanef;
1719   glGetFloatv:                              TglGetFloatv;
1720   glGetLightfv:                             TglGetLightfv;
1721   glGetMaterialfv:                          TglGetMaterialfv;
1722   glGetTexEnvfv:                            TglGetTexEnvfv;
1723   glGetTexParameterfv:                      TglGetTexParameterfv;
1724   glLightModelf:                            TglLightModelf;
1725   glLightModelfv:                           TglLightModelfv;
1726   glLightf:                                 TglLightf;
1727   glLightfv:                                TglLightfv;
1728   glLineWidth:                              TglLineWidth;
1729   glLoadMatrixf:                            TglLoadMatrixf;
1730   glMaterialf:                              TglMaterialf;
1731   glMaterialfv:                             TglMaterialfv;
1732   glMultMatrixf:                            TglMultMatrixf;
1733   glMultiTexCoord4f:                        TglMultiTexCoord4f;
1734   glNormal3f:                               TglNormal3f;
1735   glOrthof:                                 TglOrthof;
1736   glPointParameterf:                        TglPointParameterf;
1737   glPointParameterfv:                       TglPointParameterfv;
1738   glPointSize:                              TglPointSize;
1739   glPolygonOffset:                          TglPolygonOffset;
1740   glRotatef:                                TglRotatef;
1741   glScalef:                                 TglScalef;
1742   glTexEnvf:                                TglTexEnvf;
1743   glTexEnvfv:                               TglTexEnvfv;
1744   glTexParameterf:                          TglTexParameterf;
1745   glTexParameterfv:                         TglTexParameterfv;
1746   glTranslatef:                             TglTranslatef;
1747
1748 { Available in both Common and Common-Lite profiles }
1749   glActiveTexture:                          TglActiveTexture;
1750   glAlphaFuncx:                             TglAlphaFuncx;
1751   glBindBuffer:                             TglBindBuffer;
1752   glBindTexture:                            TglBindTexture;
1753   glBlendFunc:                              TglBlendFunc;
1754   glBufferData:                             TglBufferData;
1755   glBufferSubData:                          TglBufferSubData;
1756   glClear:                                  TglClear;
1757   glClearColorx:                            TglClearColorx;
1758   glClearDepthx:                            TglClearDepthx;
1759   glClearStencil:                           TglClearStencil;
1760   glClientActiveTexture:                    TglClientActiveTexture;
1761   glClipPlanex:                             TglClipPlanex;
1762   glColor4ub:                               TglColor4ub;
1763   glColor4x:                                TglColor4x;
1764   glColorMask:                              TglColorMask;
1765   glColorPointer:                           TglColorPointer;
1766   glCompressedTexImage2D:                   TglCompressedTexImage2D;
1767   glCompressedTexSubImage2D:                TglCompressedTexSubImage2D;
1768   glCopyTexImage2D:                         TglCopyTexImage2D;
1769   glCopyTexSubImage2D:                      TglCopyTexSubImage2D;
1770   glCullFace:                               TglCullFace;
1771   glDeleteBuffers:                          TglDeleteBuffers;
1772   glDeleteTextures:                         TglDeleteTextures;
1773   glDepthFunc:                              TglDepthFunc;
1774   glDepthMask:                              TglDepthMask;
1775   glDepthRangex:                            TglDepthRangex;
1776   glDisable:                                TglDisable;
1777   glDisableClientState:                     TglDisableClientState;
1778   glDrawArrays:                             TglDrawArrays;
1779   glDrawElements:                           TglDrawElements;
1780   glEnable:                                 TglEnable;
1781   glEnableClientState:                      TglEnableClientState;
1782   glFinish:                                 TglFinish;
1783   glFlush:                                  TglFlush;
1784   glFogx:                                   TglFogx;
1785   glFogxv:                                  TglFogxv;
1786   glFrontFace:                              TglFrontFace;
1787   glFrustumx:                               TglFrustumx;
1788   glGetBooleanv:                            TglGetBooleanv;
1789   glGetBufferParameteriv:                   TglGetBufferParameteriv;
1790   glGetClipPlanex:                          TglGetClipPlanex;
1791   glGenBuffers:                             TglGenBuffers;
1792   glGenTextures:                            TglGenTextures;
1793   glGetError:                               TglGetError;
1794   glGetFixedv:                              TglGetFixedv;
1795   glGetIntegerv:                            TglGetIntegerv;
1796   glGetLightxv:                             TglGetLightxv;
1797   glGetMaterialxv:                          TglGetMaterialxv;
1798   glGetPointerv:                            TglGetPointerv;
1799   glGetString:                              TglGetString;
1800   glGetTexEnviv:                            TglGetTexEnviv;
1801   glGetTexEnvxv:                            TglGetTexEnvxv;
1802   glGetTexParameteriv:                      TglGetTexParameteriv;
1803   glGetTexParameterxv:                      TglGetTexParameterxv;
1804   glHint:                                   TglHint;
1805   glIsBuffer:                               TglIsBuffer;
1806   glIsEnabled:                              TglIsEnabled;
1807   glIsTexture:                              TglIsTexture;
1808   glLightModelx:                            TglLightModelx;
1809   glLightModelxv:                           TglLightModelxv;
1810   glLightx:                                 TglLightx;
1811   glLightxv:                                TglLightxv;
1812   glLineWidthx:                             TglLineWidthx;
1813   glLoadIdentity:                           TglLoadIdentity;
1814   glLoadMatrix:                             TglLoadMatrix;
1815   glLogicOp:                                TglLogicOp;
1816   glMaterialx:                              TglMaterialx;
1817   glMaterialxv:                             TglMaterialxv;
1818   glMatrixMode:                             TglMatrixMode;
1819   glMultMatrixx:                            TglMultMatrixx;
1820   glMultiTexCoord4x:                        TglMultiTexCoord4x;
1821   glNormal3x:                               TglNormal3x;
1822   glNormalPointer:                          TglNormalPointer;
1823   glOrthox:                                 TglOrthox;
1824   glPixelStorei:                            TglPixelStorei;
1825   glPointParameterx:                        TglPointParameterx;
1826   glPointParameterxv:                       TglPointParameterxv;
1827   glPointSizex:                             TglPointSizex;
1828   glPolygonOffsetx:                         TglPolygonOffsetx;
1829   glPopMatrix:                              TglPopMatrix;
1830   glPushMatrix:                             TglPushMatrix;
1831   glReadPixels:                             TglReadPixels;
1832   glRotatex:                                TglRotatex;
1833   glSampleCoverage:                         TglSampleCoverage;
1834   glSampleCoveragex:                        TglSampleCoveragex;
1835   glScalex:                                 TglScalex;
1836   glScissor:                                TglScissor;
1837   glShadeModel:                             TglShadeModel;
1838   glStencilFunc:                            TglStencilFunc;
1839   glStencilMask:                            TglStencilMask;
1840   glStencilOp:                              TglStencilOp;
1841   glTexCoordPointer:                        TglTexCoordPointer;
1842   glTexEnvi:                                TglTexEnvi;
1843   glTexEnvx:                                TglTexEnvx;
1844   glTexEnviv:                               TglTexEnviv;
1845   glTexEnvxv:                               TglTexEnvxv;
1846   glTexImage2D:                             TglTexImage2D;
1847   glTexParameteri:                          TglTexParameteri;
1848   glTexParameterx:                          TglTexParameterx;
1849   glTexParameteriv:                         TglTexParameteriv;
1850   glTexParameterxv:                         TglTexParameterxv;
1851   glTexSubImage2D:                          TglTexSubImage2D;
1852   glTranslatex:                             TglTranslatex;
1853   glVertexPointer:                          TglVertexPointer;
1854   glViewport:                               TglViewport;
1855
1856 { ============================================== OpenGL ES 2.0 ======================================================= }
1857   glAttachShader:                           TglAttachShader;
1858   glBindAttribLocation:                     TglBindAttribLocation;
1859   glBindFramebuffer:                        TglBindFramebuffer;
1860   glBindRenderbuffer:                       TglBindRenderbuffer;
1861   glBlendColor:                             TglBlendColor;
1862   glBlendEquation:                          TglBlendEquation;
1863   glBlendEquationSeparate:                  TglBlendEquationSeparate;
1864   glBlendFuncSeparate:                      TglBlendFuncSeparate;
1865   glCheckFramebufferStatus:                 TglCheckFramebufferStatus;
1866   glCompileShader:                          TglCompileShader;
1867   glCreateProgram:                          TglCreateProgram;
1868   glCreateShader:                           TglCreateShader;
1869   glDeleteFramebuffers:                     TglDeleteFramebuffers;
1870   glDeleteProgram:                          TglDeleteProgram;
1871   glDeleteRenderbuffers:                    TglDeleteRenderbuffers;
1872   glDeleteShader:                           TglDeleteShader;
1873   glDetachShader:                           TglDetachShader;
1874   glDisableVertexAttribArray:               TglDisableVertexAttribArray;
1875   glEnableVertexAttribArray:                TglEnableVertexAttribArray;
1876   glFramebufferRenderbuffer:                TglFramebufferRenderbuffer;
1877   glFramebufferTexture2D:                   TglFramebufferTexture2D;
1878   glGenerateMipmap:                         TglGenerateMipmap;
1879   glGenFramebuffers:                        TglGenFramebuffers;
1880   glGenRenderbuffers:                       TglGenRenderbuffers;
1881   glGetActiveAttrib:                        TglGetActiveAttrib;
1882   glGetActiveUniform:                       TglGetActiveUniform;
1883   glGetAttachedShaders:                     TglGetAttachedShaders;
1884   glGetAttribLocation:                      TglGetAttribLocation;
1885   glGetFramebufferAttachmentParameteriv:    TglGetFramebufferAttachmentParameteriv;
1886   glGetProgramiv:                           TglGetProgramiv;
1887   glGetProgramInfoLog:                      TglGetProgramInfoLog;
1888   glGetRenderbufferParameteriv:             TglGetRenderbufferParameteriv;
1889   glGetShaderiv:                            TglGetShaderiv;
1890   glGetShaderInfoLog:                       TglGetShaderInfoLog;
1891   glGetShaderPrecisionFormat:               TglGetShaderPrecisionFormat;
1892   glGetShaderSource:                        TglGetShaderSource;
1893   glGetUniformfv:                           TglGetUniformfv;
1894   glGetUniformiv:                           TglGetUniformiv;
1895   glGetUniformLocation:                     TglGetUniformLocation;
1896   glGetVertexAttribfv:                      TglGetVertexAttribfv;
1897   glGetVertexAttribiv:                      TglGetVertexAttribiv;
1898   glGetVertexAttribPointerv:                TglGetVertexAttribPointerv;
1899   glIsFramebuffer:                          TglIsFramebuffer;
1900   glIsProgram:                              TglIsProgram;
1901   glIsRenderbuffer:                         TglIsRenderbuffer;
1902   glIsShader:                               TglIsShader;
1903   glLinkProgram:                            TglLinkProgram;
1904   glReleaseShaderCompiler:                  TglReleaseShaderCompiler;
1905   glRenderbufferStorage:                    TglRenderbufferStorage;
1906   glShaderBinary:                           TglShaderBinary;
1907   glShaderSource:                           TglShaderSource;
1908   glStencilFuncSeparate:                    TglStencilFuncSeparate;
1909   glStencilMaskSeparate:                    TglStencilMaskSeparate;
1910   glStencilOpSeparate:                      TglStencilOpSeparate;
1911   glUniform1f:                              TglUniform1f;
1912   glUniform1fv:                             TglUniform1fv;
1913   glUniform1i:                              TglUniform1i;
1914   glUniform1iv:                             TglUniform1iv;
1915   glUniform2f:                              TglUniform2f;
1916   glUniform2fv:                             TglUniform2fv;
1917   glUniform2i:                              TglUniform2i;
1918   glUniform2iv:                             TglUniform2iv;
1919   glUniform3f:                              TglUniform3f;
1920   glUniform3fv:                             TglUniform3fv;
1921   glUniform3i:                              TglUniform3i;
1922   glUniform3iv:                             TglUniform3iv;
1923   glUniform4f:                              TglUniform4f;
1924   glUniform4fv:                             TglUniform4fv;
1925   glUniform4i:                              TglUniform4i;
1926   glUniform4iv:                             TglUniform4iv;
1927   glUniformMatrix2fv:                       TglUniformMatrix2fv;
1928   glUniformMatrix3fv:                       TglUniformMatrix3fv;
1929   glUniformMatrix4fv:                       TglUniformMatrix4fv;
1930   glUseProgram:                             TglUseProgram;
1931   glValidateProgram:                        TglValidateProgram;
1932   glVertexAttrib1f:                         TglVertexAttrib1f;
1933   glVertexAttrib1fv:                        TglVertexAttrib1fv;
1934   glVertexAttrib2f:                         TglVertexAttrib2f;
1935   glVertexAttrib2fv:                        TglVertexAttrib2fv;
1936   glVertexAttrib3f:                         TglVertexAttrib3f;
1937   glVertexAttrib3fv:                        TglVertexAttrib3fv;
1938   glVertexAttrib4f:                         TglVertexAttrib4f;
1939   glVertexAttrib4fv:                        TglVertexAttrib4fv;
1940   glVertexAttribPointer:                    TglVertexAttribPointer;
1941
1942 { ============================================== OpenGL ES 3.0 ======================================================= }
1943   glReadBuffer:                             TglReadBuffer;
1944   glDrawRangeElements:                      TglDrawRangeElements;
1945   glTexImage3D:                             TglTexImage3D;
1946   glTexSubImage3D:                          TglTexSubImage3D;
1947   glCopyTexSubImage3D:                      TglCopyTexSubImage3D;
1948   glCompressedTexImage3D:                   TglCompressedTexImage3D;
1949   glCompressedTexSubImage3D:                TglCompressedTexSubImage3D;
1950   glGenQueries:                             TglGenQueries;
1951   glDeleteQueries:                          TglDeleteQueries;
1952   glIsQuery:                                TglIsQuery;
1953   glBeginQuery:                             TglBeginQuery;
1954   glEndQuery:                               TglEndQuery;
1955   glGetQueryiv:                             TglGetQueryiv;
1956   glGetQueryObjectuiv:                      TglGetQueryObjectuiv;
1957   glUnmapBuffer:                            TglUnmapBuffer;
1958   glGetBufferPointerv:                      TglGetBufferPointerv;
1959   glDrawBuffers:                            TglDrawBuffers;
1960   glUniformMatrix2x3fv:                     TglUniformMatrix2x3fv;
1961   glUniformMatrix3x2fv:                     TglUniformMatrix3x2fv;
1962   glUniformMatrix2x4fv:                     TglUniformMatrix2x4fv;
1963   glUniformMatrix4x2fv:                     TglUniformMatrix4x2fv;
1964   glUniformMatrix3x4fv:                     TglUniformMatrix3x4fv;
1965   glUniformMatrix4x3fv:                     TglUniformMatrix4x3fv;
1966   glBlitFramebuffer:                        TglBlitFramebuffer;
1967   glRenderbufferStorageMultisample:         TglRenderbufferStorageMultisample;
1968   glFramebufferTextureLayer:                TglFramebufferTextureLayer;
1969   glMapBufferRange:                         TglMapBufferRange;
1970   glFlushMappedBufferRange:                 TglFlushMappedBufferRange;
1971   glBindVertexArray:                        TglBindVertexArray;
1972   glDeleteVertexArrays:                     TglDeleteVertexArrays;
1973   glGenVertexArrays:                        TglGenVertexArrays;
1974   glIsVertexArray:                          TglIsVertexArray;
1975   glGetIntegeriv:                           TglGetIntegeriv;
1976   glBeginTransformFeedback:                 TglBeginTransformFeedback;
1977   glEndTransformFeedback:                   TglEndTransformFeedback;
1978   glBindBufferRange:                        TglBindBufferRange;
1979   glBindBufferBase:                         TglBindBufferBase;
1980   glTransformFeedbackVaryings:              TglTransformFeedbackVaryings;
1981   glGetTransformFeedbackVarying:            TglGetTransformFeedbackVarying;
1982   glVertexAttribIPointer:                   TglVertexAttribIPointer;
1983   glGetVertexAttribIiv:                     TglGetVertexAttribIiv;
1984   glGetVertexAttribIuiv:                    TglGetVertexAttribIuiv;
1985   glVertexAttribI4i:                        TglVertexAttribI4i;
1986   glVertexAttribI4ui:                       TglVertexAttribI4ui;
1987   glVertexAttribI4iv:                       TglVertexAttribI4iv;
1988   glVertexAttribI4uiv:                      TglVertexAttribI4uiv;
1989   glGetUniformuiv:                          TglGetUniformuiv;
1990   glGetFragDataLocation:                    TglGetFragDataLocation;
1991   glUniform1ui:                             TglUniform1ui;
1992   glUniform2ui:                             TglUniform2ui;
1993   glUniform3ui:                             TglUniform3ui;
1994   glUniform4ui:                             TglUniform4ui;
1995   glUniform1uiv:                            TglUniform1uiv;
1996   glUniform2uiv:                            TglUniform2uiv;
1997   glUniform3uiv:                            TglUniform3uiv;
1998   glUniform4uiv:                            TglUniform4uiv;
1999   glClearBufferiv:                          TglClearBufferiv;
2000   glClearBufferuiv:                         TglClearBufferuiv;
2001   glClearBufferfv:                          TglClearBufferfv;
2002   glClearBufferfi:                          TglClearBufferfi;
2003   glGetStringi:                             TglGetStringi;
2004   glCopyBufferSubData:                      TglCopyBufferSubData;
2005   glGetUniformIndices:                      TglGetUniformIndices;
2006   glGetActiveUniformsiv:                    TglGetActiveUniformsiv;
2007   glGetUniformBlockIndex:                   TglGetUniformBlockIndex;
2008   glGetActiveUniformBlockiv:                TglGetActiveUniformBlockiv;
2009   glGetActiveUniformBlockName:              TglGetActiveUniformBlockName;
2010   glUniformBlockBinding:                    TglUniformBlockBinding;
2011   glDrawArraysInstanced:                    TglDrawArraysInstanced;
2012   glDrawElementsInstanced:                  TglDrawElementsInstanced;
2013   glFenceSync:                              TglFenceSync;
2014   glIsSync:                                 TglIsSync;
2015   glDeleteSync:                             TglDeleteSync;
2016   glClientWaitSync:                         TglClientWaitSync;
2017   glWaitSync:                               TglWaitSync;
2018   glGetInteger64v:                          TglGetInteger64v;
2019   glGetSynciv:                              TglGetSynciv;
2020   glGetInteger64iv:                         TglGetInteger64iv;
2021   glGetBufferParameteri64v:                 TglGetBufferParameteri64v;
2022   glGenSamplers:                            TglGenSamplers;
2023   glDeleteSamplers:                         TglDeleteSamplers;
2024   glIsSampler:                              TglIsSampler;
2025   glBindSampler:                            TglBindSampler;
2026   glSamplerParameteri:                      TglSamplerParameteri;
2027   glSamplerParameteriv:                     TglSamplerParameteriv;
2028   glSamplerParameterf:                      TglSamplerParameterf;
2029   glSamplerParameterfv:                     TglSamplerParameterfv;
2030   glGetSamplerParameteriv:                  TglGetSamplerParameteriv;
2031   glGetSamplerParameterfv:                  TglGetSamplerParameterfv;
2032   glVertexAttribDivisor:                    TglVertexAttribDivisor;
2033   glBindTransformFeedback:                  TglBindTransformFeedback;
2034   glDeleteTransformFeedbacks:               TglDeleteTransformFeedbacks;
2035   glGenTransformFeedbacks:                  TglGenTransformFeedbacks;
2036   glIsTransformFeedback:                    TglIsTransformFeedback;
2037   glPauseTransformFeedback:                 TglPauseTransformFeedback;
2038   glResumeTransformFeedback:                TglResumeTransformFeedback;
2039   glGetProgramBinary:                       TglGetProgramBinary;
2040   glProgramBinary:                          TglProgramBinary;
2041   glProgramParameteri:                      TglProgramParameteri;
2042   glInvalidateFramebuffer:                  TglInvalidateFramebuffer;
2043   glInvalidateSubFramebuffer:               TglInvalidateSubFramebuffer;
2044   glTexStorage2D:                           TglTexStorage2D;
2045   glTexStorage3D:                           TglTexStorage3D;
2046   glGetInternalformativ:                    TglGetInternalformativ;
2047
2048 { ============================================== OpenGL ES 3.1 ======================================================= }
2049   glDispatchCompute:                        TglDispatchCompute;
2050   glDispatchComputeIndirect:                TglDispatchComputeIndirect;
2051   glDrawArraysIndirect:                     TglDrawArraysIndirect;
2052   glDrawElementsIndirect:                   TglDrawElementsIndirect;
2053   glFramebufferParameteri:                  TglFramebufferParameteri;
2054   glGetFramebufferParameteriv:              TglGetFramebufferParameteriv;
2055   glGetProgramInterfaceiv:                  TglGetProgramInterfaceiv;
2056   glGetProgramResourceIndex:                TglGetProgramResourceIndex;
2057   glGetProgramResourceName:                 TglGetProgramResourceName;
2058   glGetProgramResourceiv:                   TglGetProgramResourceiv;
2059   glGetProgramResourceLocation:             TglGetProgramResourceLocation;
2060   glUseProgramStages:                       TglUseProgramStages;
2061   glActiveShaderProgram:                    TglActiveShaderProgram;
2062   glCreateShaderProgramv:                   TglCreateShaderProgramv;
2063   glBindProgramPipeline:                    TglBindProgramPipeline;
2064   glDeleteProgramPipelines:                 TglDeleteProgramPipelines;
2065   glGenProgramPipelines:                    TglGenProgramPipelines;
2066   glIsProgramPipeline:                      TglIsProgramPipeline;
2067   glGetProgramPipelineiv:                   TglGetProgramPipelineiv;
2068   glProgramUniform1i:                       TglProgramUniform1i;
2069   glProgramUniform2i:                       TglProgramUniform2i;
2070   glProgramUniform3i:                       TglProgramUniform3i;
2071   glProgramUniform4i:                       TglProgramUniform4i;
2072   glProgramUniform1ui:                      TglProgramUniform1ui;
2073   glProgramUniform2ui:                      TglProgramUniform2ui;
2074   glProgramUniform3ui:                      TglProgramUniform3ui;
2075   glProgramUniform4ui:                      TglProgramUniform4ui;
2076   glProgramUniform1f:                       TglProgramUniform1f;
2077   glProgramUniform2f:                       TglProgramUniform2f;
2078   glProgramUniform3f:                       TglProgramUniform3f;
2079   glProgramUniform4f:                       TglProgramUniform4f;
2080   glProgramUniform1iv:                      TglProgramUniform1iv;
2081   glProgramUniform2iv:                      TglProgramUniform2iv;
2082   glProgramUniform3iv:                      TglProgramUniform3iv;
2083   glProgramUniform4iv:                      TglProgramUniform4iv;
2084   glProgramUniform1uiv:                     TglProgramUniform1uiv;
2085   glProgramUniform2uiv:                     TglProgramUniform2uiv;
2086   glProgramUniform3uiv:                     TglProgramUniform3uiv;
2087   glProgramUniform4uiv:                     TglProgramUniform4uiv;
2088   glProgramUniform1fv:                      TglProgramUniform1fv;
2089   glProgramUniform2fv:                      TglProgramUniform2fv;
2090   glProgramUniform3fv:                      TglProgramUniform3fv;
2091   glProgramUniform4fv:                      TglProgramUniform4fv;
2092   glProgramUniformMatrix2fv:                TglProgramUniformMatrix2fv;
2093   glProgramUniformMatrix3fv:                TglProgramUniformMatrix3fv;
2094   glProgramUniformMatrix4fv:                TglProgramUniformMatrix4fv;
2095   glProgramUniformMatrix2x3fv:              TglProgramUniformMatrix2x3fv;
2096   glProgramUniformMatrix3x2fv:              TglProgramUniformMatrix3x2fv;
2097   glProgramUniformMatrix2x4fv:              TglProgramUniformMatrix2x4fv;
2098   glProgramUniformMatrix4x2fv:              TglProgramUniformMatrix4x2fv;
2099   glProgramUniformMatrix3x4fv:              TglProgramUniformMatrix3x4fv;
2100   glProgramUniformMatrix4x3fv:              TglProgramUniformMatrix4x3fv;
2101   glValidateProgramPipeline:                TglValidateProgramPipeline;
2102   glGetProgramPipelineInfoLog:              TglGetProgramPipelineInfoLog;
2103   glBindImageTexture:                       TglBindImageTexture;
2104   glGetBooleaniv:                           TglGetBooleaniv;
2105   glMemoryBarrier:                          TglMemoryBarrier;
2106   glMemoryBarrierByRegion:                  TglMemoryBarrierByRegion;
2107   glTexStorage2DMultisample:                TglTexStorage2DMultisample;
2108   glGetMultisamplefv:                       TglGetMultisamplefv;
2109   glSampleMaski:                            TglSampleMaski;
2110   glGetTexLevelParameteriv:                 TglGetTexLevelParameteriv;
2111   glGetTexLevelParameterfv:                 TglGetTexLevelParameterfv;
2112   glBindVertexBuffer:                       TglBindVertexBuffer;
2113   glVertexAttribFormat:                     TglVertexAttribFormat;
2114   glVertexAttribIFormat:                    TglVertexAttribIFormat;
2115   glVertexAttribBinding:                    TglVertexAttribBinding;
2116   glVertexBindingDivisor:                   TglVertexBindingDivisor;
2117
2118 { ===================================================== EGL ========================================================== }
2119 type
2120   EGLint                = Integer;
2121   EGLboolean            = Cardinal;
2122   EGLenum               = Cardinal;
2123   EGLConfig             = Pointer;
2124   EGLContext            = Pointer;
2125   EGLDisplay            = Pointer;
2126   EGLSurface            = Pointer;
2127   EGLClientBuffer       = Pointer;
2128   EGLNativeDisplayType  = Pointer;
2129   EGLNativePixmapType   = Pointer;
2130   EGLNativeWindowType   = packed record
2131      element: Cardinal;
2132      width: Integer;
2133      height: Integer;
2134   end;
2135
2136   PEGLint               = ^EGLint;
2137   PEGLboolean           = ^EGLboolean;
2138   PEGLenum              = ^EGLenum;
2139   PEGLConfig            = ^EGLConfig;
2140   PEGLContext           = ^EGLContext;
2141   PEGLDisplay           = ^EGLDisplay;
2142   PEGLSurface           = ^EGLSurface;
2143   PEGLClientBuffer      = ^EGLClientBuffer;
2144   PEGLNativeDisplayType = ^EGLNativeDisplayType;
2145   PEGLNativePixmapType  = ^EGLNativePixmapType;
2146   PEGLNativeWindowType  = ^EGLNativeWindowType;
2147
2148 const
2149   EGL_FALSE: EGLboolean = 0;
2150   EGL_TRUE:  EGLboolean = 1;
2151
2152   EGL_DEFAULT_DISPLAY:  EGLNativeDisplayType  = nil;
2153   EGL_NO_CONTEXT:       EGLContext              = nil;
2154   EGL_NO_DISPLAY:                         EGLDisplay            = nil;
2155   EGL_NO_SURFACE:                         EGLSurface            = nil;
2156
2157   EGL_DONT_CARE: EGLint = -1;
2158
2159   EGL_SUCCESS                         = $3000;
2160   EGL_NOT_INITIALIZED                 = $3001;
2161   EGL_BAD_ACCESS                      = $3002;
2162   EGL_BAD_ALLOC                       = $3003;
2163   EGL_BAD_ATTRIBUTE                   = $3004;
2164   EGL_BAD_CONFIG                      = $3005;
2165   EGL_BAD_CONTEXT                     = $3006;
2166   EGL_BAD_CURRENT_SURFACE             = $3007;
2167   EGL_BAD_DISPLAY                     = $3008;
2168   EGL_BAD_MATCH                       = $3009;
2169   EGL_BAD_NATIVE_PIXMAP               = $300A;
2170   EGL_BAD_NATIVE_WINDOW               = $300B;
2171   EGL_BAD_PARAMETER                   = $300C;
2172   EGL_BAD_SURFACE                     = $300D;
2173   EGL_CONTEXT_LOST                    = $300E;
2174
2175   EGL_BUFFER_SIZE                     = $3020;
2176   EGL_ALPHA_SIZE                      = $3021;
2177   EGL_BLUE_SIZE                       = $3022;
2178   EGL_GREEN_SIZE                      = $3023;
2179   EGL_RED_SIZE                        = $3024;
2180   EGL_DEPTH_SIZE                      = $3025;
2181   EGL_STENCIL_SIZE                    = $3026;
2182   EGL_CONFIG_CAVEAT                   = $3027;
2183   EGL_CONFIG_ID                       = $3028;
2184   EGL_LEVEL                           = $3029;
2185   EGL_MAX_PBUFFER_HEIGHT              = $302A;
2186   EGL_MAX_PBUFFER_PIXELS              = $302B;
2187   EGL_MAX_PBUFFER_WIDTH               = $302C;
2188   EGL_NATIVE_RENDERABLE               = $302D;
2189   EGL_NATIVE_VISUAL_ID                = $302E;
2190   EGL_NATIVE_VISUAL_TYPE              = $302F;
2191   EGL_SAMPLES                         = $3031;
2192   EGL_SAMPLE_BUFFERS                  = $3032;
2193   EGL_SURFACE_TYPE                    = $3033;
2194   EGL_TRANSPARENT_TYPE                = $3034;
2195   EGL_TRANSPARENT_BLUE_VALUE          = $3035;
2196   EGL_TRANSPARENT_GREEN_VALUE         = $3036;
2197   EGL_TRANSPARENT_RED_VALUE           = $3037;
2198   EGL_NONE                            = $3038;
2199   EGL_BIND_TO_TEXTURE_RGB             = $3039;
2200   EGL_BIND_TO_TEXTURE_RGBA            = $303A;
2201   EGL_MIN_SWAP_INTERVAL               = $303B;
2202   EGL_MAX_SWAP_INTERVAL               = $303C;
2203   EGL_LUMINANCE_SIZE                  = $303D;
2204   EGL_ALPHA_MASK_SIZE                 = $303E;
2205   EGL_COLOR_BUFFER_TYPE               = $303F;
2206   EGL_RENDERABLE_TYPE                 = $3040;
2207   EGL_MATCH_NATIVE_PIXMAP             = $3041;
2208   EGL_CONFORMANT                      = $3042;
2209
2210   EGL_SLOW_CONFIG                     = $3050;
2211   EGL_NON_CONFORMANT_CONFIG           = $3051;
2212   EGL_TRANSPARENT_RGB                 = $3052;
2213   EGL_RGB_BUFFER                      = $308E;
2214   EGL_LUMINANCE_BUFFER                = $308F;
2215
2216   EGL_NO_TEXTURE                      = $305C;
2217   EGL_TEXTURE_RGB                     = $305D;
2218   EGL_TEXTURE_RGBA                    = $305E;
2219   EGL_TEXTURE_2D                      = $305F;
2220
2221   EGL_PBUFFER_BIT                     = $0001;
2222   EGL_PIXMAP_BIT                      = $0002;
2223   EGL_WINDOW_BIT                      = $0004;
2224   EGL_VG_COLORSPACE_LINEAR_BIT        = $0020;
2225   EGL_VG_ALPHA_FORMAT_PRE_BIT         = $0040;
2226   EGL_MULTISAMPLE_RESOLVE_BOX_BIT     = $0200;
2227   EGL_SWAP_BEHAVIOR_PRESERVED_BIT     = $0400;
2228
2229   EGL_OPENGL_ES_BIT                   = $0001;
2230   EGL_OPENVG_BIT                      = $0002;
2231   EGL_OPENGL_ES2_BIT                  = $0004;
2232   EGL_OPENGL_BIT                      = $0008;
2233
2234   EGL_VENDOR                          = $3053;
2235   EGL_VERSION                         = $3054;
2236   EGL_EXTENSIONS                      = $3055;
2237   EGL_CLIENT_APIS                     = $308D;
2238
2239   EGL_HEIGHT                          = $3056;
2240   EGL_WIDTH                           = $3057;
2241   EGL_LARGEST_PBUFFER                 = $3058;
2242   EGL_TEXTURE_FORMAT                  = $3080;
2243   EGL_TEXTURE_TARGET                  = $3081;
2244   EGL_MIPMAP_TEXTURE                  = $3082;
2245   EGL_MIPMAP_LEVEL                    = $3083;
2246   EGL_RENDER_BUFFER                   = $3086;
2247   EGL_VG_COLORSPACE                   = $3087;
2248   EGL_VG_ALPHA_FORMAT                 = $3088;
2249   EGL_HORIZONTAL_RESOLUTION           = $3090;
2250   EGL_VERTICAL_RESOLUTION             = $3091;
2251   EGL_PIXEL_ASPECT_RATIO              = $3092;
2252   EGL_SWAP_BEHAVIOR                   = $3093;
2253   EGL_MULTISAMPLE_RESOLVE             = $3099;
2254
2255   EGL_BACK_BUFFER                     = $3084;
2256   EGL_SINGLE_BUFFER                   = $3085;
2257
2258   EGL_VG_COLORSPACE_sRGB              = $3089;
2259   EGL_VG_COLORSPACE_LINEAR            = $308A;
2260
2261   EGL_VG_ALPHA_FORMAT_NONPRE          = $308B;
2262   EGL_VG_ALPHA_FORMAT_PRE             = $308C;
2263
2264   EGL_DISPLAY_SCALING                 = 10000;
2265
2266   EGL_UNKNOWN: EGLint                 = -1;
2267
2268   EGL_BUFFER_PRESERVED                = $3094;
2269   EGL_BUFFER_DESTROYED                = $3095;
2270
2271   EGL_OPENVG_IMAGE                    = $3096;
2272
2273   EGL_CONTEXT_CLIENT_TYPE             = $3097;
2274
2275   EGL_CONTEXT_CLIENT_VERSION          = $3098;
2276
2277   EGL_MULTISAMPLE_RESOLVE_DEFAULT     = $309A;
2278   EGL_MULTISAMPLE_RESOLVE_BOX         = $309B;
2279
2280   EGL_OPENGL_ES_API                   = $30A0;
2281   EGL_OPENVG_API                      = $30A1;
2282   EGL_OPENGL_API                      = $30A2;
2283
2284   EGL_DRAW                            = $3059;
2285   EGL_READ                            = $305A;
2286
2287   EGL_CORE_NATIVE_ENGINE              = $305B;
2288
2289   EGL_COLORSPACE                      = EGL_VG_COLORSPACE;
2290   EGL_ALPHA_FORMAT                    = EGL_VG_ALPHA_FORMAT;
2291   EGL_COLORSPACE_sRGB                 = EGL_VG_COLORSPACE_sRGB;
2292   EGL_COLORSPACE_LINEAR               = EGL_VG_COLORSPACE_LINEAR;
2293   EGL_ALPHA_FORMAT_NONPRE             = EGL_VG_ALPHA_FORMAT_NONPRE;
2294   EGL_ALPHA_FORMAT_PRE                = EGL_VG_ALPHA_FORMAT_PRE;
2295
2296 type
2297   TeglGetError  = function: EGLint; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2298
2299   TeglGetDisplay  = function(aDisplayID: EGLNativeDisplayType): EGLDisplay; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2300   TeglInitialize  = function(aDisplay: EGLDisplay; aMajor, aMinor: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2301   TeglTerminate   = function(aDisplay: EGLDisplay): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2302
2303   TeglQueryString = function(aDisplay: EGLDisplay; name: EGLint): PAnsiChar; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2304
2305   TeglGetConfigs      = function(aDisplay: EGLDisplay; aConfigs: PEGLConfig; aConfigSize: EGLint; numConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2306   TeglChooseConfig    = function(aDisplay: EGLDisplay; const aAttribList: PEGLint; aConfigs: PEGLConfig; aConfigSize: EGLint; numConfig: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2307   TeglGetConfigAttrib = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aAttribute: EGLint; aValue : PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2308
2309   TeglCreateWindowSurface   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aWinType: PEGLNativeWindowType; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2310   TeglCreatePbufferSurface  = function(aDisplay: EGLDisplay; aConfig: EGLConfig; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2311   TeglCreatePixmapSurface   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aPixmap: EGLNativePixmapType; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2312   TeglDestroySurface        = function(aDisplay: EGLDisplay; aSurface: EGLSurface): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2313   TeglQuerySurface          = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aAttribute: EGLint; aValue: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2314
2315   TeglBindAPI   = function(aApi: EGLenum): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2316   TeglQueryAPI  = function: EGLenum; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2317
2318   TeglWaitClient = function: EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2319
2320   TeglReleaseThread = function: EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2321
2322   TeglCreatePbufferFromClientBuffer = function(aDisplay: EGLDisplay; aBufType: EGLenum; aBuffer: EGLClientBuffer; aConfig: EGLConfig; const aAttribList: PEGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2323
2324   TeglSurfaceAttrib   = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aAttribute: EGLint; aValue: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2325   TeglBindTexImage    = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aBuffer: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2326   TeglReleaseTexImage = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aBuffer: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2327
2328   TeglSwapInterval = function(aDisplay: EGLDisplay; aInterval: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2329
2330   TeglCreateContext   = function(aDisplay: EGLDisplay; aConfig: EGLConfig; aShareContext: EGLContext; const aAttribList: PEGLint): EGLContext; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2331   TeglDestroyContext  = function(aDisplay: EGLDisplay; aContext: EGLContext): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2332   TeglMakeCurrent     = function(aDisplay: EGLDisplay; aDraw: EGLSurface; aRead: EGLSurface; aContext: EGLContext): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2333
2334   TeglGetCurrentContext = function: EGLContext; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2335   TeglGetCurrentSurface = function(aReadDraw: EGLint): EGLSurface; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2336   TeglGetCurrentDisplay = function: EGLDisplay; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2337   TeglQueryContext      = function(aDisplay: EGLDisplay; aContext: EGLContext; aAttribute: EGLint; aValue: PEGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2338
2339   TeglWaitGL      = function: EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2340   TeglWaitNative  = function(aEngine: EGLint): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2341   TeglSwapBuffers = function(aDisplay: EGLDisplay; aSurface: EGLSurface): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2342   TeglCopyBuffers = function(aDisplay: EGLDisplay; aSurface: EGLSurface; aTarget: EGLNativePixmapType): EGLBoolean; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2343
2344   TeglGetProcAddress = function(const aProcName: PAnsiChar): Pointer; {$IFDEF DGL_WIN}stdcall;{$ELSE}cdecl;{$ENDIF}
2345
2346 var
2347   eglGetError: TeglGetError;
2348
2349   eglGetDisplay:  TeglGetDisplay;
2350   eglInitialize:  TeglInitialize;
2351   eglTerminate:   TeglTerminate;
2352
2353   eglQueryString: TeglQueryString;
2354
2355   eglGetConfigs:      TeglGetConfigs;
2356   eglChooseConfig:    TeglChooseConfig;
2357   eglGetConfigAttrib: TeglGetConfigAttrib;
2358
2359   eglCreateWindowSurface:   TeglCreateWindowSurface;
2360   eglCreatePbufferSurface:  TeglCreatePbufferSurface;
2361   eglCreatePixmapSurface:   TeglCreatePixmapSurface;
2362   eglDestroySurface:        TeglDestroySurface;
2363   eglQuerySurface:          TeglQuerySurface;
2364
2365   eglBindAPI:   TeglBindAPI;
2366   eglQueryAPI:  TeglQueryAPI;
2367
2368   eglWaitClient: TeglWaitClient;
2369
2370   eglReleaseThread: TeglReleaseThread;
2371
2372   eglCreatePbufferFromClientBuffer: TeglCreatePbufferFromClientBuffer;
2373
2374   eglSurfaceAttrib:   TeglSurfaceAttrib;
2375   eglBindTexImage:    TeglBindTexImage;
2376   eglReleaseTexImage: TeglReleaseTexImage;
2377
2378   eglSwapInterval: TeglSwapInterval;
2379
2380   eglCreateContext:   TeglCreateContext;
2381   eglDestroyContext:  TeglDestroyContext;
2382   eglMakeCurrent:     TeglMakeCurrent;
2383
2384   eglGetCurrentContext: TeglGetCurrentContext;
2385   eglGetCurrentSurface: TeglGetCurrentSurface;
2386   eglGetCurrentDisplay: TeglGetCurrentDisplay;
2387   eglQueryContext:      TeglQueryContext;
2388
2389   eglWaitGL:      TeglWaitGL;
2390   eglWaitNative:  TeglWaitNative;
2391   eglSwapBuffers: TeglSwapBuffers;
2392   eglCopyBuffers: TeglCopyBuffers;
2393
2394   eglGetProcAddress: TeglGetProcAddress;
2395
2396 { =================================================== DelphiGL ======================================================= }
2397 type
2398   EdglOpenGLES = class(Exception);
2399   EeglError = class(EdglOpenGLES)
2400   public
2401     ErrorCode: EGLint;
2402     constructor Create(const msg: string; const aErrorCode: EGLint);
2403   end;
2404
2405   TdglRenderContext = packed record
2406     Display: EGLDisplay;
2407     Surface: EGLSurface;
2408     Context: EGLContext;
2409   end;
2410
2411 function InitOpenGLES(const aOpenGLESLibName: String = LIBNAME_OPENGLES; aEGLLibName: String = LIBNAME_EGL): Boolean;
2412
2413 function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType;
2414                                 const aWindowType: PEGLNativeWindowType;
2415                                 const aConfigAttribs: PEGLint;
2416                                 const aContextAttribs: PEGLint): TdglRenderContext;
2417 procedure DestroyRenderingContext(const aContext: TdglRenderContext);
2418 function ActivateRenderingContext(const aContext: TdglRenderContext): Boolean;
2419 function DeactivateRenderingContext(const aContext: TdglRenderContext): Boolean;
2420 procedure SwapBuffers(const aContext: TdglRenderContext);
2421
2422 procedure ReadExtensions;
2423
2424 implementation
2425
2426 var
2427   LibHandleOpenGLES: Pointer = nil;
2428   LibHandleEGL:      Pointer = nil;
2429
2430 function dglLoadLibrary(const name: PChar): Pointer;
2431 begin
2432   {$IFDEF DGL_LINUX}
2433   result := dlopen(name, RTLD_LAZY);
2434   {$ENDIF}
2435 end;
2436
2437 function dglGetProcAddress(const aProcName: PAnsiChar): Pointer;
2438 begin
2439   result := nil;
2440
2441   if Assigned(LibHandleOpenGLES) then
2442     result := dlsym(LibHandleOpenGLES, aProcName);
2443
2444   if not Assigned(result) and Assigned(eglGetProcAddress) then
2445     result := eglGetProcAddress(aProcName);
2446
2447   if not Assigned(result) and Assigned(LibHandleEGL) then
2448     result := dlsym(LibHandleEGL, aProcName);
2449 end;
2450
2451 function dglFreeAndNilLibrary(var aLibHandle: Pointer): Boolean;
2452 begin
2453   if Assigned(aLibHandle) then begin
2454     {$IFDEF DGL_LINUX}
2455     result := (dlclose(aLibHandle) = 0);
2456     aLibHandle := nil;
2457     {$ENDIF}
2458   end else
2459     result := false;
2460 end;
2461
2462 procedure ReadOpenGLCore;
2463 begin
2464
2465 end;
2466
2467 function InitOpenGLES(const aOpenGLESLibName: String; aEGLLibName: String): Boolean;
2468 begin
2469   result := true;
2470
2471   if Assigned(LibHandleOpenGLES) then
2472     dglFreeAndNilLibrary(LibHandleOpenGLES);
2473
2474   if Assigned(LibHandleEGL) then
2475     dglFreeAndNilLibrary(LibHandleEGL);
2476
2477   LibHandleOpenGLES := dglLoadLibrary(PChar(aOpenGLESLibName));
2478   LibHandleEGL      := dglLoadLibrary(PChar(aEGLLibName));
2479
2480   // load EGL procedures
2481   if Assigned(LibHandleEGL) then begin
2482     eglGetProcAddress                 := dglGetProcAddress('eglGetProcAddress');
2483     eglGetError                       := dglGetProcAddress('eglGetError');
2484     eglGetDisplay                     := dglGetProcAddress('eglGetDisplay');
2485     eglInitialize                     := dglGetProcAddress('eglInitialize');
2486     eglTerminate                      := dglGetProcAddress('eglTerminate');
2487     eglQueryString                    := dglGetProcAddress('eglQueryString');
2488     eglGetConfigs                     := dglGetProcAddress('eglGetConfigs');
2489     eglChooseConfig                   := dglGetProcAddress('eglChooseConfig');
2490     eglGetConfigAttrib                := dglGetProcAddress('eglGetConfigAttrib');
2491     eglCreateWindowSurface            := dglGetProcAddress('eglCreateWindowSurface');
2492     eglCreatePbufferSurface           := dglGetProcAddress('eglCreatePbufferSurface');
2493     eglCreatePixmapSurface            := dglGetProcAddress('eglCreatePixmapSurface');
2494     eglDestroySurface                 := dglGetProcAddress('eglDestroySurface');
2495     eglQuerySurface                   := dglGetProcAddress('eglQuerySurface');
2496     eglBindAPI                        := dglGetProcAddress('eglBindAPI');
2497     eglQueryAPI                       := dglGetProcAddress('eglQueryAPI');
2498     eglWaitClient                     := dglGetProcAddress('eglWaitClient');
2499     eglReleaseThread                  := dglGetProcAddress('eglReleaseThread');
2500     eglCreatePbufferFromClientBuffer  := dglGetProcAddress('eglCreatePbufferFromClientBuffer');
2501     eglSurfaceAttrib                  := dglGetProcAddress('eglSurfaceAttrib');
2502     eglBindTexImage                   := dglGetProcAddress('eglBindTexImage');
2503     eglReleaseTexImage                := dglGetProcAddress('eglReleaseTexImage');
2504     eglSwapInterval                   := dglGetProcAddress('eglSwapInterval');
2505     eglCreateContext                  := dglGetProcAddress('eglCreateContext');
2506     eglDestroyContext                 := dglGetProcAddress('eglDestroyContext');
2507     eglMakeCurrent                    := dglGetProcAddress('eglMakeCurrent');
2508     eglGetCurrentContext              := dglGetProcAddress('eglGetCurrentContext');
2509     eglGetCurrentSurface              := dglGetProcAddress('eglGetCurrentSurface');
2510     eglGetCurrentDisplay              := dglGetProcAddress('eglGetCurrentDisplay');
2511     eglQueryContext                   := dglGetProcAddress('eglQueryContext');
2512     eglWaitGL                         := dglGetProcAddress('eglWaitGL');
2513     eglWaitNative                     := dglGetProcAddress('eglWaitNative');
2514     eglSwapBuffers                    := dglGetProcAddress('eglSwapBuffers');
2515     eglCopyBuffers                    := dglGetProcAddress('eglCopyBuffers');
2516   end else
2517     result := false;
2518 end;
2519
2520 procedure RaiseEglError(const aMsg: String);
2521 var err: EGLint;
2522 begin
2523   err := eglGetError();
2524   raise EeglError.Create(aMsg + ' ErrorCode: 0x' + IntToHex(err, 8), err);
2525 end;
2526
2527 function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType; const aWindowType: PEGLNativeWindowType;
2528   const aConfigAttribs: PEGLint; const aContextAttribs: PEGLint): TdglRenderContext;
2529 var
2530   ConfigCount: EGLint;
2531   Config: EGLConfig;
2532 begin
2533   if (not Assigned(LibHandleOpenGLES) or not Assigned(LibHandleEGL)) and
2534      not InitOpenGLES then
2535       raise EdglOpenGLES.Create('unable to initialize OpenGL library');
2536
2537   result.Display := eglGetDisplay(aDisplayType);
2538   if (result.Display = EGL_NO_DISPLAY) then
2539     RaiseEglError('unable to get display.');
2540
2541   if (eglInitialize(result.Display, nil, nil) <> EGL_TRUE) then
2542     RaiseEglError('unable to initialize egl.');
2543
2544   if (eglChooseConfig(result.Display, aConfigAttribs, @Config, 1, @ConfigCount) <> EGL_TRUE) or
2545      (ConfigCount < 1) then
2546     RaiseEglError('unable to get suitable config.');
2547
2548   if (eglBindAPI(EGL_OPENGL_ES_API) <> EGL_TRUE) then
2549     RaiseEglError('unable to get an appropriate EGL frame buffer configuration.');
2550
2551   result.Surface := eglCreateWindowSurface(result.Display, Config, aWindowType, nil);
2552   if (result.Surface = EGL_NO_SURFACE) then
2553     RaiseEglError('unable to create window surface.');
2554
2555   result.Context := eglCreateContext(result.Display, Config, EGL_NO_CONTEXT, aContextAttribs);
2556   if (result.Context = EGL_NO_CONTEXT) then begin
2557     eglDestroySurface(result.Display, result.Surface);
2558     RaiseEglError('unable to create context.');
2559   end;
2560 end;
2561
2562 procedure DestroyRenderingContext(const aContext: TdglRenderContext);
2563 begin
2564   if (eglGetCurrentContext = aContext.Context) and
2565      not DeactivateRenderingContext(aContext) then
2566     RaiseEglError('unable to unbind context.');
2567
2568   if (eglDestroyContext(aContext.Display, aContext.Context) <> EGL_TRUE) then
2569     RaiseEglError('unable to destory context.');
2570
2571   if (eglDestroySurface(aContext.Display, aContext.Surface) <> EGL_TRUE) then
2572     RaiseEglError('unable to destroy surface.');
2573 end;
2574
2575 function ActivateRenderingContext(const aContext: TdglRenderContext): Boolean;
2576 begin
2577   result := (eglMakeCurrent(aContext.Display, aContext.Surface, aContext.Surface, aContext.Context) = GL_TRUE);
2578 end;
2579
2580 function DeactivateRenderingContext(const aContext: TdglRenderContext): Boolean;
2581 begin
2582   result := (eglMakeCurrent(aContext.Display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT) = EGL_TRUE);
2583 end;
2584
2585 procedure SwapBuffers(const aContext: TdglRenderContext);
2586 begin
2587   eglSwapBuffers(aContext.Display, aContext.Surface);
2588 end;
2589
2590 procedure ReadExtensions;
2591 begin
2592
2593 end;
2594
2595 constructor EeglError.Create(const msg: string; const aErrorCode: EGLint);
2596 begin
2597   inherited Create(msg);
2598   ErrorCode := aErrorCode;
2599 end;
2600
2601 end.