1 // Created on: 2014-03-17
2 // Created by: Kirill GAVRILOV
3 // Copyright (c) 2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
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.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 #ifndef _OpenGl_GlFunctions_Header
17 #define _OpenGl_GlFunctions_Header
19 // required for correct APIENTRY definition
20 #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
21 #define WIN32_LEAN_AND_MEAN
29 #define APIENTRYP APIENTRY *
35 // exclude modern definitions and system-provided glext.h, should be defined before gl.h inclusion
36 #define GL_GLEXT_LEGACY
37 #define GLX_GLXEXT_LEGACY
39 // include main OpenGL header provided with system
40 #if defined(__APPLE__)
41 #import <TargetConditionals.h>
42 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
43 #include <OpenGLES/ES2/gl.h>
45 #include <OpenGL/gl.h>
47 #define __X_GL_H // prevent chaotic gl.h inclusions to avoid compile errors
48 #elif defined(HAVE_GLES2) || defined(__ANDROID__)
49 #include <GLES2/gl2.h>
50 //#include <GLES3/gl3.h>
55 #if defined(GL_ES_VERSION_2_0)
56 // define items to unify code paths with desktop OpenGL
57 typedef double GLdouble;
58 typedef double GLclampd;
59 typedef uint64_t GLuint64;
62 // OpenGL ES 3.0+ or GL_OES_element_index_uint extension
63 #define GL_UNSIGNED_INT 0x1405
66 #define GL_TEXTURE_2D_MULTISAMPLE 0x9100
67 #define GL_MAX_SAMPLES 0x8D57
69 // in core since OpenGL ES 3.0, extension GL_EXT_texture_rg
72 // in core since OpenGL ES 3.0, extension GL_OES_rgb8_rgba8
73 #define GL_RGB8 0x8051
74 #define GL_RGBA8 0x8058
75 #define GL_LUMINANCE8 0x8040
76 // GL_EXT_texture_format_BGRA8888
77 #define GL_BGRA_EXT 0x80E1 // same as GL_BGRA on desktop
80 #define GL_R16F 0x822D
81 #define GL_R32F 0x822E
82 #define GL_RGB16F 0x881B
83 #define GL_RGBA32F 0x8814
84 #define GL_RGB32F 0x8815
85 #define GL_RGBA16F 0x881A
86 #define GL_RGB16F 0x881B
87 #define GL_RGB4 0x804F
88 #define GL_RGB5 0x8050
89 #define GL_RGB8 0x8051
90 #define GL_RGB10 0x8052
91 #define GL_RGB12 0x8053
92 #define GL_RGB16 0x8054
93 #define GL_RGBA8 0x8058
94 #define GL_RGB10_A2 0x8059
95 #define GL_RGBA12 0x805A
96 #define GL_RGBA16 0x805B
97 #define GL_ALPHA8 0x803C
98 #define GL_ALPHA16 0x803E
101 #define GL_RG8 0x822B
102 #define GL_RG16 0x822C
103 #define GL_RG16F 0x822F
104 #define GL_RG32F 0x8230
106 // GL_OES_packed_depth_stencil
107 #define GL_DEPTH_STENCIL 0x84F9
108 #define GL_UNSIGNED_INT_24_8 0x84FA
109 #define GL_DEPTH24_STENCIL8 0x88F0
112 #define GL_DEPTH_COMPONENT32F 0x8CAC
113 #define GL_DEPTH32F_STENCIL8 0x8CAD
114 #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
116 #define GL_READ_FRAMEBUFFER 0x8CA8
117 #define GL_DRAW_FRAMEBUFFER 0x8CA9
119 // GL_EXT_texture_filter_anisotropic
120 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
121 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
123 // debug ARB extension
124 #define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
125 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
126 #define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
127 #define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
128 #define GL_DEBUG_SOURCE_API_ARB 0x8246
129 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
130 #define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
131 #define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
132 #define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
133 #define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
134 #define GL_DEBUG_TYPE_ERROR_ARB 0x824C
135 #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
136 #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
137 #define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
138 #define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
139 #define GL_DEBUG_TYPE_OTHER_ARB 0x8251
140 #define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
141 #define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
142 #define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
143 #define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
144 #define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
145 #define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
147 // GL_EXT_texture_buffer for OpenGL ES 3.1+
148 #define GL_TEXTURE_BUFFER_ARB 0x8C2A
151 #if defined(__ANDROID__)
155 #include <InterfaceGraphic.hxx>
156 #include <InterfaceGraphic_tgl_all.hxx>
157 #include <InterfaceGraphic_telem.hxx>
159 // GL version can be defined by system gl.h header
160 #if !defined(GL_ES_VERSION_2_0)
161 #undef GL_VERSION_1_2
162 #undef GL_VERSION_1_3
163 #undef GL_VERSION_1_4
164 #undef GL_VERSION_1_5
165 #undef GL_VERSION_2_0
166 #undef GL_VERSION_2_1
167 #undef GL_VERSION_3_0
168 #undef GL_VERSION_3_1
169 #undef GL_VERSION_3_2
170 #undef GL_VERSION_3_3
171 #undef GL_VERSION_4_0
172 #undef GL_VERSION_4_1
173 #undef GL_VERSION_4_2
174 #undef GL_VERSION_4_3
175 #undef GL_VERSION_4_4
176 #undef GL_VERSION_4_5
178 // include glext.h provided by Khronos group
182 //! Mega structure defines the complete list of OpenGL functions.
183 struct OpenGl_GlFunctions
186 public: //! @name OpenGL ES 1.1
188 #if defined(GL_ES_VERSION_2_0)
190 inline void glActiveTexture (GLenum texture)
192 ::glActiveTexture (texture);
195 inline void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
197 ::glCompressedTexImage2D (target, level, internalformat, width, height, border, imageSize, data);
200 inline void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
202 ::glCompressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, imageSize, data);
205 inline void glBindBuffer (GLenum target, GLuint buffer)
207 ::glBindBuffer (target, buffer);
210 inline void glBufferData (GLenum target, GLsizeiptr size, const void* data, GLenum usage)
212 ::glBufferData (target, size, data, usage);
215 inline void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void* data)
217 ::glBufferSubData (target, offset, size, data);
220 inline void glDeleteBuffers (GLsizei n, const GLuint *buffers)
222 ::glDeleteBuffers (n, buffers);
225 inline void glDeleteTextures (GLsizei n, const GLuint *textures)
227 ::glDeleteTextures (n, textures);
230 inline void glDepthFunc (GLenum func)
232 ::glDepthFunc (func);
235 inline void glDepthMask (GLboolean flag)
237 ::glDepthMask (flag);
240 inline void glDepthRangef (GLfloat n, GLfloat f)
242 ::glDepthRangef (n, f);
245 inline void glGenBuffers (GLsizei n, GLuint *buffers)
247 ::glGenBuffers (n, buffers);
250 inline void glGenTextures (GLsizei n, GLuint *textures)
252 ::glGenTextures (n, textures);
255 inline void glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params)
257 ::glGetBufferParameteriv (target, pname, params);
260 inline GLboolean glIsBuffer (GLuint buffer)
262 return ::glIsBuffer (buffer);
265 inline void glSampleCoverage (GLfloat value, GLboolean invert)
267 ::glSampleCoverage (value, invert);
270 inline void glMultiDrawElements (GLenum theMode, const GLsizei* theCount, GLenum theType, const void* const* theIndices, GLsizei theDrawCount)
273 || theIndices == NULL)
278 for (GLsizei aBatchIter = 0; aBatchIter < theDrawCount; ++aBatchIter)
280 ::glDrawElements (theMode, theCount[aBatchIter], theType, theIndices[aBatchIter]);
286 public: //! @name OpenGL ES 2.0
288 #if defined(GL_ES_VERSION_2_0)
289 inline void glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
291 ::glBlendColor (red, green, blue, alpha);
294 inline void glBlendEquation (GLenum mode)
296 ::glBlendEquation (mode);
299 inline void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
301 ::glBlendFuncSeparate (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
304 inline void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
306 ::glBlendEquationSeparate (modeRGB, modeAlpha);
309 inline void glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
311 ::glStencilOpSeparate (face, sfail, dpfail, dppass);
314 inline void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask)
316 ::glStencilFuncSeparate (face, func, ref, mask);
319 inline void glStencilMaskSeparate (GLenum face, GLuint mask)
321 ::glStencilMaskSeparate (face, mask);
324 inline void glAttachShader (GLuint program, GLuint shader)
326 ::glAttachShader (program, shader);
329 inline void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name)
331 ::glBindAttribLocation (program, index, name);
334 inline void glBindFramebuffer (GLenum target, GLuint framebuffer)
336 ::glBindFramebuffer (target, framebuffer);
339 inline void glBindRenderbuffer (GLenum target, GLuint renderbuffer)
341 ::glBindRenderbuffer (target, renderbuffer);
344 inline GLenum glCheckFramebufferStatus (GLenum target)
346 return ::glCheckFramebufferStatus (target);
349 inline void glCompileShader (GLuint shader)
351 ::glCompileShader (shader);
354 inline GLuint glCreateProgram()
356 return ::glCreateProgram();
359 inline GLuint glCreateShader (GLenum type)
361 return ::glCreateShader (type);
364 inline void glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers)
366 ::glDeleteFramebuffers (n, framebuffers);
369 inline void glDeleteProgram (GLuint program)
371 ::glDeleteProgram (program);
374 inline void glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers)
376 ::glDeleteRenderbuffers (n, renderbuffers);
379 inline void glDeleteShader (GLuint shader)
381 ::glDeleteShader (shader);
384 inline void glDetachShader (GLuint program, GLuint shader)
386 ::glDetachShader (program, shader);
389 inline void glDisableVertexAttribArray (GLuint index)
391 ::glDisableVertexAttribArray (index);
394 inline void glEnableVertexAttribArray (GLuint index)
396 ::glEnableVertexAttribArray (index);
399 inline void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
401 ::glFramebufferRenderbuffer (target, attachment, renderbuffertarget, renderbuffer);
404 inline void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
406 ::glFramebufferTexture2D (target, attachment, textarget, texture, level);
409 inline void glGenerateMipmap (GLenum target)
411 ::glGenerateMipmap (target);
414 inline void glGenFramebuffers (GLsizei n, GLuint *framebuffers)
416 ::glGenFramebuffers (n, framebuffers);
419 inline void glGenRenderbuffers (GLsizei n, GLuint *renderbuffers)
421 ::glGenRenderbuffers (n, renderbuffers);
424 inline void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name)
426 ::glGetActiveAttrib (program, index, bufSize, length, size, type, name);
429 inline void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name)
431 ::glGetActiveUniform (program, index, bufSize, length, size, type, name);
434 inline void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)
436 ::glGetAttachedShaders (program, maxCount, count, shaders);
439 inline GLint glGetAttribLocation (GLuint program, const GLchar *name)
441 return ::glGetAttribLocation (program, name);
444 inline void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params)
446 ::glGetFramebufferAttachmentParameteriv (target, attachment, pname, params);
449 inline void glGetProgramiv (GLuint program, GLenum pname, GLint* params)
451 ::glGetProgramiv (program, pname, params);
454 inline void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
456 ::glGetProgramInfoLog (program, bufSize, length, infoLog);
459 inline void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params)
461 ::glGetRenderbufferParameteriv (target, pname, params);
464 inline void glGetShaderiv (GLuint shader, GLenum pname, GLint* params)
466 ::glGetShaderiv (shader, pname, params);
469 inline void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
471 ::glGetShaderInfoLog (shader, bufSize, length, infoLog);
474 inline void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
476 ::glGetShaderPrecisionFormat (shadertype, precisiontype, range, precision);
479 inline void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
481 ::glGetShaderSource (shader, bufSize, length, source);
484 inline void glGetUniformfv (GLuint program, GLint location, GLfloat* params)
486 ::glGetUniformfv (program, location, params);
489 inline void glGetUniformiv (GLuint program, GLint location, GLint* params)
491 ::glGetUniformiv (program, location, params);
494 GLint glGetUniformLocation (GLuint program, const GLchar *name)
496 return ::glGetUniformLocation (program, name);
499 inline void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params)
501 ::glGetVertexAttribfv (index, pname, params);
504 inline void glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params)
506 ::glGetVertexAttribiv (index, pname, params);
509 inline void glGetVertexAttribPointerv (GLuint index, GLenum pname, void* *pointer)
511 ::glGetVertexAttribPointerv (index, pname, pointer);
514 inline GLboolean glIsFramebuffer (GLuint framebuffer)
516 return ::glIsFramebuffer (framebuffer);
519 inline GLboolean glIsProgram (GLuint program)
521 return ::glIsProgram (program);
524 inline GLboolean glIsRenderbuffer (GLuint renderbuffer)
526 return ::glIsRenderbuffer (renderbuffer);
529 inline GLboolean glIsShader (GLuint shader)
531 return ::glIsShader (shader);
534 inline void glLinkProgram (GLuint program)
536 ::glLinkProgram (program);
539 inline void glReleaseShaderCompiler()
541 ::glReleaseShaderCompiler();
544 inline void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
546 ::glRenderbufferStorage (target, internalformat, width, height);
549 inline void glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void* binary, GLsizei length)
551 ::glShaderBinary (count, shaders, binaryformat, binary, length);
554 inline void glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
556 ::glShaderSource (shader, count, string, length);
559 inline void glUniform1f (GLint location, GLfloat v0)
561 ::glUniform1f (location, v0);
564 inline void glUniform1fv (GLint location, GLsizei count, const GLfloat* value)
566 ::glUniform1fv (location, count, value);
569 inline void glUniform1i (GLint location, GLint v0)
571 ::glUniform1i (location, v0);
574 inline void glUniform1iv (GLint location, GLsizei count, const GLint* value)
576 ::glUniform1iv (location, count, value);
579 inline void glUniform2f (GLint location, GLfloat v0, GLfloat v1)
581 ::glUniform2f (location, v0, v1);
584 inline void glUniform2fv (GLint location, GLsizei count, const GLfloat* value)
586 ::glUniform2fv (location, count, value);
589 inline void glUniform2i (GLint location, GLint v0, GLint v1)
591 ::glUniform2i (location, v0, v1);
594 inline void glUniform2iv (GLint location, GLsizei count, const GLint* value)
596 ::glUniform2iv (location, count, value);
599 inline void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
601 ::glUniform3f (location, v0, v1, v2);
604 inline void glUniform3fv (GLint location, GLsizei count, const GLfloat* value)
606 ::glUniform3fv (location, count, value);
609 inline void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2)
611 ::glUniform3i (location, v0, v1, v2);
614 inline void glUniform3iv (GLint location, GLsizei count, const GLint* value)
616 ::glUniform3iv (location, count, value);
619 inline void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
621 ::glUniform4f (location, v0, v1, v2, v3);
624 inline void glUniform4fv (GLint location, GLsizei count, const GLfloat* value)
626 ::glUniform4fv (location, count, value);
629 inline void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
631 ::glUniform4i (location, v0, v1, v2, v3);
634 inline void glUniform4iv (GLint location, GLsizei count, const GLint* value)
636 ::glUniform4iv (location, count, value);
639 inline void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
641 ::glUniformMatrix2fv (location, count, transpose, value);
644 inline void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
646 ::glUniformMatrix3fv (location, count, transpose, value);
649 inline void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
651 ::glUniformMatrix4fv (location, count, transpose, value);
654 inline void glUseProgram (GLuint program)
656 ::glUseProgram (program);
659 inline void glValidateProgram (GLuint program)
661 ::glValidateProgram (program);
664 inline void glVertexAttrib1f (GLuint index, GLfloat x)
666 ::glVertexAttrib1f (index, x);
669 inline void glVertexAttrib1fv (GLuint index, const GLfloat* v)
671 ::glVertexAttrib1fv (index, v);
674 inline void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y)
676 ::glVertexAttrib2f (index, x, y);
679 inline void glVertexAttrib2fv (GLuint index, const GLfloat* v)
681 ::glVertexAttrib2fv (index, v);
684 inline void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z)
686 ::glVertexAttrib3f (index, x, y, z);
689 inline void glVertexAttrib3fv (GLuint index, const GLfloat* v)
691 ::glVertexAttrib3fv (index, v);
694 inline void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
696 ::glVertexAttrib4f (index, x, y, z, w);
699 inline void glVertexAttrib4fv (GLuint index, const GLfloat* v)
701 ::glVertexAttrib4fv (index, v);
704 inline void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer)
706 ::glVertexAttribPointer (index, size, type, normalized, stride, pointer);
709 public: //! @name OpenGL ES 3.0
711 typedef void (*glBlitFramebuffer_t)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
712 glBlitFramebuffer_t glBlitFramebuffer;
714 public: //! @name OpenGL ES 3.1
716 typedef void (*glTexStorage2DMultisample_t)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
717 glTexStorage2DMultisample_t glTexStorage2DMultisample;
719 #else // OpenGL ES vs. desktop
721 public: //! @name OpenGL 1.2
723 PFNGLBLENDCOLORPROC glBlendColor;
724 PFNGLBLENDEQUATIONPROC glBlendEquation;
725 PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
726 PFNGLTEXIMAGE3DPROC glTexImage3D;
727 PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
728 PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
730 public: //! @name OpenGL 1.3
732 PFNGLACTIVETEXTUREPROC glActiveTexture;
733 PFNGLSAMPLECOVERAGEPROC glSampleCoverage;
734 PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
735 PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
736 PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D;
737 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
738 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
739 PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
740 PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;
742 PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture;
743 PFNGLMULTITEXCOORD1DPROC glMultiTexCoord1d;
744 PFNGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv;
745 PFNGLMULTITEXCOORD1FPROC glMultiTexCoord1f;
746 PFNGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv;
747 PFNGLMULTITEXCOORD1IPROC glMultiTexCoord1i;
748 PFNGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv;
749 PFNGLMULTITEXCOORD1SPROC glMultiTexCoord1s;
750 PFNGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv;
751 PFNGLMULTITEXCOORD2DPROC glMultiTexCoord2d;
752 PFNGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv;
753 PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f;
754 PFNGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv;
755 PFNGLMULTITEXCOORD2IPROC glMultiTexCoord2i;
756 PFNGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv;
757 PFNGLMULTITEXCOORD2SPROC glMultiTexCoord2s;
758 PFNGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv;
759 PFNGLMULTITEXCOORD3DPROC glMultiTexCoord3d;
760 PFNGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv;
761 PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f;
762 PFNGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv;
763 PFNGLMULTITEXCOORD3IPROC glMultiTexCoord3i;
764 PFNGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv;
765 PFNGLMULTITEXCOORD3SPROC glMultiTexCoord3s;
766 PFNGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv;
767 PFNGLMULTITEXCOORD4DPROC glMultiTexCoord4d;
768 PFNGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv;
769 PFNGLMULTITEXCOORD4FPROC glMultiTexCoord4f;
770 PFNGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv;
771 PFNGLMULTITEXCOORD4IPROC glMultiTexCoord4i;
772 PFNGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv;
773 PFNGLMULTITEXCOORD4SPROC glMultiTexCoord4s;
774 PFNGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv;
775 PFNGLLOADTRANSPOSEMATRIXFPROC glLoadTransposeMatrixf;
776 PFNGLLOADTRANSPOSEMATRIXDPROC glLoadTransposeMatrixd;
777 PFNGLMULTTRANSPOSEMATRIXFPROC glMultTransposeMatrixf;
778 PFNGLMULTTRANSPOSEMATRIXDPROC glMultTransposeMatrixd;
780 public: //! @name OpenGL 1.4
782 PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
783 PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays;
784 PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
785 PFNGLPOINTPARAMETERFPROC glPointParameterf;
786 PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
787 PFNGLPOINTPARAMETERIPROC glPointParameteri;
788 PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
790 public: //! @name OpenGL 1.5
792 PFNGLGENQUERIESPROC glGenQueries;
793 PFNGLDELETEQUERIESPROC glDeleteQueries;
794 PFNGLISQUERYPROC glIsQuery;
795 PFNGLBEGINQUERYPROC glBeginQuery;
796 PFNGLENDQUERYPROC glEndQuery;
797 PFNGLGETQUERYIVPROC glGetQueryiv;
798 PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
799 PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
800 PFNGLBINDBUFFERPROC glBindBuffer;
801 PFNGLDELETEBUFFERSPROC glDeleteBuffers;
802 PFNGLGENBUFFERSPROC glGenBuffers;
803 PFNGLISBUFFERPROC glIsBuffer;
804 PFNGLBUFFERDATAPROC glBufferData;
805 PFNGLBUFFERSUBDATAPROC glBufferSubData;
806 PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
807 PFNGLMAPBUFFERPROC glMapBuffer;
808 PFNGLUNMAPBUFFERPROC glUnmapBuffer;
809 PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
810 PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
812 public: //! @name OpenGL 2.0
814 PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
815 PFNGLDRAWBUFFERSPROC glDrawBuffers;
816 PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
817 PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
818 PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate;
819 PFNGLATTACHSHADERPROC glAttachShader;
820 PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
821 PFNGLCOMPILESHADERPROC glCompileShader;
822 PFNGLCREATEPROGRAMPROC glCreateProgram;
823 PFNGLCREATESHADERPROC glCreateShader;
824 PFNGLDELETEPROGRAMPROC glDeleteProgram;
825 PFNGLDELETESHADERPROC glDeleteShader;
826 PFNGLDETACHSHADERPROC glDetachShader;
827 PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
828 PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
829 PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
830 PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
831 PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
832 PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
833 PFNGLGETPROGRAMIVPROC glGetProgramiv;
834 PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
835 PFNGLGETSHADERIVPROC glGetShaderiv;
836 PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
837 PFNGLGETSHADERSOURCEPROC glGetShaderSource;
838 PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
839 PFNGLGETUNIFORMFVPROC glGetUniformfv;
840 PFNGLGETUNIFORMIVPROC glGetUniformiv;
841 PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
842 PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
843 PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
844 PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
845 PFNGLISPROGRAMPROC glIsProgram;
846 PFNGLISSHADERPROC glIsShader;
847 PFNGLLINKPROGRAMPROC glLinkProgram;
848 PFNGLSHADERSOURCEPROC glShaderSource;
849 PFNGLUSEPROGRAMPROC glUseProgram;
850 PFNGLUNIFORM1FPROC glUniform1f;
851 PFNGLUNIFORM2FPROC glUniform2f;
852 PFNGLUNIFORM3FPROC glUniform3f;
853 PFNGLUNIFORM4FPROC glUniform4f;
854 PFNGLUNIFORM1IPROC glUniform1i;
855 PFNGLUNIFORM2IPROC glUniform2i;
856 PFNGLUNIFORM3IPROC glUniform3i;
857 PFNGLUNIFORM4IPROC glUniform4i;
858 PFNGLUNIFORM1FVPROC glUniform1fv;
859 PFNGLUNIFORM2FVPROC glUniform2fv;
860 PFNGLUNIFORM3FVPROC glUniform3fv;
861 PFNGLUNIFORM4FVPROC glUniform4fv;
862 PFNGLUNIFORM1IVPROC glUniform1iv;
863 PFNGLUNIFORM2IVPROC glUniform2iv;
864 PFNGLUNIFORM3IVPROC glUniform3iv;
865 PFNGLUNIFORM4IVPROC glUniform4iv;
866 PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
867 PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
868 PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
869 PFNGLVALIDATEPROGRAMPROC glValidateProgram;
870 PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d;
871 PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
872 PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f;
873 PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
874 PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s;
875 PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv;
876 PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d;
877 PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
878 PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f;
879 PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
880 PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s;
881 PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv;
882 PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d;
883 PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
884 PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f;
885 PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
886 PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s;
887 PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv;
888 PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv;
889 PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv;
890 PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv;
891 PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub;
892 PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv;
893 PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv;
894 PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv;
895 PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv;
896 PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d;
897 PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
898 PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f;
899 PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
900 PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv;
901 PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s;
902 PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv;
903 PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv;
904 PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv;
905 PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv;
906 PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
908 public: //! @name OpenGL 2.1
910 PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
911 PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
912 PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
913 PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
914 PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
915 PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
917 public: //! @name GL_ARB_framebuffer_object (added to OpenGL 3.0 core)
919 PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
920 PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
921 PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
922 PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
923 PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
924 PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
925 PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
926 PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
927 PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
928 PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
929 PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
930 PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
931 PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
932 PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
933 PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
934 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
935 PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
936 PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
937 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
938 PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
940 public: //! @name GL_ARB_vertex_array_object (added to OpenGL 3.0 core)
942 PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
943 PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
944 PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
945 PFNGLISVERTEXARRAYPROC glIsVertexArray;
947 public: //! @name GL_ARB_map_buffer_range (added to OpenGL 3.0 core)
949 PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
950 PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
952 public: //! @name OpenGL 3.0
954 PFNGLCOLORMASKIPROC glColorMaski;
955 PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
956 PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
957 PFNGLENABLEIPROC glEnablei;
958 PFNGLDISABLEIPROC glDisablei;
959 PFNGLISENABLEDIPROC glIsEnabledi;
960 PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
961 PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
962 PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
963 PFNGLBINDBUFFERBASEPROC glBindBufferBase;
964 PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
965 PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
966 PFNGLCLAMPCOLORPROC glClampColor;
967 PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
968 PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
969 PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
970 PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
971 PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
972 PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i;
973 PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i;
974 PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i;
975 PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
976 PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui;
977 PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui;
978 PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui;
979 PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
980 PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
981 PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
982 PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
983 PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
984 PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
985 PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
986 PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
987 PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
988 PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv;
989 PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv;
990 PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv;
991 PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv;
992 PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
993 PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
994 PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
995 PFNGLUNIFORM1UIPROC glUniform1ui;
996 PFNGLUNIFORM2UIPROC glUniform2ui;
997 PFNGLUNIFORM3UIPROC glUniform3ui;
998 PFNGLUNIFORM4UIPROC glUniform4ui;
999 PFNGLUNIFORM1UIVPROC glUniform1uiv;
1000 PFNGLUNIFORM2UIVPROC glUniform2uiv;
1001 PFNGLUNIFORM3UIVPROC glUniform3uiv;
1002 PFNGLUNIFORM4UIVPROC glUniform4uiv;
1003 PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
1004 PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
1005 PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
1006 PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
1007 PFNGLCLEARBUFFERIVPROC glClearBufferiv;
1008 PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
1009 PFNGLCLEARBUFFERFVPROC glClearBufferfv;
1010 PFNGLCLEARBUFFERFIPROC glClearBufferfi;
1011 PFNGLGETSTRINGIPROC glGetStringi;
1013 public: //! @name GL_ARB_uniform_buffer_object (added to OpenGL 3.1 core)
1015 PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
1016 PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
1017 PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
1018 PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
1019 PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
1020 PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
1021 PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
1023 public: //! @name GL_ARB_copy_buffer (added to OpenGL 3.1 core)
1025 PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
1027 public: //! @name OpenGL 3.1
1029 PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
1030 PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
1031 PFNGLTEXBUFFERPROC glTexBuffer;
1032 PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
1034 public: //! @name GL_ARB_draw_elements_base_vertex (added to OpenGL 3.2 core)
1036 PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
1037 PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
1038 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
1039 PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
1041 public: //! @name GL_ARB_provoking_vertex (added to OpenGL 3.2 core)
1043 PFNGLPROVOKINGVERTEXPROC glProvokingVertex;
1045 public: //! @name GL_ARB_sync (added to OpenGL 3.2 core)
1047 PFNGLFENCESYNCPROC glFenceSync;
1048 PFNGLISSYNCPROC glIsSync;
1049 PFNGLDELETESYNCPROC glDeleteSync;
1050 PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
1051 PFNGLWAITSYNCPROC glWaitSync;
1052 PFNGLGETINTEGER64VPROC glGetInteger64v;
1053 PFNGLGETSYNCIVPROC glGetSynciv;
1055 public: //! @name GL_ARB_texture_multisample (added to OpenGL 3.2 core)
1057 PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
1058 PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
1059 PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
1060 PFNGLSAMPLEMASKIPROC glSampleMaski;
1062 public: //! @name OpenGL 3.2
1064 PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
1065 PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
1066 PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
1068 public: //! @name GL_ARB_blend_func_extended (added to OpenGL 3.3 core)
1070 PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
1071 PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
1073 public: //! @name GL_ARB_sampler_objects (added to OpenGL 3.3 core)
1075 PFNGLGENSAMPLERSPROC glGenSamplers;
1076 PFNGLDELETESAMPLERSPROC glDeleteSamplers;
1077 PFNGLISSAMPLERPROC glIsSampler;
1078 PFNGLBINDSAMPLERPROC glBindSampler;
1079 PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
1080 PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
1081 PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
1082 PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
1083 PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
1084 PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
1085 PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
1086 PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
1087 PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
1088 PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
1090 public: //! @name GL_ARB_timer_query (added to OpenGL 3.3 core)
1092 PFNGLQUERYCOUNTERPROC glQueryCounter;
1093 PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
1094 PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
1096 public: //! @name GL_ARB_vertex_type_2_10_10_10_rev (added to OpenGL 3.3 core)
1098 PFNGLVERTEXP2UIPROC glVertexP2ui;
1099 PFNGLVERTEXP2UIVPROC glVertexP2uiv;
1100 PFNGLVERTEXP3UIPROC glVertexP3ui;
1101 PFNGLVERTEXP3UIVPROC glVertexP3uiv;
1102 PFNGLVERTEXP4UIPROC glVertexP4ui;
1103 PFNGLVERTEXP4UIVPROC glVertexP4uiv;
1104 PFNGLTEXCOORDP1UIPROC glTexCoordP1ui;
1105 PFNGLTEXCOORDP1UIVPROC glTexCoordP1uiv;
1106 PFNGLTEXCOORDP2UIPROC glTexCoordP2ui;
1107 PFNGLTEXCOORDP2UIVPROC glTexCoordP2uiv;
1108 PFNGLTEXCOORDP3UIPROC glTexCoordP3ui;
1109 PFNGLTEXCOORDP3UIVPROC glTexCoordP3uiv;
1110 PFNGLTEXCOORDP4UIPROC glTexCoordP4ui;
1111 PFNGLTEXCOORDP4UIVPROC glTexCoordP4uiv;
1112 PFNGLMULTITEXCOORDP1UIPROC glMultiTexCoordP1ui;
1113 PFNGLMULTITEXCOORDP1UIVPROC glMultiTexCoordP1uiv;
1114 PFNGLMULTITEXCOORDP2UIPROC glMultiTexCoordP2ui;
1115 PFNGLMULTITEXCOORDP2UIVPROC glMultiTexCoordP2uiv;
1116 PFNGLMULTITEXCOORDP3UIPROC glMultiTexCoordP3ui;
1117 PFNGLMULTITEXCOORDP3UIVPROC glMultiTexCoordP3uiv;
1118 PFNGLMULTITEXCOORDP4UIPROC glMultiTexCoordP4ui;
1119 PFNGLMULTITEXCOORDP4UIVPROC glMultiTexCoordP4uiv;
1120 PFNGLNORMALP3UIPROC glNormalP3ui;
1121 PFNGLNORMALP3UIVPROC glNormalP3uiv;
1122 PFNGLCOLORP3UIPROC glColorP3ui;
1123 PFNGLCOLORP3UIVPROC glColorP3uiv;
1124 PFNGLCOLORP4UIPROC glColorP4ui;
1125 PFNGLCOLORP4UIVPROC glColorP4uiv;
1126 PFNGLSECONDARYCOLORP3UIPROC glSecondaryColorP3ui;
1127 PFNGLSECONDARYCOLORP3UIVPROC glSecondaryColorP3uiv;
1128 PFNGLVERTEXATTRIBP1UIPROC glVertexAttribP1ui;
1129 PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv;
1130 PFNGLVERTEXATTRIBP2UIPROC glVertexAttribP2ui;
1131 PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv;
1132 PFNGLVERTEXATTRIBP3UIPROC glVertexAttribP3ui;
1133 PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv;
1134 PFNGLVERTEXATTRIBP4UIPROC glVertexAttribP4ui;
1135 PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv;
1137 public: //! @name OpenGL 3.3
1139 PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
1141 public: //! @name GL_ARB_draw_indirect (added to OpenGL 4.0 core)
1143 PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
1144 PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
1146 public: //! @name GL_ARB_gpu_shader_fp64 (added to OpenGL 4.0 core)
1148 PFNGLUNIFORM1DPROC glUniform1d;
1149 PFNGLUNIFORM2DPROC glUniform2d;
1150 PFNGLUNIFORM3DPROC glUniform3d;
1151 PFNGLUNIFORM4DPROC glUniform4d;
1152 PFNGLUNIFORM1DVPROC glUniform1dv;
1153 PFNGLUNIFORM2DVPROC glUniform2dv;
1154 PFNGLUNIFORM3DVPROC glUniform3dv;
1155 PFNGLUNIFORM4DVPROC glUniform4dv;
1156 PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
1157 PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
1158 PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
1159 PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
1160 PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
1161 PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
1162 PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
1163 PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
1164 PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
1165 PFNGLGETUNIFORMDVPROC glGetUniformdv;
1167 public: //! @name GL_ARB_shader_subroutine (added to OpenGL 4.0 core)
1169 PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glGetSubroutineUniformLocation;
1170 PFNGLGETSUBROUTINEINDEXPROC glGetSubroutineIndex;
1171 PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glGetActiveSubroutineUniformiv;
1172 PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName;
1173 PFNGLGETACTIVESUBROUTINENAMEPROC glGetActiveSubroutineName;
1174 PFNGLUNIFORMSUBROUTINESUIVPROC glUniformSubroutinesuiv;
1175 PFNGLGETUNIFORMSUBROUTINEUIVPROC glGetUniformSubroutineuiv;
1176 PFNGLGETPROGRAMSTAGEIVPROC glGetProgramStageiv;
1178 public: //! @name GL_ARB_tessellation_shader (added to OpenGL 4.0 core)
1180 PFNGLPATCHPARAMETERIPROC glPatchParameteri;
1181 PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
1183 public: //! @name GL_ARB_transform_feedback2 (added to OpenGL 4.0 core)
1185 PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
1186 PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
1187 PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
1188 PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
1189 PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
1190 PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
1191 PFNGLDRAWTRANSFORMFEEDBACKPROC glDrawTransformFeedback;
1193 public: //! @name GL_ARB_transform_feedback3 (added to OpenGL 4.0 core)
1195 PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
1196 PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed;
1197 PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed;
1198 PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv;
1200 public: //! @name OpenGL 4.0
1202 PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
1203 PFNGLBLENDEQUATIONIPROC glBlendEquationi;
1204 PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
1205 PFNGLBLENDFUNCIPROC glBlendFunci;
1206 PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
1208 public: //! @name GL_ARB_ES2_compatibility (added to OpenGL 4.1 core)
1210 PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
1211 PFNGLSHADERBINARYPROC glShaderBinary;
1212 PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
1213 PFNGLDEPTHRANGEFPROC glDepthRangef;
1214 PFNGLCLEARDEPTHFPROC glClearDepthf;
1216 public: //! @name GL_ARB_get_program_binary (added to OpenGL 4.1 core)
1218 PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
1219 PFNGLPROGRAMBINARYPROC glProgramBinary;
1220 PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
1222 public: //! @name GL_ARB_separate_shader_objects (added to OpenGL 4.1 core)
1224 PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
1225 PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
1226 PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
1227 PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
1228 PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
1229 PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
1230 PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
1231 PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
1232 PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
1233 PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
1234 PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
1235 PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
1236 PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
1237 PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
1238 PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
1239 PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
1240 PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
1241 PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
1242 PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
1243 PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
1244 PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
1245 PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
1246 PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
1247 PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
1248 PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
1249 PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
1250 PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
1251 PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
1252 PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
1253 PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
1254 PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
1255 PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
1256 PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
1257 PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
1258 PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
1259 PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
1260 PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
1261 PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
1262 PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
1263 PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
1264 PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
1265 PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
1266 PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
1267 PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
1268 PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
1269 PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
1270 PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
1271 PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
1272 PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
1273 PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
1274 PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
1275 PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
1276 PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
1277 PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
1278 PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
1279 PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
1280 PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
1281 PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
1282 PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
1283 PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
1285 public: //! @name GL_ARB_vertex_attrib_64bit (added to OpenGL 4.1 core)
1287 PFNGLVERTEXATTRIBL1DPROC glVertexAttribL1d;
1288 PFNGLVERTEXATTRIBL2DPROC glVertexAttribL2d;
1289 PFNGLVERTEXATTRIBL3DPROC glVertexAttribL3d;
1290 PFNGLVERTEXATTRIBL4DPROC glVertexAttribL4d;
1291 PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv;
1292 PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv;
1293 PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv;
1294 PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv;
1295 PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
1296 PFNGLGETVERTEXATTRIBLDVPROC glGetVertexAttribLdv;
1298 public: //! @name GL_ARB_viewport_array (added to OpenGL 4.1 core)
1300 PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
1301 PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
1302 PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
1303 PFNGLSCISSORARRAYVPROC glScissorArrayv;
1304 PFNGLSCISSORINDEXEDPROC glScissorIndexed;
1305 PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
1306 PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
1307 PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
1308 PFNGLGETFLOATI_VPROC glGetFloati_v;
1309 PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
1311 public: //! @name OpenGL 4.1
1315 public: //! @name GL_ARB_base_instance (added to OpenGL 4.2 core)
1317 PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
1318 PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
1319 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
1321 public: //! @name GL_ARB_transform_feedback_instanced (added to OpenGL 4.2 core)
1323 PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
1324 PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
1326 public: //! @name GL_ARB_internalformat_query (added to OpenGL 4.2 core)
1328 PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
1330 public: //! @name GL_ARB_shader_atomic_counters (added to OpenGL 4.2 core)
1332 PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
1334 public: //! @name GL_ARB_shader_image_load_store (added to OpenGL 4.2 core)
1336 PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
1337 PFNGLMEMORYBARRIERPROC glMemoryBarrier;
1339 public: //! @name GL_ARB_texture_storage (added to OpenGL 4.2 core)
1341 PFNGLTEXSTORAGE1DPROC glTexStorage1D;
1342 PFNGLTEXSTORAGE2DPROC glTexStorage2D;
1343 PFNGLTEXSTORAGE3DPROC glTexStorage3D;
1345 public: //! @name OpenGL 4.2
1347 public: //! @name OpenGL 4.3
1349 PFNGLCLEARBUFFERDATAPROC glClearBufferData;
1350 PFNGLCLEARBUFFERSUBDATAPROC glClearBufferSubData;
1351 PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
1352 PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
1353 PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
1354 PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
1355 PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
1356 PFNGLGETINTERNALFORMATI64VPROC glGetInternalformati64v;
1357 PFNGLINVALIDATETEXSUBIMAGEPROC glInvalidateTexSubImage;
1358 PFNGLINVALIDATETEXIMAGEPROC glInvalidateTexImage;
1359 PFNGLINVALIDATEBUFFERSUBDATAPROC glInvalidateBufferSubData;
1360 PFNGLINVALIDATEBUFFERDATAPROC glInvalidateBufferData;
1361 PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
1362 PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
1363 PFNGLMULTIDRAWARRAYSINDIRECTPROC glMultiDrawArraysIndirect;
1364 PFNGLMULTIDRAWELEMENTSINDIRECTPROC glMultiDrawElementsIndirect;
1365 PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
1366 PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
1367 PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
1368 PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
1369 PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
1370 PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
1371 PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
1372 PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
1373 PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
1374 PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
1375 PFNGLTEXTUREVIEWPROC glTextureView;
1376 PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
1377 PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
1378 PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
1379 PFNGLVERTEXATTRIBLFORMATPROC glVertexAttribLFormat;
1380 PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
1381 PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
1382 PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
1383 PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
1384 PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
1385 PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
1386 PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
1387 PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
1388 PFNGLOBJECTLABELPROC glObjectLabel;
1389 PFNGLGETOBJECTLABELPROC glGetObjectLabel;
1390 PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
1391 PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
1393 public: //! @name OpenGL 4.4
1395 PFNGLBUFFERSTORAGEPROC glBufferStorage;
1396 PFNGLCLEARTEXIMAGEPROC glClearTexImage;
1397 PFNGLCLEARTEXSUBIMAGEPROC glClearTexSubImage;
1398 PFNGLBINDBUFFERSBASEPROC glBindBuffersBase;
1399 PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange;
1400 PFNGLBINDTEXTURESPROC glBindTextures;
1401 PFNGLBINDSAMPLERSPROC glBindSamplers;
1402 PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
1403 PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
1405 public: //! @name GL_ARB_debug_output (optional)
1407 PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
1408 PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
1409 PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
1410 PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
1412 public: //! @name GL_EXT_geometry_shader4
1414 PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;
1416 public: //! @name GL_ARB_bindless_texture
1418 PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB;
1419 PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB;
1420 PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB;
1421 PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
1422 PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB;
1423 PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB;
1424 PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB;
1425 PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB;
1426 PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB;
1427 PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB;
1428 PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB;
1429 PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB;
1430 PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB;
1431 PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB;
1432 PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB;
1433 PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB;
1436 public: //! @name wgl extensions
1438 typedef const char* (WINAPI *wglGetExtensionsStringARB_t)(HDC theDeviceContext);
1439 wglGetExtensionsStringARB_t wglGetExtensionsStringARB;
1441 typedef BOOL (WINAPI *wglSwapIntervalEXT_t)(int theInterval);
1442 wglSwapIntervalEXT_t wglSwapIntervalEXT;
1444 // WGL_ARB_pixel_format
1446 #ifndef WGL_NUMBER_PIXEL_FORMATS_ARB
1447 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
1448 #define WGL_DRAW_TO_WINDOW_ARB 0x2001
1449 #define WGL_DRAW_TO_BITMAP_ARB 0x2002
1450 #define WGL_ACCELERATION_ARB 0x2003
1451 #define WGL_NEED_PALETTE_ARB 0x2004
1452 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
1453 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
1454 #define WGL_SWAP_METHOD_ARB 0x2007
1455 #define WGL_NUMBER_OVERLAYS_ARB 0x2008
1456 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
1457 #define WGL_TRANSPARENT_ARB 0x200A
1458 #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
1459 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
1460 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
1461 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
1462 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
1463 #define WGL_SHARE_DEPTH_ARB 0x200C
1464 #define WGL_SHARE_STENCIL_ARB 0x200D
1465 #define WGL_SHARE_ACCUM_ARB 0x200E
1466 #define WGL_SUPPORT_GDI_ARB 0x200F
1467 #define WGL_SUPPORT_OPENGL_ARB 0x2010
1468 #define WGL_DOUBLE_BUFFER_ARB 0x2011
1469 #define WGL_STEREO_ARB 0x2012
1470 #define WGL_PIXEL_TYPE_ARB 0x2013
1471 #define WGL_COLOR_BITS_ARB 0x2014
1472 #define WGL_RED_BITS_ARB 0x2015
1473 #define WGL_RED_SHIFT_ARB 0x2016
1474 #define WGL_GREEN_BITS_ARB 0x2017
1475 #define WGL_GREEN_SHIFT_ARB 0x2018
1476 #define WGL_BLUE_BITS_ARB 0x2019
1477 #define WGL_BLUE_SHIFT_ARB 0x201A
1478 #define WGL_ALPHA_BITS_ARB 0x201B
1479 #define WGL_ALPHA_SHIFT_ARB 0x201C
1480 #define WGL_ACCUM_BITS_ARB 0x201D
1481 #define WGL_ACCUM_RED_BITS_ARB 0x201E
1482 #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
1483 #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
1484 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
1485 #define WGL_DEPTH_BITS_ARB 0x2022
1486 #define WGL_STENCIL_BITS_ARB 0x2023
1487 #define WGL_AUX_BUFFERS_ARB 0x2024
1489 #define WGL_NO_ACCELERATION_ARB 0x2025
1490 #define WGL_GENERIC_ACCELERATION_ARB 0x2026
1491 #define WGL_FULL_ACCELERATION_ARB 0x2027
1493 #define WGL_SWAP_EXCHANGE_ARB 0x2028
1494 #define WGL_SWAP_COPY_ARB 0x2029
1495 #define WGL_SWAP_UNDEFINED_ARB 0x202A
1497 #define WGL_TYPE_RGBA_ARB 0x202B
1498 #define WGL_TYPE_COLORINDEX_ARB 0x202C
1500 #endif // WGL_NUMBER_PIXEL_FORMATS_ARB
1502 // WGL_ARB_multisample
1503 #ifndef WGL_SAMPLE_BUFFERS_ARB
1504 #define WGL_SAMPLE_BUFFERS_ARB 0x2041
1505 #define WGL_SAMPLES_ARB 0x2042
1508 // WGL_ARB_create_context_robustness
1509 #ifndef WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB
1510 #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
1511 #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
1512 #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
1513 #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
1516 typedef BOOL (WINAPI *wglChoosePixelFormatARB_t)
1518 const int* theIntAttribs,
1519 const float* theFloatAttribs,
1520 unsigned int theMaxFormats,
1522 unsigned int* theNumFormatsOut);
1523 wglChoosePixelFormatARB_t wglChoosePixelFormatARB;
1525 // WGL_ARB_create_context_profile
1527 #ifndef WGL_CONTEXT_MAJOR_VERSION_ARB
1528 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
1529 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
1530 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
1531 #define WGL_CONTEXT_FLAGS_ARB 0x2094
1532 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
1534 // WGL_CONTEXT_FLAGS bits
1535 #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
1536 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
1538 // WGL_CONTEXT_PROFILE_MASK_ARB bits
1539 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
1540 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
1541 #endif // WGL_CONTEXT_MAJOR_VERSION_ARB
1543 typedef HGLRC (WINAPI *wglCreateContextAttribsARB_t)(HDC theDevCtx,
1544 HGLRC theShareContext,
1545 const int* theAttribs);
1546 wglCreateContextAttribsARB_t wglCreateContextAttribsARB;
1548 // WGL_NV_DX_interop
1550 typedef BOOL (WINAPI *wglDXSetResourceShareHandleNV_t)(void* theObjectD3d, HANDLE theShareHandle);
1551 typedef HANDLE (WINAPI *wglDXOpenDeviceNV_t )(void* theDeviceD3d);
1552 typedef BOOL (WINAPI *wglDXCloseDeviceNV_t )(HANDLE theDeviceIOP);
1553 typedef HANDLE (WINAPI *wglDXRegisterObjectNV_t )(HANDLE theDeviceIOP,
1558 typedef BOOL (WINAPI *wglDXUnregisterObjectNV_t)(HANDLE theDeviceIOP,
1560 typedef BOOL (WINAPI *wglDXObjectAccessNV_t )(HANDLE theObject,
1562 typedef BOOL (WINAPI *wglDXLockObjectsNV_t )(HANDLE theDeviceIOP,
1564 HANDLE* theObjects);
1565 typedef BOOL (WINAPI *wglDXUnlockObjectsNV_t )(HANDLE theDeviceIOP,
1567 HANDLE* theObjects);
1569 wglDXSetResourceShareHandleNV_t wglDXSetResourceShareHandleNV;
1570 wglDXOpenDeviceNV_t wglDXOpenDeviceNV;
1571 wglDXCloseDeviceNV_t wglDXCloseDeviceNV;
1572 wglDXRegisterObjectNV_t wglDXRegisterObjectNV;
1573 wglDXUnregisterObjectNV_t wglDXUnregisterObjectNV;
1574 wglDXObjectAccessNV_t wglDXObjectAccessNV;
1575 wglDXLockObjectsNV_t wglDXLockObjectsNV;
1576 wglDXUnlockObjectsNV_t wglDXUnlockObjectsNV;
1578 #ifndef WGL_ACCESS_READ_WRITE_NV
1579 #define WGL_ACCESS_READ_ONLY_NV 0x0000
1580 #define WGL_ACCESS_READ_WRITE_NV 0x0001
1581 #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
1584 #elif defined(__APPLE__)
1585 public: //! @name CGL extensions
1588 public: //! @name glX extensions
1590 // GLX_EXT_swap_control
1591 //typedef int (*glXSwapIntervalEXT_t)(Display* theDisplay, GLXDrawable theDrawable, int theInterval);
1592 typedef int (*glXSwapIntervalEXT_t)();
1593 glXSwapIntervalEXT_t glXSwapIntervalEXT;
1595 typedef int (*glXSwapIntervalSGI_t)(int theInterval);
1596 glXSwapIntervalSGI_t glXSwapIntervalSGI;
1599 #endif // OpenGL ES vs. desktop
1603 #endif // _OpenGl_GlFunctions_Header