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
25 #include <Standard_Macro.hxx>
26 #include <Standard_TypeDef.hxx>
32 #define APIENTRYP APIENTRY *
38 // exclude modern definitions and system-provided glext.h, should be defined before gl.h inclusion
39 #ifndef GL_GLEXT_LEGACY
40 #define GL_GLEXT_LEGACY
42 #ifndef GLX_GLXEXT_LEGACY
43 #define GLX_GLXEXT_LEGACY
46 // include main OpenGL header provided with system
47 #if defined(__APPLE__)
48 #import <TargetConditionals.h>
49 // macOS 10.4 deprecated OpenGL framework - suppress useless warnings
50 #define GL_SILENCE_DEPRECATION
51 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
52 #include <OpenGLES/ES3/gl.h>
54 #include <OpenGL/gl.h>
56 #define __X_GL_H // prevent chaotic gl.h inclusions to avoid compile errors
57 #elif defined(HAVE_GLES2) || defined(OCCT_UWP) || defined(__ANDROID__) || defined(__QNX__) || defined(__EMSCRIPTEN__)
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
63 #include <GLES3/gl3.h>
68 #if !defined(HAVE_EGL) && (defined(__ANDROID__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(HAVE_GLES2) || defined(OCCT_UWP))
72 #include <InterfaceGraphic.hxx>
74 #if defined(GL_ES_VERSION_2_0)
75 #include <OpenGl_GLESExtensions.hxx>
77 // GL version can be defined by system gl.h header
95 // include glext.h provided by Khronos group
99 //! Mega structure defines the complete list of OpenGL functions.
100 struct OpenGl_GlFunctions
103 public: //! @name OpenGL ES 1.1
105 #if defined(GL_ES_VERSION_2_0)
107 inline void glActiveTexture (GLenum texture) const
109 ::glActiveTexture (texture);
112 inline void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) const
114 ::glCompressedTexImage2D (target, level, internalformat, width, height, border, imageSize, data);
117 inline void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) const
119 ::glCompressedTexSubImage2D (target, level, xoffset, yoffset, width, height, format, imageSize, data);
122 inline void glBindBuffer (GLenum target, GLuint buffer) const
124 ::glBindBuffer (target, buffer);
127 inline void glBufferData (GLenum target, GLsizeiptr size, const void* data, GLenum usage) const
129 ::glBufferData (target, size, data, usage);
132 inline void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void* data) const
134 ::glBufferSubData (target, offset, size, data);
137 inline void glDeleteBuffers (GLsizei n, const GLuint *buffers) const
139 ::glDeleteBuffers (n, buffers);
142 inline void glDeleteTextures (GLsizei n, const GLuint *textures) const
144 ::glDeleteTextures (n, textures);
147 inline void glDepthFunc (GLenum func) const
149 ::glDepthFunc (func);
152 inline void glDepthMask (GLboolean flag) const
154 ::glDepthMask (flag);
157 inline void glDepthRangef (GLfloat n, GLfloat f) const
159 ::glDepthRangef (n, f);
162 inline void glGenBuffers (GLsizei n, GLuint *buffers) const
164 ::glGenBuffers (n, buffers);
167 inline void glGenTextures (GLsizei n, GLuint *textures) const
169 ::glGenTextures (n, textures);
172 inline void glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params) const
174 ::glGetBufferParameteriv (target, pname, params);
177 inline GLboolean glIsBuffer (GLuint buffer) const
179 return ::glIsBuffer (buffer);
182 inline void glSampleCoverage (GLfloat value, GLboolean invert) const
184 ::glSampleCoverage (value, invert);
187 inline void glMultiDrawElements (GLenum theMode, const GLsizei* theCount, GLenum theType, const void* const* theIndices, GLsizei theDrawCount) const
190 || theIndices == NULL)
195 for (GLsizei aBatchIter = 0; aBatchIter < theDrawCount; ++aBatchIter)
197 ::glDrawElements (theMode, theCount[aBatchIter], theType, theIndices[aBatchIter]);
203 public: //! @name OpenGL ES 2.0
205 #if defined(GL_ES_VERSION_2_0)
206 inline void glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) const
208 ::glBlendColor (red, green, blue, alpha);
211 inline void glBlendEquation (GLenum mode) const
213 ::glBlendEquation (mode);
216 inline void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) const
218 ::glBlendFuncSeparate (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
221 inline void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha) const
223 ::glBlendEquationSeparate (modeRGB, modeAlpha);
226 inline void glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) const
228 ::glStencilOpSeparate (face, sfail, dpfail, dppass);
231 inline void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask) const
233 ::glStencilFuncSeparate (face, func, ref, mask);
236 inline void glStencilMaskSeparate (GLenum face, GLuint mask) const
238 ::glStencilMaskSeparate (face, mask);
241 inline void glAttachShader (GLuint program, GLuint shader) const
243 ::glAttachShader (program, shader);
246 inline void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name) const
248 ::glBindAttribLocation (program, index, name);
251 inline void glBindFramebuffer (GLenum target, GLuint framebuffer) const
253 ::glBindFramebuffer (target, framebuffer);
256 inline void glBindRenderbuffer (GLenum target, GLuint renderbuffer) const
258 ::glBindRenderbuffer (target, renderbuffer);
261 inline GLenum glCheckFramebufferStatus (GLenum target) const
263 return ::glCheckFramebufferStatus (target);
266 inline void glCompileShader (GLuint shader) const
268 ::glCompileShader (shader);
271 inline GLuint glCreateProgram() const
273 return ::glCreateProgram();
276 inline GLuint glCreateShader (GLenum type) const
278 return ::glCreateShader (type);
281 inline void glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers) const
283 ::glDeleteFramebuffers (n, framebuffers);
286 inline void glDeleteProgram (GLuint program) const
288 ::glDeleteProgram (program);
291 inline void glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers) const
293 ::glDeleteRenderbuffers (n, renderbuffers);
296 inline void glDeleteShader (GLuint shader) const
298 ::glDeleteShader (shader);
301 inline void glDetachShader (GLuint program, GLuint shader) const
303 ::glDetachShader (program, shader);
306 inline void glDisableVertexAttribArray (GLuint index) const
308 ::glDisableVertexAttribArray (index);
311 inline void glEnableVertexAttribArray (GLuint index) const
313 ::glEnableVertexAttribArray (index);
316 inline void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) const
318 ::glFramebufferRenderbuffer (target, attachment, renderbuffertarget, renderbuffer);
321 inline void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) const
323 ::glFramebufferTexture2D (target, attachment, textarget, texture, level);
326 inline void glGenerateMipmap (GLenum target) const
328 ::glGenerateMipmap (target);
331 inline void glGenFramebuffers (GLsizei n, GLuint *framebuffers) const
333 ::glGenFramebuffers (n, framebuffers);
336 inline void glGenRenderbuffers (GLsizei n, GLuint *renderbuffers) const
338 ::glGenRenderbuffers (n, renderbuffers);
341 inline void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name) const
343 ::glGetActiveAttrib (program, index, bufSize, length, size, type, name);
346 inline void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint* size, GLenum *type, GLchar *name) const
348 ::glGetActiveUniform (program, index, bufSize, length, size, type, name);
351 inline void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders) const
353 ::glGetAttachedShaders (program, maxCount, count, shaders);
356 inline GLint glGetAttribLocation (GLuint program, const GLchar *name) const
358 return ::glGetAttribLocation (program, name);
361 inline void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params) const
363 ::glGetFramebufferAttachmentParameteriv (target, attachment, pname, params);
366 inline void glGetProgramiv (GLuint program, GLenum pname, GLint* params) const
368 ::glGetProgramiv (program, pname, params);
371 inline void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) const
373 ::glGetProgramInfoLog (program, bufSize, length, infoLog);
376 inline void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params) const
378 ::glGetRenderbufferParameteriv (target, pname, params);
381 inline void glGetShaderiv (GLuint shader, GLenum pname, GLint* params) const
383 ::glGetShaderiv (shader, pname, params);
386 inline void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) const
388 ::glGetShaderInfoLog (shader, bufSize, length, infoLog);
391 inline void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision) const
393 ::glGetShaderPrecisionFormat (shadertype, precisiontype, range, precision);
396 inline void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source) const
398 ::glGetShaderSource (shader, bufSize, length, source);
401 inline void glGetUniformfv (GLuint program, GLint location, GLfloat* params) const
403 ::glGetUniformfv (program, location, params);
406 inline void glGetUniformiv (GLuint program, GLint location, GLint* params) const
408 ::glGetUniformiv (program, location, params);
411 GLint glGetUniformLocation (GLuint program, const GLchar *name) const
413 return ::glGetUniformLocation (program, name);
416 inline void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params) const
418 ::glGetVertexAttribfv (index, pname, params);
421 inline void glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params) const
423 ::glGetVertexAttribiv (index, pname, params);
426 inline void glGetVertexAttribPointerv (GLuint index, GLenum pname, void* *pointer) const
428 ::glGetVertexAttribPointerv (index, pname, pointer);
431 inline GLboolean glIsFramebuffer (GLuint framebuffer) const
433 return ::glIsFramebuffer (framebuffer);
436 inline GLboolean glIsProgram (GLuint program) const
438 return ::glIsProgram (program);
441 inline GLboolean glIsRenderbuffer (GLuint renderbuffer) const
443 return ::glIsRenderbuffer (renderbuffer);
446 inline GLboolean glIsShader (GLuint shader) const
448 return ::glIsShader (shader);
451 inline void glLinkProgram (GLuint program) const
453 ::glLinkProgram (program);
456 inline void glReleaseShaderCompiler() const
458 ::glReleaseShaderCompiler();
461 inline void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height) const
463 ::glRenderbufferStorage (target, internalformat, width, height);
466 inline void glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const void* binary, GLsizei length) const
468 ::glShaderBinary (count, shaders, binaryformat, binary, length);
471 inline void glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length) const
473 ::glShaderSource (shader, count, string, length);
476 inline void glUniform1f (GLint location, GLfloat v0) const
478 ::glUniform1f (location, v0);
481 inline void glUniform1fv (GLint location, GLsizei count, const GLfloat* value) const
483 ::glUniform1fv (location, count, value);
486 inline void glUniform1i (GLint location, GLint v0) const
488 ::glUniform1i (location, v0);
491 inline void glUniform1iv (GLint location, GLsizei count, const GLint* value) const
493 ::glUniform1iv (location, count, value);
496 inline void glUniform2f (GLint location, GLfloat v0, GLfloat v1) const
498 ::glUniform2f (location, v0, v1);
501 inline void glUniform2fv (GLint location, GLsizei count, const GLfloat* value) const
503 ::glUniform2fv (location, count, value);
506 inline void glUniform2i (GLint location, GLint v0, GLint v1) const
508 ::glUniform2i (location, v0, v1);
511 inline void glUniform2iv (GLint location, GLsizei count, const GLint* value) const
513 ::glUniform2iv (location, count, value);
516 inline void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2) const
518 ::glUniform3f (location, v0, v1, v2);
521 inline void glUniform3fv (GLint location, GLsizei count, const GLfloat* value) const
523 ::glUniform3fv (location, count, value);
526 inline void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2) const
528 ::glUniform3i (location, v0, v1, v2);
531 inline void glUniform3iv (GLint location, GLsizei count, const GLint* value) const
533 ::glUniform3iv (location, count, value);
536 inline void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) const
538 ::glUniform4f (location, v0, v1, v2, v3);
541 inline void glUniform4fv (GLint location, GLsizei count, const GLfloat* value) const
543 ::glUniform4fv (location, count, value);
546 inline void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3) const
548 ::glUniform4i (location, v0, v1, v2, v3);
551 inline void glUniform4iv (GLint location, GLsizei count, const GLint* value) const
553 ::glUniform4iv (location, count, value);
556 inline void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) const
558 ::glUniformMatrix2fv (location, count, transpose, value);
561 inline void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) const
563 ::glUniformMatrix3fv (location, count, transpose, value);
566 inline void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value) const
568 ::glUniformMatrix4fv (location, count, transpose, value);
571 inline void glUseProgram (GLuint program) const
573 ::glUseProgram (program);
576 inline void glValidateProgram (GLuint program) const
578 ::glValidateProgram (program);
581 inline void glVertexAttrib1f (GLuint index, GLfloat x) const
583 ::glVertexAttrib1f (index, x);
586 inline void glVertexAttrib1fv (GLuint index, const GLfloat* v) const
588 ::glVertexAttrib1fv (index, v);
591 inline void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y) const
593 ::glVertexAttrib2f (index, x, y);
596 inline void glVertexAttrib2fv (GLuint index, const GLfloat* v) const
598 ::glVertexAttrib2fv (index, v);
601 inline void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z) const
603 ::glVertexAttrib3f (index, x, y, z);
606 inline void glVertexAttrib3fv (GLuint index, const GLfloat* v) const
608 ::glVertexAttrib3fv (index, v);
611 inline void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) const
613 ::glVertexAttrib4f (index, x, y, z, w);
616 inline void glVertexAttrib4fv (GLuint index, const GLfloat* v) const
618 ::glVertexAttrib4fv (index, v);
621 inline void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* pointer) const
623 ::glVertexAttribPointer (index, size, type, normalized, stride, pointer);
626 public: //! @name OpenGL ES 3.0
628 opencascade::PFNGLREADBUFFERPROC glReadBuffer;
629 opencascade::PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
630 opencascade::PFNGLTEXIMAGE3DPROC glTexImage3D;
631 opencascade::PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
632 opencascade::PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
633 opencascade::PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
634 opencascade::PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
635 opencascade::PFNGLGENQUERIESPROC glGenQueries;
636 opencascade::PFNGLDELETEQUERIESPROC glDeleteQueries;
637 opencascade::PFNGLISQUERYPROC glIsQuery;
638 opencascade::PFNGLBEGINQUERYPROC glBeginQuery;
639 opencascade::PFNGLENDQUERYPROC glEndQuery;
640 opencascade::PFNGLGETQUERYIVPROC glGetQueryiv;
641 opencascade::PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
642 opencascade::PFNGLUNMAPBUFFERPROC glUnmapBuffer;
643 opencascade::PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
644 opencascade::PFNGLDRAWBUFFERSPROC glDrawBuffers;
645 opencascade::PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
646 opencascade::PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
647 opencascade::PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
648 opencascade::PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
649 opencascade::PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
650 opencascade::PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
651 opencascade::PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
652 opencascade::PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
653 opencascade::PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
654 opencascade::PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
655 opencascade::PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
656 opencascade::PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
657 opencascade::PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
658 opencascade::PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
659 opencascade::PFNGLISVERTEXARRAYPROC glIsVertexArray;
660 opencascade::PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
661 opencascade::PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
662 opencascade::PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
663 opencascade::PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
664 opencascade::PFNGLBINDBUFFERBASEPROC glBindBufferBase;
665 opencascade::PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
666 opencascade::PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
667 opencascade::PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
668 opencascade::PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
669 opencascade::PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
670 opencascade::PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
671 opencascade::PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
672 opencascade::PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
673 opencascade::PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
674 opencascade::PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
675 opencascade::PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
676 opencascade::PFNGLUNIFORM1UIPROC glUniform1ui;
677 opencascade::PFNGLUNIFORM2UIPROC glUniform2ui;
678 opencascade::PFNGLUNIFORM3UIPROC glUniform3ui;
679 opencascade::PFNGLUNIFORM4UIPROC glUniform4ui;
680 opencascade::PFNGLUNIFORM1UIVPROC glUniform1uiv;
681 opencascade::PFNGLUNIFORM2UIVPROC glUniform2uiv;
682 opencascade::PFNGLUNIFORM3UIVPROC glUniform3uiv;
683 opencascade::PFNGLUNIFORM4UIVPROC glUniform4uiv;
684 opencascade::PFNGLCLEARBUFFERIVPROC glClearBufferiv;
685 opencascade::PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
686 opencascade::PFNGLCLEARBUFFERFVPROC glClearBufferfv;
687 opencascade::PFNGLCLEARBUFFERFIPROC glClearBufferfi;
688 opencascade::PFNGLGETSTRINGIPROC glGetStringi;
689 opencascade::PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
690 opencascade::PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
691 opencascade::PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
692 opencascade::PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
693 opencascade::PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
694 opencascade::PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
695 opencascade::PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
696 opencascade::PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
697 opencascade::PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
698 opencascade::PFNGLFENCESYNCPROC glFenceSync;
699 opencascade::PFNGLISSYNCPROC glIsSync;
700 opencascade::PFNGLDELETESYNCPROC glDeleteSync;
701 opencascade::PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
702 opencascade::PFNGLWAITSYNCPROC glWaitSync;
703 opencascade::PFNGLGETINTEGER64VPROC glGetInteger64v;
704 opencascade::PFNGLGETSYNCIVPROC glGetSynciv;
705 opencascade::PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
706 opencascade::PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
707 opencascade::PFNGLGENSAMPLERSPROC glGenSamplers;
708 opencascade::PFNGLDELETESAMPLERSPROC glDeleteSamplers;
709 opencascade::PFNGLISSAMPLERPROC glIsSampler;
710 opencascade::PFNGLBINDSAMPLERPROC glBindSampler;
711 opencascade::PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
712 opencascade::PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
713 opencascade::PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
714 opencascade::PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
715 opencascade::PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
716 opencascade::PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
717 opencascade::PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
718 opencascade::PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
719 opencascade::PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
720 opencascade::PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
721 opencascade::PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
722 opencascade::PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
723 opencascade::PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
724 opencascade::PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
725 opencascade::PFNGLPROGRAMBINARYPROC glProgramBinary;
726 opencascade::PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
727 opencascade::PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
728 opencascade::PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
729 opencascade::PFNGLTEXSTORAGE2DPROC glTexStorage2D;
730 opencascade::PFNGLTEXSTORAGE3DPROC glTexStorage3D;
731 opencascade::PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
733 public: //! @name OpenGL ES 3.1
735 opencascade::PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
736 opencascade::PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
737 opencascade::PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
738 opencascade::PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
739 opencascade::PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
740 opencascade::PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
741 opencascade::PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
742 opencascade::PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
743 opencascade::PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
744 opencascade::PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
745 opencascade::PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
746 opencascade::PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
747 opencascade::PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
748 opencascade::PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
749 opencascade::PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
750 opencascade::PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
751 opencascade::PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
752 opencascade::PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
753 opencascade::PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
754 opencascade::PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
755 opencascade::PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
756 opencascade::PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
757 opencascade::PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
758 opencascade::PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
759 opencascade::PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
760 opencascade::PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
761 opencascade::PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
762 opencascade::PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
763 opencascade::PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
764 opencascade::PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
765 opencascade::PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
766 opencascade::PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
767 opencascade::PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
768 opencascade::PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
769 opencascade::PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
770 opencascade::PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
771 opencascade::PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
772 opencascade::PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
773 opencascade::PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
774 opencascade::PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
775 opencascade::PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
776 opencascade::PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
777 opencascade::PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
778 opencascade::PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
779 opencascade::PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
780 opencascade::PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
781 opencascade::PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
782 opencascade::PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
783 opencascade::PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
784 opencascade::PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
785 opencascade::PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
786 opencascade::PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
787 opencascade::PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
788 opencascade::PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
789 opencascade::PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
790 opencascade::PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
791 opencascade::PFNGLMEMORYBARRIERPROC glMemoryBarrier;
792 opencascade::PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
793 opencascade::PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
794 opencascade::PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
795 opencascade::PFNGLSAMPLEMASKIPROC glSampleMaski;
796 opencascade::PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv;
797 opencascade::PFNGLGETTEXLEVELPARAMETERFVPROC glGetTexLevelParameterfv;
798 opencascade::PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
799 opencascade::PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
800 opencascade::PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
801 opencascade::PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
802 opencascade::PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
804 public: //! @name OpenGL ES 3.2
806 opencascade::PFNGLBLENDBARRIERPROC glBlendBarrier;
807 opencascade::PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
808 opencascade::PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
809 opencascade::PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
810 opencascade::PFNGLOBJECTLABELPROC glObjectLabel;
811 opencascade::PFNGLGETOBJECTLABELPROC glGetObjectLabel;
812 opencascade::PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
813 opencascade::PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
814 opencascade::PFNGLGETPOINTERVPROC glGetPointerv;
815 opencascade::PFNGLENABLEIPROC glEnablei;
816 opencascade::PFNGLDISABLEIPROC glDisablei;
817 opencascade::PFNGLBLENDEQUATIONIPROC glBlendEquationi;
818 opencascade::PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
819 opencascade::PFNGLBLENDFUNCIPROC glBlendFunci;
820 opencascade::PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
821 opencascade::PFNGLCOLORMASKIPROC glColorMaski;
822 opencascade::PFNGLISENABLEDIPROC glIsEnabledi;
823 opencascade::PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
824 opencascade::PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
825 opencascade::PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
826 opencascade::PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
827 opencascade::PFNGLPRIMITIVEBOUNDINGBOXPROC glPrimitiveBoundingBox;
828 opencascade::PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus;
829 opencascade::PFNGLREADNPIXELSPROC glReadnPixels;
830 opencascade::PFNGLGETNUNIFORMFVPROC glGetnUniformfv;
831 opencascade::PFNGLGETNUNIFORMIVPROC glGetnUniformiv;
832 opencascade::PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv;
833 opencascade::PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
834 opencascade::PFNGLPATCHPARAMETERIPROC glPatchParameteri;
835 opencascade::PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
836 opencascade::PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
837 opencascade::PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
838 opencascade::PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
839 opencascade::PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
840 opencascade::PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
841 opencascade::PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
842 opencascade::PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
843 opencascade::PFNGLTEXBUFFERPROC glTexBuffer;
844 opencascade::PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
845 opencascade::PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
847 public: //! @name GL_KHR_debug (optional) or OpenGL ES 3.2+
849 opencascade::PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
850 opencascade::PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
851 opencascade::PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
852 opencascade::PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
854 #else // OpenGL ES vs. desktop
856 public: //! @name OpenGL 1.2
858 PFNGLBLENDCOLORPROC glBlendColor;
859 PFNGLBLENDEQUATIONPROC glBlendEquation;
860 PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
861 PFNGLTEXIMAGE3DPROC glTexImage3D;
862 PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
863 PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
865 public: //! @name OpenGL 1.3
867 PFNGLACTIVETEXTUREPROC glActiveTexture;
868 PFNGLSAMPLECOVERAGEPROC glSampleCoverage;
869 PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
870 PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
871 PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D;
872 PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
873 PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
874 PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
875 PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;
877 PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture;
878 PFNGLMULTITEXCOORD1DPROC glMultiTexCoord1d;
879 PFNGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv;
880 PFNGLMULTITEXCOORD1FPROC glMultiTexCoord1f;
881 PFNGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv;
882 PFNGLMULTITEXCOORD1IPROC glMultiTexCoord1i;
883 PFNGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv;
884 PFNGLMULTITEXCOORD1SPROC glMultiTexCoord1s;
885 PFNGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv;
886 PFNGLMULTITEXCOORD2DPROC glMultiTexCoord2d;
887 PFNGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv;
888 PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f;
889 PFNGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv;
890 PFNGLMULTITEXCOORD2IPROC glMultiTexCoord2i;
891 PFNGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv;
892 PFNGLMULTITEXCOORD2SPROC glMultiTexCoord2s;
893 PFNGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv;
894 PFNGLMULTITEXCOORD3DPROC glMultiTexCoord3d;
895 PFNGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv;
896 PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f;
897 PFNGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv;
898 PFNGLMULTITEXCOORD3IPROC glMultiTexCoord3i;
899 PFNGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv;
900 PFNGLMULTITEXCOORD3SPROC glMultiTexCoord3s;
901 PFNGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv;
902 PFNGLMULTITEXCOORD4DPROC glMultiTexCoord4d;
903 PFNGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv;
904 PFNGLMULTITEXCOORD4FPROC glMultiTexCoord4f;
905 PFNGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv;
906 PFNGLMULTITEXCOORD4IPROC glMultiTexCoord4i;
907 PFNGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv;
908 PFNGLMULTITEXCOORD4SPROC glMultiTexCoord4s;
909 PFNGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv;
910 PFNGLLOADTRANSPOSEMATRIXFPROC glLoadTransposeMatrixf;
911 PFNGLLOADTRANSPOSEMATRIXDPROC glLoadTransposeMatrixd;
912 PFNGLMULTTRANSPOSEMATRIXFPROC glMultTransposeMatrixf;
913 PFNGLMULTTRANSPOSEMATRIXDPROC glMultTransposeMatrixd;
915 public: //! @name OpenGL 1.4
917 PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
918 PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays;
919 PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
920 PFNGLPOINTPARAMETERFPROC glPointParameterf;
921 PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
922 PFNGLPOINTPARAMETERIPROC glPointParameteri;
923 PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
925 public: //! @name OpenGL 1.5
927 PFNGLGENQUERIESPROC glGenQueries;
928 PFNGLDELETEQUERIESPROC glDeleteQueries;
929 PFNGLISQUERYPROC glIsQuery;
930 PFNGLBEGINQUERYPROC glBeginQuery;
931 PFNGLENDQUERYPROC glEndQuery;
932 PFNGLGETQUERYIVPROC glGetQueryiv;
933 PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
934 PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
935 PFNGLBINDBUFFERPROC glBindBuffer;
936 PFNGLDELETEBUFFERSPROC glDeleteBuffers;
937 PFNGLGENBUFFERSPROC glGenBuffers;
938 PFNGLISBUFFERPROC glIsBuffer;
939 PFNGLBUFFERDATAPROC glBufferData;
940 PFNGLBUFFERSUBDATAPROC glBufferSubData;
941 PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
942 PFNGLMAPBUFFERPROC glMapBuffer;
943 PFNGLUNMAPBUFFERPROC glUnmapBuffer;
944 PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
945 PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
947 public: //! @name OpenGL 2.0
949 PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
950 PFNGLDRAWBUFFERSPROC glDrawBuffers;
951 PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
952 PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
953 PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate;
954 PFNGLATTACHSHADERPROC glAttachShader;
955 PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
956 PFNGLCOMPILESHADERPROC glCompileShader;
957 PFNGLCREATEPROGRAMPROC glCreateProgram;
958 PFNGLCREATESHADERPROC glCreateShader;
959 PFNGLDELETEPROGRAMPROC glDeleteProgram;
960 PFNGLDELETESHADERPROC glDeleteShader;
961 PFNGLDETACHSHADERPROC glDetachShader;
962 PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
963 PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
964 PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
965 PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
966 PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
967 PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
968 PFNGLGETPROGRAMIVPROC glGetProgramiv;
969 PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
970 PFNGLGETSHADERIVPROC glGetShaderiv;
971 PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
972 PFNGLGETSHADERSOURCEPROC glGetShaderSource;
973 PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
974 PFNGLGETUNIFORMFVPROC glGetUniformfv;
975 PFNGLGETUNIFORMIVPROC glGetUniformiv;
976 PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
977 PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
978 PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
979 PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
980 PFNGLISPROGRAMPROC glIsProgram;
981 PFNGLISSHADERPROC glIsShader;
982 PFNGLLINKPROGRAMPROC glLinkProgram;
983 PFNGLSHADERSOURCEPROC glShaderSource;
984 PFNGLUSEPROGRAMPROC glUseProgram;
985 PFNGLUNIFORM1FPROC glUniform1f;
986 PFNGLUNIFORM2FPROC glUniform2f;
987 PFNGLUNIFORM3FPROC glUniform3f;
988 PFNGLUNIFORM4FPROC glUniform4f;
989 PFNGLUNIFORM1IPROC glUniform1i;
990 PFNGLUNIFORM2IPROC glUniform2i;
991 PFNGLUNIFORM3IPROC glUniform3i;
992 PFNGLUNIFORM4IPROC glUniform4i;
993 PFNGLUNIFORM1FVPROC glUniform1fv;
994 PFNGLUNIFORM2FVPROC glUniform2fv;
995 PFNGLUNIFORM3FVPROC glUniform3fv;
996 PFNGLUNIFORM4FVPROC glUniform4fv;
997 PFNGLUNIFORM1IVPROC glUniform1iv;
998 PFNGLUNIFORM2IVPROC glUniform2iv;
999 PFNGLUNIFORM3IVPROC glUniform3iv;
1000 PFNGLUNIFORM4IVPROC glUniform4iv;
1001 PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
1002 PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
1003 PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
1004 PFNGLVALIDATEPROGRAMPROC glValidateProgram;
1005 PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d;
1006 PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
1007 PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f;
1008 PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
1009 PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s;
1010 PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv;
1011 PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d;
1012 PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
1013 PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f;
1014 PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
1015 PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s;
1016 PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv;
1017 PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d;
1018 PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
1019 PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f;
1020 PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
1021 PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s;
1022 PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv;
1023 PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv;
1024 PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv;
1025 PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv;
1026 PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub;
1027 PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv;
1028 PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv;
1029 PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv;
1030 PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv;
1031 PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d;
1032 PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
1033 PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f;
1034 PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
1035 PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv;
1036 PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s;
1037 PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv;
1038 PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv;
1039 PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv;
1040 PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv;
1041 PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
1043 public: //! @name OpenGL 2.1
1045 PFNGLUNIFORMMATRIX2X3FVPROC glUniformMatrix2x3fv;
1046 PFNGLUNIFORMMATRIX3X2FVPROC glUniformMatrix3x2fv;
1047 PFNGLUNIFORMMATRIX2X4FVPROC glUniformMatrix2x4fv;
1048 PFNGLUNIFORMMATRIX4X2FVPROC glUniformMatrix4x2fv;
1049 PFNGLUNIFORMMATRIX3X4FVPROC glUniformMatrix3x4fv;
1050 PFNGLUNIFORMMATRIX4X3FVPROC glUniformMatrix4x3fv;
1052 public: //! @name GL_ARB_framebuffer_object (added to OpenGL 3.0 core)
1054 PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
1055 PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
1056 PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
1057 PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
1058 PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
1059 PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
1060 PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
1061 PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
1062 PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
1063 PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
1064 PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
1065 PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
1066 PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
1067 PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
1068 PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
1069 PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
1070 PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
1071 PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
1072 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
1073 PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
1075 public: //! @name GL_ARB_vertex_array_object (added to OpenGL 3.0 core)
1077 PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
1078 PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
1079 PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
1080 PFNGLISVERTEXARRAYPROC glIsVertexArray;
1082 public: //! @name GL_ARB_map_buffer_range (added to OpenGL 3.0 core)
1084 PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
1085 PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
1087 public: //! @name OpenGL 3.0
1089 PFNGLCOLORMASKIPROC glColorMaski;
1090 PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
1091 PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
1092 PFNGLENABLEIPROC glEnablei;
1093 PFNGLDISABLEIPROC glDisablei;
1094 PFNGLISENABLEDIPROC glIsEnabledi;
1095 PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
1096 PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
1097 PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
1098 PFNGLBINDBUFFERBASEPROC glBindBufferBase;
1099 PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
1100 PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
1101 PFNGLCLAMPCOLORPROC glClampColor;
1102 PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
1103 PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
1104 PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
1105 PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
1106 PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
1107 PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i;
1108 PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i;
1109 PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i;
1110 PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
1111 PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui;
1112 PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui;
1113 PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui;
1114 PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
1115 PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
1116 PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
1117 PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
1118 PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
1119 PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
1120 PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
1121 PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
1122 PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
1123 PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv;
1124 PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv;
1125 PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv;
1126 PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv;
1127 PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
1128 PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
1129 PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
1130 PFNGLUNIFORM1UIPROC glUniform1ui;
1131 PFNGLUNIFORM2UIPROC glUniform2ui;
1132 PFNGLUNIFORM3UIPROC glUniform3ui;
1133 PFNGLUNIFORM4UIPROC glUniform4ui;
1134 PFNGLUNIFORM1UIVPROC glUniform1uiv;
1135 PFNGLUNIFORM2UIVPROC glUniform2uiv;
1136 PFNGLUNIFORM3UIVPROC glUniform3uiv;
1137 PFNGLUNIFORM4UIVPROC glUniform4uiv;
1138 PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
1139 PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
1140 PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
1141 PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
1142 PFNGLCLEARBUFFERIVPROC glClearBufferiv;
1143 PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
1144 PFNGLCLEARBUFFERFVPROC glClearBufferfv;
1145 PFNGLCLEARBUFFERFIPROC glClearBufferfi;
1146 PFNGLGETSTRINGIPROC glGetStringi;
1148 public: //! @name GL_ARB_uniform_buffer_object (added to OpenGL 3.1 core)
1150 PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
1151 PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
1152 PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
1153 PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
1154 PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
1155 PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
1156 PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
1158 public: //! @name GL_ARB_copy_buffer (added to OpenGL 3.1 core)
1160 PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
1162 public: //! @name OpenGL 3.1
1164 PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
1165 PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
1166 PFNGLTEXBUFFERPROC glTexBuffer;
1167 PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
1169 public: //! @name GL_ARB_draw_elements_base_vertex (added to OpenGL 3.2 core)
1171 PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
1172 PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
1173 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
1174 PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
1176 public: //! @name GL_ARB_provoking_vertex (added to OpenGL 3.2 core)
1178 PFNGLPROVOKINGVERTEXPROC glProvokingVertex;
1180 public: //! @name GL_ARB_sync (added to OpenGL 3.2 core)
1182 PFNGLFENCESYNCPROC glFenceSync;
1183 PFNGLISSYNCPROC glIsSync;
1184 PFNGLDELETESYNCPROC glDeleteSync;
1185 PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
1186 PFNGLWAITSYNCPROC glWaitSync;
1187 PFNGLGETINTEGER64VPROC glGetInteger64v;
1188 PFNGLGETSYNCIVPROC glGetSynciv;
1190 public: //! @name GL_ARB_texture_multisample (added to OpenGL 3.2 core)
1192 PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
1193 PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
1194 PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
1195 PFNGLSAMPLEMASKIPROC glSampleMaski;
1197 public: //! @name OpenGL 3.2
1199 PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
1200 PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
1201 PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
1203 public: //! @name GL_ARB_blend_func_extended (added to OpenGL 3.3 core)
1205 PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
1206 PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
1208 public: //! @name GL_ARB_sampler_objects (added to OpenGL 3.3 core)
1210 PFNGLGENSAMPLERSPROC glGenSamplers;
1211 PFNGLDELETESAMPLERSPROC glDeleteSamplers;
1212 PFNGLISSAMPLERPROC glIsSampler;
1213 PFNGLBINDSAMPLERPROC glBindSampler;
1214 PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
1215 PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
1216 PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
1217 PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
1218 PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
1219 PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
1220 PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
1221 PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
1222 PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
1223 PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
1225 public: //! @name GL_ARB_timer_query (added to OpenGL 3.3 core)
1227 PFNGLQUERYCOUNTERPROC glQueryCounter;
1228 PFNGLGETQUERYOBJECTI64VPROC glGetQueryObjecti64v;
1229 PFNGLGETQUERYOBJECTUI64VPROC glGetQueryObjectui64v;
1231 public: //! @name GL_ARB_vertex_type_2_10_10_10_rev (added to OpenGL 3.3 core)
1233 PFNGLVERTEXP2UIPROC glVertexP2ui;
1234 PFNGLVERTEXP2UIVPROC glVertexP2uiv;
1235 PFNGLVERTEXP3UIPROC glVertexP3ui;
1236 PFNGLVERTEXP3UIVPROC glVertexP3uiv;
1237 PFNGLVERTEXP4UIPROC glVertexP4ui;
1238 PFNGLVERTEXP4UIVPROC glVertexP4uiv;
1239 PFNGLTEXCOORDP1UIPROC glTexCoordP1ui;
1240 PFNGLTEXCOORDP1UIVPROC glTexCoordP1uiv;
1241 PFNGLTEXCOORDP2UIPROC glTexCoordP2ui;
1242 PFNGLTEXCOORDP2UIVPROC glTexCoordP2uiv;
1243 PFNGLTEXCOORDP3UIPROC glTexCoordP3ui;
1244 PFNGLTEXCOORDP3UIVPROC glTexCoordP3uiv;
1245 PFNGLTEXCOORDP4UIPROC glTexCoordP4ui;
1246 PFNGLTEXCOORDP4UIVPROC glTexCoordP4uiv;
1247 PFNGLMULTITEXCOORDP1UIPROC glMultiTexCoordP1ui;
1248 PFNGLMULTITEXCOORDP1UIVPROC glMultiTexCoordP1uiv;
1249 PFNGLMULTITEXCOORDP2UIPROC glMultiTexCoordP2ui;
1250 PFNGLMULTITEXCOORDP2UIVPROC glMultiTexCoordP2uiv;
1251 PFNGLMULTITEXCOORDP3UIPROC glMultiTexCoordP3ui;
1252 PFNGLMULTITEXCOORDP3UIVPROC glMultiTexCoordP3uiv;
1253 PFNGLMULTITEXCOORDP4UIPROC glMultiTexCoordP4ui;
1254 PFNGLMULTITEXCOORDP4UIVPROC glMultiTexCoordP4uiv;
1255 PFNGLNORMALP3UIPROC glNormalP3ui;
1256 PFNGLNORMALP3UIVPROC glNormalP3uiv;
1257 PFNGLCOLORP3UIPROC glColorP3ui;
1258 PFNGLCOLORP3UIVPROC glColorP3uiv;
1259 PFNGLCOLORP4UIPROC glColorP4ui;
1260 PFNGLCOLORP4UIVPROC glColorP4uiv;
1261 PFNGLSECONDARYCOLORP3UIPROC glSecondaryColorP3ui;
1262 PFNGLSECONDARYCOLORP3UIVPROC glSecondaryColorP3uiv;
1263 PFNGLVERTEXATTRIBP1UIPROC glVertexAttribP1ui;
1264 PFNGLVERTEXATTRIBP1UIVPROC glVertexAttribP1uiv;
1265 PFNGLVERTEXATTRIBP2UIPROC glVertexAttribP2ui;
1266 PFNGLVERTEXATTRIBP2UIVPROC glVertexAttribP2uiv;
1267 PFNGLVERTEXATTRIBP3UIPROC glVertexAttribP3ui;
1268 PFNGLVERTEXATTRIBP3UIVPROC glVertexAttribP3uiv;
1269 PFNGLVERTEXATTRIBP4UIPROC glVertexAttribP4ui;
1270 PFNGLVERTEXATTRIBP4UIVPROC glVertexAttribP4uiv;
1272 public: //! @name OpenGL 3.3
1274 PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
1276 public: //! @name GL_ARB_draw_indirect (added to OpenGL 4.0 core)
1278 PFNGLDRAWARRAYSINDIRECTPROC glDrawArraysIndirect;
1279 PFNGLDRAWELEMENTSINDIRECTPROC glDrawElementsIndirect;
1281 public: //! @name GL_ARB_gpu_shader_fp64 (added to OpenGL 4.0 core)
1283 PFNGLUNIFORM1DPROC glUniform1d;
1284 PFNGLUNIFORM2DPROC glUniform2d;
1285 PFNGLUNIFORM3DPROC glUniform3d;
1286 PFNGLUNIFORM4DPROC glUniform4d;
1287 PFNGLUNIFORM1DVPROC glUniform1dv;
1288 PFNGLUNIFORM2DVPROC glUniform2dv;
1289 PFNGLUNIFORM3DVPROC glUniform3dv;
1290 PFNGLUNIFORM4DVPROC glUniform4dv;
1291 PFNGLUNIFORMMATRIX2DVPROC glUniformMatrix2dv;
1292 PFNGLUNIFORMMATRIX3DVPROC glUniformMatrix3dv;
1293 PFNGLUNIFORMMATRIX4DVPROC glUniformMatrix4dv;
1294 PFNGLUNIFORMMATRIX2X3DVPROC glUniformMatrix2x3dv;
1295 PFNGLUNIFORMMATRIX2X4DVPROC glUniformMatrix2x4dv;
1296 PFNGLUNIFORMMATRIX3X2DVPROC glUniformMatrix3x2dv;
1297 PFNGLUNIFORMMATRIX3X4DVPROC glUniformMatrix3x4dv;
1298 PFNGLUNIFORMMATRIX4X2DVPROC glUniformMatrix4x2dv;
1299 PFNGLUNIFORMMATRIX4X3DVPROC glUniformMatrix4x3dv;
1300 PFNGLGETUNIFORMDVPROC glGetUniformdv;
1302 public: //! @name GL_ARB_shader_subroutine (added to OpenGL 4.0 core)
1304 PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glGetSubroutineUniformLocation;
1305 PFNGLGETSUBROUTINEINDEXPROC glGetSubroutineIndex;
1306 PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glGetActiveSubroutineUniformiv;
1307 PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glGetActiveSubroutineUniformName;
1308 PFNGLGETACTIVESUBROUTINENAMEPROC glGetActiveSubroutineName;
1309 PFNGLUNIFORMSUBROUTINESUIVPROC glUniformSubroutinesuiv;
1310 PFNGLGETUNIFORMSUBROUTINEUIVPROC glGetUniformSubroutineuiv;
1311 PFNGLGETPROGRAMSTAGEIVPROC glGetProgramStageiv;
1313 public: //! @name GL_ARB_tessellation_shader (added to OpenGL 4.0 core)
1315 PFNGLPATCHPARAMETERIPROC glPatchParameteri;
1316 PFNGLPATCHPARAMETERFVPROC glPatchParameterfv;
1318 public: //! @name GL_ARB_transform_feedback2 (added to OpenGL 4.0 core)
1320 PFNGLBINDTRANSFORMFEEDBACKPROC glBindTransformFeedback;
1321 PFNGLDELETETRANSFORMFEEDBACKSPROC glDeleteTransformFeedbacks;
1322 PFNGLGENTRANSFORMFEEDBACKSPROC glGenTransformFeedbacks;
1323 PFNGLISTRANSFORMFEEDBACKPROC glIsTransformFeedback;
1324 PFNGLPAUSETRANSFORMFEEDBACKPROC glPauseTransformFeedback;
1325 PFNGLRESUMETRANSFORMFEEDBACKPROC glResumeTransformFeedback;
1326 PFNGLDRAWTRANSFORMFEEDBACKPROC glDrawTransformFeedback;
1328 public: //! @name GL_ARB_transform_feedback3 (added to OpenGL 4.0 core)
1330 PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glDrawTransformFeedbackStream;
1331 PFNGLBEGINQUERYINDEXEDPROC glBeginQueryIndexed;
1332 PFNGLENDQUERYINDEXEDPROC glEndQueryIndexed;
1333 PFNGLGETQUERYINDEXEDIVPROC glGetQueryIndexediv;
1335 public: //! @name OpenGL 4.0
1337 PFNGLMINSAMPLESHADINGPROC glMinSampleShading;
1338 PFNGLBLENDEQUATIONIPROC glBlendEquationi;
1339 PFNGLBLENDEQUATIONSEPARATEIPROC glBlendEquationSeparatei;
1340 PFNGLBLENDFUNCIPROC glBlendFunci;
1341 PFNGLBLENDFUNCSEPARATEIPROC glBlendFuncSeparatei;
1343 public: //! @name GL_ARB_ES2_compatibility (added to OpenGL 4.1 core)
1345 PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
1346 PFNGLSHADERBINARYPROC glShaderBinary;
1347 PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
1348 PFNGLDEPTHRANGEFPROC glDepthRangef;
1349 PFNGLCLEARDEPTHFPROC glClearDepthf;
1351 public: //! @name GL_ARB_get_program_binary (added to OpenGL 4.1 core)
1353 PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
1354 PFNGLPROGRAMBINARYPROC glProgramBinary;
1355 PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
1357 public: //! @name GL_ARB_separate_shader_objects (added to OpenGL 4.1 core)
1359 PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages;
1360 PFNGLACTIVESHADERPROGRAMPROC glActiveShaderProgram;
1361 PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv;
1362 PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline;
1363 PFNGLDELETEPROGRAMPIPELINESPROC glDeleteProgramPipelines;
1364 PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines;
1365 PFNGLISPROGRAMPIPELINEPROC glIsProgramPipeline;
1366 PFNGLGETPROGRAMPIPELINEIVPROC glGetProgramPipelineiv;
1367 PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
1368 PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
1369 PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f;
1370 PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
1371 PFNGLPROGRAMUNIFORM1DPROC glProgramUniform1d;
1372 PFNGLPROGRAMUNIFORM1DVPROC glProgramUniform1dv;
1373 PFNGLPROGRAMUNIFORM1UIPROC glProgramUniform1ui;
1374 PFNGLPROGRAMUNIFORM1UIVPROC glProgramUniform1uiv;
1375 PFNGLPROGRAMUNIFORM2IPROC glProgramUniform2i;
1376 PFNGLPROGRAMUNIFORM2IVPROC glProgramUniform2iv;
1377 PFNGLPROGRAMUNIFORM2FPROC glProgramUniform2f;
1378 PFNGLPROGRAMUNIFORM2FVPROC glProgramUniform2fv;
1379 PFNGLPROGRAMUNIFORM2DPROC glProgramUniform2d;
1380 PFNGLPROGRAMUNIFORM2DVPROC glProgramUniform2dv;
1381 PFNGLPROGRAMUNIFORM2UIPROC glProgramUniform2ui;
1382 PFNGLPROGRAMUNIFORM2UIVPROC glProgramUniform2uiv;
1383 PFNGLPROGRAMUNIFORM3IPROC glProgramUniform3i;
1384 PFNGLPROGRAMUNIFORM3IVPROC glProgramUniform3iv;
1385 PFNGLPROGRAMUNIFORM3FPROC glProgramUniform3f;
1386 PFNGLPROGRAMUNIFORM3FVPROC glProgramUniform3fv;
1387 PFNGLPROGRAMUNIFORM3DPROC glProgramUniform3d;
1388 PFNGLPROGRAMUNIFORM3DVPROC glProgramUniform3dv;
1389 PFNGLPROGRAMUNIFORM3UIPROC glProgramUniform3ui;
1390 PFNGLPROGRAMUNIFORM3UIVPROC glProgramUniform3uiv;
1391 PFNGLPROGRAMUNIFORM4IPROC glProgramUniform4i;
1392 PFNGLPROGRAMUNIFORM4IVPROC glProgramUniform4iv;
1393 PFNGLPROGRAMUNIFORM4FPROC glProgramUniform4f;
1394 PFNGLPROGRAMUNIFORM4FVPROC glProgramUniform4fv;
1395 PFNGLPROGRAMUNIFORM4DPROC glProgramUniform4d;
1396 PFNGLPROGRAMUNIFORM4DVPROC glProgramUniform4dv;
1397 PFNGLPROGRAMUNIFORM4UIPROC glProgramUniform4ui;
1398 PFNGLPROGRAMUNIFORM4UIVPROC glProgramUniform4uiv;
1399 PFNGLPROGRAMUNIFORMMATRIX2FVPROC glProgramUniformMatrix2fv;
1400 PFNGLPROGRAMUNIFORMMATRIX3FVPROC glProgramUniformMatrix3fv;
1401 PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
1402 PFNGLPROGRAMUNIFORMMATRIX2DVPROC glProgramUniformMatrix2dv;
1403 PFNGLPROGRAMUNIFORMMATRIX3DVPROC glProgramUniformMatrix3dv;
1404 PFNGLPROGRAMUNIFORMMATRIX4DVPROC glProgramUniformMatrix4dv;
1405 PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glProgramUniformMatrix2x3fv;
1406 PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glProgramUniformMatrix3x2fv;
1407 PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glProgramUniformMatrix2x4fv;
1408 PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glProgramUniformMatrix4x2fv;
1409 PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glProgramUniformMatrix3x4fv;
1410 PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glProgramUniformMatrix4x3fv;
1411 PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glProgramUniformMatrix2x3dv;
1412 PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glProgramUniformMatrix3x2dv;
1413 PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glProgramUniformMatrix2x4dv;
1414 PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glProgramUniformMatrix4x2dv;
1415 PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glProgramUniformMatrix3x4dv;
1416 PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glProgramUniformMatrix4x3dv;
1417 PFNGLVALIDATEPROGRAMPIPELINEPROC glValidateProgramPipeline;
1418 PFNGLGETPROGRAMPIPELINEINFOLOGPROC glGetProgramPipelineInfoLog;
1420 public: //! @name GL_ARB_vertex_attrib_64bit (added to OpenGL 4.1 core)
1422 PFNGLVERTEXATTRIBL1DPROC glVertexAttribL1d;
1423 PFNGLVERTEXATTRIBL2DPROC glVertexAttribL2d;
1424 PFNGLVERTEXATTRIBL3DPROC glVertexAttribL3d;
1425 PFNGLVERTEXATTRIBL4DPROC glVertexAttribL4d;
1426 PFNGLVERTEXATTRIBL1DVPROC glVertexAttribL1dv;
1427 PFNGLVERTEXATTRIBL2DVPROC glVertexAttribL2dv;
1428 PFNGLVERTEXATTRIBL3DVPROC glVertexAttribL3dv;
1429 PFNGLVERTEXATTRIBL4DVPROC glVertexAttribL4dv;
1430 PFNGLVERTEXATTRIBLPOINTERPROC glVertexAttribLPointer;
1431 PFNGLGETVERTEXATTRIBLDVPROC glGetVertexAttribLdv;
1433 public: //! @name GL_ARB_viewport_array (added to OpenGL 4.1 core)
1435 PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
1436 PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
1437 PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
1438 PFNGLSCISSORARRAYVPROC glScissorArrayv;
1439 PFNGLSCISSORINDEXEDPROC glScissorIndexed;
1440 PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
1441 PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
1442 PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
1443 PFNGLGETFLOATI_VPROC glGetFloati_v;
1444 PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
1446 public: //! @name OpenGL 4.1
1450 public: //! @name GL_ARB_base_instance (added to OpenGL 4.2 core)
1452 PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
1453 PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
1454 PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
1456 public: //! @name GL_ARB_transform_feedback_instanced (added to OpenGL 4.2 core)
1458 PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
1459 PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
1461 public: //! @name GL_ARB_internalformat_query (added to OpenGL 4.2 core)
1463 PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
1465 public: //! @name GL_ARB_shader_atomic_counters (added to OpenGL 4.2 core)
1467 PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
1469 public: //! @name GL_ARB_shader_image_load_store (added to OpenGL 4.2 core)
1471 PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
1472 PFNGLMEMORYBARRIERPROC glMemoryBarrier;
1474 public: //! @name GL_ARB_texture_storage (added to OpenGL 4.2 core)
1476 PFNGLTEXSTORAGE1DPROC glTexStorage1D;
1477 PFNGLTEXSTORAGE2DPROC glTexStorage2D;
1478 PFNGLTEXSTORAGE3DPROC glTexStorage3D;
1480 public: //! @name OpenGL 4.2
1482 public: //! @name OpenGL 4.3
1484 PFNGLCLEARBUFFERDATAPROC glClearBufferData;
1485 PFNGLCLEARBUFFERSUBDATAPROC glClearBufferSubData;
1486 PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
1487 PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
1488 PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
1489 PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
1490 PFNGLGETFRAMEBUFFERPARAMETERIVPROC glGetFramebufferParameteriv;
1491 PFNGLGETINTERNALFORMATI64VPROC glGetInternalformati64v;
1492 PFNGLINVALIDATETEXSUBIMAGEPROC glInvalidateTexSubImage;
1493 PFNGLINVALIDATETEXIMAGEPROC glInvalidateTexImage;
1494 PFNGLINVALIDATEBUFFERSUBDATAPROC glInvalidateBufferSubData;
1495 PFNGLINVALIDATEBUFFERDATAPROC glInvalidateBufferData;
1496 PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
1497 PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
1498 PFNGLMULTIDRAWARRAYSINDIRECTPROC glMultiDrawArraysIndirect;
1499 PFNGLMULTIDRAWELEMENTSINDIRECTPROC glMultiDrawElementsIndirect;
1500 PFNGLGETPROGRAMINTERFACEIVPROC glGetProgramInterfaceiv;
1501 PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
1502 PFNGLGETPROGRAMRESOURCENAMEPROC glGetProgramResourceName;
1503 PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
1504 PFNGLGETPROGRAMRESOURCELOCATIONPROC glGetProgramResourceLocation;
1505 PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glGetProgramResourceLocationIndex;
1506 PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
1507 PFNGLTEXBUFFERRANGEPROC glTexBufferRange;
1508 PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
1509 PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
1510 PFNGLTEXTUREVIEWPROC glTextureView;
1511 PFNGLBINDVERTEXBUFFERPROC glBindVertexBuffer;
1512 PFNGLVERTEXATTRIBFORMATPROC glVertexAttribFormat;
1513 PFNGLVERTEXATTRIBIFORMATPROC glVertexAttribIFormat;
1514 PFNGLVERTEXATTRIBLFORMATPROC glVertexAttribLFormat;
1515 PFNGLVERTEXATTRIBBINDINGPROC glVertexAttribBinding;
1516 PFNGLVERTEXBINDINGDIVISORPROC glVertexBindingDivisor;
1517 PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
1518 PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
1519 PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
1520 PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
1521 PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
1522 PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
1523 PFNGLOBJECTLABELPROC glObjectLabel;
1524 PFNGLGETOBJECTLABELPROC glGetObjectLabel;
1525 PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
1526 PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
1528 public: //! @name OpenGL 4.4
1530 PFNGLBUFFERSTORAGEPROC glBufferStorage;
1531 PFNGLCLEARTEXIMAGEPROC glClearTexImage;
1532 PFNGLCLEARTEXSUBIMAGEPROC glClearTexSubImage;
1533 PFNGLBINDBUFFERSBASEPROC glBindBuffersBase;
1534 PFNGLBINDBUFFERSRANGEPROC glBindBuffersRange;
1535 PFNGLBINDTEXTURESPROC glBindTextures;
1536 PFNGLBINDSAMPLERSPROC glBindSamplers;
1537 PFNGLBINDIMAGETEXTURESPROC glBindImageTextures;
1538 PFNGLBINDVERTEXBUFFERSPROC glBindVertexBuffers;
1540 public: //! @name OpenGL 4.5
1542 PFNGLCLIPCONTROLPROC glClipControl;
1543 PFNGLCREATETRANSFORMFEEDBACKSPROC glCreateTransformFeedbacks;
1544 PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glTransformFeedbackBufferBase;
1545 PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glTransformFeedbackBufferRange;
1546 PFNGLGETTRANSFORMFEEDBACKIVPROC glGetTransformFeedbackiv;
1547 PFNGLGETTRANSFORMFEEDBACKI_VPROC glGetTransformFeedbacki_v;
1548 PFNGLGETTRANSFORMFEEDBACKI64_VPROC glGetTransformFeedbacki64_v;
1549 PFNGLCREATEBUFFERSPROC glCreateBuffers;
1550 PFNGLNAMEDBUFFERSTORAGEPROC glNamedBufferStorage;
1551 PFNGLNAMEDBUFFERDATAPROC glNamedBufferData;
1552 PFNGLNAMEDBUFFERSUBDATAPROC glNamedBufferSubData;
1553 PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData;
1554 PFNGLCLEARNAMEDBUFFERDATAPROC glClearNamedBufferData;
1555 PFNGLCLEARNAMEDBUFFERSUBDATAPROC glClearNamedBufferSubData;
1556 PFNGLMAPNAMEDBUFFERPROC glMapNamedBuffer;
1557 PFNGLMAPNAMEDBUFFERRANGEPROC glMapNamedBufferRange;
1558 PFNGLUNMAPNAMEDBUFFERPROC glUnmapNamedBuffer;
1559 PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glFlushMappedNamedBufferRange;
1560 PFNGLGETNAMEDBUFFERPARAMETERIVPROC glGetNamedBufferParameteriv;
1561 PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glGetNamedBufferParameteri64v;
1562 PFNGLGETNAMEDBUFFERPOINTERVPROC glGetNamedBufferPointerv;
1563 PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
1564 PFNGLCREATEFRAMEBUFFERSPROC glCreateFramebuffers;
1565 PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glNamedFramebufferRenderbuffer;
1566 PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glNamedFramebufferParameteri;
1567 PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glNamedFramebufferTexture;
1568 PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glNamedFramebufferTextureLayer;
1569 PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer;
1570 PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glNamedFramebufferDrawBuffers;
1571 PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glNamedFramebufferReadBuffer;
1572 PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glInvalidateNamedFramebufferData;
1573 PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glInvalidateNamedFramebufferSubData;
1574 PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glClearNamedFramebufferiv;
1575 PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glClearNamedFramebufferuiv;
1576 PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glClearNamedFramebufferfv;
1577 PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glClearNamedFramebufferfi;
1578 PFNGLBLITNAMEDFRAMEBUFFERPROC glBlitNamedFramebuffer;
1579 PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glCheckNamedFramebufferStatus;
1580 PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glGetNamedFramebufferParameteriv;
1581 PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetNamedFramebufferAttachmentParameteriv;
1582 PFNGLCREATERENDERBUFFERSPROC glCreateRenderbuffers;
1583 PFNGLNAMEDRENDERBUFFERSTORAGEPROC glNamedRenderbufferStorage;
1584 PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glNamedRenderbufferStorageMultisample;
1585 PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glGetNamedRenderbufferParameteriv;
1586 PFNGLCREATETEXTURESPROC glCreateTextures;
1587 PFNGLTEXTUREBUFFERPROC glTextureBuffer;
1588 PFNGLTEXTUREBUFFERRANGEPROC glTextureBufferRange;
1589 PFNGLTEXTURESTORAGE1DPROC glTextureStorage1D;
1590 PFNGLTEXTURESTORAGE2DPROC glTextureStorage2D;
1591 PFNGLTEXTURESTORAGE3DPROC glTextureStorage3D;
1592 PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glTextureStorage2DMultisample;
1593 PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glTextureStorage3DMultisample;
1594 PFNGLTEXTURESUBIMAGE1DPROC glTextureSubImage1D;
1595 PFNGLTEXTURESUBIMAGE2DPROC glTextureSubImage2D;
1596 PFNGLTEXTURESUBIMAGE3DPROC glTextureSubImage3D;
1597 PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glCompressedTextureSubImage1D;
1598 PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glCompressedTextureSubImage2D;
1599 PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glCompressedTextureSubImage3D;
1600 PFNGLCOPYTEXTURESUBIMAGE1DPROC glCopyTextureSubImage1D;
1601 PFNGLCOPYTEXTURESUBIMAGE2DPROC glCopyTextureSubImage2D;
1602 PFNGLCOPYTEXTURESUBIMAGE3DPROC glCopyTextureSubImage3D;
1603 PFNGLTEXTUREPARAMETERFPROC glTextureParameterf;
1604 PFNGLTEXTUREPARAMETERFVPROC glTextureParameterfv;
1605 PFNGLTEXTUREPARAMETERIPROC glTextureParameteri;
1606 PFNGLTEXTUREPARAMETERIIVPROC glTextureParameterIiv;
1607 PFNGLTEXTUREPARAMETERIUIVPROC glTextureParameterIuiv;
1608 PFNGLTEXTUREPARAMETERIVPROC glTextureParameteriv;
1609 PFNGLGENERATETEXTUREMIPMAPPROC glGenerateTextureMipmap;
1610 PFNGLBINDTEXTUREUNITPROC glBindTextureUnit;
1611 PFNGLGETTEXTUREIMAGEPROC glGetTextureImage;
1612 PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glGetCompressedTextureImage;
1613 PFNGLGETTEXTURELEVELPARAMETERFVPROC glGetTextureLevelParameterfv;
1614 PFNGLGETTEXTURELEVELPARAMETERIVPROC glGetTextureLevelParameteriv;
1615 PFNGLGETTEXTUREPARAMETERFVPROC glGetTextureParameterfv;
1616 PFNGLGETTEXTUREPARAMETERIIVPROC glGetTextureParameterIiv;
1617 PFNGLGETTEXTUREPARAMETERIUIVPROC glGetTextureParameterIuiv;
1618 PFNGLGETTEXTUREPARAMETERIVPROC glGetTextureParameteriv;
1619 PFNGLCREATEVERTEXARRAYSPROC glCreateVertexArrays;
1620 PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib;
1621 PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib;
1622 PFNGLVERTEXARRAYELEMENTBUFFERPROC glVertexArrayElementBuffer;
1623 PFNGLVERTEXARRAYVERTEXBUFFERPROC glVertexArrayVertexBuffer;
1624 PFNGLVERTEXARRAYVERTEXBUFFERSPROC glVertexArrayVertexBuffers;
1625 PFNGLVERTEXARRAYATTRIBBINDINGPROC glVertexArrayAttribBinding;
1626 PFNGLVERTEXARRAYATTRIBFORMATPROC glVertexArrayAttribFormat;
1627 PFNGLVERTEXARRAYATTRIBIFORMATPROC glVertexArrayAttribIFormat;
1628 PFNGLVERTEXARRAYATTRIBLFORMATPROC glVertexArrayAttribLFormat;
1629 PFNGLVERTEXARRAYBINDINGDIVISORPROC glVertexArrayBindingDivisor;
1630 PFNGLGETVERTEXARRAYIVPROC glGetVertexArrayiv;
1631 PFNGLGETVERTEXARRAYINDEXEDIVPROC glGetVertexArrayIndexediv;
1632 PFNGLGETVERTEXARRAYINDEXED64IVPROC glGetVertexArrayIndexed64iv;
1633 PFNGLCREATESAMPLERSPROC glCreateSamplers;
1634 PFNGLCREATEPROGRAMPIPELINESPROC glCreateProgramPipelines;
1635 PFNGLCREATEQUERIESPROC glCreateQueries;
1636 PFNGLGETQUERYBUFFEROBJECTI64VPROC glGetQueryBufferObjecti64v;
1637 PFNGLGETQUERYBUFFEROBJECTIVPROC glGetQueryBufferObjectiv;
1638 PFNGLGETQUERYBUFFEROBJECTUI64VPROC glGetQueryBufferObjectui64v;
1639 PFNGLGETQUERYBUFFEROBJECTUIVPROC glGetQueryBufferObjectuiv;
1640 PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
1641 PFNGLGETTEXTURESUBIMAGEPROC glGetTextureSubImage;
1642 PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glGetCompressedTextureSubImage;
1643 PFNGLGETGRAPHICSRESETSTATUSPROC glGetGraphicsResetStatus;
1644 PFNGLGETNCOMPRESSEDTEXIMAGEPROC glGetnCompressedTexImage;
1645 PFNGLGETNTEXIMAGEPROC glGetnTexImage;
1646 PFNGLGETNUNIFORMDVPROC glGetnUniformdv;
1647 PFNGLGETNUNIFORMFVPROC glGetnUniformfv;
1648 PFNGLGETNUNIFORMIVPROC glGetnUniformiv;
1649 PFNGLGETNUNIFORMUIVPROC glGetnUniformuiv;
1650 PFNGLREADNPIXELSPROC glReadnPixels;
1651 PFNGLGETNMAPDVPROC glGetnMapdv;
1652 PFNGLGETNMAPFVPROC glGetnMapfv;
1653 PFNGLGETNMAPIVPROC glGetnMapiv;
1654 PFNGLGETNPIXELMAPFVPROC glGetnPixelMapfv;
1655 PFNGLGETNPIXELMAPUIVPROC glGetnPixelMapuiv;
1656 PFNGLGETNPIXELMAPUSVPROC glGetnPixelMapusv;
1657 PFNGLGETNPOLYGONSTIPPLEPROC glGetnPolygonStipple;
1658 PFNGLGETNCOLORTABLEPROC glGetnColorTable;
1659 PFNGLGETNCONVOLUTIONFILTERPROC glGetnConvolutionFilter;
1660 PFNGLGETNSEPARABLEFILTERPROC glGetnSeparableFilter;
1661 PFNGLGETNHISTOGRAMPROC glGetnHistogram;
1662 PFNGLGETNMINMAXPROC glGetnMinmax;
1663 PFNGLTEXTUREBARRIERPROC glTextureBarrier;
1665 public: //! @name GL_EXT_geometry_shader4
1667 PFNGLPROGRAMPARAMETERIEXTPROC glProgramParameteriEXT;
1669 public: //! @name GL_ARB_bindless_texture
1671 PFNGLGETTEXTUREHANDLEARBPROC glGetTextureHandleARB;
1672 PFNGLGETTEXTURESAMPLERHANDLEARBPROC glGetTextureSamplerHandleARB;
1673 PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glMakeTextureHandleResidentARB;
1674 PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glMakeTextureHandleNonResidentARB;
1675 PFNGLGETIMAGEHANDLEARBPROC glGetImageHandleARB;
1676 PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glMakeImageHandleResidentARB;
1677 PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glMakeImageHandleNonResidentARB;
1678 PFNGLUNIFORMHANDLEUI64ARBPROC glUniformHandleui64ARB;
1679 PFNGLUNIFORMHANDLEUI64VARBPROC glUniformHandleui64vARB;
1680 PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glProgramUniformHandleui64ARB;
1681 PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glProgramUniformHandleui64vARB;
1682 PFNGLISTEXTUREHANDLERESIDENTARBPROC glIsTextureHandleResidentARB;
1683 PFNGLISIMAGEHANDLERESIDENTARBPROC glIsImageHandleResidentARB;
1684 PFNGLVERTEXATTRIBL1UI64ARBPROC glVertexAttribL1ui64ARB;
1685 PFNGLVERTEXATTRIBL1UI64VARBPROC glVertexAttribL1ui64vARB;
1686 PFNGLGETVERTEXATTRIBLUI64VARBPROC glGetVertexAttribLui64vARB;
1689 public: //! @name wgl extensions
1691 typedef const char* (WINAPI *wglGetExtensionsStringARB_t)(HDC theDeviceContext);
1692 wglGetExtensionsStringARB_t wglGetExtensionsStringARB;
1694 typedef BOOL (WINAPI *wglSwapIntervalEXT_t)(int theInterval);
1695 wglSwapIntervalEXT_t wglSwapIntervalEXT;
1697 // WGL_ARB_pixel_format
1699 #ifndef WGL_NUMBER_PIXEL_FORMATS_ARB
1700 #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
1701 #define WGL_DRAW_TO_WINDOW_ARB 0x2001
1702 #define WGL_DRAW_TO_BITMAP_ARB 0x2002
1703 #define WGL_ACCELERATION_ARB 0x2003
1704 #define WGL_NEED_PALETTE_ARB 0x2004
1705 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
1706 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
1707 #define WGL_SWAP_METHOD_ARB 0x2007
1708 #define WGL_NUMBER_OVERLAYS_ARB 0x2008
1709 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009
1710 #define WGL_TRANSPARENT_ARB 0x200A
1711 #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
1712 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
1713 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
1714 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
1715 #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
1716 #define WGL_SHARE_DEPTH_ARB 0x200C
1717 #define WGL_SHARE_STENCIL_ARB 0x200D
1718 #define WGL_SHARE_ACCUM_ARB 0x200E
1719 #define WGL_SUPPORT_GDI_ARB 0x200F
1720 #define WGL_SUPPORT_OPENGL_ARB 0x2010
1721 #define WGL_DOUBLE_BUFFER_ARB 0x2011
1722 #define WGL_STEREO_ARB 0x2012
1723 #define WGL_PIXEL_TYPE_ARB 0x2013
1724 #define WGL_COLOR_BITS_ARB 0x2014
1725 #define WGL_RED_BITS_ARB 0x2015
1726 #define WGL_RED_SHIFT_ARB 0x2016
1727 #define WGL_GREEN_BITS_ARB 0x2017
1728 #define WGL_GREEN_SHIFT_ARB 0x2018
1729 #define WGL_BLUE_BITS_ARB 0x2019
1730 #define WGL_BLUE_SHIFT_ARB 0x201A
1731 #define WGL_ALPHA_BITS_ARB 0x201B
1732 #define WGL_ALPHA_SHIFT_ARB 0x201C
1733 #define WGL_ACCUM_BITS_ARB 0x201D
1734 #define WGL_ACCUM_RED_BITS_ARB 0x201E
1735 #define WGL_ACCUM_GREEN_BITS_ARB 0x201F
1736 #define WGL_ACCUM_BLUE_BITS_ARB 0x2020
1737 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
1738 #define WGL_DEPTH_BITS_ARB 0x2022
1739 #define WGL_STENCIL_BITS_ARB 0x2023
1740 #define WGL_AUX_BUFFERS_ARB 0x2024
1742 #define WGL_NO_ACCELERATION_ARB 0x2025
1743 #define WGL_GENERIC_ACCELERATION_ARB 0x2026
1744 #define WGL_FULL_ACCELERATION_ARB 0x2027
1746 #define WGL_SWAP_EXCHANGE_ARB 0x2028
1747 #define WGL_SWAP_COPY_ARB 0x2029
1748 #define WGL_SWAP_UNDEFINED_ARB 0x202A
1750 #define WGL_TYPE_RGBA_ARB 0x202B
1751 #define WGL_TYPE_COLORINDEX_ARB 0x202C
1753 #endif // WGL_NUMBER_PIXEL_FORMATS_ARB
1755 // WGL_ARB_multisample
1756 #ifndef WGL_SAMPLE_BUFFERS_ARB
1757 #define WGL_SAMPLE_BUFFERS_ARB 0x2041
1758 #define WGL_SAMPLES_ARB 0x2042
1761 // WGL_ARB_create_context_robustness
1762 #ifndef WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB
1763 #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
1764 #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
1765 #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
1766 #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
1769 typedef BOOL (WINAPI *wglChoosePixelFormatARB_t)
1771 const int* theIntAttribs,
1772 const float* theFloatAttribs,
1773 unsigned int theMaxFormats,
1775 unsigned int* theNumFormatsOut);
1776 wglChoosePixelFormatARB_t wglChoosePixelFormatARB;
1778 // WGL_ARB_create_context_profile
1780 #ifndef WGL_CONTEXT_MAJOR_VERSION_ARB
1781 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
1782 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
1783 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
1784 #define WGL_CONTEXT_FLAGS_ARB 0x2094
1785 #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
1787 // WGL_CONTEXT_FLAGS bits
1788 #define WGL_CONTEXT_DEBUG_BIT_ARB 0x0001
1789 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x0002
1791 // WGL_CONTEXT_PROFILE_MASK_ARB bits
1792 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
1793 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
1794 #endif // WGL_CONTEXT_MAJOR_VERSION_ARB
1796 typedef HGLRC (WINAPI *wglCreateContextAttribsARB_t)(HDC theDevCtx,
1797 HGLRC theShareContext,
1798 const int* theAttribs);
1799 wglCreateContextAttribsARB_t wglCreateContextAttribsARB;
1801 // WGL_NV_DX_interop
1803 typedef BOOL (WINAPI *wglDXSetResourceShareHandleNV_t)(void* theObjectD3d, HANDLE theShareHandle);
1804 typedef HANDLE (WINAPI *wglDXOpenDeviceNV_t )(void* theDeviceD3d);
1805 typedef BOOL (WINAPI *wglDXCloseDeviceNV_t )(HANDLE theDeviceIOP);
1806 typedef HANDLE (WINAPI *wglDXRegisterObjectNV_t )(HANDLE theDeviceIOP,
1811 typedef BOOL (WINAPI *wglDXUnregisterObjectNV_t)(HANDLE theDeviceIOP,
1813 typedef BOOL (WINAPI *wglDXObjectAccessNV_t )(HANDLE theObject,
1815 typedef BOOL (WINAPI *wglDXLockObjectsNV_t )(HANDLE theDeviceIOP,
1817 HANDLE* theObjects);
1818 typedef BOOL (WINAPI *wglDXUnlockObjectsNV_t )(HANDLE theDeviceIOP,
1820 HANDLE* theObjects);
1822 wglDXSetResourceShareHandleNV_t wglDXSetResourceShareHandleNV;
1823 wglDXOpenDeviceNV_t wglDXOpenDeviceNV;
1824 wglDXCloseDeviceNV_t wglDXCloseDeviceNV;
1825 wglDXRegisterObjectNV_t wglDXRegisterObjectNV;
1826 wglDXUnregisterObjectNV_t wglDXUnregisterObjectNV;
1827 wglDXObjectAccessNV_t wglDXObjectAccessNV;
1828 wglDXLockObjectsNV_t wglDXLockObjectsNV;
1829 wglDXUnlockObjectsNV_t wglDXUnlockObjectsNV;
1831 #ifndef WGL_ACCESS_READ_WRITE_NV
1832 #define WGL_ACCESS_READ_ONLY_NV 0x0000
1833 #define WGL_ACCESS_READ_WRITE_NV 0x0001
1834 #define WGL_ACCESS_WRITE_DISCARD_NV 0x0002
1837 // WGL_AMD_gpu_association
1839 #ifndef WGL_GPU_VENDOR_AMD
1840 #define WGL_GPU_VENDOR_AMD 0x1F00
1841 #define WGL_GPU_RENDERER_STRING_AMD 0x1F01
1842 #define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
1843 #define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
1844 #define WGL_GPU_RAM_AMD 0x21A3
1845 #define WGL_GPU_CLOCK_AMD 0x21A4
1846 #define WGL_GPU_NUM_PIPES_AMD 0x21A5
1847 #define WGL_GPU_NUM_SIMD_AMD 0x21A6
1848 #define WGL_GPU_NUM_RB_AMD 0x21A7
1849 #define WGL_GPU_NUM_SPI_AMD 0x21A8
1852 typedef UINT (WINAPI *wglGetGPUIDsAMD_t )(UINT theMaxCount, UINT* theIds);
1853 typedef INT (WINAPI *wglGetGPUInfoAMD_t )(UINT theId, INT theProperty, GLenum theDataType, UINT theSize, void* theData);
1854 typedef UINT (WINAPI *wglGetContextGPUIDAMD_t )(HGLRC theHglrc);
1855 wglGetGPUIDsAMD_t wglGetGPUIDsAMD;
1856 wglGetGPUInfoAMD_t wglGetGPUInfoAMD;
1857 wglGetContextGPUIDAMD_t wglGetContextGPUIDAMD;
1859 #elif defined(__APPLE__)
1860 public: //! @name CGL extensions
1863 public: //! @name glX extensions
1865 // GLX_EXT_swap_control
1866 //typedef int (*glXSwapIntervalEXT_t)(Display* theDisplay, GLXDrawable theDrawable, int theInterval);
1867 typedef int (*glXSwapIntervalEXT_t)();
1868 glXSwapIntervalEXT_t glXSwapIntervalEXT;
1870 typedef int (*glXSwapIntervalSGI_t)(int theInterval);
1871 glXSwapIntervalSGI_t glXSwapIntervalSGI;
1873 // GLX_MESA_query_renderer
1874 #ifndef GLX_RENDERER_VENDOR_ID_MESA
1875 // for glXQueryRendererIntegerMESA() and glXQueryCurrentRendererIntegerMESA()
1876 #define GLX_RENDERER_VENDOR_ID_MESA 0x8183
1877 #define GLX_RENDERER_DEVICE_ID_MESA 0x8184
1878 #define GLX_RENDERER_VERSION_MESA 0x8185
1879 #define GLX_RENDERER_ACCELERATED_MESA 0x8186
1880 #define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187
1881 #define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188
1882 #define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189
1883 #define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A
1884 #define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B
1885 #define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C
1886 #define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D
1888 #define GLX_RENDERER_ID_MESA 0x818E
1889 #endif // GLX_RENDERER_VENDOR_ID_MESA
1891 typedef Bool (*glXQueryRendererIntegerMESA_t)(Display* theDisplay, int theScreen,
1892 int theRenderer, int theAttribute,
1893 unsigned int* theValue);
1894 typedef Bool (*glXQueryCurrentRendererIntegerMESA_t)(int theAttribute, unsigned int* theValue);
1895 typedef const char* (*glXQueryRendererStringMESA_t)(Display* theDisplay, int theScreen,
1896 int theRenderer, int theAttribute);
1897 typedef const char* (*glXQueryCurrentRendererStringMESA_t)(int theAttribute);
1899 glXQueryRendererIntegerMESA_t glXQueryRendererIntegerMESA;
1900 glXQueryCurrentRendererIntegerMESA_t glXQueryCurrentRendererIntegerMESA;
1901 glXQueryRendererStringMESA_t glXQueryRendererStringMESA;
1902 glXQueryCurrentRendererStringMESA_t glXQueryCurrentRendererStringMESA;
1905 #endif // OpenGL ES vs. desktop
1909 #endif // _OpenGl_GlFunctions_Header