/* 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 9d534f9312e56c72df763207e449c6719576fd54.
 */
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* glBindMultiTextureEXTFunc)								(GLenum texunit, GLenum target, GLuint texture);
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* glBufferPageCommitmentARBFunc)							(GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);
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 GLenum			(GLW_APIENTRY* glCheckNamedFramebufferStatusEXTFunc)					(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* glClearNamedBufferDataEXTFunc)							(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* glClearNamedBufferSubDataEXTFunc)						(GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glClearNamedFramebufferfiFunc)							(GLuint framebuffer, GLenum buffer, GLint drawbuffer, 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 void			(GLW_APIENTRY* glClientAttribDefaultEXTFunc)							(GLbitfield mask);
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* glCompressedMultiTexImage1DEXTFunc)						(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedMultiTexImage2DEXTFunc)						(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedMultiTexImage3DEXTFunc)						(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedMultiTexSubImage1DEXTFunc)					(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedMultiTexSubImage2DEXTFunc)					(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedMultiTexSubImage3DEXTFunc)					(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
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* glCompressedTexImage3DOESFunc)							(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* glCompressedTexSubImage3DOESFunc)						(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* glCompressedTextureImage1DEXTFunc)						(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTextureImage2DEXTFunc)						(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);
typedef GLW_APICALL void			(GLW_APIENTRY* glCompressedTextureImage3DEXTFunc)						(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);
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* glCompressedTextureSubImage1DEXTFunc)					(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);
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* glCompressedTextureSubImage2DEXTFunc)					(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);
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* glCompressedTextureSubImage3DEXTFunc)					(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);
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* glCopyMultiTexImage1DEXTFunc)							(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyMultiTexImage2DEXTFunc)							(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyMultiTexSubImage1DEXTFunc)							(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyMultiTexSubImage2DEXTFunc)							(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyMultiTexSubImage3DEXTFunc)							(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
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* glCopyTexSubImage3DOESFunc)								(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTextureImage1DEXTFunc)								(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef GLW_APICALL void			(GLW_APIENTRY* glCopyTextureImage2DEXTFunc)								(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
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* glCopyTextureSubImage1DEXTFunc)							(GLuint texture, GLenum target, 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* glCopyTextureSubImage2DEXTFunc)							(GLuint texture, GLenum target, 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* glCopyTextureSubImage3DEXTFunc)							(GLuint texture, GLenum target, 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* glDepthBoundsEXTFunc)									(GLclampd zmin, GLclampd zmax);
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 n, GLdouble f);
typedef GLW_APICALL void			(GLW_APIENTRY* glDepthRangeArrayfvOESFunc)								(GLuint first, GLsizei count, const GLfloat *v);
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* glDepthRangeIndexedfOESFunc)								(GLuint index, GLfloat n, GLfloat 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* glDisableClientStateIndexedEXTFunc)						(GLenum array, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableClientStateiEXTFunc)							(GLenum array, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableVertexArrayAttribFunc)							(GLuint vaobj, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableVertexArrayAttribEXTFunc)						(GLuint vaobj, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glDisableVertexArrayEXTFunc)								(GLuint vaobj, GLenum array);
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* glEnableClientStateIndexedEXTFunc)						(GLenum array, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableClientStateiEXTFunc)								(GLenum array, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableVertexArrayAttribFunc)							(GLuint vaobj, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableVertexArrayAttribEXTFunc)						(GLuint vaobj, GLuint index);
typedef GLW_APICALL void			(GLW_APIENTRY* glEnableVertexArrayEXTFunc)								(GLuint vaobj, GLenum array);
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* glFlushMappedNamedBufferRangeEXTFunc)					(GLuint buffer, GLintptr offset, GLsizeiptr length);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferDrawBufferEXTFunc)							(GLuint framebuffer, GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferDrawBuffersEXTFunc)							(GLuint framebuffer, GLsizei n, const GLenum *bufs);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferParameteriFunc)								(GLenum target, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferReadBufferEXTFunc)							(GLuint framebuffer, GLenum mode);
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* glFramebufferTexture3DOESFunc)							(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* glFramebufferTextureMultisampleMultiviewOVRFunc)			(GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);
typedef GLW_APICALL void			(GLW_APIENTRY* glFramebufferTextureMultiviewOVRFunc)					(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);
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* glGenerateMultiTexMipmapEXTFunc)							(GLenum texunit, GLenum target);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenerateTextureMipmapFunc)								(GLuint texture);
typedef GLW_APICALL void			(GLW_APIENTRY* glGenerateTextureMipmapEXTFunc)							(GLuint texture, GLenum target);
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* glGetCompressedMultiTexImageEXTFunc)						(GLenum texunit, GLenum target, GLint lod, void *img);
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* glGetCompressedTextureImageEXTFunc)						(GLuint texture, GLenum target, GLint lod, void *img);
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 void			(GLW_APIENTRY* glGetFramebufferParameterivEXTFunc)						(GLuint framebuffer, 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* glGetInternalformatSampleivNVFunc)						(GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei bufSize, GLint *params);
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* glGetMultiTexEnvfvEXTFunc)								(GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexEnvivEXTFunc)								(GLenum texunit, GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexGendvEXTFunc)								(GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexGenfvEXTFunc)								(GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexGenivEXTFunc)								(GLenum texunit, GLenum coord, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexImageEXTFunc)								(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexLevelParameterfvEXTFunc)					(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexLevelParameterivEXTFunc)					(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexParameterIivEXTFunc)						(GLenum texunit, GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexParameterIuivEXTFunc)						(GLenum texunit, GLenum target, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexParameterfvEXTFunc)							(GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetMultiTexParameterivEXTFunc)							(GLenum texunit, GLenum target, GLenum pname, 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* glGetNamedBufferParameterivEXTFunc)						(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* glGetNamedBufferPointervEXTFunc)							(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* glGetNamedBufferSubDataEXTFunc)							(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* glGetNamedFramebufferAttachmentParameterivEXTFunc)		(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* glGetNamedFramebufferParameterivEXTFunc)					(GLuint framebuffer, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedProgramLocalParameterIivEXTFunc)				(GLuint program, GLenum target, GLuint index, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedProgramLocalParameterIuivEXTFunc)				(GLuint program, GLenum target, GLuint index, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedProgramLocalParameterdvEXTFunc)				(GLuint program, GLenum target, GLuint index, GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedProgramLocalParameterfvEXTFunc)				(GLuint program, GLenum target, GLuint index, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedProgramStringEXTFunc)							(GLuint program, GLenum target, GLenum pname, void *string);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedProgramivEXTFunc)								(GLuint program, GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedRenderbufferParameterivFunc)					(GLuint renderbuffer, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetNamedRenderbufferParameterivEXTFunc)				(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* glGetPointerIndexedvEXTFunc)								(GLenum target, GLuint index, void **data);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetPointeri_vEXTFunc)									(GLenum pname, GLuint index, void **params);
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* glGetTextureImageEXTFunc)								(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureLevelParameterfvFunc)						(GLuint texture, GLint level, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureLevelParameterfvEXTFunc)						(GLuint texture, GLenum target, 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* glGetTextureLevelParameterivEXTFunc)						(GLuint texture, GLenum target, 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* glGetTextureParameterIivEXTFunc)							(GLuint texture, GLenum target, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterIuivFunc)							(GLuint texture, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterIuivEXTFunc)						(GLuint texture, GLenum target, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterfvFunc)								(GLuint texture, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterfvEXTFunc)							(GLuint texture, GLenum target, GLenum pname, GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterivFunc)								(GLuint texture, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetTextureParameterivEXTFunc)							(GLuint texture, GLenum target, 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* glGetVertexArrayIntegeri_vEXTFunc)						(GLuint vaobj, GLuint index, GLenum pname, GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexArrayIntegervEXTFunc)							(GLuint vaobj, GLenum pname, GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexArrayPointeri_vEXTFunc)						(GLuint vaobj, GLuint index, GLenum pname, void **param);
typedef GLW_APICALL void			(GLW_APIENTRY* glGetVertexArrayPointervEXTFunc)							(GLuint vaobj, GLenum pname, void **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* glMapNamedBufferEXTFunc)									(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* glMapNamedBufferRangeEXTFunc)							(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixFrustumEXTFunc)									(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixLoadIdentityEXTFunc)								(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixLoadTransposedEXTFunc)							(GLenum mode, const GLdouble *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixLoadTransposefEXTFunc)							(GLenum mode, const GLfloat *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixLoaddEXTFunc)									(GLenum mode, const GLdouble *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixLoadfEXTFunc)									(GLenum mode, const GLfloat *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixMultTransposedEXTFunc)							(GLenum mode, const GLdouble *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixMultTransposefEXTFunc)							(GLenum mode, const GLfloat *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixMultdEXTFunc)									(GLenum mode, const GLdouble *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixMultfEXTFunc)									(GLenum mode, const GLfloat *m);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixOrthoEXTFunc)									(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixPopEXTFunc)										(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixPushEXTFunc)										(GLenum mode);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixRotatedEXTFunc)									(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixRotatefEXTFunc)									(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixScaledEXTFunc)									(GLenum mode, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixScalefEXTFunc)									(GLenum mode, GLfloat x, GLfloat y, GLfloat z);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixTranslatedEXTFunc)								(GLenum mode, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glMatrixTranslatefEXTFunc)								(GLenum mode, GLfloat x, GLfloat y, GLfloat z);
typedef GLW_APICALL void			(GLW_APIENTRY* glMaxShaderCompilerThreadsKHRFunc)						(GLuint count);
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* glMultiDrawArraysIndirectCountFunc)						(GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, 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* glMultiDrawElementsIndirectCountFunc)					(GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexBufferEXTFunc)									(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexCoordPointerEXTFunc)							(GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexEnvfEXTFunc)									(GLenum texunit, GLenum target, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexEnvfvEXTFunc)									(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexEnviEXTFunc)									(GLenum texunit, GLenum target, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexEnvivEXTFunc)									(GLenum texunit, GLenum target, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexGendEXTFunc)									(GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexGendvEXTFunc)									(GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexGenfEXTFunc)									(GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexGenfvEXTFunc)									(GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexGeniEXTFunc)									(GLenum texunit, GLenum coord, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexGenivEXTFunc)									(GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexImage1DEXTFunc)								(GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexImage2DEXTFunc)								(GLenum texunit, 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* glMultiTexImage3DEXTFunc)								(GLenum texunit, 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* glMultiTexParameterIivEXTFunc)							(GLenum texunit, GLenum target, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexParameterIuivEXTFunc)							(GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexParameterfEXTFunc)								(GLenum texunit, GLenum target, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexParameterfvEXTFunc)							(GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexParameteriEXTFunc)								(GLenum texunit, GLenum target, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexParameterivEXTFunc)							(GLenum texunit, GLenum target, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexRenderbufferEXTFunc)							(GLenum texunit, GLenum target, GLuint renderbuffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexSubImage1DEXTFunc)								(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glMultiTexSubImage2DEXTFunc)								(GLenum texunit, 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* glMultiTexSubImage3DEXTFunc)								(GLenum texunit, 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* glMulticastBarrierNVFunc)								(void);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastBlitFramebufferNVFunc)						(GLuint srcGpu, GLuint dstGpu, 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* glMulticastBufferSubDataNVFunc)							(GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastCopyBufferSubDataNVFunc)						(GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastCopyImageSubDataNVFunc)						(GLuint srcGpu, GLbitfield dstGpuMask, 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* glMulticastFramebufferSampleLocationsfvNVFunc)			(GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastGetQueryObjecti64vNVFunc)						(GLuint gpu, GLuint id, GLenum pname, GLint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastGetQueryObjectivNVFunc)						(GLuint gpu, GLuint id, GLenum pname, GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastGetQueryObjectui64vNVFunc)					(GLuint gpu, GLuint id, GLenum pname, GLuint64 *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastGetQueryObjectuivNVFunc)						(GLuint gpu, GLuint id, GLenum pname, GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glMulticastWaitSyncNVFunc)								(GLuint signalGpu, GLbitfield waitGpuMask);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferDataFunc)									(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferDataEXTFunc)								(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferPageCommitmentARBFunc)						(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedBufferPageCommitmentEXTFunc)						(GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);
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* glNamedCopyBufferSubDataEXTFunc)							(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
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* glNamedFramebufferParameteriEXTFunc)						(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* glNamedFramebufferRenderbufferEXTFunc)					(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* glNamedFramebufferTexture1DEXTFunc)						(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTexture2DEXTFunc)						(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTexture3DEXTFunc)						(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTextureEXTFunc)						(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTextureFaceEXTFunc)					(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTextureLayerFunc)						(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedFramebufferTextureLayerEXTFunc)					(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameter4dEXTFunc)					(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameter4dvEXTFunc)					(GLuint program, GLenum target, GLuint index, const GLdouble *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameter4fEXTFunc)					(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameter4fvEXTFunc)					(GLuint program, GLenum target, GLuint index, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameterI4iEXTFunc)					(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameterI4ivEXTFunc)					(GLuint program, GLenum target, GLuint index, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameterI4uiEXTFunc)					(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameterI4uivEXTFunc)				(GLuint program, GLenum target, GLuint index, const GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParameters4fvEXTFunc)					(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParametersI4ivEXTFunc)				(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramLocalParametersI4uivEXTFunc)				(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedProgramStringEXTFunc)								(GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedRenderbufferStorageFunc)							(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedRenderbufferStorageEXTFunc)						(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* glNamedRenderbufferStorageMultisampleCoverageEXTFunc)	(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
typedef GLW_APICALL void			(GLW_APIENTRY* glNamedRenderbufferStorageMultisampleEXTFunc)			(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* glPolygonOffsetClampFunc)								(GLfloat factor, GLfloat units, GLfloat clamp);
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* glProgramUniform1dEXTFunc)								(GLuint program, GLint location, GLdouble x);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1dvFunc)									(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform1dvEXTFunc)								(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* glProgramUniform2dEXTFunc)								(GLuint program, GLint location, GLdouble x, GLdouble y);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2dvFunc)									(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform2dvEXTFunc)								(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* glProgramUniform3dEXTFunc)								(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3dvFunc)									(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform3dvEXTFunc)								(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* glProgramUniform4dEXTFunc)								(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4dvFunc)									(GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef GLW_APICALL void			(GLW_APIENTRY* glProgramUniform4dvEXTFunc)								(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* glProgramUniformMatrix2dvEXTFunc)						(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* glProgramUniformMatrix2x3dvEXTFunc)						(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* glProgramUniformMatrix2x4dvEXTFunc)						(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* glProgramUniformMatrix3dvEXTFunc)						(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* glProgramUniformMatrix3x2dvEXTFunc)						(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* glProgramUniformMatrix3x4dvEXTFunc)						(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* glProgramUniformMatrix4dvEXTFunc)						(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* glProgramUniformMatrix4x2dvEXTFunc)						(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* glProgramUniformMatrix4x3dvEXTFunc)						(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* glPushClientAttribDefaultEXTFunc)						(GLbitfield mask);
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* glRenderGpuMaskNVFunc)									(GLbitfield mask);
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* glSpecializeShaderFunc)									(GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);
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* glTexImage3DOESFunc)										(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTexPageCommitmentARBFunc)								(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
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* glTexSubImage3DOESFunc)									(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* glTextureBufferEXTFunc)									(GLuint texture, GLenum target, 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* glTextureBufferRangeEXTFunc)								(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureImage1DEXTFunc)									(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureImage2DEXTFunc)									(GLuint texture, 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* glTextureImage3DEXTFunc)									(GLuint texture, 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* glTexturePageCommitmentEXTFunc)							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterIivFunc)								(GLuint texture, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterIivEXTFunc)							(GLuint texture, GLenum target, 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* glTextureParameterIuivEXTFunc)							(GLuint texture, GLenum target, GLenum pname, const GLuint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterfFunc)									(GLuint texture, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterfEXTFunc)								(GLuint texture, GLenum target, GLenum pname, GLfloat param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterfvFunc)								(GLuint texture, GLenum pname, const GLfloat *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterfvEXTFunc)								(GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameteriFunc)									(GLuint texture, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameteriEXTFunc)								(GLuint texture, GLenum target, GLenum pname, GLint param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterivFunc)								(GLuint texture, GLenum pname, const GLint *param);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureParameterivEXTFunc)								(GLuint texture, GLenum target, GLenum pname, const GLint *params);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureRenderbufferEXTFunc)							(GLuint texture, GLenum target, GLuint renderbuffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage1DFunc)									(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
typedef GLW_APICALL void			(GLW_APIENTRY* glTextureStorage1DEXTFunc)								(GLuint texture, GLenum target, 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* glTextureStorage2DEXTFunc)								(GLuint texture, GLenum target, 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* glTextureStorage2DMultisampleEXTFunc)					(GLuint texture, GLenum target, 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* glTextureStorage3DEXTFunc)								(GLuint texture, GLenum target, 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* glTextureStorage3DMultisampleEXTFunc)					(GLuint texture, GLenum target, 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* glTextureSubImage1DEXTFunc)								(GLuint texture, GLenum target, 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* glTextureSubImage2DEXTFunc)								(GLuint texture, 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* 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* glTextureSubImage3DEXTFunc)								(GLuint texture, 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* 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 GLboolean		(GLW_APIENTRY* glUnmapNamedBufferEXTFunc)								(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* glVertexArrayBindVertexBufferEXTFunc)					(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayBindingDivisorFunc)							(GLuint vaobj, GLuint bindingindex, GLuint divisor);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayColorOffsetEXTFunc)							(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayEdgeFlagOffsetEXTFunc)						(GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayElementBufferFunc)							(GLuint vaobj, GLuint buffer);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayFogCoordOffsetEXTFunc)						(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayIndexOffsetEXTFunc)							(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayMultiTexCoordOffsetEXTFunc)					(GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayNormalOffsetEXTFunc)						(GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArraySecondaryColorOffsetEXTFunc)				(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayTexCoordOffsetEXTFunc)						(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribBindingEXTFunc)					(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribDivisorEXTFunc)					(GLuint vaobj, GLuint index, GLuint divisor);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribFormatEXTFunc)					(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribIFormatEXTFunc)					(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribIOffsetEXTFunc)					(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribLFormatEXTFunc)					(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribLOffsetEXTFunc)					(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexAttribOffsetEXTFunc)					(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);
typedef GLW_APICALL void			(GLW_APIENTRY* glVertexArrayVertexBindingDivisorEXTFunc)				(GLuint vaobj, GLuint bindingindex, GLuint divisor);
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* glVertexArrayVertexOffsetEXTFunc)						(GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);
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);
