0030748: Visualization - Marker displayed in immediate layer ruins QT Quick view...
[occt.git] / src / OpenGl / OpenGl_GlFunctions.hxx
CommitLineData
01ca42b2 1// Created on: 2014-03-17
2// Created by: Kirill GAVRILOV
3// Copyright (c) 2014 OPEN CASCADE SAS
4//
5// This file is part of Open CASCADE Technology software library.
6//
7// This library is free software; you can redistribute it and/or modify it under
8// the terms of the GNU Lesser General Public License version 2.1 as published
9// by the Free Software Foundation, with special exception defined in the file
10// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11// distribution for complete text of the license and disclaimer of any warranty.
12//
13// Alternatively, this file may be used under the terms of Open CASCADE
14// commercial license or contractual agreement.
15
16#ifndef _OpenGl_GlFunctions_Header
17#define _OpenGl_GlFunctions_Header
18
19// required for correct APIENTRY definition
20#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
21 #define WIN32_LEAN_AND_MEAN
22 #include <windows.h>
23#endif
24
1ce0716b 25#include <Standard_Macro.hxx>
26#include <Standard_TypeDef.hxx>
27
01ca42b2 28#ifndef APIENTRY
29 #define APIENTRY
30#endif
31#ifndef APIENTRYP
32 #define APIENTRYP APIENTRY *
33#endif
34#ifndef GLAPI
35 #define GLAPI extern
36#endif
37
38// exclude modern definitions and system-provided glext.h, should be defined before gl.h inclusion
9fd2d2c3 39#ifndef GL_GLEXT_LEGACY
40 #define GL_GLEXT_LEGACY
41#endif
42#ifndef GLX_GLXEXT_LEGACY
43 #define GLX_GLXEXT_LEGACY
44#endif
01ca42b2 45
46// include main OpenGL header provided with system
47#if defined(__APPLE__)
a2e4f780 48 #import <TargetConditionals.h>
42451ec0 49 // macOS 10.4 deprecated OpenGL framework - suppress useless warnings
50 #define GL_SILENCE_DEPRECATION
a2e4f780 51 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
52 #include <OpenGLES/ES2/gl.h>
53 #else
54 #include <OpenGL/gl.h>
a2e4f780 55 #endif
01ca42b2 56 #define __X_GL_H // prevent chaotic gl.h inclusions to avoid compile errors
1ce0716b 57#elif defined(HAVE_GLES2) || defined(OCCT_UWP) || defined(__ANDROID__) || defined(__QNX__)
58 #if defined(_WIN32)
59 // Angle OpenGL ES headers do not define function prototypes even for core functions,
60 // however OCCT is expected to be linked against libGLESv2
61 #define GL_GLEXT_PROTOTYPES
62 #endif
ca3c13d1 63 #include <GLES2/gl2.h>
64 //#include <GLES3/gl3.h>
a2e4f780 65#else
66 #include <GL/gl.h>
a2e4f780 67#endif
ca3c13d1 68
a2e4f780 69#if defined(GL_ES_VERSION_2_0)
70 // define items to unify code paths with desktop OpenGL
ca3c13d1 71 typedef double GLdouble;
72 typedef double GLclampd;
25ef750e 73 typedef uint64_t GLuint64;
ca3c13d1 74 #define GL_NONE 0
75
76 // OpenGL ES 3.0+ or GL_OES_element_index_uint extension
77 #define GL_UNSIGNED_INT 0x1405
78
3c4b62a4 79 // OpenGL ES 3.1+
80 #define GL_TEXTURE_2D_MULTISAMPLE 0x9100
81 #define GL_MAX_SAMPLES 0x8D57
82
20aeeb7b 83 // OpenGL ES 3.2+ or GL_EXT_texture_buffer for OpenGL ES 3.1+
84 #define GL_TEXTURE_BUFFER 0x8C2A
85
ca3c13d1 86 // in core since OpenGL ES 3.0, extension GL_EXT_texture_rg
87 #define GL_RED 0x1903
88 #define GL_R8 0x8229
89 // in core since OpenGL ES 3.0, extension GL_OES_rgb8_rgba8
90 #define GL_RGB8 0x8051
91 #define GL_RGBA8 0x8058
bbe97edd 92 #define GL_LUMINANCE8 0x8040
ca3c13d1 93 // GL_EXT_texture_format_BGRA8888
94 #define GL_BGRA_EXT 0x80E1 // same as GL_BGRA on desktop
95
96 #define GL_R16 0x822A
97 #define GL_R16F 0x822D
98 #define GL_R32F 0x822E
99 #define GL_RGB16F 0x881B
100 #define GL_RGBA32F 0x8814
101 #define GL_RGB32F 0x8815
102 #define GL_RGBA16F 0x881A
103 #define GL_RGB16F 0x881B
104 #define GL_RGB4 0x804F
105 #define GL_RGB5 0x8050
106 #define GL_RGB8 0x8051
107 #define GL_RGB10 0x8052
108 #define GL_RGB12 0x8053
109 #define GL_RGB16 0x8054
110 #define GL_RGBA8 0x8058
111 #define GL_RGB10_A2 0x8059
112 #define GL_RGBA12 0x805A
113 #define GL_RGBA16 0x805B
114 #define GL_ALPHA8 0x803C
115 #define GL_ALPHA16 0x803E
116
3a9b5dc8 117 #define GL_RG 0x8227
118 #define GL_RG8 0x822B
119 #define GL_RG16 0x822C
120 #define GL_RG16F 0x822F
121 #define GL_RG32F 0x8230
122 #define GL_RG_INTEGER 0x8228
123 #define GL_RED_INTEGER 0x8D94
ca3c13d1 124
df45f8db 125 #define GL_R8I 0x8231
126 #define GL_R8UI 0x8232
127 #define GL_R16I 0x8233
128 #define GL_R16UI 0x8234
20aeeb7b 129 #define GL_R32I 0x8235
df45f8db 130 #define GL_R32UI 0x8236
131 #define GL_RG8I 0x8237
132 #define GL_RG8UI 0x8238
133 #define GL_RG16I 0x8239
134 #define GL_RG16UI 0x823A
20aeeb7b 135 #define GL_RG32I 0x823B
df45f8db 136 #define GL_RG32UI 0x823C
4bcd0738 137 #define GL_RG8_SNORM 0x8F95
df45f8db 138 #define GL_RGBA32UI 0x8D70
139 #define GL_RGB32UI 0x8D71
140 #define GL_RGBA16UI 0x8D76
141 #define GL_RGB16UI 0x8D77
142 #define GL_RGBA8UI 0x8D7C
143 #define GL_RGB8UI 0x8D7D
20aeeb7b 144 #define GL_RGBA32I 0x8D82
df45f8db 145 #define GL_RGB32I 0x8D83
146 #define GL_RGBA16I 0x8D88
147 #define GL_RGB16I 0x8D89
148 #define GL_RGBA8I 0x8D8E
149 #define GL_RGB8I 0x8D8F
20aeeb7b 150
ca3c13d1 151 // GL_OES_packed_depth_stencil
152 #define GL_DEPTH_STENCIL 0x84F9
153 #define GL_UNSIGNED_INT_24_8 0x84FA
154 #define GL_DEPTH24_STENCIL8 0x88F0
155
3c4b62a4 156 // OpenGL ES 3.0+
2e26cf76 157 #define GL_DEPTH_COMPONENT24 0x81A6
3c4b62a4 158 #define GL_DEPTH_COMPONENT32F 0x8CAC
159 #define GL_DEPTH32F_STENCIL8 0x8CAD
160 #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
161
b86bb3df 162 #define GL_READ_FRAMEBUFFER 0x8CA8
163 #define GL_DRAW_FRAMEBUFFER 0x8CA9
164
74fb257d 165 #define GL_TEXTURE_3D 0x806F
166 #define GL_TEXTURE_WRAP_R 0x8072
167
ca3c13d1 168 // GL_EXT_texture_filter_anisotropic
169 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
170 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
171
172 // debug ARB extension
0deb6f04 173 #define GL_DEBUG_OUTPUT 0x92E0
3b523c4c 174 #define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
175 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
176 #define GL_DEBUG_CALLBACK_FUNCTION 0x8244
177 #define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
178 #define GL_DEBUG_SOURCE_API 0x8246
179 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
180 #define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
181 #define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
182 #define GL_DEBUG_SOURCE_APPLICATION 0x824A
183 #define GL_DEBUG_SOURCE_OTHER 0x824B
184 #define GL_DEBUG_TYPE_ERROR 0x824C
185 #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
186 #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
187 #define GL_DEBUG_TYPE_PORTABILITY 0x824F
188 #define GL_DEBUG_TYPE_PERFORMANCE 0x8250
189 #define GL_DEBUG_TYPE_OTHER 0x8251
190 #define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
191 #define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
192 #define GL_DEBUG_LOGGED_MESSAGES 0x9145
193 #define GL_DEBUG_SEVERITY_HIGH 0x9146
194 #define GL_DEBUG_SEVERITY_MEDIUM 0x9147
195 #define GL_DEBUG_SEVERITY_LOW 0x9148
a1073ae2 196
197 // GL_ARB_draw_buffers (GL_EXT_draw_buffers) extension
198 #define GL_MAX_COLOR_ATTACHMENTS 0x8CDF
199 #define GL_MAX_DRAW_BUFFERS 0x8824
200
177781da 201 // OpenGL ES 3.0+ or OES_texture_half_float
202 #define GL_HALF_FLOAT 0x140B
203 #define GL_HALF_FLOAT_OES 0x8D61
8e0a2b19 204
205 // OpenGL ES 3.1+
206 #define GL_COMPUTE_SHADER 0x91B9
207
208 // OpenGL ES 3.2+
209 #define GL_GEOMETRY_SHADER 0x8DD9
210 #define GL_TESS_CONTROL_SHADER 0x8E88
211 #define GL_TESS_EVALUATION_SHADER 0x8E87
212 #define GL_LINES_ADJACENCY 0x000A
213 #define GL_LINE_STRIP_ADJACENCY 0x000B
214 #define GL_TRIANGLES_ADJACENCY 0x000C
215 #define GL_TRIANGLE_STRIP_ADJACENCY 0x000D
216 #define GL_PATCHES 0x000E
01ca42b2 217#endif
218
1ce0716b 219#if !defined(HAVE_EGL) && (defined(__ANDROID__) || defined(__QNX__) || defined(HAVE_GLES2) || defined(OCCT_UWP))
da8bb41d 220 #define HAVE_EGL
221#endif
222
01ca42b2 223#include <InterfaceGraphic.hxx>
01ca42b2 224
225// GL version can be defined by system gl.h header
ca3c13d1 226#if !defined(GL_ES_VERSION_2_0)
227 #undef GL_VERSION_1_2
228 #undef GL_VERSION_1_3
229 #undef GL_VERSION_1_4
230 #undef GL_VERSION_1_5
231 #undef GL_VERSION_2_0
232 #undef GL_VERSION_2_1
233 #undef GL_VERSION_3_0
234 #undef GL_VERSION_3_1
235 #undef GL_VERSION_3_2
236 #undef GL_VERSION_3_3
237 #undef GL_VERSION_4_0
238 #undef GL_VERSION_4_1
239 #undef GL_VERSION_4_2
240 #undef GL_VERSION_4_3
241 #undef GL_VERSION_4_4
00ea319b 242 #undef GL_VERSION_4_5
ca3c13d1 243
244 // include glext.h provided by Khronos group
245 #include <glext.h>
246#endif
01ca42b2 247
248//! Mega structure defines the complete list of OpenGL functions.
249struct OpenGl_GlFunctions
250{
251
ca3c13d1 252public: //! @name OpenGL ES 1.1
253
254#if defined(GL_ES_VERSION_2_0)
255
256 inline void glActiveTexture (GLenum texture)
257 {
258 ::glActiveTexture (texture);
259 }
260
261 inline void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
262 {
263 ::glCompressedTexImage2D (target, level, internalformat, width, height, border, imageSize, data);
264 }
265
266 inline void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
267 {
268 ::glCompressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, imageSize, data);
269 }
270
271 inline void glBindBuffer (GLenum target, GLuint buffer)
272 {
273 ::glBindBuffer (target, buffer);
274 }
275
276 inline void glBufferData (GLenum target, GLsizeiptr size, const void* data, GLenum usage)
277 {
278 ::glBufferData (target, size, data, usage);
279 }
280
281 inline void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
282 {
283 ::glBufferSubData (target, offset, size, data);
284 }
285
286 inline void glDeleteBuffers (GLsizei n, const GLuint *buffers)
287 {
288 ::glDeleteBuffers (n, buffers);
289 }
290
291 inline void glDeleteTextures (GLsizei n, const GLuint *textures)
292 {
293 ::glDeleteTextures (n, textures);
294 }
295
296 inline void glDepthFunc (GLenum func)
297 {
298 ::glDepthFunc (func);
299 }
300
301 inline void glDepthMask (GLboolean flag)
302 {
303 ::glDepthMask (flag);
304 }
305
306 inline void glDepthRangef (GLfloat n, GLfloat f)
307 {
308 ::glDepthRangef (n, f);
309 }
310
311 inline void glGenBuffers (GLsizei n, GLuint *buffers)
312 {
313 ::glGenBuffers (n, buffers);
314 }
315
316 inline void glGenTextures (GLsizei n, GLuint *textures)
317 {
318 ::glGenTextures (n, textures);
319 }
320
321 inline void glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params)
322 {
323 ::glGetBufferParameteriv (target, pname, params);
324 }
325
326 inline GLboolean glIsBuffer (GLuint buffer)
327 {
328 return ::glIsBuffer (buffer);
329 }
330
331 inline void glSampleCoverage (GLfloat value, GLboolean invert)
332 {
333 ::glSampleCoverage (value, invert);
334 }
335
336 inline void glMultiDrawElements (GLenum theMode, const GLsizei* theCount, GLenum theType, const void* const* theIndices, GLsizei theDrawCount)
337 {
338 if (theCount == NULL
339 || theIndices == NULL)
340 {
341 return;
342 }
343
344 for (GLsizei aBatchIter = 0; aBatchIter < theDrawCount; ++aBatchIter)
345 {
346 ::glDrawElements (theMode, theCount[aBatchIter], theType, theIndices[aBatchIter]);
347 }
348 }
349
350#endif
351
352public: //! @name OpenGL ES 2.0
353
354#if defined(GL_ES_VERSION_2_0)
355 inline void glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
356 {
357 ::glBlendColor (red, green, blue, alpha);
358 }
359
360 inline void glBlendEquation (GLenum mode)
361 {
362 ::glBlendEquation (mode);
363 }
364
365 inline void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
366 {
367 ::glBlendFuncSeparate (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
368 }
369
370 inline void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
371 {
372 ::glBlendEquationSeparate (modeRGB, modeAlpha);
373 }
374
375 inline void glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
376 {
377 ::glStencilOpSeparate (face, sfail, dpfail, dppass);
378 }
379
380 inline void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask)
381 {
382 ::glStencilFuncSeparate (face, func, ref, mask);
383 }
384
385 inline void glStencilMaskSeparate (GLenum face, GLuint mask)
386 {
387 ::glStencilMaskSeparate (face, mask);
388 }
389
390 inline void glAttachShader (GLuint program, GLuint shader)
391 {
392 ::glAttachShader (program, shader);
393 }
394
395 inline void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name)
396 {
397 ::glBindAttribLocation (program, index, name);
398 }
399
400 inline void glBindFramebuffer (GLenum target, GLuint framebuffer)
401 {
402 ::glBindFramebuffer (target, framebuffer);
403 }
404
405 inline void glBindRenderbuffer (GLenum target, GLuint renderbuffer)
406 {
407 ::glBindRenderbuffer (target, renderbuffer);
408 }
409
410 inline GLenum glCheckFramebufferStatus (GLenum target)
411 {
412 return ::glCheckFramebufferStatus (target);
413 }
414
415 inline void glCompileShader (GLuint shader)
416 {
417 ::glCompileShader (shader);
418 }
419
420 inline GLuint glCreateProgram()
421 {
422 return ::glCreateProgram();
423 }
424
425 inline GLuint glCreateShader (GLenum type)
426 {
427 return ::glCreateShader (type);
428 }
429
430 inline void glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers)
431 {
432 ::glDeleteFramebuffers (n, framebuffers);
433 }
434
435 inline void glDeleteProgram (GLuint program)
436 {
437 ::glDeleteProgram (program);
438 }
439
440 inline void glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers)
441 {
442 ::glDeleteRenderbuffers (n, renderbuffers);
443 }
444
445 inline void glDeleteShader (GLuint shader)
446 {
447 ::glDeleteShader (shader);
448 }
449
450 inline void glDetachShader (GLuint program, GLuint shader)
451 {
452 ::glDetachShader (program, shader);
453 }
454
455 inline void glDisableVertexAttribArray (GLuint index)
456 {
457 ::glDisableVertexAttribArray (index);
458 }
459
460 inline void glEnableVertexAttribArray (GLuint index)
461 {
462 ::glEnableVertexAttribArray (index);
463 }
464
465 inline void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
466 {
467 ::glFramebufferRenderbuffer (target, attachment, renderbuffertarget, renderbuffer);
468 }
469
470 inline void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
471 {
472 ::glFramebufferTexture2D (target, attachment, textarget, texture, level);
473 }
474
475 inline void glGenerateMipmap (GLenum target)
476 {
477 ::glGenerateMipmap (target);
478 }
479
480 inline void glGenFramebuffers (GLsizei n, GLuint *framebuffers)
481 {
482 ::glGenFramebuffers (n, framebuffers);
483 }
484
485 inline void glGenRenderbuffers (GLsizei n, GLuint *renderbuffers)
486 {
487 ::glGenRenderbuffers (n, renderbuffers);
488 }
489
490 inline void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name)
491 {
492 ::glGetActiveAttrib (program, index, bufSize, length, size, type, name);
493 }
494
495 inline void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name)
496 {
497 ::glGetActiveUniform (program, index, bufSize, length, size, type, name);
498 }
499
500 inline void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)
501 {
502 ::glGetAttachedShaders (program, maxCount, count, shaders);
503 }
504
505 inline GLint glGetAttribLocation (GLuint program, const GLchar *name)
506 {
507 return ::glGetAttribLocation (program, name);
508 }
509
510 inline void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params)
511 {
512 ::glGetFramebufferAttachmentParameteriv (target, attachment, pname, params);
513 }
514
515 inline void glGetProgramiv (GLuint program, GLenum pname, GLint* params)
516 {
517 ::glGetProgramiv (program, pname, params);
518 }
519
520 inline void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
521 {
522 ::glGetProgramInfoLog (program, bufSize, length, infoLog);
523 }
524
525 inline void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params)
526 {
527 ::glGetRenderbufferParameteriv (target, pname, params);
528 }
529
530 inline void glGetShaderiv (GLuint shader, GLenum pname, GLint* params)
531 {
532 ::glGetShaderiv (shader, pname, params);
533 }
534
535 inline void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
536 {
537 ::glGetShaderInfoLog (shader, bufSize, length, infoLog);
538 }
539
540 inline void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
541 {
542 ::glGetShaderPrecisionFormat (shadertype, precisiontype, range, precision);
543 }
544
545 inline void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
546 {
547 ::glGetShaderSource (shader, bufSize, length, source);
548 }
549
550 inline void glGetUniformfv (GLuint program, GLint location, GLfloat* params)
551 {
552 ::glGetUniformfv (program, location, params);
553 }
554
555 inline void glGetUniformiv (GLuint program, GLint location, GLint* params)
556 {
557 ::glGetUniformiv (program, location, params);
558 }
559
560 GLint glGetUniformLocation (GLuint program, const GLchar *name)
561 {
562 return ::glGetUniformLocation (program, name);
563 }
564
565 inline void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params)
566 {
567 ::glGetVertexAttribfv (index, pname, params);
568 }
569
570 inline void glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params)
571 {
572 ::glGetVertexAttribiv (index, pname, params);
573 }
574
575 inline void glGetVertexAttribPointerv (GLuint index, GLenum pname, void* *pointer)
576 {
577 ::glGetVertexAttribPointerv (index, pname, pointer);
578 }
579
580 inline GLboolean glIsFramebuffer (GLuint framebuffer)
581 {
582 return ::glIsFramebuffer (framebuffer);
583 }
584
585 inline GLboolean glIsProgram (GLuint program)
586 {
587 return ::glIsProgram (program);
588 }
589
590 inline GLboolean glIsRenderbuffer (GLuint renderbuffer)
591 {
592 return ::glIsRenderbuffer (renderbuffer);
593 }
594
595 inline GLboolean glIsShader (GLuint shader)
596 {
597 return ::glIsShader (shader);
598 }
599
600 inline void glLinkProgram (GLuint program)
601 {
602 ::glLinkProgram (program);
603 }
604
605 inline void glReleaseShaderCompiler()
606 {
607 ::glReleaseShaderCompiler();
608 }
609
610 inline void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
611 {
612 ::glRenderbufferStorage (target, internalformat, width, height);
613 }
614
615 inline void glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void* binary, GLsizei length)
616 {
617 ::glShaderBinary (count, shaders, binaryformat, binary, length);
618 }
619
620 inline void glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
621 {
622 ::glShaderSource (shader, count, string, length);
623 }
624
625 inline void glUniform1f (GLint location, GLfloat v0)
626 {
627 ::glUniform1f (location, v0);
628 }
629
630 inline void glUniform1fv (GLint location, GLsizei count, const GLfloat* value)
631 {
632 ::glUniform1fv (location, count, value);
633 }
634
635 inline void glUniform1i (GLint location, GLint v0)
636 {
637 ::glUniform1i (location, v0);
638 }
639
640 inline void glUniform1iv (GLint location, GLsizei count, const GLint* value)
641 {
642 ::glUniform1iv (location, count, value);
643 }
644
645 inline void glUniform2f (GLint location, GLfloat v0, GLfloat v1)
646 {
647 ::glUniform2f (location, v0, v1);
648 }
649
650 inline void glUniform2fv (GLint location, GLsizei count, const GLfloat* value)
651 {
652 ::glUniform2fv (location, count, value);
653 }
654
655 inline void glUniform2i (GLint location, GLint v0, GLint v1)
656 {
657 ::glUniform2i (location, v0, v1);
658 }
659
660 inline void glUniform2iv (GLint location, GLsizei count, const GLint* value)
661 {
662 ::glUniform2iv (location, count, value);
663 }
664
665 inline void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
666 {
667 ::glUniform3f (location, v0, v1, v2);
668 }
669
670 inline void glUniform3fv (GLint location, GLsizei count, const GLfloat* value)
671 {
672 ::glUniform3fv (location, count, value);
673 }
674
675 inline void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2)
676 {
677 ::glUniform3i (location, v0, v1, v2);
678 }
679
680 inline void glUniform3iv (GLint location, GLsizei count, const GLint* value)
681 {
682 ::glUniform3iv (location, count, value);
683 }
684
685 inline void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
686 {
687 ::glUniform4f (location, v0, v1, v2, v3);
688 }
689
690 inline void glUniform4fv (GLint location, GLsizei count, const GLfloat* value)
691 {
692 ::glUniform4fv (location, count, value);
693 }
694
695 inline void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
696 {
697 ::glUniform4i (location, v0, v1, v2, v3);
698 }
699
700 inline void glUniform4iv (GLint location, GLsizei count, const GLint* value)
701 {
702 ::glUniform4iv (location, count, value);
703 }
704
705 inline void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
706 {
707 ::glUniformMatrix2fv (location, count, transpose, value);
708 }
709
710 inline void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
711 {
712 ::glUniformMatrix3fv (location, count, transpose, value);
713 }
714
715 inline void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
716 {
717 ::glUniformMatrix4fv (location, count, transpose, value);
718 }
719
720 inline void glUseProgram (GLuint program)
721 {
722 ::glUseProgram (program);
723 }
724
725 inline void glValidateProgram (GLuint program)
726 {
727 ::glValidateProgram (program);
728 }
729
730 inline void glVertexAttrib1f (GLuint index, GLfloat x)
731 {
732 ::glVertexAttrib1f (index, x);
733 }
734
735 inline void glVertexAttrib1fv (GLuint index, const GLfloat* v)
736 {
737 ::glVertexAttrib1fv (index, v);
738 }
739
740 inline void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y)
741 {
742 ::glVertexAttrib2f (index, x, y);
743 }
744
745 inline void glVertexAttrib2fv (GLuint index, const GLfloat* v)
746 {
747 ::glVertexAttrib2fv (index, v);
748 }
749
750 inline void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z)
751 {
752 ::glVertexAttrib3f (index, x, y, z);
753 }
754
755 inline void glVertexAttrib3fv (GLuint index, const GLfloat* v)
756 {
757 ::glVertexAttrib3fv (index, v);
758 }
759
760 inline void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
761 {
762 ::glVertexAttrib4f (index, x, y, z, w);
763 }
764
765 inline void glVertexAttrib4fv (GLuint index, const GLfloat* v)
766 {
767 ::glVertexAttrib4fv (index, v);
768 }
769
770 inline void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer)
771 {
772 ::glVertexAttribPointer (index, size, type, normalized, stride, pointer);
773 }
774
b86bb3df 775public: //! @name OpenGL ES 3.0
776
6cde53c4 777 typedef void (APIENTRY *glBlitFramebuffer_t)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
b86bb3df 778 glBlitFramebuffer_t glBlitFramebuffer;
779
6cde53c4 780 typedef void (APIENTRY *glTexImage3D_t)(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* data);
74fb257d 781 glTexImage3D_t glTexImage3D;
782
6cde53c4 783 typedef void (APIENTRY *glDrawBuffers_t)(GLsizei n, const GLenum* bufs);
a1073ae2 784 glDrawBuffers_t glDrawBuffers;
785
6cde53c4 786 typedef void (APIENTRY *glGenSamplers_t)(GLsizei count, GLuint* samplers);
cc8cbabe 787 glGenSamplers_t glGenSamplers;
788
6cde53c4 789 typedef void (APIENTRY *glDeleteSamplers_t)(GLsizei count, const GLuint* samplers);
cc8cbabe 790 glDeleteSamplers_t glDeleteSamplers;
791
6cde53c4 792 typedef GLboolean (APIENTRY *glIsSampler_t)(GLuint sampler);
cc8cbabe 793 glIsSampler_t glIsSampler;
794
6cde53c4 795 typedef void (APIENTRY *glBindSampler_t)(GLuint unit, GLuint sampler);
cc8cbabe 796 glBindSampler_t glBindSampler;
797
6cde53c4 798 typedef void (APIENTRY *glSamplerParameteri_t)(GLuint sampler, GLenum pname, GLint param);
cc8cbabe 799 glSamplerParameteri_t glSamplerParameteri;
800
6cde53c4 801 typedef void (APIENTRY *glSamplerParameteriv_t)(GLuint sampler, GLenum pname, const GLint* param);
cc8cbabe 802 glSamplerParameteriv_t glSamplerParameteriv;
803
6cde53c4 804 typedef void (APIENTRY *glSamplerParameterf_t)(GLuint sampler, GLenum pname, GLfloat param);
cc8cbabe 805 glSamplerParameterf_t glSamplerParameterf;
806
6cde53c4 807 typedef void (APIENTRY *glSamplerParameterfv_t)(GLuint sampler, GLenum pname, const GLfloat* param);
cc8cbabe 808 glSamplerParameterfv_t glSamplerParameterfv;
809
6cde53c4 810 typedef void (APIENTRY *glGetSamplerParameteriv_t)(GLuint sampler, GLenum pname, GLint* params);
cc8cbabe 811 glGetSamplerParameteriv_t glGetSamplerParameteriv;
812
6cde53c4 813 typedef void (APIENTRY *glGetSamplerParameterfv_t)(GLuint sampler, GLenum pname, GLfloat* params);
cc8cbabe 814 glGetSamplerParameterfv_t glGetSamplerParameterfv;
815
3c4b62a4 816public: //! @name OpenGL ES 3.1
817
6cde53c4 818 typedef void (APIENTRY *glTexStorage2DMultisample_t)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
3c4b62a4 819 glTexStorage2DMultisample_t glTexStorage2DMultisample;
820
20aeeb7b 821public: //! @name OpenGL ES 3.2
822
6cde53c4 823 typedef void (APIENTRY *glTexBuffer_t)(GLenum target, GLenum internalFormat, GLuint buffer);
20aeeb7b 824 glTexBuffer_t glTexBuffer;
825
0deb6f04 826public: //! @name GL_KHR_debug (optional)
827
828 typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam);
829
830 typedef void (APIENTRYP glDebugMessageControl_t ) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
831 typedef void (APIENTRYP glDebugMessageInsert_t ) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
832 typedef void (APIENTRYP glDebugMessageCallback_t) (GLDEBUGPROCARB callback, const void* userParam);
833 typedef GLuint (APIENTRYP glGetDebugMessageLog_t ) (GLuint count,
834 GLsizei bufSize,
835 GLenum* sources,
836 GLenum* types,
837 GLuint* ids,
838 GLenum* severities,
839 GLsizei* lengths,
840 GLchar* messageLog);
841
842 glDebugMessageControl_t glDebugMessageControl;
843 glDebugMessageInsert_t glDebugMessageInsert;
844 glDebugMessageCallback_t glDebugMessageCallback;
845 glGetDebugMessageLog_t glGetDebugMessageLog;
846
ca3c13d1 847#else // OpenGL ES vs. desktop
848
01ca42b2 849public: //! @name OpenGL 1.2
850
851 PFNGLBLENDCOLORPROC glBlendColor;
852 PFNGLBLENDEQUATIONPROC glBlendEquation;
853 PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
854 PFNGLTEXIMAGE3DPROC glTexImage3D;
855 PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
856 PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
857
858public: //! @name OpenGL 1.3
859
860 PFNGLACTIVETEXTUREPROC glActiveTexture;
861 PFNGLSAMPLECOVERAGEPROC glSampleCoverage;
862 PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
863 PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
864 PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D;
865 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
866 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
867 PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
868 PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;
869
870 PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture;
871 PFNGLMULTITEXCOORD1DPROC glMultiTexCoord1d;
872 PFNGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv;
873 PFNGLMULTITEXCOORD1FPROC glMultiTexCoord1f;
874 PFNGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv;
875 PFNGLMULTITEXCOORD1IPROC glMultiTexCoord1i;
876 PFNGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv;
877 PFNGLMULTITEXCOORD1SPROC glMultiTexCoord1s;
878 PFNGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv;
879 PFNGLMULTITEXCOORD2DPROC glMultiTexCoord2d;
880 PFNGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv;
881 PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f;
882 PFNGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv;
883 PFNGLMULTITEXCOORD2IPROC glMultiTexCoord2i;
884 PFNGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv;
885 PFNGLMULTITEXCOORD2SPROC glMultiTexCoord2s;
886 PFNGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv;
887 PFNGLMULTITEXCOORD3DPROC glMultiTexCoord3d;
888 PFNGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv;
889 PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f;
890 PFNGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv;
891 PFNGLMULTITEXCOORD3IPROC glMultiTexCoord3i;
892 PFNGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv;
893 PFNGLMULTITEXCOORD3SPROC glMultiTexCoord3s;
894 PFNGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv;
895 PFNGLMULTITEXCOORD4DPROC glMultiTexCoord4d;
896 PFNGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv;
897 PFNGLMULTITEXCOORD4FPROC glMultiTexCoord4f;
898 PFNGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv;
899 PFNGLMULTITEXCOORD4IPROC glMultiTexCoord4i;
900 PFNGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv;
901 PFNGLMULTITEXCOORD4SPROC glMultiTexCoord4s;
902 PFNGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv;
903 PFNGLLOADTRANSPOSEMATRIXFPROC glLoadTransposeMatrixf;
904 PFNGLLOADTRANSPOSEMATRIXDPROC glLoadTransposeMatrixd;
905 PFNGLMULTTRANSPOSEMATRIXFPROC glMultTransposeMatrixf;
906 PFNGLMULTTRANSPOSEMATRIXDPROC glMultTransposeMatrixd;
907
908public: //! @name OpenGL 1.4
909
910 PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
911 PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays;
912 PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
913 PFNGLPOINTPARAMETERFPROC glPointParameterf;
914 PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
915 PFNGLPOINTPARAMETERIPROC glPointParameteri;
916 PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
917
918public: //! @name OpenGL 1.5
919
920 PFNGLGENQUERIESPROC glGenQueries;
921 PFNGLDELETEQUERIESPROC glDeleteQueries;
922 PFNGLISQUERYPROC glIsQuery;
923 PFNGLBEGINQUERYPROC glBeginQuery;
924 PFNGLENDQUERYPROC glEndQuery;
925 PFNGLGETQUERYIVPROC glGetQueryiv;
926 PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
927 PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
928 PFNGLBINDBUFFERPROC glBindBuffer;
929 PFNGLDELETEBUFFERSPROC glDeleteBuffers;
930 PFNGLGENBUFFERSPROC glGenBuffers;
931 PFNGLISBUFFERPROC glIsBuffer;
932 PFNGLBUFFERDATAPROC glBufferData;
933 PFNGLBUFFERSUBDATAPROC glBufferSubData;
934 PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
935 PFNGLMAPBUFFERPROC glMapBuffer;
936 PFNGLUNMAPBUFFERPROC glUnmapBuffer;
937 PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
938 PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
939
940public: //! @name OpenGL 2.0
941
942 PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
943 PFNGLDRAWBUFFERSPROC glDrawBuffers;
944 PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
945 PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
946 PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate;
947 PFNGLATTACHSHADERPROC glAttachShader;
948 PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
949 PFNGLCOMPILESHADERPROC glCompileShader;
950 PFNGLCREATEPROGRAMPROC glCreateProgram;
951 PFNGLCREATESHADERPROC glCreateShader;
952 PFNGLDELETEPROGRAMPROC glDeleteProgram;
953 PFNGLDELETESHADERPROC glDeleteShader;
954 PFNGLDETACHSHADERPROC glDetachShader;
955 PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
956 PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
957 PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
958 PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
959 PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
960 PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
961 PFNGLGETPROGRAMIVPROC glGetProgramiv;
962 PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
963 PFNGLGETSHADERIVPROC glGetShaderiv;
964 PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
965 PFNGLGETSHADERSOURCEPROC glGetShaderSource;
966 PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
967 PFNGLGETUNIFORMFVPROC glGetUniformfv;
968 PFNGLGETUNIFORMIVPROC glGetUniformiv;
969 PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
970 PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
971 PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
972 PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
973 PFNGLISPROGRAMPROC glIsProgram;
974 PFNGLISSHADERPROC glIsShader;
975 PFNGLLINKPROGRAMPROC glLinkProgram;
976 PFNGLSHADERSOURCEPROC glShaderSource;
977 PFNGLUSEPROGRAMPROC glUseProgram;
978 PFNGLUNIFORM1FPROC glUniform1f;
979 PFNGLUNIFORM2FPROC glUniform2f;
980 PFNGLUNIFORM3FPROC glUniform3f;
981 PFNGLUNIFORM4FPROC glUniform4f;
982 PFNGLUNIFORM1IPROC glUniform1i;
983 PFNGLUNIFORM2IPROC glUniform2i;
984 PFNGLUNIFORM3IPROC glUniform3i;
985 PFNGLUNIFORM4IPROC glUniform4i;
986 PFNGLUNIFORM1FVPROC glUniform1fv;
987 PFNGLUNIFORM2FVPROC glUniform2fv;
988 PFNGLUNIFORM3FVPROC glUniform3fv;
989 PFNGLUNIFORM4FVPROC glUniform4fv;
990 PFNGLUNIFORM1IVPROC glUniform1iv;
991 PFNGLUNIFORM2IVPROC glUniform2iv;
992 PFNGLUNIFORM3IVPROC glUniform3iv;
993 PFNGLUNIFORM4IVPROC glUniform4iv;
994 PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
995 PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
996 PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
997 PFNGLVALIDATEPROGRAMPROC glValidateProgram;
998 PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d;
999 PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
1000 PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f;
1001 PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
1002 PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s;
1003 PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv;
1004 PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d;
1005 PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
1006 PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f;
1007 PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
1008 PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s;
1009 PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv;
1010 PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d;
1011 PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
1012 PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f;
1013 PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
1014 PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s;
1015 PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv;
1016 PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv;
1017 PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv;
1018 PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv;
1019 PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub;
1020 PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv;
1021 PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv;
1022 PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv;
1023 PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv;
1024 PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d;
1025 PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
1026 PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f;
1027 PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
1028 PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv;
1029 PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s;
1030 PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv;
1031 PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv;
1032 PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv;
1033 PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv;
1034 PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
1035
1036public: //! @name OpenGL 2.1
1037
1038 PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
1039 PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
1040 PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
1041 PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
1042 PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
1043 PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
1044
1045public: //! @name GL_ARB_framebuffer_object (added to OpenGL 3.0 core)
1046
1047 PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
1048 PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
1049 PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
1050 PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
1051 PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
1052 PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
1053 PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
1054 PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
1055 PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
1056 PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
1057 PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
1058 PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
1059 PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
1060 PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
1061 PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
1062 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
1063 PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
1064 PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
1065 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
1066 PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
1067
1068public: //! @name GL_ARB_vertex_array_object (added to OpenGL 3.0 core)
1069
1070 PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
1071 PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
1072 PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
1073 PFNGLISVERTEXARRAYPROC glIsVertexArray;
1074
1075public: //! @name GL_ARB_map_buffer_range (added to OpenGL 3.0 core)
1076
1077 PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
1078 PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
1079
1080public: //! @name OpenGL 3.0
1081
1082 PFNGLCOLORMASKIPROC glColorMaski;
1083 PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
1084 PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
1085 PFNGLENABLEIPROC glEnablei;
1086 PFNGLDISABLEIPROC glDisablei;
1087 PFNGLISENABLEDIPROC glIsEnabledi;
1088 PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
1089 PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
1090 PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
1091 PFNGLBINDBUFFERBASEPROC glBindBufferBase;
1092 PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
1093 PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
1094 PFNGLCLAMPCOLORPROC glClampColor;
1095 PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
1096 PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
1097 PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
1098 PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
1099 PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
1100 PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i;
1101 PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i;
1102 PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i;
1103 PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
1104 PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui;
1105 PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui;
1106 PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui;
1107 PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
1108 PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
1109 PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
1110 PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
1111 PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
1112 PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
1113 PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
1114 PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
1115 PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
1116 PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv;
1117 PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv;
1118 PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv;
1119 PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv;
1120 PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
1121 PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
1122 PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
1123 PFNGLUNIFORM1UIPROC glUniform1ui;
1124 PFNGLUNIFORM2UIPROC glUniform2ui;
1125 PFNGLUNIFORM3UIPROC glUniform3ui;
1126 PFNGLUNIFORM4UIPROC glUniform4ui;
1127 PFNGLUNIFORM1UIVPROC glUniform1uiv;
1128 PFNGLUNIFORM2UIVPROC glUniform2uiv;
1129 PFNGLUNIFORM3UIVPROC glUniform3uiv;
1130 PFNGLUNIFORM4UIVPROC glUniform4uiv;
1131 PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
1132 PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
1133 PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
1134 PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
1135 PFNGLCLEARBUFFERIVPROC glClearBufferiv;
1136 PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
1137 PFNGLCLEARBUFFERFVPROC glClearBufferfv;
1138 PFNGLCLEARBUFFERFIPROC glClearBufferfi;
1139 PFNGLGETSTRINGIPROC glGetStringi;
1140
1141public: //! @name GL_ARB_uniform_buffer_object (added to OpenGL 3.1 core)
1142
1143 PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
1144 PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
1145 PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
1146 PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
1147 PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
1148 PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
1149 PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
1150
1151public: //! @name GL_ARB_copy_buffer (added to OpenGL 3.1 core)
1152
1153 PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
1154
1155public: //! @name OpenGL 3.1
1156
1157 PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
1158 PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
1159 PFNGLTEXBUFFERPROC glTexBuffer;
1160 PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
1161
1162public: //! @name GL_ARB_draw_elements_base_vertex (added to OpenGL 3.2 core)
1163
1164 PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
1165 PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
1166 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
1167 PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
1168
1169public: //! @name GL_ARB_provoking_vertex (added to OpenGL 3.2 core)
1170
1171 PFNGLPROVOKINGVERTEXPROC glProvokingVertex;
1172
1173public: //! @name GL_ARB_sync (added to OpenGL 3.2 core)
1174
1175 PFNGLFENCESYNCPROC glFenceSync;
1176 PFNGLISSYNCPROC glIsSync;
1177 PFNGLDELETESYNCPROC glDeleteSync;
1178 PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
1179 PFNGLWAITSYNCPROC glWaitSync;
1180 PFNGLGETINTEGER64VPROC glGetInteger64v;
1181 PFNGLGETSYNCIVPROC glGetSynciv;
1182
1183public: //! @name GL_ARB_texture_multisample (added to OpenGL 3.2 core)
1184
1185 PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
1186 PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
1187 PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
1188 PFNGLSAMPLEMASKIPROC glSampleMaski;
1189
1190public: //! @name OpenGL 3.2
1191
1192 PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
1193 PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
1194 PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
1195
1196public: //! @name GL_ARB_blend_func_extended (added to OpenGL 3.3 core)
1197
1198 PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
1199 PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
1200
1201public: //! @name GL_ARB_sampler_objects (added to OpenGL 3.3 core)
1202
1203 PFNGLGENSAMPLERSPROC glGenSamplers;
1204 PFNGLDELETESAMPLERSPROC glDeleteSamplers;
1205 PFNGLISSAMPLERPROC glIsSampler;
1206 PFNGLBINDSAMPLERPROC glBindSampler;
1207 PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
1208 PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
1209 PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
1210 PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
1211 PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
1212 PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
1213 PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
1214 PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
1215 PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
1216 PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
1217
1218public: //! @name GL_ARB_timer_query (added to OpenGL 3.3 core)
1219
1220 PFNGLQUERYCOUNTERPROC glQueryCounter;
1221 PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
1222 PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
1223
1224public: //! @name GL_ARB_vertex_type_2_10_10_10_rev (added to OpenGL 3.3 core)
1225
1226 PFNGLVERTEXP2UIPROC glVertexP2ui;
1227 PFNGLVERTEXP2UIVPROC glVertexP2uiv;
1228 PFNGLVERTEXP3UIPROC glVertexP3ui;
1229 PFNGLVERTEXP3UIVPROC glVertexP3uiv;
1230 PFNGLVERTEXP4UIPROC glVertexP4ui;
1231 PFNGLVERTEXP4UIVPROC glVertexP4uiv;
1232 PFNGLTEXCOORDP1UIPROC glTexCoordP1ui;
1233 PFNGLTEXCOORDP1UIVPROC glTexCoordP1uiv;
1234 PFNGLTEXCOORDP2UIPROC glTexCoordP2ui;
1235 PFNGLTEXCOORDP2UIVPROC glTexCoordP2uiv;
1236 PFNGLTEXCOORDP3UIPROC glTexCoordP3ui;
1237 PFNGLTEXCOORDP3UIVPROC glTexCoordP3uiv;
1238 PFNGLTEXCOORDP4UIPROC glTexCoordP4ui;
1239 PFNGLTEXCOORDP4UIVPROC glTexCoordP4uiv;
1240 PFNGLMULTITEXCOORDP1UIPROC glMultiTexCoordP1ui;
1241 PFNGLMULTITEXCOORDP1UIVPROC glMultiTexCoordP1uiv;
1242 PFNGLMULTITEXCOORDP2UIPROC glMultiTexCoordP2ui;
1243 PFNGLMULTITEXCOORDP2UIVPROC glMultiTexCoordP2uiv;
1244 PFNGLMULTITEXCOORDP3UIPROC glMultiTexCoordP3ui;
1245 PFNGLMULTITEXCOORDP3UIVPROC glMultiTexCoordP3uiv;
1246 PFNGLMULTITEXCOORDP4UIPROC glMultiTexCoordP4ui;
1247 PFNGLMULTITEXCOORDP4UIVPROC glMultiTexCoordP4uiv;
1248 PFNGLNORMALP3UIPROC glNormalP3ui;
1249 PFNGLNORMALP3UIVPROC glNormalP3uiv;
1250 PFNGLCOLORP3UIPROC glColorP3ui;
1251 PFNGLCOLORP3UIVPROC glColorP3uiv;
1252 PFNGLCOLORP4UIPROC glColorP4ui;
1253 PFNGLCOLORP4UIVPROC glColorP4uiv;
1254 PFNGLSECONDARYCOLORP3UIPROC glSecondaryColorP3ui;
1255 PFNGLSECONDARYCOLORP3UIVPROC glSecondaryColorP3uiv;
1256 PFNGLVERTEXATTRIBP1UIPROC glVertexAttribP1ui;
1257 PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv;
1258 PFNGLVERTEXATTRIBP2UIPROC glVertexAttribP2ui;
1259 PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv;
1260 PFNGLVERTEXATTRIBP3UIPROC glVertexAttribP3ui;
1261 PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv;
1262 PFNGLVERTEXATTRIBP4UIPROC glVertexAttribP4ui;
1263 PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv;
1264
1265public: //! @name OpenGL 3.3
1266
1267 PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
1268
1269public: //! @name GL_ARB_draw_indirect (added to OpenGL 4.0 core)
1270
1271 PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
1272 PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
1273
1274public: //! @name GL_ARB_gpu_shader_fp64 (added to OpenGL 4.0 core)
1275
1276 PFNGLUNIFORM1DPROC glUniform1d;
1277 PFNGLUNIFORM2DPROC glUniform2d;
1278 PFNGLUNIFORM3DPROC glUniform3d;
1279 PFNGLUNIFORM4DPROC glUniform4d;
1280 PFNGLUNIFORM1DVPROC glUniform1dv;
1281 PFNGLUNIFORM2DVPROC glUniform2dv;
1282 PFNGLUNIFORM3DVPROC glUniform3dv;
1283 PFNGLUNIFORM4DVPROC glUniform4dv;
1284 PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
1285 PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
1286 PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
1287 PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
1288 PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
1289 PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
1290 PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
1291 PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
1292 PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
1293 PFNGLGETUNIFORMDVPROC glGetUniformdv;
1294
1295public: //! @name GL_ARB_shader_subroutine (added to OpenGL 4.0 core)
1296
1297 PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glGetSubroutineUniformLocation;
1298 PFNGLGETSUBROUTINEINDEXPROC glGetSubroutineIndex;
1299 PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glGetActiveSubroutineUniformiv;
1300 PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName;
1301 PFNGLGETACTIVESUBROUTINENAMEPROC glGetActiveSubroutineName;
1302 PFNGLUNIFORMSUBROUTINESUIVPROC glUniformSubroutinesuiv;
1303 PFNGLGETUNIFORMSUBROUTINEUIVPROC glGetUniformSubroutineuiv;
1304 PFNGLGETPROGRAMSTAGEIVPROC glGetProgramStageiv;
1305
1306public: //! @name GL_ARB_tessellation_shader (added to OpenGL 4.0 core)
1307
1308 PFNGLPATCHPARAMETERIPROC glPatchParameteri;
1309 PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
1310
1311public: //! @name GL_ARB_transform_feedback2 (added to OpenGL 4.0 core)
1312
1313 PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
1314 PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
1315 PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
1316 PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
1317 PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
1318 PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
1319 PFNGLDRAWTRANSFORMFEEDBACKPROC glDrawTransformFeedback;
1320
1321public: //! @name GL_ARB_transform_feedback3 (added to OpenGL 4.0 core)
1322
1323 PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
1324 PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed;
1325 PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed;
1326 PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv;
1327
1328public: //! @name OpenGL 4.0
1329
1330 PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
1331 PFNGLBLENDEQUATIONIPROC glBlendEquationi;
1332 PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
1333 PFNGLBLENDFUNCIPROC glBlendFunci;
1334 PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
1335
1336public: //! @name GL_ARB_ES2_compatibility (added to OpenGL 4.1 core)
1337
1338 PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
1339 PFNGLSHADERBINARYPROC glShaderBinary;
1340 PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
1341 PFNGLDEPTHRANGEFPROC glDepthRangef;
1342 PFNGLCLEARDEPTHFPROC glClearDepthf;
1343
1344public: //! @name GL_ARB_get_program_binary (added to OpenGL 4.1 core)
1345
1346 PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
1347 PFNGLPROGRAMBINARYPROC glProgramBinary;
1348 PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
1349
1350public: //! @name GL_ARB_separate_shader_objects (added to OpenGL 4.1 core)
1351
1352 PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
1353 PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
1354 PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
1355 PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
1356 PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
1357 PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
1358 PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
1359 PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
1360 PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
1361 PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
1362 PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
1363 PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
1364 PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
1365 PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
1366 PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
1367 PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
1368 PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
1369 PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
1370 PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
1371 PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
1372 PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
1373 PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
1374 PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
1375 PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
1376 PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
1377 PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
1378 PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
1379 PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
1380 PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
1381 PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
1382 PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
1383 PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
1384 PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
1385 PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
1386 PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
1387 PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
1388 PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
1389 PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
1390 PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
1391 PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
1392 PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
1393 PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
1394 PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
1395 PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
1396 PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
1397 PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
1398 PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
1399 PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
1400 PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
1401 PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
1402 PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
1403 PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
1404 PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
1405 PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
1406 PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
1407 PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
1408 PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
1409 PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
1410 PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
1411 PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
1412
1413public: //! @name GL_ARB_vertex_attrib_64bit (added to OpenGL 4.1 core)
1414
1415 PFNGLVERTEXATTRIBL1DPROC glVertexAttribL1d;
1416 PFNGLVERTEXATTRIBL2DPROC glVertexAttribL2d;
1417 PFNGLVERTEXATTRIBL3DPROC glVertexAttribL3d;
1418 PFNGLVERTEXATTRIBL4DPROC glVertexAttribL4d;
1419 PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv;
1420 PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv;
1421 PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv;
1422 PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv;
1423 PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
1424 PFNGLGETVERTEXATTRIBLDVPROC glGetVertexAttribLdv;
1425
1426public: //! @name GL_ARB_viewport_array (added to OpenGL 4.1 core)
1427
1428 PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
1429 PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
1430 PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
1431 PFNGLSCISSORARRAYVPROC glScissorArrayv;
1432 PFNGLSCISSORINDEXEDPROC glScissorIndexed;
1433 PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
1434 PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
1435 PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
1436 PFNGLGETFLOATI_VPROC glGetFloati_v;
1437 PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
1438
1439public: //! @name OpenGL 4.1
1440
1441 //
1442
1443public: //! @name GL_ARB_base_instance (added to OpenGL 4.2 core)
1444
1445 PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
1446 PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
1447 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
1448
1449public: //! @name GL_ARB_transform_feedback_instanced (added to OpenGL 4.2 core)
1450
1451 PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
1452 PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
1453
1454public: //! @name GL_ARB_internalformat_query (added to OpenGL 4.2 core)
1455
1456 PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
1457
1458public: //! @name GL_ARB_shader_atomic_counters (added to OpenGL 4.2 core)
1459
1460 PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
1461
1462public: //! @name GL_ARB_shader_image_load_store (added to OpenGL 4.2 core)
1463
1464 PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
1465 PFNGLMEMORYBARRIERPROC glMemoryBarrier;
1466
1467public: //! @name GL_ARB_texture_storage (added to OpenGL 4.2 core)
1468
1469 PFNGLTEXSTORAGE1DPROC glTexStorage1D;
1470 PFNGLTEXSTORAGE2DPROC glTexStorage2D;
1471 PFNGLTEXSTORAGE3DPROC glTexStorage3D;
01ca42b2 1472
1473public: //! @name OpenGL 4.2
1474
1475public: //! @name OpenGL 4.3
1476
1477 PFNGLCLEARBUFFERDATAPROC glClearBufferData;
1478 PFNGLCLEARBUFFERSUBDATAPROC glClearBufferSubData;
1479 PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
1480 PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
1481 PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
1482 PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
1483 PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
1484 PFNGLGETINTERNALFORMATI64VPROC glGetInternalformati64v;
1485 PFNGLINVALIDATETEXSUBIMAGEPROC glInvalidateTexSubImage;
1486 PFNGLINVALIDATETEXIMAGEPROC glInvalidateTexImage;
1487 PFNGLINVALIDATEBUFFERSUBDATAPROC glInvalidateBufferSubData;
1488 PFNGLINVALIDATEBUFFERDATAPROC glInvalidateBufferData;
1489 PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
1490 PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
1491 PFNGLMULTIDRAWARRAYSINDIRECTPROC glMultiDrawArraysIndirect;
1492 PFNGLMULTIDRAWELEMENTSINDIRECTPROC glMultiDrawElementsIndirect;
1493 PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
1494 PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
1495 PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
1496 PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
1497 PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
1498 PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
1499 PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
1500 PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
1501 PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
1502 PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
1503 PFNGLTEXTUREVIEWPROC glTextureView;
1504 PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
1505 PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
1506 PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
1507 PFNGLVERTEXATTRIBLFORMATPROC glVertexAttribLFormat;
1508 PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
1509 PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
1510 PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
1511 PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
1512 PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
1513 PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
1514 PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
1515 PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
1516 PFNGLOBJECTLABELPROC glObjectLabel;
1517 PFNGLGETOBJECTLABELPROC glGetObjectLabel;
1518 PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
1519 PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
1520
1521public: //! @name OpenGL 4.4
1522
1523 PFNGLBUFFERSTORAGEPROC glBufferStorage;
1524 PFNGLCLEARTEXIMAGEPROC glClearTexImage;
1525 PFNGLCLEARTEXSUBIMAGEPROC glClearTexSubImage;
1526 PFNGLBINDBUFFERSBASEPROC glBindBuffersBase;
1527 PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange;
1528 PFNGLBINDTEXTURESPROC glBindTextures;
1529 PFNGLBINDSAMPLERSPROC glBindSamplers;
1530 PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
1531 PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
1532
9491df8c 1533public: //! @name OpenGL 4.5
1534
1535 PFNGLCLIPCONTROLPROC glClipControl;
1536 PFNGLCREATETRANSFORMFEEDBACKSPROC glCreateTransformFeedbacks;
1537 PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glTransformFeedbackBufferBase;
1538 PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glTransformFeedbackBufferRange;
1539 PFNGLGETTRANSFORMFEEDBACKIVPROC glGetTransformFeedbackiv;
1540 PFNGLGETTRANSFORMFEEDBACKI_VPROC glGetTransformFeedbacki_v;
1541 PFNGLGETTRANSFORMFEEDBACKI64_VPROC glGetTransformFeedbacki64_v;
1542 PFNGLCREATEBUFFERSPROC glCreateBuffers;
1543 PFNGLNAMEDBUFFERSTORAGEPROC glNamedBufferStorage;
1544 PFNGLNAMEDBUFFERDATAPROC glNamedBufferData;
1545 PFNGLNAMEDBUFFERSUBDATAPROC glNamedBufferSubData;
1546 PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData;
1547 PFNGLCLEARNAMEDBUFFERDATAPROC glClearNamedBufferData;
1548 PFNGLCLEARNAMEDBUFFERSUBDATAPROC glClearNamedBufferSubData;
1549 PFNGLMAPNAMEDBUFFERPROC glMapNamedBuffer;
1550 PFNGLMAPNAMEDBUFFERRANGEPROC glMapNamedBufferRange;
1551 PFNGLUNMAPNAMEDBUFFERPROC glUnmapNamedBuffer;
1552 PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glFlushMappedNamedBufferRange;
1553 PFNGLGETNAMEDBUFFERPARAMETERIVPROC glGetNamedBufferParameteriv;
1554 PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v;
1555 PFNGLGETNAMEDBUFFERPOINTERVPROC glGetNamedBufferPointerv;
1556 PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
1557 PFNGLCREATEFRAMEBUFFERSPROC glCreateFramebuffers;
1558 PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glNamedFramebufferRenderbuffer;
1559 PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glNamedFramebufferParameteri;
1560 PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glNamedFramebufferTexture;
1561 PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glNamedFramebufferTextureLayer;
1562 PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer;
1563 PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glNamedFramebufferDrawBuffers;
1564 PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glNamedFramebufferReadBuffer;
1565 PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glInvalidateNamedFramebufferData;
1566 PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glInvalidateNamedFramebufferSubData;
1567 PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glClearNamedFramebufferiv;
1568 PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glClearNamedFramebufferuiv;
1569 PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glClearNamedFramebufferfv;
1570 PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glClearNamedFramebufferfi;
1571 PFNGLBLITNAMEDFRAMEBUFFERPROC glBlitNamedFramebuffer;
1572 PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glCheckNamedFramebufferStatus;
1573 PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glGetNamedFramebufferParameteriv;
1574 PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv;
1575 PFNGLCREATERENDERBUFFERSPROC glCreateRenderbuffers;
1576 PFNGLNAMEDRENDERBUFFERSTORAGEPROC glNamedRenderbufferStorage;
1577 PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glNamedRenderbufferStorageMultisample;
1578 PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glGetNamedRenderbufferParameteriv;
1579 PFNGLCREATETEXTURESPROC glCreateTextures;
1580 PFNGLTEXTUREBUFFERPROC glTextureBuffer;
1581 PFNGLTEXTUREBUFFERRANGEPROC glTextureBufferRange;
1582 PFNGLTEXTURESTORAGE1DPROC glTextureStorage1D;
1583 PFNGLTEXTURESTORAGE2DPROC glTextureStorage2D;
1584 PFNGLTEXTURESTORAGE3DPROC glTextureStorage3D;
1585 PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glTextureStorage2DMultisample;
1586 PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glTextureStorage3DMultisample;
1587 PFNGLTEXTURESUBIMAGE1DPROC glTextureSubImage1D;
1588 PFNGLTEXTURESUBIMAGE2DPROC glTextureSubImage2D;
1589 PFNGLTEXTURESUBIMAGE3DPROC glTextureSubImage3D;
1590 PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glCompressedTextureSubImage1D;
1591 PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glCompressedTextureSubImage2D;
1592 PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glCompressedTextureSubImage3D;
1593 PFNGLCOPYTEXTURESUBIMAGE1DPROC glCopyTextureSubImage1D;
1594 PFNGLCOPYTEXTURESUBIMAGE2DPROC glCopyTextureSubImage2D;
1595 PFNGLCOPYTEXTURESUBIMAGE3DPROC glCopyTextureSubImage3D;
1596 PFNGLTEXTUREPARAMETERFPROC glTextureParameterf;
1597 PFNGLTEXTUREPARAMETERFVPROC glTextureParameterfv;
1598 PFNGLTEXTUREPARAMETERIPROC glTextureParameteri;
1599 PFNGLTEXTUREPARAMETERIIVPROC glTextureParameterIiv;
1600 PFNGLTEXTUREPARAMETERIUIVPROC glTextureParameterIuiv;
1601 PFNGLTEXTUREPARAMETERIVPROC glTextureParameteriv;
1602 PFNGLGENERATETEXTUREMIPMAPPROC glGenerateTextureMipmap;
1603 PFNGLBINDTEXTUREUNITPROC glBindTextureUnit;
1604 PFNGLGETTEXTUREIMAGEPROC glGetTextureImage;
1605 PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glGetCompressedTextureImage;
1606 PFNGLGETTEXTURELEVELPARAMETERFVPROC glGetTextureLevelParameterfv;
1607 PFNGLGETTEXTURELEVELPARAMETERIVPROC glGetTextureLevelParameteriv;
1608 PFNGLGETTEXTUREPARAMETERFVPROC glGetTextureParameterfv;
1609 PFNGLGETTEXTUREPARAMETERIIVPROC glGetTextureParameterIiv;
1610 PFNGLGETTEXTUREPARAMETERIUIVPROC glGetTextureParameterIuiv;
1611 PFNGLGETTEXTUREPARAMETERIVPROC glGetTextureParameteriv;
1612 PFNGLCREATEVERTEXARRAYSPROC glCreateVertexArrays;
1613 PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib;
1614 PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib;
1615 PFNGLVERTEXARRAYELEMENTBUFFERPROC glVertexArrayElementBuffer;
1616 PFNGLVERTEXARRAYVERTEXBUFFERPROC glVertexArrayVertexBuffer;
1617 PFNGLVERTEXARRAYVERTEXBUFFERSPROC glVertexArrayVertexBuffers;
1618 PFNGLVERTEXARRAYATTRIBBINDINGPROC glVertexArrayAttribBinding;
1619 PFNGLVERTEXARRAYATTRIBFORMATPROC glVertexArrayAttribFormat;
1620 PFNGLVERTEXARRAYATTRIBIFORMATPROC glVertexArrayAttribIFormat;
1621 PFNGLVERTEXARRAYATTRIBLFORMATPROC glVertexArrayAttribLFormat;
1622 PFNGLVERTEXARRAYBINDINGDIVISORPROC glVertexArrayBindingDivisor;
1623 PFNGLGETVERTEXARRAYIVPROC glGetVertexArrayiv;
1624 PFNGLGETVERTEXARRAYINDEXEDIVPROC glGetVertexArrayIndexediv;
1625 PFNGLGETVERTEXARRAYINDEXED64IVPROC glGetVertexArrayIndexed64iv;
1626 PFNGLCREATESAMPLERSPROC glCreateSamplers;
1627 PFNGLCREATEPROGRAMPIPELINESPROC glCreateProgramPipelines;
1628 PFNGLCREATEQUERIESPROC glCreateQueries;
1629 PFNGLGETQUERYBUFFEROBJECTI64VPROC glGetQueryBufferObjecti64v;
1630 PFNGLGETQUERYBUFFEROBJECTIVPROC glGetQueryBufferObjectiv;
1631 PFNGLGETQUERYBUFFEROBJECTUI64VPROC glGetQueryBufferObjectui64v;
1632 PFNGLGETQUERYBUFFEROBJECTUIVPROC glGetQueryBufferObjectuiv;
1633 PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
1634 PFNGLGETTEXTURESUBIMAGEPROC glGetTextureSubImage;
1635 PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glGetCompressedTextureSubImage;
1636 PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus;
1637 PFNGLGETNCOMPRESSEDTEXIMAGEPROC glGetnCompressedTexImage;
1638 PFNGLGETNTEXIMAGEPROC glGetnTexImage;
1639 PFNGLGETNUNIFORMDVPROC glGetnUniformdv;
1640 PFNGLGETNUNIFORMFVPROC glGetnUniformfv;
1641 PFNGLGETNUNIFORMIVPROC glGetnUniformiv;
1642 PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv;
1643 PFNGLREADNPIXELSPROC glReadnPixels;
1644 PFNGLGETNMAPDVPROC glGetnMapdv;
1645 PFNGLGETNMAPFVPROC glGetnMapfv;
1646 PFNGLGETNMAPIVPROC glGetnMapiv;
1647 PFNGLGETNPIXELMAPFVPROC glGetnPixelMapfv;
1648 PFNGLGETNPIXELMAPUIVPROC glGetnPixelMapuiv;
1649 PFNGLGETNPIXELMAPUSVPROC glGetnPixelMapusv;
1650 PFNGLGETNPOLYGONSTIPPLEPROC glGetnPolygonStipple;
1651 PFNGLGETNCOLORTABLEPROC glGetnColorTable;
1652 PFNGLGETNCONVOLUTIONFILTERPROC glGetnConvolutionFilter;
1653 PFNGLGETNSEPARABLEFILTERPROC glGetnSeparableFilter;
1654 PFNGLGETNHISTOGRAMPROC glGetnHistogram;
1655 PFNGLGETNMINMAXPROC glGetnMinmax;
1656 PFNGLTEXTUREBARRIERPROC glTextureBarrier;
1657
01ca42b2 1658public: //! @name GL_EXT_geometry_shader4
1659
1660 PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;
1661
25ef750e 1662public: //! @name GL_ARB_bindless_texture
1663
1664 PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB;
1665 PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB;
1666 PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB;
1667 PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
1668 PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB;
1669 PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB;
1670 PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB;
1671 PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB;
1672 PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB;
1673 PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB;
1674 PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB;
1675 PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB;
1676 PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB;
1677 PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB;
1678 PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB;
1679 PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB;
1680
01ca42b2 1681#if defined(_WIN32)
1682public: //! @name wgl extensions
1683
1684 typedef const char* (WINAPI *wglGetExtensionsStringARB_t)(HDC theDeviceContext);
1685 wglGetExtensionsStringARB_t wglGetExtensionsStringARB;
1686
1687 typedef BOOL (WINAPI *wglSwapIntervalEXT_t)(int theInterval);
1688 wglSwapIntervalEXT_t wglSwapIntervalEXT;
1689
1690 // WGL_ARB_pixel_format
1691
1692#ifndef WGL_NUMBER_PIXEL_FORMATS_ARB
1693 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
1694 #define WGL_DRAW_TO_WINDOW_ARB 0x2001
1695 #define WGL_DRAW_TO_BITMAP_ARB 0x2002
1696 #define WGL_ACCELERATION_ARB 0x2003
1697 #define WGL_NEED_PALETTE_ARB 0x2004
1698 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
1699 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
1700 #define WGL_SWAP_METHOD_ARB 0x2007
1701 #define WGL_NUMBER_OVERLAYS_ARB 0x2008
1702 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
1703 #define WGL_TRANSPARENT_ARB 0x200A
1704 #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
1705 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
1706 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
1707 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
1708 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
1709 #define WGL_SHARE_DEPTH_ARB 0x200C
1710 #define WGL_SHARE_STENCIL_ARB 0x200D
1711 #define WGL_SHARE_ACCUM_ARB 0x200E
1712 #define WGL_SUPPORT_GDI_ARB 0x200F
1713 #define WGL_SUPPORT_OPENGL_ARB 0x2010
1714 #define WGL_DOUBLE_BUFFER_ARB 0x2011
1715 #define WGL_STEREO_ARB 0x2012
1716 #define WGL_PIXEL_TYPE_ARB 0x2013
1717 #define WGL_COLOR_BITS_ARB 0x2014
1718 #define WGL_RED_BITS_ARB 0x2015
1719 #define WGL_RED_SHIFT_ARB 0x2016
1720 #define WGL_GREEN_BITS_ARB 0x2017
1721 #define WGL_GREEN_SHIFT_ARB 0x2018
1722 #define WGL_BLUE_BITS_ARB 0x2019
1723 #define WGL_BLUE_SHIFT_ARB 0x201A
1724 #define WGL_ALPHA_BITS_ARB 0x201B
1725 #define WGL_ALPHA_SHIFT_ARB 0x201C
1726 #define WGL_ACCUM_BITS_ARB 0x201D
1727 #define WGL_ACCUM_RED_BITS_ARB 0x201E
1728 #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
1729 #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
1730 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
1731 #define WGL_DEPTH_BITS_ARB 0x2022
1732 #define WGL_STENCIL_BITS_ARB 0x2023
1733 #define WGL_AUX_BUFFERS_ARB 0x2024
1734
1735 #define WGL_NO_ACCELERATION_ARB 0x2025
1736 #define WGL_GENERIC_ACCELERATION_ARB 0x2026
1737 #define WGL_FULL_ACCELERATION_ARB 0x2027
1738
1739 #define WGL_SWAP_EXCHANGE_ARB 0x2028
1740 #define WGL_SWAP_COPY_ARB 0x2029
1741 #define WGL_SWAP_UNDEFINED_ARB 0x202A
1742
1743 #define WGL_TYPE_RGBA_ARB 0x202B
1744 #define WGL_TYPE_COLORINDEX_ARB 0x202C
1745
1746#endif // WGL_NUMBER_PIXEL_FORMATS_ARB
1747
1748 // WGL_ARB_multisample
1749#ifndef WGL_SAMPLE_BUFFERS_ARB
1750 #define WGL_SAMPLE_BUFFERS_ARB 0x2041
1751 #define WGL_SAMPLES_ARB 0x2042
1752#endif
1753
1754 // WGL_ARB_create_context_robustness
1755#ifndef WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB
1756 #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
1757 #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
1758 #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
1759 #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
1760#endif
1761
1762 typedef BOOL (WINAPI *wglChoosePixelFormatARB_t)
1763 (HDC theDevCtx,
1764 const int* theIntAttribs,
1765 const float* theFloatAttribs,
1766 unsigned int theMaxFormats,
1767 int* theFormatsOut,
1768 unsigned int* theNumFormatsOut);
1769 wglChoosePixelFormatARB_t wglChoosePixelFormatARB;
1770
1771 // WGL_ARB_create_context_profile
1772
1773#ifndef WGL_CONTEXT_MAJOR_VERSION_ARB
1774 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
1775 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
1776 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
1777 #define WGL_CONTEXT_FLAGS_ARB 0x2094
1778 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
1779
1780 // WGL_CONTEXT_FLAGS bits
1781 #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
1782 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
1783
1784 // WGL_CONTEXT_PROFILE_MASK_ARB bits
1785 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
1786 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
1787#endif // WGL_CONTEXT_MAJOR_VERSION_ARB
1788
1789 typedef HGLRC (WINAPI *wglCreateContextAttribsARB_t)(HDC theDevCtx,
1790 HGLRC theShareContext,
1791 const int* theAttribs);
1792 wglCreateContextAttribsARB_t wglCreateContextAttribsARB;
1793
1794 // WGL_NV_DX_interop
1795
1796 typedef BOOL (WINAPI *wglDXSetResourceShareHandleNV_t)(void* theObjectD3d, HANDLE theShareHandle);
1797 typedef HANDLE (WINAPI *wglDXOpenDeviceNV_t )(void* theDeviceD3d);
1798 typedef BOOL (WINAPI *wglDXCloseDeviceNV_t )(HANDLE theDeviceIOP);
1799 typedef HANDLE (WINAPI *wglDXRegisterObjectNV_t )(HANDLE theDeviceIOP,
1800 void* theObjectD3d,
1801 GLuint theName,
1802 GLenum theType,
1803 GLenum theAccess);
1804 typedef BOOL (WINAPI *wglDXUnregisterObjectNV_t)(HANDLE theDeviceIOP,
1805 HANDLE theObject);
1806 typedef BOOL (WINAPI *wglDXObjectAccessNV_t )(HANDLE theObject,
1807 GLenum theAccess);
1808 typedef BOOL (WINAPI *wglDXLockObjectsNV_t )(HANDLE theDeviceIOP,
1809 GLint theCount,
1810 HANDLE* theObjects);
1811 typedef BOOL (WINAPI *wglDXUnlockObjectsNV_t )(HANDLE theDeviceIOP,
1812 GLint theCount,
1813 HANDLE* theObjects);
1814
1815 wglDXSetResourceShareHandleNV_t wglDXSetResourceShareHandleNV;
1816 wglDXOpenDeviceNV_t wglDXOpenDeviceNV;
1817 wglDXCloseDeviceNV_t wglDXCloseDeviceNV;
1818 wglDXRegisterObjectNV_t wglDXRegisterObjectNV;
1819 wglDXUnregisterObjectNV_t wglDXUnregisterObjectNV;
1820 wglDXObjectAccessNV_t wglDXObjectAccessNV;
1821 wglDXLockObjectsNV_t wglDXLockObjectsNV;
1822 wglDXUnlockObjectsNV_t wglDXUnlockObjectsNV;
1823
1824#ifndef WGL_ACCESS_READ_WRITE_NV
1825 #define WGL_ACCESS_READ_ONLY_NV 0x0000
1826 #define WGL_ACCESS_READ_WRITE_NV 0x0001
1827 #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
1828#endif
1829
2eacd0b8 1830 // WGL_AMD_gpu_association
1831
1832#ifndef WGL_GPU_VENDOR_AMD
1833 #define WGL_GPU_VENDOR_AMD 0x1F00
1834 #define WGL_GPU_RENDERER_STRING_AMD 0x1F01
1835 #define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
1836 #define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
1837 #define WGL_GPU_RAM_AMD 0x21A3
1838 #define WGL_GPU_CLOCK_AMD 0x21A4
1839 #define WGL_GPU_NUM_PIPES_AMD 0x21A5
1840 #define WGL_GPU_NUM_SIMD_AMD 0x21A6
1841 #define WGL_GPU_NUM_RB_AMD 0x21A7
1842 #define WGL_GPU_NUM_SPI_AMD 0x21A8
1843#endif
1844
1845 typedef UINT (WINAPI *wglGetGPUIDsAMD_t )(UINT theMaxCount, UINT* theIds);
1846 typedef INT (WINAPI *wglGetGPUInfoAMD_t )(UINT theId, INT theProperty, GLenum theDataType, UINT theSize, void* theData);
1847 typedef UINT (WINAPI *wglGetContextGPUIDAMD_t )(HGLRC theHglrc);
1848 wglGetGPUIDsAMD_t wglGetGPUIDsAMD;
1849 wglGetGPUInfoAMD_t wglGetGPUInfoAMD;
1850 wglGetContextGPUIDAMD_t wglGetContextGPUIDAMD;
1851
01ca42b2 1852#elif defined(__APPLE__)
1853public: //! @name CGL extensions
1854
1855#else
1856public: //! @name glX extensions
1857
1858 // GLX_EXT_swap_control
1859 //typedef int (*glXSwapIntervalEXT_t)(Display* theDisplay, GLXDrawable theDrawable, int theInterval);
1860 typedef int (*glXSwapIntervalEXT_t)();
1861 glXSwapIntervalEXT_t glXSwapIntervalEXT;
1862
1863 typedef int (*glXSwapIntervalSGI_t)(int theInterval);
1864 glXSwapIntervalSGI_t glXSwapIntervalSGI;
26d9c835 1865
1866 // GLX_MESA_query_renderer
1867#ifndef GLX_RENDERER_VENDOR_ID_MESA
1868 // for glXQueryRendererIntegerMESA() and glXQueryCurrentRendererIntegerMESA()
1869 #define GLX_RENDERER_VENDOR_ID_MESA 0x8183
1870 #define GLX_RENDERER_DEVICE_ID_MESA 0x8184
1871 #define GLX_RENDERER_VERSION_MESA 0x8185
1872 #define GLX_RENDERER_ACCELERATED_MESA 0x8186
1873 #define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
1874 #define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
1875 #define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
1876 #define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
1877 #define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
1878 #define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
1879 #define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
1880
1881 #define GLX_RENDERER_ID_MESA 0x818E
1882#endif // GLX_RENDERER_VENDOR_ID_MESA
1883
1884 typedef Bool (*glXQueryRendererIntegerMESA_t)(Display* theDisplay, int theScreen,
1885 int theRenderer, int theAttribute,
1886 unsigned int* theValue);
1887 typedef Bool (*glXQueryCurrentRendererIntegerMESA_t)(int theAttribute, unsigned int* theValue);
1888 typedef const char* (*glXQueryRendererStringMESA_t)(Display* theDisplay, int theScreen,
1889 int theRenderer, int theAttribute);
1890 typedef const char* (*glXQueryCurrentRendererStringMESA_t)(int theAttribute);
1891
1892 glXQueryRendererIntegerMESA_t glXQueryRendererIntegerMESA;
1893 glXQueryCurrentRendererIntegerMESA_t glXQueryCurrentRendererIntegerMESA;
1894 glXQueryRendererStringMESA_t glXQueryRendererStringMESA;
1895 glXQueryCurrentRendererStringMESA_t glXQueryCurrentRendererStringMESA;
01ca42b2 1896#endif
1897
ca3c13d1 1898#endif // OpenGL ES vs. desktop
1899
01ca42b2 1900};
1901
1902#endif // _OpenGl_GlFunctions_Header