/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 *
 * Generated from Khronos GL API description (gl.xml) revision 97ab881f0ab9e03a59388214f9c36dfe4c206c76.
 */
void					glActiveShaderProgram								(glw::GLuint pipeline, glw::GLuint program);
void					glActiveTexture										(glw::GLenum texture);
void					glAttachShader										(glw::GLuint program, glw::GLuint shader);
void					glBeginConditionalRender							(glw::GLuint id, glw::GLenum mode);
void					glBeginQuery										(glw::GLenum target, glw::GLuint id);
void					glBeginQueryIndexed									(glw::GLenum target, glw::GLuint index, glw::GLuint id);
void					glBeginTransformFeedback							(glw::GLenum primitiveMode);
void					glBindAttribLocation								(glw::GLuint program, glw::GLuint index, const glw::GLchar *name);
void					glBindBuffer										(glw::GLenum target, glw::GLuint buffer);
void					glBindBufferBase									(glw::GLenum target, glw::GLuint index, glw::GLuint buffer);
void					glBindBufferRange									(glw::GLenum target, glw::GLuint index, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size);
void					glBindBuffersBase									(glw::GLenum target, glw::GLuint first, glw::GLsizei count, const glw::GLuint *buffers);
void					glBindBuffersRange									(glw::GLenum target, glw::GLuint first, glw::GLsizei count, const glw::GLuint *buffers, const glw::GLintptr *offsets, const glw::GLsizeiptr *sizes);
void					glBindFragDataLocation								(glw::GLuint program, glw::GLuint color, const glw::GLchar *name);
void					glBindFragDataLocationIndexed						(glw::GLuint program, glw::GLuint colorNumber, glw::GLuint index, const glw::GLchar *name);
void					glBindFramebuffer									(glw::GLenum target, glw::GLuint framebuffer);
void					glBindImageTexture									(glw::GLuint unit, glw::GLuint texture, glw::GLint level, glw::GLboolean layered, glw::GLint layer, glw::GLenum access, glw::GLenum format);
void					glBindImageTextures									(glw::GLuint first, glw::GLsizei count, const glw::GLuint *textures);
void					glBindMultiTextureEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLuint texture);
void					glBindProgramPipeline								(glw::GLuint pipeline);
void					glBindRenderbuffer									(glw::GLenum target, glw::GLuint renderbuffer);
void					glBindSampler										(glw::GLuint unit, glw::GLuint sampler);
void					glBindSamplers										(glw::GLuint first, glw::GLsizei count, const glw::GLuint *samplers);
void					glBindTexture										(glw::GLenum target, glw::GLuint texture);
void					glBindTextureUnit									(glw::GLuint unit, glw::GLuint texture);
void					glBindTextures										(glw::GLuint first, glw::GLsizei count, const glw::GLuint *textures);
void					glBindTransformFeedback								(glw::GLenum target, glw::GLuint id);
void					glBindVertexArray									(glw::GLuint array);
void					glBindVertexBuffer									(glw::GLuint bindingindex, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizei stride);
void					glBindVertexBuffers									(glw::GLuint first, glw::GLsizei count, const glw::GLuint *buffers, const glw::GLintptr *offsets, const glw::GLsizei *strides);
void					glBlendBarrier										(void);
void					glBlendColor										(glw::GLfloat red, glw::GLfloat green, glw::GLfloat blue, glw::GLfloat alpha);
void					glBlendEquation										(glw::GLenum mode);
void					glBlendEquationSeparate								(glw::GLenum modeRGB, glw::GLenum modeAlpha);
void					glBlendEquationSeparatei							(glw::GLuint buf, glw::GLenum modeRGB, glw::GLenum modeAlpha);
void					glBlendEquationi									(glw::GLuint buf, glw::GLenum mode);
void					glBlendFunc											(glw::GLenum sfactor, glw::GLenum dfactor);
void					glBlendFuncSeparate									(glw::GLenum sfactorRGB, glw::GLenum dfactorRGB, glw::GLenum sfactorAlpha, glw::GLenum dfactorAlpha);
void					glBlendFuncSeparatei								(glw::GLuint buf, glw::GLenum srcRGB, glw::GLenum dstRGB, glw::GLenum srcAlpha, glw::GLenum dstAlpha);
void					glBlendFunci										(glw::GLuint buf, glw::GLenum src, glw::GLenum dst);
void					glBlitFramebuffer									(glw::GLint srcX0, glw::GLint srcY0, glw::GLint srcX1, glw::GLint srcY1, glw::GLint dstX0, glw::GLint dstY0, glw::GLint dstX1, glw::GLint dstY1, glw::GLbitfield mask, glw::GLenum filter);
void					glBlitNamedFramebuffer								(glw::GLuint readFramebuffer, glw::GLuint drawFramebuffer, glw::GLint srcX0, glw::GLint srcY0, glw::GLint srcX1, glw::GLint srcY1, glw::GLint dstX0, glw::GLint dstY0, glw::GLint dstX1, glw::GLint dstY1, glw::GLbitfield mask, glw::GLenum filter);
void					glBufferData										(glw::GLenum target, glw::GLsizeiptr size, const void *data, glw::GLenum usage);
void					glBufferPageCommitmentARB							(glw::GLenum target, glw::GLintptr offset, glw::GLsizeiptr size, glw::GLboolean commit);
void					glBufferStorage										(glw::GLenum target, glw::GLsizeiptr size, const void *data, glw::GLbitfield flags);
void					glBufferSubData										(glw::GLenum target, glw::GLintptr offset, glw::GLsizeiptr size, const void *data);
glw::GLenum				glCheckFramebufferStatus							(glw::GLenum target);
glw::GLenum				glCheckNamedFramebufferStatus						(glw::GLuint framebuffer, glw::GLenum target);
glw::GLenum				glCheckNamedFramebufferStatusEXT					(glw::GLuint framebuffer, glw::GLenum target);
void					glClampColor										(glw::GLenum target, glw::GLenum clamp);
void					glClear												(glw::GLbitfield mask);
void					glClearBufferData									(glw::GLenum target, glw::GLenum internalformat, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearBufferSubData								(glw::GLenum target, glw::GLenum internalformat, glw::GLintptr offset, glw::GLsizeiptr size, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearBufferfi										(glw::GLenum buffer, glw::GLint drawbuffer, glw::GLfloat depth, glw::GLint stencil);
void					glClearBufferfv										(glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLfloat *value);
void					glClearBufferiv										(glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLint *value);
void					glClearBufferuiv									(glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLuint *value);
void					glClearColor										(glw::GLfloat red, glw::GLfloat green, glw::GLfloat blue, glw::GLfloat alpha);
void					glClearDepth										(glw::GLdouble depth);
void					glClearDepthf										(glw::GLfloat d);
void					glClearNamedBufferData								(glw::GLuint buffer, glw::GLenum internalformat, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearNamedBufferDataEXT							(glw::GLuint buffer, glw::GLenum internalformat, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearNamedBufferSubData							(glw::GLuint buffer, glw::GLenum internalformat, glw::GLintptr offset, glw::GLsizeiptr size, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearNamedBufferSubDataEXT						(glw::GLuint buffer, glw::GLenum internalformat, glw::GLsizeiptr offset, glw::GLsizeiptr size, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearNamedFramebufferfi							(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, glw::GLfloat depth, glw::GLint stencil);
void					glClearNamedFramebufferfv							(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLfloat *value);
void					glClearNamedFramebufferiv							(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLint *value);
void					glClearNamedFramebufferuiv							(glw::GLuint framebuffer, glw::GLenum buffer, glw::GLint drawbuffer, const glw::GLuint *value);
void					glClearStencil										(glw::GLint s);
void					glClearTexImage										(glw::GLuint texture, glw::GLint level, glw::GLenum format, glw::GLenum type, const void *data);
void					glClearTexSubImage									(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, const void *data);
void					glClientAttribDefaultEXT							(glw::GLbitfield mask);
glw::GLenum				glClientWaitSync									(glw::GLsync sync, glw::GLbitfield flags, glw::GLuint64 timeout);
void					glClipControl										(glw::GLenum origin, glw::GLenum depth);
void					glColorMask											(glw::GLboolean red, glw::GLboolean green, glw::GLboolean blue, glw::GLboolean alpha);
void					glColorMaski										(glw::GLuint index, glw::GLboolean r, glw::GLboolean g, glw::GLboolean b, glw::GLboolean a);
void					glCompileShader										(glw::GLuint shader);
void					glCompressedMultiTexImage1DEXT						(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLint border, glw::GLsizei imageSize, const void *bits);
void					glCompressedMultiTexImage2DEXT						(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLint border, glw::GLsizei imageSize, const void *bits);
void					glCompressedMultiTexImage3DEXT						(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLsizei imageSize, const void *bits);
void					glCompressedMultiTexSubImage1DEXT					(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLsizei imageSize, const void *bits);
void					glCompressedMultiTexSubImage2DEXT					(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLsizei imageSize, const void *bits);
void					glCompressedMultiTexSubImage3DEXT					(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLsizei imageSize, const void *bits);
void					glCompressedTexImage1D								(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLint border, glw::GLsizei imageSize, const void *data);
void					glCompressedTexImage2D								(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLint border, glw::GLsizei imageSize, const void *data);
void					glCompressedTexImage3D								(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLsizei imageSize, const void *data);
void					glCompressedTexImage3DOES							(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLsizei imageSize, const void *data);
void					glCompressedTexSubImage1D							(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTexSubImage2D							(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTexSubImage3D							(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTexSubImage3DOES						(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTextureImage1DEXT						(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLint border, glw::GLsizei imageSize, const void *bits);
void					glCompressedTextureImage2DEXT						(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLint border, glw::GLsizei imageSize, const void *bits);
void					glCompressedTextureImage3DEXT						(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLsizei imageSize, const void *bits);
void					glCompressedTextureSubImage1D						(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTextureSubImage1DEXT					(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLsizei imageSize, const void *bits);
void					glCompressedTextureSubImage2D						(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTextureSubImage2DEXT					(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLsizei imageSize, const void *bits);
void					glCompressedTextureSubImage3D						(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLsizei imageSize, const void *data);
void					glCompressedTextureSubImage3DEXT					(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLsizei imageSize, const void *bits);
void					glCopyBufferSubData									(glw::GLenum readTarget, glw::GLenum writeTarget, glw::GLintptr readOffset, glw::GLintptr writeOffset, glw::GLsizeiptr size);
void					glCopyImageSubData									(glw::GLuint srcName, glw::GLenum srcTarget, glw::GLint srcLevel, glw::GLint srcX, glw::GLint srcY, glw::GLint srcZ, glw::GLuint dstName, glw::GLenum dstTarget, glw::GLint dstLevel, glw::GLint dstX, glw::GLint dstY, glw::GLint dstZ, glw::GLsizei srcWidth, glw::GLsizei srcHeight, glw::GLsizei srcDepth);
void					glCopyMultiTexImage1DEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLint border);
void					glCopyMultiTexImage2DEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height, glw::GLint border);
void					glCopyMultiTexSubImage1DEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint x, glw::GLint y, glw::GLsizei width);
void					glCopyMultiTexSubImage2DEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyMultiTexSubImage3DEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyNamedBufferSubData							(glw::GLuint readBuffer, glw::GLuint writeBuffer, glw::GLintptr readOffset, glw::GLintptr writeOffset, glw::GLsizeiptr size);
void					glCopyTexImage1D									(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLint border);
void					glCopyTexImage2D									(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height, glw::GLint border);
void					glCopyTexSubImage1D									(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint x, glw::GLint y, glw::GLsizei width);
void					glCopyTexSubImage2D									(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyTexSubImage3D									(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyTexSubImage3DOES								(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyTextureImage1DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLint border);
void					glCopyTextureImage2DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height, glw::GLint border);
void					glCopyTextureSubImage1D								(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint x, glw::GLint y, glw::GLsizei width);
void					glCopyTextureSubImage1DEXT							(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint x, glw::GLint y, glw::GLsizei width);
void					glCopyTextureSubImage2D								(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyTextureSubImage2DEXT							(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyTextureSubImage3D								(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCopyTextureSubImage3DEXT							(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glCreateBuffers										(glw::GLsizei n, glw::GLuint *buffers);
void					glCreateFramebuffers								(glw::GLsizei n, glw::GLuint *framebuffers);
glw::GLuint				glCreateProgram										(void);
void					glCreateProgramPipelines							(glw::GLsizei n, glw::GLuint *pipelines);
void					glCreateQueries										(glw::GLenum target, glw::GLsizei n, glw::GLuint *ids);
void					glCreateRenderbuffers								(glw::GLsizei n, glw::GLuint *renderbuffers);
void					glCreateSamplers									(glw::GLsizei n, glw::GLuint *samplers);
glw::GLuint				glCreateShader										(glw::GLenum type);
glw::GLuint				glCreateShaderProgramv								(glw::GLenum type, glw::GLsizei count, const glw::GLchar *const*strings);
void					glCreateTextures									(glw::GLenum target, glw::GLsizei n, glw::GLuint *textures);
void					glCreateTransformFeedbacks							(glw::GLsizei n, glw::GLuint *ids);
void					glCreateVertexArrays								(glw::GLsizei n, glw::GLuint *arrays);
void					glCullFace											(glw::GLenum mode);
void					glDebugMessageCallback								(glw::GLDEBUGPROC callback, const void *userParam);
void					glDebugMessageControl								(glw::GLenum source, glw::GLenum type, glw::GLenum severity, glw::GLsizei count, const glw::GLuint *ids, glw::GLboolean enabled);
void					glDebugMessageInsert								(glw::GLenum source, glw::GLenum type, glw::GLuint id, glw::GLenum severity, glw::GLsizei length, const glw::GLchar *buf);
void					glDeleteBuffers										(glw::GLsizei n, const glw::GLuint *buffers);
void					glDeleteFramebuffers								(glw::GLsizei n, const glw::GLuint *framebuffers);
void					glDeleteProgram										(glw::GLuint program);
void					glDeleteProgramPipelines							(glw::GLsizei n, const glw::GLuint *pipelines);
void					glDeleteQueries										(glw::GLsizei n, const glw::GLuint *ids);
void					glDeleteRenderbuffers								(glw::GLsizei n, const glw::GLuint *renderbuffers);
void					glDeleteSamplers									(glw::GLsizei count, const glw::GLuint *samplers);
void					glDeleteShader										(glw::GLuint shader);
void					glDeleteSync										(glw::GLsync sync);
void					glDeleteTextures									(glw::GLsizei n, const glw::GLuint *textures);
void					glDeleteTransformFeedbacks							(glw::GLsizei n, const glw::GLuint *ids);
void					glDeleteVertexArrays								(glw::GLsizei n, const glw::GLuint *arrays);
void					glDepthBoundsEXT									(glw::GLclampd zmin, glw::GLclampd zmax);
void					glDepthFunc											(glw::GLenum func);
void					glDepthMask											(glw::GLboolean flag);
void					glDepthRange										(glw::GLdouble near, glw::GLdouble far);
void					glDepthRangeArrayfvOES								(glw::GLuint first, glw::GLsizei count, const glw::GLfloat *v);
void					glDepthRangeArrayv									(glw::GLuint first, glw::GLsizei count, const glw::GLdouble *v);
void					glDepthRangeIndexed									(glw::GLuint index, glw::GLdouble n, glw::GLdouble f);
void					glDepthRangeIndexedfOES								(glw::GLuint index, glw::GLfloat n, glw::GLfloat f);
void					glDepthRangef										(glw::GLfloat n, glw::GLfloat f);
void					glDetachShader										(glw::GLuint program, glw::GLuint shader);
void					glDisable											(glw::GLenum cap);
void					glDisableClientStateIndexedEXT						(glw::GLenum array, glw::GLuint index);
void					glDisableClientStateiEXT							(glw::GLenum array, glw::GLuint index);
void					glDisableVertexArrayAttrib							(glw::GLuint vaobj, glw::GLuint index);
void					glDisableVertexArrayAttribEXT						(glw::GLuint vaobj, glw::GLuint index);
void					glDisableVertexArrayEXT								(glw::GLuint vaobj, glw::GLenum array);
void					glDisableVertexAttribArray							(glw::GLuint index);
void					glDisablei											(glw::GLenum target, glw::GLuint index);
void					glDispatchCompute									(glw::GLuint num_groups_x, glw::GLuint num_groups_y, glw::GLuint num_groups_z);
void					glDispatchComputeIndirect							(glw::GLintptr indirect);
void					glDrawArrays										(glw::GLenum mode, glw::GLint first, glw::GLsizei count);
void					glDrawArraysIndirect								(glw::GLenum mode, const void *indirect);
void					glDrawArraysInstanced								(glw::GLenum mode, glw::GLint first, glw::GLsizei count, glw::GLsizei instancecount);
void					glDrawArraysInstancedBaseInstance					(glw::GLenum mode, glw::GLint first, glw::GLsizei count, glw::GLsizei instancecount, glw::GLuint baseinstance);
void					glDrawBuffer										(glw::GLenum buf);
void					glDrawBuffers										(glw::GLsizei n, const glw::GLenum *bufs);
void					glDrawElements										(glw::GLenum mode, glw::GLsizei count, glw::GLenum type, const void *indices);
void					glDrawElementsBaseVertex							(glw::GLenum mode, glw::GLsizei count, glw::GLenum type, const void *indices, glw::GLint basevertex);
void					glDrawElementsIndirect								(glw::GLenum mode, glw::GLenum type, const void *indirect);
void					glDrawElementsInstanced								(glw::GLenum mode, glw::GLsizei count, glw::GLenum type, const void *indices, glw::GLsizei instancecount);
void					glDrawElementsInstancedBaseInstance					(glw::GLenum mode, glw::GLsizei count, glw::GLenum type, const void *indices, glw::GLsizei instancecount, glw::GLuint baseinstance);
void					glDrawElementsInstancedBaseVertex					(glw::GLenum mode, glw::GLsizei count, glw::GLenum type, const void *indices, glw::GLsizei instancecount, glw::GLint basevertex);
void					glDrawElementsInstancedBaseVertexBaseInstance		(glw::GLenum mode, glw::GLsizei count, glw::GLenum type, const void *indices, glw::GLsizei instancecount, glw::GLint basevertex, glw::GLuint baseinstance);
void					glDrawRangeElements									(glw::GLenum mode, glw::GLuint start, glw::GLuint end, glw::GLsizei count, glw::GLenum type, const void *indices);
void					glDrawRangeElementsBaseVertex						(glw::GLenum mode, glw::GLuint start, glw::GLuint end, glw::GLsizei count, glw::GLenum type, const void *indices, glw::GLint basevertex);
void					glDrawTransformFeedback								(glw::GLenum mode, glw::GLuint id);
void					glDrawTransformFeedbackInstanced					(glw::GLenum mode, glw::GLuint id, glw::GLsizei instancecount);
void					glDrawTransformFeedbackStream						(glw::GLenum mode, glw::GLuint id, glw::GLuint stream);
void					glDrawTransformFeedbackStreamInstanced				(glw::GLenum mode, glw::GLuint id, glw::GLuint stream, glw::GLsizei instancecount);
void					glEGLImageTargetRenderbufferStorageOES				(glw::GLenum target, glw::GLeglImageOES image);
void					glEGLImageTargetTexture2DOES						(glw::GLenum target, glw::GLeglImageOES image);
void					glEnable											(glw::GLenum cap);
void					glEnableClientStateIndexedEXT						(glw::GLenum array, glw::GLuint index);
void					glEnableClientStateiEXT								(glw::GLenum array, glw::GLuint index);
void					glEnableVertexArrayAttrib							(glw::GLuint vaobj, glw::GLuint index);
void					glEnableVertexArrayAttribEXT						(glw::GLuint vaobj, glw::GLuint index);
void					glEnableVertexArrayEXT								(glw::GLuint vaobj, glw::GLenum array);
void					glEnableVertexAttribArray							(glw::GLuint index);
void					glEnablei											(glw::GLenum target, glw::GLuint index);
void					glEndConditionalRender								(void);
void					glEndQuery											(glw::GLenum target);
void					glEndQueryIndexed									(glw::GLenum target, glw::GLuint index);
void					glEndTransformFeedback								(void);
glw::GLsync				glFenceSync											(glw::GLenum condition, glw::GLbitfield flags);
void					glFinish											(void);
void					glFlush												(void);
void					glFlushMappedBufferRange							(glw::GLenum target, glw::GLintptr offset, glw::GLsizeiptr length);
void					glFlushMappedNamedBufferRange						(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr length);
void					glFlushMappedNamedBufferRangeEXT					(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr length);
void					glFramebufferDrawBufferEXT							(glw::GLuint framebuffer, glw::GLenum mode);
void					glFramebufferDrawBuffersEXT							(glw::GLuint framebuffer, glw::GLsizei n, const glw::GLenum *bufs);
void					glFramebufferParameteri								(glw::GLenum target, glw::GLenum pname, glw::GLint param);
void					glFramebufferReadBufferEXT							(glw::GLuint framebuffer, glw::GLenum mode);
void					glFramebufferRenderbuffer							(glw::GLenum target, glw::GLenum attachment, glw::GLenum renderbuffertarget, glw::GLuint renderbuffer);
void					glFramebufferTexture								(glw::GLenum target, glw::GLenum attachment, glw::GLuint texture, glw::GLint level);
void					glFramebufferTexture1D								(glw::GLenum target, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level);
void					glFramebufferTexture2D								(glw::GLenum target, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level);
void					glFramebufferTexture3D								(glw::GLenum target, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level, glw::GLint zoffset);
void					glFramebufferTexture3DOES							(glw::GLenum target, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level, glw::GLint zoffset);
void					glFramebufferTextureLayer							(glw::GLenum target, glw::GLenum attachment, glw::GLuint texture, glw::GLint level, glw::GLint layer);
void					glFrontFace											(glw::GLenum mode);
void					glGenBuffers										(glw::GLsizei n, glw::GLuint *buffers);
void					glGenFramebuffers									(glw::GLsizei n, glw::GLuint *framebuffers);
void					glGenProgramPipelines								(glw::GLsizei n, glw::GLuint *pipelines);
void					glGenQueries										(glw::GLsizei n, glw::GLuint *ids);
void					glGenRenderbuffers									(glw::GLsizei n, glw::GLuint *renderbuffers);
void					glGenSamplers										(glw::GLsizei count, glw::GLuint *samplers);
void					glGenTextures										(glw::GLsizei n, glw::GLuint *textures);
void					glGenTransformFeedbacks								(glw::GLsizei n, glw::GLuint *ids);
void					glGenVertexArrays									(glw::GLsizei n, glw::GLuint *arrays);
void					glGenerateMipmap									(glw::GLenum target);
void					glGenerateMultiTexMipmapEXT							(glw::GLenum texunit, glw::GLenum target);
void					glGenerateTextureMipmap								(glw::GLuint texture);
void					glGenerateTextureMipmapEXT							(glw::GLuint texture, glw::GLenum target);
void					glGetActiveAtomicCounterBufferiv					(glw::GLuint program, glw::GLuint bufferIndex, glw::GLenum pname, glw::GLint *params);
void					glGetActiveAttrib									(glw::GLuint program, glw::GLuint index, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLint *size, glw::GLenum *type, glw::GLchar *name);
void					glGetActiveSubroutineName							(glw::GLuint program, glw::GLenum shadertype, glw::GLuint index, glw::GLsizei bufsize, glw::GLsizei *length, glw::GLchar *name);
void					glGetActiveSubroutineUniformName					(glw::GLuint program, glw::GLenum shadertype, glw::GLuint index, glw::GLsizei bufsize, glw::GLsizei *length, glw::GLchar *name);
void					glGetActiveSubroutineUniformiv						(glw::GLuint program, glw::GLenum shadertype, glw::GLuint index, glw::GLenum pname, glw::GLint *values);
void					glGetActiveUniform									(glw::GLuint program, glw::GLuint index, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLint *size, glw::GLenum *type, glw::GLchar *name);
void					glGetActiveUniformBlockName							(glw::GLuint program, glw::GLuint uniformBlockIndex, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *uniformBlockName);
void					glGetActiveUniformBlockiv							(glw::GLuint program, glw::GLuint uniformBlockIndex, glw::GLenum pname, glw::GLint *params);
void					glGetActiveUniformName								(glw::GLuint program, glw::GLuint uniformIndex, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *uniformName);
void					glGetActiveUniformsiv								(glw::GLuint program, glw::GLsizei uniformCount, const glw::GLuint *uniformIndices, glw::GLenum pname, glw::GLint *params);
void					glGetAttachedShaders								(glw::GLuint program, glw::GLsizei maxCount, glw::GLsizei *count, glw::GLuint *shaders);
glw::GLint				glGetAttribLocation									(glw::GLuint program, const glw::GLchar *name);
void					glGetBooleani_v										(glw::GLenum target, glw::GLuint index, glw::GLboolean *data);
void					glGetBooleanv										(glw::GLenum pname, glw::GLboolean *data);
void					glGetBufferParameteri64v							(glw::GLenum target, glw::GLenum pname, glw::GLint64 *params);
void					glGetBufferParameteriv								(glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetBufferPointerv									(glw::GLenum target, glw::GLenum pname, void **params);
void					glGetBufferSubData									(glw::GLenum target, glw::GLintptr offset, glw::GLsizeiptr size, void *data);
void					glGetCompressedMultiTexImageEXT						(glw::GLenum texunit, glw::GLenum target, glw::GLint lod, void *img);
void					glGetCompressedTexImage								(glw::GLenum target, glw::GLint level, void *img);
void					glGetCompressedTextureImage							(glw::GLuint texture, glw::GLint level, glw::GLsizei bufSize, void *pixels);
void					glGetCompressedTextureImageEXT						(glw::GLuint texture, glw::GLenum target, glw::GLint lod, void *img);
void					glGetCompressedTextureSubImage						(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLsizei bufSize, void *pixels);
glw::GLuint				glGetDebugMessageLog								(glw::GLuint count, glw::GLsizei bufSize, glw::GLenum *sources, glw::GLenum *types, glw::GLuint *ids, glw::GLenum *severities, glw::GLsizei *lengths, glw::GLchar *messageLog);
void					glGetDoublei_v										(glw::GLenum target, glw::GLuint index, glw::GLdouble *data);
void					glGetDoublev										(glw::GLenum pname, glw::GLdouble *data);
glw::GLenum				glGetError											(void);
void					glGetFloati_v										(glw::GLenum target, glw::GLuint index, glw::GLfloat *data);
void					glGetFloatv											(glw::GLenum pname, glw::GLfloat *data);
glw::GLint				glGetFragDataIndex									(glw::GLuint program, const glw::GLchar *name);
glw::GLint				glGetFragDataLocation								(glw::GLuint program, const glw::GLchar *name);
void					glGetFramebufferAttachmentParameteriv				(glw::GLenum target, glw::GLenum attachment, glw::GLenum pname, glw::GLint *params);
void					glGetFramebufferParameteriv							(glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetFramebufferParameterivEXT						(glw::GLuint framebuffer, glw::GLenum pname, glw::GLint *params);
glw::GLenum				glGetGraphicsResetStatus							(void);
glw::GLenum				glGetGraphicsResetStatusEXT							(void);
void					glGetInteger64i_v									(glw::GLenum target, glw::GLuint index, glw::GLint64 *data);
void					glGetInteger64v										(glw::GLenum pname, glw::GLint64 *data);
void					glGetIntegeri_v										(glw::GLenum target, glw::GLuint index, glw::GLint *data);
void					glGetIntegerv										(glw::GLenum pname, glw::GLint *data);
void					glGetInternalformatSampleivNV						(glw::GLenum target, glw::GLenum internalformat, glw::GLsizei samples, glw::GLenum pname, glw::GLsizei bufSize, glw::GLint *params);
void					glGetInternalformati64v								(glw::GLenum target, glw::GLenum internalformat, glw::GLenum pname, glw::GLsizei bufSize, glw::GLint64 *params);
void					glGetInternalformativ								(glw::GLenum target, glw::GLenum internalformat, glw::GLenum pname, glw::GLsizei bufSize, glw::GLint *params);
void					glGetMultiTexEnvfvEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLfloat *params);
void					glGetMultiTexEnvivEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetMultiTexGendvEXT								(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, glw::GLdouble *params);
void					glGetMultiTexGenfvEXT								(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, glw::GLfloat *params);
void					glGetMultiTexGenivEXT								(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, glw::GLint *params);
void					glGetMultiTexImageEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum format, glw::GLenum type, void *pixels);
void					glGetMultiTexLevelParameterfvEXT					(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum pname, glw::GLfloat *params);
void					glGetMultiTexLevelParameterivEXT					(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLenum pname, glw::GLint *params);
void					glGetMultiTexParameterIivEXT						(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetMultiTexParameterIuivEXT						(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLuint *params);
void					glGetMultiTexParameterfvEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLfloat *params);
void					glGetMultiTexParameterivEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetMultisamplefv									(glw::GLenum pname, glw::GLuint index, glw::GLfloat *val);
void					glGetNamedBufferParameteri64v						(glw::GLuint buffer, glw::GLenum pname, glw::GLint64 *params);
void					glGetNamedBufferParameteriv							(glw::GLuint buffer, glw::GLenum pname, glw::GLint *params);
void					glGetNamedBufferParameterivEXT						(glw::GLuint buffer, glw::GLenum pname, glw::GLint *params);
void					glGetNamedBufferPointerv							(glw::GLuint buffer, glw::GLenum pname, void **params);
void					glGetNamedBufferPointervEXT							(glw::GLuint buffer, glw::GLenum pname, void **params);
void					glGetNamedBufferSubData								(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size, void *data);
void					glGetNamedBufferSubDataEXT							(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size, void *data);
void					glGetNamedFramebufferAttachmentParameteriv			(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum pname, glw::GLint *params);
void					glGetNamedFramebufferAttachmentParameterivEXT		(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum pname, glw::GLint *params);
void					glGetNamedFramebufferParameteriv					(glw::GLuint framebuffer, glw::GLenum pname, glw::GLint *param);
void					glGetNamedFramebufferParameterivEXT					(glw::GLuint framebuffer, glw::GLenum pname, glw::GLint *params);
void					glGetNamedProgramLocalParameterIivEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLint *params);
void					glGetNamedProgramLocalParameterIuivEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLuint *params);
void					glGetNamedProgramLocalParameterdvEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLdouble *params);
void					glGetNamedProgramLocalParameterfvEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLfloat *params);
void					glGetNamedProgramStringEXT							(glw::GLuint program, glw::GLenum target, glw::GLenum pname, void *string);
void					glGetNamedProgramivEXT								(glw::GLuint program, glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetNamedRenderbufferParameteriv					(glw::GLuint renderbuffer, glw::GLenum pname, glw::GLint *params);
void					glGetNamedRenderbufferParameterivEXT				(glw::GLuint renderbuffer, glw::GLenum pname, glw::GLint *params);
void					glGetObjectLabel									(glw::GLenum identifier, glw::GLuint name, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *label);
void					glGetObjectPtrLabel									(const void *ptr, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *label);
void					glGetPointerIndexedvEXT								(glw::GLenum target, glw::GLuint index, void **data);
void					glGetPointeri_vEXT									(glw::GLenum pname, glw::GLuint index, void **params);
void					glGetPointerv										(glw::GLenum pname, void **params);
void					glGetProgramBinary									(glw::GLuint program, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLenum *binaryFormat, void *binary);
void					glGetProgramInfoLog									(glw::GLuint program, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *infoLog);
void					glGetProgramInterfaceiv								(glw::GLuint program, glw::GLenum programInterface, glw::GLenum pname, glw::GLint *params);
void					glGetProgramPipelineInfoLog							(glw::GLuint pipeline, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *infoLog);
void					glGetProgramPipelineiv								(glw::GLuint pipeline, glw::GLenum pname, glw::GLint *params);
glw::GLuint				glGetProgramResourceIndex							(glw::GLuint program, glw::GLenum programInterface, const glw::GLchar *name);
glw::GLint				glGetProgramResourceLocation						(glw::GLuint program, glw::GLenum programInterface, const glw::GLchar *name);
glw::GLint				glGetProgramResourceLocationIndex					(glw::GLuint program, glw::GLenum programInterface, const glw::GLchar *name);
void					glGetProgramResourceName							(glw::GLuint program, glw::GLenum programInterface, glw::GLuint index, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *name);
void					glGetProgramResourceiv								(glw::GLuint program, glw::GLenum programInterface, glw::GLuint index, glw::GLsizei propCount, const glw::GLenum *props, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLint *params);
void					glGetProgramStageiv									(glw::GLuint program, glw::GLenum shadertype, glw::GLenum pname, glw::GLint *values);
void					glGetProgramiv										(glw::GLuint program, glw::GLenum pname, glw::GLint *params);
void					glGetQueryBufferObjecti64v							(glw::GLuint id, glw::GLuint buffer, glw::GLenum pname, glw::GLintptr offset);
void					glGetQueryBufferObjectiv							(glw::GLuint id, glw::GLuint buffer, glw::GLenum pname, glw::GLintptr offset);
void					glGetQueryBufferObjectui64v							(glw::GLuint id, glw::GLuint buffer, glw::GLenum pname, glw::GLintptr offset);
void					glGetQueryBufferObjectuiv							(glw::GLuint id, glw::GLuint buffer, glw::GLenum pname, glw::GLintptr offset);
void					glGetQueryIndexediv									(glw::GLenum target, glw::GLuint index, glw::GLenum pname, glw::GLint *params);
void					glGetQueryObjecti64v								(glw::GLuint id, glw::GLenum pname, glw::GLint64 *params);
void					glGetQueryObjectiv									(glw::GLuint id, glw::GLenum pname, glw::GLint *params);
void					glGetQueryObjectui64v								(glw::GLuint id, glw::GLenum pname, glw::GLuint64 *params);
void					glGetQueryObjectuiv									(glw::GLuint id, glw::GLenum pname, glw::GLuint *params);
void					glGetQueryiv										(glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetRenderbufferParameteriv						(glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetSamplerParameterIiv							(glw::GLuint sampler, glw::GLenum pname, glw::GLint *params);
void					glGetSamplerParameterIuiv							(glw::GLuint sampler, glw::GLenum pname, glw::GLuint *params);
void					glGetSamplerParameterfv								(glw::GLuint sampler, glw::GLenum pname, glw::GLfloat *params);
void					glGetSamplerParameteriv								(glw::GLuint sampler, glw::GLenum pname, glw::GLint *params);
void					glGetShaderInfoLog									(glw::GLuint shader, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *infoLog);
void					glGetShaderPrecisionFormat							(glw::GLenum shadertype, glw::GLenum precisiontype, glw::GLint *range, glw::GLint *precision);
void					glGetShaderSource									(glw::GLuint shader, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLchar *source);
void					glGetShaderiv										(glw::GLuint shader, glw::GLenum pname, glw::GLint *params);
const glw::GLubyte *	glGetString											(glw::GLenum name);
const glw::GLubyte *	glGetStringi										(glw::GLenum name, glw::GLuint index);
glw::GLuint				glGetSubroutineIndex								(glw::GLuint program, glw::GLenum shadertype, const glw::GLchar *name);
glw::GLint				glGetSubroutineUniformLocation						(glw::GLuint program, glw::GLenum shadertype, const glw::GLchar *name);
void					glGetSynciv											(glw::GLsync sync, glw::GLenum pname, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLint *values);
void					glGetTexImage										(glw::GLenum target, glw::GLint level, glw::GLenum format, glw::GLenum type, void *pixels);
void					glGetTexLevelParameterfv							(glw::GLenum target, glw::GLint level, glw::GLenum pname, glw::GLfloat *params);
void					glGetTexLevelParameteriv							(glw::GLenum target, glw::GLint level, glw::GLenum pname, glw::GLint *params);
void					glGetTexParameterIiv								(glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetTexParameterIuiv								(glw::GLenum target, glw::GLenum pname, glw::GLuint *params);
void					glGetTexParameterfv									(glw::GLenum target, glw::GLenum pname, glw::GLfloat *params);
void					glGetTexParameteriv									(glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetTextureImage									(glw::GLuint texture, glw::GLint level, glw::GLenum format, glw::GLenum type, glw::GLsizei bufSize, void *pixels);
void					glGetTextureImageEXT								(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum format, glw::GLenum type, void *pixels);
void					glGetTextureLevelParameterfv						(glw::GLuint texture, glw::GLint level, glw::GLenum pname, glw::GLfloat *params);
void					glGetTextureLevelParameterfvEXT						(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum pname, glw::GLfloat *params);
void					glGetTextureLevelParameteriv						(glw::GLuint texture, glw::GLint level, glw::GLenum pname, glw::GLint *params);
void					glGetTextureLevelParameterivEXT						(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLenum pname, glw::GLint *params);
void					glGetTextureParameterIiv							(glw::GLuint texture, glw::GLenum pname, glw::GLint *params);
void					glGetTextureParameterIivEXT							(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetTextureParameterIuiv							(glw::GLuint texture, glw::GLenum pname, glw::GLuint *params);
void					glGetTextureParameterIuivEXT						(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, glw::GLuint *params);
void					glGetTextureParameterfv								(glw::GLuint texture, glw::GLenum pname, glw::GLfloat *params);
void					glGetTextureParameterfvEXT							(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, glw::GLfloat *params);
void					glGetTextureParameteriv								(glw::GLuint texture, glw::GLenum pname, glw::GLint *params);
void					glGetTextureParameterivEXT							(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, glw::GLint *params);
void					glGetTextureSubImage								(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, glw::GLsizei bufSize, void *pixels);
void					glGetTransformFeedbackVarying						(glw::GLuint program, glw::GLuint index, glw::GLsizei bufSize, glw::GLsizei *length, glw::GLsizei *size, glw::GLenum *type, glw::GLchar *name);
void					glGetTransformFeedbacki64_v							(glw::GLuint xfb, glw::GLenum pname, glw::GLuint index, glw::GLint64 *param);
void					glGetTransformFeedbacki_v							(glw::GLuint xfb, glw::GLenum pname, glw::GLuint index, glw::GLint *param);
void					glGetTransformFeedbackiv							(glw::GLuint xfb, glw::GLenum pname, glw::GLint *param);
glw::GLuint				glGetUniformBlockIndex								(glw::GLuint program, const glw::GLchar *uniformBlockName);
void					glGetUniformIndices									(glw::GLuint program, glw::GLsizei uniformCount, const glw::GLchar *const*uniformNames, glw::GLuint *uniformIndices);
glw::GLint				glGetUniformLocation								(glw::GLuint program, const glw::GLchar *name);
void					glGetUniformSubroutineuiv							(glw::GLenum shadertype, glw::GLint location, glw::GLuint *params);
void					glGetUniformdv										(glw::GLuint program, glw::GLint location, glw::GLdouble *params);
void					glGetUniformfv										(glw::GLuint program, glw::GLint location, glw::GLfloat *params);
void					glGetUniformiv										(glw::GLuint program, glw::GLint location, glw::GLint *params);
void					glGetUniformuiv										(glw::GLuint program, glw::GLint location, glw::GLuint *params);
void					glGetVertexArrayIndexed64iv							(glw::GLuint vaobj, glw::GLuint index, glw::GLenum pname, glw::GLint64 *param);
void					glGetVertexArrayIndexediv							(glw::GLuint vaobj, glw::GLuint index, glw::GLenum pname, glw::GLint *param);
void					glGetVertexArrayIntegeri_vEXT						(glw::GLuint vaobj, glw::GLuint index, glw::GLenum pname, glw::GLint *param);
void					glGetVertexArrayIntegervEXT							(glw::GLuint vaobj, glw::GLenum pname, glw::GLint *param);
void					glGetVertexArrayPointeri_vEXT						(glw::GLuint vaobj, glw::GLuint index, glw::GLenum pname, void **param);
void					glGetVertexArrayPointervEXT							(glw::GLuint vaobj, glw::GLenum pname, void **param);
void					glGetVertexArrayiv									(glw::GLuint vaobj, glw::GLenum pname, glw::GLint *param);
void					glGetVertexAttribIiv								(glw::GLuint index, glw::GLenum pname, glw::GLint *params);
void					glGetVertexAttribIuiv								(glw::GLuint index, glw::GLenum pname, glw::GLuint *params);
void					glGetVertexAttribLdv								(glw::GLuint index, glw::GLenum pname, glw::GLdouble *params);
void					glGetVertexAttribPointerv							(glw::GLuint index, glw::GLenum pname, void **pointer);
void					glGetVertexAttribdv									(glw::GLuint index, glw::GLenum pname, glw::GLdouble *params);
void					glGetVertexAttribfv									(glw::GLuint index, glw::GLenum pname, glw::GLfloat *params);
void					glGetVertexAttribiv									(glw::GLuint index, glw::GLenum pname, glw::GLint *params);
void					glGetnCompressedTexImage							(glw::GLenum target, glw::GLint lod, glw::GLsizei bufSize, void *pixels);
void					glGetnTexImage										(glw::GLenum target, glw::GLint level, glw::GLenum format, glw::GLenum type, glw::GLsizei bufSize, void *pixels);
void					glGetnUniformdv										(glw::GLuint program, glw::GLint location, glw::GLsizei bufSize, glw::GLdouble *params);
void					glGetnUniformfv										(glw::GLuint program, glw::GLint location, glw::GLsizei bufSize, glw::GLfloat *params);
void					glGetnUniformiv										(glw::GLuint program, glw::GLint location, glw::GLsizei bufSize, glw::GLint *params);
void					glGetnUniformuiv									(glw::GLuint program, glw::GLint location, glw::GLsizei bufSize, glw::GLuint *params);
void					glHint												(glw::GLenum target, glw::GLenum mode);
void					glInsertEventMarkerEXT								(glw::GLsizei length, const glw::GLchar *marker);
void					glInvalidateBufferData								(glw::GLuint buffer);
void					glInvalidateBufferSubData							(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr length);
void					glInvalidateFramebuffer								(glw::GLenum target, glw::GLsizei numAttachments, const glw::GLenum *attachments);
void					glInvalidateNamedFramebufferData					(glw::GLuint framebuffer, glw::GLsizei numAttachments, const glw::GLenum *attachments);
void					glInvalidateNamedFramebufferSubData					(glw::GLuint framebuffer, glw::GLsizei numAttachments, const glw::GLenum *attachments, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glInvalidateSubFramebuffer							(glw::GLenum target, glw::GLsizei numAttachments, const glw::GLenum *attachments, glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glInvalidateTexImage								(glw::GLuint texture, glw::GLint level);
void					glInvalidateTexSubImage								(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth);
glw::GLboolean			glIsBuffer											(glw::GLuint buffer);
glw::GLboolean			glIsEnabled											(glw::GLenum cap);
glw::GLboolean			glIsEnabledi										(glw::GLenum target, glw::GLuint index);
glw::GLboolean			glIsFramebuffer										(glw::GLuint framebuffer);
glw::GLboolean			glIsProgram											(glw::GLuint program);
glw::GLboolean			glIsProgramPipeline									(glw::GLuint pipeline);
glw::GLboolean			glIsQuery											(glw::GLuint id);
glw::GLboolean			glIsRenderbuffer									(glw::GLuint renderbuffer);
glw::GLboolean			glIsSampler											(glw::GLuint sampler);
glw::GLboolean			glIsShader											(glw::GLuint shader);
glw::GLboolean			glIsSync											(glw::GLsync sync);
glw::GLboolean			glIsTexture											(glw::GLuint texture);
glw::GLboolean			glIsTransformFeedback								(glw::GLuint id);
glw::GLboolean			glIsVertexArray										(glw::GLuint array);
void					glLineWidth											(glw::GLfloat width);
void					glLinkProgram										(glw::GLuint program);
void					glLogicOp											(glw::GLenum opcode);
void *					glMapBuffer											(glw::GLenum target, glw::GLenum access);
void *					glMapBufferRange									(glw::GLenum target, glw::GLintptr offset, glw::GLsizeiptr length, glw::GLbitfield access);
void *					glMapNamedBuffer									(glw::GLuint buffer, glw::GLenum access);
void *					glMapNamedBufferEXT									(glw::GLuint buffer, glw::GLenum access);
void *					glMapNamedBufferRange								(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr length, glw::GLbitfield access);
void *					glMapNamedBufferRangeEXT							(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr length, glw::GLbitfield access);
void					glMatrixFrustumEXT									(glw::GLenum mode, glw::GLdouble left, glw::GLdouble right, glw::GLdouble bottom, glw::GLdouble top, glw::GLdouble zNear, glw::GLdouble zFar);
void					glMatrixLoadIdentityEXT								(glw::GLenum mode);
void					glMatrixLoadTransposedEXT							(glw::GLenum mode, const glw::GLdouble *m);
void					glMatrixLoadTransposefEXT							(glw::GLenum mode, const glw::GLfloat *m);
void					glMatrixLoaddEXT									(glw::GLenum mode, const glw::GLdouble *m);
void					glMatrixLoadfEXT									(glw::GLenum mode, const glw::GLfloat *m);
void					glMatrixMultTransposedEXT							(glw::GLenum mode, const glw::GLdouble *m);
void					glMatrixMultTransposefEXT							(glw::GLenum mode, const glw::GLfloat *m);
void					glMatrixMultdEXT									(glw::GLenum mode, const glw::GLdouble *m);
void					glMatrixMultfEXT									(glw::GLenum mode, const glw::GLfloat *m);
void					glMatrixOrthoEXT									(glw::GLenum mode, glw::GLdouble left, glw::GLdouble right, glw::GLdouble bottom, glw::GLdouble top, glw::GLdouble zNear, glw::GLdouble zFar);
void					glMatrixPopEXT										(glw::GLenum mode);
void					glMatrixPushEXT										(glw::GLenum mode);
void					glMatrixRotatedEXT									(glw::GLenum mode, glw::GLdouble angle, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glMatrixRotatefEXT									(glw::GLenum mode, glw::GLfloat angle, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z);
void					glMatrixScaledEXT									(glw::GLenum mode, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glMatrixScalefEXT									(glw::GLenum mode, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z);
void					glMatrixTranslatedEXT								(glw::GLenum mode, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glMatrixTranslatefEXT								(glw::GLenum mode, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z);
void					glMaxShaderCompilerThreadsKHR						(glw::GLuint count);
void					glMemoryBarrier										(glw::GLbitfield barriers);
void					glMemoryBarrierByRegion								(glw::GLbitfield barriers);
void					glMinSampleShading									(glw::GLfloat value);
void					glMultiDrawArrays									(glw::GLenum mode, const glw::GLint *first, const glw::GLsizei *count, glw::GLsizei drawcount);
void					glMultiDrawArraysIndirect							(glw::GLenum mode, const void *indirect, glw::GLsizei drawcount, glw::GLsizei stride);
void					glMultiDrawArraysIndirectCount						(glw::GLenum mode, const void *indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride);
void					glMultiDrawElements									(glw::GLenum mode, const glw::GLsizei *count, glw::GLenum type, const void *const*indices, glw::GLsizei drawcount);
void					glMultiDrawElementsBaseVertex						(glw::GLenum mode, const glw::GLsizei *count, glw::GLenum type, const void *const*indices, glw::GLsizei drawcount, const glw::GLint *basevertex);
void					glMultiDrawElementsIndirect							(glw::GLenum mode, glw::GLenum type, const void *indirect, glw::GLsizei drawcount, glw::GLsizei stride);
void					glMultiDrawElementsIndirectCount					(glw::GLenum mode, glw::GLenum type, const void *indirect, glw::GLintptr drawcount, glw::GLsizei maxdrawcount, glw::GLsizei stride);
void					glMultiTexBufferEXT									(glw::GLenum texunit, glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer);
void					glMultiTexCoordPointerEXT							(glw::GLenum texunit, glw::GLint size, glw::GLenum type, glw::GLsizei stride, const void *pointer);
void					glMultiTexEnvfEXT									(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLfloat param);
void					glMultiTexEnvfvEXT									(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, const glw::GLfloat *params);
void					glMultiTexEnviEXT									(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLint param);
void					glMultiTexEnvivEXT									(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glMultiTexGendEXT									(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, glw::GLdouble param);
void					glMultiTexGendvEXT									(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, const glw::GLdouble *params);
void					glMultiTexGenfEXT									(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, glw::GLfloat param);
void					glMultiTexGenfvEXT									(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, const glw::GLfloat *params);
void					glMultiTexGeniEXT									(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, glw::GLint param);
void					glMultiTexGenivEXT									(glw::GLenum texunit, glw::GLenum coord, glw::GLenum pname, const glw::GLint *params);
void					glMultiTexImage1DEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glMultiTexImage2DEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glMultiTexImage3DEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glMultiTexParameterIivEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glMultiTexParameterIuivEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, const glw::GLuint *params);
void					glMultiTexParameterfEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLfloat param);
void					glMultiTexParameterfvEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, const glw::GLfloat *params);
void					glMultiTexParameteriEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, glw::GLint param);
void					glMultiTexParameterivEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glMultiTexRenderbufferEXT							(glw::GLenum texunit, glw::GLenum target, glw::GLuint renderbuffer);
void					glMultiTexSubImage1DEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glMultiTexSubImage2DEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glMultiTexSubImage3DEXT								(glw::GLenum texunit, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glMulticastBarrierNV								(void);
void					glMulticastBlitFramebufferNV						(glw::GLuint srcGpu, glw::GLuint dstGpu, glw::GLint srcX0, glw::GLint srcY0, glw::GLint srcX1, glw::GLint srcY1, glw::GLint dstX0, glw::GLint dstY0, glw::GLint dstX1, glw::GLint dstY1, glw::GLbitfield mask, glw::GLenum filter);
void					glMulticastBufferSubDataNV							(glw::GLbitfield gpuMask, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size, const void *data);
void					glMulticastCopyBufferSubDataNV						(glw::GLuint readGpu, glw::GLbitfield writeGpuMask, glw::GLuint readBuffer, glw::GLuint writeBuffer, glw::GLintptr readOffset, glw::GLintptr writeOffset, glw::GLsizeiptr size);
void					glMulticastCopyImageSubDataNV						(glw::GLuint srcGpu, glw::GLbitfield dstGpuMask, glw::GLuint srcName, glw::GLenum srcTarget, glw::GLint srcLevel, glw::GLint srcX, glw::GLint srcY, glw::GLint srcZ, glw::GLuint dstName, glw::GLenum dstTarget, glw::GLint dstLevel, glw::GLint dstX, glw::GLint dstY, glw::GLint dstZ, glw::GLsizei srcWidth, glw::GLsizei srcHeight, glw::GLsizei srcDepth);
void					glMulticastFramebufferSampleLocationsfvNV			(glw::GLuint gpu, glw::GLuint framebuffer, glw::GLuint start, glw::GLsizei count, const glw::GLfloat *v);
void					glMulticastGetQueryObjecti64vNV						(glw::GLuint gpu, glw::GLuint id, glw::GLenum pname, glw::GLint64 *params);
void					glMulticastGetQueryObjectivNV						(glw::GLuint gpu, glw::GLuint id, glw::GLenum pname, glw::GLint *params);
void					glMulticastGetQueryObjectui64vNV					(glw::GLuint gpu, glw::GLuint id, glw::GLenum pname, glw::GLuint64 *params);
void					glMulticastGetQueryObjectuivNV						(glw::GLuint gpu, glw::GLuint id, glw::GLenum pname, glw::GLuint *params);
void					glMulticastWaitSyncNV								(glw::GLuint signalGpu, glw::GLbitfield waitGpuMask);
void					glNamedBufferData									(glw::GLuint buffer, glw::GLsizeiptr size, const void *data, glw::GLenum usage);
void					glNamedBufferDataEXT								(glw::GLuint buffer, glw::GLsizeiptr size, const void *data, glw::GLenum usage);
void					glNamedBufferPageCommitmentARB						(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size, glw::GLboolean commit);
void					glNamedBufferPageCommitmentEXT						(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size, glw::GLboolean commit);
void					glNamedBufferStorage								(glw::GLuint buffer, glw::GLsizeiptr size, const void *data, glw::GLbitfield flags);
void					glNamedBufferSubData								(glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size, const void *data);
void					glNamedCopyBufferSubDataEXT							(glw::GLuint readBuffer, glw::GLuint writeBuffer, glw::GLintptr readOffset, glw::GLintptr writeOffset, glw::GLsizeiptr size);
void					glNamedFramebufferDrawBuffer						(glw::GLuint framebuffer, glw::GLenum buf);
void					glNamedFramebufferDrawBuffers						(glw::GLuint framebuffer, glw::GLsizei n, const glw::GLenum *bufs);
void					glNamedFramebufferParameteri						(glw::GLuint framebuffer, glw::GLenum pname, glw::GLint param);
void					glNamedFramebufferParameteriEXT						(glw::GLuint framebuffer, glw::GLenum pname, glw::GLint param);
void					glNamedFramebufferReadBuffer						(glw::GLuint framebuffer, glw::GLenum src);
void					glNamedFramebufferRenderbuffer						(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum renderbuffertarget, glw::GLuint renderbuffer);
void					glNamedFramebufferRenderbufferEXT					(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum renderbuffertarget, glw::GLuint renderbuffer);
void					glNamedFramebufferTexture							(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLuint texture, glw::GLint level);
void					glNamedFramebufferTexture1DEXT						(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level);
void					glNamedFramebufferTexture2DEXT						(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level);
void					glNamedFramebufferTexture3DEXT						(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLenum textarget, glw::GLuint texture, glw::GLint level, glw::GLint zoffset);
void					glNamedFramebufferTextureEXT						(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLuint texture, glw::GLint level);
void					glNamedFramebufferTextureFaceEXT					(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLuint texture, glw::GLint level, glw::GLenum face);
void					glNamedFramebufferTextureLayer						(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLuint texture, glw::GLint level, glw::GLint layer);
void					glNamedFramebufferTextureLayerEXT					(glw::GLuint framebuffer, glw::GLenum attachment, glw::GLuint texture, glw::GLint level, glw::GLint layer);
void					glNamedProgramLocalParameter4dEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z, glw::GLdouble w);
void					glNamedProgramLocalParameter4dvEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, const glw::GLdouble *params);
void					glNamedProgramLocalParameter4fEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z, glw::GLfloat w);
void					glNamedProgramLocalParameter4fvEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, const glw::GLfloat *params);
void					glNamedProgramLocalParameterI4iEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLint x, glw::GLint y, glw::GLint z, glw::GLint w);
void					glNamedProgramLocalParameterI4ivEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, const glw::GLint *params);
void					glNamedProgramLocalParameterI4uiEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLuint x, glw::GLuint y, glw::GLuint z, glw::GLuint w);
void					glNamedProgramLocalParameterI4uivEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, const glw::GLuint *params);
void					glNamedProgramLocalParameters4fvEXT					(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLsizei count, const glw::GLfloat *params);
void					glNamedProgramLocalParametersI4ivEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLsizei count, const glw::GLint *params);
void					glNamedProgramLocalParametersI4uivEXT				(glw::GLuint program, glw::GLenum target, glw::GLuint index, glw::GLsizei count, const glw::GLuint *params);
void					glNamedProgramStringEXT								(glw::GLuint program, glw::GLenum target, glw::GLenum format, glw::GLsizei len, const void *string);
void					glNamedRenderbufferStorage							(glw::GLuint renderbuffer, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glNamedRenderbufferStorageEXT						(glw::GLuint renderbuffer, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glNamedRenderbufferStorageMultisample				(glw::GLuint renderbuffer, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glNamedRenderbufferStorageMultisampleCoverageEXT	(glw::GLuint renderbuffer, glw::GLsizei coverageSamples, glw::GLsizei colorSamples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glNamedRenderbufferStorageMultisampleEXT			(glw::GLuint renderbuffer, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glObjectLabel										(glw::GLenum identifier, glw::GLuint name, glw::GLsizei length, const glw::GLchar *label);
void					glObjectPtrLabel									(const void *ptr, glw::GLsizei length, const glw::GLchar *label);
void					glPatchParameterfv									(glw::GLenum pname, const glw::GLfloat *values);
void					glPatchParameteri									(glw::GLenum pname, glw::GLint value);
void					glPauseTransformFeedback							(void);
void					glPixelStoref										(glw::GLenum pname, glw::GLfloat param);
void					glPixelStorei										(glw::GLenum pname, glw::GLint param);
void					glPointParameterf									(glw::GLenum pname, glw::GLfloat param);
void					glPointParameterfv									(glw::GLenum pname, const glw::GLfloat *params);
void					glPointParameteri									(glw::GLenum pname, glw::GLint param);
void					glPointParameteriv									(glw::GLenum pname, const glw::GLint *params);
void					glPointSize											(glw::GLfloat size);
void					glPolygonMode										(glw::GLenum face, glw::GLenum mode);
void					glPolygonOffset										(glw::GLfloat factor, glw::GLfloat units);
void					glPolygonOffsetClamp								(glw::GLfloat factor, glw::GLfloat units, glw::GLfloat clamp);
void					glPopDebugGroup										(void);
void					glPopGroupMarkerEXT									(void);
void					glPrimitiveBoundingBox								(glw::GLfloat minX, glw::GLfloat minY, glw::GLfloat minZ, glw::GLfloat minW, glw::GLfloat maxX, glw::GLfloat maxY, glw::GLfloat maxZ, glw::GLfloat maxW);
void					glPrimitiveRestartIndex								(glw::GLuint index);
void					glProgramBinary										(glw::GLuint program, glw::GLenum binaryFormat, const void *binary, glw::GLsizei length);
void					glProgramParameteri									(glw::GLuint program, glw::GLenum pname, glw::GLint value);
void					glProgramUniform1d									(glw::GLuint program, glw::GLint location, glw::GLdouble v0);
void					glProgramUniform1dEXT								(glw::GLuint program, glw::GLint location, glw::GLdouble x);
void					glProgramUniform1dv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform1dvEXT								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform1f									(glw::GLuint program, glw::GLint location, glw::GLfloat v0);
void					glProgramUniform1fv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glProgramUniform1i									(glw::GLuint program, glw::GLint location, glw::GLint v0);
void					glProgramUniform1iv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glProgramUniform1ui									(glw::GLuint program, glw::GLint location, glw::GLuint v0);
void					glProgramUniform1uiv								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glProgramUniform2d									(glw::GLuint program, glw::GLint location, glw::GLdouble v0, glw::GLdouble v1);
void					glProgramUniform2dEXT								(glw::GLuint program, glw::GLint location, glw::GLdouble x, glw::GLdouble y);
void					glProgramUniform2dv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform2dvEXT								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform2f									(glw::GLuint program, glw::GLint location, glw::GLfloat v0, glw::GLfloat v1);
void					glProgramUniform2fv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glProgramUniform2i									(glw::GLuint program, glw::GLint location, glw::GLint v0, glw::GLint v1);
void					glProgramUniform2iv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glProgramUniform2ui									(glw::GLuint program, glw::GLint location, glw::GLuint v0, glw::GLuint v1);
void					glProgramUniform2uiv								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glProgramUniform3d									(glw::GLuint program, glw::GLint location, glw::GLdouble v0, glw::GLdouble v1, glw::GLdouble v2);
void					glProgramUniform3dEXT								(glw::GLuint program, glw::GLint location, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glProgramUniform3dv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform3dvEXT								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform3f									(glw::GLuint program, glw::GLint location, glw::GLfloat v0, glw::GLfloat v1, glw::GLfloat v2);
void					glProgramUniform3fv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glProgramUniform3i									(glw::GLuint program, glw::GLint location, glw::GLint v0, glw::GLint v1, glw::GLint v2);
void					glProgramUniform3iv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glProgramUniform3ui									(glw::GLuint program, glw::GLint location, glw::GLuint v0, glw::GLuint v1, glw::GLuint v2);
void					glProgramUniform3uiv								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glProgramUniform4d									(glw::GLuint program, glw::GLint location, glw::GLdouble v0, glw::GLdouble v1, glw::GLdouble v2, glw::GLdouble v3);
void					glProgramUniform4dEXT								(glw::GLuint program, glw::GLint location, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z, glw::GLdouble w);
void					glProgramUniform4dv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform4dvEXT								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glProgramUniform4f									(glw::GLuint program, glw::GLint location, glw::GLfloat v0, glw::GLfloat v1, glw::GLfloat v2, glw::GLfloat v3);
void					glProgramUniform4fv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glProgramUniform4i									(glw::GLuint program, glw::GLint location, glw::GLint v0, glw::GLint v1, glw::GLint v2, glw::GLint v3);
void					glProgramUniform4iv									(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glProgramUniform4ui									(glw::GLuint program, glw::GLint location, glw::GLuint v0, glw::GLuint v1, glw::GLuint v2, glw::GLuint v3);
void					glProgramUniform4uiv								(glw::GLuint program, glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glProgramUniformMatrix2dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix2dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix2fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix2x3dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix2x3dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix2x3fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix2x4dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix2x4dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix2x4fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix3dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix3dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix3fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix3x2dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix3x2dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix3x2fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix3x4dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix3x4dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix3x4fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix4dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix4dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix4fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix4x2dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix4x2dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix4x2fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProgramUniformMatrix4x3dv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix4x3dvEXT						(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glProgramUniformMatrix4x3fv							(glw::GLuint program, glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glProvokingVertex									(glw::GLenum mode);
void					glPushClientAttribDefaultEXT						(glw::GLbitfield mask);
void					glPushDebugGroup									(glw::GLenum source, glw::GLuint id, glw::GLsizei length, const glw::GLchar *message);
void					glPushGroupMarkerEXT								(glw::GLsizei length, const glw::GLchar *marker);
void					glQueryCounter										(glw::GLuint id, glw::GLenum target);
void					glReadBuffer										(glw::GLenum src);
void					glReadPixels										(glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLenum type, void *pixels);
void					glReadnPixels										(glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLenum type, glw::GLsizei bufSize, void *data);
void					glReleaseShaderCompiler								(void);
void					glRenderGpuMaskNV									(glw::GLbitfield mask);
void					glRenderbufferStorage								(glw::GLenum target, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glRenderbufferStorageMultisample					(glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glResumeTransformFeedback							(void);
void					glSampleCoverage									(glw::GLfloat value, glw::GLboolean invert);
void					glSampleMaski										(glw::GLuint maskNumber, glw::GLbitfield mask);
void					glSamplerParameterIiv								(glw::GLuint sampler, glw::GLenum pname, const glw::GLint *param);
void					glSamplerParameterIuiv								(glw::GLuint sampler, glw::GLenum pname, const glw::GLuint *param);
void					glSamplerParameterf									(glw::GLuint sampler, glw::GLenum pname, glw::GLfloat param);
void					glSamplerParameterfv								(glw::GLuint sampler, glw::GLenum pname, const glw::GLfloat *param);
void					glSamplerParameteri									(glw::GLuint sampler, glw::GLenum pname, glw::GLint param);
void					glSamplerParameteriv								(glw::GLuint sampler, glw::GLenum pname, const glw::GLint *param);
void					glScissor											(glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glScissorArrayv										(glw::GLuint first, glw::GLsizei count, const glw::GLint *v);
void					glScissorIndexed									(glw::GLuint index, glw::GLint left, glw::GLint bottom, glw::GLsizei width, glw::GLsizei height);
void					glScissorIndexedv									(glw::GLuint index, const glw::GLint *v);
void					glShaderBinary										(glw::GLsizei count, const glw::GLuint *shaders, glw::GLenum binaryformat, const void *binary, glw::GLsizei length);
void					glShaderSource										(glw::GLuint shader, glw::GLsizei count, const glw::GLchar *const*string, const glw::GLint *length);
void					glShaderStorageBlockBinding							(glw::GLuint program, glw::GLuint storageBlockIndex, glw::GLuint storageBlockBinding);
void					glSpecializeShader									(glw::GLuint shader, const glw::GLchar *pEntryPoint, glw::GLuint numSpecializationConstants, const glw::GLuint *pConstantIndex, const glw::GLuint *pConstantValue);
void					glStencilFunc										(glw::GLenum func, glw::GLint ref, glw::GLuint mask);
void					glStencilFuncSeparate								(glw::GLenum face, glw::GLenum func, glw::GLint ref, glw::GLuint mask);
void					glStencilMask										(glw::GLuint mask);
void					glStencilMaskSeparate								(glw::GLenum face, glw::GLuint mask);
void					glStencilOp											(glw::GLenum fail, glw::GLenum zfail, glw::GLenum zpass);
void					glStencilOpSeparate									(glw::GLenum face, glw::GLenum sfail, glw::GLenum dpfail, glw::GLenum dppass);
void					glTexBuffer											(glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer);
void					glTexBufferRange									(glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size);
void					glTexImage1D										(glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexImage2D										(glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexImage2DMultisample								(glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLboolean fixedsamplelocations);
void					glTexImage3D										(glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexImage3DMultisample								(glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLboolean fixedsamplelocations);
void					glTexImage3DOES										(glw::GLenum target, glw::GLint level, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexPageCommitmentARB								(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLboolean commit);
void					glTexParameterIiv									(glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glTexParameterIuiv									(glw::GLenum target, glw::GLenum pname, const glw::GLuint *params);
void					glTexParameterf										(glw::GLenum target, glw::GLenum pname, glw::GLfloat param);
void					glTexParameterfv									(glw::GLenum target, glw::GLenum pname, const glw::GLfloat *params);
void					glTexParameteri										(glw::GLenum target, glw::GLenum pname, glw::GLint param);
void					glTexParameteriv									(glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glTexStorage1D										(glw::GLenum target, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width);
void					glTexStorage2D										(glw::GLenum target, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glTexStorage2DMultisample							(glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLboolean fixedsamplelocations);
void					glTexStorage3D										(glw::GLenum target, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth);
void					glTexStorage3DMultisample							(glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLboolean fixedsamplelocations);
void					glTexSubImage1D										(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexSubImage2D										(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexSubImage3D										(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexSubImage3DOES									(glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureBarrier									(void);
void					glTextureBuffer										(glw::GLuint texture, glw::GLenum internalformat, glw::GLuint buffer);
void					glTextureBufferEXT									(glw::GLuint texture, glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer);
void					glTextureBufferRange								(glw::GLuint texture, glw::GLenum internalformat, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size);
void					glTextureBufferRangeEXT								(glw::GLuint texture, glw::GLenum target, glw::GLenum internalformat, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size);
void					glTextureImage1DEXT									(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureImage2DEXT									(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureImage3DEXT									(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLint border, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTexturePageCommitmentEXT							(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLboolean commit);
void					glTextureParameterIiv								(glw::GLuint texture, glw::GLenum pname, const glw::GLint *params);
void					glTextureParameterIivEXT							(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glTextureParameterIuiv								(glw::GLuint texture, glw::GLenum pname, const glw::GLuint *params);
void					glTextureParameterIuivEXT							(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, const glw::GLuint *params);
void					glTextureParameterf									(glw::GLuint texture, glw::GLenum pname, glw::GLfloat param);
void					glTextureParameterfEXT								(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, glw::GLfloat param);
void					glTextureParameterfv								(glw::GLuint texture, glw::GLenum pname, const glw::GLfloat *param);
void					glTextureParameterfvEXT								(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, const glw::GLfloat *params);
void					glTextureParameteri									(glw::GLuint texture, glw::GLenum pname, glw::GLint param);
void					glTextureParameteriEXT								(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, glw::GLint param);
void					glTextureParameteriv								(glw::GLuint texture, glw::GLenum pname, const glw::GLint *param);
void					glTextureParameterivEXT								(glw::GLuint texture, glw::GLenum target, glw::GLenum pname, const glw::GLint *params);
void					glTextureRenderbufferEXT							(glw::GLuint texture, glw::GLenum target, glw::GLuint renderbuffer);
void					glTextureStorage1D									(glw::GLuint texture, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width);
void					glTextureStorage1DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width);
void					glTextureStorage2D									(glw::GLuint texture, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glTextureStorage2DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height);
void					glTextureStorage2DMultisample						(glw::GLuint texture, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLboolean fixedsamplelocations);
void					glTextureStorage2DMultisampleEXT					(glw::GLuint texture, glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLboolean fixedsamplelocations);
void					glTextureStorage3D									(glw::GLuint texture, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth);
void					glTextureStorage3DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLsizei levels, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth);
void					glTextureStorage3DMultisample						(glw::GLuint texture, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLboolean fixedsamplelocations);
void					glTextureStorage3DMultisampleEXT					(glw::GLuint texture, glw::GLenum target, glw::GLsizei samples, glw::GLenum internalformat, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLboolean fixedsamplelocations);
void					glTextureSubImage1D									(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureSubImage1DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLsizei width, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureSubImage2D									(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureSubImage2DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLsizei width, glw::GLsizei height, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureSubImage3D									(glw::GLuint texture, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureSubImage3DEXT								(glw::GLuint texture, glw::GLenum target, glw::GLint level, glw::GLint xoffset, glw::GLint yoffset, glw::GLint zoffset, glw::GLsizei width, glw::GLsizei height, glw::GLsizei depth, glw::GLenum format, glw::GLenum type, const void *pixels);
void					glTextureView										(glw::GLuint texture, glw::GLenum target, glw::GLuint origtexture, glw::GLenum internalformat, glw::GLuint minlevel, glw::GLuint numlevels, glw::GLuint minlayer, glw::GLuint numlayers);
void					glTransformFeedbackBufferBase						(glw::GLuint xfb, glw::GLuint index, glw::GLuint buffer);
void					glTransformFeedbackBufferRange						(glw::GLuint xfb, glw::GLuint index, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizeiptr size);
void					glTransformFeedbackVaryings							(glw::GLuint program, glw::GLsizei count, const glw::GLchar *const*varyings, glw::GLenum bufferMode);
void					glUniform1d											(glw::GLint location, glw::GLdouble x);
void					glUniform1dv										(glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glUniform1f											(glw::GLint location, glw::GLfloat v0);
void					glUniform1fv										(glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glUniform1i											(glw::GLint location, glw::GLint v0);
void					glUniform1iv										(glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glUniform1ui										(glw::GLint location, glw::GLuint v0);
void					glUniform1uiv										(glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glUniform2d											(glw::GLint location, glw::GLdouble x, glw::GLdouble y);
void					glUniform2dv										(glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glUniform2f											(glw::GLint location, glw::GLfloat v0, glw::GLfloat v1);
void					glUniform2fv										(glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glUniform2i											(glw::GLint location, glw::GLint v0, glw::GLint v1);
void					glUniform2iv										(glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glUniform2ui										(glw::GLint location, glw::GLuint v0, glw::GLuint v1);
void					glUniform2uiv										(glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glUniform3d											(glw::GLint location, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glUniform3dv										(glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glUniform3f											(glw::GLint location, glw::GLfloat v0, glw::GLfloat v1, glw::GLfloat v2);
void					glUniform3fv										(glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glUniform3i											(glw::GLint location, glw::GLint v0, glw::GLint v1, glw::GLint v2);
void					glUniform3iv										(glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glUniform3ui										(glw::GLint location, glw::GLuint v0, glw::GLuint v1, glw::GLuint v2);
void					glUniform3uiv										(glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glUniform4d											(glw::GLint location, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z, glw::GLdouble w);
void					glUniform4dv										(glw::GLint location, glw::GLsizei count, const glw::GLdouble *value);
void					glUniform4f											(glw::GLint location, glw::GLfloat v0, glw::GLfloat v1, glw::GLfloat v2, glw::GLfloat v3);
void					glUniform4fv										(glw::GLint location, glw::GLsizei count, const glw::GLfloat *value);
void					glUniform4i											(glw::GLint location, glw::GLint v0, glw::GLint v1, glw::GLint v2, glw::GLint v3);
void					glUniform4iv										(glw::GLint location, glw::GLsizei count, const glw::GLint *value);
void					glUniform4ui										(glw::GLint location, glw::GLuint v0, glw::GLuint v1, glw::GLuint v2, glw::GLuint v3);
void					glUniform4uiv										(glw::GLint location, glw::GLsizei count, const glw::GLuint *value);
void					glUniformBlockBinding								(glw::GLuint program, glw::GLuint uniformBlockIndex, glw::GLuint uniformBlockBinding);
void					glUniformMatrix2dv									(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix2fv									(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix2x3dv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix2x3fv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix2x4dv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix2x4fv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix3dv									(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix3fv									(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix3x2dv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix3x2fv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix3x4dv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix3x4fv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix4dv									(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix4fv									(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix4x2dv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix4x2fv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformMatrix4x3dv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLdouble *value);
void					glUniformMatrix4x3fv								(glw::GLint location, glw::GLsizei count, glw::GLboolean transpose, const glw::GLfloat *value);
void					glUniformSubroutinesuiv								(glw::GLenum shadertype, glw::GLsizei count, const glw::GLuint *indices);
glw::GLboolean			glUnmapBuffer										(glw::GLenum target);
glw::GLboolean			glUnmapNamedBuffer									(glw::GLuint buffer);
glw::GLboolean			glUnmapNamedBufferEXT								(glw::GLuint buffer);
void					glUseProgram										(glw::GLuint program);
void					glUseProgramStages									(glw::GLuint pipeline, glw::GLbitfield stages, glw::GLuint program);
void					glValidateProgram									(glw::GLuint program);
void					glValidateProgramPipeline							(glw::GLuint pipeline);
void					glVertexArrayAttribBinding							(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLuint bindingindex);
void					glVertexArrayAttribFormat							(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLboolean normalized, glw::GLuint relativeoffset);
void					glVertexArrayAttribIFormat							(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLuint relativeoffset);
void					glVertexArrayAttribLFormat							(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLuint relativeoffset);
void					glVertexArrayBindVertexBufferEXT					(glw::GLuint vaobj, glw::GLuint bindingindex, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizei stride);
void					glVertexArrayBindingDivisor							(glw::GLuint vaobj, glw::GLuint bindingindex, glw::GLuint divisor);
void					glVertexArrayColorOffsetEXT							(glw::GLuint vaobj, glw::GLuint buffer, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayEdgeFlagOffsetEXT						(glw::GLuint vaobj, glw::GLuint buffer, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayElementBuffer							(glw::GLuint vaobj, glw::GLuint buffer);
void					glVertexArrayFogCoordOffsetEXT						(glw::GLuint vaobj, glw::GLuint buffer, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayIndexOffsetEXT							(glw::GLuint vaobj, glw::GLuint buffer, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayMultiTexCoordOffsetEXT					(glw::GLuint vaobj, glw::GLuint buffer, glw::GLenum texunit, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayNormalOffsetEXT						(glw::GLuint vaobj, glw::GLuint buffer, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArraySecondaryColorOffsetEXT				(glw::GLuint vaobj, glw::GLuint buffer, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayTexCoordOffsetEXT						(glw::GLuint vaobj, glw::GLuint buffer, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayVertexAttribBindingEXT					(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLuint bindingindex);
void					glVertexArrayVertexAttribDivisorEXT					(glw::GLuint vaobj, glw::GLuint index, glw::GLuint divisor);
void					glVertexArrayVertexAttribFormatEXT					(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLboolean normalized, glw::GLuint relativeoffset);
void					glVertexArrayVertexAttribIFormatEXT					(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLuint relativeoffset);
void					glVertexArrayVertexAttribIOffsetEXT					(glw::GLuint vaobj, glw::GLuint buffer, glw::GLuint index, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayVertexAttribLFormatEXT					(glw::GLuint vaobj, glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLuint relativeoffset);
void					glVertexArrayVertexAttribLOffsetEXT					(glw::GLuint vaobj, glw::GLuint buffer, glw::GLuint index, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayVertexAttribOffsetEXT					(glw::GLuint vaobj, glw::GLuint buffer, glw::GLuint index, glw::GLint size, glw::GLenum type, glw::GLboolean normalized, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexArrayVertexBindingDivisorEXT				(glw::GLuint vaobj, glw::GLuint bindingindex, glw::GLuint divisor);
void					glVertexArrayVertexBuffer							(glw::GLuint vaobj, glw::GLuint bindingindex, glw::GLuint buffer, glw::GLintptr offset, glw::GLsizei stride);
void					glVertexArrayVertexBuffers							(glw::GLuint vaobj, glw::GLuint first, glw::GLsizei count, const glw::GLuint *buffers, const glw::GLintptr *offsets, const glw::GLsizei *strides);
void					glVertexArrayVertexOffsetEXT						(glw::GLuint vaobj, glw::GLuint buffer, glw::GLint size, glw::GLenum type, glw::GLsizei stride, glw::GLintptr offset);
void					glVertexAttrib1d									(glw::GLuint index, glw::GLdouble x);
void					glVertexAttrib1dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttrib1f									(glw::GLuint index, glw::GLfloat x);
void					glVertexAttrib1fv									(glw::GLuint index, const glw::GLfloat *v);
void					glVertexAttrib1s									(glw::GLuint index, glw::GLshort x);
void					glVertexAttrib1sv									(glw::GLuint index, const glw::GLshort *v);
void					glVertexAttrib2d									(glw::GLuint index, glw::GLdouble x, glw::GLdouble y);
void					glVertexAttrib2dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttrib2f									(glw::GLuint index, glw::GLfloat x, glw::GLfloat y);
void					glVertexAttrib2fv									(glw::GLuint index, const glw::GLfloat *v);
void					glVertexAttrib2s									(glw::GLuint index, glw::GLshort x, glw::GLshort y);
void					glVertexAttrib2sv									(glw::GLuint index, const glw::GLshort *v);
void					glVertexAttrib3d									(glw::GLuint index, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glVertexAttrib3dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttrib3f									(glw::GLuint index, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z);
void					glVertexAttrib3fv									(glw::GLuint index, const glw::GLfloat *v);
void					glVertexAttrib3s									(glw::GLuint index, glw::GLshort x, glw::GLshort y, glw::GLshort z);
void					glVertexAttrib3sv									(glw::GLuint index, const glw::GLshort *v);
void					glVertexAttrib4Nbv									(glw::GLuint index, const glw::GLbyte *v);
void					glVertexAttrib4Niv									(glw::GLuint index, const glw::GLint *v);
void					glVertexAttrib4Nsv									(glw::GLuint index, const glw::GLshort *v);
void					glVertexAttrib4Nub									(glw::GLuint index, glw::GLubyte x, glw::GLubyte y, glw::GLubyte z, glw::GLubyte w);
void					glVertexAttrib4Nubv									(glw::GLuint index, const glw::GLubyte *v);
void					glVertexAttrib4Nuiv									(glw::GLuint index, const glw::GLuint *v);
void					glVertexAttrib4Nusv									(glw::GLuint index, const glw::GLushort *v);
void					glVertexAttrib4bv									(glw::GLuint index, const glw::GLbyte *v);
void					glVertexAttrib4d									(glw::GLuint index, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z, glw::GLdouble w);
void					glVertexAttrib4dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttrib4f									(glw::GLuint index, glw::GLfloat x, glw::GLfloat y, glw::GLfloat z, glw::GLfloat w);
void					glVertexAttrib4fv									(glw::GLuint index, const glw::GLfloat *v);
void					glVertexAttrib4iv									(glw::GLuint index, const glw::GLint *v);
void					glVertexAttrib4s									(glw::GLuint index, glw::GLshort x, glw::GLshort y, glw::GLshort z, glw::GLshort w);
void					glVertexAttrib4sv									(glw::GLuint index, const glw::GLshort *v);
void					glVertexAttrib4ubv									(glw::GLuint index, const glw::GLubyte *v);
void					glVertexAttrib4uiv									(glw::GLuint index, const glw::GLuint *v);
void					glVertexAttrib4usv									(glw::GLuint index, const glw::GLushort *v);
void					glVertexAttribBinding								(glw::GLuint attribindex, glw::GLuint bindingindex);
void					glVertexAttribDivisor								(glw::GLuint index, glw::GLuint divisor);
void					glVertexAttribFormat								(glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLboolean normalized, glw::GLuint relativeoffset);
void					glVertexAttribI1i									(glw::GLuint index, glw::GLint x);
void					glVertexAttribI1iv									(glw::GLuint index, const glw::GLint *v);
void					glVertexAttribI1ui									(glw::GLuint index, glw::GLuint x);
void					glVertexAttribI1uiv									(glw::GLuint index, const glw::GLuint *v);
void					glVertexAttribI2i									(glw::GLuint index, glw::GLint x, glw::GLint y);
void					glVertexAttribI2iv									(glw::GLuint index, const glw::GLint *v);
void					glVertexAttribI2ui									(glw::GLuint index, glw::GLuint x, glw::GLuint y);
void					glVertexAttribI2uiv									(glw::GLuint index, const glw::GLuint *v);
void					glVertexAttribI3i									(glw::GLuint index, glw::GLint x, glw::GLint y, glw::GLint z);
void					glVertexAttribI3iv									(glw::GLuint index, const glw::GLint *v);
void					glVertexAttribI3ui									(glw::GLuint index, glw::GLuint x, glw::GLuint y, glw::GLuint z);
void					glVertexAttribI3uiv									(glw::GLuint index, const glw::GLuint *v);
void					glVertexAttribI4bv									(glw::GLuint index, const glw::GLbyte *v);
void					glVertexAttribI4i									(glw::GLuint index, glw::GLint x, glw::GLint y, glw::GLint z, glw::GLint w);
void					glVertexAttribI4iv									(glw::GLuint index, const glw::GLint *v);
void					glVertexAttribI4sv									(glw::GLuint index, const glw::GLshort *v);
void					glVertexAttribI4ubv									(glw::GLuint index, const glw::GLubyte *v);
void					glVertexAttribI4ui									(glw::GLuint index, glw::GLuint x, glw::GLuint y, glw::GLuint z, glw::GLuint w);
void					glVertexAttribI4uiv									(glw::GLuint index, const glw::GLuint *v);
void					glVertexAttribI4usv									(glw::GLuint index, const glw::GLushort *v);
void					glVertexAttribIFormat								(glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLuint relativeoffset);
void					glVertexAttribIPointer								(glw::GLuint index, glw::GLint size, glw::GLenum type, glw::GLsizei stride, const void *pointer);
void					glVertexAttribL1d									(glw::GLuint index, glw::GLdouble x);
void					glVertexAttribL1dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttribL2d									(glw::GLuint index, glw::GLdouble x, glw::GLdouble y);
void					glVertexAttribL2dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttribL3d									(glw::GLuint index, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z);
void					glVertexAttribL3dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttribL4d									(glw::GLuint index, glw::GLdouble x, glw::GLdouble y, glw::GLdouble z, glw::GLdouble w);
void					glVertexAttribL4dv									(glw::GLuint index, const glw::GLdouble *v);
void					glVertexAttribLFormat								(glw::GLuint attribindex, glw::GLint size, glw::GLenum type, glw::GLuint relativeoffset);
void					glVertexAttribLPointer								(glw::GLuint index, glw::GLint size, glw::GLenum type, glw::GLsizei stride, const void *pointer);
void					glVertexAttribP1ui									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, glw::GLuint value);
void					glVertexAttribP1uiv									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, const glw::GLuint *value);
void					glVertexAttribP2ui									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, glw::GLuint value);
void					glVertexAttribP2uiv									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, const glw::GLuint *value);
void					glVertexAttribP3ui									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, glw::GLuint value);
void					glVertexAttribP3uiv									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, const glw::GLuint *value);
void					glVertexAttribP4ui									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, glw::GLuint value);
void					glVertexAttribP4uiv									(glw::GLuint index, glw::GLenum type, glw::GLboolean normalized, const glw::GLuint *value);
void					glVertexAttribPointer								(glw::GLuint index, glw::GLint size, glw::GLenum type, glw::GLboolean normalized, glw::GLsizei stride, const void *pointer);
void					glVertexBindingDivisor								(glw::GLuint bindingindex, glw::GLuint divisor);
void					glViewport											(glw::GLint x, glw::GLint y, glw::GLsizei width, glw::GLsizei height);
void					glViewportArrayv									(glw::GLuint first, glw::GLsizei count, const glw::GLfloat *v);
void					glViewportIndexedf									(glw::GLuint index, glw::GLfloat x, glw::GLfloat y, glw::GLfloat w, glw::GLfloat h);
void					glViewportIndexedfv									(glw::GLuint index, const glw::GLfloat *v);
void					glWaitSync											(glw::GLsync sync, glw::GLbitfield flags, glw::GLuint64 timeout);
