/* 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 32093.
 */
typedef GLW_APICALL void			(GLW_APIENTRY* glActiveShaderProgramFunc)							(GLuint pipeline, GLuint program);
typedef GLW_APICALL void			(GLW_APIENTRY* glActiveTextureFunc)									(GLenum texture);
typedef GLW_APICALL void			(GLW_APIENTRY* glAttachShaderFunc)									(GLuint program, GLuint shader);
typedef GLW_APICALL void			(GLW_APIENTRY* glBeginConditionalRenderFunc)						(GLuint id, GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glBeginQueryFunc)									(GLenum target, GLuint id);
typedef GLW_APICALL void			(GLW_APIENTRY* glBeginQueryIndexedFunc)								(GLenum target, GLuint index, GLuint id);
typedef GLW_APICALL void			(GLW_APIENTRY* glBeginTransformFeedbackFunc)						(GLenum primitiveMode);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindAttribLocationFunc)							(GLuint program, GLuint index, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindBufferFunc)									(GLenum target, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindBufferBaseFunc)								(GLenum target, GLuint index, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindBufferRangeFunc)								(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindBuffersBaseFunc)								(GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindBuffersRangeFunc)								(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindFragDataLocationFunc)							(GLuint program, GLuint color, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindFragDataLocationIndexedFunc)					(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindFramebufferFunc)								(GLenum target, GLuint framebuffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindImageTextureFunc)								(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindImageTexturesFunc)								(GLuint first, GLsizei count, const GLuint *textures);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindProgramPipelineFunc)							(GLuint pipeline);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindRenderbufferFunc)								(GLenum target, GLuint renderbuffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindSamplerFunc)									(GLuint unit, GLuint sampler);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindSamplersFunc)									(GLuint first, GLsizei count, const GLuint *samplers);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindTextureFunc)									(GLenum target, GLuint texture);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindTextureUnitFunc)								(GLuint unit, GLuint texture);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindTexturesFunc)									(GLuint first, GLsizei count, const GLuint *textures);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindTransformFeedbackFunc)							(GLenum target, GLuint id);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindVertexArrayFunc)								(GLuint array);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindVertexBufferFunc)								(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
typedef GLW_APICALL void			(GLW_APIENTRY* glBindVertexBuffersFunc)								(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendBarrierFunc)									(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendColorFunc)									(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendEquationFunc)									(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendEquationSeparateFunc)							(GLenum modeRGB, GLenum modeAlpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendEquationSeparateiFunc)						(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendEquationiFunc)								(GLuint buf, GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendFuncFunc)										(GLenum sfactor, GLenum dfactor);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendFuncSeparateFunc)								(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendFuncSeparateiFunc)							(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlendFunciFunc)									(GLuint buf, GLenum src, GLenum dst);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlitFramebufferFunc)								(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
typedef GLW_APICALL void			(GLW_APIENTRY* glBlitNamedFramebufferFunc)							(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
typedef GLW_APICALL void			(GLW_APIENTRY* glBufferDataFunc)									(GLenum target, GLsizeiptr size, const void *data, GLenum usage);
typedef GLW_APICALL void			(GLW_APIENTRY* glBufferStorageFunc)									(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
typedef GLW_APICALL void			(GLW_APIENTRY* glBufferSubDataFunc)									(GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
typedef GLW_APICALL GLenum			(GLW_APIENTRY* glCheckFramebufferStatusFunc)						(GLenum target);
typedef GLW_APICALL GLenum			(GLW_APIENTRY* glCheckNamedFramebufferStatusFunc)					(GLuint framebuffer, GLenum target);
typedef GLW_APICALL void			(GLW_APIENTRY* glClampColorFunc)									(GLenum target, GLenum clamp);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearFunc)											(GLbitfield mask);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearBufferDataFunc)								(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearBufferSubDataFunc)							(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearBufferfiFunc)									(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearBufferfvFunc)									(GLenum buffer, GLint drawbuffer, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearBufferivFunc)									(GLenum buffer, GLint drawbuffer, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearBufferuivFunc)								(GLenum buffer, GLint drawbuffer, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearColorFunc)									(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearDepthFunc)									(GLdouble depth);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearDepthfFunc)									(GLfloat d);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedBufferDataFunc)							(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedBufferSubDataFunc)						(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferfiFunc)						(GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferfvFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferivFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferuivFunc)						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearStencilFunc)									(GLint s);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearTexImageFunc)									(GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearTexSubImageFunc)								(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL GLenum			(GLW_APIENTRY* glClientWaitSyncFunc)								(GLsync sync, GLbitfield flags, GLuint64 timeout);
typedef GLW_APICALL void			(GLW_APIENTRY* glClipControlFunc)									(GLenum origin, GLenum depth);
typedef GLW_APICALL void			(GLW_APIENTRY* glColorMaskFunc)										(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef GLW_APICALL void			(GLW_APIENTRY* glColorMaskiFunc)									(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompileShaderFunc)									(GLuint shader);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTexImage1DFunc)							(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTexImage2DFunc)							(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTexImage3DFunc)							(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTexSubImage1DFunc)						(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTexSubImage2DFunc)						(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTexSubImage3DFunc)						(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTextureSubImage1DFunc)					(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTextureSubImage2DFunc)					(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTextureSubImage3DFunc)					(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyBufferSubDataFunc)								(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyImageSubDataFunc)								(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyNamedBufferSubDataFunc)						(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTexImage1DFunc)								(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTexImage2DFunc)								(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTexSubImage1DFunc)								(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTexSubImage2DFunc)								(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTexSubImage3DFunc)								(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTextureSubImage1DFunc)							(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTextureSubImage2DFunc)							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTextureSubImage3DFunc)							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateBuffersFunc)									(GLsizei n, GLuint *buffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateFramebuffersFunc)							(GLsizei n, GLuint *framebuffers);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glCreateProgramFunc)									(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateProgramPipelinesFunc)						(GLsizei n, GLuint *pipelines);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateQueriesFunc)									(GLenum target, GLsizei n, GLuint *ids);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateRenderbuffersFunc)							(GLsizei n, GLuint *renderbuffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateSamplersFunc)								(GLsizei n, GLuint *samplers);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glCreateShaderFunc)									(GLenum type);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glCreateShaderProgramvFunc)							(GLenum type, GLsizei count, const GLchar *const*strings);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateTexturesFunc)								(GLenum target, GLsizei n, GLuint *textures);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateTransformFeedbacksFunc)						(GLsizei n, GLuint *ids);
typedef GLW_APICALL void			(GLW_APIENTRY* glCreateVertexArraysFunc)							(GLsizei n, GLuint *arrays);
typedef GLW_APICALL void			(GLW_APIENTRY* glCullFaceFunc)										(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glDebugMessageCallbackFunc)							(GLDEBUGPROC callback, const void *userParam);
typedef GLW_APICALL void			(GLW_APIENTRY* glDebugMessageControlFunc)							(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
typedef GLW_APICALL void			(GLW_APIENTRY* glDebugMessageInsertFunc)							(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteBuffersFunc)									(GLsizei n, const GLuint *buffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteFramebuffersFunc)							(GLsizei n, const GLuint *framebuffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteProgramFunc)									(GLuint program);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteProgramPipelinesFunc)						(GLsizei n, const GLuint *pipelines);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteQueriesFunc)									(GLsizei n, const GLuint *ids);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteRenderbuffersFunc)							(GLsizei n, const GLuint *renderbuffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteSamplersFunc)								(GLsizei count, const GLuint *samplers);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteShaderFunc)									(GLuint shader);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteSyncFunc)									(GLsync sync);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteTexturesFunc)								(GLsizei n, const GLuint *textures);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteTransformFeedbacksFunc)						(GLsizei n, const GLuint *ids);
typedef GLW_APICALL void			(GLW_APIENTRY* glDeleteVertexArraysFunc)							(GLsizei n, const GLuint *arrays);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthFuncFunc)										(GLenum func);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthMaskFunc)										(GLboolean flag);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthRangeFunc)									(GLdouble near, GLdouble far);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthRangeArrayvFunc)								(GLuint first, GLsizei count, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthRangeIndexedFunc)								(GLuint index, GLdouble n, GLdouble f);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthRangefFunc)									(GLfloat n, GLfloat f);
typedef GLW_APICALL void			(GLW_APIENTRY* glDetachShaderFunc)									(GLuint program, GLuint shader);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableFunc)										(GLenum cap);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableVertexArrayAttribFunc)						(GLuint vaobj, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableVertexAttribArrayFunc)						(GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableiFunc)										(GLenum target, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDispatchComputeFunc)								(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
typedef GLW_APICALL void			(GLW_APIENTRY* glDispatchComputeIndirectFunc)						(GLintptr indirect);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawArraysFunc)									(GLenum mode, GLint first, GLsizei count);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawArraysIndirectFunc)							(GLenum mode, const void *indirect);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawArraysInstancedFunc)							(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawArraysInstancedBaseInstanceFunc)				(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawBufferFunc)									(GLenum buf);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawBuffersFunc)									(GLsizei n, const GLenum *bufs);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsFunc)									(GLenum mode, GLsizei count, GLenum type, const void *indices);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsBaseVertexFunc)						(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsIndirectFunc)							(GLenum mode, GLenum type, const void *indirect);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsInstancedFunc)							(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsInstancedBaseInstanceFunc)				(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsInstancedBaseVertexFunc)				(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawElementsInstancedBaseVertexBaseInstanceFunc)	(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawRangeElementsFunc)								(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawRangeElementsBaseVertexFunc)					(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawTransformFeedbackFunc)							(GLenum mode, GLuint id);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawTransformFeedbackInstancedFunc)				(GLenum mode, GLuint id, GLsizei instancecount);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawTransformFeedbackStreamFunc)					(GLenum mode, GLuint id, GLuint stream);
typedef GLW_APICALL void			(GLW_APIENTRY* glDrawTransformFeedbackStreamInstancedFunc)			(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
typedef GLW_APICALL void			(GLW_APIENTRY* glEGLImageTargetRenderbufferStorageOESFunc)			(GLenum target, GLeglImageOES image);
typedef GLW_APICALL void			(GLW_APIENTRY* glEGLImageTargetTexture2DOESFunc)					(GLenum target, GLeglImageOES image);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableFunc)										(GLenum cap);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableVertexArrayAttribFunc)						(GLuint vaobj, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableVertexAttribArrayFunc)						(GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableiFunc)										(GLenum target, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEndConditionalRenderFunc)							(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glEndQueryFunc)										(GLenum target);
typedef GLW_APICALL void			(GLW_APIENTRY* glEndQueryIndexedFunc)								(GLenum target, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEndTransformFeedbackFunc)							(void);
typedef GLW_APICALL GLsync			(GLW_APIENTRY* glFenceSyncFunc)										(GLenum condition, GLbitfield flags);
typedef GLW_APICALL void			(GLW_APIENTRY* glFinishFunc)										(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glFlushFunc)											(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glFlushMappedBufferRangeFunc)						(GLenum target, GLintptr offset, GLsizeiptr length);
typedef GLW_APICALL void			(GLW_APIENTRY* glFlushMappedNamedBufferRangeFunc)					(GLuint buffer, GLintptr offset, GLsizeiptr length);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferParameteriFunc)							(GLenum target, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferRenderbufferFunc)						(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferTextureFunc)							(GLenum target, GLenum attachment, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferTexture1DFunc)							(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferTexture2DFunc)							(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferTexture3DFunc)							(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferTextureLayerFunc)						(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
typedef GLW_APICALL void			(GLW_APIENTRY* glFrontFaceFunc)										(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenBuffersFunc)									(GLsizei n, GLuint *buffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenFramebuffersFunc)								(GLsizei n, GLuint *framebuffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenProgramPipelinesFunc)							(GLsizei n, GLuint *pipelines);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenQueriesFunc)									(GLsizei n, GLuint *ids);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenRenderbuffersFunc)								(GLsizei n, GLuint *renderbuffers);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenSamplersFunc)									(GLsizei count, GLuint *samplers);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenTexturesFunc)									(GLsizei n, GLuint *textures);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenTransformFeedbacksFunc)							(GLsizei n, GLuint *ids);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenVertexArraysFunc)								(GLsizei n, GLuint *arrays);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenerateMipmapFunc)								(GLenum target);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenerateTextureMipmapFunc)							(GLuint texture);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveAtomicCounterBufferivFunc)				(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveAttribFunc)								(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveSubroutineNameFunc)						(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveSubroutineUniformNameFunc)				(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveSubroutineUniformivFunc)					(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveUniformFunc)								(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveUniformBlockNameFunc)						(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveUniformBlockivFunc)						(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveUniformNameFunc)							(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetActiveUniformsivFunc)							(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetAttachedShadersFunc)							(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetAttribLocationFunc)								(GLuint program, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetBooleani_vFunc)									(GLenum target, GLuint index, GLboolean *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetBooleanvFunc)									(GLenum pname, GLboolean *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetBufferParameteri64vFunc)						(GLenum target, GLenum pname, GLint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetBufferParameterivFunc)							(GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetBufferPointervFunc)								(GLenum target, GLenum pname, void **params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetBufferSubDataFunc)								(GLenum target, GLintptr offset, GLsizeiptr size, void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetCompressedTexImageFunc)							(GLenum target, GLint level, void *img);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetCompressedTextureImageFunc)						(GLuint texture, GLint level, GLsizei bufSize, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetCompressedTextureSubImageFunc)					(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glGetDebugMessageLogFunc)							(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetDoublei_vFunc)									(GLenum target, GLuint index, GLdouble *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetDoublevFunc)									(GLenum pname, GLdouble *data);
typedef GLW_APICALL GLenum			(GLW_APIENTRY* glGetErrorFunc)										(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetFloati_vFunc)									(GLenum target, GLuint index, GLfloat *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetFloatvFunc)										(GLenum pname, GLfloat *data);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetFragDataIndexFunc)								(GLuint program, const GLchar *name);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetFragDataLocationFunc)							(GLuint program, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetFramebufferAttachmentParameterivFunc)			(GLenum target, GLenum attachment, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetFramebufferParameterivFunc)						(GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL GLenum			(GLW_APIENTRY* glGetGraphicsResetStatusFunc)						(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetInteger64i_vFunc)								(GLenum target, GLuint index, GLint64 *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetInteger64vFunc)									(GLenum pname, GLint64 *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetIntegeri_vFunc)									(GLenum target, GLuint index, GLint *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetIntegervFunc)									(GLenum pname, GLint *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetInternalformati64vFunc)							(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetInternalformativFunc)							(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultisamplefvFunc)								(GLenum pname, GLuint index, GLfloat *val);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedBufferParameteri64vFunc)					(GLuint buffer, GLenum pname, GLint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedBufferParameterivFunc)						(GLuint buffer, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedBufferPointervFunc)						(GLuint buffer, GLenum pname, void **params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedBufferSubDataFunc)							(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedFramebufferAttachmentParameterivFunc)		(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedFramebufferParameterivFunc)				(GLuint framebuffer, GLenum pname, GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedRenderbufferParameterivFunc)				(GLuint renderbuffer, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetObjectLabelFunc)								(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetObjectPtrLabelFunc)								(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetPointervFunc)									(GLenum pname, void **params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramBinaryFunc)								(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramInfoLogFunc)								(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramInterfaceivFunc)							(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramPipelineInfoLogFunc)						(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramPipelineivFunc)							(GLuint pipeline, GLenum pname, GLint *params);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glGetProgramResourceIndexFunc)						(GLuint program, GLenum programInterface, const GLchar *name);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetProgramResourceLocationFunc)					(GLuint program, GLenum programInterface, const GLchar *name);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetProgramResourceLocationIndexFunc)				(GLuint program, GLenum programInterface, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramResourceNameFunc)						(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramResourceivFunc)							(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramStageivFunc)								(GLuint program, GLenum shadertype, GLenum pname, GLint *values);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetProgramivFunc)									(GLuint program, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryBufferObjecti64vFunc)						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryBufferObjectivFunc)						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryBufferObjectui64vFunc)						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryBufferObjectuivFunc)						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryIndexedivFunc)								(GLenum target, GLuint index, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryObjecti64vFunc)							(GLuint id, GLenum pname, GLint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryObjectivFunc)								(GLuint id, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryObjectui64vFunc)							(GLuint id, GLenum pname, GLuint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryObjectuivFunc)								(GLuint id, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetQueryivFunc)									(GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetRenderbufferParameterivFunc)					(GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetSamplerParameterIivFunc)						(GLuint sampler, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetSamplerParameterIuivFunc)						(GLuint sampler, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetSamplerParameterfvFunc)							(GLuint sampler, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetSamplerParameterivFunc)							(GLuint sampler, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetShaderInfoLogFunc)								(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetShaderPrecisionFormatFunc)						(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetShaderSourceFunc)								(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetShaderivFunc)									(GLuint shader, GLenum pname, GLint *params);
typedef GLW_APICALL const GLubyte *	(GLW_APIENTRY* glGetStringFunc)										(GLenum name);
typedef GLW_APICALL const GLubyte *	(GLW_APIENTRY* glGetStringiFunc)									(GLenum name, GLuint index);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glGetSubroutineIndexFunc)							(GLuint program, GLenum shadertype, const GLchar *name);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetSubroutineUniformLocationFunc)					(GLuint program, GLenum shadertype, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetSyncivFunc)										(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexImageFunc)									(GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexLevelParameterfvFunc)						(GLenum target, GLint level, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexLevelParameterivFunc)						(GLenum target, GLint level, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexParameterIivFunc)							(GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexParameterIuivFunc)							(GLenum target, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexParameterfvFunc)								(GLenum target, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTexParameterivFunc)								(GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureImageFunc)								(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureLevelParameterfvFunc)					(GLuint texture, GLint level, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureLevelParameterivFunc)					(GLuint texture, GLint level, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterIivFunc)						(GLuint texture, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterIuivFunc)						(GLuint texture, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterfvFunc)							(GLuint texture, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterivFunc)							(GLuint texture, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureSubImageFunc)							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTransformFeedbackVaryingFunc)					(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTransformFeedbacki64_vFunc)						(GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTransformFeedbacki_vFunc)						(GLuint xfb, GLenum pname, GLuint index, GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTransformFeedbackivFunc)						(GLuint xfb, GLenum pname, GLint *param);
typedef GLW_APICALL GLuint			(GLW_APIENTRY* glGetUniformBlockIndexFunc)							(GLuint program, const GLchar *uniformBlockName);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetUniformIndicesFunc)								(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
typedef GLW_APICALL GLint			(GLW_APIENTRY* glGetUniformLocationFunc)							(GLuint program, const GLchar *name);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetUniformSubroutineuivFunc)						(GLenum shadertype, GLint location, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetUniformdvFunc)									(GLuint program, GLint location, GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetUniformfvFunc)									(GLuint program, GLint location, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetUniformivFunc)									(GLuint program, GLint location, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetUniformuivFunc)									(GLuint program, GLint location, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexArrayIndexed64ivFunc)						(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexArrayIndexedivFunc)						(GLuint vaobj, GLuint index, GLenum pname, GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexArrayivFunc)								(GLuint vaobj, GLenum pname, GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribIivFunc)							(GLuint index, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribIuivFunc)							(GLuint index, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribLdvFunc)							(GLuint index, GLenum pname, GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribPointervFunc)						(GLuint index, GLenum pname, void **pointer);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribdvFunc)								(GLuint index, GLenum pname, GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribfvFunc)								(GLuint index, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexAttribivFunc)								(GLuint index, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetnCompressedTexImageFunc)						(GLenum target, GLint lod, GLsizei bufSize, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetnTexImageFunc)									(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetnUniformdvFunc)									(GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetnUniformfvFunc)									(GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetnUniformivFunc)									(GLuint program, GLint location, GLsizei bufSize, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetnUniformuivFunc)								(GLuint program, GLint location, GLsizei bufSize, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glHintFunc)											(GLenum target, GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glInsertEventMarkerEXTFunc)							(GLsizei length, const GLchar *marker);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateBufferDataFunc)							(GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateBufferSubDataFunc)						(GLuint buffer, GLintptr offset, GLsizeiptr length);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateFramebufferFunc)							(GLenum target, GLsizei numAttachments, const GLenum *attachments);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateNamedFramebufferDataFunc)				(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateNamedFramebufferSubDataFunc)				(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateSubFramebufferFunc)						(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateTexImageFunc)							(GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glInvalidateTexSubImageFunc)							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsBufferFunc)										(GLuint buffer);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsEnabledFunc)										(GLenum cap);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsEnablediFunc)									(GLenum target, GLuint index);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsFramebufferFunc)									(GLuint framebuffer);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsProgramFunc)										(GLuint program);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsProgramPipelineFunc)								(GLuint pipeline);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsQueryFunc)										(GLuint id);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsRenderbufferFunc)								(GLuint renderbuffer);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsSamplerFunc)										(GLuint sampler);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsShaderFunc)										(GLuint shader);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsSyncFunc)										(GLsync sync);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsTextureFunc)										(GLuint texture);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsTransformFeedbackFunc)							(GLuint id);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glIsVertexArrayFunc)									(GLuint array);
typedef GLW_APICALL void			(GLW_APIENTRY* glLineWidthFunc)										(GLfloat width);
typedef GLW_APICALL void			(GLW_APIENTRY* glLinkProgramFunc)									(GLuint program);
typedef GLW_APICALL void			(GLW_APIENTRY* glLogicOpFunc)										(GLenum opcode);
typedef GLW_APICALL void *			(GLW_APIENTRY* glMapBufferFunc)										(GLenum target, GLenum access);
typedef GLW_APICALL void *			(GLW_APIENTRY* glMapBufferRangeFunc)								(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef GLW_APICALL void *			(GLW_APIENTRY* glMapNamedBufferFunc)								(GLuint buffer, GLenum access);
typedef GLW_APICALL void *			(GLW_APIENTRY* glMapNamedBufferRangeFunc)							(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef GLW_APICALL void			(GLW_APIENTRY* glMemoryBarrierFunc)									(GLbitfield barriers);
typedef GLW_APICALL void			(GLW_APIENTRY* glMemoryBarrierByRegionFunc)							(GLbitfield barriers);
typedef GLW_APICALL void			(GLW_APIENTRY* glMinSampleShadingFunc)								(GLfloat value);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiDrawArraysFunc)								(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiDrawArraysIndirectFunc)						(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiDrawElementsFunc)								(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiDrawElementsBaseVertexFunc)					(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiDrawElementsIndirectFunc)						(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferDataFunc)								(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferStorageFunc)							(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferSubDataFunc)							(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferDrawBufferFunc)					(GLuint framebuffer, GLenum buf);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferDrawBuffersFunc)					(GLuint framebuffer, GLsizei n, const GLenum *bufs);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferParameteriFunc)					(GLuint framebuffer, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferReadBufferFunc)					(GLuint framebuffer, GLenum src);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferRenderbufferFunc)					(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTextureFunc)						(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTextureLayerFunc)					(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedRenderbufferStorageFunc)						(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedRenderbufferStorageMultisampleFunc)			(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glObjectLabelFunc)									(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
typedef GLW_APICALL void			(GLW_APIENTRY* glObjectPtrLabelFunc)								(const void *ptr, GLsizei length, const GLchar *label);
typedef GLW_APICALL void			(GLW_APIENTRY* glPatchParameterfvFunc)								(GLenum pname, const GLfloat *values);
typedef GLW_APICALL void			(GLW_APIENTRY* glPatchParameteriFunc)								(GLenum pname, GLint value);
typedef GLW_APICALL void			(GLW_APIENTRY* glPauseTransformFeedbackFunc)						(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glPixelStorefFunc)									(GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glPixelStoreiFunc)									(GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glPointParameterfFunc)								(GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glPointParameterfvFunc)								(GLenum pname, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glPointParameteriFunc)								(GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glPointParameterivFunc)								(GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glPointSizeFunc)										(GLfloat size);
typedef GLW_APICALL void			(GLW_APIENTRY* glPolygonModeFunc)									(GLenum face, GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glPolygonOffsetFunc)									(GLfloat factor, GLfloat units);
typedef GLW_APICALL void			(GLW_APIENTRY* glPopDebugGroupFunc)									(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glPopGroupMarkerEXTFunc)								(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glPrimitiveBoundingBoxFunc)							(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
typedef GLW_APICALL void			(GLW_APIENTRY* glPrimitiveRestartIndexFunc)							(GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramBinaryFunc)									(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramParameteriFunc)								(GLuint program, GLenum pname, GLint value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1dFunc)								(GLuint program, GLint location, GLdouble v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1dvFunc)								(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1fFunc)								(GLuint program, GLint location, GLfloat v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1fvFunc)								(GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1iFunc)								(GLuint program, GLint location, GLint v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1ivFunc)								(GLuint program, GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1uiFunc)								(GLuint program, GLint location, GLuint v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1uivFunc)							(GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2dFunc)								(GLuint program, GLint location, GLdouble v0, GLdouble v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2dvFunc)								(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2fFunc)								(GLuint program, GLint location, GLfloat v0, GLfloat v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2fvFunc)								(GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2iFunc)								(GLuint program, GLint location, GLint v0, GLint v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2ivFunc)								(GLuint program, GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2uiFunc)								(GLuint program, GLint location, GLuint v0, GLuint v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2uivFunc)							(GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3dFunc)								(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3dvFunc)								(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3fFunc)								(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3fvFunc)								(GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3iFunc)								(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3ivFunc)								(GLuint program, GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3uiFunc)								(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3uivFunc)							(GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4dFunc)								(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4dvFunc)								(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4fFunc)								(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4fvFunc)								(GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4iFunc)								(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4ivFunc)								(GLuint program, GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4uiFunc)								(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4uivFunc)							(GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix2dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix2fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix2x3dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix2x3fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix2x4dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix2x4fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix3dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix3fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix3x2dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix3x2fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix3x4dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix3x4fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix4dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix4fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix4x2dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix4x2fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix4x3dvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniformMatrix4x3fvFunc)						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProvokingVertexFunc)								(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glPushDebugGroupFunc)								(GLenum source, GLuint id, GLsizei length, const GLchar *message);
typedef GLW_APICALL void			(GLW_APIENTRY* glPushGroupMarkerEXTFunc)							(GLsizei length, const GLchar *marker);
typedef GLW_APICALL void			(GLW_APIENTRY* glQueryCounterFunc)									(GLuint id, GLenum target);
typedef GLW_APICALL void			(GLW_APIENTRY* glReadBufferFunc)									(GLenum src);
typedef GLW_APICALL void			(GLW_APIENTRY* glReadPixelsFunc)									(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glReadnPixelsFunc)									(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glReleaseShaderCompilerFunc)							(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glRenderbufferStorageFunc)							(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glRenderbufferStorageMultisampleFunc)				(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glResumeTransformFeedbackFunc)						(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glSampleCoverageFunc)								(GLfloat value, GLboolean invert);
typedef GLW_APICALL void			(GLW_APIENTRY* glSampleMaskiFunc)									(GLuint maskNumber, GLbitfield mask);
typedef GLW_APICALL void			(GLW_APIENTRY* glSamplerParameterIivFunc)							(GLuint sampler, GLenum pname, const GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glSamplerParameterIuivFunc)							(GLuint sampler, GLenum pname, const GLuint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glSamplerParameterfFunc)								(GLuint sampler, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glSamplerParameterfvFunc)							(GLuint sampler, GLenum pname, const GLfloat *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glSamplerParameteriFunc)								(GLuint sampler, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glSamplerParameterivFunc)							(GLuint sampler, GLenum pname, const GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glScissorFunc)										(GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glScissorArrayvFunc)									(GLuint first, GLsizei count, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glScissorIndexedFunc)								(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glScissorIndexedvFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glShaderBinaryFunc)									(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
typedef GLW_APICALL void			(GLW_APIENTRY* glShaderSourceFunc)									(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
typedef GLW_APICALL void			(GLW_APIENTRY* glShaderStorageBlockBindingFunc)						(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
typedef GLW_APICALL void			(GLW_APIENTRY* glStencilFuncFunc)									(GLenum func, GLint ref, GLuint mask);
typedef GLW_APICALL void			(GLW_APIENTRY* glStencilFuncSeparateFunc)							(GLenum face, GLenum func, GLint ref, GLuint mask);
typedef GLW_APICALL void			(GLW_APIENTRY* glStencilMaskFunc)									(GLuint mask);
typedef GLW_APICALL void			(GLW_APIENTRY* glStencilMaskSeparateFunc)							(GLenum face, GLuint mask);
typedef GLW_APICALL void			(GLW_APIENTRY* glStencilOpFunc)										(GLenum fail, GLenum zfail, GLenum zpass);
typedef GLW_APICALL void			(GLW_APIENTRY* glStencilOpSeparateFunc)								(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexBufferFunc)										(GLenum target, GLenum internalformat, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexBufferRangeFunc)								(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexImage1DFunc)									(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexImage2DFunc)									(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexImage2DMultisampleFunc)							(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexImage3DFunc)									(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexImage3DMultisampleFunc)							(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexParameterIivFunc)								(GLenum target, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexParameterIuivFunc)								(GLenum target, GLenum pname, const GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexParameterfFunc)									(GLenum target, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexParameterfvFunc)								(GLenum target, GLenum pname, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexParameteriFunc)									(GLenum target, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexParameterivFunc)								(GLenum target, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexStorage1DFunc)									(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexStorage2DFunc)									(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexStorage2DMultisampleFunc)						(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexStorage3DFunc)									(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexStorage3DMultisampleFunc)						(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexSubImage1DFunc)									(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexSubImage2DFunc)									(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexSubImage3DFunc)									(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureBarrierFunc)								(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureBufferFunc)									(GLuint texture, GLenum internalformat, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureBufferRangeFunc)							(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterIivFunc)							(GLuint texture, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterIuivFunc)							(GLuint texture, GLenum pname, const GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterfFunc)								(GLuint texture, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterfvFunc)							(GLuint texture, GLenum pname, const GLfloat *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameteriFunc)								(GLuint texture, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterivFunc)							(GLuint texture, GLenum pname, const GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage1DFunc)								(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage2DFunc)								(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage2DMultisampleFunc)					(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage3DFunc)								(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage3DMultisampleFunc)					(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureSubImage1DFunc)								(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureSubImage2DFunc)								(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureSubImage3DFunc)								(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureViewFunc)									(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
typedef GLW_APICALL void			(GLW_APIENTRY* glTransformFeedbackBufferBaseFunc)					(GLuint xfb, GLuint index, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glTransformFeedbackBufferRangeFunc)					(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glTransformFeedbackVaryingsFunc)						(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1dFunc)										(GLint location, GLdouble x);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1dvFunc)									(GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1fFunc)										(GLint location, GLfloat v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1fvFunc)									(GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1iFunc)										(GLint location, GLint v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1ivFunc)									(GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1uiFunc)									(GLint location, GLuint v0);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform1uivFunc)									(GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2dFunc)										(GLint location, GLdouble x, GLdouble y);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2dvFunc)									(GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2fFunc)										(GLint location, GLfloat v0, GLfloat v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2fvFunc)									(GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2iFunc)										(GLint location, GLint v0, GLint v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2ivFunc)									(GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2uiFunc)									(GLint location, GLuint v0, GLuint v1);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform2uivFunc)									(GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3dFunc)										(GLint location, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3dvFunc)									(GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3fFunc)										(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3fvFunc)									(GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3iFunc)										(GLint location, GLint v0, GLint v1, GLint v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3ivFunc)									(GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3uiFunc)									(GLint location, GLuint v0, GLuint v1, GLuint v2);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform3uivFunc)									(GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4dFunc)										(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4dvFunc)									(GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4fFunc)										(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4fvFunc)									(GLint location, GLsizei count, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4iFunc)										(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4ivFunc)									(GLint location, GLsizei count, const GLint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4uiFunc)									(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniform4uivFunc)									(GLint location, GLsizei count, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformBlockBindingFunc)							(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix2dvFunc)								(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix2fvFunc)								(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix2x3dvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix2x3fvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix2x4dvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix2x4fvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix3dvFunc)								(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix3fvFunc)								(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix3x2dvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix3x2fvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix3x4dvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix3x4fvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix4dvFunc)								(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix4fvFunc)								(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix4x2dvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix4x2fvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix4x3dvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformMatrix4x3fvFunc)							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glUniformSubroutinesuivFunc)							(GLenum shadertype, GLsizei count, const GLuint *indices);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glUnmapBufferFunc)									(GLenum target);
typedef GLW_APICALL GLboolean		(GLW_APIENTRY* glUnmapNamedBufferFunc)								(GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glUseProgramFunc)									(GLuint program);
typedef GLW_APICALL void			(GLW_APIENTRY* glUseProgramStagesFunc)								(GLuint pipeline, GLbitfield stages, GLuint program);
typedef GLW_APICALL void			(GLW_APIENTRY* glValidateProgramFunc)								(GLuint program);
typedef GLW_APICALL void			(GLW_APIENTRY* glValidateProgramPipelineFunc)						(GLuint pipeline);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayAttribBindingFunc)						(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayAttribFormatFunc)						(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayAttribIFormatFunc)						(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayAttribLFormatFunc)						(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayBindingDivisorFunc)						(GLuint vaobj, GLuint bindingindex, GLuint divisor);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayElementBufferFunc)						(GLuint vaobj, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexBufferFunc)						(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexBuffersFunc)						(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib1dFunc)								(GLuint index, GLdouble x);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib1dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib1fFunc)								(GLuint index, GLfloat x);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib1fvFunc)								(GLuint index, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib1sFunc)								(GLuint index, GLshort x);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib1svFunc)								(GLuint index, const GLshort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib2dFunc)								(GLuint index, GLdouble x, GLdouble y);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib2dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib2fFunc)								(GLuint index, GLfloat x, GLfloat y);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib2fvFunc)								(GLuint index, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib2sFunc)								(GLuint index, GLshort x, GLshort y);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib2svFunc)								(GLuint index, const GLshort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib3dFunc)								(GLuint index, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib3dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib3fFunc)								(GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib3fvFunc)								(GLuint index, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib3sFunc)								(GLuint index, GLshort x, GLshort y, GLshort z);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib3svFunc)								(GLuint index, const GLshort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NbvFunc)								(GLuint index, const GLbyte *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NivFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NsvFunc)								(GLuint index, const GLshort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NubFunc)								(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NubvFunc)								(GLuint index, const GLubyte *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NuivFunc)								(GLuint index, const GLuint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4NusvFunc)								(GLuint index, const GLushort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4bvFunc)								(GLuint index, const GLbyte *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4dFunc)								(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4fFunc)								(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4fvFunc)								(GLuint index, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4ivFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4sFunc)								(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4svFunc)								(GLuint index, const GLshort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4ubvFunc)								(GLuint index, const GLubyte *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4uivFunc)								(GLuint index, const GLuint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttrib4usvFunc)								(GLuint index, const GLushort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribBindingFunc)							(GLuint attribindex, GLuint bindingindex);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribDivisorFunc)							(GLuint index, GLuint divisor);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribFormatFunc)							(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI1iFunc)								(GLuint index, GLint x);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI1ivFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI1uiFunc)								(GLuint index, GLuint x);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI1uivFunc)								(GLuint index, const GLuint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI2iFunc)								(GLuint index, GLint x, GLint y);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI2ivFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI2uiFunc)								(GLuint index, GLuint x, GLuint y);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI2uivFunc)								(GLuint index, const GLuint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI3iFunc)								(GLuint index, GLint x, GLint y, GLint z);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI3ivFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI3uiFunc)								(GLuint index, GLuint x, GLuint y, GLuint z);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI3uivFunc)								(GLuint index, const GLuint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4bvFunc)								(GLuint index, const GLbyte *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4iFunc)								(GLuint index, GLint x, GLint y, GLint z, GLint w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4ivFunc)								(GLuint index, const GLint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4svFunc)								(GLuint index, const GLshort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4ubvFunc)								(GLuint index, const GLubyte *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4uiFunc)								(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4uivFunc)								(GLuint index, const GLuint *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribI4usvFunc)								(GLuint index, const GLushort *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribIFormatFunc)							(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribIPointerFunc)							(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL1dFunc)								(GLuint index, GLdouble x);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL1dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL2dFunc)								(GLuint index, GLdouble x, GLdouble y);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL2dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL3dFunc)								(GLuint index, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL3dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL4dFunc)								(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribL4dvFunc)								(GLuint index, const GLdouble *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribLFormatFunc)							(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribLPointerFunc)							(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP1uiFunc)								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP1uivFunc)								(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP2uiFunc)								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP2uivFunc)								(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP3uiFunc)								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP3uivFunc)								(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP4uiFunc)								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribP4uivFunc)								(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexAttribPointerFunc)							(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexBindingDivisorFunc)							(GLuint bindingindex, GLuint divisor);
typedef GLW_APICALL void			(GLW_APIENTRY* glViewportFunc)										(GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glViewportArrayvFunc)								(GLuint first, GLsizei count, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glViewportIndexedfFunc)								(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
typedef GLW_APICALL void			(GLW_APIENTRY* glViewportIndexedfvFunc)								(GLuint index, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glWaitSyncFunc)										(GLsync sync, GLbitfield flags, GLuint64 timeout);
