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