/* 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* glFramebufferTexture2DMultisampleEXTFunc)				(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
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* glRenderbufferStorageMultisampleEXTFunc)					(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);
