LZScene

Форк
0
/
OpenGL1x.pas 
5219 строк · 292.3 Кб
1
//
2
// This unit is part of the GLScene Engine https://github.com/glscene
3
//
4
{
5
   OpenGL 1.x import unit for GLScene. Unit remains "general purpose", but with
6
   a more "pragmatic" approach :)
7

8
   This unit is based on OpenGL12.pas orginally written by Mike Lischke,
9
   please refer to OpenGL12.pas header.
10

11
	 History :  
12
       23/01/11 - DanB - Entry points now use procedural types from OpenGLTokens.pas
13
                            Added OpenGL 4.1 + ARB extensions
14
                            Switched to use GLS_REGIONS define
15
       23/08/10 - Yar - Moved tokens part to OpenGLTokens.pas
16
       22/07/10 - Yar - Added GL_ARB_debug_output constant
17
       01/06/10 - Yar - Fixes for Linux x64
18
       31/05/10 - Yar - Added WGL_NV_gpu_affinity
19
       12/05/10 - Yar - Added GL_ARB_texture_compression_bptc
20
       04/05/10 - Yar - Added GL_S3_s3tc extension (thanks to Rustam Asmandiarov aka Predator)
21
       01/05/10 - DanB - Fixed glGetTransformFeedbackVarying params
22
       16/04/10 - Yar - Added Graphics Remedy's Extensions
23
       28/03/10 - DanB - Added missing OpenGL 3.1/3.2 function lookups +
24
                            added bindless graphics extensions
25
       18/03/10 - Yar - Added more GLX extensions
26
                          (thanks to Rustam Asmandiarov aka Predator)
27
       12/03/10 - DanB - OpenGL 3.3/4.0 support (new ARB extensions), removed
28
                            _ARB suffix from functions/procedures in
29
                            GL_ARB_draw_buffers_blend + GL_ARB_sample_shading
30
       04/03/10 - DanB - Organised core into relevant + deprecated sections,
31
                            fixed a couple of function params + misc changes.
32
       12/02/10 - Yar -  Added GL_AMD_vertex_shader_tessellator
33
       07/02/10 - Yar -  Added GL_NV_primitive_restart
34
       21/01/10 - DaStr - Bugfixed wglChoosePixelFormatARB() and
35
                              wglCreatePbufferARB() parameters
36
       07/01/10 - DaStr - Added WGL_COLOR_SAMPLES_NV (thanks YarUndeoaker)
37
       25/12/09 - DaStr - Added GL_NV_copy_image, GL_LUMINANCE_INTEGER,
38
                              GL_LUMINANCE_ALPHA_INTEGER extentions and constants
39
                             Re-added $region declarations (thanks YarUndeoaker)
40
       13/12/09 - DaStr - Added missing stdcall/cdecl modifiers
41
       25/10/09 - DaStr - Added some texture compression extensions and updated
42
                              glTransformFeedbackVaryings()(thanks YarUndeoaker)
43
       28/09/09 - DaStr - Added some NVidia-specific extensions (thanks YarUndeoaker)
44
       30/08/09 - DanB - GLsync changed to NativeInt, fixes to glBindBufferRange calls
45
       14/08/09 - DanB - Added missing GL_ARB_framebuffer_object extension check + fixed typo
46
       04/08/09 - DanB - OpenGL 3.1/3.2 support + new ARB extensions added
47
       28/07/09 - DaStr - Added GL_GEOMETRY_PROGRAM_NV and related extensions
48
       20/01/08 - DanB - Fix due to Delphi6 not containing UInt64
49
       05/10/08 - DanB - Moved error handling code here from GLContext.pas
50
                            OpenGL 3.0 support, new core features + ARB extensions
51
       23/03/08 - DanB - Added more Vendor/EXT extensions
52
       17/03/08 - mrqzzz - uncommented some constants "GL_NORMAL_MAP_EXT,..."
53
                              to keep compatibility with dws2OpenGL1x.
54
       16/03/08 - DanB - Major rewrite of unit, including:
55
                            OpenGL 1.3, 1.4, 1.5, 2.0, 2.1 support.
56
                            removed TRCOptions (not used).
57
                            moved MRT_BUFFERS constant to GLContext.pas (isn't core openGL).
58
                            several new ARB extensions added.
59
                            several new Vendor/EXT exensions added.
60
                            new function IsOpenGLVersionMet added.
61
                            restructured unit so extensions are in numerical order.
62
       17/06/07 - LC - Added GL_ARB_pixel_buffer_object, GL_EXT_pixel_buffer_object
63
       22/03/07 - DaStr - Removed GetTextureRectangle (had many useless checks)
64
       16/03/07 - DaStr - Dropped Kylix support in favor of FPC
65
                             (thanks Burkhard Carstens) (BugTracekrID=1681585)
66
       09/03/07 - DaStr - Added GL_ARB_draw_buffers (thanks riz)
67
       03/03/07 - DaStr - Added GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT
68
       02/03/07 - DaStr - Added GL_[ARB/EXT]_texture_rectangle
69
                             Added GetTextureRectangle
70
       10/01/07 - LC - Added GL_EXT_framebuffer_object
71
       11/09/06 - NC - Added GL_ARB_texture_float, GL_ARB_texture_non_power_of_two
72
       13/10/04 - NC - Added GL_ATI_draw_buffers
73
       08/10/04 - LR - Added const in the prototype of the following function for compatibility :
74
                              TGLUTessCombineProc, TGLUTessCombineDataProc, gluPickMatrix
75
      gluProject, gluUnProject, gluTessVertex, gluLoadSamplingMatrices
76
       04/10/04 - NC - Added GL_ATI_texture_float, WGL_ATI_pixel_format_float,
77
                          WGL_NV_float_buffer, GL_NV_float_buffer
78
       08/07/04 - LR - Change case for Linux
79
       05/07/04 - LR - Corrections for Linux. Now glX function are directly load
80
                          by external action (like for Windows). So i suppress
81
                          the function LoadLinuxOpenGL.
82
       28/06/04 - LR - Removed ..\ from the GLScene.inc
83
       24/06/04 - SG - Added GL_ARB_fragment_program
84
       17/05/04 - EG - Dropped EXT_vertex_array (assumed as standard)
85
       06/04/04 - EG - Added GL_ARB_shader_objects, GL_ARB_vertex_shader
86
                          and GL_ARB_fragment_shader, dropped a few oldies
87
       13/02/04 - EG - Added GL_NV_texture_rectangle
88
       18/11/03 - EG - Fixed binding of core extensions, added GL_ARB_depth_texture
89
                          and GL_ARB_shadow support
90
       20/09/03 - EG - Added GL_NV_occlusion_query, dropped some more oldies
91
       09/09/03 - EG - Added GL_ARB_vertex_buffer_object, dropped some oldies
92
       04/09/03 - EG - Added GL_ARB_vertex_program
93
       23/07/03 - EG - Creation from OpenGL12.pas "morph": classic OpenGL
94
                          calls made static, obsolete/rare extensions support
95
                          dropped
96
    
97
}
98
unit OpenGL1x;
99

100
interface
101

102
{$I GLScene.inc}
103

104
 // DaStr: MULTITHREADOPENGL is defined in GLScene.inc, but you can override it
105
 // manually here, though I would not reccomend it. This is because other units
106
 // may depend on this option too. So if you need this option, please use the
107
 // _MULTITHREAD define in GLScene.inc.
108
{.$define MULTITHREADOPENGL}
109

110
uses
111
  SysUtils, OpenGLTokens, GLVectorTypes,
112
  {$IFDEF MSWINDOWS}
113
    Windows
114
  {$ENDIF }
115
  {$IFDEF GLS_X11_SUPPORT}
116
     X, Xlib, XUtil,
117
  {$ENDIF}
118
  {$IFDEF UNIX}
119
    {Libc,}Types, LCLType, dynlibs
120
  {$ENDIF}
121
  ;
122
{$IFDEF GLS_REGIONS} {$region 'OpenGL extension feature checks'} {$ENDIF}
123

124
{$IFDEF MULTITHREADOPENGL}
125
threadvar
126
{$else}
127
var
128
{$ENDIF}
129
   // supported version checks
130
   GL_VERSION_1_0,
131
   GL_VERSION_1_1,
132
   GL_VERSION_1_2,
133
   GL_VERSION_1_3,
134
   GL_VERSION_1_4,
135
   GL_VERSION_1_5,
136
   GL_VERSION_2_0,
137
   GL_VERSION_2_1,
138
   GL_VERSION_3_0,
139
   GL_VERSION_3_1,
140
   GL_VERSION_3_2,
141
   GL_VERSION_3_3,
142
   GL_VERSION_4_0,
143
   GL_VERSION_4_1,
144
   GL_VERSION_4_2,
145
   GL_VERSION_4_3,
146
   GL_VERSION_4_4,
147
   GLU_VERSION_1_1,
148
   GLU_VERSION_1_2,
149
   GLU_VERSION_1_3: Boolean;
150

151
   // ARB approved OpenGL extension checks
152
   GL_ARB_blend_func_extended,
153
   GL_ARB_color_buffer_float,
154
   GL_ARB_compatibility,
155
   GL_ARB_copy_buffer,
156
   GL_ARB_debug_output,
157
   GL_ARB_depth_buffer_float,
158
   GL_ARB_depth_clamp,
159
   GL_ARB_depth_texture,
160
   GL_ARB_draw_buffers,
161
   GL_ARB_draw_buffers_blend,
162
   GL_ARB_draw_elements_base_vertex,
163
   GL_ARB_draw_indirect,
164
   GL_ARB_draw_instanced,
165
   GL_ARB_ES2_compatibility,
166
   GL_ARB_explicit_attrib_location,
167
   GL_ARB_fragment_coord_conventions,
168
   GL_ARB_fragment_program,
169
   GL_ARB_fragment_program_shadow,
170
   GL_ARB_fragment_shader,
171
   GL_ARB_framebuffer_object,
172
   GL_ARB_framebuffer_sRGB,
173
   GL_ARB_geometry_shader4,
174
   GL_ARB_get_program_binary,
175
   GL_ARB_gpu_shader_fp64,
176
   GL_ARB_gpu_shader5,
177
   GL_ARB_half_float_pixel,
178
   GL_ARB_half_float_vertex,
179
   GL_ARB_imaging,
180
   GL_ARB_instanced_arrays,
181
   GL_ARB_map_buffer_range,
182
   GL_ARB_matrix_palette,
183
   GL_ARB_multisample,
184
   GL_ARB_multitexture,
185
   GL_ARB_occlusion_query,
186
   GL_ARB_occlusion_query2,
187
   GL_ARB_pixel_buffer_object,
188
   GL_ARB_point_parameters,
189
   GL_ARB_point_sprite,
190
   GL_ARB_provoking_vertex,
191
   GL_ARB_robustness,
192
   GL_ARB_sample_shading,
193
   GL_ARB_sampler_objects,
194
   GL_ARB_seamless_cube_map,
195
   GL_ARB_separate_shader_objects,
196
   GL_ARB_shader_bit_encoding,
197
   GL_ARB_shader_precision,
198
   GL_ARB_shader_stencil_export,
199
   GL_ARB_shader_subroutine,
200
   GL_ARB_shader_texture_lod,
201
   GL_ARB_shading_language_100,
202
   GL_ARB_shadow,
203
   GL_ARB_shadow_ambient,
204
   GL_ARB_shader_objects,
205
   GL_ARB_sync,
206
   GL_ARB_tessellation_shader,
207
   GL_ARB_texture_border_clamp,
208
   GL_ARB_texture_buffer_object,
209
   GL_ARB_texture_buffer_object_rgb32,
210
   GL_ARB_texture_compression,
211
   GL_ARB_texture_compression_rgtc,
212
   GL_ARB_texture_cube_map,
213
   GL_ARB_texture_cube_map_array,
214
   GL_ARB_texture_env_add,
215
   GL_ARB_texture_env_combine,
216
   GL_ARB_texture_env_crossbar,
217
   GL_ARB_texture_env_dot3,
218
   GL_ARB_texture_float,
219
   GL_ARB_texture_gather,
220
   GL_ARB_texture_mirrored_repeat,
221
   GL_ARB_texture_multisample,
222
   GL_ARB_texture_non_power_of_two,
223
   GL_ARB_texture_query_lod,
224
   GL_ARB_texture_rectangle,
225
   GL_ARB_texture_rg,
226
   GL_ARB_texture_rgb10_a2ui,
227
   GL_ARB_texture_swizzle,
228
   GL_ARB_timer_query,
229
   GL_ARB_transform_feedback2,
230
   GL_ARB_transform_feedback3,
231
   GL_ARB_transpose_matrix,
232
   GL_ARB_uniform_buffer_object,
233
   GL_ARB_vertex_array_bgra,
234
   GL_ARB_vertex_array_object,
235
   GL_ARB_vertex_attrib_64bit,
236
   GL_ARB_vertex_blend,
237
   GL_ARB_vertex_buffer_object,
238
   GL_ARB_vertex_program,
239
   GL_ARB_vertex_shader,
240
   GL_ARB_vertex_type_2_10_10_10_rev,
241
   GL_ARB_viewport_array,
242
   GL_ARB_window_pos,
243
   GL_ARB_texture_compression_bptc,
244

245
   // Vendor/EXT OpenGL extension checks
246
   GL_3DFX_multisample,
247
   GL_3DFX_tbuffer,
248
   GL_3DFX_texture_compression_FXT1,
249

250
   GL_ATI_draw_buffers,
251
   GL_ATI_texture_compression_3dc,
252
   GL_ATI_texture_float,
253
   GL_ATI_texture_mirror_once,
254

255
   GL_S3_s3tc,
256

257
   GL_EXT_abgr,
258
   GL_EXT_bgra,
259
   GL_EXT_bindable_uniform,
260
   GL_EXT_blend_color,
261
   GL_EXT_blend_equation_separate,
262
   GL_EXT_blend_func_separate,
263
   GL_EXT_blend_logic_op,
264
   GL_EXT_blend_minmax,
265
   GL_EXT_blend_subtract,
266
   GL_EXT_Cg_shader,
267
   GL_EXT_clip_volume_hint,
268
   GL_EXT_compiled_vertex_array,
269
   GL_EXT_copy_texture,
270
   GL_EXT_depth_bounds_test,
271
   GL_EXT_draw_buffers2,
272
   GL_EXT_draw_instanced,
273
   GL_EXT_draw_range_elements,
274
   GL_EXT_fog_coord,
275
   GL_EXT_framebuffer_blit,
276
   GL_EXT_framebuffer_multisample,
277
   GL_EXT_framebuffer_object,
278
   GL_EXT_framebuffer_sRGB,
279
   GL_EXT_geometry_shader4,
280
   GL_EXT_gpu_program_parameters,
281
   GL_EXT_gpu_shader4,
282
   GL_EXT_multi_draw_arrays,
283
   GL_EXT_multisample,
284
   GL_EXT_packed_depth_stencil,
285
   GL_EXT_packed_float,
286
   GL_EXT_packed_pixels,
287
   GL_EXT_paletted_texture,
288
   GL_EXT_pixel_buffer_object,
289
   GL_EXT_polygon_offset,
290
   GL_EXT_rescale_normal,
291
   GL_EXT_secondary_color,
292
   GL_EXT_separate_specular_color,
293
   GL_EXT_shadow_funcs,
294
   GL_EXT_shared_texture_palette,
295
   GL_EXT_stencil_clear_tag,
296
   GL_EXT_stencil_two_side,
297
   GL_EXT_stencil_wrap,
298
   GL_EXT_texture3D,
299
   GL_EXT_texture_array,
300
   GL_EXT_texture_buffer_object,
301
   GL_EXT_texture_compression_latc,
302
   GL_EXT_texture_compression_rgtc,
303
   GL_EXT_texture_compression_s3tc,
304
   GL_EXT_texture_cube_map,
305
   GL_EXT_texture_edge_clamp,
306
   GL_EXT_texture_env_add,
307
   GL_EXT_texture_env_combine,
308
   GL_EXT_texture_env_dot3,
309
   GL_EXT_texture_filter_anisotropic,
310
   GL_EXT_texture_integer,
311
   GL_EXT_texture_lod,
312
   GL_EXT_texture_lod_bias,
313
   GL_EXT_texture_mirror_clamp,
314
   GL_EXT_texture_object,
315
   GL_EXT_texture_rectangle,
316
   GL_EXT_texture_sRGB,
317
   GL_EXT_texture_shared_exponent,
318
   GL_EXT_timer_query,
319
   GL_EXT_transform_feedback,
320
   GL_EXT_vertex_array,
321

322
   GL_HP_occlusion_test,
323

324
   GL_IBM_rasterpos_clip,
325

326
   GL_KTX_buffer_region,
327

328
   GL_MESA_resize_buffers,
329

330
   GL_NV_blend_square,
331
   GL_NV_conditional_render,
332
   GL_NV_copy_image,
333
   GL_NV_depth_buffer_float,
334
   GL_NV_fence,
335
   GL_NV_float_buffer,
336
   GL_NV_fog_distance,
337
   GL_NV_geometry_program4,
338
   GL_NV_light_max_exponent,
339
   GL_NV_multisample_filter_hint,
340
   GL_NV_occlusion_query,
341
   GL_NV_point_sprite,
342
   GL_NV_primitive_restart,
343
   GL_NV_register_combiners,
344
   GL_NV_shader_buffer_load,
345
   GL_NV_texgen_reflection,
346
   GL_NV_texture_compression_vtc,
347
   GL_NV_texture_env_combine4,
348
   GL_NV_texture_rectangle,
349
   GL_NV_texture_shader,
350
   GL_NV_texture_shader2,
351
   GL_NV_texture_shader3,
352
   GL_NV_transform_feedback,
353
   GL_NV_vertex_array_range,
354
   GL_NV_vertex_array_range2,
355
   GL_NV_vertex_buffer_unified_memory,
356
   GL_NV_vertex_program,
357

358
   GL_SGI_color_matrix,
359

360
   GL_SGIS_generate_mipmap,
361
   GL_SGIS_multisample,
362
   GL_SGIS_texture_border_clamp,
363
   GL_SGIS_texture_color_mask,
364
   GL_SGIS_texture_edge_clamp,
365
   GL_SGIS_texture_lod,
366

367
   GL_SGIX_depth_texture,
368
   GL_SGIX_shadow,
369
   GL_SGIX_shadow_ambient,
370

371
   GL_AMD_vertex_shader_tessellator,
372

373
   GL_WIN_swap_hint,
374

375
   // ARB approved WGL extension checks
376
   WGL_ARB_buffer_region,
377
   WGL_ARB_create_context,
378
   WGL_ARB_create_context_profile,
379
   WGL_ARB_extensions_string,
380
   WGL_ARB_framebuffer_sRGB,
381
   WGL_ARB_make_current_read,
382
   WGL_ARB_multisample,
383
   WGL_ARB_pbuffer,
384
   WGL_ARB_pixel_format,
385
   WGL_ARB_pixel_format_float,
386
   WGL_ARB_render_texture,
387

388
   // Vendor/EXT WGL extension checks
389
   WGL_ATI_pixel_format_float,
390

391
   WGL_EXT_framebuffer_sRGB,
392
   WGL_EXT_pixel_format_packed_float,
393
   WGL_EXT_swap_control,
394
   WGL_NV_gpu_affinity,
395

396
   // GLX extension checks
397
   GLX_VERSION_1_1,
398
   GLX_VERSION_1_2,
399
   GLX_VERSION_1_3,
400
   GLX_VERSION_1_4,
401
   GLX_ARB_create_context,
402
   GLX_ARB_create_context_profile,
403
   GLX_ARB_framebuffer_sRGB,
404
   GLX_ARB_multisample,
405
   GLX_EXT_framebuffer_sRGB,
406
   GLX_EXT_fbconfig_packed_float,
407

408
   GLX_SGIS_multisample,
409
   GLX_EXT_visual_info,
410
   GLX_SGI_swap_control,
411
   GLX_SGI_video_sync,
412
   GLX_SGI_make_current_read,
413
   GLX_SGIX_video_source,
414
   GLX_EXT_visual_rating,
415
   GLX_EXT_import_context,
416
   GLX_SGIX_fbconfig,
417
   GLX_SGIX_pbuffer,
418
   GLX_SGI_cushion,
419
   GLX_SGIX_video_resize,
420
   GLX_SGIX_dmbuffer,
421
   GLX_SGIX_swap_group,
422
   GLX_SGIX_swap_barrier,
423
   GLX_SGIS_blended_overlay,
424
   GLX_SGIS_shared_multisample,
425
   GLX_SUN_get_transparent_index,
426
   GLX_3DFX_multisample,
427
   GLX_MESA_copy_sub_buffer,
428
   GLX_MESA_pixmap_colormap,
429
   GLX_MESA_release_buffers,
430
   GLX_MESA_set_3dfx_mode,
431
   GLX_SGIX_visual_select_group,
432
   GLX_SGIX_hyperpipe,
433

434
   // Graphics Remedy's Extensions
435
   GL_GREMEDY_frame_terminator,
436
   GL_GREMEDY_string_marker,
437

438
   // OpenGL Utility (GLU) extension checks
439
   GLU_EXT_object_space_tess,
440
   GLU_EXT_nurbs_tessellator,
441
   GLU_EXT_Texture: Boolean;
442

443
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
444

445
{$IFDEF GLS_REGIONS} {$region 'OpenGL v1.1 core functions and procedures'} {$ENDIF}
446
   procedure glBindTexture(target: TGLEnum; texture: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
447
   procedure glBlendFunc(sfactor: TGLEnum; dfactor: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
448
   procedure glClear(mask: TGLbitfield); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
449
   procedure glClearColor(red, green, blue, alpha: TGLclampf); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
450
   procedure glClearDepth(depth: TGLclampd); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
451
   procedure glClearStencil(s: TGLint ); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
452

453
   procedure glColorMask(red, green, blue, alpha: TGLboolean); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
454

455
   procedure glCopyTexImage1D(target: TGLEnum; level: TGLint; internalFormat: TGLEnum; x, y: TGLint; width: TGLsizei; border: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
456
   procedure glCopyTexImage2D(target: TGLEnum; level: TGLint; internalFormat: TGLEnum; x, y: TGLint; width, height: TGLsizei; border: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
457
   procedure glCopyTexSubImage1D(target: TGLEnum; level, xoffset, x, y: TGLint; width: TGLsizei); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
458
   procedure glCopyTexSubImage2D(target: TGLEnum; level, xoffset, yoffset, x, y: TGLint; width, height: TGLsizei); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
459
   procedure glCullFace(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
460

461
   procedure glDeleteTextures(n: TGLsizei; textures: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
462
   procedure glDepthFunc(func: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
463
   procedure glDepthMask(flag: TGLboolean); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
464
   procedure glDepthRange(zNear, zFar: TGLclampd); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
465
   procedure glDisable(cap: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
466

467
   procedure glDrawArrays(mode: TGLEnum; first: TGLint; count: TGLsizei); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
468
   procedure glDrawBuffer(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
469
   procedure glDrawElements(mode: TGLEnum; count: TGLsizei; atype: TGLEnum; indices: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;   
470

471
   procedure glEnable(cap: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
472

473
   procedure glFinish; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
474
   procedure glFlush; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
475

476
   procedure glFrontFace(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
477

478
   procedure glGenTextures(n: TGLsizei; textures: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
479
   procedure glGetBooleanv(pname: TGLEnum; params: PGLboolean); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
480

481
   procedure glGetDoublev(pname: TGLEnum; params: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
482
   function  glGetError: TGLuint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
483
   procedure glGetFloatv(pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
484
   procedure glGetIntegerv(pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
485

486
   procedure glGetPointerv(pname: TGLEnum; var params); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
487

488
   function  glGetString(name: TGLEnum): PGLChar; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;   
489
   procedure glGetTexImage(target: TGLEnum; level: TGLint; format, atype: TGLEnum; pixels: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
490
   procedure glGetTexLevelParameterfv(target: TGLEnum; level: TGLint; pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
491
   procedure glGetTexLevelParameteriv(target: TGLEnum; level: TGLint; pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
492
   procedure glGetTexParameterfv(target, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
493
   procedure glGetTexParameteriv(target, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
494

495
   procedure glHint(target, mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
496

497
   function  glIsEnabled(cap: TGLEnum): TGLboolean; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
498
   function  glIsTexture(texture: TGLuint): TGLboolean; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
499

500
   procedure glLineWidth(width: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
501
   procedure glLogicOp(opcode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
502

503
   procedure glPixelStoref(pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
504
   procedure glPixelStorei(pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
505
   procedure glPointSize(size: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
506
   procedure glPolygonMode(face, mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
507
   procedure glPolygonOffset(factor, units: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
508

509
   procedure glReadBuffer(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
510
   procedure glReadPixels(x, y: TGLint; width, height: TGLsizei; format, atype: TGLEnum; pixels: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
511

512
   procedure glScissor(x, y: TGLint; width, height: TGLsizei); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
513
   procedure glStencilFunc(func: TGLEnum; ref: TGLint; mask: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
514
   procedure glStencilMask(mask: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
515
   procedure glStencilOp(fail, zfail, zpass: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
516

517
   procedure glTexImage1D(target: TGLEnum; level, internalformat: TGLint; width: TGLsizei; border: TGLint; format,
518
                          atype: TGLEnum; pixels: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
519
   procedure glTexImage2D(target: TGLEnum; level, internalformat: TGLint; width, height: TGLsizei; border: TGLint;
520
                          format, atype: TGLEnum; Pixels:Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
521
   procedure glTexParameterf(target, pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
522
   procedure glTexParameterfv(target, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
523
   procedure glTexParameteri(target, pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
524
   procedure glTexParameteriv(target, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
525
   procedure glTexSubImage1D(target: TGLEnum; level, xoffset: TGLint; width: TGLsizei; format, atype: TGLEnum;
526
                             pixels: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
527
   procedure glTexSubImage2D(target: TGLEnum; level, xoffset, yoffset: TGLint; width, height: TGLsizei; format,
528
                             atype: TGLEnum; pixels: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
529

530
   procedure glViewport(x, y: TGLint; width, height: TGLsizei); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32;
531

532
{$IFDEF GLS_REGIONS} {$region 'OpenGL 1.1 deprecated'} {$ENDIF}
533
   procedure glAccum(op: TGLuint; value: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
534
   procedure glAlphaFunc(func: TGLEnum; ref: TGLclampf); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
535
   function  glAreTexturesResident(n: TGLsizei; Textures: PGLuint; residences: PGLboolean): TGLboolean; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
536
   procedure glArrayElement(i: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
537
   procedure glBegin(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
538
   procedure glBitmap(width: TGLsizei; height: TGLsizei; xorig, yorig: TGLfloat; xmove: TGLfloat; ymove: TGLfloat; bitmap: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
539
   procedure glCallList(list: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
540
   procedure glCallLists(n: TGLsizei; atype: TGLEnum; lists: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
541
   procedure glClearAccum(red, green, blue, alpha: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
542
   procedure glClearIndex(c: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
543
   procedure glClipPlane(plane: TGLEnum; equation: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
544

545
   procedure glColor3b(red, green, blue: TGLbyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
546
   procedure glColor3bv(v: PGLbyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
547
   procedure glColor3d(red, green, blue: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
548
   procedure glColor3dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
549
   procedure glColor3f(red, green, blue: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
550
   procedure glColor3fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
551
   procedure glColor3i(red, green, blue: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
552
   procedure glColor3iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
553
   procedure glColor3s(red, green, blue: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
554
   procedure glColor3sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
555
   procedure glColor3ub(red, green, blue: TGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
556
   procedure glColor3ubv(v: PGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
557
   procedure glColor3ui(red, green, blue: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
558
   procedure glColor3uiv(v: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
559
   procedure glColor3us(red, green, blue: TGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
560
   procedure glColor3usv(v: PGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
561
   procedure glColor4b(red, green, blue, alpha: TGLbyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
562
   procedure glColor4bv(v: PGLbyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
563
   procedure glColor4d(red, green, blue, alpha: TGLdouble ); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
564
   procedure glColor4dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
565
   procedure glColor4f(red, green, blue, alpha: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
566
   procedure glColor4fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
567
   procedure glColor4i(red, green, blue, alpha: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
568
   procedure glColor4iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
569
   procedure glColor4s(red, green, blue, alpha: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
570
   procedure glColor4sv(v: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
571
   procedure glColor4ub(red, green, blue, alpha: TGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
572
   procedure glColor4ubv(v: PGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
573
   procedure glColor4ui(red, green, blue, alpha: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
574
   procedure glColor4uiv(v: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
575
   procedure glColor4us(red, green, blue, alpha: TGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
576
   procedure glColor4usv(v: PGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
577

578
   procedure glColorMaterial(face: TGLEnum; mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
579
   procedure glColorPointer(size: TGLint; atype: TGLEnum; stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
580
   procedure glCopyPixels(x, y: TGLint; width, height: TGLsizei; atype: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
581
   procedure glDeleteLists(list: TGLuint; range: TGLsizei); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
582
   procedure glDisableClientState(aarray: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
583
   procedure glDrawPixels(width, height: TGLsizei; format, atype: TGLEnum; pixels: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
584

585
   procedure glEdgeFlag(flag: TGLboolean); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
586
   procedure glEdgeFlagPointer(stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
587
   procedure glEdgeFlagv(flag: PGLboolean); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
588
   procedure glEnableClientState(aarray: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
589
   procedure glEnd; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
590
   procedure glEndList; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
591
   procedure glEvalCoord1d(u: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
592
   procedure glEvalCoord1dv(u: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
593
   procedure glEvalCoord1f(u: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
594
   procedure glEvalCoord1fv(u: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
595
   procedure glEvalCoord2d(u: TGLdouble; v: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
596
   procedure glEvalCoord2dv(u: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
597
   procedure glEvalCoord2f(u, v: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
598
   procedure glEvalCoord2fv(u: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
599
   procedure glEvalMesh1(mode: TGLEnum; i1, i2: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
600
   procedure glEvalMesh2(mode: TGLEnum; i1, i2, j1, j2: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
601
   procedure glEvalPoint1(i: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
602
   procedure glEvalPoint2(i, j: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
603

604
   procedure glFeedbackBuffer(size: TGLsizei; atype: TGLEnum; buffer: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
605
   procedure glFogf(pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
606
   procedure glFogfv(pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
607
   procedure glFogi(pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
608
   procedure glFogiv(pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
609
   procedure glFrustum(left, right, bottom, top, zNear, zFar: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
610
   function  glGenLists(range: TGLsizei): TGLuint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
611
   procedure glGetClipPlane(plane: TGLEnum; equation: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
612
   procedure glGetLightfv(light, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
613
   procedure glGetLightiv(light, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
614
   procedure glGetMapdv(target, query: TGLEnum; v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
615
   procedure glGetMapfv(target, query: TGLEnum; v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
616
   procedure glGetMapiv(target, query: TGLEnum; v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
617
   procedure glGetMaterialfv(face, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
618
   procedure glGetMaterialiv(face, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
619
   procedure glGetPixelMapfv(map: TGLEnum; values: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
620
   procedure glGetPixelMapuiv(map: TGLEnum; values: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
621
   procedure glGetPixelMapusv(map: TGLEnum; values: PGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
622
   procedure glGetPolygonStipple(mask: PGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
623
   procedure glGetTexEnvfv(target, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
624
   procedure glGetTexEnviv(target, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
625
   procedure glGetTexGendv(coord, pname: TGLEnum; params: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
626
   procedure glGetTexGenfv(coord, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
627
   procedure glGetTexGeniv(coord, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
628

629
   procedure glIndexMask(mask: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
630
   procedure glIndexPointer(atype: TGLEnum; stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
631
   procedure glIndexd(c: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
632
   procedure glIndexdv(c: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
633
   procedure glIndexf(c: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
634
   procedure glIndexfv(c: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
635
   procedure glIndexi(c: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
636
   procedure glIndexiv(c: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
637
   procedure glIndexs(c: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
638
   procedure glIndexsv(c: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
639
   procedure glIndexub(c: TGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
640
   procedure glIndexubv(c: PGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
641
   procedure glInitNames; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
642
   procedure glInterleavedArrays(format: TGLEnum; stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
643
   function  glIsList(list: TGLuint): TGLboolean; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
644
   procedure glLightModelf(pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
645
   procedure glLightModelfv(pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
646
   procedure glLightModeli(pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
647
   procedure glLightModeliv(pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
648
   procedure glLightf(light, pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
649
   procedure glLightfv(light, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
650
   procedure glLighti(light, pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
651
   procedure glLightiv(light, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
652
   procedure glLineStipple(factor: TGLint; pattern: TGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
653
   procedure glListBase(base: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
654
   procedure glLoadIdentity; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
655
   procedure glLoadMatrixd(m: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
656
   procedure glLoadMatrixf(m: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
657
   procedure glLoadName(name: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
658

659
   procedure glMap1d(target: TGLEnum; u1, u2: TGLdouble; stride, order: TGLint; points: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
660
   procedure glMap1f(target: TGLEnum; u1, u2: TGLfloat; stride, order: TGLint; points: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
661
   procedure glMap2d(target: TGLEnum; u1, u2: TGLdouble; ustride, uorder: TGLint; v1, v2: TGLdouble; vstride,
662
                     vorder: TGLint; points: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
663
   procedure glMap2f(target: TGLEnum; u1, u2: TGLfloat; ustride, uorder: TGLint; v1, v2: TGLfloat; vstride,
664
                     vorder: TGLint; points: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
665
   procedure glMapGrid1d(un: TGLint; u1, u2: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
666
   procedure glMapGrid1f(un: TGLint; u1, u2: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
667
   procedure glMapGrid2d(un: TGLint; u1, u2: TGLdouble; vn: TGLint; v1, v2: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
668
   procedure glMapGrid2f(un: TGLint; u1, u2: TGLfloat; vn: TGLint; v1, v2: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
669
   procedure glMaterialf(face, pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
670
   procedure glMaterialfv(face, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
671
   procedure glMateriali(face, pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
672
   procedure glMaterialiv(face, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
673
   procedure glMatrixMode(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
674
   procedure glMultMatrixd(m: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
675
   procedure glMultMatrixf(m: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
676
   procedure glNewList(list: TGLuint; mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
677
   procedure glNormal3b(nx, ny, nz: TGLbyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
678
   procedure glNormal3bv(v: PGLbyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
679
   procedure glNormal3d(nx, ny, nz: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
680
   procedure glNormal3dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
681
   procedure glNormal3f(nx, ny, nz: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
682
   procedure glNormal3fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
683
   procedure glNormal3i(nx, ny, nz: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
684
   procedure glNormal3iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
685
   procedure glNormal3s(nx, ny, nz: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
686
   procedure glNormal3sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
687
   procedure glNormalPointer(atype: TGLEnum; stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
688

689
   procedure glOrtho(left, right, bottom, top, zNear, zFar: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
690
   procedure glPassThrough(token: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
691
   procedure glPixelMapfv(map: TGLEnum; mapsize: TGLsizei; values: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
692
   procedure glPixelMapuiv(map: TGLEnum; mapsize: TGLsizei; values: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
693
   procedure glPixelMapusv(map: TGLEnum; mapsize: TGLsizei; values: PGLushort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
694
   procedure glPixelTransferf(pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
695
   procedure glPixelTransferi(pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
696
   procedure glPixelZoom(xfactor, yfactor: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
697
   procedure glPolygonStipple(mask: PGLubyte); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
698
   procedure glPopAttrib; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
699
   procedure glPopClientAttrib; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
700
   procedure glPopMatrix; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
701
   procedure glPopName; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
702
   procedure glPrioritizeTextures(n: TGLsizei; textures: PGLuint; priorities: PGLclampf); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
703
   procedure glPushAttrib(mask: TGLbitfield); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
704
   procedure glPushClientAttrib(mask: TGLbitfield); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
705
   procedure glPushMatrix; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
706
   procedure glPushName(name: TGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
707

708
   procedure glRasterPos2d(x, y: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
709
   procedure glRasterPos2dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
710
   procedure glRasterPos2f(x, y: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
711
   procedure glRasterPos2fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
712
   procedure glRasterPos2i(x, y: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
713
   procedure glRasterPos2iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
714
   procedure glRasterPos2s(x, y: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
715
   procedure glRasterPos2sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
716
   procedure glRasterPos3d(x, y, z: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
717
   procedure glRasterPos3dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
718
   procedure glRasterPos3f(x, y, z: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
719
   procedure glRasterPos3fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
720
   procedure glRasterPos3i(x, y, z: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
721
   procedure glRasterPos3iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
722
   procedure glRasterPos3s(x, y, z: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
723
   procedure glRasterPos3sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
724
   procedure glRasterPos4d(x, y, z, w: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
725
   procedure glRasterPos4dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
726
   procedure glRasterPos4f(x, y, z, w: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
727
   procedure glRasterPos4fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
728
   procedure glRasterPos4i(x, y, z, w: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
729
   procedure glRasterPos4iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
730
   procedure glRasterPos4s(x, y, z, w: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
731
   procedure glRasterPos4sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
732
   procedure glRectd(x1, y1, x2, y2: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
733
   procedure glRectdv(v1, v2: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
734
   procedure glRectf(x1, y1, x2, y2: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
735
   procedure glRectfv(v1, v2: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
736
   procedure glRecti(x1, y1, x2, y2: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
737
   procedure glRectiv(v1, v2: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
738
   procedure glRects(x1, y1, x2, y2: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
739
   procedure glRectsv(v1, v2: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
740
   function  glRenderMode(mode: TGLEnum): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
741
   procedure glRotated(angle, x, y, z: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
742
   procedure glRotatef(angle, x, y, z: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
743

744
   procedure glScaled(x, y, z: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
745
   procedure glScalef(x, y, z: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
746
   procedure glSelectBuffer(size: TGLsizei; buffer: PGLuint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
747
   procedure glShadeModel(mode: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
748
   procedure glTexCoord1d(s: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
749
   procedure glTexCoord1dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
750
   procedure glTexCoord1f(s: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
751
   procedure glTexCoord1fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
752
   procedure glTexCoord1i(s: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
753
   procedure glTexCoord1iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
754
   procedure glTexCoord1s(s: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
755
   procedure glTexCoord1sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
756
   procedure glTexCoord2d(s, t: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
757
   procedure glTexCoord2dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
758
   procedure glTexCoord2f(s, t: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
759
   procedure glTexCoord2fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
760
   procedure glTexCoord2i(s, t: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
761
   procedure glTexCoord2iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
762
   procedure glTexCoord2s(s, t: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
763
   procedure glTexCoord2sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
764
   procedure glTexCoord3d(s, t, r: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
765
   procedure glTexCoord3dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
766
   procedure glTexCoord3f(s, t, r: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
767
   procedure glTexCoord3fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
768
   procedure glTexCoord3i(s, t, r: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
769
   procedure glTexCoord3iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
770
   procedure glTexCoord3s(s, t, r: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
771
   procedure glTexCoord3sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
772
   procedure glTexCoord4d(s, t, r, q: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
773
   procedure glTexCoord4dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
774
   procedure glTexCoord4f(s, t, r, q: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
775
   procedure glTexCoord4fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
776
   procedure glTexCoord4i(s, t, r, q: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
777
   procedure glTexCoord4iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
778
   procedure glTexCoord4s(s, t, r, q: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
779
   procedure glTexCoord4sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
780
   procedure glTexCoordPointer(size: TGLint; atype: TGLEnum; stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
781
   procedure glTexEnvf(target, pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
782
   procedure glTexEnvfv(target, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
783
   procedure glTexEnvi(target, pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
784
   procedure glTexEnviv(target, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
785
   procedure glTexGend(coord, pname: TGLEnum; param: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
786
   procedure glTexGendv(coord, pname: TGLEnum; params: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
787
   procedure glTexGenf(coord, pname: TGLEnum; param: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
788
   procedure glTexGenfv(coord, pname: TGLEnum; params: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
789
   procedure glTexGeni(coord, pname: TGLEnum; param: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
790
   procedure glTexGeniv(coord, pname: TGLEnum; params: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
791
   procedure glTranslated(x, y, z: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
792
   procedure glTranslatef(x, y, z: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
793

794
   procedure glVertex2d(x, y: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
795
   procedure glVertex2dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
796
   procedure glVertex2f(x, y: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
797
   procedure glVertex2fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
798
   procedure glVertex2i(x, y: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
799
   procedure glVertex2iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
800
   procedure glVertex2s(x, y: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
801
   procedure glVertex2sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
802
   procedure glVertex3d(x, y, z: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
803
   procedure glVertex3dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
804
   procedure glVertex3f(x, y, z: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
805
   procedure glVertex3fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
806
   procedure glVertex3i(x, y, z: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
807
   procedure glVertex3iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
808
   procedure glVertex3s(x, y, z: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
809
   procedure glVertex3sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
810
   procedure glVertex4d(x, y, z, w: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
811
   procedure glVertex4dv(v: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
812
   procedure glVertex4f(x, y, z, w: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
813
   procedure glVertex4fv(v: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
814
   procedure glVertex4i(x, y, z, w: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
815
   procedure glVertex4iv(v: PGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
816
   procedure glVertex4s(x, y, z, w: TGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
817
   procedure glVertex4sv(v: PGLshort); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
818
   procedure glVertexPointer(size: TGLint; atype: TGLEnum; stride: TGLsizei; data: pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external opengl32; //deprecated;
819
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
820

821
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
822

823
{$IFDEF GLS_REGIONS} {$region 'OpenGL utility (GLU) functions and procedures'} {$ENDIF}
824
   function  gluErrorString(errCode: TGLEnum): PGLChar; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
825
   function  gluGetString(name: TGLEnum): PGLChar; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
826
   procedure gluOrtho2D(left, right, bottom, top: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
827
   procedure gluPerspective(fovy, aspect, zNear, zFar: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
828
   procedure gluPickMatrix(x, y, width, height: TGLdouble; const viewport: TVector4i); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
829
   procedure gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
830
   function  gluProject(objx, objy, objz: TGLdouble; const modelMatrix: TMatrix4d; const projMatrix: TMatrix4d; const viewport: TVector4i;
831
                        winx, winy, winz: PGLdouble): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
832
   function  gluUnProject(winx, winy, winz: TGLdouble; const modelMatrix: TMatrix4d; const projMatrix: TMatrix4d; const viewport: TVector4i;
833
                          objx, objy, objz: PGLdouble): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
834
   function  gluScaleImage(format: TGLEnum; widthin, heightin: TGLint; typein: TGLEnum; datain: Pointer; widthout,
835
                           heightout: TGLint; typeout: TGLEnum; dataout: Pointer): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
836
   function  gluBuild1DMipmaps(target: TGLEnum; components, width: TGLint; format, atype: TGLEnum;
837
                               data: Pointer): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
838
   function  gluBuild2DMipmaps(target: TGLEnum; components, width, height: TGLint; format, atype: TGLEnum;
839
                               data: Pointer): TGLint; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
840
   function  gluNewQuadric: PGLUquadric; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
841
   procedure gluDeleteQuadric(state: PGLUquadric); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
842
   procedure gluQuadricNormals(quadObject: PGLUquadric; normals: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
843
   procedure gluQuadricTexture(quadObject: PGLUquadric; textureCoords: TGLboolean); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
844
   procedure gluQuadricOrientation(quadObject: PGLUquadric; orientation: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
845
   procedure gluQuadricDrawStyle(quadObject: PGLUquadric; drawStyle: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
846
   procedure gluCylinder(quadObject: PGLUquadric; baseRadius, topRadius, height: TGLdouble; slices,
847
                         stacks: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
848
   procedure gluDisk(quadObject: PGLUquadric; innerRadius, outerRadius: TGLdouble; slices, loops: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
849
   procedure gluPartialDisk(quadObject: PGLUquadric; innerRadius, outerRadius: TGLdouble; slices, loops: TGLint;
850
                            startAngle, sweepAngle: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
851
   procedure gluSphere(quadObject: PGLUquadric; radius: TGLdouble; slices, stacks: TGLint); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
852
   procedure gluQuadricCallback(quadObject: PGLUquadric; which: TGLEnum; fn: TGLUQuadricErrorProc); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
853
   function  gluNewTess: PGLUtesselator; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
854
   procedure gluDeleteTess(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
855
   procedure gluTessBeginPolygon(tess: PGLUtesselator; polygon_data: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
856
   procedure gluTessBeginContour(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
857
   procedure gluTessVertex(tess: PGLUtesselator; const coords: TVector3d; data: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
858
   procedure gluTessEndContour(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
859
   procedure gluTessEndPolygon(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
860
   procedure gluTessProperty(tess: PGLUtesselator; which: TGLEnum; value: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
861
   procedure gluTessNormal(tess: PGLUtesselator; x, y, z: TGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
862
   procedure gluTessCallback(tess: PGLUtesselator; which: TGLEnum; fn: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
863
   procedure gluGetTessProperty(tess: PGLUtesselator; which: TGLEnum; value: PGLdouble); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
864
   function  gluNewNurbsRenderer: PGLUnurbs; {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
865
   procedure gluDeleteNurbsRenderer(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
866
   procedure gluBeginSurface(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
867
   procedure gluBeginCurve(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
868
   procedure gluEndCurve(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
869
   procedure gluEndSurface(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
870
   procedure gluBeginTrim(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
871
   procedure gluEndTrim(nobj: PGLUnurbs); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
872
   procedure gluPwlCurve(nobj: PGLUnurbs; count: TGLint; points: PGLfloat; stride: TGLint; atype: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
873
   procedure gluNurbsCurve(nobj: PGLUnurbs; nknots: TGLint; knot: PGLfloat; stride: TGLint; ctlarray: PGLfloat; order: TGLint; atype: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
874
   procedure gluNurbsSurface(nobj: PGLUnurbs; sknot_count: TGLint; sknot: PGLfloat; tknot_count: TGLint; tknot: PGLfloat; s_stride, t_stride: TGLint; ctlarray: PGLfloat; sorder, torder: TGLint; atype: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
875
   procedure gluLoadSamplingMatrices(nobj: PGLUnurbs; const modelMatrix: TMatrix4f; const projMatrix: TMatrix4f; const viewport: TVector4i); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
876
   procedure gluNurbsProperty(nobj: PGLUnurbs; aproperty: TGLEnum; value: TGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
877
   procedure gluGetNurbsProperty(nobj: PGLUnurbs; aproperty: TGLEnum; value: PGLfloat); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
878
   procedure gluNurbsCallback(nobj: PGLUnurbs; which: TGLEnum; fn: TGLUNurbsErrorProc); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
879
   procedure gluBeginPolygon(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
880
   procedure gluNextContour(tess: PGLUtesselator; atype: TGLEnum); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
881
   procedure gluEndPolygon(tess: PGLUtesselator); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF} external glu32;
882

883
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
884

885
{$IFDEF GLS_REGIONS} {$region 'Windows OpenGL (WGL) support functions'} {$ENDIF}
886
   {$IFDEF SUPPORT_WGL}
887
   function wglGetProcAddress(ProcName: PGLChar): Pointer; stdcall; external opengl32;
888
   function wglCopyContext(p1: HGLRC; p2: HGLRC; p3: Cardinal): BOOL; stdcall; external opengl32;
889
   function wglCreateContext(DC: HDC): HGLRC; stdcall; external opengl32;
890
   function wglCreateLayerContext(p1: HDC; p2: Integer): HGLRC; stdcall; external opengl32;
891
   function wglDeleteContext(p1: HGLRC): BOOL; stdcall; external opengl32;
892
   function wglDescribeLayerPlane(p1: HDC; p2, p3: Integer; p4: Cardinal; var p5: TLayerPlaneDescriptor): BOOL; stdcall; external opengl32;
893
   function wglGetCurrentContext: HGLRC; stdcall; external opengl32;
894
   function wglGetCurrentDC: HDC; stdcall; external opengl32;
895
   function wglGetLayerPaletteEntries(p1: HDC; p2, p3, p4: Integer; var pcr): Integer; stdcall; external opengl32;
896
   function wglMakeCurrent(DC: HDC; p2: HGLRC): BOOL; stdcall; external opengl32;
897
   function wglRealizeLayerPalette(p1: HDC; p2: Integer; p3: BOOL): BOOL; stdcall; external opengl32;
898
   function wglSetLayerPaletteEntries(p1: HDC; p2, p3, p4: Integer; var pcr): Integer; stdcall; external opengl32;
899
   function wglShareLists(p1, p2: HGLRC): BOOL; stdcall; external opengl32;
900
   function wglSwapLayerBuffers(p1: HDC; p2: Cardinal): BOOL; stdcall; external opengl32;
901
   function wglSwapMultipleBuffers(p1: UINT; const p2: PWGLSwap): DWORD; stdcall; external opengl32;
902
   function wglUseFontBitmapsA(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall; external opengl32;
903
   function wglUseFontOutlinesA (p1: HDC; p2, p3, p4: DWORD; p5, p6: Single; p7: Integer; p8: PGlyphMetricsFloat): BOOL; stdcall; external opengl32;
904
   function wglUseFontBitmapsW(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall; external opengl32;
905
   function wglUseFontOutlinesW (p1: HDC; p2, p3, p4: DWORD; p5, p6: Single; p7: Integer; p8: PGlyphMetricsFloat): BOOL; stdcall; external opengl32;
906
   function wglUseFontBitmaps(DC: HDC; p2, p3, p4: DWORD): BOOL; stdcall; external opengl32 name 'wglUseFontBitmapsA';
907
   function wglUseFontOutlines(p1: HDC; p2, p3, p4: DWORD; p5, p6: Single; p7: Integer; p8: PGlyphMetricsFloat): BOOL; stdcall; external opengl32 name 'wglUseFontOutlinesA';
908
   {$ENDIF}
909
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
910

911
{$IFDEF GLS_REGIONS} {$region 'OpenGL Extension to the X Window System (GLX) support functions'} {$ENDIF}
912
   {$IFDEF SUPPORT_GLX}
913
   // GLX 1.0
914
   function glXChooseVisual(dpy: PDisplay; screen: TGLint; attribList: PGLint): PXVisualInfo; cdecl; external opengl32;
915
   function glXCreateContext(dpy: PDisplay; vis: PXVisualInfo; shareList: GLXContext; direct: TGLboolean): GLXContext; cdecl; external opengl32;
916
   procedure glXDestroyContext(dpy: PDisplay; ctx: GLXContext); cdecl; external opengl32;
917
   function glXMakeCurrent(dpy: PDisplay; drawable: GLXDrawable; ctx: GLXContext): TGLboolean; cdecl; external opengl32;
918
   procedure glXCopyContext(dpy: PDisplay; src: GLXContext; dst: GLXContext; mask: TGLuint); cdecl; external opengl32;
919
   procedure glXSwapBuffers(dpy: PDisplay; drawable: GLXDrawable); cdecl; external opengl32;
920
   function glXCreateGLXPixmap(dpy: PDisplay; visual: PXVisualInfo; pixmap: GLXPixmap): GLXPixmap; cdecl; external opengl32;
921
   procedure glXDestroyGLXPixmap(dpy: PDisplay; pixmap: GLXPixmap); cdecl; external opengl32;
922
   function glXQueryExtension(dpy: PDisplay; errorb: PGLInt; event: PGLInt): TGLboolean; cdecl; external opengl32;
923
   function glXQueryVersion(dpy: PDisplay; maj: PGLInt; min: PGLINT): TGLboolean; cdecl; external opengl32;
924
   function glXIsDirect(dpy: PDisplay; ctx: GLXContext): TGLboolean; cdecl; external opengl32;
925
   function glXGetConfig(dpy: PDisplay; visual: PXVisualInfo; attrib: TGLInt; value: PGLInt): TGLInt; cdecl; external opengl32;
926
   function glXGetCurrentContext: GLXContext; cdecl; external opengl32;
927
   function glXGetCurrentDrawable: GLXDrawable; cdecl; external opengl32;
928
   procedure glXWaitGL; cdecl; external opengl32;
929
   procedure glXWaitX; cdecl; external opengl32;
930
   procedure glXUseXFont(font: XFont; first: TGLInt; count: TGLInt; list: TGLint); cdecl; external opengl32;
931

932
   // GLX 1.1 and later
933
   function glXQueryExtensionsString(dpy: PDisplay; screen: TGLInt): PGLChar; cdecl; external opengl32;
934
   function glXQueryServerString(dpy: PDisplay; screen: TGLInt; name: TGLInt): PGLChar; cdecl; external opengl32;
935
   function glXGetClientString(dpy: PDisplay; name: TGLInt): PGLChar; cdecl; external opengl32;
936

937
   // GLX 1.2 and later
938
   function glXGetCurrentDisplay: PDisplay; cdecl; external opengl32;
939
   {$ENDIF}
940
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
941

942

943

944
{$IFDEF MULTITHREADOPENGL}
945
threadvar
946
{$else}
947
var
948
{$ENDIF}
949

950
{$IFDEF GLS_REGIONS} {$region 'OpenGL extension function/procedure definitions'} {$ENDIF}
951

952
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 1.2'} {$ENDIF}
953

954
   //  ###########################################################
955
   //           function and procedure definitions for
956
   //            extensions integrated into OpenGL 1.2 Core
957
   //  ###########################################################
958

959
   // promoted to core v1.2 from GL_EXT_blend_color (#2)
960
   glBlendColor: PFNGLBLENDCOLORPROC;
961

962
   // promoted to core v1.2 from GL_EXT_blend_minmax (#37)
963
   glBlendEquation: PFNGLBLENDEQUATIONPROC;
964

965
   // promoted to core v1.2 from GL_EXT_draw_range_elements (#112)
966
   glDrawRangeElements: PFNGLDRAWRANGEELEMENTSPROC;
967

968
   // promoted to core v1.2 from GL_EXT_texture3D (#6)
969
   glTexImage3D: PFNGLTEXIMAGE3DPROC;
970
   glTexSubImage3D: PFNGLTEXSUBIMAGE3DPROC;
971

972
   // promoted to core v1.2 from GL_EXT_copy_texture
973
   glCopyTexSubImage3D: PFNGLCOPYTEXSUBIMAGE3DPROC;
974

975
{$IFDEF GLS_REGIONS} {$region 'OpenGL 1.2 deprecated'} {$ENDIF}
976
   // promoted to core v1.2 from GL_SGI_color_table (#14)
977
   glColorTable: PFNGLCOLORTABLEPROC;
978
   glColorTableParameterfv: PFNGLCOLORTABLEPARAMETERFVPROC;
979
   glColorTableParameteriv: PFNGLCOLORTABLEPARAMETERIVPROC;
980
   glCopyColorTable: PFNGLCOPYCOLORTABLEPROC;
981
   glGetColorTable: PFNGLGETCOLORTABLEPROC;
982
   glGetColorTableParameterfv: PFNGLGETCOLORTABLEPARAMETERFVPROC;
983
   glGetColorTableParameteriv: PFNGLGETCOLORTABLEPARAMETERIVPROC;
984

985
   // promoted to core v1.2 from GL_EXT_color_subtable (#74)
986
   glColorSubTable: PFNGLCOLORSUBTABLEPROC;
987
   glCopyColorSubTable: PFNGLCOPYCOLORSUBTABLEPROC;
988

989
   // promoted to core v1.2 from GL_EXT_convolution (#12)
990
   glConvolutionFilter1D: PFNGLCONVOLUTIONFILTER1DPROC;
991
   glConvolutionFilter2D: PFNGLCONVOLUTIONFILTER2DPROC;
992
   glConvolutionParameterf: PFNGLCONVOLUTIONPARAMETERFPROC;
993
   glConvolutionParameterfv: PFNGLCONVOLUTIONPARAMETERFVPROC;
994
   glConvolutionParameteri: PFNGLCONVOLUTIONPARAMETERIPROC;
995
   glConvolutionParameteriv: PFNGLCONVOLUTIONPARAMETERIVPROC;
996
   glCopyConvolutionFilter1D: PFNGLCOPYCONVOLUTIONFILTER1DPROC;
997
   glCopyConvolutionFilter2D: PFNGLCOPYCONVOLUTIONFILTER2DPROC;
998
   glGetConvolutionFilter: PFNGLGETCONVOLUTIONFILTERPROC;
999
   glGetConvolutionParameterfv: PFNGLGETCONVOLUTIONPARAMETERFVPROC;
1000
   glGetConvolutionParameteriv: PFNGLGETCONVOLUTIONPARAMETERIVPROC;
1001
   glGetSeparableFilter: PFNGLGETSEPARABLEFILTERPROC;
1002
   glSeparableFilter2D: PFNGLSEPARABLEFILTER2DPROC;
1003

1004
   // promoted to core v1.2 from GL_EXT_histogram (#11)
1005
   glGetHistogram: PFNGLGETHISTOGRAMPROC;
1006
   glGetHistogramParameterfv: PFNGLGETHISTOGRAMPARAMETERFVPROC;
1007
   glGetHistogramParameteriv: PFNGLGETHISTOGRAMPARAMETERIVPROC;
1008
   glGetMinmax: PFNGLGETMINMAXPROC;
1009
   glGetMinmaxParameterfv: PFNGLGETMINMAXPARAMETERFVPROC;
1010
   glGetMinmaxParameteriv: PFNGLGETMINMAXPARAMETERIVPROC;
1011
   glHistogram: PFNGLHISTOGRAMPROC;
1012
   glMinmax: PFNGLMINMAXPROC;
1013
   glResetHistogram: PFNGLRESETHISTOGRAMPROC;
1014
   glResetMinmax: PFNGLRESETMINMAXPROC;
1015
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1016

1017
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1018

1019
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 1.3'} {$ENDIF}
1020

1021
   //  ###########################################################
1022
   //           function and procedure definitions for
1023
   //            extensions integrated into OpenGL 1.3 Core
1024
   //  ###########################################################
1025

1026
   // promoted to core v1.3 from GL_ARB_multitexture (#1)
1027
   glActiveTexture: PFNGLACTIVETEXTUREPROC;
1028

1029
   // promoted to core v1.3 from GL_ARB_multisample (#5)
1030
   glSampleCoverage: PFNGLSAMPLECOVERAGEPROC;
1031

1032
   // promoted to core v1.3 from GL_ARB_texture_compression (#12)
1033
   glCompressedTexImage3D: PFNGLCOMPRESSEDTEXIMAGE3DPROC;
1034
   glCompressedTexImage2D: PFNGLCOMPRESSEDTEXIMAGE2DPROC;
1035
   glCompressedTexImage1D: PFNGLCOMPRESSEDTEXIMAGE1DPROC;
1036
   glCompressedTexSubImage3D: PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC;
1037
   glCompressedTexSubImage2D: PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC;
1038
   glCompressedTexSubImage1D: PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC;
1039
   glGetCompressedTexImage: PFNGLGETCOMPRESSEDTEXIMAGEPROC;
1040

1041
{$IFDEF GLS_REGIONS} {$region 'OpenGL 1.3 deprecated'} {$ENDIF}
1042
   // promoted to core v1.3 from GL_ARB_multitexture (#1)
1043
   glClientActiveTexture: PFNGLCLIENTACTIVETEXTUREPROC;
1044
   glMultiTexCoord1d: PFNGLMULTITEXCOORD1DPROC;
1045
   glMultiTexCoord1dV: PFNGLMULTITEXCOORD1DVPROC;
1046
   glMultiTexCoord1f: PFNGLMULTITEXCOORD1FPROC;
1047
   glMultiTexCoord1fV: PFNGLMULTITEXCOORD1FVPROC;
1048
   glMultiTexCoord1i: PFNGLMULTITEXCOORD1IPROC;
1049
   glMultiTexCoord1iV: PFNGLMULTITEXCOORD1IVPROC;
1050
   glMultiTexCoord1s: PFNGLMULTITEXCOORD1SPROC;
1051
   glMultiTexCoord1sV: PFNGLMULTITEXCOORD1SVPROC;
1052
   glMultiTexCoord2d: PFNGLMULTITEXCOORD2DPROC;
1053
   glMultiTexCoord2dv: PFNGLMULTITEXCOORD2DVPROC;
1054
   glMultiTexCoord2f: PFNGLMULTITEXCOORD2FPROC;
1055
   glMultiTexCoord2fv: PFNGLMULTITEXCOORD2FVPROC;
1056
   glMultiTexCoord2i: PFNGLMULTITEXCOORD2IPROC;
1057
   glMultiTexCoord2iv: PFNGLMULTITEXCOORD2IVPROC;
1058
   glMultiTexCoord2s: PFNGLMULTITEXCOORD2SPROC;
1059
   glMultiTexCoord2sv: PFNGLMULTITEXCOORD2SVPROC;
1060
   glMultiTexCoord3d: PFNGLMULTITEXCOORD3DPROC;
1061
   glMultiTexCoord3dv: PFNGLMULTITEXCOORD3DVPROC;
1062
   glMultiTexCoord3f: PFNGLMULTITEXCOORD3FPROC;
1063
   glMultiTexCoord3fv: PFNGLMULTITEXCOORD3FVPROC;
1064
   glMultiTexCoord3i: PFNGLMULTITEXCOORD3IPROC;
1065
   glMultiTexCoord3iv: PFNGLMULTITEXCOORD3IVPROC;
1066
   glMultiTexCoord3s: PFNGLMULTITEXCOORD3SPROC;
1067
   glMultiTexCoord3sv: PFNGLMULTITEXCOORD3SVPROC;
1068
   glMultiTexCoord4d: PFNGLMULTITEXCOORD4DPROC;
1069
   glMultiTexCoord4dv: PFNGLMULTITEXCOORD4DVPROC;
1070
   glMultiTexCoord4f: PFNGLMULTITEXCOORD4FPROC;
1071
   glMultiTexCoord4fv: PFNGLMULTITEXCOORD4FVPROC;
1072
   glMultiTexCoord4i: PFNGLMULTITEXCOORD4IPROC;
1073
   glMultiTexCoord4iv: PFNGLMULTITEXCOORD4IVPROC;
1074
   glMultiTexCoord4s: PFNGLMULTITEXCOORD4SPROC;
1075
   glMultiTexCoord4sv: PFNGLMULTITEXCOORD4SVPROC;
1076

1077
   // promoted to core v1.3 from GL_ARB_transpose_matrix
1078
   glLoadTransposeMatrixf: PFNGLLOADTRANSPOSEMATRIXFPROC;
1079
   glLoadTransposeMatrixd: PFNGLLOADTRANSPOSEMATRIXDPROC;
1080
   glMultTransposeMatrixf: PFNGLMULTTRANSPOSEMATRIXFPROC;
1081
   glMultTransposeMatrixd: PFNGLMULTTRANSPOSEMATRIXDPROC;
1082
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1083

1084
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1085

1086
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 1.4'} {$ENDIF}
1087

1088
   //  ###########################################################
1089
   //           function and procedure definitions for
1090
   //            extensions integrated into OpenGL 1.4 Core
1091
   //  ###########################################################
1092

1093
   // promoted to core v1.4 from GL_EXT_blend_func_separate (#173)
1094
   glBlendFuncSeparate: PFNGLBLENDFUNCSEPARATEPROC;
1095

1096
   // promoted to core v1.4 from GL_EXT_multi_draw_arrays (#148)
1097
   glMultiDrawArrays: PFNGLMULTIDRAWARRAYSPROC;
1098
   glMultiDrawElements: PFNGLMULTIDRAWELEMENTSPROC;
1099

1100
   // promoted to core v1.4 from GL_ARB_point_parameters (#14), GL_NV_point_sprite (#262)
1101
   glPointParameterf: PFNGLPOINTPARAMETERFPROC;
1102
   glPointParameterfv: PFNGLPOINTPARAMETERFVPROC;
1103
   glPointParameteri: PFNGLPOINTPARAMETERIPROC;
1104
   glPointParameteriv: PFNGLPOINTPARAMETERIVPROC;
1105

1106
{$IFDEF GLS_REGIONS} {$region 'OpenGL 1.4 deprecated'} {$ENDIF}
1107
   // promoted to core v1.4 from GL_EXT_fog_coord (#149)
1108
   glFogCoordf: PFNGLFOGCOORDFPROC;
1109
   glFogCoordfv: PFNGLFOGCOORDFVPROC;
1110
   glFogCoordd: PFNGLFOGCOORDDPROC;
1111
   glFogCoorddv: PFNGLFOGCOORDDVPROC;
1112
   glFogCoordPointer: PFNGLFOGCOORDPOINTERPROC;
1113

1114
   // promoted to core v1.4 from GL_EXT_secondary_color (#145)
1115
   glSecondaryColor3b: PFNGLSECONDARYCOLOR3BPROC;
1116
   glSecondaryColor3bv: PFNGLSECONDARYCOLOR3BVPROC;
1117
   glSecondaryColor3d: PFNGLSECONDARYCOLOR3DPROC;
1118
   glSecondaryColor3dv: PFNGLSECONDARYCOLOR3DVPROC;
1119
   glSecondaryColor3f: PFNGLSECONDARYCOLOR3FPROC;
1120
   glSecondaryColor3fv: PFNGLSECONDARYCOLOR3FVPROC;
1121
   glSecondaryColor3i: PFNGLSECONDARYCOLOR3IPROC;
1122
   glSecondaryColor3iv: PFNGLSECONDARYCOLOR3IVPROC;
1123
   glSecondaryColor3s: PFNGLSECONDARYCOLOR3SPROC;
1124
   glSecondaryColor3sv: PFNGLSECONDARYCOLOR3SVPROC;
1125
   glSecondaryColor3ub: PFNGLSECONDARYCOLOR3UBPROC;
1126
   glSecondaryColor3ubv: PFNGLSECONDARYCOLOR3UBVPROC;
1127
   glSecondaryColor3ui: PFNGLSECONDARYCOLOR3UIPROC;
1128
   glSecondaryColor3uiv: PFNGLSECONDARYCOLOR3UIVPROC;
1129
   glSecondaryColor3us: PFNGLSECONDARYCOLOR3USPROC;
1130
   glSecondaryColor3usv: PFNGLSECONDARYCOLOR3USVPROC;
1131
   glSecondaryColorPointer: PFNGLSECONDARYCOLORPOINTERPROC;
1132

1133
   // promoted to core v1.4 from GL_ARB_window_pos (#25)
1134
   glWindowPos2d: PFNGLWINDOWPOS2DPROC;
1135
   glWindowPos2dv: PFNGLWINDOWPOS2DVPROC;
1136
   glWindowPos2f: PFNGLWINDOWPOS2FPROC;
1137
   glWindowPos2fv: PFNGLWINDOWPOS2FVPROC;
1138
   glWindowPos2i: PFNGLWINDOWPOS2IPROC;
1139
   glWindowPos2iv: PFNGLWINDOWPOS2IVPROC;
1140
   glWindowPos2s: PFNGLWINDOWPOS2SPROC;
1141
   glWindowPos2sv: PFNGLWINDOWPOS2SVPROC;
1142
   glWindowPos3d: PFNGLWINDOWPOS3DPROC;
1143
   glWindowPos3dv: PFNGLWINDOWPOS3DVPROC;
1144
   glWindowPos3f: PFNGLWINDOWPOS3FPROC;
1145
   glWindowPos3fv: PFNGLWINDOWPOS3FVPROC;
1146
   glWindowPos3i: PFNGLWINDOWPOS3IPROC;
1147
   glWindowPos3iv: PFNGLWINDOWPOS3IVPROC;
1148
   glWindowPos3s: PFNGLWINDOWPOS3SPROC;
1149
   glWindowPos3sv: PFNGLWINDOWPOS3SVPROC;
1150
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1151

1152
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1153

1154
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 1.5'} {$ENDIF}
1155

1156
   //  ###########################################################
1157
   //           function and procedure definitions for
1158
   //            extensions integrated into OpenGL 1.5 Core
1159
   //  ###########################################################
1160

1161
   // promoted to core v1.5 from GL_ARB_occlusion_query (#29)
1162
   glGenQueries: PFNGLGENQUERIESPROC;
1163
   glDeleteQueries: PFNGLDELETEQUERIESPROC;
1164
   glIsQuery: PFNGLISQUERYPROC;
1165
   glBeginQuery: PFNGLBEGINQUERYPROC;
1166
   glEndQuery: PFNGLENDQUERYPROC;
1167
   glGetQueryiv: PFNGLGETQUERYIVPROC;
1168
   glGetQueryObjectiv: PFNGLGETQUERYOBJECTIVPROC;
1169
   glGetQueryObjectuiv: PFNGLGETQUERYOBJECTUIVPROC;
1170

1171
   // promoted to core v1.5 from GL_ARB_vertex_buffer_object (#28)
1172
   glBindBuffer: PFNGLBINDBUFFERPROC;
1173
   glDeleteBuffers: PFNGLDELETEBUFFERSPROC;
1174
   glGenBuffers: PFNGLGENBUFFERSPROC;
1175
   glIsBuffer: PFNGLISBUFFERPROC;
1176
   glBufferData: PFNGLBUFFERDATAPROC;
1177
   glBufferSubData: PFNGLBUFFERSUBDATAPROC;
1178
   glGetBufferSubData: PFNGLGETBUFFERSUBDATAPROC;
1179
   glMapBuffer: PFNGLMAPBUFFERPROC;
1180
   glUnmapBuffer: PFNGLUNMAPBUFFERPROC;
1181
   glGetBufferParameteriv: PFNGLGETBUFFERPARAMETERIVPROC;
1182
   glGetBufferPointerv: PFNGLGETBUFFERPOINTERVPROC;
1183

1184
   // promoted to core v1.5 from GL_EXT_shadow_funcs (#267)
1185
   // (no functions or procedures)
1186

1187
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1188

1189
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 2.0'} {$ENDIF}
1190

1191
   //  ###########################################################
1192
   //           function and procedure definitions for
1193
   //            extensions integrated into OpenGL 2.0 Core
1194
   //  ###########################################################
1195

1196
   // promoted to core v2.0 from GL_EXT_blend_equation_separate (#299)
1197
   glBlendEquationSeparate: PFNGLBLENDEQUATIONSEPARATEPROC;
1198

1199
   // promoted to core v2.0 from GL_ARB_draw_buffers (#37)
1200
   glDrawBuffers: PFNGLDRAWBUFFERSPROC;
1201

1202
   // promoted to core v2.0 from GL_ARB_stencil_two_side (no # found)
1203
   glStencilOpSeparate: PFNGLSTENCILOPSEPARATEPROC;
1204
   glStencilFuncSeparate: PFNGLSTENCILFUNCSEPARATEPROC;
1205
   glStencilMaskSeparate: PFNGLSTENCILMASKSEPARATEPROC;
1206

1207
   // promoted to core v2.0 from GL_ARB_shader_objects (#30) / GL_ARB_vertex_shader (#31) / GL_ARB_fragment_shader (#32)
1208
   glAttachShader: PFNGLATTACHSHADERPROC;
1209
   glBindAttribLocation: PFNGLBINDATTRIBLOCATIONPROC;
1210
   glCompileShader: PFNGLCOMPILESHADERPROC;
1211
   glCreateProgram: PFNGLCREATEPROGRAMPROC;
1212
   glCreateShader: PFNGLCREATESHADERPROC;
1213
   glDeleteProgram: PFNGLDELETEPROGRAMPROC;
1214
   glDeleteShader: PFNGLDELETESHADERPROC;
1215
   glDetachShader: PFNGLDETACHSHADERPROC;
1216
   glDisableVertexAttribArray: PFNGLDISABLEVERTEXATTRIBARRAYPROC;
1217
   glEnableVertexAttribArray: PFNGLENABLEVERTEXATTRIBARRAYPROC;
1218
   glGetActiveAttrib: PFNGLGETACTIVEATTRIBPROC;
1219
   glGetActiveUniform: PFNGLGETACTIVEUNIFORMPROC;
1220
   glGetAttachedShaders: PFNGLGETATTACHEDSHADERSPROC;
1221
   glGetAttribLocation: PFNGLGETATTRIBLOCATIONPROC;
1222
   glGetProgramiv: PFNGLGETPROGRAMIVPROC;
1223
   glGetProgramInfoLog: PFNGLGETPROGRAMINFOLOGPROC;
1224
   glGetShaderiv: PFNGLGETSHADERIVPROC;
1225
   glGetShaderInfoLog: PFNGLGETSHADERINFOLOGPROC;
1226
   glGetShaderSource: PFNGLGETSHADERSOURCEPROC;
1227
   glGetUniformLocation: PFNGLGETUNIFORMLOCATIONPROC;
1228
   glGetUniformfv: PFNGLGETUNIFORMFVPROC;
1229
   glGetUniformiv: PFNGLGETUNIFORMIVPROC;
1230
   glGetVertexAttribdv: PFNGLGETVERTEXATTRIBDVPROC;
1231
   glGetVertexAttribfv: PFNGLGETVERTEXATTRIBFVPROC;
1232
   glGetVertexAttribiv: PFNGLGETVERTEXATTRIBIVPROC;
1233
   glGetVertexAttribPointerv: PFNGLGETVERTEXATTRIBPOINTERVPROC;
1234
   glIsProgram: PFNGLISPROGRAMPROC;
1235
   glIsShader: PFNGLISSHADERPROC;
1236
   glLinkProgram: PFNGLLINKPROGRAMPROC;
1237
   glShaderSource: PFNGLSHADERSOURCEPROC;
1238
   glUseProgram: PFNGLUSEPROGRAMPROC;
1239
   glUniform1f: PFNGLUNIFORM1FPROC;
1240
   glUniform2f: PFNGLUNIFORM2FPROC;
1241
   glUniform3f: PFNGLUNIFORM3FPROC;
1242
   glUniform4f: PFNGLUNIFORM4FPROC;
1243
   glUniform1i: PFNGLUNIFORM1IPROC;
1244
   glUniform2i: PFNGLUNIFORM2IPROC;
1245
   glUniform3i: PFNGLUNIFORM3IPROC;
1246
   glUniform4i: PFNGLUNIFORM4IPROC;
1247
   glUniform1fv: PFNGLUNIFORM1FVPROC;
1248
   glUniform2fv: PFNGLUNIFORM2FVPROC;
1249
   glUniform3fv: PFNGLUNIFORM3FVPROC;
1250
   glUniform4fv: PFNGLUNIFORM4FVPROC;
1251
   glUniform1iv: PFNGLUNIFORM1IVPROC;
1252
   glUniform2iv: PFNGLUNIFORM2IVPROC;
1253
   glUniform3iv: PFNGLUNIFORM3IVPROC;
1254
   glUniform4iv: PFNGLUNIFORM4IVPROC;
1255
   glUniformMatrix2fv: PFNGLUNIFORMMATRIX2FVPROC;
1256
   glUniformMatrix3fv: PFNGLUNIFORMMATRIX3FVPROC;
1257
   glUniformMatrix4fv: PFNGLUNIFORMMATRIX4FVPROC;
1258
   glValidateProgram: PFNGLVALIDATEPROGRAMPROC;
1259
   glVertexAttrib1d: PFNGLVERTEXATTRIB1DPROC;
1260
   glVertexAttrib1dv: PFNGLVERTEXATTRIB1DVPROC;
1261
   glVertexAttrib1f: PFNGLVERTEXATTRIB1FPROC;
1262
   glVertexAttrib1fv: PFNGLVERTEXATTRIB1FVPROC;
1263
   glVertexAttrib1s: PFNGLVERTEXATTRIB1SPROC;
1264
   glVertexAttrib1sv: PFNGLVERTEXATTRIB1SVPROC;
1265
   glVertexAttrib2d: PFNGLVERTEXATTRIB2DPROC;
1266
   glVertexAttrib2dv: PFNGLVERTEXATTRIB2DVPROC;
1267
   glVertexAttrib2f: PFNGLVERTEXATTRIB2FPROC;
1268
   glVertexAttrib2fv: PFNGLVERTEXATTRIB2FVPROC;
1269
   glVertexAttrib2s: PFNGLVERTEXATTRIB2SPROC;
1270
   glVertexAttrib2sv: PFNGLVERTEXATTRIB2SVPROC;
1271
   glVertexAttrib3d: PFNGLVERTEXATTRIB3DPROC;
1272
   glVertexAttrib3dv: PFNGLVERTEXATTRIB3DVPROC;
1273
   glVertexAttrib3f: PFNGLVERTEXATTRIB3FPROC;
1274
   glVertexAttrib3fv: PFNGLVERTEXATTRIB3FVPROC;
1275
   glVertexAttrib3s: PFNGLVERTEXATTRIB3SPROC;
1276
   glVertexAttrib3sv: PFNGLVERTEXATTRIB3SVPROC;
1277
   glVertexAttrib4Nbv: PFNGLVERTEXATTRIB4NBVPROC;
1278
   glVertexAttrib4Niv: PFNGLVERTEXATTRIB4NIVPROC;
1279
   glVertexAttrib4Nsv: PFNGLVERTEXATTRIB4NSVPROC;
1280
   glVertexAttrib4Nub: PFNGLVERTEXATTRIB4NUBPROC;
1281
   glVertexAttrib4Nubv: PFNGLVERTEXATTRIB4NUBVPROC;
1282
   glVertexAttrib4Nuiv: PFNGLVERTEXATTRIB4NUIVPROC;
1283
   glVertexAttrib4Nusv: PFNGLVERTEXATTRIB4NUSVPROC;
1284
   glVertexAttrib4bv: PFNGLVERTEXATTRIB4BVPROC;
1285
   glVertexAttrib4d: PFNGLVERTEXATTRIB4DPROC;
1286
   glVertexAttrib4dv: PFNGLVERTEXATTRIB4DVPROC;
1287
   glVertexAttrib4f: PFNGLVERTEXATTRIB4FPROC;
1288
   glVertexAttrib4fv: PFNGLVERTEXATTRIB4FVPROC;
1289
   glVertexAttrib4iv: PFNGLVERTEXATTRIB4IVPROC;
1290
   glVertexAttrib4s: PFNGLVERTEXATTRIB4SPROC;
1291
   glVertexAttrib4sv: PFNGLVERTEXATTRIB4SVPROC;
1292
   glVertexAttrib4ubv: PFNGLVERTEXATTRIB4UBVPROC;
1293
   glVertexAttrib4uiv: PFNGLVERTEXATTRIB4UIVPROC;
1294
   glVertexAttrib4usv: PFNGLVERTEXATTRIB4USVPROC;
1295
   glVertexAttribPointer: PFNGLVERTEXATTRIBPOINTERPROC;
1296

1297
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1298

1299
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 2.1'} {$ENDIF}
1300

1301
   //  ###########################################################
1302
   //           function and procedure definitions for
1303
   //            extensions integrated into OpenGL 2.1 Core
1304
   //  ###########################################################
1305

1306
   // promoted to core v2.1 from GL_ARB_pixel_buffer_object
1307
   // (no functions or procedures)
1308

1309
   // promoted to core v2.1 from GL_EXT_texture_sRGB (#315)
1310
   // (no functions or procedures)
1311

1312
   // New commands in OpenGL 2.1
1313
   glUniformMatrix2x3fv: PFNGLUNIFORMMATRIX2X3FVPROC;
1314
   glUniformMatrix3x2fv: PFNGLUNIFORMMATRIX3X2FVPROC;
1315
   glUniformMatrix2x4fv: PFNGLUNIFORMMATRIX2X4FVPROC;
1316
   glUniformMatrix4x2fv: PFNGLUNIFORMMATRIX4X2FVPROC;
1317
   glUniformMatrix3x4fv: PFNGLUNIFORMMATRIX3X4FVPROC;
1318
   glUniformMatrix4x3fv: PFNGLUNIFORMMATRIX4X3FVPROC;
1319

1320
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1321

1322
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 3.0'} {$ENDIF}
1323

1324
   //  ###########################################################
1325
   //           function and procedure definitions for
1326
   //            extensions integrated into OpenGL 3.0 Core
1327
   //  ###########################################################
1328

1329
   // promoted to core v3.0 from GL_EXT_gpu_shader4
1330
   glVertexAttribI1i: PFNGLVERTEXATTRIBI1IPROC;
1331
   glVertexAttribI2i: PFNGLVERTEXATTRIBI2IPROC;
1332
   glVertexAttribI3i: PFNGLVERTEXATTRIBI3IPROC;
1333
   glVertexAttribI4i: PFNGLVERTEXATTRIBI4IPROC;
1334
   glVertexAttribI1ui: PFNGLVERTEXATTRIBI1UIPROC;
1335
   glVertexAttribI2ui: PFNGLVERTEXATTRIBI2UIPROC;
1336
   glVertexAttribI3ui: PFNGLVERTEXATTRIBI3UIPROC;
1337
   glVertexAttribI4ui: PFNGLVERTEXATTRIBI4UIPROC;
1338
   glVertexAttribI1iv: PFNGLVERTEXATTRIBI1IVPROC;
1339
   glVertexAttribI2iv: PFNGLVERTEXATTRIBI2IVPROC;
1340
   glVertexAttribI3iv: PFNGLVERTEXATTRIBI3IVPROC;
1341
   glVertexAttribI4iv: PFNGLVERTEXATTRIBI4IVPROC;
1342
   glVertexAttribI1uiv: PFNGLVERTEXATTRIBI1UIVPROC;
1343
   glVertexAttribI2uiv: PFNGLVERTEXATTRIBI2UIVPROC;
1344
   glVertexAttribI3uiv: PFNGLVERTEXATTRIBI3UIVPROC;
1345
   glVertexAttribI4uiv: PFNGLVERTEXATTRIBI4UIVPROC;
1346
   glVertexAttribI4bv: PFNGLVERTEXATTRIBI4BVPROC;
1347
   glVertexAttribI4sv: PFNGLVERTEXATTRIBI4SVPROC;
1348
   glVertexAttribI4ubv: PFNGLVERTEXATTRIBI4UBVPROC;
1349
   glVertexAttribI4usv: PFNGLVERTEXATTRIBI4USVPROC;
1350
   glVertexAttribIPointer: PFNGLVERTEXATTRIBIPOINTERPROC;
1351
   glGetVertexAttribIiv: PFNGLGETVERTEXATTRIBIIVPROC;
1352
   glGetVertexAttribIuiv: PFNGLGETVERTEXATTRIBIUIVPROC;
1353
   glUniform1ui: PFNGLUNIFORM1UIPROC;
1354
   glUniform2ui: PFNGLUNIFORM2UIPROC;
1355
   glUniform3ui: PFNGLUNIFORM3UIPROC;
1356
   glUniform4ui: PFNGLUNIFORM4UIPROC;
1357
   glUniform1uiv: PFNGLUNIFORM1UIVPROC;
1358
   glUniform2uiv: PFNGLUNIFORM2UIVPROC;
1359
   glUniform3uiv: PFNGLUNIFORM3UIVPROC;
1360
   glUniform4uiv: PFNGLUNIFORM4UIVPROC;
1361
   glGetUniformuiv: PFNGLGETUNIFORMUIVPROC;
1362
   glBindFragDataLocation: PFNGLBINDFRAGDATALOCATIONPROC;
1363
   glGetFragDataLocation: PFNGLGETFRAGDATALOCATIONPROC;
1364

1365
   // promoted to core v3.0 from GL_NV_conditional_render
1366
   glBeginConditionalRender: PFNGLBEGINCONDITIONALRENDERPROC;
1367
   glEndConditionalRender: PFNGLENDCONDITIONALRENDERPROC;
1368

1369
   // promoted to core v3.0 from GL_ARB_color_buffer_float
1370
   glClampColor: PFNGLCLAMPCOLORPROC;
1371

1372
   // promoted to core v3.0 from GL_EXT_texture_integer
1373
   //glClearColorIi: procedure(r: TGLint; g: TGLint; b: TGLint; a: TGLint);{$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF}
1374
   //glClearColorIui: procedure(r: TGLuint; g: TGLuint; b: TGLuint; a: TGLuint);{$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF}
1375
   glTexParameterIiv: PFNGLTEXPARAMETERIIVPROC;
1376
   glTexParameterIuiv: PFNGLTEXPARAMETERIUIVPROC;
1377
   glGetTexParameterIiv: PFNGLGETTEXPARAMETERIIVPROC;
1378
   glGetTexParameterIuiv: PFNGLGETTEXPARAMETERIUIVPROC;
1379

1380
   // promoted to core v3.0 from GL_EXT_draw_buffers2
1381
   glColorMaski: PFNGLCOLORMASKIPROC;
1382
   glGetBooleani_v: PFNGLGETBOOLEANI_VPROC;
1383
   glGetIntegeri_v: PFNGLGETINTEGERI_VPROC;
1384
   glEnablei: PFNGLENABLEIPROC;
1385
   glDisablei: PFNGLDISABLEIPROC;
1386
   glIsEnabledi: PFNGLISENABLEDIPROC;
1387

1388
   //promoted to core v3.0 from GL_EXT_transform_feedback
1389
   glBindBufferRange: PFNGLBINDBUFFERRANGEPROC;
1390
   glBindBufferBase: PFNGLBINDBUFFERBASEPROC;
1391
   glBeginTransformFeedback: PFNGLBEGINTRANSFORMFEEDBACKPROC;
1392
   glEndTransformFeedback: PFNGLENDTRANSFORMFEEDBACKPROC;
1393
   glTransformFeedbackVaryings: PFNGLTRANSFORMFEEDBACKVARYINGSPROC;
1394
   glGetTransformFeedbackVarying: PFNGLGETTRANSFORMFEEDBACKVARYINGPROC;
1395

1396
   // New commands in OpenGL 3.0
1397
   glClearBufferiv: PFNGLCLEARBUFFERIVPROC;
1398
   glClearBufferuiv: PFNGLCLEARBUFFERUIVPROC;
1399
   glClearBufferfv: PFNGLCLEARBUFFERFVPROC;
1400
   glClearBufferfi: PFNGLCLEARBUFFERFIPROC;
1401
   glGetStringi: PFNGLGETSTRINGIPROC;
1402

1403
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1404

1405
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 3.1'} {$ENDIF}
1406

1407
   //  ###########################################################
1408
   //           function and procedure definitions for
1409
   //            extensions integrated into OpenGL 3.1 Core
1410
   //  ###########################################################
1411

1412
   glDrawArraysInstanced: PFNGLDRAWARRAYSINSTANCEDPROC;
1413
   glDrawElementsInstanced: PFNGLDRAWELEMENTSINSTANCEDPROC;
1414
   glTexBuffer: PFNGLTEXBUFFERPROC;
1415
   glPrimitiveRestartIndex: PFNGLPRIMITIVERESTARTINDEXPROC;
1416

1417
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1418

1419
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 3.2'} {$ENDIF}
1420

1421
   //  ###########################################################
1422
   //           function and procedure definitions for
1423
   //            extensions integrated into OpenGL 3.2 Core
1424
   //  ###########################################################
1425

1426
   glGetInteger64i_v: PFNGLGETINTEGER64I_VPROC;
1427
   glGetBufferParameteri64v: PFNGLGETBUFFERPARAMETERI64VPROC;
1428
   glFramebufferTexture: PFNGLFRAMEBUFFERTEXTUREPROC;
1429
//   glFramebufferTextureFace: procedure(target: TGLenum; attachment: TGLenum; texture: TGLuint; level: TGLint; face: TGLenum);{$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF}
1430
   // OpenGL 3.2 also reuses entry points from these extensions:
1431
   // GL_ARB_draw_elements_base_vertex
1432
   // GL_ARB_provoking_vertex
1433
   // GL_ARB_sync
1434
   // GL_ARB_texture_multisample
1435

1436
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1437

1438
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 3.3'} {$ENDIF}
1439

1440
   //  ###########################################################
1441
   //           function and procedure definitions for
1442
   //            extensions integrated into OpenGL 3.3 Core
1443
   //  ###########################################################
1444

1445
   // New commands in OpenGL 3.3
1446
   glVertexAttribDivisor: PFNGLVERTEXATTRIBDIVISORPROC;
1447

1448
   // OpenGL 3.3 reuses entry points from these extensions:
1449
   // GL_ARB_blend_func_extended (ARB #78)
1450
   // GL_ARB_explicit_attrib_location (ARB #79) (none)
1451
   // GL_ARB_occlusion_query2 (ARB #80)
1452
   // GL_ARB_sampler_objects (ARB #81)
1453
   // GL_ARB_shader_bit_encoding (ARB #82)
1454
   // GL_ARB_texture_rgb10_a2ui (ARB #83)
1455
   // GL_ARB_texture_swizzle (ARB #84)
1456
   // GL_ARB_timer_query (ARB #85)
1457
   // GL_ARB_vertex_type_2_10_10_10_rev (ARB #86)
1458

1459
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1460

1461
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 4.0'} {$ENDIF}
1462

1463
   //  ###########################################################
1464
   //           function and procedure definitions for
1465
   //            extensions integrated into OpenGL 4.0 Core
1466
   //  ###########################################################
1467

1468
   // New commands in OpenGL 4.0
1469
   glMinSampleShading: PFNGLMINSAMPLESHADINGPROC;
1470
   glBlendEquationi: PFNGLBLENDEQUATIONIPROC;
1471
   glBlendEquationSeparatei: PFNGLBLENDEQUATIONSEPARATEIPROC;
1472
   glBlendFunci: PFNGLBLENDFUNCIPROC;
1473
   glBlendFuncSeparatei: PFNGLBLENDFUNCSEPARATEIPROC;
1474

1475
   // OpenGL 4.0 uses entry points from these extensions:
1476
   // GL_ARB_draw_indirect (ARB #87)
1477
   // GL_ARB_gpu_shader5 (ARB #88) (none)
1478
   // GL_ARB_gpu_shader_fp64 (ARB #89)
1479
   // GL_ARB_shader_subroutine (ARB #90)
1480
   // GL_ARB_tessellation_shader (ARB #91)
1481
   // GL_ARB_texture_buffer_object_rgb32 (ARB #92) (none)
1482
   // GL_ARB_transform_feedback2 (ARB #93)
1483
   // GL_ARB_transform_feedback3 (ARB #94)
1484

1485
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1486

1487
{$IFDEF GLS_REGIONS} {$region 'New core function/procedure definitions in OpenGL 4.1'} {$ENDIF}
1488

1489
   // OpenGL 4.1 uses entry points from these extensions:
1490
   // ARB_ES2_compatibility
1491
   // ARB_get_program_binary
1492
   // ARB_separate_shader_objects
1493
   // ARB_shader_precision (no entry points)
1494
   // ARB_vertex_attrib_64bit
1495
   // ARB_viewport_array
1496

1497
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1498

1499
{$IFDEF GLS_REGIONS} {$region 'OpenGL Utility (GLU) function/procedure definitions'} {$ENDIF}
1500

1501
   //  ###########################################################
1502
   //           function and procedure definitions for
1503
   //                     GLU extensions
1504
   //  ###########################################################
1505

1506
   // GLU extensions
1507
   gluNurbsCallbackDataEXT: PFNGLUNURBSCALLBACKDATAEXTPROC;
1508
   gluNewNurbsTessellatorEXT: PFNGLUNEWNURBSTESSELLATOREXTPROC;
1509
   gluDeleteNurbsTessellatorEXT: PFNGLUDELETENURBSTESSELLATOREXTPROC;
1510

1511
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1512

1513
{$IFDEF GLS_REGIONS} {$region 'Windows OpenGL (WGL) function/procedure definitions for ARB approved extensions'} {$ENDIF}
1514
   {$IFDEF SUPPORT_WGL}
1515
   //  ###########################################################
1516
   //           function and procedure definitions for
1517
   //               ARB approved WGL extensions
1518
   //  ###########################################################
1519

1520
   // WGL_buffer_region (ARB #4)
1521
   wglCreateBufferRegionARB: PFNWGLCREATEBUFFERREGIONARBPROC;
1522
   wglDeleteBufferRegionARB: PFNWGLDELETEBUFFERREGIONARBPROC;
1523
   wglSaveBufferRegionARB: PFNWGLSAVEBUFFERREGIONARBPROC;
1524
   wglRestoreBufferRegionARB: PFNWGLRESTOREBUFFERREGIONARBPROC;
1525

1526
   // WGL_ARB_extensions_string (ARB #8)
1527
   wglGetExtensionsStringARB: PFNWGLGETEXTENSIONSSTRINGARBPROC;
1528

1529
   // WGL_ARB_pixel_format (ARB #9)
1530
   wglGetPixelFormatAttribivARB: PFNWGLGETPIXELFORMATATTRIBIVARBPROC;
1531
   wglGetPixelFormatAttribfvARB: PFNWGLGETPIXELFORMATATTRIBFVARBPROC;
1532
   wglChoosePixelFormatARB: PFNWGLCHOOSEPIXELFORMATARBPROC;
1533

1534
   // WGL_make_current_read (ARB #10)
1535
   wglMakeContextCurrentARB: PFNWGLMAKECONTEXTCURRENTARBPROC;
1536
   wglGetCurrentReadDCARB: PFNWGLGETCURRENTREADDCARBPROC;
1537

1538
   // WGL_ARB_pbuffer (ARB #11)
1539
   wglCreatePbufferARB: PFNWGLCREATEPBUFFERARBPROC;
1540
   wglGetPbufferDCARB: PFNWGLGETPBUFFERDCARBPROC;
1541
   wglReleasePbufferDCARB: PFNWGLRELEASEPBUFFERDCARBPROC;
1542
   wglDestroyPbufferARB: PFNWGLDESTROYPBUFFERARBPROC;
1543
   wglQueryPbufferARB: PFNWGLQUERYPBUFFERARBPROC;
1544

1545
   // WGL_ARB_render_texture (ARB #20)
1546
   wglBindTexImageARB: PFNWGLBINDTEXIMAGEARBPROC;
1547
   wglReleaseTexImageARB: PFNWGLRELEASETEXIMAGEARBPROC;
1548
   wglSetPbufferAttribARB: PFNWGLSETPBUFFERATTRIBARBPROC;
1549

1550
   // WGL_ARB_create_context (ARB #55)
1551
   wglCreateContextAttribsARB: PFNWGLCREATECONTEXTATTRIBSARBPROC;
1552

1553
   // WGL_NV_gpu_affinity
1554
   wglEnumGpusNV: PFNWGLENUMGPUSNVPROC;
1555
   wglEnumGpuDevicesNV: PFNWGLENUMGPUDEVICESNVPROC;
1556
   wglCreateAffinityDCNV: PFNWGLCREATEAFFINITYDCNVPROC;
1557
   wglEnumGpusFromAffinityDCNV: PFNWGLENUMGPUSFROMAFFINITYDCNVPROC;
1558
   wglDeleteDCNV: PFNWGLDELETEDCNVPROC;
1559

1560
   {$ENDIF}
1561
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1562

1563
{$IFDEF GLS_REGIONS} {$region 'Windows OpenGL (WGL) function/procedure definitions for Vendor/EXT extensions'} {$ENDIF}
1564
   {$IFDEF SUPPORT_WGL}
1565
   //  ###########################################################
1566
   //           function and procedure definitions for
1567
   //               Vendor/EXT WGL extensions
1568
   //  ###########################################################
1569

1570
   // WGL_EXT_swap_control (EXT #172)
1571
   wglSwapIntervalEXT: PFNWGLSWAPINTERVALEXTPROC;
1572
   wglGetSwapIntervalEXT: PFNWGLGETSWAPINTERVALEXTPROC;
1573
   {$ENDIF}
1574
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1575

1576
{$IFDEF GLS_REGIONS} {$region 'GLX function/procedure definitions for ARB approved extensions'} {$ENDIF}
1577
 {$IFDEF SUPPORT_GLX}
1578
   //  ###########################################################
1579
   //           function and procedure definitions for
1580
   //               ARB approved GLX extensions
1581
   //  ###########################################################
1582

1583
   // GLX 1.3 and later
1584
   glXChooseFBConfig: PFNGLXCHOOSEFBCONFIGPROC;
1585
   glXGetFBConfigAttrib: PFNGLXGETFBCONFIGATTRIBPROC;
1586
   glXGetFBConfigs: PFNGLXGETFBCONFIGSPROC;
1587
   glXGetVisualFromFBConfig: PFNGLXGETVISUALFROMFBCONFIGPROC;
1588
   glXCreateWindow: PFNGLXCREATEWINDOWPROC;
1589
   glXDestroyWindow: PFNGLXDESTROYWINDOWPROC;
1590
   glXCreatePixmap: PFNGLXCREATEPIXMAPPROC;
1591
   glXDestroyPixmap: PFNGLXDESTROYPIXMAPPROC;
1592
   glXCreatePbuffer: PFNGLXCREATEPBUFFERPROC;
1593
   glXDestroyPbuffer: PFNGLXDESTROYPBUFFERPROC;
1594
   glXQueryDrawable: PFNGLXQUERYDRAWABLEPROC;
1595
   glXCreateNewContext: PFNGLXCREATENEWCONTEXTPROC;
1596
   glXMakeContextCurrent: PFNGLXMAKECONTEXTCURRENTPROC;
1597
   glXGetCurrentReadDrawable: PFNGLXGETCURRENTREADDRAWABLEPROC;
1598
   glXQueryContext: PFNGLXQUERYCONTEXTPROC;
1599
   glXSelectEvent: PFNGLXSELECTEVENTPROC;
1600
   glXGetSelectedEvent: PFNGLXGETSELECTEDEVENTPROC;
1601
   glXBindTexImageARB: PFNGLXBINDTEXIMAGEARBPROC;
1602
   glXReleaseTexImageARB: PFNGLXRELEASETEXIMAGEARBPROC;
1603
   glxDrawableAttribARB: PFNGLXDRAWABLEATTRIBARBPROC;
1604

1605
   //GLX 1.4
1606
   // GLX_ARB_create_context (EXT #56)
1607
   glXCreateContextAttribsARB: PFNGLXCREATECONTEXTATTRIBSARBPROC;
1608
   glXGetProcAddress: PFNGLXGETPROCADDRESSPROC;
1609
   glXGetProcAddressARB: PFNGLXGETPROCADDRESSARBPROC;
1610

1611
   {$ENDIF}
1612
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1613

1614
{$IFDEF GLS_REGIONS} {$region 'GLX function/procedure definitions for Vendor/EXT extensions'} {$ENDIF}
1615
   {$IFDEF SUPPORT_GLX}
1616
   //  ###########################################################
1617
   //           function and procedure definitions for
1618
   //               Vendor/EXT GLX extensions
1619
   //  ###########################################################
1620

1621
   // GLX_SGI_swap_control (EXT #40)
1622
   glXSwapIntervalSGI: PFNGLXSWAPINTERVALSGIPROC;
1623
   glXGetVideoSyncSGI: PFNGLXGETVIDEOSYNCSGIPROC;
1624
   glXWaitVideoSyncSGI: PFNGLXWAITVIDEOSYNCSGIPROC;
1625
   glXFreeContextEXT: PFNGLXFREECONTEXTEXTPROC;
1626
   glXGetContextIDEXT: PFNGLXGETCONTEXTIDEXTPROC;
1627
   glXGetCurrentDisplayEXT: PFNGLXGETCURRENTDISPLAYEXTPROC;
1628
   glXImportContextEXT: PFNGLXIMPORTCONTEXTEXTPROC;
1629
   glXQueryContextInfoEXT: PFNGLXQUERYCONTEXTINFOEXTPROC;
1630
   glXCopySubBufferMESA: PFNGLXCOPYSUBBUFFERMESAPROC;
1631
   glXCreateGLXPixmapMESA: PFNGLXCREATEGLXPIXMAPMESAPROC;
1632
   glXReleaseBuffersMESA: PFNGLXRELEASEBUFFERSMESAPROC;
1633
   glXSet3DfxModeMESA: PFNGLXSET3DFXMODEMESAPROC;
1634

1635
   glXBindTexImageEXT: PFNGLXBINDTEXIMAGEEXTPROC;
1636
   glXReleaseTexImageEXT: PFNGLXRELEASETEXIMAGEEXTPROC;
1637

1638
   //GLX 1.4
1639
   glXMakeCurrentReadSGI: PFNGLXMAKECURRENTREADSGIPROC;
1640
   glXGetCurrentReadDrawableSGI: PFNGLXGETCURRENTREADDRAWABLESGIPROC;
1641
   glXGetFBConfigAttribSGIX: PFNGLXGETFBCONFIGATTRIBSGIXPROC;
1642
   glXChooseFBConfigSGIX: PFNGLXCHOOSEFBCONFIGSGIXPROC;
1643
   glXCreateGLXPixmapWithConfigSGIX: PFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC;
1644
   glXCreateContextWithConfigSGIX: PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC;
1645
   glXGetVisualFromFBConfigSGIX: PFNGLXGETVISUALFROMFBCONFIGSGIXPROC;
1646
   glXGetFBConfigFromVisualSGIX: PFNGLXGETFBCONFIGFROMVISUALSGIXPROC;
1647
   glXCreateGLXPbufferSGIX: PFNGLXCREATEGLXPBUFFERSGIXPROC;
1648
   glXDestroyGLXPbufferSGIX: PFNGLXDESTROYGLXPBUFFERSGIXPROC;
1649
   glXQueryGLXPbufferSGIX: PFNGLXQUERYGLXPBUFFERSGIXPROC;
1650
   glXSelectEventSGIX: PFNGLXSELECTEVENTSGIXPROC;
1651
   glXGetSelectedEventSGIX: PFNGLXGETSELECTEDEVENTSGIXPROC;
1652
   glXCushionSGI: PFNGLXCUSHIONSGIPROC;
1653
   glXBindChannelToWindowSGIX: PFNGLXBINDCHANNELTOWINDOWSGIXPROC;
1654
   glXChannelRectSGIX: PFNGLXCHANNELRECTSGIXPROC;
1655
   glXQueryChannelRectSGIX: PFNGLXQUERYCHANNELRECTSGIXPROC;
1656
   glXQueryChannelDeltasSGIX: PFNGLXQUERYCHANNELDELTASSGIXPROC;
1657
   glXChannelRectSyncSGIX: PFNGLXCHANNELRECTSYNCSGIXPROC;
1658
   glXJoinSwapGroupSGIX: PFNGLXJOINSWAPGROUPSGIXPROC;
1659
   glXBindSwapBarrierSGIX: PFNGLXBINDSWAPBARRIERSGIXPROC;
1660
   glXQueryMaxSwapBarriersSGIX: PFNGLXQUERYMAXSWAPBARRIERSSGIXPROC;
1661
   glXQueryHyperpipeNetworkSGIX: PFNGLXQUERYHYPERPIPENETWORKSGIXPROC;
1662
   glXHyperpipeConfigSGIX: PFNGLXHYPERPIPECONFIGSGIXPROC;
1663
   glXQueryHyperpipeConfigSGIX: PFNGLXQUERYHYPERPIPECONFIGSGIXPROC;
1664
   glXDestroyHyperpipeConfigSGIX: PFNGLXDESTROYHYPERPIPECONFIGSGIXPROC;
1665
   glXBindHyperpipeSGIX: PFNGLXBINDHYPERPIPESGIXPROC;
1666
   glXQueryHyperpipeBestAttribSGIX: PFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC;
1667
   glXHyperpipeAttribSGIX: PFNGLXHYPERPIPEATTRIBSGIXPROC;
1668
   glXQueryHyperpipeAttribSGIX: PFNGLXQUERYHYPERPIPEATTRIBSGIXPROC;
1669
   glXGetAGPOffsetMESA: PFNGLXGETAGPOFFSETMESAPROC;
1670
   glXEnumerateVideoDevicesNV: PFNGLXENUMERATEVIDEODEVICESNVPROC;
1671
   glXBindVideoDeviceNV: PFNGLXBINDVIDEODEVICENVPROC;
1672
   glxGetVideoDeviceNV: PFNGLXGETVIDEODEVICENVPROC;
1673

1674
   glXAllocateMemoryNV: PFNGLXALLOCATEMEMORYNVPROC;
1675
   glXFreeMemoryNV: PFNGLXFREEMEMORYNVPROC;
1676

1677
   glXReleaseVideoDeviceNV: PFNGLXRELEASEVIDEODEVICENVPROC;
1678
   glXBindVideoImageNV: PFNGLXBINDVIDEOIMAGENVPROC;
1679
   glXReleaseVideoImageNV: PFNGLXRELEASEVIDEOIMAGENVPROC;
1680
   glXSendPbufferToVideoNV: PFNGLXSENDPBUFFERTOVIDEONVPROC;
1681
   glXGetVideoInfoNV: PFNGLXGETVIDEOINFONVPROC;
1682
   glXJoinSwapGroupNV: PFNGLXJOINSWAPGROUPNVPROC;
1683
   glXBindSwapBarrierNV: PFNGLXBINDSWAPBARRIERNVPROC;
1684
   glXQuerySwapGroupNV: PFNGLXQUERYSWAPGROUPNVPROC;
1685
   glXQueryMaxSwapGroupsNV: PFNGLXQUERYMAXSWAPGROUPSNVPROC;
1686
   glXQueryFrameCountNV: PFNGLXQUERYFRAMECOUNTNVPROC;
1687
   glXResetFrameCountNV: PFNGLXRESETFRAMECOUNTNVPROC;
1688
   glXBindVideoCaptureDeviceNV: PFNGLXBINDVIDEOCAPTUREDEVICENVPROC;
1689
   glXEnumerateVideoCaptureDevicesNV: PFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC;
1690
   glxLockVideoCaptureDeviceNV: PFNGLXLOCKVIDEOCAPTUREDEVICENVPROC;
1691
   glXQueryVideoCaptureDeviceNV: PFNGLXQUERYVIDEOCAPTUREDEVICENVPROC;
1692
   glXReleaseVideoCaptureDeviceNV: PFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC;
1693
   glXSwapIntervalEXT: PFNGLXSWAPINTERVALEXTPROC;
1694
   glXCopyImageSubDataNV: PFNGLXCOPYIMAGESUBDATANVPROC;
1695

1696
   {$ENDIF}
1697
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
1698

1699
{$IFDEF GLS_REGIONS} {$region 'OpenGL function/procedure definitions for ARB approved extensions'} {$ENDIF}
1700

1701
   //  ###########################################################
1702
   //           function and procedure definitions for
1703
   //                  ARB approved extensions
1704
   //  ###########################################################
1705

1706
   // unknown ARB extension
1707
   glSamplePassARB: PFNGLSAMPLEPASSARBPROC;
1708
   
1709
   // GL_ARB_multitexture (ARB #1)
1710
   glActiveTextureARB: PFNGLACTIVETEXTUREARBPROC;
1711
   glClientActiveTextureARB: PFNGLCLIENTACTIVETEXTUREARBPROC;
1712
   glMultiTexCoord1dARB: PFNGLMULTITEXCOORD1DARBPROC;
1713
   glMultiTexCoord1dVARB: PFNGLMULTITEXCOORD1DVARBPROC;
1714
   glMultiTexCoord1fARB: PFNGLMULTITEXCOORD1FARBPROC;
1715
   glMultiTexCoord1fVARB: PFNGLMULTITEXCOORD1FVARBPROC;
1716
   glMultiTexCoord1iARB: PFNGLMULTITEXCOORD1IARBPROC;
1717
   glMultiTexCoord1iVARB: PFNGLMULTITEXCOORD1IVARBPROC;
1718
   glMultiTexCoord1sARB: PFNGLMULTITEXCOORD1SARBPROC;
1719
   glMultiTexCoord1sVARB: PFNGLMULTITEXCOORD1SVARBPROC;
1720
   glMultiTexCoord2dARB: PFNGLMULTITEXCOORD2DARBPROC;
1721
   glMultiTexCoord2dvARB: PFNGLMULTITEXCOORD2DVARBPROC;
1722
   glMultiTexCoord2fARB: PFNGLMULTITEXCOORD2FARBPROC;
1723
   glMultiTexCoord2fvARB: PFNGLMULTITEXCOORD2FVARBPROC;
1724
   glMultiTexCoord2iARB: PFNGLMULTITEXCOORD2IARBPROC;
1725
   glMultiTexCoord2ivARB: PFNGLMULTITEXCOORD2IVARBPROC;
1726
   glMultiTexCoord2sARB: PFNGLMULTITEXCOORD2SARBPROC;
1727
   glMultiTexCoord2svARB: PFNGLMULTITEXCOORD2SVARBPROC;
1728
   glMultiTexCoord3dARB: PFNGLMULTITEXCOORD3DARBPROC;
1729
   glMultiTexCoord3dvARB: PFNGLMULTITEXCOORD3DVARBPROC;
1730
   glMultiTexCoord3fARB: PFNGLMULTITEXCOORD3FARBPROC;
1731
   glMultiTexCoord3fvARB: PFNGLMULTITEXCOORD3FVARBPROC;
1732
   glMultiTexCoord3iARB: PFNGLMULTITEXCOORD3IARBPROC;
1733
   glMultiTexCoord3ivARB: PFNGLMULTITEXCOORD3IVARBPROC;
1734
   glMultiTexCoord3sARB: PFNGLMULTITEXCOORD3SARBPROC;
1735
   glMultiTexCoord3svARB: PFNGLMULTITEXCOORD3SVARBPROC;
1736
   glMultiTexCoord4dARB: PFNGLMULTITEXCOORD4DARBPROC;
1737
   glMultiTexCoord4dvARB: PFNGLMULTITEXCOORD4DVARBPROC;
1738
   glMultiTexCoord4fARB: PFNGLMULTITEXCOORD4FARBPROC;
1739
   glMultiTexCoord4fvARB: PFNGLMULTITEXCOORD4FVARBPROC;
1740
   glMultiTexCoord4iARB: PFNGLMULTITEXCOORD4IARBPROC;
1741
   glMultiTexCoord4ivARB: PFNGLMULTITEXCOORD4IVARBPROC;
1742
   glMultiTexCoord4sARB: PFNGLMULTITEXCOORD4SARBPROC;
1743
   glMultiTexCoord4svARB: PFNGLMULTITEXCOORD4SVARBPROC;
1744

1745
   // GL_ARB_transpose_matrix (ARB #3)
1746
   glLoadTransposeMatrixfARB: PFNGLLOADTRANSPOSEMATRIXFARBPROC;
1747
   glLoadTransposeMatrixdARB: PFNGLLOADTRANSPOSEMATRIXDARBPROC;
1748
   glMultTransposeMatrixfARB: PFNGLMULTTRANSPOSEMATRIXFARBPROC;
1749
   glMultTransposeMatrixdARB: PFNGLMULTTRANSPOSEMATRIXDARBPROC;
1750

1751
   // GL_ARB_multisample (ARB #5)
1752
   glSampleCoverageARB: PFNGLSAMPLECOVERAGEARBPROC;
1753

1754
   // GL_ARB_texture_compression (ARB #12)
1755
   glCompressedTexImage3DARB: PFNGLCOMPRESSEDTEXIMAGE3DARBPROC;
1756
   glCompressedTexImage2DARB: PFNGLCOMPRESSEDTEXIMAGE2DARBPROC;
1757
   glCompressedTexImage1DARB: PFNGLCOMPRESSEDTEXIMAGE1DARBPROC;
1758
   glCompressedTexSubImage3DARB: PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC;
1759
   glCompressedTexSubImage2DARB: PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC;
1760
   glCompressedTexSubImage1DARB: PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC;
1761
   glGetCompressedTexImageARB: PFNGLGETCOMPRESSEDTEXIMAGEARBPROC;
1762

1763
   // GL_ARB_point_parameter (ARB #14)
1764
   glPointParameterfARB: PFNGLPOINTPARAMETERFARBPROC;
1765
   glPointParameterfvARB: PFNGLPOINTPARAMETERFVARBPROC;
1766

1767
   // GL_ARB_vertex_blend (ARB #15) {deprecated?}
1768
   glWeightbvARB: PFNGLWEIGHTBVARBPROC;
1769
   glWeightsvARB: PFNGLWEIGHTSVARBPROC;
1770
   glWeightivARB: PFNGLWEIGHTIVARBPROC;
1771
   glWeightfvARB: PFNGLWEIGHTFVARBPROC;
1772
   glWeightdvARB: PFNGLWEIGHTDVARBPROC;
1773
   glWeightubvARB: PFNGLWEIGHTUBVARBPROC;
1774
   glWeightusvARB: PFNGLWEIGHTUSVARBPROC;
1775
   glWeightuivARB: PFNGLWEIGHTUIVARBPROC;
1776
   glWeightPointerARB: PFNGLWEIGHTPOINTERARBPROC;
1777
   glVertexBlendARB: PFNGLVERTEXBLENDARBPROC;
1778

1779
   // GL_ARB_matrix_palette (ARB #16) {deprecated?}
1780
   glCurrentPaletteMatrixARB: PFNGLCURRENTPALETTEMATRIXARBPROC;
1781
   glMatrixIndexubvARB: PFNGLMATRIXINDEXUBVARBPROC;
1782
   glMatrixIndexusvARB: PFNGLMATRIXINDEXUSVARBPROC;
1783
   glMatrixIndexuivARB: PFNGLMATRIXINDEXUIVARBPROC;
1784
   glMatrixIndexPointerARB: PFNGLMATRIXINDEXPOINTERARBPROC;
1785

1786
   // GL_ARB_window_pos (ARB #25)
1787
   glWindowPos2dARB: PFNGLWINDOWPOS2DARBPROC;
1788
   glWindowPos2dvARB: PFNGLWINDOWPOS2DVARBPROC;
1789
   glWindowPos2fARB: PFNGLWINDOWPOS2FARBPROC;
1790
   glWindowPos2fvARB: PFNGLWINDOWPOS2FVARBPROC;
1791
   glWindowPos2iARB: PFNGLWINDOWPOS2IARBPROC;
1792
   glWindowPos2ivARB: PFNGLWINDOWPOS2IVARBPROC;
1793
   glWindowPos2sARB: PFNGLWINDOWPOS2SARBPROC;
1794
   glWindowPos2svARB: PFNGLWINDOWPOS2SVARBPROC;
1795
   glWindowPos3dARB: PFNGLWINDOWPOS3DARBPROC;
1796
   glWindowPos3dvARB: PFNGLWINDOWPOS3DVARBPROC;
1797
   glWindowPos3fARB: PFNGLWINDOWPOS3FARBPROC;
1798
   glWindowPos3fvARB: PFNGLWINDOWPOS3FVARBPROC;
1799
   glWindowPos3iARB: PFNGLWINDOWPOS3IARBPROC;
1800
   glWindowPos3ivARB: PFNGLWINDOWPOS3IVARBPROC;
1801
   glWindowPos3sARB: PFNGLWINDOWPOS3SARBPROC;
1802
   glWindowPos3svARB: PFNGLWINDOWPOS3SVARBPROC;
1803

1804
   // GL_ARB_vertex_program (ARB #26)
1805
   glVertexAttrib1dARB: PFNGLVERTEXATTRIB1DARBPROC;
1806
   glVertexAttrib1dvARB: PFNGLVERTEXATTRIB1DVARBPROC;
1807
   glVertexAttrib1fARB: PFNGLVERTEXATTRIB1FARBPROC;
1808
   glVertexAttrib1fvARB: PFNGLVERTEXATTRIB1FVARBPROC;
1809
   glVertexAttrib1sARB: PFNGLVERTEXATTRIB1SARBPROC;
1810
   glVertexAttrib1svARB: PFNGLVERTEXATTRIB1SVARBPROC;
1811
   glVertexAttrib2dARB: PFNGLVERTEXATTRIB2DARBPROC;
1812
   glVertexAttrib2dvARB: PFNGLVERTEXATTRIB2DVARBPROC;
1813
   glVertexAttrib2fARB: PFNGLVERTEXATTRIB2FARBPROC;
1814
   glVertexAttrib2fvARB: PFNGLVERTEXATTRIB2FVARBPROC;
1815
   glVertexAttrib2sARB: PFNGLVERTEXATTRIB2SARBPROC;
1816
   glVertexAttrib2svARB: PFNGLVERTEXATTRIB2SVARBPROC;
1817
   glVertexAttrib3dARB: PFNGLVERTEXATTRIB3DARBPROC;
1818
   glVertexAttrib3dvARB: PFNGLVERTEXATTRIB3DVARBPROC;
1819
   glVertexAttrib3fARB: PFNGLVERTEXATTRIB3FARBPROC;
1820
   glVertexAttrib3fvARB: PFNGLVERTEXATTRIB3FVARBPROC;
1821
   glVertexAttrib3sARB: PFNGLVERTEXATTRIB3SARBPROC;
1822
   glVertexAttrib3svARB: PFNGLVERTEXATTRIB3SVARBPROC;
1823
   glVertexAttrib4NbvARB: PFNGLVERTEXATTRIB4NBVARBPROC;
1824
   glVertexAttrib4NivARB: PFNGLVERTEXATTRIB4NIVARBPROC;
1825
   glVertexAttrib4NsvARB: PFNGLVERTEXATTRIB4NSVARBPROC;
1826
   glVertexAttrib4NubARB: PFNGLVERTEXATTRIB4NUBARBPROC;
1827
   glVertexAttrib4NubvARB: PFNGLVERTEXATTRIB4NUBVARBPROC;
1828
   glVertexAttrib4NuivARB: PFNGLVERTEXATTRIB4NUIVARBPROC;
1829
   glVertexAttrib4NusvARB: PFNGLVERTEXATTRIB4NUSVARBPROC;
1830
   glVertexAttrib4bvARB: PFNGLVERTEXATTRIB4BVARBPROC;
1831
   glVertexAttrib4dARB: PFNGLVERTEXATTRIB4DARBPROC;
1832
   glVertexAttrib4dvARB: PFNGLVERTEXATTRIB4DVARBPROC;
1833
   glVertexAttrib4fARB: PFNGLVERTEXATTRIB4FARBPROC;
1834
   glVertexAttrib4fvARB: PFNGLVERTEXATTRIB4FVARBPROC;
1835
   glVertexAttrib4ivARB: PFNGLVERTEXATTRIB4IVARBPROC;
1836
   glVertexAttrib4sARB: PFNGLVERTEXATTRIB4SARBPROC;
1837
   glVertexAttrib4svARB: PFNGLVERTEXATTRIB4SVARBPROC;
1838
   glVertexAttrib4ubvARB: PFNGLVERTEXATTRIB4UBVARBPROC;
1839
   glVertexAttrib4uivARB: PFNGLVERTEXATTRIB4UIVARBPROC;
1840
   glVertexAttrib4usvARB: PFNGLVERTEXATTRIB4USVARBPROC;
1841
   glVertexAttribPointerARB: PFNGLVERTEXATTRIBPOINTERARBPROC;
1842
   glEnableVertexAttribArrayARB: PFNGLENABLEVERTEXATTRIBARRAYARBPROC;
1843
   glDisableVertexAttribArrayARB: PFNGLDISABLEVERTEXATTRIBARRAYARBPROC;
1844
   glProgramStringARB: PFNGLPROGRAMSTRINGARBPROC;
1845
   glBindProgramARB: PFNGLBINDPROGRAMARBPROC;
1846
   glDeleteProgramsARB: PFNGLDELETEPROGRAMSARBPROC;
1847
   glGenProgramsARB: PFNGLGENPROGRAMSARBPROC;
1848
   glProgramEnvParameter4dARB: PFNGLPROGRAMENVPARAMETER4DARBPROC;
1849
   glProgramEnvParameter4dvARB: PFNGLPROGRAMENVPARAMETER4DVARBPROC;
1850
   glProgramEnvParameter4fARB: PFNGLPROGRAMENVPARAMETER4FARBPROC;
1851
   glProgramEnvParameter4fvARB: PFNGLPROGRAMENVPARAMETER4FVARBPROC;
1852
   glProgramLocalParameter4dARB: PFNGLPROGRAMLOCALPARAMETER4DARBPROC;
1853
   glProgramLocalParameter4dvARB: PFNGLPROGRAMLOCALPARAMETER4DVARBPROC;
1854
   glProgramLocalParameter4fARB: PFNGLPROGRAMLOCALPARAMETER4FARBPROC;
1855
   glProgramLocalParameter4fvARB: PFNGLPROGRAMLOCALPARAMETER4FVARBPROC;
1856
   glGetProgramEnvParameterdvARB: PFNGLGETPROGRAMENVPARAMETERDVARBPROC;
1857
   glGetProgramEnvParameterfvARB: PFNGLGETPROGRAMENVPARAMETERFVARBPROC;
1858
   glGetProgramLocalParameterdvARB: PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC;
1859
   glGetProgramLocalParameterfvARB: PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC;
1860
   glGetProgramivARB: PFNGLGETPROGRAMIVARBPROC;
1861
   glGetProgramStringARB: PFNGLGETPROGRAMSTRINGARBPROC;
1862
   glGetVertexAttribdvARB: PFNGLGETVERTEXATTRIBDVARBPROC;
1863
   glGetVertexAttribfvARB: PFNGLGETVERTEXATTRIBFVARBPROC;
1864
   glGetVertexAttribivARB: PFNGLGETVERTEXATTRIBIVARBPROC;
1865
   glGetVertexAttribPointervARB: PFNGLGETVERTEXATTRIBPOINTERVARBPROC;
1866
   glIsProgramARB: PFNGLISPROGRAMARBPROC;
1867

1868
   // GL_ARB_vertex_buffer_object (ARB #28)
1869
   glBindBufferARB: PFNGLBINDBUFFERARBPROC;
1870
   glDeleteBuffersARB: PFNGLDELETEBUFFERSARBPROC;
1871
   glGenBuffersARB: PFNGLGENBUFFERSARBPROC;
1872
   glIsBufferARB: PFNGLISBUFFERARBPROC;
1873
   glBufferDataARB: PFNGLBUFFERDATAARBPROC;
1874
   glBufferSubDataARB: PFNGLBUFFERSUBDATAARBPROC;
1875
   glGetBufferSubDataARB: PFNGLGETBUFFERSUBDATAARBPROC;
1876
   glMapBufferARB: PFNGLMAPBUFFERARBPROC;
1877
   glUnmapBufferARB: PFNGLUNMAPBUFFERARBPROC;
1878
   glGetBufferParameterivARB: PFNGLGETBUFFERPARAMETERIVARBPROC;
1879
   glGetBufferPointervARB: PFNGLGETBUFFERPOINTERVARBPROC;
1880

1881
   // GL_ARB_occlusion_query (ARB #29)
1882
   glGenQueriesARB: PFNGLGENQUERIESARBPROC;
1883
   glDeleteQueriesARB: PFNGLDELETEQUERIESARBPROC;
1884
   glIsQueryARB: PFNGLISQUERYARBPROC;
1885
   glBeginQueryARB: PFNGLBEGINQUERYARBPROC;
1886
   glEndQueryARB: PFNGLENDQUERYARBPROC;
1887
   glGetQueryivARB: PFNGLGETQUERYIVARBPROC;
1888
   glGetQueryObjectivARB: PFNGLGETQUERYOBJECTIVARBPROC;
1889
   glGetQueryObjectuivARB: PFNGLGETQUERYOBJECTUIVARBPROC;
1890

1891
   // GL_ARB_shader_objects (ARB #30)
1892
   glDeleteObjectARB: PFNGLDELETEOBJECTARBPROC;
1893
   glGetHandleARB: PFNGLGETHANDLEARBPROC;
1894
   glDetachObjectARB: PFNGLDETACHOBJECTARBPROC;
1895
   glCreateShaderObjectARB: PFNGLCREATESHADEROBJECTARBPROC;
1896
   glShaderSourceARB: PFNGLSHADERSOURCEARBPROC;
1897
   glCompileShaderARB: PFNGLCOMPILESHADERARBPROC;
1898
   glCreateProgramObjectARB: PFNGLCREATEPROGRAMOBJECTARBPROC;
1899
   glAttachObjectARB: PFNGLATTACHOBJECTARBPROC;
1900
   glLinkProgramARB: PFNGLLINKPROGRAMARBPROC;
1901
   glUseProgramObjectARB: PFNGLUSEPROGRAMOBJECTARBPROC;
1902
   glValidateProgramARB: PFNGLVALIDATEPROGRAMARBPROC;
1903
   glUniform1fARB: PFNGLUNIFORM1FARBPROC;
1904
   glUniform2fARB: PFNGLUNIFORM2FARBPROC;
1905
   glUniform3fARB: PFNGLUNIFORM3FARBPROC;
1906
   glUniform4fARB: PFNGLUNIFORM4FARBPROC;
1907
   glUniform1iARB: PFNGLUNIFORM1IARBPROC;
1908
   glUniform2iARB: PFNGLUNIFORM2IARBPROC;
1909
   glUniform3iARB: PFNGLUNIFORM3IARBPROC;
1910
   glUniform4iARB: PFNGLUNIFORM4IARBPROC;
1911
   glUniform1fvARB: PFNGLUNIFORM1FVARBPROC;
1912
   glUniform2fvARB: PFNGLUNIFORM2FVARBPROC;
1913
   glUniform3fvARB: PFNGLUNIFORM3FVARBPROC;
1914
   glUniform4fvARB: PFNGLUNIFORM4FVARBPROC;
1915
   glUniform1ivARB: PFNGLUNIFORM1IVARBPROC;
1916
   glUniform2ivARB: PFNGLUNIFORM2IVARBPROC;
1917
   glUniform3ivARB: PFNGLUNIFORM3IVARBPROC;
1918
   glUniform4ivARB: PFNGLUNIFORM4IVARBPROC;
1919
   glUniformMatrix2fvARB: PFNGLUNIFORMMATRIX2FVARBPROC;
1920
   glUniformMatrix3fvARB: PFNGLUNIFORMMATRIX3FVARBPROC;
1921
   glUniformMatrix4fvARB: PFNGLUNIFORMMATRIX4FVARBPROC;
1922
   glGetObjectParameterfvARB: PFNGLGETOBJECTPARAMETERFVARBPROC;
1923
   glGetObjectParameterivARB: PFNGLGETOBJECTPARAMETERIVARBPROC;
1924
   glGetInfoLogARB: PFNGLGETINFOLOGARBPROC;
1925
   glGetAttachedObjectsARB: PFNGLGETATTACHEDOBJECTSARBPROC;
1926
   glGetUniformLocationARB: PFNGLGETUNIFORMLOCATIONARBPROC;
1927
   glGetActiveUniformARB: PFNGLGETACTIVEUNIFORMARBPROC;
1928
   glGetUniformfvARB: PFNGLGETUNIFORMFVARBPROC;
1929
   glGetUniformivARB: PFNGLGETUNIFORMIVARBPROC;
1930
   glGetShaderSourceARB: PFNGLGETSHADERSOURCEARBPROC;
1931

1932
   // GL_ARB_vertex_shader (ARB #31)
1933
   glBindAttribLocationARB: PFNGLBINDATTRIBLOCATIONARBPROC;
1934
   glGetActiveAttribARB: PFNGLGETACTIVEATTRIBARBPROC;
1935
   glGetAttribLocationARB: PFNGLGETATTRIBLOCATIONARBPROC;
1936

1937
   // GL_ARB_DrawBuffers (ARB #37)
1938
   glDrawBuffersARB: PFNGLDRAWBUFFERSARBPROC;
1939

1940
   // GL_ARB_color_buffer_float (ARB #39)
1941
   glClampColorARB: PFNGLCLAMPCOLORARBPROC;
1942

1943
   // GL_ARB_draw_instanced (ARB #44)
1944
   glDrawArraysInstancedARB: PFNGLDRAWARRAYSINSTANCEDARBPROC;
1945
   glDrawElementsInstancedARB: PFNGLDRAWELEMENTSINSTANCEDARBPROC;
1946

1947
   // GL_ARB_framebuffer_object (ARB #45)
1948
   glIsRenderbuffer: PFNGLISRENDERBUFFERPROC;
1949
   glBindRenderbuffer: PFNGLBINDRENDERBUFFERPROC;
1950
   glDeleteRenderbuffers: PFNGLDELETERENDERBUFFERSPROC;
1951
   glGenRenderbuffers: PFNGLGENRENDERBUFFERSPROC;
1952
   glRenderbufferStorage: PFNGLRENDERBUFFERSTORAGEPROC;
1953
   glRenderbufferStorageMultisample: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC;
1954
   glGetRenderbufferParameteriv: PFNGLGETRENDERBUFFERPARAMETERIVPROC;
1955
   glIsFramebuffer: PFNGLISFRAMEBUFFERPROC;
1956
   glBindFramebuffer: PFNGLBINDFRAMEBUFFERPROC;
1957
   glDeleteFramebuffers: PFNGLDELETEFRAMEBUFFERSPROC;
1958
   glGenFramebuffers: PFNGLGENFRAMEBUFFERSPROC;
1959
   glCheckFramebufferStatus: PFNGLCHECKFRAMEBUFFERSTATUSPROC;
1960
   glFramebufferTexture1D: PFNGLFRAMEBUFFERTEXTURE1DPROC;
1961
   glFramebufferTexture2D: PFNGLFRAMEBUFFERTEXTURE2DPROC;
1962
   glFramebufferTexture3D: PFNGLFRAMEBUFFERTEXTURE3DPROC;
1963
   glFramebufferTextureLayer: PFNGLFRAMEBUFFERTEXTURELAYERPROC;
1964
   glFramebufferRenderbuffer: PFNGLFRAMEBUFFERRENDERBUFFERPROC;
1965
   glGetFramebufferAttachmentParameteriv: PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC;
1966
   glBlitFramebuffer: PFNGLBLITFRAMEBUFFERPROC;
1967
   glGenerateMipmap: PFNGLGENERATEMIPMAPPROC;
1968

1969
   // GL_ARB_geometry_shader4 (ARB #47)
1970
   glProgramParameteriARB: PFNGLPROGRAMPARAMETERIARBPROC;
1971
   glFramebufferTextureARB: PFNGLFRAMEBUFFERTEXTUREARBPROC;
1972
   glFramebufferTextureLayerARB: PFNGLFRAMEBUFFERTEXTURELAYERARBPROC;
1973
   glFramebufferTextureFaceARB: PFNGLFRAMEBUFFERTEXTUREFACEARBPROC;
1974

1975
   // GL_ARB_instanced_arrays (ARB #49)
1976
   glVertexAttribDivisorARB: PFNGLVERTEXATTRIBDIVISORARBPROC;
1977

1978
   // GL_ARB_map_buffer_range (ARB #50)
1979
   glMapBufferRange: PFNGLMAPBUFFERRANGEPROC;
1980
   glFlushMappedBufferRange: PFNGLFLUSHMAPPEDBUFFERRANGEPROC;
1981

1982
   // GL_ARB_texture_buffer_object (ARB #51)
1983
   glTexBufferARB: PFNGLTEXBUFFERARBPROC;
1984

1985
   // GL_ARB_vertex_array_object (ARB #54)
1986
   glBindVertexArray: PFNGLBINDVERTEXARRAYPROC;
1987
   glDeleteVertexArrays: PFNGLDELETEVERTEXARRAYSPROC;
1988
   glGenVertexArrays: PFNGLGENVERTEXARRAYSPROC;
1989
   glIsVertexArray: PFNGLISVERTEXARRAYPROC;
1990

1991
   // GL_ARB_uniform_buffer_object (ARB #57)
1992
   glGetUniformIndices: PFNGLGETUNIFORMINDICESPROC;
1993
   glGetActiveUniformsiv: PFNGLGETACTIVEUNIFORMSIVPROC;
1994
   glGetActiveUniformName: PFNGLGETACTIVEUNIFORMNAMEPROC;
1995
   glGetUniformBlockIndex: PFNGLGETUNIFORMBLOCKINDEXPROC;
1996
   glGetActiveUniformBlockiv: PFNGLGETACTIVEUNIFORMBLOCKIVPROC;
1997
   glGetActiveUniformBlockName: PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC;
1998
   glUniformBlockBinding: PFNGLUNIFORMBLOCKBINDINGPROC;
1999

2000
   // GL_ARB_copy_buffer (ARB #59)
2001
   glCopyBufferSubData: PFNGLCOPYBUFFERSUBDATAPROC;
2002

2003
   // GL_ARB_draw_elements_base_vertex (ARB #62)
2004
   glDrawElementsBaseVertex: PFNGLDRAWELEMENTSBASEVERTEXPROC;
2005
   glDrawRangeElementsBaseVertex: PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC;
2006
   glDrawElementsInstancedBaseVertex: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC;
2007
   glMultiDrawElementsBaseVertex: PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC;
2008

2009
   // GL_ARB_provoking_vertex (ARB #64)
2010
   glProvokingVertex: PFNGLPROVOKINGVERTEXPROC;
2011

2012
   // GL_ARB_sync (ARB #66)
2013
   glFenceSync: PFNGLFENCESYNCPROC;
2014
   glIsSync: PFNGLISSYNCPROC;
2015
   glDeleteSync: PFNGLDELETESYNCPROC;
2016
   glClientWaitSync: PFNGLCLIENTWAITSYNCPROC;
2017
   glWaitSync: PFNGLWAITSYNCPROC;
2018
   glGetInteger64v: PFNGLGETINTEGER64VPROC;
2019
   glGetSynciv: PFNGLGETSYNCIVPROC;
2020

2021
   // GL_ARB_texture_multisample (ARB #67)
2022
   glTexImage2DMultisample: PFNGLTEXIMAGE2DMULTISAMPLEPROC;
2023
   glTexImage3DMultisample: PFNGLTEXIMAGE3DMULTISAMPLEPROC;
2024
   glGetMultisamplefv: PFNGLGETMULTISAMPLEFVPROC;
2025
   glSampleMaski: PFNGLSAMPLEMASKIPROC;
2026

2027
   // GL_ARB_draw_buffers_blend (ARB #69)
2028
   glBlendEquationiARB: PFNGLBLENDEQUATIONIARBPROC;
2029
   glBlendEquationSeparateiARB: PFNGLBLENDEQUATIONSEPARATEIARBPROC;
2030
   glBlendFunciARB: PFNGLBLENDFUNCIARBPROC;
2031
   glBlendFuncSeparateiARB: PFNGLBLENDFUNCSEPARATEIARBPROC;
2032

2033
   // GL_ARB_sample_shading (ARB #70)
2034
   glMinSampleShadingARB: PFNGLMINSAMPLESHADINGARBPROC;
2035

2036
   // GL_ARB_blend_func_extended (ARB #78)
2037
   glBindFragDataLocationIndexed: PFNGLBINDFRAGDATALOCATIONINDEXEDPROC;
2038
   glGetFragDataIndex: PFNGLGETFRAGDATAINDEXPROC;
2039

2040
   // GL_ARB_sampler_objects (ARB #81)
2041
   glGenSamplers: PFNGLGENSAMPLERSPROC;
2042
   glDeleteSamplers: PFNGLDELETESAMPLERSPROC;
2043
   glIsSampler: PFNGLISSAMPLERPROC;
2044
   glBindSampler: PFNGLBINDSAMPLERPROC;
2045
   glSamplerParameteri: PFNGLSAMPLERPARAMETERIPROC;
2046
   glSamplerParameteriv: PFNGLSAMPLERPARAMETERIVPROC;
2047
   glSamplerParameterf: PFNGLSAMPLERPARAMETERFPROC;
2048
   glSamplerParameterfv: PFNGLSAMPLERPARAMETERFVPROC;
2049
   glSamplerParameterIiv: PFNGLSAMPLERPARAMETERIIVPROC;
2050
   glSamplerParameterIuiv: PFNGLSAMPLERPARAMETERIUIVPROC;
2051
   glGetSamplerParameteriv: PFNGLGETSAMPLERPARAMETERIVPROC;
2052
   glGetSamplerParameterIiv: PFNGLGETSAMPLERPARAMETERIIVPROC;
2053
   glGetSamplerParameterfv: PFNGLGETSAMPLERPARAMETERFVPROC;
2054
   glGetSamplerParameterIfv: PFNGLGETSAMPLERPARAMETERIFVPROC;
2055

2056
   // GL_ARB_timer_query (ARB #85)
2057
   glQueryCounter: PFNGLQUERYCOUNTERPROC;
2058
   glGetQueryObjecti64v: PFNGLGETQUERYOBJECTI64VPROC;
2059
   glGetQueryObjectui64v: PFNGLGETQUERYOBJECTUI64VPROC;
2060

2061
   // GL_ARB_vertex_type_2_10_10_10_rev (ARB #86)
2062
   glVertexP2ui: PFNGLVERTEXP2UIPROC;
2063
   glVertexP2uiv: PFNGLVERTEXP2UIVPROC;
2064
   glVertexP3ui: PFNGLVERTEXP3UIPROC;
2065
   glVertexP3uiv: PFNGLVERTEXP3UIVPROC;
2066
   glVertexP4ui: PFNGLVERTEXP4UIPROC;
2067
   glVertexP4uiv: PFNGLVERTEXP4UIVPROC;
2068
   glTexCoordP1ui: PFNGLTEXCOORDP1UIPROC;
2069
   glTexCoordP1uiv: PFNGLTEXCOORDP1UIVPROC;
2070
   glTexCoordP2ui: PFNGLTEXCOORDP2UIPROC;
2071
   glTexCoordP2uiv: PFNGLTEXCOORDP2UIVPROC;
2072
   glTexCoordP3ui: PFNGLTEXCOORDP3UIPROC;
2073
   glTexCoordP3uiv: PFNGLTEXCOORDP3UIVPROC;
2074
   glTexCoordP4ui: PFNGLTEXCOORDP4UIPROC;
2075
   glTexCoordP4uiv: PFNGLTEXCOORDP4UIVPROC;
2076
   glMultiTexCoordP1ui: PFNGLMULTITEXCOORDP1UIPROC;
2077
   glMultiTexCoordP1uiv: PFNGLMULTITEXCOORDP1UIVPROC;
2078
   glMultiTexCoordP2ui: PFNGLMULTITEXCOORDP2UIPROC;
2079
   glMultiTexCoordP2uiv: PFNGLMULTITEXCOORDP2UIVPROC;
2080
   glMultiTexCoordP3ui: PFNGLMULTITEXCOORDP3UIPROC;
2081
   glMultiTexCoordP3uiv: PFNGLMULTITEXCOORDP3UIVPROC;
2082
   glMultiTexCoordP4ui: PFNGLMULTITEXCOORDP4UIPROC;
2083
   glMultiTexCoordP4uiv: PFNGLMULTITEXCOORDP4UIVPROC;
2084
   glNormalP3ui: PFNGLNORMALP3UIPROC;
2085
   glNormalP3uiv: PFNGLNORMALP3UIVPROC;
2086
   glColorP3ui: PFNGLCOLORP3UIPROC;
2087
   glColorP3uiv: PFNGLCOLORP3UIVPROC;
2088
   glColorP4ui: PFNGLCOLORP4UIPROC;
2089
   glColorP4uiv: PFNGLCOLORP4UIVPROC;
2090
   glSecondaryColorP3ui: PFNGLSECONDARYCOLORP3UIPROC;
2091
   glSecondaryColorP3uiv: PFNGLSECONDARYCOLORP3UIVPROC;
2092
   glVertexAttribP1ui: PFNGLVERTEXATTRIBP1UIPROC;
2093
   glVertexAttribP1uiv: PFNGLVERTEXATTRIBP1UIVPROC;
2094
   glVertexAttribP2ui: PFNGLVERTEXATTRIBP2UIPROC;
2095
   glVertexAttribP2uiv: PFNGLVERTEXATTRIBP2UIVPROC;
2096
   glVertexAttribP3ui: PFNGLVERTEXATTRIBP3UIPROC;
2097
   glVertexAttribP3uiv: PFNGLVERTEXATTRIBP3UIVPROC;
2098
   glVertexAttribP4ui: PFNGLVERTEXATTRIBP4UIPROC;
2099
   glVertexAttribP4uiv: PFNGLVERTEXATTRIBP4UIVPROC;
2100

2101
   // GL_ARB_draw_indirect (ARB #87)
2102
   glDrawArraysIndirect: PFNGLDRAWARRAYSINDIRECTPROC;
2103
   glDrawElementsIndirect: PFNGLDRAWELEMENTSINDIRECTPROC;
2104

2105
   // GL_ARB_gpu_shader_fp64 (ARB #89)
2106
   glUniform1d: PFNGLUNIFORM1DPROC;
2107
   glUniform2d: PFNGLUNIFORM2DPROC;
2108
   glUniform3d: PFNGLUNIFORM3DPROC;
2109
   glUniform4d: PFNGLUNIFORM4DPROC;
2110
   glUniform1dv: PFNGLUNIFORM1DVPROC;
2111
   glUniform2dv: PFNGLUNIFORM2DVPROC;
2112
   glUniform3dv: PFNGLUNIFORM3DVPROC;
2113
   glUniform4dv: PFNGLUNIFORM4DVPROC;
2114
   glUniformMatrix2dv: PFNGLUNIFORMMATRIX2DVPROC;
2115
   glUniformMatrix3dv: PFNGLUNIFORMMATRIX3DVPROC;
2116
   glUniformMatrix4dv: PFNGLUNIFORMMATRIX4DVPROC;
2117
   glUniformMatrix2x3dv: PFNGLUNIFORMMATRIX2X3DVPROC;
2118
   glUniformMatrix2x4dv: PFNGLUNIFORMMATRIX2X4DVPROC;
2119
   glUniformMatrix3x2dv: PFNGLUNIFORMMATRIX3X2DVPROC;
2120
   glUniformMatrix3x4dv: PFNGLUNIFORMMATRIX3X4DVPROC;
2121
   glUniformMatrix4x2dv: PFNGLUNIFORMMATRIX4X2DVPROC;
2122
   glUniformMatrix4x3dv: PFNGLUNIFORMMATRIX4X3DVPROC;
2123
   glGetUniformdv: PFNGLGETUNIFORMDVPROC;
2124
   // glProgramUniformXXX only valid if EXT_direct_state_access is available
2125
   glProgramUniform1dEXT: PFNGLPROGRAMUNIFORM1DEXTPROC;
2126
   glProgramUniform2dEXT: PFNGLPROGRAMUNIFORM2DEXTPROC;
2127
   glProgramUniform3dEXT: PFNGLPROGRAMUNIFORM3DEXTPROC;
2128
   glProgramUniform4dEXT: PFNGLPROGRAMUNIFORM4DEXTPROC;
2129
   glProgramUniform1dvEXT: PFNGLPROGRAMUNIFORM1DVEXTPROC;
2130
   glProgramUniform2dvEXT: PFNGLPROGRAMUNIFORM2DVEXTPROC;
2131
   glProgramUniform3dvEXT: PFNGLPROGRAMUNIFORM3DVEXTPROC;
2132
   glProgramUniform4dvEXT: PFNGLPROGRAMUNIFORM4DVEXTPROC;
2133
   glProgramUniformMatrix2dvEXT: PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC;
2134
   glProgramUniformMatrix3dvEXT: PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC;
2135
   glProgramUniformMatrix4dvEXT: PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC;
2136
   glProgramUniformMatrix2x3dvEXT: PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC;
2137
   glProgramUniformMatrix2x4dvEXT: PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC;
2138
   glProgramUniformMatrix3x2dvEXT: PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC;
2139
   glProgramUniformMatrix3x4dvEXT: PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC;
2140
   glProgramUniformMatrix4x2dvEXT: PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC;
2141
   glProgramUniformMatrix4x3dvEXT: PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC;
2142

2143
   // GL_ARB_shader_subroutine (ARB #90)
2144
   glGetSubroutineUniformLocation: PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC;
2145
   glGetSubroutineIndex: PFNGLGETSUBROUTINEINDEXPROC;
2146
   glGetActiveSubroutineUniformiv: PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC;
2147
   glGetActiveSubroutineUniformName: PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC;
2148
   glGetActiveSubroutineName: PFNGLGETACTIVESUBROUTINENAMEPROC;
2149
   glUniformSubroutinesuiv: PFNGLUNIFORMSUBROUTINESUIVPROC;
2150
   glGetUniformSubroutineuiv: PFNGLGETUNIFORMSUBROUTINEUIVPROC;
2151
   glGetProgramStageiv: PFNGLGETPROGRAMSTAGEIVPROC;
2152

2153
   // GL_ARB_tessellation_shader (ARB #91)
2154
   glPatchParameteri: PFNGLPATCHPARAMETERIPROC;
2155
   glPatchParameterfv: PFNGLPATCHPARAMETERFVPROC;
2156

2157
   // GL_ARB_transform_feedback2 (ARB #93)
2158
   glBindTransformFeedback: PFNGLBINDTRANSFORMFEEDBACKPROC;
2159
   glDeleteTransformFeedbacks: PFNGLDELETETRANSFORMFEEDBACKSPROC;
2160
   glGenTransformFeedbacks: PFNGLGENTRANSFORMFEEDBACKSPROC;
2161
   glIsTransformFeedback: PFNGLISTRANSFORMFEEDBACKPROC;
2162
   glPauseTransformFeedback: PFNGLPAUSETRANSFORMFEEDBACKPROC;
2163
   glResumeTransformFeedback: PFNGLRESUMETRANSFORMFEEDBACKPROC;
2164
   glDrawTransformFeedback: PFNGLDRAWTRANSFORMFEEDBACKPROC;
2165

2166
   // GL_ARB_transform_feedback3 (ARB #94)
2167
   glDrawTransformFeedbackStream: PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC;
2168
   glBeginQueryIndexed: PFNGLBEGINQUERYINDEXEDPROC;
2169
   glEndQueryIndexed: PFNGLENDQUERYINDEXEDPROC;
2170
   glGetQueryIndexediv: PFNGLGETQUERYINDEXEDIVPROC;
2171

2172
   // GL_ARB_ES2_compatibility (ARB #95)
2173
   glReleaseShaderCompiler: PFNGLRELEASESHADERCOMPILERPROC;
2174
   glShaderBinary: PFNGLSHADERBINARYPROC;
2175
   glGetShaderPrecisionFormat: PFNGLGETSHADERPRECISIONFORMATPROC;
2176
   glDepthRangef: PFNGLDEPTHRANGEFPROC;
2177
   glClearDepthf: PFNGLCLEARDEPTHFPROC;
2178

2179
   // GL_ARB_get_program_binary (ARB #96)
2180
   glGetProgramBinary: PFNGLGetProgramBinaryPROC;
2181
   glProgramBinary: PFNGLProgramBinaryPROC;
2182
   glProgramParameteri: PFNGLProgramParameteriPROC; // not a core function
2183

2184
   // GL_ARB_separate_shader_objects (ARB #97)
2185
   glUseProgramStages: PFNGLUSEPROGRAMSTAGESPROC;
2186
   glActiveShaderProgram: PFNGLACTIVESHADERPROGRAMPROC;
2187
   glCreateShaderProgramv: PFNGLCREATESHADERPROGRAMVPROC;
2188
   glBindProgramPipeline: PFNGLBINDPROGRAMPIPELINEPROC;
2189
   glDeleteProgramPipelines: PFNGLDELETEPROGRAMPIPELINESPROC;
2190
   glGenProgramPipelines: PFNGLGENPROGRAMPIPELINESPROC;
2191
   glIsProgramPipeline: PFNGLISPROGRAMPIPELINEPROC;
2192
   glGetProgramPipelineiv: PFNGLGETPROGRAMPIPELINEIVPROC;
2193
   glProgramUniform1i: PFNGLPROGRAMUNIFORM1IPROC;
2194
   glProgramUniform1iv: PFNGLPROGRAMUNIFORM1IVPROC;
2195
   glProgramUniform1f: PFNGLPROGRAMUNIFORM1FPROC;
2196
   glProgramUniform1fv: PFNGLPROGRAMUNIFORM1FVPROC;
2197
   glProgramUniform1d: PFNGLPROGRAMUNIFORM1DPROC;
2198
   glProgramUniform1dv: PFNGLPROGRAMUNIFORM1DVPROC;
2199
   glProgramUniform1ui: PFNGLPROGRAMUNIFORM1UIPROC;
2200
   glProgramUniform1uiv: PFNGLPROGRAMUNIFORM1UIVPROC;
2201
   glProgramUniform2i: PFNGLPROGRAMUNIFORM2IPROC;
2202
   glProgramUniform2iv: PFNGLPROGRAMUNIFORM2IVPROC;
2203
   glProgramUniform2f: PFNGLPROGRAMUNIFORM2FPROC;
2204
   glProgramUniform2fv: PFNGLPROGRAMUNIFORM2FVPROC;
2205
   glProgramUniform2d: PFNGLPROGRAMUNIFORM2DPROC;
2206
   glProgramUniform2dv: PFNGLPROGRAMUNIFORM2DVPROC;
2207
   glProgramUniform2ui: PFNGLPROGRAMUNIFORM2UIPROC;
2208
   glProgramUniform2uiv: PFNGLPROGRAMUNIFORM2UIVPROC;
2209
   glProgramUniform3i: PFNGLPROGRAMUNIFORM3IPROC;
2210
   glProgramUniform3iv: PFNGLPROGRAMUNIFORM3IVPROC;
2211
   glProgramUniform3f: PFNGLPROGRAMUNIFORM3FPROC;
2212
   glProgramUniform3fv: PFNGLPROGRAMUNIFORM3FVPROC;
2213
   glProgramUniform3d: PFNGLPROGRAMUNIFORM3DPROC;
2214
   glProgramUniform3dv: PFNGLPROGRAMUNIFORM3DVPROC;
2215
   glProgramUniform3ui: PFNGLPROGRAMUNIFORM3UIPROC;
2216
   glProgramUniform3uiv: PFNGLPROGRAMUNIFORM3UIVPROC;
2217
   glProgramUniform4i: PFNGLPROGRAMUNIFORM4IPROC;
2218
   glProgramUniform4iv: PFNGLPROGRAMUNIFORM4IVPROC;
2219
   glProgramUniform4f: PFNGLPROGRAMUNIFORM4FPROC;
2220
   glProgramUniform4fv: PFNGLPROGRAMUNIFORM4FVPROC;
2221
   glProgramUniform4d: PFNGLPROGRAMUNIFORM4DPROC;
2222
   glProgramUniform4dv: PFNGLPROGRAMUNIFORM4DVPROC;
2223
   glProgramUniform4ui: PFNGLPROGRAMUNIFORM4UIPROC;
2224
   glProgramUniform4uiv: PFNGLPROGRAMUNIFORM4UIVPROC;
2225
   glProgramUniformMatrix2fv: PFNGLPROGRAMUNIFORMMATRIX2FVPROC;
2226
   glProgramUniformMatrix3fv: PFNGLPROGRAMUNIFORMMATRIX3FVPROC;
2227
   glProgramUniformMatrix4fv: PFNGLPROGRAMUNIFORMMATRIX4FVPROC;
2228
   glProgramUniformMatrix2dv: PFNGLPROGRAMUNIFORMMATRIX2DVPROC;
2229
   glProgramUniformMatrix3dv: PFNGLPROGRAMUNIFORMMATRIX3DVPROC;
2230
   glProgramUniformMatrix4dv: PFNGLPROGRAMUNIFORMMATRIX4DVPROC;
2231
   glProgramUniformMatrix2x3fv: PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC;
2232
   glProgramUniformMatrix3x2fv: PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC;
2233
   glProgramUniformMatrix2x4fv: PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC;
2234
   glProgramUniformMatrix4x2fv: PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC;
2235
   glProgramUniformMatrix3x4fv: PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC;
2236
   glProgramUniformMatrix4x3fv: PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC;
2237
   glProgramUniformMatrix2x3dv: PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC;
2238
   glProgramUniformMatrix3x2dv: PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC;
2239
   glProgramUniformMatrix2x4dv: PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC;
2240
   glProgramUniformMatrix4x2dv: PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC;
2241
   glProgramUniformMatrix3x4dv: PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC;
2242
   glProgramUniformMatrix4x3dv: PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC;
2243
   glValidateProgramPipeline: PFNGLVALIDATEPROGRAMPIPELINEPROC;
2244
   glGetProgramPipelineInfoLog: PFNGLGETPROGRAMPIPELINEINFOLOGPROC;
2245

2246
   // GL_ARB_shader_precision (ARB #98)
2247
   // (no entry points)
2248

2249
   // GL_ARB_vertex_attrib_64bit (ARB #99)
2250
   glVertexAttribL1d: PFNGLVERTEXATTRIBL1DPROC;
2251
   glVertexAttribL2d: PFNGLVERTEXATTRIBL2DPROC;
2252
   glVertexAttribL3d: PFNGLVERTEXATTRIBL3DPROC;
2253
   glVertexAttribL4d: PFNGLVERTEXATTRIBL4DPROC;
2254
   glVertexAttribL1dv: PFNGLVERTEXATTRIBL1DVPROC;
2255
   glVertexAttribL2dv: PFNGLVERTEXATTRIBL2DVPROC;
2256
   glVertexAttribL3dv: PFNGLVERTEXATTRIBL3DVPROC;
2257
   glVertexAttribL4dv: PFNGLVERTEXATTRIBL4DVPROC;
2258
   glVertexAttribLPointer: PFNGLVERTEXATTRIBLPOINTERPROC;
2259
   glGetVertexAttribLdv: PFNGLGETVERTEXATTRIBLDVPROC;
2260
   // glVertexArrayVertexAttribLOffsetEXT is only valid if EXT_direct_state_access is available
2261
   glVertexArrayVertexAttribLOffsetEXT: PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC;
2262

2263
   // GL_ARB_viewport_array (ARB #100)
2264
   glViewportArrayv: PFNGLVIEWPORTARRAYVPROC;
2265
   glViewportIndexedf: PFNGLVIEWPORTINDEXEDFPROC;
2266
   glViewportIndexedfv: PFNGLVIEWPORTINDEXEDFVPROC;
2267
   glScissorArrayv: PFNGLSCISSORARRAYVPROC;
2268
   glScissorIndexed: PFNGLSCISSORINDEXEDPROC;
2269
   glScissorIndexedv: PFNGLSCISSORINDEXEDVPROC;
2270
   glDepthRangeArrayv: PFNGLDEPTHRANGEARRAYVPROC;
2271
   glDepthRangeIndexed: PFNGLDEPTHRANGEINDEXEDPROC;
2272
   glGetFloati_v: PFNGLGETFLOATI_VPROC;
2273
   glGetDoublei_v: PFNGLGETDOUBLEI_VPROC;
2274

2275
   // GL_ARB_debug_output (ARB #104)
2276
   glDebugMessageControlARB: PFNGLDEBUGMESSAGECONTROLARBPROC;
2277
   glDebugMessageInsertARB: PFNGLDEBUGMESSAGEINSERTARBPROC;
2278
   glDebugMessageCallbackARB: PFNGLDEBUGMESSAGECALLBACKARBPROC;
2279
   glGetDebugMessageLogARB: PFNGLGETDEBUGMESSAGELOGARBPROC;
2280

2281
   // GL_ARB_robustness (ARB #105)
2282
   glGetGraphicsResetStatusARB: PFNGLGETGRAPHICSRESETSTATUSARBPROC;
2283
   glGetnMapdvARB: PFNGLGETNMAPDVARBPROC;
2284
   glGetnMapfvARB: PFNGLGETNMAPFVARBPROC;
2285
   glGetnMapivARB: PFNGLGETNMAPIVARBPROC;
2286
   glGetnPixelMapfvARB: PFNGLGETNPIXELMAPFVARBPROC;
2287
   glGetnPixelMapuivARB: PFNGLGETNPIXELMAPUIVARBPROC;
2288
   glGetnPixelMapusvARB: PFNGLGETNPIXELMAPUSVARBPROC;
2289
   glGetnPolygonStippleARB: PFNGLGETNPOLYGONSTIPPLEARBPROC;
2290
   glGetnColorTableARB: PFNGLGETNCOLORTABLEARBPROC;
2291
   glGetnConvolutionFilterARB: PFNGLGETNCONVOLUTIONFILTERARBPROC;
2292
   glGetnSeparableFilterARB: PFNGLGETNSEPARABLEFILTERARBPROC;
2293
   glGetnHistogramARB: PFNGLGETNHISTOGRAMARBPROC;
2294
   glGetnMinmaxARB: PFNGLGETNMINMAXARBPROC;
2295
   glGetnTexImageARB: PFNGLGETNTEXIMAGEARBPROC;
2296
   glReadnPixelsARB: PFNGLREADNPIXELSARBPROC;
2297
   glGetnCompressedTexImageARB: PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC;
2298
   glGetnUniformfvARB: PFNGLGETNUNIFORMFVARBPROC;
2299
   glGetnUniformivARB: PFNGLGETNUNIFORMIVARBPROC;
2300
   glGetnUniformuivARB: PFNGLGETNUNIFORMUIVARBPROC;
2301
   glGetnUniformdvARB: PFNGLGETNUNIFORMDVARBPROC;
2302

2303
   // GL_ARB_shader_stencil_export (ARB #106)
2304
   // (no entry points)
2305

2306
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
2307

2308
{$IFDEF GLS_REGIONS} {$region 'OpenGL function/procedure definitions for Vendor/EXT extensions'} {$ENDIF}
2309

2310
   //  ###########################################################
2311
   //           function and procedure definitions for
2312
   //                   Vendor/EXT extensions
2313
   //  ###########################################################
2314

2315
   // Unknown Vendor/EXT functions
2316
   glArrayElementArrayEXT: PFNGLARRAYELEMENTARRAYEXTPROC;
2317

2318
   // GL_WIN_swap_hint (extension # not found)
2319
   glAddSwapHintRectWIN: PFNGLADDSWAPHINTRECTWINPROC;
2320

2321
   // GL_EXT_blend_color (EXT #2)
2322
   glBlendColorEXT: PFNGLBLENDCOLOREXTPROC;
2323

2324
   // GL_EXT_polygon_offset (EXT #3)
2325
   glPolygonOffsetEXT: PFNGLPOLYGONOFFSETEXTPROC;
2326

2327
   // GL_EXT_texture3D (EXT #6)
2328
   glTexImage3DEXT: PFNGLTEXIMAGE3DEXTPROC;
2329

2330
   // GL_EXT_subtexture (EXT #9)
2331
   glTexSubImage1DEXT: PFNGLTEXSUBIMAGE1DEXTPROC;
2332
   glTexSubImage2DEXT: PFNGLTEXSUBIMAGE2DEXTPROC;
2333
   glTexSubImage3DEXT: PFNGLTEXSUBIMAGE3DEXTPROC;
2334

2335
   // GL_EXT_copy_texture (EXT #10)
2336
   glCopyTexImage1DEXT: PFNGLCOPYTEXIMAGE1DEXTPROC;
2337
   glCopyTexImage2DEXT: PFNGLCOPYTEXIMAGE2DEXTPROC;
2338
   glCopyTexSubImage1DEXT: PFNGLCOPYTEXSUBIMAGE1DEXTPROC;
2339
   glCopyTexSubImage2DEXT: PFNGLCOPYTEXSUBIMAGE2DEXTPROC;
2340
   glCopyTexSubImage3DEXT: PFNGLCOPYTEXSUBIMAGE3DEXTPROC;
2341

2342
   // GL_EXT_texture_object (EXT #20)
2343
   glGenTexturesEXT: PFNGLGENTEXTURESEXTPROC;
2344
   glDeleteTexturesEXT: PFNGLDELETETEXTURESEXTPROC;
2345
   glBindTextureEXT: PFNGLBINDTEXTUREEXTPROC;
2346
   glPrioritizeTexturesEXT: PFNGLPRIORITIZETEXTURESEXTPROC;
2347
   glAreTexturesResidentEXT: PFNGLARETEXTURESRESIDENTEXTPROC;
2348
   glIsTextureEXT: PFNGLISTEXTUREEXTPROC;
2349

2350
   // GL_SGIS_multisample (EXT #25)
2351
   glSampleMaskSGIS: PFNGLSAMPLEMASKSGISPROC;
2352
   glSamplePatternSGIS: PFNGLSAMPLEPATTERNSGISPROC;
2353

2354
   // GL_EXT_blend_minmax (EXT #37)
2355
   glBlendEquationEXT: PFNGLBLENDEQUATIONEXTPROC;
2356

2357
   // GL_EXT_paletted_texture (EXT #78)
2358
   glColorTableEXT: PFNGLCOLORTABLEEXTPROC;
2359
   glColorSubTableExt: PFNGLCOLORSUBTABLEEXTPROC;
2360
   glGetColorTableEXT: PFNGLGETCOLORTABLEEXTPROC;
2361
   glGetColorTableParameterfvEXT: PFNGLGETCOLORTABLEPARAMETERFVEXTPROC;
2362
   glGetColorTableParameterivEXT: PFNGLGETCOLORTABLEPARAMETERIVEXTPROC;
2363

2364
//   glGetColorTableParameterfvEXT: procedure(target, pname: TGLEnum; params: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF}
2365
//   glGetColorTableParameterivEXT: procedure(target, pname: TGLEnum; params: Pointer); {$IFDEF MSWINDOWS} stdcall; {$ENDIF} {$IFDEF UNIX} cdecl; {$ENDIF}
2366

2367
   // GL_EXT_index_material (EXT #94)
2368
   glIndexMaterialEXT: PFNGLINDEXMATERIALEXTPROC;
2369

2370
   // GL_EXT_index_func (EXT #95)
2371
   glIndexFuncEXT: PFNGLINDEXFUNCEXTPROC;
2372

2373
   // GL_EXT_compiled_vertex_array (EXT #97)
2374
   glLockArraysEXT: PFNGLLOCKARRAYSEXTPROC;
2375
   glUnlockArraysEXT: PFNGLUNLOCKARRAYSEXTPROC;
2376

2377
   // GL_EXT_draw_range_elements (EXT #112)
2378
   glDrawRangeElementsEXT: PFNGLDRAWRANGEELEMENTSEXTPROC;
2379

2380
   // GL_EXT_scene_marker (EXT #120)
2381
   glBeginSceneEXT: PFNGLBEGINSCENEEXTPROC;
2382
   glEndSceneEXT: PFNGLENDSCENEEXTPROC;
2383

2384
   // GL_EXT_secondary_color (EXT #145)
2385
   glSecondaryColor3bEXT: PFNGLSECONDARYCOLOR3BEXTPROC;
2386
   glSecondaryColor3bvEXT: PFNGLSECONDARYCOLOR3BVEXTPROC;
2387
   glSecondaryColor3dEXT: PFNGLSECONDARYCOLOR3DEXTPROC;
2388
   glSecondaryColor3dvEXT: PFNGLSECONDARYCOLOR3DVEXTPROC;
2389
   glSecondaryColor3fEXT: PFNGLSECONDARYCOLOR3FEXTPROC;
2390
   glSecondaryColor3fvEXT: PFNGLSECONDARYCOLOR3FVEXTPROC;
2391
   glSecondaryColor3iEXT: PFNGLSECONDARYCOLOR3IEXTPROC;
2392
   glSecondaryColor3ivEXT: PFNGLSECONDARYCOLOR3IVEXTPROC;
2393
   glSecondaryColor3sEXT: PFNGLSECONDARYCOLOR3SEXTPROC;
2394
   glSecondaryColor3svEXT: PFNGLSECONDARYCOLOR3SVEXTPROC;
2395
   glSecondaryColor3ubEXT: PFNGLSECONDARYCOLOR3UBEXTPROC;
2396
   glSecondaryColor3ubvEXT: PFNGLSECONDARYCOLOR3UBVEXTPROC;
2397
   glSecondaryColor3uiEXT: PFNGLSECONDARYCOLOR3UIEXTPROC;
2398
   glSecondaryColor3uivEXT: PFNGLSECONDARYCOLOR3UIVEXTPROC;
2399
   glSecondaryColor3usEXT: PFNGLSECONDARYCOLOR3USEXTPROC;
2400
   glSecondaryColor3usvEXT: PFNGLSECONDARYCOLOR3USVEXTPROC;
2401
   glSecondaryColorPointerEXT: PFNGLSECONDARYCOLORPOINTEREXTPROC;
2402

2403
   // GL_EXT_multi_draw_arrays (EXT #148)
2404
   glMultiDrawArraysEXT: PFNGLMULTIDRAWARRAYSEXTPROC;
2405
   glMultiDrawElementsEXT: PFNGLMULTIDRAWELEMENTSEXTPROC;
2406

2407
   // GL_EXT_fog_coord (EXT #149)
2408
   glFogCoordfEXT: PFNGLFOGCOORDFEXTPROC;
2409
   glFogCoordfvEXT: PFNGLFOGCOORDFVEXTPROC;
2410
   glFogCoorddEXT: PFNGLFOGCOORDDEXTPROC;
2411
   glFogCoorddvEXT: PFNGLFOGCOORDDVEXTPROC;
2412
   glFogCoordPointerEXT: PFNGLFOGCOORDPOINTEREXTPROC;
2413

2414
   // GL_EXT_blend_func_separate (EXT #173)
2415
   glBlendFuncSeparateEXT: PFNGLBLENDFUNCSEPARATEEXTPROC;
2416

2417
   // GL_NV_vertex_array_range (EXT #190)
2418
   glFlushVertexArrayRangeNV: PFNGLFLUSHVERTEXARRAYRANGENVPROC;
2419
   glVertexArrayRangeNV: PFNGLVERTEXARRAYRANGENVPROC;
2420
   wglAllocateMemoryNV: PFNWGLALLOCATEMEMORYNVPROC;
2421
   wglFreeMemoryNV: PFNWGLFREEMEMORYNVPROC;
2422

2423
   // GL_NV_register_combiners (EXT #191)
2424
   glCombinerParameterfvNV: PFNGLCOMBINERPARAMETERFVNVPROC;
2425
   glCombinerParameterfNV: PFNGLCOMBINERPARAMETERFNVPROC;
2426
   glCombinerParameterivNV: PFNGLCOMBINERPARAMETERIVNVPROC;
2427
   glCombinerParameteriNV: PFNGLCOMBINERPARAMETERINVPROC;
2428
   glCombinerInputNV: PFNGLCOMBINERINPUTNVPROC;
2429
   glCombinerOutputNV: PFNGLCOMBINEROUTPUTNVPROC;
2430
   glFinalCombinerInputNV: PFNGLFINALCOMBINERINPUTNVPROC;
2431
   glGetCombinerInputParameterfvNV: PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC;
2432
   glGetCombinerInputParameterivNV: PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC;
2433
   glGetCombinerOutputParameterfvNV: PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC;
2434
   glGetCombinerOutputParameterivNV: PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC;
2435
   glGetFinalCombinerInputParameterfvNV: PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC;
2436
   glGetFinalCombinerInputParameterivNV: PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC;
2437

2438
   // GL_MESA_resize_buffers (EXT #196)
2439
   glResizeBuffersMESA: PFNGLRESIZEBUFFERSMESAPROC;
2440

2441
   // GL_3DFX_tbuffer (EXT #208)
2442
   glTbufferMask3DFX: PFNGLTBUFFERMASK3DFXPROC;
2443

2444
   // GL_EXT_multisample (EXT #209)
2445
   glSampleMaskEXT: PFNGLSAMPLEMASKEXTPROC;
2446
   glSamplePatternEXT: PFNGLSAMPLEPATTERNEXTPROC;
2447

2448
   // GL_SGIS_texture_color_mask (EXT #214)
2449
   glTextureColorMaskSGIS: PFNGLTEXTURECOLORMASKSGISPROC;
2450

2451
   // GL_NV_fence (EXT #222)
2452
   glGenFencesNV: PFNGLGENFENCESNVPROC;
2453
   glDeleteFencesNV: PFNGLDELETEFENCESNVPROC;
2454
   glSetFenceNV: PFNGLSETFENCENVPROC;
2455
   glTestFenceNV: PFNGLTESTFENCENVPROC;
2456
   glFinishFenceNV: PFNGLFINISHFENCENVPROC;
2457
   glIsFenceNV: PFNGLISFENCENVPROC;
2458
   glGetFenceivNV: PFNGLGETFENCEIVNVPROC;
2459

2460
   // GL_NV_vertex_program (EXT #233)
2461
   glAreProgramsResidentNV: PFNGLAREPROGRAMSRESIDENTNVPROC;
2462
   glBindProgramNV: PFNGLBINDPROGRAMNVPROC;
2463
   glDeleteProgramsNV: PFNGLDELETEPROGRAMSNVPROC;
2464
   glExecuteProgramNV: PFNGLEXECUTEPROGRAMNVPROC;
2465
   glGenProgramsNV: PFNGLGENPROGRAMSNVPROC;
2466
   glGetProgramParameterdvNV: PFNGLGETPROGRAMPARAMETERDVNVPROC;
2467
   glGetProgramParameterfvNV: PFNGLGETPROGRAMPARAMETERFVNVPROC;
2468
   glGetProgramivNV: PFNGLGETPROGRAMIVNVPROC;
2469
   glGetProgramStringNV: PFNGLGETPROGRAMSTRINGNVPROC;
2470
   glGetTrackMatrixivNV: PFNGLGETTRACKMATRIXIVNVPROC;
2471
   glGetVertexAttribdvNV: PFNGLGETVERTEXATTRIBDVNVPROC;
2472
   glGetVertexAttribfvNV: PFNGLGETVERTEXATTRIBFVNVPROC;
2473
   glGetVertexAttribivNV: PFNGLGETVERTEXATTRIBIVNVPROC;
2474
   glGetVertexAttribPointervNV: PFNGLGETVERTEXATTRIBPOINTERVNVPROC;
2475
   glIsProgramNV: PFNGLISPROGRAMNVPROC;
2476
   glLoadProgramNV: PFNGLLOADPROGRAMNVPROC;
2477
   glProgramParameter4dNV: PFNGLPROGRAMPARAMETER4DNVPROC;
2478
   glProgramParameter4dvNV: PFNGLPROGRAMPARAMETER4DVNVPROC;
2479
   glProgramParameter4fNV: PFNGLPROGRAMPARAMETER4FNVPROC;
2480
   glProgramParameter4fvNV: PFNGLPROGRAMPARAMETER4FVNVPROC;
2481
   glProgramParameters4dvNV: PFNGLPROGRAMPARAMETERS4DVNVPROC;
2482
   glProgramParameters4fvNV: PFNGLPROGRAMPARAMETERS4FVNVPROC;
2483
   glRequestResidentProgramsNV: PFNGLREQUESTRESIDENTPROGRAMSNVPROC;
2484
   glTrackMatrixNV: PFNGLTRACKMATRIXNVPROC;
2485
   glVertexAttribPointerNV: PFNGLVERTEXATTRIBPOINTERNVPROC;
2486
   glVertexAttrib1dNV: PFNGLVERTEXATTRIB1DNVPROC;
2487
   glVertexAttrib1dvNV: PFNGLVERTEXATTRIB1DVNVPROC;
2488
   glVertexAttrib1fNV: PFNGLVERTEXATTRIB1FNVPROC;
2489
   glVertexAttrib1fvNV: PFNGLVERTEXATTRIB1FVNVPROC;
2490
   glVertexAttrib1sNV: PFNGLVERTEXATTRIB1SNVPROC;
2491
   glVertexAttrib1svNV: PFNGLVERTEXATTRIB1SVNVPROC;
2492
   glVertexAttrib2dNV: PFNGLVERTEXATTRIB2DNVPROC;
2493
   glVertexAttrib2dvNV: PFNGLVERTEXATTRIB2DVNVPROC;
2494
   glVertexAttrib2fNV: PFNGLVERTEXATTRIB2FNVPROC;
2495
   glVertexAttrib2fvNV: PFNGLVERTEXATTRIB2FVNVPROC;
2496
   glVertexAttrib2sNV: PFNGLVERTEXATTRIB2SNVPROC;
2497
   glVertexAttrib2svNV: PFNGLVERTEXATTRIB2SVNVPROC;
2498
   glVertexAttrib3dNV: PFNGLVERTEXATTRIB3DNVPROC;
2499
   glVertexAttrib3dvNV: PFNGLVERTEXATTRIB3DVNVPROC;
2500
   glVertexAttrib3fNV: PFNGLVERTEXATTRIB3FNVPROC;
2501
   glVertexAttrib3fvNV: PFNGLVERTEXATTRIB3FVNVPROC;
2502
   glVertexAttrib3sNV: PFNGLVERTEXATTRIB3SNVPROC;
2503
   glVertexAttrib3svNV: PFNGLVERTEXATTRIB3SVNVPROC;
2504
   glVertexAttrib4dNV: PFNGLVERTEXATTRIB4DNVPROC;
2505
   glVertexAttrib4dvNV: PFNGLVERTEXATTRIB4DVNVPROC;
2506
   glVertexAttrib4fNV: PFNGLVERTEXATTRIB4FNVPROC;
2507
   glVertexAttrib4fvNV: PFNGLVERTEXATTRIB4FVNVPROC;
2508
   glVertexAttrib4sNV: PFNGLVERTEXATTRIB4SNVPROC;
2509
   glVertexAttrib4svNV: PFNGLVERTEXATTRIB4SVNVPROC;
2510
   glVertexAttrib4ubvNV: PFNGLVERTEXATTRIB4UBVNVPROC;
2511
   glVertexAttribs1dvNV: PFNGLVERTEXATTRIBS1DVNVPROC;
2512
   glVertexAttribs1fvNV: PFNGLVERTEXATTRIBS1FVNVPROC;
2513
   glVertexAttribs1svNV: PFNGLVERTEXATTRIBS1SVNVPROC;
2514
   glVertexAttribs2dvNV: PFNGLVERTEXATTRIBS2DVNVPROC;
2515
   glVertexAttribs2fvNV: PFNGLVERTEXATTRIBS2FVNVPROC;
2516
   glVertexAttribs2svNV: PFNGLVERTEXATTRIBS2SVNVPROC;
2517
   glVertexAttribs3dvNV: PFNGLVERTEXATTRIBS3DVNVPROC;
2518
   glVertexAttribs3fvNV: PFNGLVERTEXATTRIBS3FVNVPROC;
2519
   glVertexAttribs3svNV: PFNGLVERTEXATTRIBS3SVNVPROC;
2520
   glVertexAttribs4dvNV: PFNGLVERTEXATTRIBS4DVNVPROC;
2521
   glVertexAttribs4fvNV: PFNGLVERTEXATTRIBS4FVNVPROC;
2522
   glVertexAttribs4svNV: PFNGLVERTEXATTRIBS4SVNVPROC;
2523
   glVertexAttribs4ubvNV: PFNGLVERTEXATTRIBS4UBVNVPROC;
2524

2525
   // GL_NV_occlusion_query (EXT #261)
2526
   glGenOcclusionQueriesNV: PFNGLGENOCCLUSIONQUERIESNVPROC;
2527
   glDeleteOcclusionQueriesNV: PFNGLDELETEOCCLUSIONQUERIESNVPROC;
2528
   glIsOcclusionQueryNV: PFNGLISOCCLUSIONQUERYNVPROC;
2529
   glBeginOcclusionQueryNV: PFNGLBEGINOCCLUSIONQUERYNVPROC;
2530
   glEndOcclusionQueryNV: PFNGLENDOCCLUSIONQUERYNVPROC;
2531
   glGetOcclusionQueryivNV: PFNGLGETOCCLUSIONQUERYIVNVPROC;
2532
   glGetOcclusionQueryuivNV: PFNGLGETOCCLUSIONQUERYUIVNVPROC;
2533

2534
   // GL_NV_point_sprite (EXT #262)
2535
   glPointParameteriNV: PFNGLPOINTPARAMETERINVPROC;
2536
   glPointParameterivNV: PFNGLPOINTPARAMETERIVNVPROC;
2537

2538
   // GL_EXT_stencil_two_side (EXT #268)
2539
   glActiveStencilFaceEXT: PFNGLACTIVESTENCILFACEEXTPROC;
2540

2541
   // GL_ATI_draw_buffers (EXT #277)
2542
   glDrawBuffersATI: PFNGLDRAWBUFFERSATIPROC;
2543

2544
   // GL_NV_primitive_restart (EXT #285)
2545
   glPrimitiveRestartNV: PFNGLPRIMITIVERESTARTNVPROC;
2546
   glPrimitiveRestartIndexNV: PFNGLPRIMITIVERESTARTINDEXNVPROC;
2547

2548
   // GL_EXT_depth_bounds_test (EXT #297)
2549
   glDepthBoundsEXT: PFNGLDEPTHBOUNDSEXTPROC;
2550

2551
   // GL_EXT_blend_equation_separate (EXT #299)
2552
   glBlendEquationSeparateEXT: PFNGLBLENDEQUATIONSEPARATEEXTPROC;
2553

2554
   // GL_EXT_framebuffer_object (EXT #310)
2555
   glIsRenderbufferEXT: PFNGLISRENDERBUFFEREXTPROC;
2556
   glBindRenderbufferEXT: PFNGLBINDRENDERBUFFEREXTPROC;
2557
   glDeleteRenderbuffersEXT: PFNGLDELETERENDERBUFFERSEXTPROC;
2558
   glGenRenderbuffersEXT: PFNGLGENRENDERBUFFERSEXTPROC;
2559
   glRenderbufferStorageEXT: PFNGLRENDERBUFFERSTORAGEEXTPROC;
2560
   glGetRenderbufferParameterivEXT: PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC;
2561
   glIsFramebufferEXT: PFNGLISFRAMEBUFFEREXTPROC;
2562
   glBindFramebufferEXT: PFNGLBINDFRAMEBUFFEREXTPROC;
2563
   glDeleteFramebuffersEXT: PFNGLDELETEFRAMEBUFFERSEXTPROC;
2564
   glGenFramebuffersEXT: PFNGLGENFRAMEBUFFERSEXTPROC;
2565
   glCheckFramebufferStatusEXT: PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC;
2566
   glFramebufferTexture1DEXT: PFNGLFRAMEBUFFERTEXTURE1DEXTPROC;
2567
   glFramebufferTexture2DEXT: PFNGLFRAMEBUFFERTEXTURE2DEXTPROC;
2568
   glFramebufferTexture3DEXT: PFNGLFRAMEBUFFERTEXTURE3DEXTPROC;
2569
   glFramebufferRenderbufferEXT: PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC;
2570
   glGetFramebufferAttachmentParameterivEXT: PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC;
2571
   glGenerateMipmapEXT: PFNGLGENERATEMIPMAPEXTPROC;
2572

2573
   // GL_GREMEDY_string_marker (EXT #311)
2574
   glStringMarkerGREMEDY: PFNGLSTRINGMARKERGREMEDYPROC;
2575

2576
   // GL_EXT_stencil_clear_tag (EXT #314)
2577
   glStencilClearTagEXT: PFNGLSTENCILCLEARTAGEXTPROC;
2578

2579
   // GL_EXT_framebuffer_blit (#316)
2580
   glBlitFramebufferEXT: PFNGLBLITFRAMEBUFFEREXTPROC;
2581

2582
   // GL_EXT_framebuffer_multisample (#317)
2583
   glRenderbufferStorageMultisampleEXT: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC;
2584

2585
   // GL_EXT_timer_query (#319)
2586
   glGetQueryObjecti64vEXT: PFNGLGETQUERYOBJECTI64VEXTPROC;
2587
   glGetQueryObjectui64vEXT: PFNGLGETQUERYOBJECTUI64VEXTPROC;
2588

2589
   // GL_EXT_gpu_program_parameters (EXT #320)
2590
   glProgramEnvParameters4fvEXT: PFNGLPROGRAMENVPARAMETERS4FVEXTPROC;
2591
   glProgramLocalParameters4fvEXT: PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC;
2592

2593
   // GL_NV_geometry_program4 (EXT #323)
2594
   glProgramVertexLimitNV: PFNGLPROGRAMVERTEXLIMITNVPROC;
2595

2596
   // GL_EXT_geometry_shader4 (EXT #324)
2597
   glProgramParameteriEXT: PFNGLPROGRAMPARAMETERIEXTPROC;
2598
   glFramebufferTextureEXT: PFNGLFRAMEBUFFERTEXTUREEXTPROC;
2599
   glFramebufferTextureLayerEXT: PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC;
2600
   glFramebufferTextureFaceEXT: PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC;
2601

2602
   // GL_EXT_gpu_shader4 (EXT #326)
2603
   glVertexAttribI1iEXT: PFNGLVERTEXATTRIBI1IEXTPROC;
2604
   glVertexAttribI2iEXT: PFNGLVERTEXATTRIBI2IEXTPROC;
2605
   glVertexAttribI3iEXT: PFNGLVERTEXATTRIBI3IEXTPROC;
2606
   glVertexAttribI4iEXT: PFNGLVERTEXATTRIBI4IEXTPROC;
2607
   glVertexAttribI1uiEXT: PFNGLVERTEXATTRIBI1UIEXTPROC;
2608
   glVertexAttribI2uiEXT: PFNGLVERTEXATTRIBI2UIEXTPROC;
2609
   glVertexAttribI3uiEXT: PFNGLVERTEXATTRIBI3UIEXTPROC;
2610
   glVertexAttribI4uiEXT: PFNGLVERTEXATTRIBI4UIEXTPROC;
2611
   glVertexAttribI1ivEXT: PFNGLVERTEXATTRIBI1IVEXTPROC;
2612
   glVertexAttribI2ivEXT: PFNGLVERTEXATTRIBI2IVEXTPROC;
2613
   glVertexAttribI3ivEXT: PFNGLVERTEXATTRIBI3IVEXTPROC;
2614
   glVertexAttribI4ivEXT: PFNGLVERTEXATTRIBI4IVEXTPROC;
2615
   glVertexAttribI1uivEXT: PFNGLVERTEXATTRIBI1UIVEXTPROC;
2616
   glVertexAttribI2uivEXT: PFNGLVERTEXATTRIBI2UIVEXTPROC;
2617
   glVertexAttribI3uivEXT: PFNGLVERTEXATTRIBI3UIVEXTPROC;
2618
   glVertexAttribI4uivEXT: PFNGLVERTEXATTRIBI4UIVEXTPROC;
2619
   glVertexAttribI4bvEXT: PFNGLVERTEXATTRIBI4BVEXTPROC;
2620
   glVertexAttribI4svEXT: PFNGLVERTEXATTRIBI4SVEXTPROC;
2621
   glVertexAttribI4ubvEXT: PFNGLVERTEXATTRIBI4UBVEXTPROC;
2622
   glVertexAttribI4usvEXT: PFNGLVERTEXATTRIBI4USVEXTPROC;
2623
   glVertexAttribIPointerEXT: PFNGLVERTEXATTRIBIPOINTEREXTPROC;
2624
   glGetVertexAttribIivEXT: PFNGLGETVERTEXATTRIBIIVEXTPROC;
2625
   glGetVertexAttribIuivEXT: PFNGLGETVERTEXATTRIBIUIVEXTPROC;
2626
   glUniform1uiEXT: PFNGLUNIFORM1UIEXTPROC;
2627
   glUniform2uiEXT: PFNGLUNIFORM2UIEXTPROC;
2628
   glUniform3uiEXT: PFNGLUNIFORM3UIEXTPROC;
2629
   glUniform4uiEXT: PFNGLUNIFORM4UIEXTPROC;
2630
   glUniform1uivEXT: PFNGLUNIFORM1UIVEXTPROC;
2631
   glUniform2uivEXT: PFNGLUNIFORM2UIVEXTPROC;
2632
   glUniform3uivEXT: PFNGLUNIFORM3UIVEXTPROC;
2633
   glUniform4uivEXT: PFNGLUNIFORM4UIVEXTPROC;
2634
   glGetUniformuivEXT: PFNGLGETUNIFORMUIVEXTPROC;
2635
   glBindFragDataLocationEXT: PFNGLBINDFRAGDATALOCATIONEXTPROC;
2636
   glGetFragDataLocationEXT: PFNGLGETFRAGDATALOCATIONEXTPROC;
2637

2638
   // GL_EXT_draw_instanced (#327)
2639
   glDrawArraysInstancedEXT: PFNGLDRAWARRAYSINSTANCEDEXTPROC;
2640
   glDrawElementsInstancedEXT: PFNGLDRAWELEMENTSINSTANCEDEXTPROC;
2641

2642
   // GL_EXT_packed_float (#328)
2643
   // WGL_EXT_pixel_format_packed_float
2644
   // GLX_EXT_fbconfig_packed_float
2645

2646

2647
   // GL_EXT_texture_array (#329)
2648
   //glFramebufferTextureLayerEXT: procedure(target: TGLenum; attachment: TGLenum;
2649
   //                                texture: TGLuint; level: TGLint; layer: TGLint);
2650

2651

2652
   // GL_EXT_texture_buffer_object (#330)
2653
   glTexBufferEXT: PFNGLTEXBUFFEREXTPROC;
2654

2655
   // GL_EXT_draw_buffers2 (#340)
2656
   glColorMaskIndexedEXT: PFNGLCOLORMASKINDEXEDEXTPROC;
2657
   glGetBooleanIndexedvEXT: PFNGLGETBOOLEANINDEXEDVEXTPROC;
2658
   glGetIntegerIndexedvEXT: PFNGLGETINTEGERINDEXEDVEXTPROC;
2659
   glEnableIndexedEXT: PFNGLENABLEINDEXEDEXTPROC;
2660
   glDisableIndexedEXT: PFNGLDISABLEINDEXEDEXTPROC;
2661
   glIsEnabledIndexedEXT: PFNGLISENABLEDINDEXEDEXTPROC;
2662

2663
   // GL_NV_transform_feedback (#341)
2664
   glBindBufferRangeNV: PFNGLBINDBUFFERRANGENVPROC;
2665
   glBindBufferOffsetNV: PFNGLBINDBUFFEROFFSETNVPROC;
2666
   glBindBufferBaseNV: PFNGLBINDBUFFERBASENVPROC;
2667
   glTransformFeedbackAttribsNV: PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC;
2668
   glTransformFeedbackVaryingsNV: PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC;
2669
   glBeginTransformFeedbackNV: PFNGLBEGINTRANSFORMFEEDBACKNVPROC;
2670
   glEndTransformFeedbackNV: PFNGLENDTRANSFORMFEEDBACKNVPROC;
2671

2672
   glGetVaryingLocationNV: PFNGLGETVARYINGLOCATIONNVPROC;
2673
   glGetActiveVaryingNV: PFNGLGETACTIVEVARYINGNVPROC;
2674
   glActiveVaryingNV: PFNGLACTIVEVARYINGNVPROC;
2675
   glGetTransformFeedbackVaryingNV: PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC;
2676

2677
   // GL_EXT_bindable_uniform (#342)
2678
   glUniformBufferEXT: PFNGLUNIFORMBUFFEREXTPROC;
2679
   glGetUniformBufferSizeEXT: PFNGLGETUNIFORMBUFFERSIZEEXTPROC;
2680
   glGetUniformOffsetEXT: PFNGLGETUNIFORMOFFSETEXTPROC;
2681

2682
   // GL_EXT_texture_integer (#343)
2683
   glClearColorIiEXT: PFNGLCLEARCOLORIIEXTPROC;
2684
   glClearColorIuiEXT: PFNGLCLEARCOLORIUIEXTPROC;
2685
   glTexParameterIivEXT: PFNGLTEXPARAMETERIIVEXTPROC;
2686
   glTexParameterIuivEXT: PFNGLTEXPARAMETERIUIVEXTPROC;
2687
   glGetTexParameterIivEXT: PFNGLGETTEXPARAMETERIIVEXTPROC;
2688
   glGetTexParameterIuivEXT: PFNGLGETTEXPARAMETERIUIVEXTPROC;
2689

2690
   // GL_GREMEDY_frame_terminator (EXT #345)
2691
   glFrameTerminatorGREMEDY: PFNGLFRAMETERMINATORGREMEDYPROC;
2692

2693
   // GL_NV_conditional_render (#346)
2694
   glBeginConditionalRenderNV: PFNGLBEGINCONDITIONALRENDERNVPROC;
2695
   glEndConditionalRenderNV: PFNGLENDCONDITIONALRENDERNVPROC;
2696

2697
   // GL_EXT_transform_feedback (#352)
2698
   glBindBufferRangeEXT: PFNGLBINDBUFFERRANGEEXTPROC;
2699
   glBindBufferOffsetEXT: PFNGLBINDBUFFEROFFSETEXTPROC;
2700
   glBindBufferBaseEXT: PFNGLBINDBUFFERBASEEXTPROC;
2701
   glBeginTransformFeedbackEXT: PFNGLBEGINTRANSFORMFEEDBACKEXTPROC;
2702
   glEndTransformFeedbackEXT: PFNGLENDTRANSFORMFEEDBACKEXTPROC;
2703
   glTransformFeedbackVaryingsEXT: PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC;
2704
   glGetTransformFeedbackVaryingEXT: PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC;
2705

2706
   // GL_AMD_vertex_shader_tessellator (#363)
2707
   glTessellationFactorAMD: PFNGLTESSELLATIONFACTORAMDPROC;
2708
   glTessellationModeAMD: PFNGLTESSELLATIONMODEAMDPROC;
2709

2710
   // GL_NV_copy_image (#376)
2711
   glCopyImageSubDataNV: PFNGLCOPYIMAGESUBDATANVPROC;
2712

2713
   // GL_NV_shader_buffer_load (#379)
2714
   glMakeBufferResidentNV: PFNGLMAKEBUFFERRESIDENTNVPROC;
2715
   glMakeBufferNonResidentNV: PFNGLMAKEBUFFERNONRESIDENTNVPROC;
2716
   glIsBufferResidentNV: PFNGLISBUFFERRESIDENTNVPROC;
2717
   glMakeNamedBufferResidentNV: PFNGLMAKENAMEDBUFFERRESIDENTNVPROC;
2718
   glMakeNamedBufferNonResidentNV: PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC;
2719
   glIsNamedBufferResidentNV: PFNGLISNAMEDBUFFERRESIDENTNVPROC;
2720
   glGetBufferParameterui64vNV: PFNGLGETBUFFERPARAMETERUI64VNVPROC;
2721
   glGetNamedBufferParameterui64vNV: PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC;
2722
   glGetIntegerui64vNV: PFNGLGETINTEGERUI64VNVPROC;
2723
   glUniformui64NV: PFNGLUNIFORMUI64NVPROC;
2724
   glUniformui64vNV: PFNGLUNIFORMUI64VNVPROC;
2725
   glGetUniformui64vNV: PFNGLGETUNIFORMUI64VNVPROC;
2726
   glProgramUniformui64NV: PFNGLPROGRAMUNIFORMUI64NVPROC;
2727
   glProgramUniformui64vNV: PFNGLPROGRAMUNIFORMUI64VNVPROC;
2728

2729
   // GL_NV_vertex_buffer_unified_memory (#380)
2730
   glBufferAddressRangeNV: PFNGLBUFFERADDRESSRANGENVPROC;
2731
   glVertexFormatNV: PFNGLVERTEXFORMATNVPROC;
2732
   glNormalFormatNV: PFNGLNORMALFORMATNVPROC;
2733
   glColorFormatNV: PFNGLCOLORFORMATNVPROC;
2734
   glIndexFormatNV: PFNGLINDEXFORMATNVPROC;
2735
   glTexCoordFormatNV: PFNGLTEXCOORDFORMATNVPROC;
2736
   glEdgeFlagFormatNV: PFNGLEDGEFLAGFORMATNVPROC;
2737
   glSecondaryColorFormatNV: PFNGLSECONDARYCOLORFORMATNVPROC;
2738
   glFogCoordFormatNV: PFNGLFOGCOORDFORMATNVPROC;
2739
   glVertexAttribFormatNV: PFNGLVERTEXATTRIBFORMATNVPROC;
2740
   glVertexAttribIFormatNV: PFNGLVERTEXATTRIBIFORMATNVPROC;
2741
   glGetIntegerui64i_vNV: PFNGLGETINTEGERUI64I_VNVPROC;
2742

2743
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
2744

2745

2746
//------------------------------------------------------------------------------
2747
function GLLibGetProcAddress(ProcName: PGLChar): Pointer;
2748
function GLGetProcAddress(ProcName: PGLChar): Pointer;
2749
procedure ReadExtensions;
2750
procedure ReadImplementationProperties;
2751
{$IFDEF SUPPORT_WGL}
2752
procedure ReadWGLExtensions;
2753
procedure ReadWGLImplementationProperties;
2754
{$ENDIF}
2755
{$IFDEF SUPPORT_GLX}
2756
procedure ReadGLXExtensions;
2757
procedure ReadGLXImplementationProperties;
2758
{$ENDIF}
2759

2760
procedure CloseOpenGL;
2761
function InitOpenGL : Boolean;
2762
function InitOpenGLFromLibrary(const GLName, GLUName : String) : Boolean;
2763
function IsOpenGLInitialized: Boolean;
2764

2765
// compatibility routines
2766
procedure UnloadOpenGL;
2767
function LoadOpenGL : Boolean;
2768
function LoadOpenGLFromLibrary(GLName, GLUName: String): Boolean;
2769
function IsOpenGLLoaded : Boolean;
2770

2771
function IsMesaGL : Boolean;
2772
procedure TrimAndSplitVersionString(Buffer: String; var Max, Min: Integer);
2773
function IsVersionMet(MajorVersion,MinorVersion, actualMajorVersion, actualMinorVersion:Integer): boolean;
2774
function IsOpenGLVersionMet(MajorVersion,MinorVersion: Integer): boolean;
2775

2776
type
2777
  EOpenGLError = class(Exception);
2778

2779
{ Gets the oldest error from OpenGL engine and tries to clear the error queue. }
2780
procedure CheckOpenGLError;
2781
{ Clears all pending OpenGL errors. }
2782
procedure ClearGLError;
2783
{ Raises an EOpenGLError with 'msg' error string. }
2784
procedure RaiseOpenGLError(const msg : String);
2785

2786
var
2787
   vIgnoreOpenGLErrors : Boolean = false;
2788

2789
// ------------------------------------------------------------------
2790
// ------------------------------------------------------------------
2791
// ------------------------------------------------------------------
2792
implementation
2793
// ------------------------------------------------------------------
2794
// ------------------------------------------------------------------
2795
// ------------------------------------------------------------------
2796

2797
// ************** Windows specific ********************
2798
{$IFDEF MSWINDOWS}
2799
const
2800
   INVALID_MODULEHANDLE = 0;
2801

2802
var
2803
   GLHandle: HINST;
2804
   GLUHandle: HINST;
2805

2806
function GLGetProcAddress(ProcName: PGLChar):Pointer;
2807
begin
2808
  result := wglGetProcAddress(ProcName);
2809
end;
2810

2811
{$ENDIF}
2812

2813
// ************** UNIX specific ********************
2814
{$IFDEF Unix}
2815
const
2816
   INVALID_MODULEHANDLE = 0;//nil;
2817

2818
var
2819
   GLHandle: TLibHandle = 0;//Pointer;
2820
   GLUHandle: TLibHandle = 0;//Pointer;
2821
   
2822
function GLGetProcAddress(ProcName: PGLChar):Pointer;
2823
begin
2824
  {$IFDEF SUPPORT_GLX}
2825
  if @glXGetProcAddress<>nil then
2826
    result := glXGetProcAddress(ProcName);
2827

2828
  if result<> nil then exit;
2829

2830
  if @glXGetProcAddressARB<>nil then
2831
    result := glXGetProcAddressARB(ProcName);
2832

2833
  if result<> nil then exit;
2834
  {$ENDIF}
2835
  result := GetProcAddress(GLHandle, ProcName);
2836
end;
2837
{$ENDIF}
2838

2839
function GLLibGetProcAddress(ProcName: PGLChar):Pointer;
2840
begin
2841
  result := GetProcAddress(GLHandle, ProcName);
2842
end;
2843

2844
// CheckOpenGLError
2845
//
2846
procedure CheckOpenGLError;
2847
var
2848
   GLError : LongWord;
2849
	Count : Word;
2850
begin
2851
	GLError:=glGetError;
2852
	if GLError <> GL_NO_ERROR then begin
2853
		Count:=0;
2854
      // Because under some circumstances reading the error code creates a new error
2855
      // and thus hanging up the thread, we limit the loop to 6 reads.
2856
      try
2857
         while (glGetError <> GL_NO_ERROR) and (Count < 6) do Inc(Count);
2858
      except
2859
         // Egg : ignore exceptions here, will perhaps avoid problem expressed before
2860
		end;
2861
      if not vIgnoreOpenGLErrors then
2862
   		raise EOpenGLError.Create(String(gluErrorString(GLError)));
2863
	end;
2864
end;
2865

2866
// ClearGLError
2867
//
2868
procedure ClearGLError;
2869
var
2870
   n : Integer;
2871
begin
2872
   n:=0;
2873
   while (glGetError<>GL_NO_ERROR) and (n<6) do Inc(n);
2874
end;
2875

2876
// RaiseOpenGLError
2877
//
2878
procedure RaiseOpenGLError(const msg : String);
2879
begin
2880
   raise EOpenGLError.Create(msg);
2881
end;
2882

2883
// ************** Extensions ********************
2884

2885
// ReadExtensions
2886
//
2887
procedure ReadExtensions;
2888
   // To be used in an active rendering context only!
2889
begin
2890

2891
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 1.2'} {$ENDIF}
2892

2893
   //  ###########################################################
2894
   //            locate functions and procedures for
2895
   //         extensions integrated into OpenGL 1.2 core
2896
   //  ###########################################################
2897

2898
   // promoted to core v1.2 from GL_EXT_blend_color (#2)
2899
   glBlendColor := GLGetProcAddress('glBlendColor');
2900

2901
   //promoted to core v1.2 from GL_EXT_blend_minmax (#37)
2902
   glBlendEquation := GLGetProcAddress('glBlendEquation');
2903

2904
   // promoted to core v1.2 from GL_EXT_draw_range_elements (#112)
2905
   glDrawRangeElements := GLGetProcAddress('glDrawRangeElements');
2906

2907
   // promoted to core v1.2 from GL_SGI_color_table (#14)
2908
   glColorTable := GLGetProcAddress('glColorTable');
2909
   glColorTableParameterfv := GLGetProcAddress('glColorTableParameterfv');
2910
   glColorTableParameteriv := GLGetProcAddress('glColorTableParameteriv');
2911
   glCopyColorTable := GLGetProcAddress('glCopyColorTable');
2912
   glGetColorTable := GLGetProcAddress('glGetColorTable');
2913
   glGetColorTableParameterfv := GLGetProcAddress('glGetColorTableParameterfv');
2914
   glGetColorTableParameteriv := GLGetProcAddress('glGetColorTableParameteriv');
2915

2916
   // promoted to core v1.2 from GL_EXT_color_subtable (#74)
2917
   glColorSubTable := GLGetProcAddress('glColorSubTable');
2918
   glCopyColorSubTable := GLGetProcAddress('glCopyColorSubTable');
2919

2920
   // promoted to core v1.2 from GL_EXT_convolution (#12)
2921
   glConvolutionFilter1D := GLGetProcAddress('glConvolutionFilter1D');
2922
   glConvolutionFilter2D := GLGetProcAddress('glConvolutionFilter2D'); 
2923
   glConvolutionParameterf := GLGetProcAddress('glConvolutionParameterf');
2924
   glConvolutionParameterfv := GLGetProcAddress('glConvolutionParameterfv');
2925
   glConvolutionParameteri := GLGetProcAddress('glConvolutionParameteri'); 
2926
   glConvolutionParameteriv := GLGetProcAddress('glConvolutionParameteriv');
2927
   glCopyConvolutionFilter1D := GLGetProcAddress('glCopyConvolutionFilter1D');
2928
   glCopyConvolutionFilter2D := GLGetProcAddress('glCopyConvolutionFilter2D');
2929
   glGetConvolutionFilter := GLGetProcAddress('glGetConvolutionFilter');
2930
   glGetConvolutionParameterfv := GLGetProcAddress('glGetConvolutionParameterfv');
2931
   glGetConvolutionParameteriv := GLGetProcAddress('glGetConvolutionParameteriv');
2932
   glGetSeparableFilter := GLGetProcAddress('glGetSeparableFilter');
2933
   glSeparableFilter2D := GLGetProcAddress('glSeparableFilter2D');
2934

2935
   // promoted to core v1.2 from GL_EXT_histogram (#11)
2936
   glGetHistogram := GLGetProcAddress('glGetHistogram');
2937
   glGetHistogramParameterfv := GLGetProcAddress('glGetHistogramParameterfv');
2938
   glGetHistogramParameteriv := GLGetProcAddress('glGetHistogramParameteriv');
2939
   glGetMinmax := GLGetProcAddress('glGetMinmax');
2940
   glGetMinmaxParameterfv := GLGetProcAddress('glGetMinmaxParameterfv');
2941
   glGetMinmaxParameteriv := GLGetProcAddress('glGetMinmaxParameteriv');
2942
   glHistogram := GLGetProcAddress('glHistogram');
2943
   glMinmax := GLGetProcAddress('glMinmax');
2944
   glResetHistogram := GLGetProcAddress('glResetHistogram');
2945
   glResetMinmax := GLGetProcAddress('glResetMinmax');
2946

2947
   // promoted to core v1.2 from GL_EXT_texture3D (#6)
2948
   glTexImage3D := GLGetProcAddress('glTexImage3D');
2949
   glTexSubImage3D := GLGetProcAddress('glTexSubImage3D');
2950

2951
   // promoted to core v1.2 from GL_EXT_copy_texture
2952
   glCopyTexSubImage3D := GLGetProcAddress('glCopyTexSubImage3D');
2953

2954
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
2955

2956
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 1.3'} {$ENDIF}
2957

2958
   //  ###########################################################
2959
   //            locate functions and procedures for
2960
   //         extensions integrated into OpenGL 1.3 core
2961
   //  ###########################################################
2962

2963
   // promoted to core v1.3 from GL_ARB_multitexture (#1)
2964
   glActiveTexture := GLGetProcAddress('glActiveTexture');
2965
   glClientActiveTexture := GLGetProcAddress('glClientActiveTexture');
2966
   glMultiTexCoord1d := GLGetProcAddress('glMultiTexCoord1d');
2967
   glMultiTexCoord1dV := GLGetProcAddress('glMultiTexCoord1dV');
2968
   glMultiTexCoord1f := GLGetProcAddress('glMultiTexCoord1f');
2969
   glMultiTexCoord1fV := GLGetProcAddress('glMultiTexCoord1fV');
2970
   glMultiTexCoord1i := GLGetProcAddress('glMultiTexCoord1i');
2971
   glMultiTexCoord1iV := GLGetProcAddress('glMultiTexCoord1iV');
2972
   glMultiTexCoord1s := GLGetProcAddress('glMultiTexCoord1s');
2973
   glMultiTexCoord1sV := GLGetProcAddress('glMultiTexCoord1sV'); 
2974
   glMultiTexCoord2d := GLGetProcAddress('glMultiTexCoord2d');
2975
   glMultiTexCoord2dv := GLGetProcAddress('glMultiTexCoord2dv');
2976
   glMultiTexCoord2f := GLGetProcAddress('glMultiTexCoord2f');
2977
   glMultiTexCoord2fv := GLGetProcAddress('glMultiTexCoord2fv');
2978
   glMultiTexCoord2i := GLGetProcAddress('glMultiTexCoord2i');
2979
   glMultiTexCoord2iv := GLGetProcAddress('glMultiTexCoord2iv');
2980
   glMultiTexCoord2s := GLGetProcAddress('glMultiTexCoord2s'); 
2981
   glMultiTexCoord2sv := GLGetProcAddress('glMultiTexCoord2sv');
2982
   glMultiTexCoord3d := GLGetProcAddress('glMultiTexCoord3d');
2983
   glMultiTexCoord3dv := GLGetProcAddress('glMultiTexCoord3dv'); 
2984
   glMultiTexCoord3f := GLGetProcAddress('glMultiTexCoord3f');
2985
   glMultiTexCoord3fv := GLGetProcAddress('glMultiTexCoord3fv');
2986
   glMultiTexCoord3i := GLGetProcAddress('glMultiTexCoord3i');
2987
   glMultiTexCoord3iv := GLGetProcAddress('glMultiTexCoord3iv'); 
2988
   glMultiTexCoord3s := GLGetProcAddress('glMultiTexCoord3s'); 
2989
   glMultiTexCoord3sv := GLGetProcAddress('glMultiTexCoord3sv');
2990
   glMultiTexCoord4d := GLGetProcAddress('glMultiTexCoord4d'); 
2991
   glMultiTexCoord4dv := GLGetProcAddress('glMultiTexCoord4dv');
2992
   glMultiTexCoord4f := GLGetProcAddress('glMultiTexCoord4f');
2993
   glMultiTexCoord4fv := GLGetProcAddress('glMultiTexCoord4fv');
2994
   glMultiTexCoord4i := GLGetProcAddress('glMultiTexCoord4i');
2995
   glMultiTexCoord4iv := GLGetProcAddress('glMultiTexCoord4iv');
2996
   glMultiTexCoord4s := GLGetProcAddress('glMultiTexCoord4s');
2997
   glMultiTexCoord4sv := GLGetProcAddress('glMultiTexCoord4sv');
2998

2999
   // promoted to core v1.3 from GL_ARB_transpose_matrix
3000
   glLoadTransposeMatrixf := GLGetProcAddress('glLoadTransposeMatrixf');
3001
   glLoadTransposeMatrixd := GLGetProcAddress('glLoadTransposeMatrixd');
3002
   glMultTransposeMatrixf := GLGetProcAddress('glMultTransposeMatrixf');
3003
   glMultTransposeMatrixd := GLGetProcAddress('glMultTransposeMatrixd');
3004

3005
   // promoted to core v1.3 from GL_ARB_multisample (#5)
3006
   glSampleCoverage := GLGetProcAddress('glSampleCoverage');
3007

3008
   // promoted to core v1.3 from GL_ARB_texture_compression (#12)
3009
   glCompressedTexImage3D := GLGetProcAddress('glCompressedTexImage3D');
3010
   glCompressedTexImage2D := GLGetProcAddress('glCompressedTexImage2D');
3011
   glCompressedTexImage1D := GLGetProcAddress('glCompressedTexImage1D');
3012
   glCompressedTexSubImage3D := GLGetProcAddress('glCompressedTexSubImage3D');
3013
   glCompressedTexSubImage2D := GLGetProcAddress('glCompressedTexSubImage2D');
3014
   glCompressedTexSubImage1D := GLGetProcAddress('glCompressedTexSubImage1D');
3015
   glGetCompressedTexImage := GLGetProcAddress('glGetCompressedTexImage');
3016

3017
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3018

3019
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 1.4'} {$ENDIF}
3020

3021
   //  ###########################################################
3022
   //            locate functions and procedures for
3023
   //         extensions integrated into OpenGL 1.4 core
3024
   //  ###########################################################
3025

3026
   // promoted to core v1.4 from GL_EXT_blend_func_separate (#173)
3027
   glBlendFuncSeparate := GLGetProcAddress('glBlendFuncSeparate');
3028

3029
   // promoted to core v1.4 from GL_EXT_fog_coord (#149)
3030
   glFogCoordf := GLGetProcAddress('glFogCoordf');
3031
   glFogCoordfv := GLGetProcAddress('glFogCoordfv');
3032
   glFogCoordd := GLGetProcAddress('glFogCoordd');
3033
   glFogCoorddv := GLGetProcAddress('glFogCoorddv');
3034
   glFogCoordPointer := GLGetProcAddress('glFogCoordPointer');
3035

3036
   // promoted to core v1.4 from GL_EXT_multi_draw_arrays (#148)
3037
   glMultiDrawArrays := GLGetProcAddress('glMultiDrawArrays');
3038
   glMultiDrawElements := GLGetProcAddress('glMultiDrawElements');
3039

3040
   // promoted to core v1.4 from GL_ARB_point_parameters (#14), GL_NV_point_sprite (#262)
3041
   glPointParameterf := GLGetProcAddress('glPointParameterf');
3042
   glPointParameterfv := GLGetProcAddress('glPointParameterfv');
3043
   glPointParameteri := GLGetProcAddress('glPointParameteri');
3044
   glPointParameteriv := GLGetProcAddress('glPointParameteriv');
3045

3046
   // promoted to core v1.4 from GL_EXT_secondary_color (#145)
3047
   glSecondaryColor3b := GLGetProcAddress('glSecondaryColor3b');
3048
   glSecondaryColor3bv := GLGetProcAddress('glSecondaryColor3bv');
3049
   glSecondaryColor3d := GLGetProcAddress('glSecondaryColor3d');
3050
   glSecondaryColor3dv := GLGetProcAddress('glSecondaryColor3dv');
3051
   glSecondaryColor3f := GLGetProcAddress('glSecondaryColor3f');
3052
   glSecondaryColor3fv := GLGetProcAddress('glSecondaryColor3fv');
3053
   glSecondaryColor3i := GLGetProcAddress('glSecondaryColor3i');
3054
   glSecondaryColor3iv := GLGetProcAddress('glSecondaryColor3iv');
3055
   glSecondaryColor3s := GLGetProcAddress('glSecondaryColor3s');
3056
   glSecondaryColor3sv := GLGetProcAddress('glSecondaryColor3sv');
3057
   glSecondaryColor3ub := GLGetProcAddress('glSecondaryColor3ub');
3058
   glSecondaryColor3ubv := GLGetProcAddress('glSecondaryColor3ubv');
3059
   glSecondaryColor3ui := GLGetProcAddress('glSecondaryColor3ui');
3060
   glSecondaryColor3uiv := GLGetProcAddress('glSecondaryColor3uiv');
3061
   glSecondaryColor3us := GLGetProcAddress('glSecondaryColor3us');
3062
   glSecondaryColor3usv := GLGetProcAddress('glSecondaryColor3usv');
3063
   glSecondaryColorPointer := GLGetProcAddress('glSecondaryColorPointer');
3064

3065
   // promoted to core v1.4 from GL_ARB_window_pos (#25)
3066
   glWindowPos2d := GLGetProcAddress('glWindowPos2d');
3067
   glWindowPos2dv := GLGetProcAddress('glWindowPos2dv');
3068
   glWindowPos2f := GLGetProcAddress('glWindowPos2f');
3069
   glWindowPos2fv := GLGetProcAddress('glWindowPos2fv');
3070
   glWindowPos2i := GLGetProcAddress('glWindowPos2i');
3071
   glWindowPos2iv := GLGetProcAddress('glWindowPos2iv');
3072
   glWindowPos2s := GLGetProcAddress('glWindowPos2s');
3073
   glWindowPos2sv := GLGetProcAddress('glWindowPos2sv');
3074
   glWindowPos3d := GLGetProcAddress('glWindowPos3d');
3075
   glWindowPos3dv := GLGetProcAddress('glWindowPos3dv');
3076
   glWindowPos3f := GLGetProcAddress('glWindowPos3f');
3077
   glWindowPos3fv := GLGetProcAddress('glWindowPos3fv');
3078
   glWindowPos3i := GLGetProcAddress('glWindowPos3i');
3079
   glWindowPos3iv := GLGetProcAddress('glWindowPos3iv');
3080
   glWindowPos3s := GLGetProcAddress('glWindowPos3s');
3081
   glWindowPos3sv := GLGetProcAddress('glWindowPos3sv');
3082

3083
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3084

3085
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 1.5'} {$ENDIF}
3086

3087
   //  ###########################################################
3088
   //            locate functions and procedures for
3089
   //         extensions integrated into OpenGL 1.5 core
3090
   //  ###########################################################
3091

3092
   // promoted to core v1.5 from GL_ARB_occlusion_query (#29)
3093
   glGenQueries := GLGetProcAddress('glGenQueries');
3094
   glDeleteQueries := GLGetProcAddress('glDeleteQueries');
3095
   glIsQuery := GLGetProcAddress('glIsQuery');
3096
   glBeginQuery := GLGetProcAddress('glBeginQuery');
3097
   glEndQuery := GLGetProcAddress('glEndQuery');
3098
   glGetQueryiv := GLGetProcAddress('glGetQueryiv');
3099
   glGetQueryObjectiv := GLGetProcAddress('glGetQueryObjectiv');
3100
   glGetQueryObjectuiv := GLGetProcAddress('glGetQueryObjectuiv');
3101

3102

3103
   // promoted to core v1.5 from GL_ARB_vertex_buffer_object (#28)
3104
   glBindBuffer := GLGetProcAddress('glBindBuffer');
3105
   glDeleteBuffers := GLGetProcAddress('glDeleteBuffers');
3106
   glGenBuffers := GLGetProcAddress('glGenBuffers');
3107
   glIsBuffer := GLGetProcAddress('glIsBuffer');
3108
   glBufferData := GLGetProcAddress('glBufferData');
3109
   glBufferSubData := GLGetProcAddress('glBufferSubData');
3110
   glGetBufferSubData := GLGetProcAddress('glGetBufferSubData');
3111
   glMapBuffer := GLGetProcAddress('glMapBuffer');
3112
   glUnmapBuffer := GLGetProcAddress('glUnmapBuffer');
3113
   glGetBufferParameteriv := GLGetProcAddress('glGetBufferParameteriv');
3114
   glGetBufferPointerv := GLGetProcAddress('glGetBufferPointerv');
3115

3116
   // promoted to core v1.5 from GL_EXT_shadow_funcs (#267)
3117
   // (no functions or procedures)
3118

3119
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3120

3121
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 2.0'} {$ENDIF}
3122

3123
   //  ###########################################################
3124
   //            locate functions and procedures for
3125
   //         extensions integrated into OpenGL 2.0 core
3126
   //  ###########################################################
3127

3128
   // promoted to core v2.0 from GL_EXT_blend_equation_separate (#299)
3129
   glBlendEquationSeparate := GLGetProcAddress('glBlendEquationSeparate');
3130

3131
   // promoted to core v2.0 from GL_ARB_draw_buffers (#37)
3132
   glDrawBuffers := GLGetProcAddress('glDrawBuffers');
3133

3134
   // promoted to core v2.0 from GL_ARB_stencil_two_side (no # found)
3135
   glStencilOpSeparate := GLGetProcAddress('glStencilOpSeparate');
3136
   glStencilFuncSeparate := GLGetProcAddress('glStencilFuncSeparate');
3137
   glStencilMaskSeparate := GLGetProcAddress('glStencilMaskSeparate');
3138

3139
   // promoted to core v2.0 from GL_ARB_shader_objects (#30) / GL_ARB_vertex_shader (#31) / GL_ARB_fragment_shader (#32)
3140
   glAttachShader := GLGetProcAddress('glAttachShader');
3141
   glBindAttribLocation := GLGetProcAddress('glBindAttribLocation');
3142
   glCompileShader := GLGetProcAddress('glCompileShader');
3143
   glCreateProgram := GLGetProcAddress('glCreateProgram');
3144
   glCreateShader := GLGetProcAddress('glCreateShader');
3145
   glDeleteProgram := GLGetProcAddress('glDeleteProgram');
3146
   glDeleteShader := GLGetProcAddress('glDeleteShader');
3147
   glDetachShader := GLGetProcAddress('glDetachShader');
3148
   glDisableVertexAttribArray := GLGetProcAddress('glDisableVertexAttribArray');
3149
   glEnableVertexAttribArray := GLGetProcAddress('glEnableVertexAttribArray');
3150
   glGetActiveAttrib := GLGetProcAddress('glGetActiveAttrib');
3151
   glGetActiveUniform := GLGetProcAddress('glGetActiveUniform');
3152
   glGetAttachedShaders := GLGetProcAddress('glGetAttachedShaders');
3153
   glGetAttribLocation := GLGetProcAddress('glGetAttribLocation');
3154
   glGetProgramiv := GLGetProcAddress('glGetProgramiv');
3155
   glGetProgramInfoLog := GLGetProcAddress('glGetProgramInfoLog');
3156
   glGetShaderiv := GLGetProcAddress('glGetShaderiv');
3157
   glGetShaderInfoLog := GLGetProcAddress('glGetShaderInfoLog');
3158
   glGetShaderSource := GLGetProcAddress('glGetShaderSource');
3159
   glGetUniformLocation := GLGetProcAddress('glGetUniformLocation');
3160
   glGetUniformfv := GLGetProcAddress('glGetUniformfv');
3161
   glGetUniformiv := GLGetProcAddress('glGetUniformiv');
3162
   glGetVertexAttribdv := GLGetProcAddress('glGetVertexAttribdv');
3163
   glGetVertexAttribfv := GLGetProcAddress('glGetVertexAttribfv');
3164
   glGetVertexAttribiv := GLGetProcAddress('glGetVertexAttribiv');
3165
   glGetVertexAttribPointerv := GLGetProcAddress('glGetVertexAttribPointerv');
3166
   glIsProgram := GLGetProcAddress('glIsProgram');
3167
   glIsShader := GLGetProcAddress('glIsShader');
3168
   glLinkProgram := GLGetProcAddress('glLinkProgram');
3169
   glShaderSource := GLGetProcAddress('glShaderSource');
3170
   glUseProgram := GLGetProcAddress('glUseProgram');
3171
   glUniform1f := GLGetProcAddress('glUniform1f');
3172
   glUniform2f := GLGetProcAddress('glUniform2f');
3173
   glUniform3f := GLGetProcAddress('glUniform3f');
3174
   glUniform4f := GLGetProcAddress('glUniform4f');
3175
   glUniform1i := GLGetProcAddress('glUniform1i');
3176
   glUniform2i := GLGetProcAddress('glUniform2i');
3177
   glUniform3i := GLGetProcAddress('glUniform3i');
3178
   glUniform4i := GLGetProcAddress('glUniform4i');
3179
   glUniform1fv := GLGetProcAddress('glUniform1fv');
3180
   glUniform2fv := GLGetProcAddress('glUniform2fv');
3181
   glUniform3fv := GLGetProcAddress('glUniform3fv');
3182
   glUniform4fv := GLGetProcAddress('glUniform4fv');
3183
   glUniform1iv := GLGetProcAddress('glUniform1iv');
3184
   glUniform2iv := GLGetProcAddress('glUniform2iv');
3185
   glUniform3iv := GLGetProcAddress('glUniform3iv');
3186
   glUniform4iv := GLGetProcAddress('glUniform4iv');
3187
   glUniformMatrix2fv := GLGetProcAddress('glUniformMatrix2fv');
3188
   glUniformMatrix3fv := GLGetProcAddress('glUniformMatrix3fv');
3189
   glUniformMatrix4fv := GLGetProcAddress('glUniformMatrix4fv');
3190
   glValidateProgram := GLGetProcAddress('glValidateProgram');
3191
   glVertexAttrib1d := GLGetProcAddress('glVertexAttrib1d');
3192
   glVertexAttrib1dv := GLGetProcAddress('glVertexAttrib1dv');
3193
   glVertexAttrib1f := GLGetProcAddress('glVertexAttrib1f');
3194
   glVertexAttrib1fv := GLGetProcAddress('glVertexAttrib1fv');
3195
   glVertexAttrib1s := GLGetProcAddress('glVertexAttrib1s');
3196
   glVertexAttrib1sv := GLGetProcAddress('glVertexAttrib1sv');
3197
   glVertexAttrib2d := GLGetProcAddress('glVertexAttrib2d');
3198
   glVertexAttrib2dv := GLGetProcAddress('glVertexAttrib2dv');
3199
   glVertexAttrib2f := GLGetProcAddress('glVertexAttrib2f');
3200
   glVertexAttrib2fv := GLGetProcAddress('glVertexAttrib2fv');
3201
   glVertexAttrib2s := GLGetProcAddress('glVertexAttrib2s');
3202
   glVertexAttrib2sv := GLGetProcAddress('glVertexAttrib2sv');
3203
   glVertexAttrib3d := GLGetProcAddress('glVertexAttrib3d');
3204
   glVertexAttrib3dv := GLGetProcAddress('glVertexAttrib3dv');
3205
   glVertexAttrib3f := GLGetProcAddress('glVertexAttrib3f');
3206
   glVertexAttrib3fv := GLGetProcAddress('glVertexAttrib3fv');
3207
   glVertexAttrib3s := GLGetProcAddress('glVertexAttrib3s');
3208
   glVertexAttrib3sv := GLGetProcAddress('glVertexAttrib3sv');
3209
   glVertexAttrib4Nbv := GLGetProcAddress('glVertexAttrib4Nbv');
3210
   glVertexAttrib4Niv := GLGetProcAddress('glVertexAttrib4Niv');
3211
   glVertexAttrib4Nsv := GLGetProcAddress('glVertexAttrib4Nsv');
3212
   glVertexAttrib4Nub := GLGetProcAddress('glVertexAttrib4Nub');
3213
   glVertexAttrib4Nubv := GLGetProcAddress('glVertexAttrib4Nubv');
3214
   glVertexAttrib4Nuiv := GLGetProcAddress('glVertexAttrib4Nuiv');
3215
   glVertexAttrib4Nusv := GLGetProcAddress('glVertexAttrib4Nusv');
3216
   glVertexAttrib4bv := GLGetProcAddress('glVertexAttrib4bv');
3217
   glVertexAttrib4d := GLGetProcAddress('glVertexAttrib4d');
3218
   glVertexAttrib4dv := GLGetProcAddress('glVertexAttrib4dv');
3219
   glVertexAttrib4f := GLGetProcAddress('glVertexAttrib4f');
3220
   glVertexAttrib4fv := GLGetProcAddress('glVertexAttrib4fv');
3221
   glVertexAttrib4iv := GLGetProcAddress('glVertexAttrib4iv');
3222
   glVertexAttrib4s := GLGetProcAddress('glVertexAttrib4s');
3223
   glVertexAttrib4sv := GLGetProcAddress('glVertexAttrib4sv');
3224
   glVertexAttrib4ubv := GLGetProcAddress('glVertexAttrib4ubv');
3225
   glVertexAttrib4uiv := GLGetProcAddress('glVertexAttrib4uiv');
3226
   glVertexAttrib4usv := GLGetProcAddress('glVertexAttrib4usv');
3227
   glVertexAttribPointer := GLGetProcAddress('glVertexAttribPointer');
3228

3229
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3230

3231
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 2.1'} {$ENDIF}
3232

3233
   //  ###########################################################
3234
   //            locate functions and procedures for
3235
   //         extensions integrated into OpenGL 2.1 core
3236
   //  ###########################################################
3237

3238
   // promoted to core v2.1 from GL_ARB_pixel_buffer_object
3239
   // (no functions or procedures)
3240
   
3241
   // promoted to core v2.1 from GL_EXT_texture_sRGB
3242
   // (no functions or procedures)
3243

3244
   // New commands in OpenGL 2.1
3245
   glUniformMatrix2x3fv := GLGetProcAddress('glUniformMatrix2x3fv');
3246
   glUniformMatrix3x2fv := GLGetProcAddress('glUniformMatrix3x2fv');
3247
   glUniformMatrix2x4fv := GLGetProcAddress('glUniformMatrix2x4fv');
3248
   glUniformMatrix4x2fv := GLGetProcAddress('glUniformMatrix4x2fv');
3249
   glUniformMatrix3x4fv := GLGetProcAddress('glUniformMatrix3x4fv');
3250
   glUniformMatrix4x3fv := GLGetProcAddress('glUniformMatrix4x3fv');
3251

3252
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3253

3254
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 3.0'} {$ENDIF}
3255

3256
   //  ###########################################################
3257
   //            locate functions and procedures for
3258
   //         extensions integrated into OpenGL 3.0 core
3259
   //  ###########################################################
3260

3261
   // promoted to core v3.0 from GL_EXT_gpu_shader4
3262
   glVertexAttribI1i := GLGetProcAddress('glVertexAttribI1i');
3263
   glVertexAttribI2i := GLGetProcAddress('glVertexAttribI2i');
3264
   glVertexAttribI3i := GLGetProcAddress('glVertexAttribI3i');
3265
   glVertexAttribI4i := GLGetProcAddress('glVertexAttribI4i');
3266
   glVertexAttribI1ui := GLGetProcAddress('glVertexAttribI1ui');
3267
   glVertexAttribI2ui := GLGetProcAddress('glVertexAttribI2ui');
3268
   glVertexAttribI3ui := GLGetProcAddress('glVertexAttribI3ui');
3269
   glVertexAttribI4ui := GLGetProcAddress('glVertexAttribI4ui');
3270
   glVertexAttribI1iv := GLGetProcAddress('glVertexAttribI1iv');
3271
   glVertexAttribI2iv := GLGetProcAddress('glVertexAttribI2iv');
3272
   glVertexAttribI3iv := GLGetProcAddress('glVertexAttribI3iv');
3273
   glVertexAttribI4iv := GLGetProcAddress('glVertexAttribI4iv');
3274
   glVertexAttribI1uiv := GLGetProcAddress('glVertexAttribI1uiv');
3275
   glVertexAttribI2uiv := GLGetProcAddress('glVertexAttribI2uiv');
3276
   glVertexAttribI3uiv := GLGetProcAddress('glVertexAttribI3uiv');
3277
   glVertexAttribI4uiv := GLGetProcAddress('glVertexAttribI4uiv');
3278
   glVertexAttribI4bv := GLGetProcAddress('glVertexAttribI4bv');
3279
   glVertexAttribI4sv := GLGetProcAddress('glVertexAttribI4sv');
3280
   glVertexAttribI4ubv := GLGetProcAddress('glVertexAttribI4ubv');
3281
   glVertexAttribI4usv := GLGetProcAddress('glVertexAttribI4usv');
3282
   glVertexAttribIPointer := GLGetProcAddress('glVertexAttribIPointer');
3283
   glGetVertexAttribIiv := GLGetProcAddress('glGetVertexAttribIiv');
3284
   glGetVertexAttribIuiv := GLGetProcAddress('glGetVertexAttribIuiv');
3285
   glUniform1ui := GLGetProcAddress('glUniform1ui');
3286
   glUniform2ui :=  GLGetProcAddress('glUniform2ui');
3287
   glUniform3ui := GLGetProcAddress('glUniform3ui');
3288
   glUniform4ui := GLGetProcAddress('glUniform4ui');
3289
   glUniform1uiv := GLGetProcAddress('glUniform1uiv');
3290
   glUniform2uiv := GLGetProcAddress('glUniform2uiv');
3291
   glUniform3uiv := GLGetProcAddress('glUniform3uiv');
3292
   glUniform4uiv := GLGetProcAddress('glUniform4uiv');
3293
   glGetUniformuiv := GLGetProcAddress('glGetUniformuiv');
3294
   glBindFragDataLocation := GLGetProcAddress('glBindFragDataLocation');
3295
   glGetFragDataLocation := GLGetProcAddress('glGetFragDataLocation');
3296

3297
   // promoted to core v3.0 from GL_NV_conditional_render
3298
   glBeginConditionalRender := GLGetProcAddress('glBeginConditionalRender');
3299
   glEndConditionalRender := GLGetProcAddress('glEndConditionalRender');
3300
   // promoted to core v3.0 from GL_ARB_color_buffer_float
3301
   glClampColor := GLGetProcAddress('glClampColor');
3302
   // promoted to core v3.0 from GL_EXT_texture_integer
3303
   //glClearColorIi := GLGetProcAddress('glClearColorIi');
3304
   //glClearColorIui := GLGetProcAddress('glClearColorIui');
3305
   glTexParameterIiv := GLGetProcAddress('glTexParameterIiv');
3306
   glTexParameterIuiv := GLGetProcAddress('glTexParameterIuiv');
3307
   glGetTexParameterIiv := GLGetProcAddress('glGetTexParameterIiv');
3308
   glGetTexParameterIuiv := GLGetProcAddress('glGetTexParameterIuiv');
3309

3310
   // promoted to core v3.0 from GL_EXT_draw_buffers2
3311
   glColorMaski := GLGetProcAddress('glColorMaski');
3312
   glGetBooleani_v := GLGetProcAddress('glGetBooleani_v');
3313
   glGetIntegeri_v := GLGetProcAddress('glGetIntegeri_v');
3314
   glEnablei := GLGetProcAddress('glEnablei');
3315
   glDisablei := GLGetProcAddress('glDisablei');
3316
   glIsEnabledi := GLGetProcAddress('glIsEnabledi');
3317

3318
   // GL_EXT_transform_feedback (#352)
3319
   glBindBufferRange := GLGetProcAddress('glBindBufferRange');
3320
   glBindBufferBase := GLGetProcAddress('glBindBufferBase');
3321
   glBeginTransformFeedback := GLGetProcAddress('glBeginTransformFeedback');
3322
   glEndTransformFeedback := GLGetProcAddress('glEndTransformFeedback');
3323
   glTransformFeedbackVaryings := GLGetProcAddress('glTransformFeedbackVaryings');
3324
   glGetTransformFeedbackVarying := GLGetProcAddress('glGetTransformFeedbackVarying');
3325

3326
   // New commands in OpenGL 3.0
3327
   glClearBufferiv := GLGetProcAddress('glClearBufferiv');
3328
   glClearBufferuiv := GLGetProcAddress('glClearBufferuiv');
3329
   glClearBufferfv := GLGetProcAddress('glClearBufferfv');
3330
   glClearBufferfi := GLGetProcAddress('glClearBufferfi');
3331
   glGetStringi := GLGetProcAddress('glGetStringi');
3332

3333
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3334

3335
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 3.1'} {$ENDIF}
3336

3337
   //  ###########################################################
3338
   //            locate functions and procedures for
3339
   //         extensions integrated into OpenGL 3.1 core
3340
   //  ###########################################################
3341

3342
   glDrawArraysInstanced := GLGetProcAddress('glDrawArraysInstanced');
3343
   glDrawElementsInstanced := GLGetProcAddress('glDrawElementsInstanced');
3344
   glTexBuffer := GLGetProcAddress('glTexBuffer');
3345
   glPrimitiveRestartIndex := GLGetProcAddress('glPrimitiveRestartIndex');
3346

3347
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3348

3349
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 3.2'} {$ENDIF}
3350

3351
   //  ###########################################################
3352
   //            locate functions and procedures for
3353
   //         extensions integrated into OpenGL 3.2 core
3354
   //  ###########################################################
3355

3356
   glGetInteger64i_v := GLGetProcAddress('glGetInteger64i_v');
3357
   glGetBufferParameteri64v := GLGetProcAddress('glGetBufferParameteri64v');
3358
   glProgramParameteri := GLGetProcAddress('glProgramParameteri');
3359
   glFramebufferTexture := GLGetProcAddress('glFramebufferTexture');
3360

3361
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3362

3363
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 3.3'} {$ENDIF}
3364

3365
   //  ###########################################################
3366
   //            locate functions and procedures for
3367
   //         extensions integrated into OpenGL 3.3 core
3368
   //  ###########################################################
3369

3370
   glVertexAttribDivisor := GLGetProcAddress('glVertexAttribDivisor');
3371

3372
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3373

3374
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures added with OpenGL 3.3'} {$ENDIF}
3375

3376
   //  ###########################################################
3377
   //            locate functions and procedures for
3378
   //         extensions integrated into OpenGL 3.3 core
3379
   //  ###########################################################
3380

3381
   glBlendEquationi := GLGetProcAddress('glBlendEquationi');
3382
   glBlendEquationSeparatei := GLGetProcAddress('glBlendEquationSeparatei');
3383
   glBlendFunci := GLGetProcAddress('glBlendFunci');
3384
   glBlendFuncSeparatei := GLGetProcAddress('glBlendFuncSeparatei');
3385
   glMinSampleShading := GLGetProcAddress('glMinSampleShading');
3386

3387
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3388

3389
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures for OpenGL Utility (GLU) extensions'} {$ENDIF}
3390

3391
   //  ###########################################################
3392
   //            locate functions and procedures for
3393
   //                     GLU extensions
3394
   //  ###########################################################
3395

3396
   gluNurbsCallbackDataEXT := GLGetProcAddress('gluNurbsCallbackDataEXT');
3397
   gluNewNurbsTessellatorEXT := GLGetProcAddress('gluNewNurbsTessellatorEXT');
3398
   gluDeleteNurbsTessellatorEXT := GLGetProcAddress('gluDeleteNurbsTessellatorEXT');
3399

3400
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
3401

3402
{$IFDEF GLS_REGIONS} {$region 'locate functions/procedures for ARB approved extensions'} {$ENDIF}
3403

3404
   //  ###########################################################
3405
   //            locate functions and procedures for
3406
   //                  ARB approved extensions
3407
   //  ###########################################################
3408

3409
   // GL_ARB_multitexture (#1)
3410
   glActiveTextureARB := GLGetProcAddress('glActiveTextureARB');
3411
   glClientActiveTextureARB := GLGetProcAddress('glClientActiveTextureARB');
3412
   glMultiTexCoord1dARB := GLGetProcAddress('glMultiTexCoord1dARB');
3413
   glMultiTexCoord1dVARB := GLGetProcAddress('glMultiTexCoord1dVARB');
3414
   glMultiTexCoord1fARB := GLGetProcAddress('glMultiTexCoord1fARB');
3415
   glMultiTexCoord1fVARB := GLGetProcAddress('glMultiTexCoord1fVARB');
3416
   glMultiTexCoord1iARB := GLGetProcAddress('glMultiTexCoord1iARB');
3417
   glMultiTexCoord1iVARB := GLGetProcAddress('glMultiTexCoord1iVARB');
3418
   glMultiTexCoord1sARB := GLGetProcAddress('glMultiTexCoord1sARB');
3419
   glMultiTexCoord1sVARB := GLGetProcAddress('glMultiTexCoord1sVARB');
3420
   glMultiTexCoord2dARB := GLGetProcAddress('glMultiTexCoord2dARB');
3421
   glMultiTexCoord2dvARB := GLGetProcAddress('glMultiTexCoord2dvARB');
3422
   glMultiTexCoord2fARB := GLGetProcAddress('glMultiTexCoord2fARB');
3423
   glMultiTexCoord2fvARB := GLGetProcAddress('glMultiTexCoord2fvARB');
3424
   glMultiTexCoord2iARB := GLGetProcAddress('glMultiTexCoord2iARB');
3425
   glMultiTexCoord2ivARB := GLGetProcAddress('glMultiTexCoord2ivARB');
3426
   glMultiTexCoord2sARB := GLGetProcAddress('glMultiTexCoord2sARB');
3427
   glMultiTexCoord2svARB := GLGetProcAddress('glMultiTexCoord2svARB');
3428
   glMultiTexCoord3dARB := GLGetProcAddress('glMultiTexCoord3dARB');
3429
   glMultiTexCoord3dvARB := GLGetProcAddress('glMultiTexCoord3dvARB');
3430
   glMultiTexCoord3fARB := GLGetProcAddress('glMultiTexCoord3fARB');
3431
   glMultiTexCoord3fvARB := GLGetProcAddress('glMultiTexCoord3fvARB');
3432
   glMultiTexCoord3iARB := GLGetProcAddress('glMultiTexCoord3iARB');
3433
   glMultiTexCoord3ivARB := GLGetProcAddress('glMultiTexCoord3ivARB');
3434
   glMultiTexCoord3sARB := GLGetProcAddress('glMultiTexCoord3sARB');
3435
   glMultiTexCoord3svARB := GLGetProcAddress('glMultiTexCoord3svARB');
3436
   glMultiTexCoord4dARB := GLGetProcAddress('glMultiTexCoord4dARB');
3437
   glMultiTexCoord4dvARB := GLGetProcAddress('glMultiTexCoord4dvARB');
3438
   glMultiTexCoord4fARB := GLGetProcAddress('glMultiTexCoord4fARB');
3439
   glMultiTexCoord4fvARB := GLGetProcAddress('glMultiTexCoord4fvARB');
3440
   glMultiTexCoord4iARB := GLGetProcAddress('glMultiTexCoord4iARB');
3441
   glMultiTexCoord4ivARB := GLGetProcAddress('glMultiTexCoord4ivARB');
3442
   glMultiTexCoord4sARB := GLGetProcAddress('glMultiTexCoord4sARB');
3443
   glMultiTexCoord4svARB := GLGetProcAddress('glMultiTexCoord4svARB');
3444

3445
   // GL_ARB_transpose_matrix (#3)
3446
   glLoadTransposeMatrixfARB := GLGetProcAddress('glLoadTransposeMatrixfARB');
3447
   glLoadTransposeMatrixdARB := GLGetProcAddress('glLoadTransposeMatrixdARB');
3448
   glMultTransposeMatrixfARB := GLGetProcAddress('glMultTransposeMatrixfARB');
3449
   glMultTransposeMatrixdARB := GLGetProcAddress('glMultTransposeMatrixdARB');
3450

3451
   // GL_ARB_multisample (#5)
3452
   glSampleCoverageARB := GLGetProcAddress('glSampleCoverageARB');
3453

3454
   // GL_ARB_texture_compression (#12)
3455
   glCompressedTexImage3DARB := GLGetProcAddress('glCompressedTexImage3DARB');
3456
   glCompressedTexImage2DARB := GLGetProcAddress('glCompressedTexImage2DARB');
3457
   glCompressedTexImage1DARB := GLGetProcAddress('glCompressedTexImage1DARB');
3458
   glCompressedTexSubImage3DARB := GLGetProcAddress('glCompressedTexSubImage3DARB');
3459
   glCompressedTexSubImage2DARB := GLGetProcAddress('glCompressedTexSubImage2DARB');
3460
   glCompressedTexSubImage1DARB := GLGetProcAddress('glCompressedTexSubImage1DARB');
3461
   glGetCompressedTexImageARB := GLGetProcAddress('glGetCompressedTexImageARB');
3462

3463
   // GL_ARB_point_parameter (#14)
3464
   glPointParameterfARB := GLGetProcAddress('glPointParameterfARB');
3465
   glPointParameterfvARB := GLGetProcAddress('glPointParameterfvARB');
3466

3467
   // GL_ARB_vertex_blend (#15) {deprecated?}
3468
   glWeightbvARB := GLGetProcAddress('glWeightbvARB');
3469
   glWeightsvARB := GLGetProcAddress('glWeightsvARB');
3470
   glWeightivARB := GLGetProcAddress('glWeightivARB');
3471
   glWeightfvARB := GLGetProcAddress('glWeightfvARB');
3472
   glWeightdvARB := GLGetProcAddress('glWeightdvARB');
3473
   glWeightubvARB := GLGetProcAddress('glWeightubvARB');
3474
   glWeightusvARB := GLGetProcAddress('glWeightusvARB');
3475
   glWeightuivARB := GLGetProcAddress('glWeightuivARB');
3476
   glWeightPointerARB := GLGetProcAddress('glWeightPointerARB');
3477
   glVertexBlendARB := GLGetProcAddress('glVertexBlendARB');
3478

3479
   // GL_ARB_matrix_palette (#16) {deprecated?}
3480
   glCurrentPaletteMatrixARB := GLGetProcAddress('glCurrentPaletteMatrixARB');
3481
   glMatrixIndexubvARB := GLGetProcAddress('glMatrixIndexubvARB');
3482
   glMatrixIndexusvARB := GLGetProcAddress('glMatrixIndexusvARB');
3483
   glMatrixIndexuivARB := GLGetProcAddress('glMatrixIndexuivARB');
3484
   glMatrixIndexPointerARB := GLGetProcAddress('glMatrixIndexPointerARB');
3485

3486
   // GL_ARB_window_pos (#25)
3487
   glWindowPos2dARB := GLGetProcAddress('glWindowPos2dARB');
3488
   glWindowPos2dvARB := GLGetProcAddress('glWindowPos2dvARB');
3489
   glWindowPos2fARB := GLGetProcAddress('glWindowPos2fARB');
3490
   glWindowPos2fvARB := GLGetProcAddress('glWindowPos2fvARB');
3491
   glWindowPos2iARB := GLGetProcAddress('glWindowPos2iARB');
3492
   glWindowPos2ivARB := GLGetProcAddress('glWindowPos2ivARB');
3493
   glWindowPos2sARB := GLGetProcAddress('glWindowPos2sARB');
3494
   glWindowPos2svARB := GLGetProcAddress('glWindowPos2svARB');
3495
   glWindowPos3dARB := GLGetProcAddress('glWindowPos3dARB');
3496
   glWindowPos3dvARB := GLGetProcAddress('glWindowPos3dvARB');
3497
   glWindowPos3fARB := GLGetProcAddress('glWindowPos3fARB');
3498
   glWindowPos3fvARB := GLGetProcAddress('glWindowPos3fvARB');
3499
   glWindowPos3iARB := GLGetProcAddress('glWindowPos3iARB');
3500
   glWindowPos3ivARB := GLGetProcAddress('glWindowPos3ivARB');
3501
   glWindowPos3sARB := GLGetProcAddress('glWindowPos3sARB');
3502
   glWindowPos3svARB := GLGetProcAddress('glWindowPos3svARB');
3503

3504
   // GL_ARB_vertex_program (#26)
3505
   glVertexAttrib1dARB := GLGetProcAddress('glVertexAttrib1dARB');
3506
   glVertexAttrib1dvARB := GLGetProcAddress('glVertexAttrib1dvARB');
3507
   glVertexAttrib1fARB := GLGetProcAddress('glVertexAttrib1fARB');
3508
   glVertexAttrib1fvARB := GLGetProcAddress('glVertexAttrib1fvARB');
3509
   glVertexAttrib1sARB := GLGetProcAddress('glVertexAttrib1sARB');
3510
   glVertexAttrib1svARB := GLGetProcAddress('glVertexAttrib1svARB');
3511
   glVertexAttrib2dARB := GLGetProcAddress('glVertexAttrib2dARB');
3512
   glVertexAttrib2dvARB := GLGetProcAddress('glVertexAttrib2dvARB');
3513
   glVertexAttrib2fARB := GLGetProcAddress('glVertexAttrib2fARB');
3514
   glVertexAttrib2fvARB := GLGetProcAddress('glVertexAttrib2fvARB');
3515
   glVertexAttrib2sARB := GLGetProcAddress('glVertexAttrib2sARB');
3516
   glVertexAttrib2svARB := GLGetProcAddress('glVertexAttrib2svARB');
3517
   glVertexAttrib3dARB := GLGetProcAddress('glVertexAttrib3dARB');
3518
   glVertexAttrib3dvARB := GLGetProcAddress('glVertexAttrib3dvARB');
3519
   glVertexAttrib3fARB := GLGetProcAddress('glVertexAttrib3fARB');
3520
   glVertexAttrib3fvARB := GLGetProcAddress('glVertexAttrib3fvARB');
3521
   glVertexAttrib3sARB := GLGetProcAddress('glVertexAttrib3sARB');
3522
   glVertexAttrib3svARB := GLGetProcAddress('glVertexAttrib3svARB');
3523
   glVertexAttrib4NbvARB := GLGetProcAddress('glVertexAttrib4NbvARB');
3524
   glVertexAttrib4NivARB := GLGetProcAddress('glVertexAttrib4NivARB');
3525
   glVertexAttrib4NsvARB := GLGetProcAddress('glVertexAttrib4NsvARB');
3526
   glVertexAttrib4NubARB := GLGetProcAddress('glVertexAttrib4NubARB');
3527
   glVertexAttrib4NubvARB := GLGetProcAddress('glVertexAttrib4NubvARB');
3528
   glVertexAttrib4NuivARB := GLGetProcAddress('glVertexAttrib4NuivARB');
3529
   glVertexAttrib4NusvARB := GLGetProcAddress('glVertexAttrib4NusvARB');
3530
   glVertexAttrib4bvARB := GLGetProcAddress('glVertexAttrib4bvARB');
3531
   glVertexAttrib4dARB := GLGetProcAddress('glVertexAttrib4dARB');
3532
   glVertexAttrib4dvARB := GLGetProcAddress('glVertexAttrib4dvARB');
3533
   glVertexAttrib4fARB := GLGetProcAddress('glVertexAttrib4fARB');
3534
   glVertexAttrib4fvARB := GLGetProcAddress('glVertexAttrib4fvARB');
3535
   glVertexAttrib4ivARB := GLGetProcAddress('glVertexAttrib4ivARB');
3536
   glVertexAttrib4sARB := GLGetProcAddress('glVertexAttrib4sARB');
3537
   glVertexAttrib4svARB := GLGetProcAddress('glVertexAttrib4svARB');
3538
   glVertexAttrib4ubvARB := GLGetProcAddress('glVertexAttrib4ubvARB');
3539
   glVertexAttrib4uivARB := GLGetProcAddress('glVertexAttrib4uivARB');
3540
   glVertexAttrib4usvARB := GLGetProcAddress('glVertexAttrib4usvARB');
3541
   glVertexAttribPointerARB := GLGetProcAddress('glVertexAttribPointerARB');
3542
   glEnableVertexAttribArrayARB := GLGetProcAddress('glEnableVertexAttribArrayARB');
3543
   glDisableVertexAttribArrayARB := GLGetProcAddress('glDisableVertexAttribArrayARB');
3544
   glProgramStringARB := GLGetProcAddress('glProgramStringARB');
3545
   glBindProgramARB := GLGetProcAddress('glBindProgramARB');
3546
   glDeleteProgramsARB := GLGetProcAddress('glDeleteProgramsARB');
3547
   glGenProgramsARB := GLGetProcAddress('glGenProgramsARB');
3548
   glProgramEnvParameter4dARB := GLGetProcAddress('glProgramEnvParameter4dARB');
3549
   glProgramEnvParameter4dvARB := GLGetProcAddress('glProgramEnvParameter4dvARB');
3550
   glProgramEnvParameter4fARB := GLGetProcAddress('glProgramEnvParameter4fARB');
3551
   glProgramEnvParameter4fvARB := GLGetProcAddress('glProgramEnvParameter4fvARB');
3552
   glProgramLocalParameter4dARB := GLGetProcAddress('glProgramLocalParameter4dARB');
3553
   glProgramLocalParameter4dvARB := GLGetProcAddress('glProgramLocalParameter4dvARB');
3554
   glProgramLocalParameter4fARB := GLGetProcAddress('glProgramLocalParameter4fARB');
3555
   glProgramLocalParameter4fvARB := GLGetProcAddress('glProgramLocalParameter4fvARB');
3556
   glGetProgramEnvParameterdvARB := GLGetProcAddress('glGetProgramEnvParameterdvARB');
3557
   glGetProgramEnvParameterfvARB := GLGetProcAddress('glGetProgramEnvParameterfvARB');
3558
   glGetProgramLocalParameterdvARB := GLGetProcAddress('glGetProgramLocalParameterdvARB');
3559
   glGetProgramLocalParameterfvARB := GLGetProcAddress('glGetProgramLocalParameterfvARB');
3560
   glGetProgramivARB := GLGetProcAddress('glGetProgramivARB');
3561
   glGetProgramStringARB := GLGetProcAddress('glGetProgramStringARB');
3562
   glGetVertexAttribdvARB := GLGetProcAddress('glGetVertexAttribdvARB');
3563
   glGetVertexAttribfvARB := GLGetProcAddress('glGetVertexAttribfvARB');
3564
   glGetVertexAttribivARB := GLGetProcAddress('glGetVertexAttribivARB');
3565
   glGetVertexAttribPointervARB := GLGetProcAddress('glGetVertexAttribPointervARB');
3566
   glIsProgramARB := GLGetProcAddress('glIsProgramARB');
3567

3568
   // GL_ARB_vertex_buffer_object (#28)
3569
   glBindBufferARB := GLGetProcAddress('glBindBufferARB');
3570
   glDeleteBuffersARB := GLGetProcAddress('glDeleteBuffersARB');
3571
   glGenBuffersARB := GLGetProcAddress('glGenBuffersARB');
3572
   glIsBufferARB := GLGetProcAddress('glIsBufferARB');
3573
   glBufferDataARB := GLGetProcAddress('glBufferDataARB');
3574
   glBufferSubDataARB := GLGetProcAddress('glBufferSubDataARB');
3575
   glGetBufferSubDataARB := GLGetProcAddress('glGetBufferSubDataARB');
3576
   glMapBufferARB := GLGetProcAddress('glMapBufferARB');
3577
   glUnmapBufferARB := GLGetProcAddress('glUnmapBufferARB');
3578
   glGetBufferParameterivARB := GLGetProcAddress('glGetBufferParameterivARB');
3579
   glGetBufferPointervARB := GLGetProcAddress('glGetBufferPointervARB');
3580

3581
   // GL_ARB_occlusion_query (#29)
3582
   glGenQueriesARB := GLGetProcAddress('glGenQueriesARB');
3583
   glDeleteQueriesARB := GLGetProcAddress('glDeleteQueriesARB');
3584
   glIsQueryARB := GLGetProcAddress('glIsQueryARB');
3585
   glBeginQueryARB := GLGetProcAddress('glBeginQueryARB');
3586
   glEndQueryARB := GLGetProcAddress('glEndQueryARB');
3587
   glGetQueryivARB := GLGetProcAddress('glGetQueryivARB');
3588
   glGetQueryObjectivARB := GLGetProcAddress('glGetQueryObjectivARB');
3589
   glGetQueryObjectuivARB := GLGetProcAddress('glGetQueryObjectuivARB');
3590

3591
   // GL_ARB_shader_objects (#30)
3592
   glDeleteObjectARB := GLGetProcAddress('glDeleteObjectARB');
3593
   glGetHandleARB := GLGetProcAddress('glGetHandleARB');
3594
   glDetachObjectARB := GLGetProcAddress('glDetachObjectARB');
3595
   glCreateShaderObjectARB := GLGetProcAddress('glCreateShaderObjectARB');
3596
   glShaderSourceARB := GLGetProcAddress('glShaderSourceARB');
3597
   glCompileShaderARB := GLGetProcAddress('glCompileShaderARB');
3598
   glCreateProgramObjectARB := GLGetProcAddress('glCreateProgramObjectARB');
3599
   glAttachObjectARB := GLGetProcAddress('glAttachObjectARB');
3600
   glLinkProgramARB := GLGetProcAddress('glLinkProgramARB');
3601
   glUseProgramObjectARB := GLGetProcAddress('glUseProgramObjectARB');
3602
   glValidateProgramARB := GLGetProcAddress('glValidateProgramARB');
3603
   glUniform1fARB := GLGetProcAddress('glUniform1fARB');
3604
   glUniform2fARB := GLGetProcAddress('glUniform2fARB');
3605
   glUniform3fARB := GLGetProcAddress('glUniform3fARB');
3606
   glUniform4fARB := GLGetProcAddress('glUniform4fARB');
3607
   glUniform1iARB := GLGetProcAddress('glUniform1iARB');
3608
   glUniform2iARB := GLGetProcAddress('glUniform2iARB');
3609
   glUniform3iARB := GLGetProcAddress('glUniform3iARB');
3610
   glUniform4iARB := GLGetProcAddress('glUniform4iARB');
3611
   glUniform1fvARB := GLGetProcAddress('glUniform1fvARB');
3612
   glUniform2fvARB := GLGetProcAddress('glUniform2fvARB');
3613
   glUniform3fvARB := GLGetProcAddress('glUniform3fvARB');
3614
   glUniform4fvARB := GLGetProcAddress('glUniform4fvARB');
3615
   glUniform1ivARB := GLGetProcAddress('glUniform1ivARB');
3616
   glUniform2ivARB := GLGetProcAddress('glUniform2ivARB');
3617
   glUniform3ivARB := GLGetProcAddress('glUniform3ivARB');
3618
   glUniform4ivARB := GLGetProcAddress('glUniform4ivARB');
3619
   glUniformMatrix2fvARB := GLGetProcAddress('glUniformMatrix2fvARB');
3620
   glUniformMatrix3fvARB := GLGetProcAddress('glUniformMatrix3fvARB');
3621
   glUniformMatrix4fvARB := GLGetProcAddress('glUniformMatrix4fvARB');
3622
   glGetObjectParameterfvARB := GLGetProcAddress('glGetObjectParameterfvARB');
3623
   glGetObjectParameterivARB := GLGetProcAddress('glGetObjectParameterivARB');
3624
   glGetInfoLogARB := GLGetProcAddress('glGetInfoLogARB');
3625
   glGetAttachedObjectsARB := GLGetProcAddress('glGetAttachedObjectsARB');
3626
   glGetUniformLocationARB := GLGetProcAddress('glGetUniformLocationARB');
3627
   glGetActiveUniformARB := GLGetProcAddress('glGetActiveUniformARB');
3628
   glGetUniformfvARB := GLGetProcAddress('glGetUniformfvARB');
3629
   glGetUniformivARB := GLGetProcAddress('glGetUniformivARB');
3630
   glGetShaderSourceARB := GLGetProcAddress('glGetShaderSourceARB');
3631

3632
   // GL_ARB_vertex_shader (#31)
3633
   glBindAttribLocationARB := GLGetProcAddress('glBindAttribLocationARB');
3634
   glGetActiveAttribARB := GLGetProcAddress('glGetActiveAttribARB');
3635
   glGetAttribLocationARB := GLGetProcAddress('glGetAttribLocationARB');
3636

3637
   // GL_ARB_draw_buffers (#37)
3638
   glDrawBuffersARB := GLGetProcAddress('glDrawBuffersARB');
3639

3640
   // GL_ARB_color_buffer_float (#39)
3641
   glClampColorARB := GLGetProcAddress('glClampColorARB');
3642

3643
   // GL_ARB_draw_instanced (ARB #44)
3644
   glDrawArraysInstancedARB := GLGetProcAddress('glDrawArraysInstancedARB');
3645
   glDrawElementsInstancedARB := GLGetProcAddress('glDrawElementsInstancedARB');
3646

3647
   // GL_ARB_framebuffer_object (ARB #45)
3648
   glIsRenderbuffer := GLGetProcAddress('glIsRenderbuffer');
3649
   glBindRenderbuffer := GLGetProcAddress('glBindRenderbuffer');
3650
   glDeleteRenderbuffers := GLGetProcAddress('glDeleteRenderbuffers');
3651
   glGenRenderbuffers := GLGetProcAddress('glGenRenderbuffers');
3652
   glRenderbufferStorage := GLGetProcAddress('glRenderbufferStorage');
3653
   glRenderbufferStorageMultisample := GLGetProcAddress('glRenderbufferStorageMultisample');
3654
   glGetRenderbufferParameteriv := GLGetProcAddress('glGetRenderbufferParameteriv');
3655
   glIsFramebuffer := GLGetProcAddress('glIsFramebuffer');
3656
   glBindFramebuffer := GLGetProcAddress('glBindFramebuffer');
3657
   glDeleteFramebuffers := GLGetProcAddress('glDeleteFramebuffers');
3658
   glGenFramebuffers := GLGetProcAddress('glGenFramebuffers');
3659
   glCheckFramebufferStatus := GLGetProcAddress('glCheckFramebufferStatus');
3660
   glFramebufferTexture1D := GLGetProcAddress('glFramebufferTexture1D');
3661
   glFramebufferTexture2D := GLGetProcAddress('glFramebufferTexture2D');
3662
   glFramebufferTexture3D := GLGetProcAddress('glFramebufferTexture3D');
3663
   glFramebufferTextureLayer := GLGetProcAddress('glFramebufferTextureLayer');
3664
   glFramebufferRenderbuffer := GLGetProcAddress('glFramebufferRenderbuffer');
3665
   glGetFramebufferAttachmentParameteriv := GLGetProcAddress('glGetFramebufferAttachmentParameteriv');
3666
   glBlitFramebuffer := GLGetProcAddress('glBlitFramebuffer');
3667
   glGenerateMipmap := GLGetProcAddress('glGenerateMipmap');
3668

3669
   // GL_ARB_geometry_shader4 (ARB #47)
3670
   glProgramParameteriARB := GLGetProcAddress('glProgramParameteriARB');
3671
   glFramebufferTextureARB := GLGetProcAddress('glFramebufferTextureARB');
3672
   glFramebufferTextureLayerARB := GLGetProcAddress('glFramebufferTextureLayerARB');
3673
   glFramebufferTextureFaceARB := GLGetProcAddress('glFramebufferTextureFaceARB');
3674

3675
   // GL_ARB_instanced_arrays (ARB #49)
3676
   glVertexAttribDivisorARB := GLGetProcAddress('glVertexAttribDivisorARB');
3677

3678
   // GL_ARB_map_buffer_range (ARB #50)
3679
   glMapBufferRange := GLGetProcAddress('glMapBufferRange');
3680
   glFlushMappedBufferRange := GLGetProcAddress('glFlushMappedBufferRange');
3681

3682
   // GL_ARB_texture_buffer_object (ARB #51)
3683
   glTexBufferARB := GLGetProcAddress('glTexBufferARB');
3684

3685
   // GL_ARB_vertex_array_object (ARB #54)
3686
   glBindVertexArray := GLGetProcAddress('glBindVertexArray');
3687
   glDeleteVertexArrays := GLGetProcAddress('glDeleteVertexArrays');
3688
   glGenVertexArrays := GLGetProcAddress('glGenVertexArrays');
3689
   glIsVertexArray := GLGetProcAddress('glIsVertexArray');
3690

3691
   // GL_ARB_uniform_buffer_object (ARB #57)
3692
   glGetUniformIndices := GLGetProcAddress('glGetUniformIndices');
3693
   glGetActiveUniformsiv := GLGetProcAddress('glGetActiveUniformsiv');
3694
   glGetActiveUniformName := GLGetProcAddress('glGetActiveUniformName');
3695
   glGetUniformBlockIndex := GLGetProcAddress('glGetUniformBlockIndex');
3696
   glGetActiveUniformBlockiv := GLGetProcAddress('glGetActiveUniformBlockiv');
3697
   glGetActiveUniformBlockName := GLGetProcAddress('glGetActiveUniformBlockName');
3698
   glUniformBlockBinding := GLGetProcAddress('glUniformBlockBinding');
3699

3700
   // GL_ARB_copy_buffer (ARB #59)
3701
   glCopyBufferSubData := GLGetProcAddress('glCopyBufferSubData');
3702

3703
   // GL_ARB_draw_elements_base_vertex (ARB #62)
3704
   glDrawElementsBaseVertex := GLGetProcAddress('glDrawElementsBaseVertex');
3705
   glDrawRangeElementsBaseVertex := GLGetProcAddress('glDrawRangeElementsBaseVertex');
3706
   glDrawElementsInstancedBaseVertex := GLGetProcAddress('glDrawElementsInstancedBaseVertex');
3707
   glMultiDrawElementsBaseVertex := GLGetProcAddress('glMultiDrawElementsBaseVertex');
3708

3709
   // GL_ARB_provoking_vertex (ARB #64)
3710
   glProvokingVertex := GLGetProcAddress('glProvokingVertex');
3711

3712
   // GL_ARB_sync commands (ARB #66)
3713
   glFenceSync := GLGetProcAddress('glFenceSync');
3714
   glIsSync := GLGetProcAddress('glIsSync');
3715
   glDeleteSync := GLGetProcAddress('glDeleteSync');
3716
   glClientWaitSync := GLGetProcAddress('glClientWaitSync');
3717
   glWaitSync := GLGetProcAddress('glWaitSync');
3718
   glGetInteger64v := GLGetProcAddress('glGetInteger64v');
3719
   glGetSynciv := GLGetProcAddress('glGetSynciv');
3720

3721
   // GL_ARB_texture_multisample (ARB #67)
3722
   glTexImage2DMultisample := GLGetProcAddress('glTexImage2DMultisample');
3723
   glTexImage3DMultisample := GLGetProcAddress('glTexImage3DMultisample');
3724
   glGetMultisamplefv := GLGetProcAddress('glGetMultisamplefv');
3725
   glSampleMaski := GLGetProcAddress('glSampleMaski');
3726

3727
   // GL_ARB_draw_buffers_blend (ARB #69)
3728
   glBlendEquationiARB := GLGetProcAddress('glBlendEquationiARB');
3729
   glBlendEquationSeparateiARB := GLGetProcAddress('glBlendEquationSeparateiARB');
3730
   glBlendFunciARB := GLGetProcAddress('glBlendFunciARB');
3731
   glBlendFuncSeparateiARB := GLGetProcAddress('glBlendFuncSeparateiARB');
3732

3733
   // GL_ARB_sample_shading (ARB #70)
3734
   glMinSampleShadingARB := GLGetProcAddress('glMinSampleShadingARB');
3735

3736
   // GL_ARB_blend_func_extended (ARB #78)
3737
   glBindFragDataLocationIndexed := GLGetProcAddress('glBindFragDataLocationIndexed');
3738
   glGetFragDataIndex := GLGetProcAddress('glGetFragDataIndex');
3739

3740
   // GL_ARB_sampler_objects (ARB #81)
3741
   glGenSamplers := GLGetProcAddress('glGenSamplers');
3742
   glDeleteSamplers := GLGetProcAddress('glDeleteSamplers');
3743
   glIsSampler := GLGetProcAddress('glIsSampler');
3744
   glBindSampler := GLGetProcAddress('glBindSampler');
3745
   glSamplerParameteri := GLGetProcAddress('glSamplerParameteri');
3746
   glSamplerParameteriv := GLGetProcAddress('glSamplerParameteriv');
3747
   glSamplerParameterf := GLGetProcAddress('glSamplerParameterf');
3748
   glSamplerParameterfv := GLGetProcAddress('glSamplerParameterfv');
3749
   glSamplerParameterIiv := GLGetProcAddress('glSamplerParameterIiv');
3750
   glSamplerParameterIuiv := GLGetProcAddress('glSamplerParameterIuiv');
3751
   glGetSamplerParameteriv := GLGetProcAddress('glGetSamplerParameteriv');
3752
   glGetSamplerParameterIiv := GLGetProcAddress('glGetSamplerParameterIiv');
3753
   glGetSamplerParameterfv := GLGetProcAddress('glGetSamplerParameterfv');
3754
   glGetSamplerParameterIfv := GLGetProcAddress('glGetSamplerParameterIfv');
3755

3756
   // GL_ARB_timer_query (ARB #85)
3757
   glQueryCounter := GLGetProcAddress('glQueryCounter');
3758
   glGetQueryObjecti64v := GLGetProcAddress('glGetQueryObjecti64v');
3759
   glGetQueryObjectui64v := GLGetProcAddress('glGetQueryObjectui64v');
3760

3761
   // GL_ARB_vertex_type_2_10_10_10_rev (ARB #86)
3762
   glVertexP2ui := GLGetProcAddress('glVertexP2ui');
3763
   glVertexP2uiv := GLGetProcAddress('glVertexP2uiv');
3764
   glVertexP3ui := GLGetProcAddress('glVertexP3ui');
3765
   glVertexP3uiv := GLGetProcAddress('glVertexP3uiv');
3766
   glVertexP4ui := GLGetProcAddress('glVertexP4ui');
3767
   glVertexP4uiv := GLGetProcAddress('glVertexP4uiv');
3768
   glTexCoordP1ui := GLGetProcAddress('glTexCoordP1ui');
3769
   glTexCoordP1uiv := GLGetProcAddress('glTexCoordP1uiv');
3770
   glTexCoordP2ui := GLGetProcAddress('glTexCoordP2ui');
3771
   glTexCoordP2uiv := GLGetProcAddress('glTexCoordP2uiv');
3772
   glTexCoordP3ui := GLGetProcAddress('glTexCoordP3ui');
3773
   glTexCoordP3uiv := GLGetProcAddress('glTexCoordP3uiv');
3774
   glTexCoordP4ui := GLGetProcAddress('glTexCoordP4ui');
3775
   glTexCoordP4uiv := GLGetProcAddress('glTexCoordP4uiv');
3776
   glMultiTexCoordP1ui := GLGetProcAddress('glMultiTexCoordP1ui');
3777
   glMultiTexCoordP1uiv := GLGetProcAddress('glMultiTexCoordP1uiv');
3778
   glMultiTexCoordP2ui := GLGetProcAddress('glMultiTexCoordP2ui');
3779
   glMultiTexCoordP2uiv := GLGetProcAddress('glMultiTexCoordP2uiv');
3780
   glMultiTexCoordP3ui := GLGetProcAddress('glMultiTexCoordP3ui');
3781
   glMultiTexCoordP3uiv := GLGetProcAddress('glMultiTexCoordP3uiv');
3782
   glMultiTexCoordP4ui := GLGetProcAddress('glMultiTexCoordP4ui');
3783
   glMultiTexCoordP4uiv := GLGetProcAddress('glMultiTexCoordP4uiv');
3784
   glNormalP3ui := GLGetProcAddress('glNormalP3ui');
3785
   glNormalP3uiv := GLGetProcAddress('glNormalP3uiv');
3786
   glColorP3ui := GLGetProcAddress('glColorP3ui');
3787
   glColorP3uiv := GLGetProcAddress('glColorP3uiv');
3788
   glColorP4ui := GLGetProcAddress('glColorP4ui');
3789
   glColorP4uiv := GLGetProcAddress('glColorP4uiv');
3790
   glSecondaryColorP3ui := GLGetProcAddress('glSecondaryColorP3ui');
3791
   glSecondaryColorP3uiv := GLGetProcAddress('glSecondaryColorP3uiv');
3792
   glVertexAttribP1ui := GLGetProcAddress('glVertexAttribP1ui');
3793
   glVertexAttribP1uiv := GLGetProcAddress('glVertexAttribP1uiv');
3794
   glVertexAttribP2ui := GLGetProcAddress('glVertexAttribP2ui');
3795
   glVertexAttribP2uiv := GLGetProcAddress('glVertexAttribP2uiv');
3796
   glVertexAttribP3ui := GLGetProcAddress('glVertexAttribP3ui');
3797
   glVertexAttribP3uiv := GLGetProcAddress('glVertexAttribP3uiv');
3798
   glVertexAttribP4ui := GLGetProcAddress('glVertexAttribP4ui');
3799
   glVertexAttribP4uiv := GLGetProcAddress('glVertexAttribP4uiv');
3800

3801
   // GL_ARB_draw_indirect (ARB #87)
3802
   glDrawArraysIndirect := GLGetProcAddress('glDrawArraysIndirect');
3803
   glDrawElementsIndirect := GLGetProcAddress('glDrawElementsIndirect');
3804

3805
   // GL_ARB_gpu_shader_fp64 (ARB #89)
3806
   glUniform1d := GLGetProcAddress('glUniform1d');
3807
   glUniform2d := GLGetProcAddress('glUniform2d');
3808
   glUniform3d := GLGetProcAddress('glUniform3d');
3809
   glUniform4d := GLGetProcAddress('glUniform4d');
3810
   glUniform1dv := GLGetProcAddress('glUniform1dv');
3811
   glUniform2dv := GLGetProcAddress('glUniform2dv');
3812
   glUniform3dv := GLGetProcAddress('glUniform3dv');
3813
   glUniform4dv := GLGetProcAddress('glUniform4dv');
3814
   glUniformMatrix2dv := GLGetProcAddress('glUniformMatrix2dv');
3815
   glUniformMatrix3dv := GLGetProcAddress('glUniformMatrix3dv');
3816
   glUniformMatrix4dv := GLGetProcAddress('glUniformMatrix4dv');
3817
   glUniformMatrix2x3dv := GLGetProcAddress('glUniformMatrix2x3dv');
3818
   glUniformMatrix2x4dv := GLGetProcAddress('glUniformMatrix2x4dv');
3819
   glUniformMatrix3x2dv := GLGetProcAddress('glUniformMatrix3x2dv');
3820
   glUniformMatrix3x4dv := GLGetProcAddress('glUniformMatrix3x4dv');
3821
   glUniformMatrix4x2dv := GLGetProcAddress('glUniformMatrix4x2dv');
3822
   glUniformMatrix4x3dv := GLGetProcAddress('glUniformMatrix4x3dv');
3823
   glGetUniformdv := GLGetProcAddress('glGetUniformdv');
3824
   glProgramUniform1dEXT := GLGetProcAddress('glProgramUniform1dEXT');
3825
   glProgramUniform2dEXT := GLGetProcAddress('glProgramUniform2dEXT');
3826
   glProgramUniform3dEXT := GLGetProcAddress('glProgramUniform3dEXT');
3827
   glProgramUniform4dEXT := GLGetProcAddress('glProgramUniform4dEXT');
3828
   glProgramUniform1dvEXT := GLGetProcAddress('glProgramUniform1dvEXT');
3829
   glProgramUniform2dvEXT := GLGetProcAddress('glProgramUniform2dvEXT');
3830
   glProgramUniform3dvEXT := GLGetProcAddress('glProgramUniform3dvEXT');
3831
   glProgramUniform4dvEXT := GLGetProcAddress('glProgramUniform4dvEXT');
3832
   glProgramUniformMatrix2dvEXT := GLGetProcAddress('glProgramUniformMatrix2dvEXT');
3833
   glProgramUniformMatrix3dvEXT := GLGetProcAddress('glProgramUniformMatrix3dvEXT');
3834
   glProgramUniformMatrix4dvEXT := GLGetProcAddress('glProgramUniformMatrix4dvEXT');
3835
   glProgramUniformMatrix2x3dvEXT := GLGetProcAddress('glProgramUniformMatrix2x3dvEXT');
3836
   glProgramUniformMatrix2x4dvEXT := GLGetProcAddress('glProgramUniformMatrix2x4dvEXT');
3837
   glProgramUniformMatrix3x2dvEXT := GLGetProcAddress('glProgramUniformMatrix3x2dvEXT');
3838
   glProgramUniformMatrix3x4dvEXT := GLGetProcAddress('glProgramUniformMatrix3x4dvEXT');
3839
   glProgramUniformMatrix4x2dvEXT := GLGetProcAddress('glProgramUniformMatrix4x2dvEXT');
3840
   glProgramUniformMatrix4x3dvEXT := GLGetProcAddress('glProgramUniformMatrix4x3dvEXT');
3841

3842
   // GL_ARB_shader_subroutine (ARB #90)
3843
   glGetSubroutineUniformLocation := GLGetProcAddress('glGetSubroutineUniformLocation');
3844
   glGetSubroutineIndex := GLGetProcAddress('glGetSubroutineIndex');
3845
   glGetActiveSubroutineUniformiv := GLGetProcAddress('glGetActiveSubroutineUniformiv');
3846
   glGetActiveSubroutineUniformName := GLGetProcAddress('glGetActiveSubroutineUniformName');
3847
   glGetActiveSubroutineName := GLGetProcAddress('glGetActiveSubroutineName');
3848
   glUniformSubroutinesuiv := GLGetProcAddress('glUniformSubroutinesuiv');
3849
   glGetUniformSubroutineuiv := GLGetProcAddress('glGetUniformSubroutineuiv');
3850
   glGetProgramStageiv := GLGetProcAddress('glGetProgramStageiv');
3851

3852
   // GL_ARB_tessellation_shader (ARB #91)
3853
   glPatchParameteri := GLGetProcAddress('glPatchParameteri');
3854
   glPatchParameterfv := GLGetProcAddress('glPatchParameterfv');
3855

3856
   // GL_ARB_transform_feedback2 (ARB #93)
3857
   glBindTransformFeedback := GLGetProcAddress('glBindTransformFeedback');
3858
   glDeleteTransformFeedbacks := GLGetProcAddress('glDeleteTransformFeedbacks');
3859
   glGenTransformFeedbacks := GLGetProcAddress('glGenTransformFeedbacks');
3860
   glIsTransformFeedback := GLGetProcAddress('glIsTransformFeedback');
3861
   glPauseTransformFeedback := GLGetProcAddress('glPauseTransformFeedback');
3862
   glResumeTransformFeedback := GLGetProcAddress('glResumeTransformFeedback');
3863
   glDrawTransformFeedback := GLGetProcAddress('glDrawTransformFeedback');
3864

3865
   // GL_ARB_transform_feedback3 (ARB # 94)
3866
   glDrawTransformFeedbackStream := GLGetProcAddress('glDrawTransformFeedbackStream');
3867
   glBeginQueryIndexed := GLGetProcAddress('glBeginQueryIndexed');
3868
   glEndQueryIndexed := GLGetProcAddress('glEndQueryIndexed');
3869
   glGetQueryIndexediv := GLGetProcAddress('glGetQueryIndexediv');
3870

3871
  // GL_ARB_ES2_compatibility (ARB #95)
3872
   glReleaseShaderCompiler := GLGetProcAddress('glReleaseShaderCompiler');
3873
   glShaderBinary := GLGetProcAddress('glShaderBinary');
3874
   glGetShaderPrecisionFormat := GLGetProcAddress('glGetShaderPrecisionFormat');
3875
   glDepthRangef := GLGetProcAddress('glDepthRangef');
3876
   glClearDepthf := GLGetProcAddress('glClearDepthf');
3877

3878
   // GL_ARB_get_program_binary (ARB #96)
3879
   glGetProgramBinary := GLGetProcAddress('glGetProgramBinary');
3880
   glProgramBinary := GLGetProcAddress('glProgramBinary');
3881
   glProgramParameteri := GLGetProcAddress('glProgramParameteri');
3882

3883
   // GL_ARB_separate_shader_objects (ARB #97)
3884
   glUseProgramStages := GLGetProcAddress('glUseProgramStages');
3885
   glActiveShaderProgram := GLGetProcAddress('glActiveShaderProgram');
3886
   glCreateShaderProgramv := GLGetProcAddress('glCreateShaderProgramv');
3887
   glBindProgramPipeline := GLGetProcAddress('glBindProgramPipeline');
3888
   glDeleteProgramPipelines := GLGetProcAddress('glDeleteProgramPipelines');
3889
   glGenProgramPipelines := GLGetProcAddress('glGenProgramPipelines');
3890
   glIsProgramPipeline := GLGetProcAddress('glIsProgramPipeline');
3891
   glGetProgramPipelineiv := GLGetProcAddress('glGetProgramPipelineiv');
3892
   glProgramUniform1i := GLGetProcAddress('glProgramUniform1i');
3893
   glProgramUniform1iv := GLGetProcAddress('glProgramUniform1iv');
3894
   glProgramUniform1f := GLGetProcAddress('glProgramUniform1f');
3895
   glProgramUniform1fv := GLGetProcAddress('glProgramUniform1fv');
3896
   glProgramUniform1d := GLGetProcAddress('glProgramUniform1d');
3897
   glProgramUniform1dv := GLGetProcAddress('glProgramUniform1dv');
3898
   glProgramUniform1ui := GLGetProcAddress('glProgramUniform1ui');
3899
   glProgramUniform1uiv := GLGetProcAddress('glProgramUniform1uiv');
3900
   glProgramUniform2i := GLGetProcAddress('glProgramUniform2i');
3901
   glProgramUniform2iv := GLGetProcAddress('glProgramUniform2iv');
3902
   glProgramUniform2f := GLGetProcAddress('glProgramUniform2f');
3903
   glProgramUniform2fv := GLGetProcAddress('glProgramUniform2fv');
3904
   glProgramUniform2d := GLGetProcAddress('glProgramUniform2d');
3905
   glProgramUniform2dv := GLGetProcAddress('glProgramUniform2dv');
3906
   glProgramUniform2ui := GLGetProcAddress('glProgramUniform2ui');
3907
   glProgramUniform2uiv := GLGetProcAddress('glProgramUniform2uiv');
3908
   glProgramUniform3i := GLGetProcAddress('glProgramUniform3i');
3909
   glProgramUniform3iv := GLGetProcAddress('glProgramUniform3iv');
3910
   glProgramUniform3f := GLGetProcAddress('glProgramUniform3f');
3911
   glProgramUniform3fv := GLGetProcAddress('glProgramUniform3fv');
3912
   glProgramUniform3d := GLGetProcAddress('glProgramUniform3d');
3913
   glProgramUniform3dv := GLGetProcAddress('glProgramUniform3dv');
3914
   glProgramUniform3ui := GLGetProcAddress('glProgramUniform3ui');
3915
   glProgramUniform3uiv := GLGetProcAddress('glProgramUniform3uiv');
3916
   glProgramUniform4i := GLGetProcAddress('glProgramUniform4i');
3917
   glProgramUniform4iv := GLGetProcAddress('glProgramUniform4iv');
3918
   glProgramUniform4f := GLGetProcAddress('glProgramUniform4f');
3919
   glProgramUniform4fv := GLGetProcAddress('glProgramUniform4fv');
3920
   glProgramUniform4d := GLGetProcAddress('glProgramUniform4d');
3921
   glProgramUniform4dv := GLGetProcAddress('glProgramUniform4dv');
3922
   glProgramUniform4ui := GLGetProcAddress('glProgramUniform4ui');
3923
   glProgramUniform4uiv := GLGetProcAddress('glProgramUniform4uiv');
3924
   glProgramUniformMatrix2fv := GLGetProcAddress('glProgramUniformMatrix2fv');
3925
   glProgramUniformMatrix3fv := GLGetProcAddress('glProgramUniformMatrix3fv');
3926
   glProgramUniformMatrix4fv := GLGetProcAddress('glProgramUniformMatrix4fv');
3927
   glProgramUniformMatrix2dv := GLGetProcAddress('glProgramUniformMatrix2dv');
3928
   glProgramUniformMatrix3dv := GLGetProcAddress('glProgramUniformMatrix3dv');
3929
   glProgramUniformMatrix4dv := GLGetProcAddress('glProgramUniformMatrix4dv');
3930
   glProgramUniformMatrix2x3fv := GLGetProcAddress('glProgramUniformMatrix2x3fv');
3931
   glProgramUniformMatrix3x2fv := GLGetProcAddress('glProgramUniformMatrix3x2fv');
3932
   glProgramUniformMatrix2x4fv := GLGetProcAddress('glProgramUniformMatrix2x4fv');
3933
   glProgramUniformMatrix4x2fv := GLGetProcAddress('glProgramUniformMatrix4x2fv');
3934
   glProgramUniformMatrix3x4fv := GLGetProcAddress('glProgramUniformMatrix3x4fv');
3935
   glProgramUniformMatrix4x3fv := GLGetProcAddress('glProgramUniformMatrix4x3fv');
3936
   glProgramUniformMatrix2x3dv := GLGetProcAddress('glProgramUniformMatrix2x3dv');
3937
   glProgramUniformMatrix3x2dv := GLGetProcAddress('glProgramUniformMatrix3x2dv');
3938
   glProgramUniformMatrix2x4dv := GLGetProcAddress('glProgramUniformMatrix2x4dv');
3939
   glProgramUniformMatrix4x2dv := GLGetProcAddress('glProgramUniformMatrix4x2dv');
3940
   glProgramUniformMatrix3x4dv := GLGetProcAddress('glProgramUniformMatrix3x4dv');
3941
   glProgramUniformMatrix4x3dv := GLGetProcAddress('glProgramUniformMatrix4x3dv');
3942
   glValidateProgramPipeline := GLGetProcAddress('glValidateProgramPipeline');
3943
   glGetProgramPipelineInfoLog := GLGetProcAddress('glGetProgramPipelineInfoLog');
3944

3945
   // GL_ARB_shader_precision (ARB #98)
3946
   // (no entry points)
3947

3948
   // GL_ARB_vertex_attrib_64bit (ARB #99)
3949
   glVertexAttribL1d := GLGetProcAddress('glVertexAttribL1d');
3950
   glVertexAttribL2d := GLGetProcAddress('glVertexAttribL2d');
3951
   glVertexAttribL3d := GLGetProcAddress('glVertexAttribL3d');
3952
   glVertexAttribL4d := GLGetProcAddress('glVertexAttribL4d');
3953
   glVertexAttribL1dv := GLGetProcAddress('glVertexAttribL1dv');
3954
   glVertexAttribL2dv := GLGetProcAddress('glVertexAttribL2dv');
3955
   glVertexAttribL3dv := GLGetProcAddress('glVertexAttribL3dv');
3956
   glVertexAttribL4dv := GLGetProcAddress('glVertexAttribL4dv');
3957
   glVertexAttribLPointer := GLGetProcAddress('glVertexAttribLPointer');
3958
   glGetVertexAttribLdv := GLGetProcAddress('glGetVertexAttribLdv');
3959
   // glVertexArrayVertexAttribLOffsetEXT is only valid if EXT_direct_state_access is available
3960
   glVertexArrayVertexAttribLOffsetEXT := GLGetProcAddress('glVertexArrayVertexAttribLOffsetEXT');
3961

3962
   // GL_ARB_viewport_array (ARB #100)
3963
   glViewportArrayv := GLGetProcAddress('glViewportArrayv');
3964
   glViewportIndexedf := GLGetProcAddress('glViewportIndexedf');
3965
   glViewportIndexedfv := GLGetProcAddress('glViewportIndexedfv');
3966
   glScissorArrayv := GLGetProcAddress('glScissorArrayv');
3967
   glScissorIndexed := GLGetProcAddress('glScissorIndexed');
3968
   glScissorIndexedv := GLGetProcAddress('glScissorIndexedv');
3969
   glDepthRangeArrayv := GLGetProcAddress('glDepthRangeArrayv');
3970
   glDepthRangeIndexed := GLGetProcAddress('glDepthRangeIndexed');
3971
   glGetFloati_v := GLGetProcAddress('glGetFloati_v');
3972
   glGetDoublei_v := GLGetProcAddress('glGetDoublei_v');
3973

3974
   // GL_ARB_debug_output (ARB #104)
3975
   glDebugMessageControlARB := GLGetProcAddress('glDebugMessageControlARB');
3976
   glDebugMessageInsertARB := GLGetProcAddress('glDebugMessageInsertARB');
3977
   glDebugMessageCallbackARB := GLGetProcAddress('glDebugMessageCallbackARB');
3978
   glGetDebugMessageLogARB := GLGetProcAddress('glGetDebugMessageLogARB');
3979

3980
   // GL_ARB_robustness (ARB #105)
3981
   glGetGraphicsResetStatusARB := GLGetProcAddress('glGetGraphicsResetStatusARB');
3982
   glGetnMapdvARB := GLGetProcAddress('glGetnMapdvARB');
3983
   glGetnMapfvARB := GLGetProcAddress('glGetnMapfvARB');
3984
   glGetnMapivARB := GLGetProcAddress('glGetnMapivARB');
3985
   glGetnPixelMapfvARB := GLGetProcAddress('glGetnPixelMapfvARB');
3986
   glGetnPixelMapuivARB := GLGetProcAddress('glGetnPixelMapuivARB');
3987
   glGetnPixelMapusvARB := GLGetProcAddress('glGetnPixelMapusvARB');
3988
   glGetnPolygonStippleARB := GLGetProcAddress('glGetnPolygonStippleARB');
3989
   glGetnColorTableARB := GLGetProcAddress('glGetnColorTableARB');
3990
   glGetnConvolutionFilterARB := GLGetProcAddress('glGetnConvolutionFilterARB');
3991
   glGetnSeparableFilterARB := GLGetProcAddress('glGetnSeparableFilterARB');
3992
   glGetnHistogramARB := GLGetProcAddress('glGetnHistogramARB');
3993
   glGetnMinmaxARB := GLGetProcAddress('glGetnMinmaxARB');
3994
   glGetnTexImageARB := GLGetProcAddress('glGetnTexImageARB');
3995
   glReadnPixelsARB := GLGetProcAddress('glReadnPixelsARB');
3996
   glGetnCompressedTexImageARB := GLGetProcAddress('glGetnCompressedTexImageARB');
3997
   glGetnUniformfvARB := GLGetProcAddress('glGetnUniformfvARB');
3998
   glGetnUniformivARB := GLGetProcAddress('glGetnUniformivARB');
3999
   glGetnUniformuivARB := GLGetProcAddress('glGetnUniformuivARB');
4000
   glGetnUniformdvARB := GLGetProcAddress('glGetnUniformdvARB');
4001

4002
{$IFDEF GLS_REGIONS} {$endregion} {$ENDIF}
4003

4004
{$IFDEF GLS_REGIONS}  {$region 'locate functions/procedures for Vendor/EXT extensions'} {$ENDIF}
4005

4006
   //  ###########################################################
4007
   //            locate functions and procedures for
4008
   //                   Vendor/EXT extensions
4009
   //  ###########################################################
4010

4011
   // functions/procedures belonging to unknown extensions
4012
   glSamplePassARB := GLGetProcAddress('glSamplePassARB');
4013
   glArrayElementArrayEXT := GLGetProcAddress('glArrayElementArrayEXT');
4014

4015
   // WIN_swap_hint (extension # not found)
4016
   glAddSwapHintRectWIN := GLGetProcAddress('glAddSwapHintRectWIN');
4017

4018
   // GL_EXT_blend_color (#2)
4019
   glBlendColorEXT := GLGetProcAddress('glBlendColorEXT');
4020

4021
   // GL_EXT_polygon_offset (#3)
4022
   glPolygonOffsetEXT := GLGetProcAddress('glPolygonOffsetEXT');
4023

4024
   // GL_EXT_texture3D (#6)
4025
   glTexImage3DEXT := GLGetProcAddress('glTexImage3DEXT');
4026

4027
   // GL_EXT_subtexture (#9)
4028
   glTexSubImage1dEXT := GLGetProcAddress('glTexSubImage1DEXT');
4029
   glTexSubImage2dEXT := GLGetProcAddress('glTexSubImage2DEXT');
4030
   glTexSubImage3dEXT := GLGetProcAddress('glTexSubImage3DEXT');
4031

4032
   // GL_EXT_copy_texture (#10)
4033
   glCopyTexImage1DEXT := GLGetProcAddress('glCopyTexImage1DEXT');
4034
   glCopyTexImage2DEXT := GLGetProcAddress('glCopyTexImage2DEXT');
4035
   glCopyTexSubImage1DEXT := GLGetProcAddress('glCopyTexSubImage1DEXT');
4036
   glCopyTexSubImage2DEXT := GLGetProcAddress('glCopyTexSubImage2DEXT');
4037
   glCopyTexSubImage3DEXT := GLGetProcAddress('glCopyTexSubImage3DEXT');
4038

4039
   // GL_EXT_texture_object (#20)
4040
   glGenTexturesEXT := GLGetProcAddress('glGenTexturesEXT');
4041
   glDeleteTexturesEXT := GLGetProcAddress('glDeleteTexturesEXT');
4042
   glBindTextureEXT := GLGetProcAddress('glBindTextureEXT');
4043
   glPrioritizeTexturesEXT := GLGetProcAddress('glPrioritizeTexturesEXT');
4044
   glAreTexturesResidentEXT := GLGetProcAddress('glAreTexturesResidentEXT');
4045
   glIsTextureEXT := GLGetProcAddress('glIsTextureEXT');
4046

4047
   // GL_SGIS_multisample (#25)
4048
   glSampleMaskSGIS := GLGetProcAddress('glSampleMaskSGIS');
4049
   glSamplePatternSGIS := GLGetProcAddress('glSamplePatternSGIS');
4050

4051
   // GL_EXT_blend_minmax (#37)
4052
   glBlendEquationEXT := GLGetProcAddress('glBlendEquationEXT');
4053

4054
   // GL_EXT_paletted_texture (#78)
4055
   glColorTableEXT := GLGetProcAddress('glColorTableEXT');
4056
   glColorSubTableEXT := GLGetProcAddress('glColorSubTableEXT');
4057
   glGetColorTableEXT := GLGetProcAddress('glGetColorTableEXT');
4058
   glGetColorTableParameterivEXT := GLGetProcAddress('glGetColorTableParameterivEXT');
4059
   glGetColorTableParameterfvEXT := GLGetProcAddress('glGetColorTableParameterfvEXT');
4060

4061
   // GL_EXT_index_material (#94)
4062
   glIndexMaterialEXT := GLGetProcAddress('glIndexMaterialEXT');
4063

4064
   // GL_EXT_index_func (#95)
4065
   glIndexFuncEXT := GLGetProcAddress('glIndexFuncEXT');
4066

4067
   // EXT_compiled_vertex_array (#97)
4068
   glLockArraysEXT := GLGetProcAddress('glLockArraysEXT');
4069
   glUnlockArraysEXT := GLGetProcAddress('glUnlockArraysEXT');
4070
   
4071
   // GL_EXT_draw_range_elements (#112)
4072
   glDrawRangeElementsEXT := GLGetProcAddress('glDrawRangeElementsEXT');
4073

4074
   // GL_EXT_secondary_color (#145)
4075
   glSecondaryColor3bEXT := GLGetProcAddress('glSecondaryColor3bEXT');
4076
   glSecondaryColor3bvEXT := GLGetProcAddress('glSecondaryColor3bvEXT');
4077
   glSecondaryColor3dEXT := GLGetProcAddress('glSecondaryColor3dEXT');
4078
   glSecondaryColor3dvEXT := GLGetProcAddress('glSecondaryColor3dvEXT');
4079
   glSecondaryColor3fEXT := GLGetProcAddress('glSecondaryColor3fEXT');
4080
   glSecondaryColor3fvEXT := GLGetProcAddress('glSecondaryColor3fvEXT');
4081
   glSecondaryColor3iEXT := GLGetProcAddress('glSecondaryColor3iEXT');
4082
   glSecondaryColor3ivEXT := GLGetProcAddress('glSecondaryColor3ivEXT');
4083
   glSecondaryColor3sEXT := GLGetProcAddress('glSecondaryColor3sEXT');
4084
   glSecondaryColor3svEXT := GLGetProcAddress('glSecondaryColor3svEXT');
4085
   glSecondaryColor3ubEXT := GLGetProcAddress('glSecondaryColor3ubEXT');
4086
   glSecondaryColor3ubvEXT := GLGetProcAddress('glSecondaryColor3ubvEXT');
4087
   glSecondaryColor3uiEXT := GLGetProcAddress('glSecondaryColor3uiEXT');
4088
   glSecondaryColor3uivEXT := GLGetProcAddress('glSecondaryColor3uivEXT');
4089
   glSecondaryColor3usEXT := GLGetProcAddress('glSecondaryColor3usEXT');
4090
   glSecondaryColor3usvEXT := GLGetProcAddress('glSecondaryColor3usvEXT');
4091
   glSecondaryColorPointerEXT := GLGetProcAddress('glSecondaryColorPointerEXT');
4092

4093
   // GL_EXT_multi_draw_arrays (#148)
4094
   glMultiDrawArraysEXT := GLGetProcAddress('glMultiDrawArraysEXT');
4095
   glMultiDrawElementsEXT := GLGetProcAddress('glMultiDrawElementsEXT');
4096

4097
   // GL_EXT_fog_coord (#149)
4098
   glFogCoordfEXT := GLGetProcAddress('glFogCoordfEXT'); 
4099
   glFogCoordfvEXT := GLGetProcAddress('glFogCoordfvEXT'); 
4100
   glFogCoorddEXT := GLGetProcAddress('glFogCoorddEXT');
4101
   glFogCoorddvEXT := GLGetProcAddress('glFogCoorddvEXT'); 
4102
   glFogCoordPointerEXT := GLGetProcAddress('glFogCoordPointerEXT'); 
4103

4104
   // GL_EXT_blend_func_separate (#173)
4105
   glBlendFuncSeparateEXT := GLGetProcAddress('glBlendFuncSeparateEXT');
4106

4107
   // GL_NV_vertex_array_range (#190)
4108
   glFlushVertexArrayRangeNV := GLGetProcAddress('glFlushVertexArrayRangeNV'); 
4109
   glVertexArrayRangeNV := GLGetProcAddress('glVertexArrayRangeNV');
4110
   wglAllocateMemoryNV := GLGetProcAddress('wglAllocateMemoryNV'); 
4111
   wglFreeMemoryNV := GLGetProcAddress('wglFreeMemoryNV'); 
4112

4113
   // GL_NV_register_combiners (#191)
4114
   glCombinerParameterfvNV := GLGetProcAddress('glCombinerParameterfvNV'); 
4115
   glCombinerParameterfNV := GLGetProcAddress('glCombinerParameterfNV');
4116
   glCombinerParameterivNV := GLGetProcAddress('glCombinerParameterivNV'); 
4117
   glCombinerParameteriNV := GLGetProcAddress('glCombinerParameteriNV'); 
4118
   glCombinerInputNV := GLGetProcAddress('glCombinerInputNV');
4119
   glCombinerOutputNV := GLGetProcAddress('glCombinerOutputNV'); 
4120
   glFinalCombinerInputNV := GLGetProcAddress('glFinalCombinerInputNV');
4121
   glGetCombinerInputParameterfvNV := GLGetProcAddress('glGetCombinerInputParameterfvNV');
4122
   glGetCombinerInputParameterivNV := GLGetProcAddress('glGetCombinerInputParameterivNV'); 
4123
   glGetCombinerOutputParameterfvNV := GLGetProcAddress('glGetCombinerOutputParameterfvNV');
4124
   glGetCombinerOutputParameterivNV := GLGetProcAddress('glGetCombinerOutputParameterivNV');
4125
   glGetFinalCombinerInputParameterfvNV := GLGetProcAddress('glGetFinalCombinerInputParameterfvNV'); 
4126
   glGetFinalCombinerInputParameterivNV := GLGetProcAddress('glGetFinalCombinerInputParameterivNV');
4127

4128
   // GL_MESA_resize_buffers (#196)
4129
   glResizeBuffersMESA := GLGetProcAddress('glResizeBuffersMESA');
4130

4131
   // GL_3DFX_tbuffer (#208)
4132
   glTbufferMask3DFX := GLGetProcAddress('glTbufferMask3DFX');
4133

4134
   // GL_EXT_multisample (#209)
4135
   glSampleMaskEXT := GLGetProcAddress('glSampleMaskEXT');
4136
   glSamplePatternEXT := GLGetProcAddress('glSamplePatternEXT');
4137

4138
   // GL_SGIS_texture_color_mask (#214)
4139
   glTextureColorMaskSGIS := GLGetProcAddress('glTextureColorMaskSGIS');
4140

4141
   // GL_NV_fence (#222)
4142
   glGenFencesNV := GLGetProcAddress('glGenFencesNV');
4143
   glDeleteFencesNV := GLGetProcAddress('glDeleteFencesNV');
4144
   glSetFenceNV := GLGetProcAddress('glSetFenceNV');
4145
   glTestFenceNV := GLGetProcAddress('glTestFenceNV');
4146
   glFinishFenceNV := GLGetProcAddress('glFinishFenceNV');
4147
   glIsFenceNV := GLGetProcAddress('glIsFenceNV');
4148
   glGetFenceivNV := GLGetProcAddress('glGetFenceivNV');
4149

4150
   // GL_NV_vertex_program (#233)
4151
   glAreProgramsResidentNV := GLGetProcAddress('glAreProgramsResidentNV');
4152
   glBindProgramNV := GLGetProcAddress('glBindProgramNV');
4153
   glDeleteProgramsNV := GLGetProcAddress('glDeleteProgramsNV');
4154
   glExecuteProgramNV := GLGetProcAddress('glExecuteProgramNV');
4155
   glGenProgramsNV := GLGetProcAddress('glGenProgramsNV');
4156
   glGetProgramParameterdvNV := GLGetProcAddress('glGetProgramParameterdvNV');
4157
   glGetProgramParameterfvNV := GLGetProcAddress('glGetProgramParameterfvNV');
4158
   glGetProgramivNV := GLGetProcAddress('glGetProgramivNV');
4159
   glGetProgramStringNV := GLGetProcAddress('glGetProgramStringNV');
4160
   glGetTrackMatrixivNV := GLGetProcAddress('glGetTrackMatrixivNV');
4161
   glGetVertexAttribdvNV:= GLGetProcAddress('glGetVertexAttribdvNV');
4162
   glGetVertexAttribfvNV:= GLGetProcAddress('glGetVertexAttribfvNV');
4163
   glGetVertexAttribivNV:= GLGetProcAddress('glGetVertexAttribivNV');
4164
   glGetVertexAttribPointervNV := GLGetProcAddress ('glGetVertexAttribPointervNV');
4165
   glIsProgramNV := GLGetProcAddress('glIsProgramNV');
4166
   glLoadProgramNV := GLGetProcAddress('glLoadProgramNV');
4167
   glProgramParameter4dNV := GLGetProcAddress('glProgramParameter4dNV');
4168
   glProgramParameter4dvNV := GLGetProcAddress('glProgramParameter4dvNV');
4169
   glProgramParameter4fNV := GLGetProcAddress('glProgramParameter4fNV');
4170
   glProgramParameter4fvNV := GLGetProcAddress('glProgramParameter4fvNV');
4171
   glProgramParameters4dvNV := GLGetProcAddress ('glProgramParameters4dvNV');
4172
   glProgramParameters4fvNV := GLGetProcAddress ('glProgramParameters4fvNV');
4173
   glRequestResidentProgramsNV := GLGetProcAddress ('glRequestResidentProgramsNV');
4174
   glTrackMatrixNV := GLGetProcAddress('glTrackMatrixNV');
4175
   glVertexAttribPointerNV := GLGetProcAddress('glVertexAttribPointerNV');
4176
   glVertexAttrib1dNV := GLGetProcAddress('glVertexAttrib1dNV');
4177
   glVertexAttrib1dvNV := GLGetProcAddress('glVertexAttrib1dvNV');
4178
   glVertexAttrib1fNV := GLGetProcAddress('glVertexAttrib1fNV');
4179
   glVertexAttrib1fvNV := GLGetProcAddress('glVertexAttrib1fvNV');
4180
   glVertexAttrib1sNV := GLGetProcAddress('glVertexAttrib1sNV');
4181
   glVertexAttrib1svNV := GLGetProcAddress('glVertexAttrib1svNV');
4182
   glVertexAttrib2dNV := GLGetProcAddress('glVertexAttrib2dNV');
4183
   glVertexAttrib2dvNV := GLGetProcAddress('glVertexAttrib2dvNV');
4184
   glVertexAttrib2fNV := GLGetProcAddress('glVertexAttrib2fNV');
4185
   glVertexAttrib2fvNV := GLGetProcAddress('glVertexAttrib2fvNV');
4186
   glVertexAttrib2sNV := GLGetProcAddress('glVertexAttrib2sNV');
4187
   glVertexAttrib2svNV := GLGetProcAddress('glVertexAttrib2svNV');
4188
   glVertexAttrib3dNV := GLGetProcAddress('glVertexAttrib3dNV');
4189
   glVertexAttrib3dvNV := GLGetProcAddress('glVertexAttrib3dvNV');
4190
   glVertexAttrib3fNV := GLGetProcAddress('glVertexAttrib3fNV');
4191
   glVertexAttrib3fvNV := GLGetProcAddress('glVertexAttrib3fvNV');
4192
   glVertexAttrib3sNV := GLGetProcAddress('glVertexAttrib3sNV');
4193
   glVertexAttrib3svNV := GLGetProcAddress('glVertexAttrib3svNV');
4194
   glVertexAttrib4dNV := GLGetProcAddress('glVertexAttrib4dNV');
4195
   glVertexAttrib4dvNV := GLGetProcAddress('glVertexAttrib4dvNV');
4196
   glVertexAttrib4fNV := GLGetProcAddress('glVertexAttrib4fNV');
4197
   glVertexAttrib4fvNV := GLGetProcAddress('glVertexAttrib4fvNV');
4198
   glVertexAttrib4sNV := GLGetProcAddress('glVertexAttrib4sNV');
4199
   glVertexAttrib4svNV := GLGetProcAddress('glVertexAttrib4svNV');
4200
   glVertexAttrib4ubvNV := GLGetProcAddress('glVertexAttrib4ubvNV');
4201
   glVertexAttribs1dvNV := GLGetProcAddress('glVertexAttribs1dvNV');
4202
   glVertexAttribs1fvNV := GLGetProcAddress('glVertexAttribs1fvNV');
4203
   glVertexAttribs1svNV := GLGetProcAddress('glVertexAttribs1svNV');
4204
   glVertexAttribs2dvNV := GLGetProcAddress('glVertexAttribs2dvNV');
4205
   glVertexAttribs2fvNV := GLGetProcAddress('glVertexAttribs2fvNV');
4206
   glVertexAttribs2svNV := GLGetProcAddress('glVertexAttribs2svNV');
4207
   glVertexAttribs3dvNV := GLGetProcAddress('glVertexAttribs3dvNV');
4208
   glVertexAttribs3fvNV := GLGetProcAddress('glVertexAttribs3fvNV');
4209
   glVertexAttribs3svNV := GLGetProcAddress('glVertexAttribs3svNV');
4210
   glVertexAttribs4dvNV := GLGetProcAddress('glVertexAttribs4dvNV');
4211
   glVertexAttribs4fvNV := GLGetProcAddress('glVertexAttribs4fvNV');
4212
   glVertexAttribs4svNV := GLGetProcAddress('glVertexAttribs4svNV');
4213
   glVertexAttribs4ubvNV := GLGetProcAddress('glVertexAttribs4ubvN');
4214

4215
   // GL_NV_occlusion_query (#261)
4216
   glGenOcclusionQueriesNV := GLGetProcAddress('glGenOcclusionQueriesNV');
4217
   glDeleteOcclusionQueriesNV := GLGetProcAddress('glDeleteOcclusionQueriesNV');
4218
   glIsOcclusionQueryNV := GLGetProcAddress('glIsOcclusionQueryNV');
4219
   glBeginOcclusionQueryNV := GLGetProcAddress('glBeginOcclusionQueryNV');
4220
   glEndOcclusionQueryNV := GLGetProcAddress('glEndOcclusionQueryNV');
4221
   glGetOcclusionQueryivNV := GLGetProcAddress('glGetOcclusionQueryivNV');
4222
   glGetOcclusionQueryuivNV := GLGetProcAddress('glGetOcclusionQueryuivNV');
4223

4224
   // GL_NV_point_sprite (#262)
4225
   glPointParameteriNV := GLGetProcAddress('glPointParameteriNV');
4226
   glPointParameterivNV := GLGetProcAddress('glPointParameterivNV');
4227

4228
   // GL_EXT_stencil_two_side (#268)
4229
   glActiveStencilFaceEXT := GLGetProcAddress('glActiveStencilFaceEXT');
4230

4231
   // GL_ATI_draw_buffers (#277)
4232
   glDrawBuffersATI := GLGetProcAddress('glDrawBuffersATI');
4233

4234
   // GL_NV_primitive_restart (#285)
4235
   glPrimitiveRestartNV := GLGetProcAddress('glPrimitiveRestartNV');
4236
   glPrimitiveRestartIndexNV := GLGetProcAddress('glPrimitiveRestartIndexNV');
4237
   glPrimitiveRestartIndex := GLGetProcAddress('glPrimitiveRestartIndex');
4238
   if Addr(glPrimitiveRestartIndex) = nil then
4239
    glPrimitiveRestartIndex := glPrimitiveRestartIndexNV;
4240

4241
   // GL_EXT_depth_bounds_test (#297)
4242
   glDepthBoundsEXT := GLGetProcAddress('glDepthBoundsEXT');
4243

4244
   // GL_EXT_blend_equation_separate (#299)
4245
   glBlendEquationSeparateEXT := GLGetProcAddress('glBlendEquationSeparateEXT');
4246

4247
   // GL_EXT_framebuffer_object (#310)
4248
   glIsRenderbufferEXT := GLGetProcAddress('glIsRenderbufferEXT');
4249
   glBindRenderbufferEXT := GLGetProcAddress('glBindRenderbufferEXT');
4250
   glDeleteRenderbuffersEXT := GLGetProcAddress('glDeleteRenderbuffersEXT');
4251
   glGenRenderbuffersEXT := GLGetProcAddress('glGenRenderbuffersEXT');
4252
   glRenderbufferStorageEXT := GLGetProcAddress('glRenderbufferStorageEXT');
4253
   glGetRenderbufferParameterivEXT := GLGetProcAddress('glGetRenderbufferParameterivEXT');
4254
   glIsFramebufferEXT := GLGetProcAddress('glIsFramebufferEXT');
4255
   glBindFramebufferEXT := GLGetProcAddress('glBindFramebufferEXT');
4256
   glDeleteFramebuffersEXT := GLGetProcAddress('glDeleteFramebuffersEXT');
4257
   glGenFramebuffersEXT := GLGetProcAddress('glGenFramebuffersEXT');
4258
   glCheckFramebufferStatusEXT := GLGetProcAddress('glCheckFramebufferStatusEXT');
4259
   glFramebufferTexture1DEXT := GLGetProcAddress('glFramebufferTexture1DEXT');
4260
   glFramebufferTexture2DEXT := GLGetProcAddress('glFramebufferTexture2DEXT');
4261
   glFramebufferTexture3DEXT := GLGetProcAddress('glFramebufferTexture3DEXT');
4262
   glFramebufferRenderbufferEXT := GLGetProcAddress('glFramebufferRenderbufferEXT');
4263
   glGetFramebufferAttachmentParameterivEXT := GLGetProcAddress('glGetFramebufferAttachmentParameterivEXT');
4264
   glGenerateMipmapEXT := GLGetProcAddress('glGenerateMipmapEXT');
4265

4266
   // GL_GREMEDY_string_marker (EXT #311)
4267
   glStringMarkerGREMEDY := GLGetProcAddress('glStringMarkerGREMEDY');
4268

4269
   // GL_EXT_stencil_clear_tag (EXT #314)
4270
   glStencilClearTagEXT := GLGetProcAddress('glStencilClearTagEXT');
4271

4272
   // GL_EXT_framebuffer_blit (#316)
4273
   glBlitFramebufferEXT := GLGetProcAddress('glBlitFramebufferEXT');
4274

4275
   // GL_EXT_framebuffer_multisample (#317)
4276
   glRenderbufferStorageMultisampleEXT := GLGetProcAddress('glRenderbufferStorageMultisampleEXT');
4277

4278
   // GL_EXT_timer_query (#319)
4279
   glGetQueryObjecti64vEXT := GLGetProcAddress('glGetQueryObjecti64vEXT');
4280
   glGetQueryObjectui64vEXT := GLGetProcAddress('glGetQueryObjectui64vEXT');
4281

4282
   // GL_EXT_gpu_program_parameters (#320)
4283
   glProgramEnvParameters4fvEXT := GLGetProcAddress('glProgramEnvParameters4fvEXT');
4284
   glProgramLocalParameters4fvEXT := GLGetProcAddress('glProgramLocalParameters4fvEXT');
4285

4286
   // GL_NV_geometry_program4 (#323)
4287
   glProgramVertexLimitNV := GLGetProcAddress('glProgramVertexLimitNV');
4288

4289
   // GL_EXT_geometry_shader4 (#324)
4290
   glProgramParameteriEXT := GLGetProcAddress('glProgramParameteriEXT');
4291
   glFramebufferTextureEXT := GLGetProcAddress('glFramebufferTextureEXT');
4292
   glFramebufferTextureLayerEXT := GLGetProcAddress('glFramebufferTextureLayerEXT');
4293
   glFramebufferTextureFaceEXT := GLGetProcAddress('glFramebufferTextureFaceEXT');
4294

4295
   // GL_EXT_gpu_shader4 (#326)
4296
   glVertexAttribI1iEXT := GLGetProcAddress('glVertexAttribI1iEXT');
4297
   glVertexAttribI2iEXT := GLGetProcAddress('glVertexAttribI2iEXT');
4298
   glVertexAttribI3iEXT := GLGetProcAddress('glVertexAttribI3iEXT');
4299
   glVertexAttribI4iEXT := GLGetProcAddress('glVertexAttribI4iEXT');
4300

4301
   glVertexAttribI1uiEXT := GLGetProcAddress('glVertexAttribI1uiEXT');
4302
   glVertexAttribI2uiEXT := GLGetProcAddress('glVertexAttribI2uiEXT');
4303
   glVertexAttribI3uiEXT := GLGetProcAddress('glVertexAttribI3uiEXT');
4304
   glVertexAttribI4uiEXT := GLGetProcAddress('glVertexAttribI4uiEXT');
4305

4306
   glVertexAttribI1ivEXT := GLGetProcAddress('glVertexAttribI1ivEXT');
4307
   glVertexAttribI2ivEXT := GLGetProcAddress('glVertexAttribI2ivEXT');
4308
   glVertexAttribI3ivEXT := GLGetProcAddress('glVertexAttribI3ivEXT');
4309
   glVertexAttribI4ivEXT := GLGetProcAddress('glVertexAttribI4ivEXT');
4310

4311
   glVertexAttribI1uivEXT := GLGetProcAddress('glVertexAttribI1uivEXT');
4312
   glVertexAttribI2uivEXT := GLGetProcAddress('glVertexAttribI2uivEXT');
4313
   glVertexAttribI3uivEXT := GLGetProcAddress('glVertexAttribI3uivEXT');
4314
   glVertexAttribI4uivEXT := GLGetProcAddress('glVertexAttribI4uivEXT');
4315

4316
   glVertexAttribI4bvEXT := GLGetProcAddress('glVertexAttribI4bvEXT');
4317
   glVertexAttribI4svEXT := GLGetProcAddress('glVertexAttribI4svEXT');
4318
   glVertexAttribI4ubvEXT := GLGetProcAddress('glVertexAttribI4ubvEXT');
4319
   glVertexAttribI4usvEXT := GLGetProcAddress('glVertexAttribI4usvEXT');
4320

4321
   glVertexAttribIPointerEXT := GLGetProcAddress('glVertexAttribIPointerEXT');
4322

4323
   glGetVertexAttribIivEXT := GLGetProcAddress('glGetVertexAttribIivEXT');
4324
   glGetVertexAttribIuivEXT := GLGetProcAddress('glGetVertexAttribIuivEXT');
4325

4326
   glUniform1uiEXT := GLGetProcAddress('glUniform1uiEXT');
4327
   glUniform2uiEXT := GLGetProcAddress('glUniform2uiEXT');
4328
   glUniform3uiEXT := GLGetProcAddress('glUniform3uiEXT');
4329
   glUniform4uiEXT := GLGetProcAddress('glUniform4uiEXT');
4330

4331
   glUniform1uivEXT := GLGetProcAddress('glUniform1uivEXT');
4332
   glUniform2uivEXT := GLGetProcAddress('glUniform2uivEXT');
4333
   glUniform3uivEXT := GLGetProcAddress('glUniform3uivEXT');
4334
   glUniform4uivEXT := GLGetProcAddress('glUniform4uivEXT');
4335

4336
   glGetUniformuivEXT := GLGetProcAddress('glGetUniformuivEXT');
4337

4338
   glBindFragDataLocationEXT := GLGetProcAddress('glBindFragDataLocationEXT');
4339
   glGetFragDataLocationEXT := GLGetProcAddress('glGetFragDataLocationEXT');
4340

4341
   // GL_EXT_draw_instanced (#327)
4342
   glDrawArraysInstancedEXT := GLGetProcAddress('glDrawArraysInstancedEXT');
4343
   glDrawElementsInstancedEXT := GLGetProcAddress('glDrawElementsInstancedEXT');
4344

4345
   // GL_EXT_texture_array (#329)
4346
//   glFramebufferTextureLayerEXT:= GLGetProcAddress('glFramebufferTextureLayerEXT');
4347

4348
   // GL_EXT_texture_buffer_object (#330)
4349
   glTexBufferEXT := GLGetProcAddress('glTexBufferEXT');
4350

4351
   // GL_EXT_draw_buffers2 (#340)
4352
   glColorMaskIndexedEXT := GLGetProcAddress('glColorMaskIndexedEXT');
4353
   glGetBooleanIndexedvEXT := GLGetProcAddress('glGetBooleanIndexedvEXT');
4354
   glGetIntegerIndexedvEXT:= GLGetProcAddress('glGetIntegerIndexedvEXT');
4355
   glEnableIndexedEXT:= GLGetProcAddress('glEnableIndexedEXT');
4356
   glDisableIndexedEXT:= GLGetProcAddress('glDisableIndexedEXT');
4357
   glIsEnabledIndexedEXT:= GLGetProcAddress('glIsEnabledIndexedEXT');
4358

4359
   // GL_NV_transform_feedback (#341)
4360
   glBindBufferRangeNV := GLGetProcAddress('glBindBufferRangeNV');
4361
   glBindBufferOffsetNV := GLGetProcAddress('glBindBufferOffsetNV');
4362
   glBindBufferBaseNV := GLGetProcAddress('glBindBufferBaseNV');
4363
   glTransformFeedbackAttribsNV := GLGetProcAddress('glTransformFeedbackAttribsNV');
4364
   glTransformFeedbackVaryingsNV := GLGetProcAddress('glTransformFeedbackVaryingsNV');
4365
   glBeginTransformFeedbackNV := GLGetProcAddress('glBeginTransformFeedbackNV');
4366
   glEndTransformFeedbackNV := GLGetProcAddress('glEndTransformFeedbackNV');
4367
   glGetVaryingLocationNV := GLGetProcAddress('glGetVaryingLocationNV');
4368
   glGetActiveVaryingNV := GLGetProcAddress('glGetActiveVaryingNV');
4369
   glActiveVaryingNV := GLGetProcAddress('glActiveVaryingNV');
4370
   glGetTransformFeedbackVaryingNV := GLGetProcAddress('glGetTransformFeedbackVaryingNV');
4371

4372
   // GL_EXT_bindable_uniform (#342)
4373
   glUniformBufferEXT := GLGetProcAddress('glUniformBufferEXT');
4374
   glGetUniformBufferSizeEXT := GLGetProcAddress('glGetUniformBufferSizeEXT');
4375
   glGetUniformOffsetEXT := GLGetProcAddress('glGetUniformOffsetEXT');
4376

4377
   // GL_EXT_texture_integer (#343)
4378
   glClearColorIiEXT := GLGetProcAddress('glClearColorIiEXT');
4379
   glClearColorIuiEXT := GLGetProcAddress('glClearColorIuiEXT');
4380
   glTexParameterIivEXT := GLGetProcAddress('glTexParameterIivEXT');
4381
   glTexParameterIuivEXT := GLGetProcAddress('glTexParameterIuivEXT');
4382
   glGetTexParameterIivEXT := GLGetProcAddress('glGetTexParameterIivEXT');
4383
   glGetTexParameterIuivEXT := GLGetProcAddress('glGetTexParameterIuivEXT');
4384

4385
   // GL_GREMEDY_frame_terminator (EXT #345)
4386
   glFrameTerminatorGREMEDY := GLGetProcAddress('glFrameTerminatorGREMEDY');
4387

4388
   // GL_NV_conditional_render (#346)
4389
   glBeginConditionalRenderNV := GLGetProcAddress('glBeginConditionalRenderNV');
4390
   glEndConditionalRenderNV := GLGetProcAddress('glEndConditionalRenderNV');
4391

4392
   // GL_EXT_transform_feedback (#352)
4393
   glBindBufferRangeEXT := GLGetProcAddress('glBindBufferRangeEXT');
4394
   glBindBufferOffsetEXT := GLGetProcAddress('glBindBufferOffsetEXT');
4395
   glBindBufferBaseEXT := GLGetProcAddress('glBindBufferBaseEXT');
4396
   glBeginTransformFeedbackEXT := GLGetProcAddress('glBeginTransformFeedbackEXT');
4397
   glEndTransformFeedbackEXT := GLGetProcAddress('glEndTransformFeedbackEXT');
4398
   glTransformFeedbackVaryingsEXT := GLGetProcAddress('glTransformFeedbackVaryingsEXT');
4399
   glGetTransformFeedbackVaryingEXT:= GLGetProcAddress('glGetTransformFeedbackVaryingEXT');
4400

4401
   // GL_AMD_vertex_shader_tesselator (#363)
4402
   glTessellationFactorAMD := GLGetProcAddress('glTessellationFactorAMD');
4403
   glTessellationModeAMD := GLGetProcAddress('glTessellationModeAMD');
4404

4405
   // GL_NV_copy_image (#376)
4406
   glCopyImageSubDataNV := GLGetProcAddress('glCopyImageSubDataNV');
4407

4408
   // GL_NV_shader_buffer_load (#379)
4409
   glMakeBufferResidentNV := GLGetProcAddress('glMakeBufferResidentNV');
4410
   glMakeBufferNonResidentNV := GLGetProcAddress('glMakeBufferNonResidentNV');
4411
   glIsBufferResidentNV := GLGetProcAddress('glIsBufferResidentNV');
4412
   glMakeNamedBufferResidentNV := GLGetProcAddress('glMakeNamedBufferResidentNV');
4413
   glMakeNamedBufferNonResidentNV := GLGetProcAddress('glMakeNamedBufferNonResidentNV');
4414
   glIsNamedBufferResidentNV := GLGetProcAddress('glIsNamedBufferResidentNV');
4415
   glGetBufferParameterui64vNV := GLGetProcAddress('glGetBufferParameterui64vNV');
4416
   glGetNamedBufferParameterui64vNV := GLGetProcAddress('glGetNamedBufferParameterui64vNV');
4417
   glGetIntegerui64vNV := GLGetProcAddress('glGetIntegerui64vNV');
4418
   glUniformui64NV := GLGetProcAddress('glUniformui64NV');
4419
   glUniformui64vNV := GLGetProcAddress('glUniformui64vNV');
4420
   glGetUniformui64vNV := GLGetProcAddress('glGetUniformui64vNV');
4421
   glProgramUniformui64NV := GLGetProcAddress('glProgramUniformui64NV');
4422
   glProgramUniformui64vNV := GLGetProcAddress('glProgramUniformui64vNV');
4423

4424
   // GL_NV_vertex_buffer_unified_memory (#380)
4425
   glBufferAddressRangeNV := GLGetProcAddress('glBufferAddressRangeNV');
4426
   glVertexFormatNV := GLGetProcAddress('glVertexFormatNV');
4427
   glNormalFormatNV := GLGetProcAddress('glNormalFormatNV');
4428
   glColorFormatNV := GLGetProcAddress('glColorFormatNV');
4429
   glIndexFormatNV := GLGetProcAddress('glIndexFormatNV');
4430
   glTexCoordFormatNV := GLGetProcAddress('glTexCoordFormatNV');
4431
   glEdgeFlagFormatNV := GLGetProcAddress('glEdgeFlagFormatNV');
4432
   glSecondaryColorFormatNV := GLGetProcAddress('glSecondaryColorFormatNV');
4433
   glFogCoordFormatNV := GLGetProcAddress('glFogCoordFormatNV');
4434
   glVertexAttribFormatNV := GLGetProcAddress('glVertexAttribFormatNV');
4435
   glVertexAttribIFormatNV := GLGetProcAddress('glVertexAttribIFormatNV');
4436
   glGetIntegerui64i_vNV := GLGetProcAddress('glGetIntegerui64i_vNV');
4437

4438
{$IFDEF GLS_REGIONS}  {$endregion} {$ENDIF}
4439

4440
{$IFDEF GLS_REGIONS}  {$region 'locate functions/procedures for Windows OpenGL (WGL) extensions'} {$ENDIF}
4441
   {$IFDEF SUPPORT_WGL}
4442
   ReadWGLExtensions;
4443
   {$ENDIF}
4444
{$IFDEF GLS_REGIONS}  {$endregion} {$ENDIF}
4445

4446
{$IFDEF GLS_REGIONS}  {$region 'locate functions/procedures for GLX extensions'} {$ENDIF}
4447
   {$IFDEF SUPPORT_GLX}
4448
   ReadGLXExtensions;
4449
   {$ENDIF}
4450
{$IFDEF GLS_REGIONS}  {$endregion} {$ENDIF}
4451

4452
end;
4453

4454
{$IFDEF SUPPORT_WGL}
4455
// ReadWGLExtensions
4456
//
4457
procedure ReadWGLExtensions;
4458
begin
4459
   // ARB wgl extensions
4460

4461
   //  ###########################################################
4462
   //            locating functions and procedures for
4463
   //                  ARB approved WGL extensions
4464
   //  ###########################################################
4465

4466
   // WGL_buffer_region (ARB #4)
4467
   wglCreateBufferRegionARB := GLGetProcAddress('wglCreateBufferRegionARB');
4468
   wglDeleteBufferRegionARB := GLGetProcAddress('wglDeleteBufferRegionARB');
4469
   wglSaveBufferRegionARB := GLGetProcAddress('wglSaveBufferRegionARB');
4470
   wglRestoreBufferRegionARB := GLGetProcAddress('wglRestoreBufferRegionARB');
4471

4472
   // WGL_ARB_extensions_string (ARB #8)
4473
   wglGetExtensionsStringARB := GLGetProcAddress('wglGetExtensionsStringARB');
4474

4475
   // WGL_ARB_pixel_format (ARB #9)
4476
   wglGetPixelFormatAttribivARB := GLGetProcAddress('wglGetPixelFormatAttribivARB');
4477
   wglGetPixelFormatAttribfvARB := GLGetProcAddress('wglGetPixelFormatAttribfvARB');
4478
   wglChoosePixelFormatARB := GLGetProcAddress('wglChoosePixelFormatARB');
4479

4480
   // WGL_make_current_read (ARB #10)
4481
   wglMakeContextCurrentARB := GLGetProcAddress('wglMakeContextCurrentARB');
4482
   wglGetCurrentReadDCARB := GLGetProcAddress('wglGetCurrentReadDCARB');
4483

4484
   // WGL_ARB_pbuffer (ARB #11)
4485
   wglCreatePbufferARB := GLGetProcAddress('wglCreatePbufferARB');
4486
   wglGetPbufferDCARB := GLGetProcAddress('wglGetPbufferDCARB');
4487
   wglReleasePbufferDCARB := GLGetProcAddress('wglReleasePbufferDCARB');
4488
   wglDestroyPbufferARB := GLGetProcAddress('wglDestroyPbufferARB');
4489
   wglQueryPbufferARB := GLGetProcAddress('wglQueryPbufferARB');
4490

4491
   // WGL_ARB_render_texture (ARB #20)
4492
   wglBindTexImageARB := GLGetProcAddress('wglBindTexImageARB');
4493
   wglReleaseTexImageARB := GLGetProcAddress('wglReleaseTexImageARB');
4494
   wglSetPbufferAttribARB := GLGetProcAddress('wglSetPbufferAttribARB');
4495

4496
   // WGL_ARB_create_context (ARB #55)
4497
   wglCreateContextAttribsARB := GLGetProcAddress('wglCreateContextAttribsARB');
4498

4499
   //  ###########################################################
4500
   //            locating functions and procedures for
4501
   //                Vendor/EXT WGL extensions
4502
   //  ###########################################################
4503

4504
   // WGL_EXT_swap_control (EXT #172)
4505
   wglSwapIntervalEXT := GLGetProcAddress('wglSwapIntervalEXT');
4506
   wglGetSwapIntervalEXT := GLGetProcAddress('wglGetSwapIntervalEXT');
4507

4508
   // WGL_NV_gpu_affinity
4509
   wglEnumGpusNV := GLGetProcAddress('wglEnumGpusNV');
4510
   wglEnumGpuDevicesNV := GLGetProcAddress('wglEnumGpuDevicesNV');
4511
   wglCreateAffinityDCNV := GLGetProcAddress('wglCreateAffinityDCNV');
4512
   wglEnumGpusFromAffinityDCNV := GLGetProcAddress('wglEnumGpusFromAffinityDCNV');
4513
   wglDeleteDCNV := GLGetProcAddress('wglDeleteDCNV');
4514
end;
4515
{$ENDIF}
4516

4517
{$IFDEF SUPPORT_GLX}
4518
// ReadGLXExtensions
4519
//
4520
procedure ReadGLXExtensions;
4521
begin
4522
   // ARB glx extensions
4523

4524
   //  ###########################################################
4525
   //            locating functions and procedures for
4526
   //                  ARB approved GLX extensions
4527
   //  ###########################################################
4528

4529
   //loading first!
4530
   glXGetProcAddress := GLLibGetProcAddress('glXGetProcAddress');
4531
   glXGetProcAddressARB := GLLibGetProcAddress('glXGetProcAddressARB');
4532

4533
   //GLX 1.3 and later
4534
   glXChooseFBConfig := GLGetProcAddress('glXChooseFBConfig');
4535
   glXGetFBConfigAttrib := GLGetProcAddress('glXGetFBConfigAttrib');
4536
   glXGetFBConfigs := GLGetProcAddress('glXGetFBConfigs');
4537
   glXGetVisualFromFBConfig := GLGetProcAddress('glXGetVisualFromFBConfig');
4538
   glXCreateWindow := GLGetProcAddress('glXCreateWindow');
4539
   glXDestroyWindow := GLGetProcAddress('glXDestroyWindow');
4540
   glXCreatePixmap := GLGetProcAddress('glXCreatePixmap');
4541
   glXDestroyPixmap := GLGetProcAddress('glXDestroyPixmap');
4542
   glXCreatePbuffer := GLGetProcAddress('glXCreatePbuffer');
4543
   glXDestroyPbuffer := GLGetProcAddress('glXDestroyPbuffer');
4544
   glXQueryDrawable := GLGetProcAddress('glXQueryDrawable');
4545
   glXCreateNewContext := GLGetProcAddress('glXCreateNewContext');
4546
   glXMakeContextCurrent := GLGetProcAddress('glXMakeContextCurrent');
4547
   glXGetCurrentReadDrawable := GLGetProcAddress('glXGetCurrentReadDrawable');
4548
   glXQueryContext := GLGetProcAddress('glXQueryContext');
4549
   glXSelectEvent := GLGetProcAddress('glXSelectEvent');
4550
   glXGetSelectedEvent := GLGetProcAddress('glXGetSelectedEvent');
4551
   glXBindTexImageARB := GLGetProcAddress('glXBindTexImageARB');
4552
   glXReleaseTexImageARB := GLGetProcAddress('glXReleaseTexImageARB');
4553
   glxDrawableAttribARB := GLGetProcAddress('glxDrawableAttribARB');
4554

4555
   //GLX 1.4
4556
   // GLX_ARB_create_context (EXT #56)
4557
   glXCreateContextAttribsARB := GLGetProcAddress('glXCreateContextAttribsARB');
4558

4559
   //  ###########################################################
4560
   //            locating functions and procedures for
4561
   //                Vendor/EXT WGL extensions
4562
   //  ###########################################################
4563

4564
   // WGL_EXT_swap_control (EXT #172)
4565
    glXSwapIntervalSGI := GLGetProcAddress('glXSwapIntervalSGI');
4566
    glXGetVideoSyncSGI := GLGetProcAddress('glXGetVideoSyncSGI');
4567
    glXWaitVideoSyncSGI := GLGetProcAddress('glXWaitVideoSyncSGI');
4568
    glXFreeContextEXT := GLGetProcAddress('glXFreeContextEXT');
4569
    glXGetContextIDEXT := GLGetProcAddress('glXGetContextIDEXT');
4570
    glXGetCurrentDisplayEXT := GLGetProcAddress('glXGetCurrentDisplayEXT');
4571
    glXImportContextEXT := GLGetProcAddress('glXImportContextEXT');
4572
    glXQueryContextInfoEXT := GLGetProcAddress('glXQueryContextInfoEXT');
4573
    glXCopySubBufferMESA := GLGetProcAddress('glXCopySubBufferMESA');
4574
    glXCreateGLXPixmapMESA := GLGetProcAddress('glXCreateGLXPixmapMESA');
4575
    glXReleaseBuffersMESA := GLGetProcAddress('glXReleaseBuffersMESA');
4576
    glXSet3DfxModeMESA := GLGetProcAddress('glXSet3DfxModeMESA');
4577

4578
    glXBindTexImageEXT := GLGetProcAddress('glXBindTexImageEXT');
4579
    glXReleaseTexImageEXT := GLGetProcAddress('glXReleaseTexImageEXT');
4580

4581
    //GLX 1.4
4582
    glXMakeCurrentReadSGI := GLGetProcAddress('glXMakeCurrentReadSGI');
4583
    glXGetCurrentReadDrawableSGI := GLGetProcAddress('glXGetCurrentReadDrawableSGI');
4584
    glXGetFBConfigAttribSGIX := GLGetProcAddress('glXGetFBConfigAttribSGIX');
4585
    glXChooseFBConfigSGIX := GLGetProcAddress('glXChooseFBConfigSGIX');
4586
    glXCreateGLXPixmapWithConfigSGIX := GLGetProcAddress('glXCreateGLXPixmapWithConfigSGIX');
4587
    glXCreateContextWithConfigSGIX := GLGetProcAddress('glXCreateContextWithConfigSGIX');
4588
    glXGetVisualFromFBConfigSGIX := GLGetProcAddress('glXGetVisualFromFBConfigSGIX');
4589
    glXGetFBConfigFromVisualSGIX := GLGetProcAddress('glXGetFBConfigFromVisualSGIX');
4590
    glXCreateGLXPbufferSGIX := GLGetProcAddress('glXCreateGLXPbufferSGIX');
4591
    glXDestroyGLXPbufferSGIX := GLGetProcAddress('glXDestroyGLXPbufferSGIX');
4592
    glXQueryGLXPbufferSGIX := GLGetProcAddress('glXQueryGLXPbufferSGIX');
4593
    glXSelectEventSGIX := GLGetProcAddress('glXSelectEventSGIX');
4594
    glXGetSelectedEventSGIX := GLGetProcAddress('glXGetSelectedEventSGIX');
4595
    glXCushionSGI := GLGetProcAddress('glXCushionSGI');
4596
    glXBindChannelToWindowSGIX := GLGetProcAddress('glXBindChannelToWindowSGIX');
4597
    glXChannelRectSGIX := GLGetProcAddress('glXChannelRectSGIX');
4598
    glXQueryChannelRectSGIX := GLGetProcAddress('glXQueryChannelRectSGIX');
4599
    glXQueryChannelDeltasSGIX := GLGetProcAddress('glXQueryChannelDeltasSGIX');
4600
    glXChannelRectSyncSGIX := GLGetProcAddress('glXChannelRectSyncSGIX');
4601
    glXJoinSwapGroupSGIX := GLGetProcAddress('glXJoinSwapGroupSGIX');
4602
    glXBindSwapBarrierSGIX := GLGetProcAddress('glXBindSwapBarrierSGIX');
4603
    glXQueryMaxSwapBarriersSGIX := GLGetProcAddress('glXQueryMaxSwapBarriersSGIX');
4604
    glXQueryHyperpipeNetworkSGIX := GLGetProcAddress('glXQueryHyperpipeNetworkSGIX');
4605

4606

4607
    glXHyperpipeConfigSGIX := GLGetProcAddress('glXHyperpipeConfigSGIX');
4608
    glXQueryHyperpipeConfigSGIX := GLGetProcAddress('glXQueryHyperpipeConfigSGIX');
4609
    glXDestroyHyperpipeConfigSGIX := GLGetProcAddress('glXDestroyHyperpipeConfigSGIX');
4610
    glXBindHyperpipeSGIX := GLGetProcAddress('glXBindHyperpipeSGIX');
4611
    glXQueryHyperpipeBestAttribSGIX := GLGetProcAddress('glXQueryHyperpipeBestAttribSGIX');
4612
    glXHyperpipeAttribSGIX := GLGetProcAddress('glXHyperpipeAttribSGIX');
4613
    glXQueryHyperpipeAttribSGIX := GLGetProcAddress('glXQueryHyperpipeAttribSGIX');
4614
    glXGetAGPOffsetMESA := GLGetProcAddress('glXGetAGPOffsetMESA');
4615
    glXEnumerateVideoDevicesNV := GLGetProcAddress('glXEnumerateVideoDevicesNV');
4616
    glXBindVideoDeviceNV := GLGetProcAddress('glXBindVideoDeviceNV');
4617
    glxGetVideoDeviceNV := GLGetProcAddress('glxGetVideoDeviceNV');
4618
    glXCopySubBufferMESA := GLGetProcAddress('glXCopySubBufferMESA');
4619
    glXReleaseBuffersMESA := GLGetProcAddress('glXReleaseBuffersMESA');
4620
    glXCreateGLXPixmapMESA := GLGetProcAddress('glXCreateGLXPixmapMESA');
4621
    glXSet3DfxModeMESA := GLGetProcAddress('glXSet3DfxModeMESA');
4622

4623
    glXAllocateMemoryNV := GLGetProcAddress('glXAllocateMemoryNV');
4624
    glXFreeMemoryNV := GLGetProcAddress('glXFreeMemoryNV');
4625

4626
    glXReleaseVideoDeviceNV := GLGetProcAddress('glXReleaseVideoDeviceNV');
4627
    glXBindVideoImageNV := GLGetProcAddress('glXBindVideoImageNV');
4628
    glXReleaseVideoImageNV := GLGetProcAddress('glXReleaseVideoImageNV');
4629
    glXSendPbufferToVideoNV := GLGetProcAddress('glXSendPbufferToVideoNV');
4630
    glXGetVideoInfoNV := GLGetProcAddress('glXGetVideoInfoNV');
4631
    glXJoinSwapGroupNV := GLGetProcAddress('glXJoinSwapGroupNV');
4632
    glXBindSwapBarrierNV := GLGetProcAddress('glXBindSwapBarrierNV');
4633
    glXQuerySwapGroupNV := GLGetProcAddress('glXQuerySwapGroupNV');
4634
    glXQueryMaxSwapGroupsNV := GLGetProcAddress('glXQueryMaxSwapGroupsNV');
4635
    glXQueryFrameCountNV := GLGetProcAddress('glXQueryFrameCountNV');
4636
    glXResetFrameCountNV := GLGetProcAddress('glXResetFrameCountNV');
4637
    glXBindVideoCaptureDeviceNV := GLGetProcAddress('glXBindVideoCaptureDeviceNV');
4638
    glXEnumerateVideoCaptureDevicesNV := GLGetProcAddress('glXEnumerateVideoCaptureDevicesNV');
4639
    glxLockVideoCaptureDeviceNV := GLGetProcAddress('glxLockVideoCaptureDeviceNV');
4640
    glXQueryVideoCaptureDeviceNV := GLGetProcAddress('glXQueryVideoCaptureDeviceNV');
4641
    glXReleaseVideoCaptureDeviceNV := GLGetProcAddress('glXReleaseVideoCaptureDeviceNV');
4642
    glXSwapIntervalEXT := GLGetProcAddress('glXSwapIntervalEXT');
4643
    glXCopyImageSubDataNV := GLGetProcAddress('glXCopyImageSubDataNV');
4644
end;
4645
{$ENDIF}
4646

4647
// TrimAndSplitVersionString
4648
//
4649
procedure TrimAndSplitVersionString(Buffer: String; var Max, Min: Integer);
4650
// Peels out the X.Y form from the given Buffer which must contain a version string like "text Minor.Major.Build text"
4651
// at least however "Major.Minor".
4652
var
4653
  Separator: Integer;
4654
begin
4655
  try
4656
    // There must be at least one dot to separate major and minor version number.
4657
    Separator := Pos('.', Buffer);
4658
    // At least one number must be before and one after the dot.
4659
    if (Separator > 1) and (Separator < Length(Buffer)) and (AnsiChar(Buffer[Separator - 1]) in ['0'..'9']) and
4660
      (AnsiChar(Buffer[Separator + 1]) in ['0'..'9']) then
4661
    begin
4662
      // OK, it's a valid version string. Now remove unnecessary parts.
4663
      Dec(Separator);
4664
      // Find last non-numeric character before version number.
4665
      while (Separator > 0) and (AnsiChar(Buffer[Separator]) in ['0'..'9']) do
4666
        Dec(Separator);
4667
      // Delete leading characters which do not belong to the version string.
4668
      Delete(Buffer, 1, Separator);
4669
      Separator := Pos('.', Buffer) + 1;
4670
      // Find first non-numeric character after version number
4671
      while (Separator <= Length(Buffer)) and (AnsiChar(Buffer[Separator]) in ['0'..'9']) do
4672
        Inc(Separator);
4673
      // delete trailing characters not belonging to the version string
4674
      Delete(Buffer, Separator, 255);
4675
      // Now translate the numbers.
4676
      Separator := Pos('.', Buffer); // This is necessary because the buffer length might have changed.
4677
      Max := StrToInt(Copy(Buffer, 1, Separator - 1));
4678
      Min := StrToInt(Copy(Buffer, Separator + 1, 255));
4679
    end
4680
    else
4681
      Abort;
4682
  except
4683
    Min := 0;
4684
    Max := 0;
4685
  end;
4686
end;
4687

4688
function IsVersionMet(MajorVersion,MinorVersion,actualMajorVersion, actualMinorVersion:Integer): boolean;
4689
begin
4690
  Result:=(actualMajorVersion>MajorVersion)or
4691
          ((actualMajorVersion=MajorVersion)and(actualMinorVersion>=MinorVersion));
4692
end;
4693

4694
// ReadImplementationProperties
4695
//
4696
procedure ReadImplementationProperties;
4697
var
4698
   Buffer : String;
4699
   MajorVersion, MinorVersion: Integer;
4700

4701
   // Checks if the given Extension string is in Buffer.
4702
   function CheckExtension(const Extension: string): Boolean;
4703
   var
4704
     ExtPos: Integer;
4705
   begin
4706
     // First find the position of the extension string as substring in Buffer.
4707
     ExtPos := Pos(Extension, Buffer);
4708
     Result := ExtPos > 0;
4709
     // Now check that it isn't only a substring of another extension.
4710
     if Result then
4711
       Result := ((ExtPos + Length(Extension) - 1)= Length(Buffer))
4712
                 or (Buffer[ExtPos + Length(Extension)]=' ');
4713
   end;
4714

4715
begin
4716
   // determine OpenGL versions supported
4717
   buffer:=String(glGetString(GL_VERSION));
4718
   TrimAndSplitVersionString(buffer, majorversion, minorVersion);
4719
   GL_VERSION_1_0:=True;
4720
   GL_VERSION_1_1:=IsVersionMet(1,1,majorVersion,minorVersion);
4721
   GL_VERSION_1_2:=IsVersionMet(1,2,majorVersion,minorVersion);
4722
   GL_VERSION_1_3:=IsVersionMet(1,3,majorVersion,minorVersion);
4723
   GL_VERSION_1_4:=IsVersionMet(1,4,majorVersion,minorVersion);
4724
   GL_VERSION_1_5:=IsVersionMet(1,5,majorVersion,minorVersion);
4725
   GL_VERSION_2_0:=IsVersionMet(2,0,majorVersion,minorVersion);
4726
   GL_VERSION_2_1:=IsVersionMet(2,1,majorVersion,minorVersion);
4727
   GL_VERSION_3_0:=IsVersionMet(3,0,majorVersion,minorVersion);
4728
   GL_VERSION_3_1:=IsVersionMet(3,1,majorVersion,minorVersion);
4729
   GL_VERSION_3_2:=IsVersionMet(3,2,majorVersion,minorVersion);
4730
   GL_VERSION_3_3:=IsVersionMet(3,3,majorVersion,minorVersion);
4731
   GL_VERSION_4_0:=IsVersionMet(4,0,majorVersion,minorVersion);
4732
   GL_VERSION_4_1:=IsVersionMet(4,1,majorVersion,minorVersion);
4733

4734
   // determine GLU versions met
4735
   buffer:=String(gluGetString(GLU_VERSION));
4736
   TrimAndSplitVersionString(buffer, majorversion, minorVersion);
4737
   GLU_VERSION_1_1:=True; // won't load without at least GLU 1.1
4738
   GLU_VERSION_1_2:=IsVersionMet(1,2,majorVersion,minorVersion);
4739
   GLU_VERSION_1_3:=IsVersionMet(1,3,majorVersion,minorVersion);
4740

4741
   // check supported OpenGL extensions
4742
   Buffer := String(glGetString(GL_EXTENSIONS));
4743
   // check ARB approved OpenGL extensions
4744
   GL_ARB_blend_func_extended := CheckExtension('GL_ARB_blend_func_extended');
4745
   GL_ARB_color_buffer_float := CheckExtension('GL_ARB_color_buffer_float');
4746
   GL_ARB_compatibility := CheckExtension('GL_ARB_compatibility');
4747
   GL_ARB_copy_buffer := CheckExtension('GL_ARB_copy_buffer');
4748
   GL_ARB_debug_output := CheckExtension('GL_ARB_debug_output');
4749
   GL_ARB_depth_buffer_float := CheckExtension('GL_ARB_depth_buffer_float');
4750
   GL_ARB_depth_clamp := CheckExtension('GL_ARB_depth_clamp');
4751
   GL_ARB_depth_texture := CheckExtension('GL_ARB_depth_texture');
4752
   GL_ARB_draw_buffers := CheckExtension('GL_ARB_draw_buffers');
4753
   GL_ARB_draw_buffers_blend := CheckExtension('GL_ARB_draw_buffers_blend');
4754
   GL_ARB_draw_elements_base_vertex := CheckExtension('GL_ARB_draw_elements_base_vertex');
4755
   GL_ARB_draw_indirect := CheckExtension('GL_ARB_draw_indirect');
4756
   GL_ARB_draw_instanced := CheckExtension('GL_ARB_draw_instanced');
4757
   GL_ARB_ES2_compatibility := CheckExtension('GL_ARB_ES2_compatibility');
4758
   GL_ARB_explicit_attrib_location := CheckExtension('GL_ARB_explicit_attrib_location');
4759
   GL_ARB_fragment_coord_conventions := CheckExtension('GL_ARB_fragment_coord_conventions');
4760
   GL_ARB_fragment_program := CheckExtension('GL_ARB_fragment_program');
4761
   GL_ARB_fragment_program_shadow := CheckExtension('GL_ARB_fragment_program_shadow');
4762
   GL_ARB_fragment_shader := CheckExtension('GL_ARB_fragment_shader');
4763
   GL_ARB_framebuffer_object := CheckExtension('GL_ARB_framebuffer_object');
4764
   GL_ARB_framebuffer_sRGB := CheckExtension('GL_ARB_framebuffer_sRGB');
4765
   GL_ARB_geometry_shader4 := CheckExtension('GL_ARB_geometry_shader4');
4766
   GL_ARB_get_program_binary := CheckExtension('GL_ARB_get_program_binary');
4767
   GL_ARB_gpu_shader_fp64 := CheckExtension('GL_ARB_gpu_shader_fp64');
4768
   GL_ARB_gpu_shader5 := CheckExtension('GL_ARB_gpu_shader5');
4769
   GL_ARB_half_float_pixel := CheckExtension('GL_ARB_half_float_pixel');
4770
   GL_ARB_half_float_vertex := CheckExtension('GL_ARB_half_float_vertex');
4771
   GL_ARB_imaging := CheckExtension('GL_ARB_imaging');
4772
   GL_ARB_instanced_arrays := CheckExtension('GL_ARB_instanced_arrays');
4773
   GL_ARB_map_buffer_range := CheckExtension('GL_ARB_map_buffer_range');
4774
   GL_ARB_matrix_palette  := CheckExtension('GL_ARB_matrix_palette');
4775
   GL_ARB_multisample := CheckExtension(' GL_ARB_multisample'); // ' ' to avoid collision with WGL variant
4776
   GL_ARB_multitexture := CheckExtension('GL_ARB_multitexture');
4777
   GL_ARB_occlusion_query := CheckExtension('GL_ARB_occlusion_query');
4778
   GL_ARB_occlusion_query2 := CheckExtension('GL_ARB_occlusion_query2');
4779
   GL_ARB_pixel_buffer_object := CheckExtension('GL_ARB_pixel_buffer_object');
4780
   GL_ARB_point_parameters := CheckExtension('GL_ARB_point_parameters');
4781
   GL_ARB_point_sprite := CheckExtension('GL_ARB_point_sprite');
4782
   GL_ARB_provoking_vertex := CheckExtension('GL_ARB_provoking_vertex');
4783
   GL_ARB_robustness := CheckExtension('GL_ARB_robustness');
4784
   GL_ARB_sample_shading := CheckExtension('GL_ARB_sample_shading');
4785
   GL_ARB_sampler_objects := CheckExtension('GL_ARB_sampler_objects');
4786
   GL_ARB_seamless_cube_map := CheckExtension('GL_ARB_seamless_cube_map');
4787
   GL_ARB_separate_shader_objects := CheckExtension('GL_ARB_separate_shader_objects');
4788
   GL_ARB_shader_bit_encoding := CheckExtension('GL_ARB_shader_bit_encoding');
4789
   GL_ARB_shader_precision := CheckExtension('GL_ARB_shader_precision');
4790
   GL_ARB_shader_objects := CheckExtension('GL_ARB_shader_objects');
4791
   GL_ARB_shader_stencil_export := CheckExtension('GL_ARB_shader_stencil_export');
4792
   GL_ARB_shader_subroutine := CheckExtension('GL_ARB_shader_subroutine');
4793
   GL_ARB_shader_texture_lod := CheckExtension('GL_ARB_shader_texture_lod');
4794
   GL_ARB_shading_language_100 := CheckExtension('GL_ARB_shading_language_100');
4795
   GL_ARB_shadow := CheckExtension('GL_ARB_shadow');
4796
   GL_ARB_shadow_ambient := CheckExtension('GL_ARB_shadow_ambient');
4797
   GL_ARB_sync := CheckExtension('GL_ARB_sync');
4798
   GL_ARB_tessellation_shader := CheckExtension('GL_ARB_tessellation_shader');
4799
   GL_ARB_texture_border_clamp := CheckExtension('GL_ARB_texture_border_clamp');
4800
   GL_ARB_texture_buffer_object := CheckExtension('GL_ARB_texture_buffer_object');
4801
   GL_ARB_texture_buffer_object_rgb32 := CheckExtension('GL_ARB_texture_buffer_object_rgb32');
4802
   GL_ARB_texture_compression := CheckExtension('GL_ARB_texture_compression');
4803
   GL_ARB_texture_compression_rgtc := CheckExtension('GL_ARB_texture_compression_rgtc');
4804
   GL_ARB_texture_cube_map := CheckExtension('GL_ARB_texture_cube_map');
4805
   GL_ARB_texture_cube_map_array := CheckExtension('GL_ARB_texture_cube_map_array');
4806
   GL_ARB_texture_env_add := CheckExtension('GL_ARB_texture_env_add');
4807
   GL_ARB_texture_env_combine := CheckExtension('GL_ARB_texture_env_combine');
4808
   GL_ARB_texture_env_crossbar := CheckExtension('GL_ARB_texture_env_crossbar');
4809
   GL_ARB_texture_env_dot3 := CheckExtension('GL_ARB_texture_env_dot3');
4810
   GL_ARB_texture_float := CheckExtension('GL_ARB_texture_float');
4811
   GL_ARB_texture_gather := CheckExtension('GL_ARB_texture_gather');
4812
   GL_ARB_texture_mirrored_repeat := CheckExtension('GL_ARB_texture_mirrored_repeat');
4813
   GL_ARB_texture_multisample := CheckExtension('GL_ARB_texture_multisample');
4814
   GL_ARB_texture_non_power_of_two := CheckExtension('GL_ARB_texture_non_power_of_two');
4815
   GL_ARB_texture_query_lod := CheckExtension('GL_ARB_texture_query_lod');
4816
   GL_ARB_texture_rectangle := CheckExtension('GL_ARB_texture_rectangle');
4817
   GL_ARB_texture_rg := CheckExtension('GL_ARB_texture_rg');
4818
   GL_ARB_texture_rgb10_a2ui := CheckExtension('GL_ARB_texture_rgb10_a2ui');
4819
   GL_ARB_texture_swizzle := CheckExtension('GL_ARB_texture_swizzle');
4820
   GL_ARB_timer_query := CheckExtension('GL_ARB_timer_query');
4821
   GL_ARB_transform_feedback2 := CheckExtension('GL_ARB_transform_feedback2');
4822
   GL_ARB_transform_feedback3 := CheckExtension('GL_ARB_transform_feedback3');
4823
   GL_ARB_transpose_matrix := CheckExtension('GL_ARB_transpose_matrix');
4824
   GL_ARB_uniform_buffer_object := CheckExtension('GL_ARB_uniform_buffer_object');
4825
   GL_ARB_vertex_array_bgra := CheckExtension('GL_ARB_vertex_array_bgra');
4826
   GL_ARB_vertex_array_object := CheckExtension('GL_ARB_vertex_array_object');
4827
   GL_ARB_vertex_attrib_64bit := CheckExtension('GL_ARB_vertex_attrib_64bit');
4828
   GL_ARB_vertex_blend := CheckExtension('GL_ARB_vertex_blend');
4829
   GL_ARB_vertex_buffer_object := CheckExtension('GL_ARB_vertex_buffer_object');
4830
   GL_ARB_vertex_program := CheckExtension('GL_ARB_vertex_program');
4831
   GL_ARB_vertex_shader := CheckExtension('GL_ARB_vertex_shader');
4832
   GL_ARB_vertex_type_2_10_10_10_rev := CheckExtension('GL_ARB_vertex_type_2_10_10_10_rev');
4833
   GL_ARB_viewport_array := CheckExtension('GL_ARB_viewport_array');
4834
   GL_ARB_window_pos := CheckExtension('GL_ARB_window_pos');
4835
   GL_ARB_texture_compression_bptc := CheckExtension('GL_ARB_texture_compression_bptc');
4836

4837
   // check Vendor/EXT OpenGL extensions
4838
   GL_3DFX_multisample := CheckExtension('GL_3DFX_multisample');
4839
   GL_3DFX_tbuffer := CheckExtension('GL_3DFX_tbuffer');
4840
   GL_3DFX_texture_compression_FXT1 := CheckExtension('GL_3DFX_texture_compression_FXT1');
4841
   GL_ATI_draw_buffers := CheckExtension('GL_ATI_draw_buffers');
4842
   GL_ATI_texture_compression_3dc := CheckExtension('GL_ATI_texture_compression_3dc');
4843
   GL_ATI_texture_float := CheckExtension('GL_ATI_texture_float');
4844
   GL_ATI_texture_mirror_once := CheckExtension('GL_ATI_texture_mirror_once');
4845

4846
   GL_S3_s3tc := CheckExtension('GL_S3_s3tc');
4847

4848
   GL_EXT_abgr := CheckExtension('GL_EXT_abgr');
4849
   GL_EXT_bgra := CheckExtension('GL_EXT_bgra');
4850
   GL_EXT_bindable_uniform := CheckExtension('GL_EXT_bindable_uniform');   
4851
   GL_EXT_blend_color := CheckExtension('GL_EXT_blend_color');
4852
   GL_EXT_blend_equation_separate := CheckExtension('GL_EXT_blend_equation_separate');
4853
   GL_EXT_blend_func_separate := CheckExtension('GL_EXT_blend_func_separate');
4854
   GL_EXT_blend_logic_op := CheckExtension('GL_EXT_blend_logic_op');
4855
   GL_EXT_blend_minmax := CheckExtension('GL_EXT_blend_minmax');
4856
   GL_EXT_blend_subtract := CheckExtension('GL_EXT_blend_subtract');
4857
   GL_EXT_Cg_shader := CheckExtension('GL_EXT_Cg_shader');
4858
   GL_EXT_clip_volume_hint := CheckExtension('GL_EXT_clip_volume_hint');
4859
   GL_EXT_compiled_vertex_array := CheckExtension('GL_EXT_compiled_vertex_array');
4860
   GL_EXT_copy_texture := CheckExtension('GL_EXT_copy_texture');
4861
   GL_EXT_depth_bounds_test := CheckExtension('GL_EXT_depth_bounds_test');
4862
   GL_EXT_draw_buffers2 := CheckExtension('GL_EXT_draw_buffers2');
4863
   GL_EXT_draw_instanced := CheckExtension('GL_EXT_draw_instanced');
4864
   GL_EXT_draw_range_elements := CheckExtension('GL_EXT_draw_range_elements');
4865
   GL_EXT_fog_coord := CheckExtension('GL_EXT_fog_coord');
4866
   GL_EXT_framebuffer_blit := CheckExtension('GL_EXT_framebuffer_blit');
4867
   GL_EXT_framebuffer_multisample := CheckExtension('GL_EXT_framebuffer_multisample');
4868
   GL_EXT_framebuffer_object := CheckExtension('GL_EXT_framebuffer_object');
4869
   GL_EXT_framebuffer_sRGB := CheckExtension('GL_EXT_framebuffer_sRGB');
4870
   GL_EXT_geometry_shader4 := CheckExtension('GL_EXT_geometry_shader4');
4871
   GL_EXT_gpu_program_parameters := CheckExtension('GL_EXT_gpu_program_parameters');
4872
   GL_EXT_gpu_shader4 := CheckExtension('GL_EXT_gpu_shader4');
4873
   GL_EXT_multi_draw_arrays := CheckExtension('GL_EXT_multi_draw_arrays');
4874
   GL_EXT_multisample := CheckExtension('GL_EXT_multisample');
4875
   GL_EXT_packed_depth_stencil := CheckExtension('GL_EXT_packed_depth_stencil');
4876
   GL_EXT_packed_float := CheckExtension('GL_EXT_packed_float');
4877
   GL_EXT_packed_pixels := CheckExtension('GL_EXT_packed_pixels');
4878
   GL_EXT_paletted_texture := CheckExtension('GL_EXT_paletted_texture');
4879
   GL_EXT_pixel_buffer_object := CheckExtension('GL_EXT_pixel_buffer_object');
4880
   GL_EXT_polygon_offset := CheckExtension('GL_EXT_polygon_offset');
4881
   GL_EXT_rescale_normal := CheckExtension('GL_EXT_rescale_normal');
4882
   GL_EXT_secondary_color := CheckExtension('GL_EXT_secondary_color');
4883
   GL_EXT_separate_specular_color := CheckExtension('GL_EXT_separate_specular_color');
4884
   GL_EXT_shadow_funcs := CheckExtension('GL_EXT_shadow_funcs');
4885
   GL_EXT_shared_texture_palette := CheckExtension('GL_EXT_shared_texture_palette');
4886
   GL_EXT_stencil_clear_tag := CheckExtension('GL_EXT_stencil_clear_tag');
4887
   GL_EXT_stencil_two_side := CheckExtension('EXT_stencil_two_side');
4888
   GL_EXT_stencil_wrap := CheckExtension('GL_EXT_stencil_wrap');
4889
   GL_EXT_texture3D := CheckExtension('GL_EXT_texture3D');
4890
   GL_EXT_texture_array := CheckExtension('GL_EXT_texture_array');
4891
   GL_EXT_texture_buffer_object := CheckExtension('GL_EXT_texture_buffer_object');
4892
   GL_EXT_texture_compression_latc := CheckExtension('GL_EXT_texture_compression_latc');
4893
   GL_EXT_texture_compression_rgtc := CheckExtension('GL_EXT_texture_compression_rgtc');
4894
   GL_EXT_texture_compression_s3tc := CheckExtension('GL_EXT_texture_compression_s3tc');
4895
   GL_EXT_texture_cube_map := CheckExtension('GL_EXT_texture_cube_map');
4896
   GL_EXT_texture_edge_clamp := CheckExtension('GL_EXT_texture_edge_clamp');
4897
   GL_EXT_texture_env_add := CheckExtension('GL_EXT_texture_env_add');
4898
   GL_EXT_texture_env_combine := CheckExtension('GL_EXT_texture_env_combine');
4899
   GL_EXT_texture_env_dot3 := CheckExtension('GL_EXT_texture_env_dot3');
4900
   GL_EXT_texture_filter_anisotropic := CheckExtension('GL_EXT_texture_filter_anisotropic');
4901
   GL_EXT_texture_integer := CheckExtension('GL_EXT_texture_integer');
4902
   GL_EXT_texture_lod := CheckExtension('GL_EXT_texture_lod');
4903
   GL_EXT_texture_lod_bias := CheckExtension('GL_EXT_texture_lod_bias');
4904
   GL_EXT_texture_mirror_clamp := CheckExtension('GL_EXT_texture_mirror_clamp');
4905
   GL_EXT_texture_object := CheckExtension('GL_EXT_texture_object');
4906
   GL_EXT_texture_rectangle := CheckExtension('GL_EXT_texture_rectangle');
4907
   GL_EXT_texture_sRGB := CheckExtension('GL_EXT_texture_sRGB');
4908
   GL_EXT_texture_shared_exponent := CheckExtension('GL_EXT_texture_shared_exponent');
4909
   GL_EXT_timer_query := CheckExtension('GL_EXT_timer_query');
4910
   GL_EXT_transform_feedback := CheckExtension('GL_EXT_transform_feedback');
4911
   GL_EXT_vertex_array := CheckExtension('GL_EXT_vertex_array');
4912

4913
   GL_HP_occlusion_test := CheckExtension('GL_HP_occlusion_test');
4914

4915
   GL_IBM_rasterpos_clip := CheckExtension('GL_IBM_rasterpos_clip');
4916

4917
   GL_KTX_buffer_region := CheckExtension('GL_KTX_buffer_region');
4918

4919
   GL_MESA_resize_buffers := CheckExtension('GL_MESA_resize_buffers');
4920

4921
   GL_NV_blend_square := CheckExtension('GL_NV_blend_square');
4922
   GL_NV_conditional_render := CheckExtension('GL_NV_conditional_render');
4923
   GL_NV_copy_image := CheckExtension('GL_NV_copy_image');
4924
   GL_NV_depth_buffer_float := CheckExtension('GL_NV_depth_buffer_float');
4925
   GL_NV_fence := CheckExtension('GL_NV_fence');
4926
   GL_NV_float_buffer := CheckExtension('GL_NV_float_buffer');
4927
   GL_NV_fog_distance := CheckExtension('GL_NV_fog_distance');
4928
   GL_NV_geometry_program4 := CheckExtension('GL_NV_geometry_program4');
4929
   GL_NV_light_max_exponent := CheckExtension('GL_NV_light_max_exponent');
4930
   GL_NV_multisample_filter_hint  := CheckExtension('GL_NV_multisample_filter_hint');
4931
   GL_NV_occlusion_query := CheckExtension('GL_NV_occlusion_query');
4932
   GL_NV_point_sprite := CheckExtension('GL_NV_point_sprite');
4933
   GL_NV_primitive_restart := CheckExtension('GL_NV_primitive_restart');
4934
   GL_NV_register_combiners := CheckExtension('GL_NV_register_combiners');
4935
   GL_NV_shader_buffer_load := CheckExtension('GL_NV_shader_buffer_load');
4936
   GL_NV_texgen_reflection := CheckExtension('GL_NV_texgen_reflection');
4937
   GL_NV_texture_compression_vtc := CheckExtension('GL_NV_texture_compression_vtc');
4938
   GL_NV_texture_env_combine4 := CheckExtension('GL_NV_texture_env_combine4');
4939
   GL_NV_texture_rectangle := CheckExtension('GL_NV_texture_rectangle');
4940
   GL_NV_texture_shader := CheckExtension('GL_NV_texture_shader');
4941
   GL_NV_texture_shader2 := CheckExtension('GL_NV_texture_shader2');
4942
   GL_NV_texture_shader3 := CheckExtension('GL_NV_texture_shader3');
4943
   GL_NV_transform_feedback := CheckExtension('GL_NV_transform_feedback');
4944
   GL_NV_vertex_array_range := CheckExtension('GL_NV_vertex_array_range');
4945
   GL_NV_vertex_array_range2 := CheckExtension('GL_NV_vertex_array_range2');
4946
   GL_NV_vertex_buffer_unified_memory := CheckExtension('GL_NV_vertex_buffer_unified_memory');
4947
   GL_NV_vertex_program := CheckExtension('GL_NV_vertex_program');
4948

4949
   GL_SGI_color_matrix := CheckExtension('GL_SGI_color_matrix');
4950

4951
   GL_SGIS_generate_mipmap := CheckExtension('GL_SGIS_generate_mipmap');
4952
   GL_SGIS_multisample := CheckExtension('GL_SGIS_multisample');
4953
   GL_SGIS_texture_border_clamp := CheckExtension('GL_SGIS_texture_border_clamp');
4954
   GL_SGIS_texture_color_mask := CheckExtension('GL_SGIS_texture_color_mask');
4955
   GL_SGIS_texture_edge_clamp := CheckExtension('GL_SGIS_texture_edge_clamp');
4956
   GL_SGIS_texture_lod := CheckExtension('GL_SGIS_texture_lod');
4957

4958
   GL_SGIX_depth_texture := CheckExtension('GL_SGIX_depth_texture');
4959
   GL_SGIX_shadow := CheckExtension('GL_SGIX_shadow'); 
4960
   GL_SGIX_shadow_ambient := CheckExtension('GL_SGIX_shadow_ambient');
4961

4962
   GL_AMD_vertex_shader_tessellator := CheckExtension('GL_AMD_vertex_shader_tessellator');
4963

4964
   GL_WIN_swap_hint := CheckExtension('GL_WIN_swap_hint');
4965

4966
   GL_GREMEDY_frame_terminator := CheckExtension('GL_GREMEDY_frame_terminator');
4967
   GL_GREMEDY_string_marker := CheckExtension('GL_GREMEDY_string_marker');
4968

4969
   // check supported GLU extensions
4970
   Buffer := String(gluGetString(GLU_EXTENSIONS));
4971
   GLU_EXT_nurbs_tessellator := CheckExtension('GLU_EXT_nurbs_tessellator');
4972
   GLU_EXT_object_space_tess := CheckExtension('GLU_EXT_object_space_tess');
4973
   GLU_EXT_TEXTURE := CheckExtension('GLU_EXT_TEXTURE');
4974

4975
   {$IFDEF SUPPORT_WGL}
4976
   //check supported WGL extensions
4977
   ReadWGLImplementationProperties;
4978
   {$ENDIF}
4979

4980
   {$IFDEF SUPPORT_GLX}
4981
   //check supported GLX extensions
4982
   ReadGLXImplementationProperties;
4983
   {$ENDIF}
4984
end;
4985

4986
{$IFDEF SUPPORT_WGL}
4987
// ReadWGLImplementationProperties
4988
//
4989
procedure ReadWGLImplementationProperties;
4990
var
4991
   Buffer: string;
4992

4993
   // Checks if the given Extension string is in Buffer.
4994
   function CheckExtension(const Extension: string): Boolean;
4995
   var
4996
     ExtPos: Integer;
4997
   begin
4998
     // First find the position of the extension string as substring in Buffer.
4999
     ExtPos := Pos(Extension, Buffer);
5000
     Result := ExtPos > 0;
5001
     // Now check that it isn't only a substring of another extension.
5002
     if Result then
5003
       Result := ((ExtPos + Length(Extension) - 1)= Length(Buffer))
5004
                 or (Buffer[ExtPos + Length(Extension)]=' ');
5005
   end;
5006

5007
begin
5008
   // ARB wgl extensions
5009
   if Assigned(wglGetExtensionsStringARB) then
5010
      Buffer:=String(wglGetExtensionsStringARB(wglGetCurrentDC))
5011
   else Buffer:='';
5012
   WGL_ARB_buffer_region:=CheckExtension('WGL_ARB_buffer_region');
5013
   WGL_ARB_create_context := CheckExtension('WGL_ARB_create_context');
5014
   WGL_ARB_create_context_profile := CheckExtension('WGL_ARB_create_context_profile');
5015
   WGL_ARB_extensions_string:=CheckExtension('WGL_ARB_extensions_string');
5016
   WGL_ARB_framebuffer_sRGB := CheckExtension('WGL_ARB_framebuffer_sRGB');
5017
   WGL_ARB_make_current_read:=CheckExtension('WGL_ARB_make_current_read');
5018
   WGL_ARB_multisample:=CheckExtension('WGL_ARB_multisample');
5019
   WGL_ARB_pbuffer:=CheckExtension('WGL_ARB_pbuffer');
5020
   WGL_ARB_pixel_format:=CheckExtension('WGL_ARB_pixel_format');
5021
   WGL_ARB_pixel_format_float:=CheckExtension('WGL_ARB_pixel_format_float');
5022
   WGL_ARB_render_texture:=CheckExtension('WGL_ARB_render_texture');
5023
   // Vendor/EXT wgl extensions
5024
   WGL_ATI_pixel_format_float := CheckExtension('WGL_ATI_pixel_format_float');
5025
   WGL_EXT_framebuffer_sRGB := CheckExtension('WGL_EXT_framebuffer_sRGB');
5026
   WGL_EXT_pixel_format_packed_float := CheckExtension('WGL_EXT_pixel_format_packed_float');
5027
   WGL_EXT_swap_control := CheckExtension('WGL_EXT_swap_control');
5028
   WGL_NV_gpu_affinity := CheckExtension('WGL_NV_gpu_affinity');
5029
end;
5030
{$ENDIF}
5031

5032
{$IFDEF SUPPORT_GLX}
5033
// ReadGLXImplementationProperties
5034
//
5035
procedure ReadGLXImplementationProperties;
5036
var
5037
   Buffer: string;
5038
   MajorVersion, MinorVersion: Integer;
5039
   Dpy: PDisplay;
5040
   // Checks if the given Extension string is in Buffer.
5041
   function CheckExtension(const Extension: string): Boolean;
5042
   var
5043
     ExtPos: Integer;
5044
   begin
5045
     // First find the position of the extension string as substring in Buffer.
5046
     ExtPos := Pos(Extension, Buffer);
5047
     Result := ExtPos > 0;
5048
     // Now check that it isn't only a substring of another extension.
5049
     if Result then
5050
       Result := ((ExtPos + Length(Extension) - 1)= Length(Buffer))
5051
                 or (Buffer[ExtPos + Length(Extension)]=' ');
5052
   end;
5053
begin
5054
   Dpy:=glXGetCurrentDisplay();
5055
   buffer:=String(glXQueryServerString(Dpy, XDefaultScreen(Dpy), GLX_VERSION));
5056
   TrimAndSplitVersionString(buffer, majorversion, minorVersion);
5057
   GLX_VERSION_1_1:=IsVersionMet(1,1,majorVersion,minorVersion);
5058
   GLX_VERSION_1_2:=IsVersionMet(1,2,majorVersion,minorVersion);
5059
   GLX_VERSION_1_3:=IsVersionMet(1,3,majorVersion,minorVersion);
5060
   GLX_VERSION_1_4:=IsVersionMet(1,4,majorVersion,minorVersion);
5061

5062
   // This procedure will probably need changing, as totally untested
5063
   // This might only work if GLX functions/procedures are loaded dynamically
5064

5065
   if Assigned(@glXQueryExtensionsString) then
5066
     Buffer := glXQueryExtensionsString(Dpy, 0)  //guess at a valid screen
5067
   else
5068
     Buffer:='';
5069
   GLX_ARB_create_context := CheckExtension('GLX_ARB_create_context');
5070
   GLX_ARB_create_context_profile := CheckExtension('GLX_ARB_create_context_profile');
5071
   GLX_ARB_framebuffer_sRGB := CheckExtension('GLX_ARB_framebuffer_sRGB');
5072
   GLX_EXT_framebuffer_sRGB := CheckExtension('GLX_EXT_framebuffer_sRGB');
5073
   GLX_EXT_fbconfig_packed_float := CheckExtension('GLX_EXT_fbconfig_packed_float');
5074
   GLX_SGI_swap_control := CheckExtension('GLX_SGI_swap_control');
5075
   GLX_ARB_multisample := CheckExtension('GLX_ARB_multisample');
5076

5077
   GLX_SGIS_multisample	 := CheckExtension('GLX_SGIS_multisample');
5078
   GLX_EXT_visual_info	 := CheckExtension('GLX_EXT_visual_info');
5079
   GLX_SGI_video_sync := CheckExtension('GLX_SGI_video_sync');
5080
   GLX_SGI_make_current_read := CheckExtension('GLX_SGI_make_current_read');
5081
   GLX_SGIX_video_source := CheckExtension('GLX_SGIX_video_source');
5082
   GLX_EXT_visual_rating := CheckExtension('GLX_EXT_visual_rating');
5083
   GLX_EXT_import_context := CheckExtension('GLX_EXT_import_context');
5084
   GLX_SGIX_fbconfig := CheckExtension('GLX_SGIX_fbconfig');
5085
   GLX_SGIX_pbuffer := CheckExtension('GLX_SGIX_pbuffer');
5086
   GLX_SGI_cushion := CheckExtension('GLX_SGI_cushion');
5087
   GLX_SGIX_video_resize := CheckExtension('GLX_SGIX_video_resize');
5088
   GLX_SGIX_dmbuffer := CheckExtension('GLX_SGIX_dmbuffer');
5089
   GLX_SGIX_swap_group := CheckExtension('GLX_SGIX_swap_group');
5090
   GLX_SGIX_swap_barrier := CheckExtension('GLX_SGIX_swap_barrier');
5091
   GLX_SGIS_blended_overlay := CheckExtension('GLX_SGIS_blended_overlay');
5092
   GLX_SGIS_shared_multisample	 := CheckExtension('GLX_SGIS_shared_multisample');
5093
   GLX_SUN_get_transparent_index := CheckExtension('GLX_SUN_get_transparent_index');
5094
   GLX_3DFX_multisample	 := CheckExtension('GLX_3DFX_multisample');
5095
   GLX_MESA_copy_sub_buffer := CheckExtension('GLX_MESA_copy_sub_buffer');
5096
   GLX_MESA_pixmap_colormap := CheckExtension('GLX_MESA_pixmap_colormap');
5097
   GLX_MESA_release_buffers := CheckExtension('GLX_MESA_release_buffers');
5098
   GLX_MESA_set_3dfx_mode := CheckExtension('GLX_MESA_set_3dfx_mode');
5099
   GLX_SGIX_visual_select_group	 := CheckExtension('GLX_SGIX_visual_select_group');
5100
   GLX_SGIX_hyperpipe  := CheckExtension('GLX_SGIX_hyperpipe');
5101
end;
5102
{$ENDIF}
5103

5104
// CloseOpenGL
5105
//
5106
procedure CloseOpenGL;
5107
begin
5108
   if GLHandle<>INVALID_MODULEHANDLE then begin
5109
      FreeLibrary(Cardinal(GLHandle));
5110
      GLHandle:=INVALID_MODULEHANDLE;
5111
   end;
5112

5113
   if GLUHandle<>INVALID_MODULEHANDLE then begin
5114
      FreeLibrary(Cardinal(GLUHandle));
5115
      GLUHandle:=INVALID_MODULEHANDLE;
5116
   end;
5117
end;
5118

5119
// InitOpenGL
5120
//
5121
function InitOpenGL : Boolean;
5122
begin
5123
   if (GLHandle=INVALID_MODULEHANDLE) or (GLUHandle=INVALID_MODULEHANDLE) then
5124
      Result:=InitOpenGLFromLibrary(opengl32, glu32)
5125
   else Result:=True;
5126
end;
5127

5128
// InitOpenGLFromLibrary
5129
//
5130
function InitOpenGLFromLibrary(const GLName, GLUName : String) : Boolean;
5131
begin
5132
   Result := False;
5133
   CloseOpenGL;
5134

5135
   GLHandle:=LoadLibrary(PChar(GLName));
5136
   GLUHandle:=LoadLibrary(PChar(GLUName));
5137

5138
   {$IFDEF Linux}   // make it work when mesa-dev is not installed and only libGL.so.1 is available
5139
   if (GLHandle=INVALID_MODULEHANDLE) then
5140
         GLHandle:=LoadLibrary(PChar(GLName+'.1'));
5141
     if (GLUHandle=INVALID_MODULEHANDLE) then
5142
         GLUHandle:=LoadLibrary(PChar(GLUName+'.1'));
5143
   {$ENDIF}
5144

5145
   if (GLHandle<>INVALID_MODULEHANDLE) and (GLUHandle<>INVALID_MODULEHANDLE) then
5146
     Result:=True
5147
   else begin
5148
      if GLHandle<>INVALID_MODULEHANDLE then
5149
         FreeLibrary(Cardinal(GLHandle));
5150
      if GLUHandle<>INVALID_MODULEHANDLE then
5151
         FreeLibrary(Cardinal(GLUHandle));
5152
   end;
5153
end;
5154

5155
// IsOpenGLInitialized
5156
//
5157
function IsOpenGLInitialized: Boolean;
5158
begin
5159
   Result:=(GLHandle<>INVALID_MODULEHANDLE);
5160
end;
5161

5162
// compatibility routines
5163

5164
// UnloadOpenGL
5165
//
5166
procedure UnloadOpenGL;
5167
begin
5168
   CloseOpenGL;
5169
end;
5170

5171
// LoadOpenGL
5172
//
5173
function LoadOpenGL: Boolean;
5174
begin
5175
   Result := InitOpenGL;
5176
end;
5177

5178
// LoadOpenGLFromLibrary
5179
//
5180
function LoadOpenGLFromLibrary(GLName, GLUName: String): Boolean;
5181
begin
5182
   Result := InitOpenGLFromLibrary(GLName, GLUName);
5183
end;
5184

5185
// IsOpenGLLoaded
5186
//
5187
function IsOpenGLLoaded: Boolean;
5188
begin
5189
  Result := IsOpenGLInitialized();
5190
end;
5191

5192
// IsMesaGL
5193
//
5194
function IsMesaGL : Boolean;
5195
begin
5196
  Result:=GLGetProcAddress('glResizeBuffersMESA')<>nil;
5197
end;
5198

5199
// IsOpenGLVersionMet
5200
//
5201
function IsOpenGLVersionMet(MajorVersion, MinorVersion: Integer): boolean;
5202
var
5203
  Buffer : String;
5204
  GLMajorVersion, GLMinorVersion: Integer;
5205
begin
5206
  buffer:=String(glGetString(GL_VERSION));
5207
  TrimAndSplitVersionString(buffer, GLMajorVersion, GLMinorVersion);
5208
  Result:=IsVersionMet(MajorVersion,MinorVersion,GLMajorVersion,GLMinorVersion);
5209
end;
5210

5211
initialization
5212

5213
   Set8087CW($133F);
5214

5215
finalization
5216

5217
   CloseOpenGL;
5218

5219
end.
5220

5221

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.