/* WARNING: This is auto-generated file. Do not modify, since changes will
 * be lost! Modify the generating script instead.
 *
 * Generated from Khronos GL API description (gl.xml) revision 32093.
 */
#define			glActiveShaderProgram							glwActiveShaderProgram
#define			glActiveTexture									glwActiveTexture
#define			glAttachShader									glwAttachShader
#define			glBeginConditionalRender						glwBeginConditionalRender
#define			glBeginQuery									glwBeginQuery
#define			glBeginQueryIndexed								glwBeginQueryIndexed
#define			glBeginTransformFeedback						glwBeginTransformFeedback
#define			glBindAttribLocation							glwBindAttribLocation
#define			glBindBuffer									glwBindBuffer
#define			glBindBufferBase								glwBindBufferBase
#define			glBindBufferRange								glwBindBufferRange
#define			glBindBuffersBase								glwBindBuffersBase
#define			glBindBuffersRange								glwBindBuffersRange
#define			glBindFragDataLocation							glwBindFragDataLocation
#define			glBindFragDataLocationIndexed					glwBindFragDataLocationIndexed
#define			glBindFramebuffer								glwBindFramebuffer
#define			glBindImageTexture								glwBindImageTexture
#define			glBindImageTextures								glwBindImageTextures
#define			glBindProgramPipeline							glwBindProgramPipeline
#define			glBindRenderbuffer								glwBindRenderbuffer
#define			glBindSampler									glwBindSampler
#define			glBindSamplers									glwBindSamplers
#define			glBindTexture									glwBindTexture
#define			glBindTextureUnit								glwBindTextureUnit
#define			glBindTextures									glwBindTextures
#define			glBindTransformFeedback							glwBindTransformFeedback
#define			glBindVertexArray								glwBindVertexArray
#define			glBindVertexBuffer								glwBindVertexBuffer
#define			glBindVertexBuffers								glwBindVertexBuffers
#define			glBlendBarrier									glwBlendBarrier
#define			glBlendColor									glwBlendColor
#define			glBlendEquation									glwBlendEquation
#define			glBlendEquationSeparate							glwBlendEquationSeparate
#define			glBlendEquationSeparatei						glwBlendEquationSeparatei
#define			glBlendEquationi								glwBlendEquationi
#define			glBlendFunc										glwBlendFunc
#define			glBlendFuncSeparate								glwBlendFuncSeparate
#define			glBlendFuncSeparatei							glwBlendFuncSeparatei
#define			glBlendFunci									glwBlendFunci
#define			glBlitFramebuffer								glwBlitFramebuffer
#define			glBlitNamedFramebuffer							glwBlitNamedFramebuffer
#define			glBufferData									glwBufferData
#define			glBufferStorage									glwBufferStorage
#define			glBufferSubData									glwBufferSubData
#define			glCheckFramebufferStatus						glwCheckFramebufferStatus
#define			glCheckNamedFramebufferStatus					glwCheckNamedFramebufferStatus
#define			glClampColor									glwClampColor
#define			glClear											glwClear
#define			glClearBufferData								glwClearBufferData
#define			glClearBufferSubData							glwClearBufferSubData
#define			glClearBufferfi									glwClearBufferfi
#define			glClearBufferfv									glwClearBufferfv
#define			glClearBufferiv									glwClearBufferiv
#define			glClearBufferuiv								glwClearBufferuiv
#define			glClearColor									glwClearColor
#define			glClearDepth									glwClearDepth
#define			glClearDepthf									glwClearDepthf
#define			glClearNamedBufferData							glwClearNamedBufferData
#define			glClearNamedBufferSubData						glwClearNamedBufferSubData
#define			glClearNamedFramebufferfi						glwClearNamedFramebufferfi
#define			glClearNamedFramebufferfv						glwClearNamedFramebufferfv
#define			glClearNamedFramebufferiv						glwClearNamedFramebufferiv
#define			glClearNamedFramebufferuiv						glwClearNamedFramebufferuiv
#define			glClearStencil									glwClearStencil
#define			glClearTexImage									glwClearTexImage
#define			glClearTexSubImage								glwClearTexSubImage
#define			glClientWaitSync								glwClientWaitSync
#define			glClipControl									glwClipControl
#define			glColorMask										glwColorMask
#define			glColorMaski									glwColorMaski
#define			glCompileShader									glwCompileShader
#define			glCompressedTexImage1D							glwCompressedTexImage1D
#define			glCompressedTexImage2D							glwCompressedTexImage2D
#define			glCompressedTexImage3D							glwCompressedTexImage3D
#define			glCompressedTexSubImage1D						glwCompressedTexSubImage1D
#define			glCompressedTexSubImage2D						glwCompressedTexSubImage2D
#define			glCompressedTexSubImage3D						glwCompressedTexSubImage3D
#define			glCompressedTextureSubImage1D					glwCompressedTextureSubImage1D
#define			glCompressedTextureSubImage2D					glwCompressedTextureSubImage2D
#define			glCompressedTextureSubImage3D					glwCompressedTextureSubImage3D
#define			glCopyBufferSubData								glwCopyBufferSubData
#define			glCopyImageSubData								glwCopyImageSubData
#define			glCopyNamedBufferSubData						glwCopyNamedBufferSubData
#define			glCopyTexImage1D								glwCopyTexImage1D
#define			glCopyTexImage2D								glwCopyTexImage2D
#define			glCopyTexSubImage1D								glwCopyTexSubImage1D
#define			glCopyTexSubImage2D								glwCopyTexSubImage2D
#define			glCopyTexSubImage3D								glwCopyTexSubImage3D
#define			glCopyTextureSubImage1D							glwCopyTextureSubImage1D
#define			glCopyTextureSubImage2D							glwCopyTextureSubImage2D
#define			glCopyTextureSubImage3D							glwCopyTextureSubImage3D
#define			glCreateBuffers									glwCreateBuffers
#define			glCreateFramebuffers							glwCreateFramebuffers
#define			glCreateProgram									glwCreateProgram
#define			glCreateProgramPipelines						glwCreateProgramPipelines
#define			glCreateQueries									glwCreateQueries
#define			glCreateRenderbuffers							glwCreateRenderbuffers
#define			glCreateSamplers								glwCreateSamplers
#define			glCreateShader									glwCreateShader
#define			glCreateShaderProgramv							glwCreateShaderProgramv
#define			glCreateTextures								glwCreateTextures
#define			glCreateTransformFeedbacks						glwCreateTransformFeedbacks
#define			glCreateVertexArrays							glwCreateVertexArrays
#define			glCullFace										glwCullFace
#define			glDebugMessageCallback							glwDebugMessageCallback
#define			glDebugMessageControl							glwDebugMessageControl
#define			glDebugMessageInsert							glwDebugMessageInsert
#define			glDeleteBuffers									glwDeleteBuffers
#define			glDeleteFramebuffers							glwDeleteFramebuffers
#define			glDeleteProgram									glwDeleteProgram
#define			glDeleteProgramPipelines						glwDeleteProgramPipelines
#define			glDeleteQueries									glwDeleteQueries
#define			glDeleteRenderbuffers							glwDeleteRenderbuffers
#define			glDeleteSamplers								glwDeleteSamplers
#define			glDeleteShader									glwDeleteShader
#define			glDeleteSync									glwDeleteSync
#define			glDeleteTextures								glwDeleteTextures
#define			glDeleteTransformFeedbacks						glwDeleteTransformFeedbacks
#define			glDeleteVertexArrays							glwDeleteVertexArrays
#define			glDepthFunc										glwDepthFunc
#define			glDepthMask										glwDepthMask
#define			glDepthRange									glwDepthRange
#define			glDepthRangeArrayv								glwDepthRangeArrayv
#define			glDepthRangeIndexed								glwDepthRangeIndexed
#define			glDepthRangef									glwDepthRangef
#define			glDetachShader									glwDetachShader
#define			glDisable										glwDisable
#define			glDisableVertexArrayAttrib						glwDisableVertexArrayAttrib
#define			glDisableVertexAttribArray						glwDisableVertexAttribArray
#define			glDisablei										glwDisablei
#define			glDispatchCompute								glwDispatchCompute
#define			glDispatchComputeIndirect						glwDispatchComputeIndirect
#define			glDrawArrays									glwDrawArrays
#define			glDrawArraysIndirect							glwDrawArraysIndirect
#define			glDrawArraysInstanced							glwDrawArraysInstanced
#define			glDrawArraysInstancedBaseInstance				glwDrawArraysInstancedBaseInstance
#define			glDrawBuffer									glwDrawBuffer
#define			glDrawBuffers									glwDrawBuffers
#define			glDrawElements									glwDrawElements
#define			glDrawElementsBaseVertex						glwDrawElementsBaseVertex
#define			glDrawElementsIndirect							glwDrawElementsIndirect
#define			glDrawElementsInstanced							glwDrawElementsInstanced
#define			glDrawElementsInstancedBaseInstance				glwDrawElementsInstancedBaseInstance
#define			glDrawElementsInstancedBaseVertex				glwDrawElementsInstancedBaseVertex
#define			glDrawElementsInstancedBaseVertexBaseInstance	glwDrawElementsInstancedBaseVertexBaseInstance
#define			glDrawRangeElements								glwDrawRangeElements
#define			glDrawRangeElementsBaseVertex					glwDrawRangeElementsBaseVertex
#define			glDrawTransformFeedback							glwDrawTransformFeedback
#define			glDrawTransformFeedbackInstanced				glwDrawTransformFeedbackInstanced
#define			glDrawTransformFeedbackStream					glwDrawTransformFeedbackStream
#define			glDrawTransformFeedbackStreamInstanced			glwDrawTransformFeedbackStreamInstanced
#define			glEGLImageTargetRenderbufferStorageOES			glwEGLImageTargetRenderbufferStorageOES
#define			glEGLImageTargetTexture2DOES					glwEGLImageTargetTexture2DOES
#define			glEnable										glwEnable
#define			glEnableVertexArrayAttrib						glwEnableVertexArrayAttrib
#define			glEnableVertexAttribArray						glwEnableVertexAttribArray
#define			glEnablei										glwEnablei
#define			glEndConditionalRender							glwEndConditionalRender
#define			glEndQuery										glwEndQuery
#define			glEndQueryIndexed								glwEndQueryIndexed
#define			glEndTransformFeedback							glwEndTransformFeedback
#define			glFenceSync										glwFenceSync
#define			glFinish										glwFinish
#define			glFlush											glwFlush
#define			glFlushMappedBufferRange						glwFlushMappedBufferRange
#define			glFlushMappedNamedBufferRange					glwFlushMappedNamedBufferRange
#define			glFramebufferParameteri							glwFramebufferParameteri
#define			glFramebufferRenderbuffer						glwFramebufferRenderbuffer
#define			glFramebufferTexture							glwFramebufferTexture
#define			glFramebufferTexture1D							glwFramebufferTexture1D
#define			glFramebufferTexture2D							glwFramebufferTexture2D
#define			glFramebufferTexture3D							glwFramebufferTexture3D
#define			glFramebufferTextureLayer						glwFramebufferTextureLayer
#define			glFrontFace										glwFrontFace
#define			glGenBuffers									glwGenBuffers
#define			glGenFramebuffers								glwGenFramebuffers
#define			glGenProgramPipelines							glwGenProgramPipelines
#define			glGenQueries									glwGenQueries
#define			glGenRenderbuffers								glwGenRenderbuffers
#define			glGenSamplers									glwGenSamplers
#define			glGenTextures									glwGenTextures
#define			glGenTransformFeedbacks							glwGenTransformFeedbacks
#define			glGenVertexArrays								glwGenVertexArrays
#define			glGenerateMipmap								glwGenerateMipmap
#define			glGenerateTextureMipmap							glwGenerateTextureMipmap
#define			glGetActiveAtomicCounterBufferiv				glwGetActiveAtomicCounterBufferiv
#define			glGetActiveAttrib								glwGetActiveAttrib
#define			glGetActiveSubroutineName						glwGetActiveSubroutineName
#define			glGetActiveSubroutineUniformName				glwGetActiveSubroutineUniformName
#define			glGetActiveSubroutineUniformiv					glwGetActiveSubroutineUniformiv
#define			glGetActiveUniform								glwGetActiveUniform
#define			glGetActiveUniformBlockName						glwGetActiveUniformBlockName
#define			glGetActiveUniformBlockiv						glwGetActiveUniformBlockiv
#define			glGetActiveUniformName							glwGetActiveUniformName
#define			glGetActiveUniformsiv							glwGetActiveUniformsiv
#define			glGetAttachedShaders							glwGetAttachedShaders
#define			glGetAttribLocation								glwGetAttribLocation
#define			glGetBooleani_v									glwGetBooleani_v
#define			glGetBooleanv									glwGetBooleanv
#define			glGetBufferParameteri64v						glwGetBufferParameteri64v
#define			glGetBufferParameteriv							glwGetBufferParameteriv
#define			glGetBufferPointerv								glwGetBufferPointerv
#define			glGetBufferSubData								glwGetBufferSubData
#define			glGetCompressedTexImage							glwGetCompressedTexImage
#define			glGetCompressedTextureImage						glwGetCompressedTextureImage
#define			glGetCompressedTextureSubImage					glwGetCompressedTextureSubImage
#define			glGetDebugMessageLog							glwGetDebugMessageLog
#define			glGetDoublei_v									glwGetDoublei_v
#define			glGetDoublev									glwGetDoublev
#define			glGetError										glwGetError
#define			glGetFloati_v									glwGetFloati_v
#define			glGetFloatv										glwGetFloatv
#define			glGetFragDataIndex								glwGetFragDataIndex
#define			glGetFragDataLocation							glwGetFragDataLocation
#define			glGetFramebufferAttachmentParameteriv			glwGetFramebufferAttachmentParameteriv
#define			glGetFramebufferParameteriv						glwGetFramebufferParameteriv
#define			glGetGraphicsResetStatus						glwGetGraphicsResetStatus
#define			glGetInteger64i_v								glwGetInteger64i_v
#define			glGetInteger64v									glwGetInteger64v
#define			glGetIntegeri_v									glwGetIntegeri_v
#define			glGetIntegerv									glwGetIntegerv
#define			glGetInternalformati64v							glwGetInternalformati64v
#define			glGetInternalformativ							glwGetInternalformativ
#define			glGetMultisamplefv								glwGetMultisamplefv
#define			glGetNamedBufferParameteri64v					glwGetNamedBufferParameteri64v
#define			glGetNamedBufferParameteriv						glwGetNamedBufferParameteriv
#define			glGetNamedBufferPointerv						glwGetNamedBufferPointerv
#define			glGetNamedBufferSubData							glwGetNamedBufferSubData
#define			glGetNamedFramebufferAttachmentParameteriv		glwGetNamedFramebufferAttachmentParameteriv
#define			glGetNamedFramebufferParameteriv				glwGetNamedFramebufferParameteriv
#define			glGetNamedRenderbufferParameteriv				glwGetNamedRenderbufferParameteriv
#define			glGetObjectLabel								glwGetObjectLabel
#define			glGetObjectPtrLabel								glwGetObjectPtrLabel
#define			glGetPointerv									glwGetPointerv
#define			glGetProgramBinary								glwGetProgramBinary
#define			glGetProgramInfoLog								glwGetProgramInfoLog
#define			glGetProgramInterfaceiv							glwGetProgramInterfaceiv
#define			glGetProgramPipelineInfoLog						glwGetProgramPipelineInfoLog
#define			glGetProgramPipelineiv							glwGetProgramPipelineiv
#define			glGetProgramResourceIndex						glwGetProgramResourceIndex
#define			glGetProgramResourceLocation					glwGetProgramResourceLocation
#define			glGetProgramResourceLocationIndex				glwGetProgramResourceLocationIndex
#define			glGetProgramResourceName						glwGetProgramResourceName
#define			glGetProgramResourceiv							glwGetProgramResourceiv
#define			glGetProgramStageiv								glwGetProgramStageiv
#define			glGetProgramiv									glwGetProgramiv
#define			glGetQueryBufferObjecti64v						glwGetQueryBufferObjecti64v
#define			glGetQueryBufferObjectiv						glwGetQueryBufferObjectiv
#define			glGetQueryBufferObjectui64v						glwGetQueryBufferObjectui64v
#define			glGetQueryBufferObjectuiv						glwGetQueryBufferObjectuiv
#define			glGetQueryIndexediv								glwGetQueryIndexediv
#define			glGetQueryObjecti64v							glwGetQueryObjecti64v
#define			glGetQueryObjectiv								glwGetQueryObjectiv
#define			glGetQueryObjectui64v							glwGetQueryObjectui64v
#define			glGetQueryObjectuiv								glwGetQueryObjectuiv
#define			glGetQueryiv									glwGetQueryiv
#define			glGetRenderbufferParameteriv					glwGetRenderbufferParameteriv
#define			glGetSamplerParameterIiv						glwGetSamplerParameterIiv
#define			glGetSamplerParameterIuiv						glwGetSamplerParameterIuiv
#define			glGetSamplerParameterfv							glwGetSamplerParameterfv
#define			glGetSamplerParameteriv							glwGetSamplerParameteriv
#define			glGetShaderInfoLog								glwGetShaderInfoLog
#define			glGetShaderPrecisionFormat						glwGetShaderPrecisionFormat
#define			glGetShaderSource								glwGetShaderSource
#define			glGetShaderiv									glwGetShaderiv
#define			glGetString										glwGetString
#define			glGetStringi									glwGetStringi
#define			glGetSubroutineIndex							glwGetSubroutineIndex
#define			glGetSubroutineUniformLocation					glwGetSubroutineUniformLocation
#define			glGetSynciv										glwGetSynciv
#define			glGetTexImage									glwGetTexImage
#define			glGetTexLevelParameterfv						glwGetTexLevelParameterfv
#define			glGetTexLevelParameteriv						glwGetTexLevelParameteriv
#define			glGetTexParameterIiv							glwGetTexParameterIiv
#define			glGetTexParameterIuiv							glwGetTexParameterIuiv
#define			glGetTexParameterfv								glwGetTexParameterfv
#define			glGetTexParameteriv								glwGetTexParameteriv
#define			glGetTextureImage								glwGetTextureImage
#define			glGetTextureLevelParameterfv					glwGetTextureLevelParameterfv
#define			glGetTextureLevelParameteriv					glwGetTextureLevelParameteriv
#define			glGetTextureParameterIiv						glwGetTextureParameterIiv
#define			glGetTextureParameterIuiv						glwGetTextureParameterIuiv
#define			glGetTextureParameterfv							glwGetTextureParameterfv
#define			glGetTextureParameteriv							glwGetTextureParameteriv
#define			glGetTextureSubImage							glwGetTextureSubImage
#define			glGetTransformFeedbackVarying					glwGetTransformFeedbackVarying
#define			glGetTransformFeedbacki64_v						glwGetTransformFeedbacki64_v
#define			glGetTransformFeedbacki_v						glwGetTransformFeedbacki_v
#define			glGetTransformFeedbackiv						glwGetTransformFeedbackiv
#define			glGetUniformBlockIndex							glwGetUniformBlockIndex
#define			glGetUniformIndices								glwGetUniformIndices
#define			glGetUniformLocation							glwGetUniformLocation
#define			glGetUniformSubroutineuiv						glwGetUniformSubroutineuiv
#define			glGetUniformdv									glwGetUniformdv
#define			glGetUniformfv									glwGetUniformfv
#define			glGetUniformiv									glwGetUniformiv
#define			glGetUniformuiv									glwGetUniformuiv
#define			glGetVertexArrayIndexed64iv						glwGetVertexArrayIndexed64iv
#define			glGetVertexArrayIndexediv						glwGetVertexArrayIndexediv
#define			glGetVertexArrayiv								glwGetVertexArrayiv
#define			glGetVertexAttribIiv							glwGetVertexAttribIiv
#define			glGetVertexAttribIuiv							glwGetVertexAttribIuiv
#define			glGetVertexAttribLdv							glwGetVertexAttribLdv
#define			glGetVertexAttribPointerv						glwGetVertexAttribPointerv
#define			glGetVertexAttribdv								glwGetVertexAttribdv
#define			glGetVertexAttribfv								glwGetVertexAttribfv
#define			glGetVertexAttribiv								glwGetVertexAttribiv
#define			glGetnCompressedTexImage						glwGetnCompressedTexImage
#define			glGetnTexImage									glwGetnTexImage
#define			glGetnUniformdv									glwGetnUniformdv
#define			glGetnUniformfv									glwGetnUniformfv
#define			glGetnUniformiv									glwGetnUniformiv
#define			glGetnUniformuiv								glwGetnUniformuiv
#define			glHint											glwHint
#define			glInsertEventMarkerEXT							glwInsertEventMarkerEXT
#define			glInvalidateBufferData							glwInvalidateBufferData
#define			glInvalidateBufferSubData						glwInvalidateBufferSubData
#define			glInvalidateFramebuffer							glwInvalidateFramebuffer
#define			glInvalidateNamedFramebufferData				glwInvalidateNamedFramebufferData
#define			glInvalidateNamedFramebufferSubData				glwInvalidateNamedFramebufferSubData
#define			glInvalidateSubFramebuffer						glwInvalidateSubFramebuffer
#define			glInvalidateTexImage							glwInvalidateTexImage
#define			glInvalidateTexSubImage							glwInvalidateTexSubImage
#define			glIsBuffer										glwIsBuffer
#define			glIsEnabled										glwIsEnabled
#define			glIsEnabledi									glwIsEnabledi
#define			glIsFramebuffer									glwIsFramebuffer
#define			glIsProgram										glwIsProgram
#define			glIsProgramPipeline								glwIsProgramPipeline
#define			glIsQuery										glwIsQuery
#define			glIsRenderbuffer								glwIsRenderbuffer
#define			glIsSampler										glwIsSampler
#define			glIsShader										glwIsShader
#define			glIsSync										glwIsSync
#define			glIsTexture										glwIsTexture
#define			glIsTransformFeedback							glwIsTransformFeedback
#define			glIsVertexArray									glwIsVertexArray
#define			glLineWidth										glwLineWidth
#define			glLinkProgram									glwLinkProgram
#define			glLogicOp										glwLogicOp
#define			glMapBuffer										glwMapBuffer
#define			glMapBufferRange								glwMapBufferRange
#define			glMapNamedBuffer								glwMapNamedBuffer
#define			glMapNamedBufferRange							glwMapNamedBufferRange
#define			glMemoryBarrier									glwMemoryBarrier
#define			glMemoryBarrierByRegion							glwMemoryBarrierByRegion
#define			glMinSampleShading								glwMinSampleShading
#define			glMultiDrawArrays								glwMultiDrawArrays
#define			glMultiDrawArraysIndirect						glwMultiDrawArraysIndirect
#define			glMultiDrawElements								glwMultiDrawElements
#define			glMultiDrawElementsBaseVertex					glwMultiDrawElementsBaseVertex
#define			glMultiDrawElementsIndirect						glwMultiDrawElementsIndirect
#define			glNamedBufferData								glwNamedBufferData
#define			glNamedBufferStorage							glwNamedBufferStorage
#define			glNamedBufferSubData							glwNamedBufferSubData
#define			glNamedFramebufferDrawBuffer					glwNamedFramebufferDrawBuffer
#define			glNamedFramebufferDrawBuffers					glwNamedFramebufferDrawBuffers
#define			glNamedFramebufferParameteri					glwNamedFramebufferParameteri
#define			glNamedFramebufferReadBuffer					glwNamedFramebufferReadBuffer
#define			glNamedFramebufferRenderbuffer					glwNamedFramebufferRenderbuffer
#define			glNamedFramebufferTexture						glwNamedFramebufferTexture
#define			glNamedFramebufferTextureLayer					glwNamedFramebufferTextureLayer
#define			glNamedRenderbufferStorage						glwNamedRenderbufferStorage
#define			glNamedRenderbufferStorageMultisample			glwNamedRenderbufferStorageMultisample
#define			glObjectLabel									glwObjectLabel
#define			glObjectPtrLabel								glwObjectPtrLabel
#define			glPatchParameterfv								glwPatchParameterfv
#define			glPatchParameteri								glwPatchParameteri
#define			glPauseTransformFeedback						glwPauseTransformFeedback
#define			glPixelStoref									glwPixelStoref
#define			glPixelStorei									glwPixelStorei
#define			glPointParameterf								glwPointParameterf
#define			glPointParameterfv								glwPointParameterfv
#define			glPointParameteri								glwPointParameteri
#define			glPointParameteriv								glwPointParameteriv
#define			glPointSize										glwPointSize
#define			glPolygonMode									glwPolygonMode
#define			glPolygonOffset									glwPolygonOffset
#define			glPopDebugGroup									glwPopDebugGroup
#define			glPopGroupMarkerEXT								glwPopGroupMarkerEXT
#define			glPrimitiveBoundingBox							glwPrimitiveBoundingBox
#define			glPrimitiveRestartIndex							glwPrimitiveRestartIndex
#define			glProgramBinary									glwProgramBinary
#define			glProgramParameteri								glwProgramParameteri
#define			glProgramUniform1d								glwProgramUniform1d
#define			glProgramUniform1dv								glwProgramUniform1dv
#define			glProgramUniform1f								glwProgramUniform1f
#define			glProgramUniform1fv								glwProgramUniform1fv
#define			glProgramUniform1i								glwProgramUniform1i
#define			glProgramUniform1iv								glwProgramUniform1iv
#define			glProgramUniform1ui								glwProgramUniform1ui
#define			glProgramUniform1uiv							glwProgramUniform1uiv
#define			glProgramUniform2d								glwProgramUniform2d
#define			glProgramUniform2dv								glwProgramUniform2dv
#define			glProgramUniform2f								glwProgramUniform2f
#define			glProgramUniform2fv								glwProgramUniform2fv
#define			glProgramUniform2i								glwProgramUniform2i
#define			glProgramUniform2iv								glwProgramUniform2iv
#define			glProgramUniform2ui								glwProgramUniform2ui
#define			glProgramUniform2uiv							glwProgramUniform2uiv
#define			glProgramUniform3d								glwProgramUniform3d
#define			glProgramUniform3dv								glwProgramUniform3dv
#define			glProgramUniform3f								glwProgramUniform3f
#define			glProgramUniform3fv								glwProgramUniform3fv
#define			glProgramUniform3i								glwProgramUniform3i
#define			glProgramUniform3iv								glwProgramUniform3iv
#define			glProgramUniform3ui								glwProgramUniform3ui
#define			glProgramUniform3uiv							glwProgramUniform3uiv
#define			glProgramUniform4d								glwProgramUniform4d
#define			glProgramUniform4dv								glwProgramUniform4dv
#define			glProgramUniform4f								glwProgramUniform4f
#define			glProgramUniform4fv								glwProgramUniform4fv
#define			glProgramUniform4i								glwProgramUniform4i
#define			glProgramUniform4iv								glwProgramUniform4iv
#define			glProgramUniform4ui								glwProgramUniform4ui
#define			glProgramUniform4uiv							glwProgramUniform4uiv
#define			glProgramUniformMatrix2dv						glwProgramUniformMatrix2dv
#define			glProgramUniformMatrix2fv						glwProgramUniformMatrix2fv
#define			glProgramUniformMatrix2x3dv						glwProgramUniformMatrix2x3dv
#define			glProgramUniformMatrix2x3fv						glwProgramUniformMatrix2x3fv
#define			glProgramUniformMatrix2x4dv						glwProgramUniformMatrix2x4dv
#define			glProgramUniformMatrix2x4fv						glwProgramUniformMatrix2x4fv
#define			glProgramUniformMatrix3dv						glwProgramUniformMatrix3dv
#define			glProgramUniformMatrix3fv						glwProgramUniformMatrix3fv
#define			glProgramUniformMatrix3x2dv						glwProgramUniformMatrix3x2dv
#define			glProgramUniformMatrix3x2fv						glwProgramUniformMatrix3x2fv
#define			glProgramUniformMatrix3x4dv						glwProgramUniformMatrix3x4dv
#define			glProgramUniformMatrix3x4fv						glwProgramUniformMatrix3x4fv
#define			glProgramUniformMatrix4dv						glwProgramUniformMatrix4dv
#define			glProgramUniformMatrix4fv						glwProgramUniformMatrix4fv
#define			glProgramUniformMatrix4x2dv						glwProgramUniformMatrix4x2dv
#define			glProgramUniformMatrix4x2fv						glwProgramUniformMatrix4x2fv
#define			glProgramUniformMatrix4x3dv						glwProgramUniformMatrix4x3dv
#define			glProgramUniformMatrix4x3fv						glwProgramUniformMatrix4x3fv
#define			glProvokingVertex								glwProvokingVertex
#define			glPushDebugGroup								glwPushDebugGroup
#define			glPushGroupMarkerEXT							glwPushGroupMarkerEXT
#define			glQueryCounter									glwQueryCounter
#define			glReadBuffer									glwReadBuffer
#define			glReadPixels									glwReadPixels
#define			glReadnPixels									glwReadnPixels
#define			glReleaseShaderCompiler							glwReleaseShaderCompiler
#define			glRenderbufferStorage							glwRenderbufferStorage
#define			glRenderbufferStorageMultisample				glwRenderbufferStorageMultisample
#define			glResumeTransformFeedback						glwResumeTransformFeedback
#define			glSampleCoverage								glwSampleCoverage
#define			glSampleMaski									glwSampleMaski
#define			glSamplerParameterIiv							glwSamplerParameterIiv
#define			glSamplerParameterIuiv							glwSamplerParameterIuiv
#define			glSamplerParameterf								glwSamplerParameterf
#define			glSamplerParameterfv							glwSamplerParameterfv
#define			glSamplerParameteri								glwSamplerParameteri
#define			glSamplerParameteriv							glwSamplerParameteriv
#define			glScissor										glwScissor
#define			glScissorArrayv									glwScissorArrayv
#define			glScissorIndexed								glwScissorIndexed
#define			glScissorIndexedv								glwScissorIndexedv
#define			glShaderBinary									glwShaderBinary
#define			glShaderSource									glwShaderSource
#define			glShaderStorageBlockBinding						glwShaderStorageBlockBinding
#define			glStencilFunc									glwStencilFunc
#define			glStencilFuncSeparate							glwStencilFuncSeparate
#define			glStencilMask									glwStencilMask
#define			glStencilMaskSeparate							glwStencilMaskSeparate
#define			glStencilOp										glwStencilOp
#define			glStencilOpSeparate								glwStencilOpSeparate
#define			glTexBuffer										glwTexBuffer
#define			glTexBufferRange								glwTexBufferRange
#define			glTexImage1D									glwTexImage1D
#define			glTexImage2D									glwTexImage2D
#define			glTexImage2DMultisample							glwTexImage2DMultisample
#define			glTexImage3D									glwTexImage3D
#define			glTexImage3DMultisample							glwTexImage3DMultisample
#define			glTexParameterIiv								glwTexParameterIiv
#define			glTexParameterIuiv								glwTexParameterIuiv
#define			glTexParameterf									glwTexParameterf
#define			glTexParameterfv								glwTexParameterfv
#define			glTexParameteri									glwTexParameteri
#define			glTexParameteriv								glwTexParameteriv
#define			glTexStorage1D									glwTexStorage1D
#define			glTexStorage2D									glwTexStorage2D
#define			glTexStorage2DMultisample						glwTexStorage2DMultisample
#define			glTexStorage3D									glwTexStorage3D
#define			glTexStorage3DMultisample						glwTexStorage3DMultisample
#define			glTexSubImage1D									glwTexSubImage1D
#define			glTexSubImage2D									glwTexSubImage2D
#define			glTexSubImage3D									glwTexSubImage3D
#define			glTextureBarrier								glwTextureBarrier
#define			glTextureBuffer									glwTextureBuffer
#define			glTextureBufferRange							glwTextureBufferRange
#define			glTextureParameterIiv							glwTextureParameterIiv
#define			glTextureParameterIuiv							glwTextureParameterIuiv
#define			glTextureParameterf								glwTextureParameterf
#define			glTextureParameterfv							glwTextureParameterfv
#define			glTextureParameteri								glwTextureParameteri
#define			glTextureParameteriv							glwTextureParameteriv
#define			glTextureStorage1D								glwTextureStorage1D
#define			glTextureStorage2D								glwTextureStorage2D
#define			glTextureStorage2DMultisample					glwTextureStorage2DMultisample
#define			glTextureStorage3D								glwTextureStorage3D
#define			glTextureStorage3DMultisample					glwTextureStorage3DMultisample
#define			glTextureSubImage1D								glwTextureSubImage1D
#define			glTextureSubImage2D								glwTextureSubImage2D
#define			glTextureSubImage3D								glwTextureSubImage3D
#define			glTextureView									glwTextureView
#define			glTransformFeedbackBufferBase					glwTransformFeedbackBufferBase
#define			glTransformFeedbackBufferRange					glwTransformFeedbackBufferRange
#define			glTransformFeedbackVaryings						glwTransformFeedbackVaryings
#define			glUniform1d										glwUniform1d
#define			glUniform1dv									glwUniform1dv
#define			glUniform1f										glwUniform1f
#define			glUniform1fv									glwUniform1fv
#define			glUniform1i										glwUniform1i
#define			glUniform1iv									glwUniform1iv
#define			glUniform1ui									glwUniform1ui
#define			glUniform1uiv									glwUniform1uiv
#define			glUniform2d										glwUniform2d
#define			glUniform2dv									glwUniform2dv
#define			glUniform2f										glwUniform2f
#define			glUniform2fv									glwUniform2fv
#define			glUniform2i										glwUniform2i
#define			glUniform2iv									glwUniform2iv
#define			glUniform2ui									glwUniform2ui
#define			glUniform2uiv									glwUniform2uiv
#define			glUniform3d										glwUniform3d
#define			glUniform3dv									glwUniform3dv
#define			glUniform3f										glwUniform3f
#define			glUniform3fv									glwUniform3fv
#define			glUniform3i										glwUniform3i
#define			glUniform3iv									glwUniform3iv
#define			glUniform3ui									glwUniform3ui
#define			glUniform3uiv									glwUniform3uiv
#define			glUniform4d										glwUniform4d
#define			glUniform4dv									glwUniform4dv
#define			glUniform4f										glwUniform4f
#define			glUniform4fv									glwUniform4fv
#define			glUniform4i										glwUniform4i
#define			glUniform4iv									glwUniform4iv
#define			glUniform4ui									glwUniform4ui
#define			glUniform4uiv									glwUniform4uiv
#define			glUniformBlockBinding							glwUniformBlockBinding
#define			glUniformMatrix2dv								glwUniformMatrix2dv
#define			glUniformMatrix2fv								glwUniformMatrix2fv
#define			glUniformMatrix2x3dv							glwUniformMatrix2x3dv
#define			glUniformMatrix2x3fv							glwUniformMatrix2x3fv
#define			glUniformMatrix2x4dv							glwUniformMatrix2x4dv
#define			glUniformMatrix2x4fv							glwUniformMatrix2x4fv
#define			glUniformMatrix3dv								glwUniformMatrix3dv
#define			glUniformMatrix3fv								glwUniformMatrix3fv
#define			glUniformMatrix3x2dv							glwUniformMatrix3x2dv
#define			glUniformMatrix3x2fv							glwUniformMatrix3x2fv
#define			glUniformMatrix3x4dv							glwUniformMatrix3x4dv
#define			glUniformMatrix3x4fv							glwUniformMatrix3x4fv
#define			glUniformMatrix4dv								glwUniformMatrix4dv
#define			glUniformMatrix4fv								glwUniformMatrix4fv
#define			glUniformMatrix4x2dv							glwUniformMatrix4x2dv
#define			glUniformMatrix4x2fv							glwUniformMatrix4x2fv
#define			glUniformMatrix4x3dv							glwUniformMatrix4x3dv
#define			glUniformMatrix4x3fv							glwUniformMatrix4x3fv
#define			glUniformSubroutinesuiv							glwUniformSubroutinesuiv
#define			glUnmapBuffer									glwUnmapBuffer
#define			glUnmapNamedBuffer								glwUnmapNamedBuffer
#define			glUseProgram									glwUseProgram
#define			glUseProgramStages								glwUseProgramStages
#define			glValidateProgram								glwValidateProgram
#define			glValidateProgramPipeline						glwValidateProgramPipeline
#define			glVertexArrayAttribBinding						glwVertexArrayAttribBinding
#define			glVertexArrayAttribFormat						glwVertexArrayAttribFormat
#define			glVertexArrayAttribIFormat						glwVertexArrayAttribIFormat
#define			glVertexArrayAttribLFormat						glwVertexArrayAttribLFormat
#define			glVertexArrayBindingDivisor						glwVertexArrayBindingDivisor
#define			glVertexArrayElementBuffer						glwVertexArrayElementBuffer
#define			glVertexArrayVertexBuffer						glwVertexArrayVertexBuffer
#define			glVertexArrayVertexBuffers						glwVertexArrayVertexBuffers
#define			glVertexAttrib1d								glwVertexAttrib1d
#define			glVertexAttrib1dv								glwVertexAttrib1dv
#define			glVertexAttrib1f								glwVertexAttrib1f
#define			glVertexAttrib1fv								glwVertexAttrib1fv
#define			glVertexAttrib1s								glwVertexAttrib1s
#define			glVertexAttrib1sv								glwVertexAttrib1sv
#define			glVertexAttrib2d								glwVertexAttrib2d
#define			glVertexAttrib2dv								glwVertexAttrib2dv
#define			glVertexAttrib2f								glwVertexAttrib2f
#define			glVertexAttrib2fv								glwVertexAttrib2fv
#define			glVertexAttrib2s								glwVertexAttrib2s
#define			glVertexAttrib2sv								glwVertexAttrib2sv
#define			glVertexAttrib3d								glwVertexAttrib3d
#define			glVertexAttrib3dv								glwVertexAttrib3dv
#define			glVertexAttrib3f								glwVertexAttrib3f
#define			glVertexAttrib3fv								glwVertexAttrib3fv
#define			glVertexAttrib3s								glwVertexAttrib3s
#define			glVertexAttrib3sv								glwVertexAttrib3sv
#define			glVertexAttrib4Nbv								glwVertexAttrib4Nbv
#define			glVertexAttrib4Niv								glwVertexAttrib4Niv
#define			glVertexAttrib4Nsv								glwVertexAttrib4Nsv
#define			glVertexAttrib4Nub								glwVertexAttrib4Nub
#define			glVertexAttrib4Nubv								glwVertexAttrib4Nubv
#define			glVertexAttrib4Nuiv								glwVertexAttrib4Nuiv
#define			glVertexAttrib4Nusv								glwVertexAttrib4Nusv
#define			glVertexAttrib4bv								glwVertexAttrib4bv
#define			glVertexAttrib4d								glwVertexAttrib4d
#define			glVertexAttrib4dv								glwVertexAttrib4dv
#define			glVertexAttrib4f								glwVertexAttrib4f
#define			glVertexAttrib4fv								glwVertexAttrib4fv
#define			glVertexAttrib4iv								glwVertexAttrib4iv
#define			glVertexAttrib4s								glwVertexAttrib4s
#define			glVertexAttrib4sv								glwVertexAttrib4sv
#define			glVertexAttrib4ubv								glwVertexAttrib4ubv
#define			glVertexAttrib4uiv								glwVertexAttrib4uiv
#define			glVertexAttrib4usv								glwVertexAttrib4usv
#define			glVertexAttribBinding							glwVertexAttribBinding
#define			glVertexAttribDivisor							glwVertexAttribDivisor
#define			glVertexAttribFormat							glwVertexAttribFormat
#define			glVertexAttribI1i								glwVertexAttribI1i
#define			glVertexAttribI1iv								glwVertexAttribI1iv
#define			glVertexAttribI1ui								glwVertexAttribI1ui
#define			glVertexAttribI1uiv								glwVertexAttribI1uiv
#define			glVertexAttribI2i								glwVertexAttribI2i
#define			glVertexAttribI2iv								glwVertexAttribI2iv
#define			glVertexAttribI2ui								glwVertexAttribI2ui
#define			glVertexAttribI2uiv								glwVertexAttribI2uiv
#define			glVertexAttribI3i								glwVertexAttribI3i
#define			glVertexAttribI3iv								glwVertexAttribI3iv
#define			glVertexAttribI3ui								glwVertexAttribI3ui
#define			glVertexAttribI3uiv								glwVertexAttribI3uiv
#define			glVertexAttribI4bv								glwVertexAttribI4bv
#define			glVertexAttribI4i								glwVertexAttribI4i
#define			glVertexAttribI4iv								glwVertexAttribI4iv
#define			glVertexAttribI4sv								glwVertexAttribI4sv
#define			glVertexAttribI4ubv								glwVertexAttribI4ubv
#define			glVertexAttribI4ui								glwVertexAttribI4ui
#define			glVertexAttribI4uiv								glwVertexAttribI4uiv
#define			glVertexAttribI4usv								glwVertexAttribI4usv
#define			glVertexAttribIFormat							glwVertexAttribIFormat
#define			glVertexAttribIPointer							glwVertexAttribIPointer
#define			glVertexAttribL1d								glwVertexAttribL1d
#define			glVertexAttribL1dv								glwVertexAttribL1dv
#define			glVertexAttribL2d								glwVertexAttribL2d
#define			glVertexAttribL2dv								glwVertexAttribL2dv
#define			glVertexAttribL3d								glwVertexAttribL3d
#define			glVertexAttribL3dv								glwVertexAttribL3dv
#define			glVertexAttribL4d								glwVertexAttribL4d
#define			glVertexAttribL4dv								glwVertexAttribL4dv
#define			glVertexAttribLFormat							glwVertexAttribLFormat
#define			glVertexAttribLPointer							glwVertexAttribLPointer
#define			glVertexAttribP1ui								glwVertexAttribP1ui
#define			glVertexAttribP1uiv								glwVertexAttribP1uiv
#define			glVertexAttribP2ui								glwVertexAttribP2ui
#define			glVertexAttribP2uiv								glwVertexAttribP2uiv
#define			glVertexAttribP3ui								glwVertexAttribP3ui
#define			glVertexAttribP3uiv								glwVertexAttribP3uiv
#define			glVertexAttribP4ui								glwVertexAttribP4ui
#define			glVertexAttribP4uiv								glwVertexAttribP4uiv
#define			glVertexAttribPointer							glwVertexAttribPointer
#define			glVertexBindingDivisor							glwVertexBindingDivisor
#define			glViewport										glwViewport
#define			glViewportArrayv								glwViewportArrayv
#define			glViewportIndexedf								glwViewportIndexedf
#define			glViewportIndexedfv								glwViewportIndexedfv
#define			glWaitSync										glwWaitSync
void			glwActiveShaderProgram							(GLuint pipeline, GLuint program);
void			glwActiveTexture								(GLenum texture);
void			glwAttachShader									(GLuint program, GLuint shader);
void			glwBeginConditionalRender						(GLuint id, GLenum mode);
void			glwBeginQuery									(GLenum target, GLuint id);
void			glwBeginQueryIndexed							(GLenum target, GLuint index, GLuint id);
void			glwBeginTransformFeedback						(GLenum primitiveMode);
void			glwBindAttribLocation							(GLuint program, GLuint index, const GLchar *name);
void			glwBindBuffer									(GLenum target, GLuint buffer);
void			glwBindBufferBase								(GLenum target, GLuint index, GLuint buffer);
void			glwBindBufferRange								(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
void			glwBindBuffersBase								(GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
void			glwBindBuffersRange								(GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
void			glwBindFragDataLocation							(GLuint program, GLuint color, const GLchar *name);
void			glwBindFragDataLocationIndexed					(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
void			glwBindFramebuffer								(GLenum target, GLuint framebuffer);
void			glwBindImageTexture								(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
void			glwBindImageTextures							(GLuint first, GLsizei count, const GLuint *textures);
void			glwBindProgramPipeline							(GLuint pipeline);
void			glwBindRenderbuffer								(GLenum target, GLuint renderbuffer);
void			glwBindSampler									(GLuint unit, GLuint sampler);
void			glwBindSamplers									(GLuint first, GLsizei count, const GLuint *samplers);
void			glwBindTexture									(GLenum target, GLuint texture);
void			glwBindTextureUnit								(GLuint unit, GLuint texture);
void			glwBindTextures									(GLuint first, GLsizei count, const GLuint *textures);
void			glwBindTransformFeedback						(GLenum target, GLuint id);
void			glwBindVertexArray								(GLuint array);
void			glwBindVertexBuffer								(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
void			glwBindVertexBuffers							(GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
void			glwBlendBarrier									();
void			glwBlendColor									(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void			glwBlendEquation								(GLenum mode);
void			glwBlendEquationSeparate						(GLenum modeRGB, GLenum modeAlpha);
void			glwBlendEquationSeparatei						(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
void			glwBlendEquationi								(GLuint buf, GLenum mode);
void			glwBlendFunc									(GLenum sfactor, GLenum dfactor);
void			glwBlendFuncSeparate							(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
void			glwBlendFuncSeparatei							(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void			glwBlendFunci									(GLuint buf, GLenum src, GLenum dst);
void			glwBlitFramebuffer								(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
void			glwBlitNamedFramebuffer							(GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
void			glwBufferData									(GLenum target, GLsizeiptr size, const void *data, GLenum usage);
void			glwBufferStorage								(GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
void			glwBufferSubData								(GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
GLenum			glwCheckFramebufferStatus						(GLenum target);
GLenum			glwCheckNamedFramebufferStatus					(GLuint framebuffer, GLenum target);
void			glwClampColor									(GLenum target, GLenum clamp);
void			glwClear										(GLbitfield mask);
void			glwClearBufferData								(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
void			glwClearBufferSubData							(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
void			glwClearBufferfi								(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
void			glwClearBufferfv								(GLenum buffer, GLint drawbuffer, const GLfloat *value);
void			glwClearBufferiv								(GLenum buffer, GLint drawbuffer, const GLint *value);
void			glwClearBufferuiv								(GLenum buffer, GLint drawbuffer, const GLuint *value);
void			glwClearColor									(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void			glwClearDepth									(GLdouble depth);
void			glwClearDepthf									(GLfloat d);
void			glwClearNamedBufferData							(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
void			glwClearNamedBufferSubData						(GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
void			glwClearNamedFramebufferfi						(GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
void			glwClearNamedFramebufferfv						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
void			glwClearNamedFramebufferiv						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
void			glwClearNamedFramebufferuiv						(GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
void			glwClearStencil									(GLint s);
void			glwClearTexImage								(GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
void			glwClearTexSubImage								(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
GLenum			glwClientWaitSync								(GLsync sync, GLbitfield flags, GLuint64 timeout);
void			glwClipControl									(GLenum origin, GLenum depth);
void			glwColorMask									(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
void			glwColorMaski									(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
void			glwCompileShader								(GLuint shader);
void			glwCompressedTexImage1D							(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);
void			glwCompressedTexImage2D							(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
void			glwCompressedTexImage3D							(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);
void			glwCompressedTexSubImage1D						(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
void			glwCompressedTexSubImage2D						(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
void			glwCompressedTexSubImage3D						(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
void			glwCompressedTextureSubImage1D					(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
void			glwCompressedTextureSubImage2D					(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
void			glwCompressedTextureSubImage3D					(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
void			glwCopyBufferSubData							(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
void			glwCopyImageSubData								(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);
void			glwCopyNamedBufferSubData						(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
void			glwCopyTexImage1D								(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
void			glwCopyTexImage2D								(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
void			glwCopyTexSubImage1D							(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
void			glwCopyTexSubImage2D							(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void			glwCopyTexSubImage3D							(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void			glwCopyTextureSubImage1D						(GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
void			glwCopyTextureSubImage2D						(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void			glwCopyTextureSubImage3D						(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void			glwCreateBuffers								(GLsizei n, GLuint *buffers);
void			glwCreateFramebuffers							(GLsizei n, GLuint *framebuffers);
GLuint			glwCreateProgram								();
void			glwCreateProgramPipelines						(GLsizei n, GLuint *pipelines);
void			glwCreateQueries								(GLenum target, GLsizei n, GLuint *ids);
void			glwCreateRenderbuffers							(GLsizei n, GLuint *renderbuffers);
void			glwCreateSamplers								(GLsizei n, GLuint *samplers);
GLuint			glwCreateShader									(GLenum type);
GLuint			glwCreateShaderProgramv							(GLenum type, GLsizei count, const GLchar *const*strings);
void			glwCreateTextures								(GLenum target, GLsizei n, GLuint *textures);
void			glwCreateTransformFeedbacks						(GLsizei n, GLuint *ids);
void			glwCreateVertexArrays							(GLsizei n, GLuint *arrays);
void			glwCullFace										(GLenum mode);
void			glwDebugMessageCallback							(GLDEBUGPROC callback, const void *userParam);
void			glwDebugMessageControl							(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
void			glwDebugMessageInsert							(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
void			glwDeleteBuffers								(GLsizei n, const GLuint *buffers);
void			glwDeleteFramebuffers							(GLsizei n, const GLuint *framebuffers);
void			glwDeleteProgram								(GLuint program);
void			glwDeleteProgramPipelines						(GLsizei n, const GLuint *pipelines);
void			glwDeleteQueries								(GLsizei n, const GLuint *ids);
void			glwDeleteRenderbuffers							(GLsizei n, const GLuint *renderbuffers);
void			glwDeleteSamplers								(GLsizei count, const GLuint *samplers);
void			glwDeleteShader									(GLuint shader);
void			glwDeleteSync									(GLsync sync);
void			glwDeleteTextures								(GLsizei n, const GLuint *textures);
void			glwDeleteTransformFeedbacks						(GLsizei n, const GLuint *ids);
void			glwDeleteVertexArrays							(GLsizei n, const GLuint *arrays);
void			glwDepthFunc									(GLenum func);
void			glwDepthMask									(GLboolean flag);
void			glwDepthRange									(GLdouble near, GLdouble far);
void			glwDepthRangeArrayv								(GLuint first, GLsizei count, const GLdouble *v);
void			glwDepthRangeIndexed							(GLuint index, GLdouble n, GLdouble f);
void			glwDepthRangef									(GLfloat n, GLfloat f);
void			glwDetachShader									(GLuint program, GLuint shader);
void			glwDisable										(GLenum cap);
void			glwDisableVertexArrayAttrib						(GLuint vaobj, GLuint index);
void			glwDisableVertexAttribArray						(GLuint index);
void			glwDisablei										(GLenum target, GLuint index);
void			glwDispatchCompute								(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
void			glwDispatchComputeIndirect						(GLintptr indirect);
void			glwDrawArrays									(GLenum mode, GLint first, GLsizei count);
void			glwDrawArraysIndirect							(GLenum mode, const void *indirect);
void			glwDrawArraysInstanced							(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
void			glwDrawArraysInstancedBaseInstance				(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
void			glwDrawBuffer									(GLenum buf);
void			glwDrawBuffers									(GLsizei n, const GLenum *bufs);
void			glwDrawElements									(GLenum mode, GLsizei count, GLenum type, const void *indices);
void			glwDrawElementsBaseVertex						(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
void			glwDrawElementsIndirect							(GLenum mode, GLenum type, const void *indirect);
void			glwDrawElementsInstanced						(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);
void			glwDrawElementsInstancedBaseInstance			(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
void			glwDrawElementsInstancedBaseVertex				(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
void			glwDrawElementsInstancedBaseVertexBaseInstance	(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
void			glwDrawRangeElements							(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);
void			glwDrawRangeElementsBaseVertex					(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
void			glwDrawTransformFeedback						(GLenum mode, GLuint id);
void			glwDrawTransformFeedbackInstanced				(GLenum mode, GLuint id, GLsizei instancecount);
void			glwDrawTransformFeedbackStream					(GLenum mode, GLuint id, GLuint stream);
void			glwDrawTransformFeedbackStreamInstanced			(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
void			glwEGLImageTargetRenderbufferStorageOES			(GLenum target, GLeglImageOES image);
void			glwEGLImageTargetTexture2DOES					(GLenum target, GLeglImageOES image);
void			glwEnable										(GLenum cap);
void			glwEnableVertexArrayAttrib						(GLuint vaobj, GLuint index);
void			glwEnableVertexAttribArray						(GLuint index);
void			glwEnablei										(GLenum target, GLuint index);
void			glwEndConditionalRender							();
void			glwEndQuery										(GLenum target);
void			glwEndQueryIndexed								(GLenum target, GLuint index);
void			glwEndTransformFeedback							();
GLsync			glwFenceSync									(GLenum condition, GLbitfield flags);
void			glwFinish										();
void			glwFlush										();
void			glwFlushMappedBufferRange						(GLenum target, GLintptr offset, GLsizeiptr length);
void			glwFlushMappedNamedBufferRange					(GLuint buffer, GLintptr offset, GLsizeiptr length);
void			glwFramebufferParameteri						(GLenum target, GLenum pname, GLint param);
void			glwFramebufferRenderbuffer						(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void			glwFramebufferTexture							(GLenum target, GLenum attachment, GLuint texture, GLint level);
void			glwFramebufferTexture1D							(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void			glwFramebufferTexture2D							(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void			glwFramebufferTexture3D							(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
void			glwFramebufferTextureLayer						(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
void			glwFrontFace									(GLenum mode);
void			glwGenBuffers									(GLsizei n, GLuint *buffers);
void			glwGenFramebuffers								(GLsizei n, GLuint *framebuffers);
void			glwGenProgramPipelines							(GLsizei n, GLuint *pipelines);
void			glwGenQueries									(GLsizei n, GLuint *ids);
void			glwGenRenderbuffers								(GLsizei n, GLuint *renderbuffers);
void			glwGenSamplers									(GLsizei count, GLuint *samplers);
void			glwGenTextures									(GLsizei n, GLuint *textures);
void			glwGenTransformFeedbacks						(GLsizei n, GLuint *ids);
void			glwGenVertexArrays								(GLsizei n, GLuint *arrays);
void			glwGenerateMipmap								(GLenum target);
void			glwGenerateTextureMipmap						(GLuint texture);
void			glwGetActiveAtomicCounterBufferiv				(GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
void			glwGetActiveAttrib								(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
void			glwGetActiveSubroutineName						(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
void			glwGetActiveSubroutineUniformName				(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
void			glwGetActiveSubroutineUniformiv					(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
void			glwGetActiveUniform								(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
void			glwGetActiveUniformBlockName					(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
void			glwGetActiveUniformBlockiv						(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
void			glwGetActiveUniformName							(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
void			glwGetActiveUniformsiv							(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
void			glwGetAttachedShaders							(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
GLint			glwGetAttribLocation							(GLuint program, const GLchar *name);
void			glwGetBooleani_v								(GLenum target, GLuint index, GLboolean *data);
void			glwGetBooleanv									(GLenum pname, GLboolean *data);
void			glwGetBufferParameteri64v						(GLenum target, GLenum pname, GLint64 *params);
void			glwGetBufferParameteriv							(GLenum target, GLenum pname, GLint *params);
void			glwGetBufferPointerv							(GLenum target, GLenum pname, void **params);
void			glwGetBufferSubData								(GLenum target, GLintptr offset, GLsizeiptr size, void *data);
void			glwGetCompressedTexImage						(GLenum target, GLint level, void *img);
void			glwGetCompressedTextureImage					(GLuint texture, GLint level, GLsizei bufSize, void *pixels);
void			glwGetCompressedTextureSubImage					(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
GLuint			glwGetDebugMessageLog							(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
void			glwGetDoublei_v									(GLenum target, GLuint index, GLdouble *data);
void			glwGetDoublev									(GLenum pname, GLdouble *data);
GLenum			glwGetError										();
void			glwGetFloati_v									(GLenum target, GLuint index, GLfloat *data);
void			glwGetFloatv									(GLenum pname, GLfloat *data);
GLint			glwGetFragDataIndex								(GLuint program, const GLchar *name);
GLint			glwGetFragDataLocation							(GLuint program, const GLchar *name);
void			glwGetFramebufferAttachmentParameteriv			(GLenum target, GLenum attachment, GLenum pname, GLint *params);
void			glwGetFramebufferParameteriv					(GLenum target, GLenum pname, GLint *params);
GLenum			glwGetGraphicsResetStatus						();
void			glwGetInteger64i_v								(GLenum target, GLuint index, GLint64 *data);
void			glwGetInteger64v								(GLenum pname, GLint64 *data);
void			glwGetIntegeri_v								(GLenum target, GLuint index, GLint *data);
void			glwGetIntegerv									(GLenum pname, GLint *data);
void			glwGetInternalformati64v						(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
void			glwGetInternalformativ							(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
void			glwGetMultisamplefv								(GLenum pname, GLuint index, GLfloat *val);
void			glwGetNamedBufferParameteri64v					(GLuint buffer, GLenum pname, GLint64 *params);
void			glwGetNamedBufferParameteriv					(GLuint buffer, GLenum pname, GLint *params);
void			glwGetNamedBufferPointerv						(GLuint buffer, GLenum pname, void **params);
void			glwGetNamedBufferSubData						(GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
void			glwGetNamedFramebufferAttachmentParameteriv		(GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
void			glwGetNamedFramebufferParameteriv				(GLuint framebuffer, GLenum pname, GLint *param);
void			glwGetNamedRenderbufferParameteriv				(GLuint renderbuffer, GLenum pname, GLint *params);
void			glwGetObjectLabel								(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
void			glwGetObjectPtrLabel							(const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
void			glwGetPointerv									(GLenum pname, void **params);
void			glwGetProgramBinary								(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
void			glwGetProgramInfoLog							(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
void			glwGetProgramInterfaceiv						(GLuint program, GLenum programInterface, GLenum pname, GLint *params);
void			glwGetProgramPipelineInfoLog					(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
void			glwGetProgramPipelineiv							(GLuint pipeline, GLenum pname, GLint *params);
GLuint			glwGetProgramResourceIndex						(GLuint program, GLenum programInterface, const GLchar *name);
GLint			glwGetProgramResourceLocation					(GLuint program, GLenum programInterface, const GLchar *name);
GLint			glwGetProgramResourceLocationIndex				(GLuint program, GLenum programInterface, const GLchar *name);
void			glwGetProgramResourceName						(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
void			glwGetProgramResourceiv							(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
void			glwGetProgramStageiv							(GLuint program, GLenum shadertype, GLenum pname, GLint *values);
void			glwGetProgramiv									(GLuint program, GLenum pname, GLint *params);
void			glwGetQueryBufferObjecti64v						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
void			glwGetQueryBufferObjectiv						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
void			glwGetQueryBufferObjectui64v					(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
void			glwGetQueryBufferObjectuiv						(GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
void			glwGetQueryIndexediv							(GLenum target, GLuint index, GLenum pname, GLint *params);
void			glwGetQueryObjecti64v							(GLuint id, GLenum pname, GLint64 *params);
void			glwGetQueryObjectiv								(GLuint id, GLenum pname, GLint *params);
void			glwGetQueryObjectui64v							(GLuint id, GLenum pname, GLuint64 *params);
void			glwGetQueryObjectuiv							(GLuint id, GLenum pname, GLuint *params);
void			glwGetQueryiv									(GLenum target, GLenum pname, GLint *params);
void			glwGetRenderbufferParameteriv					(GLenum target, GLenum pname, GLint *params);
void			glwGetSamplerParameterIiv						(GLuint sampler, GLenum pname, GLint *params);
void			glwGetSamplerParameterIuiv						(GLuint sampler, GLenum pname, GLuint *params);
void			glwGetSamplerParameterfv						(GLuint sampler, GLenum pname, GLfloat *params);
void			glwGetSamplerParameteriv						(GLuint sampler, GLenum pname, GLint *params);
void			glwGetShaderInfoLog								(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
void			glwGetShaderPrecisionFormat						(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
void			glwGetShaderSource								(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
void			glwGetShaderiv									(GLuint shader, GLenum pname, GLint *params);
const GLubyte *	glwGetString									(GLenum name);
const GLubyte *	glwGetStringi									(GLenum name, GLuint index);
GLuint			glwGetSubroutineIndex							(GLuint program, GLenum shadertype, const GLchar *name);
GLint			glwGetSubroutineUniformLocation					(GLuint program, GLenum shadertype, const GLchar *name);
void			glwGetSynciv									(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
void			glwGetTexImage									(GLenum target, GLint level, GLenum format, GLenum type, void *pixels);
void			glwGetTexLevelParameterfv						(GLenum target, GLint level, GLenum pname, GLfloat *params);
void			glwGetTexLevelParameteriv						(GLenum target, GLint level, GLenum pname, GLint *params);
void			glwGetTexParameterIiv							(GLenum target, GLenum pname, GLint *params);
void			glwGetTexParameterIuiv							(GLenum target, GLenum pname, GLuint *params);
void			glwGetTexParameterfv							(GLenum target, GLenum pname, GLfloat *params);
void			glwGetTexParameteriv							(GLenum target, GLenum pname, GLint *params);
void			glwGetTextureImage								(GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
void			glwGetTextureLevelParameterfv					(GLuint texture, GLint level, GLenum pname, GLfloat *params);
void			glwGetTextureLevelParameteriv					(GLuint texture, GLint level, GLenum pname, GLint *params);
void			glwGetTextureParameterIiv						(GLuint texture, GLenum pname, GLint *params);
void			glwGetTextureParameterIuiv						(GLuint texture, GLenum pname, GLuint *params);
void			glwGetTextureParameterfv						(GLuint texture, GLenum pname, GLfloat *params);
void			glwGetTextureParameteriv						(GLuint texture, GLenum pname, GLint *params);
void			glwGetTextureSubImage							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
void			glwGetTransformFeedbackVarying					(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
void			glwGetTransformFeedbacki64_v					(GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
void			glwGetTransformFeedbacki_v						(GLuint xfb, GLenum pname, GLuint index, GLint *param);
void			glwGetTransformFeedbackiv						(GLuint xfb, GLenum pname, GLint *param);
GLuint			glwGetUniformBlockIndex							(GLuint program, const GLchar *uniformBlockName);
void			glwGetUniformIndices							(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
GLint			glwGetUniformLocation							(GLuint program, const GLchar *name);
void			glwGetUniformSubroutineuiv						(GLenum shadertype, GLint location, GLuint *params);
void			glwGetUniformdv									(GLuint program, GLint location, GLdouble *params);
void			glwGetUniformfv									(GLuint program, GLint location, GLfloat *params);
void			glwGetUniformiv									(GLuint program, GLint location, GLint *params);
void			glwGetUniformuiv								(GLuint program, GLint location, GLuint *params);
void			glwGetVertexArrayIndexed64iv					(GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
void			glwGetVertexArrayIndexediv						(GLuint vaobj, GLuint index, GLenum pname, GLint *param);
void			glwGetVertexArrayiv								(GLuint vaobj, GLenum pname, GLint *param);
void			glwGetVertexAttribIiv							(GLuint index, GLenum pname, GLint *params);
void			glwGetVertexAttribIuiv							(GLuint index, GLenum pname, GLuint *params);
void			glwGetVertexAttribLdv							(GLuint index, GLenum pname, GLdouble *params);
void			glwGetVertexAttribPointerv						(GLuint index, GLenum pname, void **pointer);
void			glwGetVertexAttribdv							(GLuint index, GLenum pname, GLdouble *params);
void			glwGetVertexAttribfv							(GLuint index, GLenum pname, GLfloat *params);
void			glwGetVertexAttribiv							(GLuint index, GLenum pname, GLint *params);
void			glwGetnCompressedTexImage						(GLenum target, GLint lod, GLsizei bufSize, void *pixels);
void			glwGetnTexImage									(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
void			glwGetnUniformdv								(GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
void			glwGetnUniformfv								(GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
void			glwGetnUniformiv								(GLuint program, GLint location, GLsizei bufSize, GLint *params);
void			glwGetnUniformuiv								(GLuint program, GLint location, GLsizei bufSize, GLuint *params);
void			glwHint											(GLenum target, GLenum mode);
void			glwInsertEventMarkerEXT							(GLsizei length, const GLchar *marker);
void			glwInvalidateBufferData							(GLuint buffer);
void			glwInvalidateBufferSubData						(GLuint buffer, GLintptr offset, GLsizeiptr length);
void			glwInvalidateFramebuffer						(GLenum target, GLsizei numAttachments, const GLenum *attachments);
void			glwInvalidateNamedFramebufferData				(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
void			glwInvalidateNamedFramebufferSubData			(GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
void			glwInvalidateSubFramebuffer						(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
void			glwInvalidateTexImage							(GLuint texture, GLint level);
void			glwInvalidateTexSubImage						(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
GLboolean		glwIsBuffer										(GLuint buffer);
GLboolean		glwIsEnabled									(GLenum cap);
GLboolean		glwIsEnabledi									(GLenum target, GLuint index);
GLboolean		glwIsFramebuffer								(GLuint framebuffer);
GLboolean		glwIsProgram									(GLuint program);
GLboolean		glwIsProgramPipeline							(GLuint pipeline);
GLboolean		glwIsQuery										(GLuint id);
GLboolean		glwIsRenderbuffer								(GLuint renderbuffer);
GLboolean		glwIsSampler									(GLuint sampler);
GLboolean		glwIsShader										(GLuint shader);
GLboolean		glwIsSync										(GLsync sync);
GLboolean		glwIsTexture									(GLuint texture);
GLboolean		glwIsTransformFeedback							(GLuint id);
GLboolean		glwIsVertexArray								(GLuint array);
void			glwLineWidth									(GLfloat width);
void			glwLinkProgram									(GLuint program);
void			glwLogicOp										(GLenum opcode);
void *			glwMapBuffer									(GLenum target, GLenum access);
void *			glwMapBufferRange								(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
void *			glwMapNamedBuffer								(GLuint buffer, GLenum access);
void *			glwMapNamedBufferRange							(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
void			glwMemoryBarrier								(GLbitfield barriers);
void			glwMemoryBarrierByRegion						(GLbitfield barriers);
void			glwMinSampleShading								(GLfloat value);
void			glwMultiDrawArrays								(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
void			glwMultiDrawArraysIndirect						(GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
void			glwMultiDrawElements							(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);
void			glwMultiDrawElementsBaseVertex					(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);
void			glwMultiDrawElementsIndirect					(GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
void			glwNamedBufferData								(GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
void			glwNamedBufferStorage							(GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
void			glwNamedBufferSubData							(GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
void			glwNamedFramebufferDrawBuffer					(GLuint framebuffer, GLenum buf);
void			glwNamedFramebufferDrawBuffers					(GLuint framebuffer, GLsizei n, const GLenum *bufs);
void			glwNamedFramebufferParameteri					(GLuint framebuffer, GLenum pname, GLint param);
void			glwNamedFramebufferReadBuffer					(GLuint framebuffer, GLenum src);
void			glwNamedFramebufferRenderbuffer					(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void			glwNamedFramebufferTexture						(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
void			glwNamedFramebufferTextureLayer					(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
void			glwNamedRenderbufferStorage						(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
void			glwNamedRenderbufferStorageMultisample			(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
void			glwObjectLabel									(GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
void			glwObjectPtrLabel								(const void *ptr, GLsizei length, const GLchar *label);
void			glwPatchParameterfv								(GLenum pname, const GLfloat *values);
void			glwPatchParameteri								(GLenum pname, GLint value);
void			glwPauseTransformFeedback						();
void			glwPixelStoref									(GLenum pname, GLfloat param);
void			glwPixelStorei									(GLenum pname, GLint param);
void			glwPointParameterf								(GLenum pname, GLfloat param);
void			glwPointParameterfv								(GLenum pname, const GLfloat *params);
void			glwPointParameteri								(GLenum pname, GLint param);
void			glwPointParameteriv								(GLenum pname, const GLint *params);
void			glwPointSize									(GLfloat size);
void			glwPolygonMode									(GLenum face, GLenum mode);
void			glwPolygonOffset								(GLfloat factor, GLfloat units);
void			glwPopDebugGroup								();
void			glwPopGroupMarkerEXT							();
void			glwPrimitiveBoundingBox							(GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
void			glwPrimitiveRestartIndex						(GLuint index);
void			glwProgramBinary								(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
void			glwProgramParameteri							(GLuint program, GLenum pname, GLint value);
void			glwProgramUniform1d								(GLuint program, GLint location, GLdouble v0);
void			glwProgramUniform1dv							(GLuint program, GLint location, GLsizei count, const GLdouble *value);
void			glwProgramUniform1f								(GLuint program, GLint location, GLfloat v0);
void			glwProgramUniform1fv							(GLuint program, GLint location, GLsizei count, const GLfloat *value);
void			glwProgramUniform1i								(GLuint program, GLint location, GLint v0);
void			glwProgramUniform1iv							(GLuint program, GLint location, GLsizei count, const GLint *value);
void			glwProgramUniform1ui							(GLuint program, GLint location, GLuint v0);
void			glwProgramUniform1uiv							(GLuint program, GLint location, GLsizei count, const GLuint *value);
void			glwProgramUniform2d								(GLuint program, GLint location, GLdouble v0, GLdouble v1);
void			glwProgramUniform2dv							(GLuint program, GLint location, GLsizei count, const GLdouble *value);
void			glwProgramUniform2f								(GLuint program, GLint location, GLfloat v0, GLfloat v1);
void			glwProgramUniform2fv							(GLuint program, GLint location, GLsizei count, const GLfloat *value);
void			glwProgramUniform2i								(GLuint program, GLint location, GLint v0, GLint v1);
void			glwProgramUniform2iv							(GLuint program, GLint location, GLsizei count, const GLint *value);
void			glwProgramUniform2ui							(GLuint program, GLint location, GLuint v0, GLuint v1);
void			glwProgramUniform2uiv							(GLuint program, GLint location, GLsizei count, const GLuint *value);
void			glwProgramUniform3d								(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
void			glwProgramUniform3dv							(GLuint program, GLint location, GLsizei count, const GLdouble *value);
void			glwProgramUniform3f								(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
void			glwProgramUniform3fv							(GLuint program, GLint location, GLsizei count, const GLfloat *value);
void			glwProgramUniform3i								(GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
void			glwProgramUniform3iv							(GLuint program, GLint location, GLsizei count, const GLint *value);
void			glwProgramUniform3ui							(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
void			glwProgramUniform3uiv							(GLuint program, GLint location, GLsizei count, const GLuint *value);
void			glwProgramUniform4d								(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
void			glwProgramUniform4dv							(GLuint program, GLint location, GLsizei count, const GLdouble *value);
void			glwProgramUniform4f								(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
void			glwProgramUniform4fv							(GLuint program, GLint location, GLsizei count, const GLfloat *value);
void			glwProgramUniform4i								(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
void			glwProgramUniform4iv							(GLuint program, GLint location, GLsizei count, const GLint *value);
void			glwProgramUniform4ui							(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
void			glwProgramUniform4uiv							(GLuint program, GLint location, GLsizei count, const GLuint *value);
void			glwProgramUniformMatrix2dv						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix2fv						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix2x3dv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix2x3fv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix2x4dv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix2x4fv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix3dv						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix3fv						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix3x2dv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix3x2fv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix3x4dv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix3x4fv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix4dv						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix4fv						(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix4x2dv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix4x2fv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProgramUniformMatrix4x3dv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwProgramUniformMatrix4x3fv					(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwProvokingVertex								(GLenum mode);
void			glwPushDebugGroup								(GLenum source, GLuint id, GLsizei length, const GLchar *message);
void			glwPushGroupMarkerEXT							(GLsizei length, const GLchar *marker);
void			glwQueryCounter									(GLuint id, GLenum target);
void			glwReadBuffer									(GLenum src);
void			glwReadPixels									(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);
void			glwReadnPixels									(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
void			glwReleaseShaderCompiler						();
void			glwRenderbufferStorage							(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void			glwRenderbufferStorageMultisample				(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
void			glwResumeTransformFeedback						();
void			glwSampleCoverage								(GLfloat value, GLboolean invert);
void			glwSampleMaski									(GLuint maskNumber, GLbitfield mask);
void			glwSamplerParameterIiv							(GLuint sampler, GLenum pname, const GLint *param);
void			glwSamplerParameterIuiv							(GLuint sampler, GLenum pname, const GLuint *param);
void			glwSamplerParameterf							(GLuint sampler, GLenum pname, GLfloat param);
void			glwSamplerParameterfv							(GLuint sampler, GLenum pname, const GLfloat *param);
void			glwSamplerParameteri							(GLuint sampler, GLenum pname, GLint param);
void			glwSamplerParameteriv							(GLuint sampler, GLenum pname, const GLint *param);
void			glwScissor										(GLint x, GLint y, GLsizei width, GLsizei height);
void			glwScissorArrayv								(GLuint first, GLsizei count, const GLint *v);
void			glwScissorIndexed								(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
void			glwScissorIndexedv								(GLuint index, const GLint *v);
void			glwShaderBinary									(GLsizei count, const GLuint *shaders, GLenum binaryformat, const void *binary, GLsizei length);
void			glwShaderSource									(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
void			glwShaderStorageBlockBinding					(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);
void			glwStencilFunc									(GLenum func, GLint ref, GLuint mask);
void			glwStencilFuncSeparate							(GLenum face, GLenum func, GLint ref, GLuint mask);
void			glwStencilMask									(GLuint mask);
void			glwStencilMaskSeparate							(GLenum face, GLuint mask);
void			glwStencilOp									(GLenum fail, GLenum zfail, GLenum zpass);
void			glwStencilOpSeparate							(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
void			glwTexBuffer									(GLenum target, GLenum internalformat, GLuint buffer);
void			glwTexBufferRange								(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
void			glwTexImage1D									(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);
void			glwTexImage2D									(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
void			glwTexImage2DMultisample						(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
void			glwTexImage3D									(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);
void			glwTexImage3DMultisample						(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
void			glwTexParameterIiv								(GLenum target, GLenum pname, const GLint *params);
void			glwTexParameterIuiv								(GLenum target, GLenum pname, const GLuint *params);
void			glwTexParameterf								(GLenum target, GLenum pname, GLfloat param);
void			glwTexParameterfv								(GLenum target, GLenum pname, const GLfloat *params);
void			glwTexParameteri								(GLenum target, GLenum pname, GLint param);
void			glwTexParameteriv								(GLenum target, GLenum pname, const GLint *params);
void			glwTexStorage1D									(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
void			glwTexStorage2D									(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
void			glwTexStorage2DMultisample						(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
void			glwTexStorage3D									(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
void			glwTexStorage3DMultisample						(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
void			glwTexSubImage1D								(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
void			glwTexSubImage2D								(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
void			glwTexSubImage3D								(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
void			glwTextureBarrier								();
void			glwTextureBuffer								(GLuint texture, GLenum internalformat, GLuint buffer);
void			glwTextureBufferRange							(GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
void			glwTextureParameterIiv							(GLuint texture, GLenum pname, const GLint *params);
void			glwTextureParameterIuiv							(GLuint texture, GLenum pname, const GLuint *params);
void			glwTextureParameterf							(GLuint texture, GLenum pname, GLfloat param);
void			glwTextureParameterfv							(GLuint texture, GLenum pname, const GLfloat *param);
void			glwTextureParameteri							(GLuint texture, GLenum pname, GLint param);
void			glwTextureParameteriv							(GLuint texture, GLenum pname, const GLint *param);
void			glwTextureStorage1D								(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
void			glwTextureStorage2D								(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
void			glwTextureStorage2DMultisample					(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
void			glwTextureStorage3D								(GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
void			glwTextureStorage3DMultisample					(GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
void			glwTextureSubImage1D							(GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
void			glwTextureSubImage2D							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
void			glwTextureSubImage3D							(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
void			glwTextureView									(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
void			glwTransformFeedbackBufferBase					(GLuint xfb, GLuint index, GLuint buffer);
void			glwTransformFeedbackBufferRange					(GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
void			glwTransformFeedbackVaryings					(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);
void			glwUniform1d									(GLint location, GLdouble x);
void			glwUniform1dv									(GLint location, GLsizei count, const GLdouble *value);
void			glwUniform1f									(GLint location, GLfloat v0);
void			glwUniform1fv									(GLint location, GLsizei count, const GLfloat *value);
void			glwUniform1i									(GLint location, GLint v0);
void			glwUniform1iv									(GLint location, GLsizei count, const GLint *value);
void			glwUniform1ui									(GLint location, GLuint v0);
void			glwUniform1uiv									(GLint location, GLsizei count, const GLuint *value);
void			glwUniform2d									(GLint location, GLdouble x, GLdouble y);
void			glwUniform2dv									(GLint location, GLsizei count, const GLdouble *value);
void			glwUniform2f									(GLint location, GLfloat v0, GLfloat v1);
void			glwUniform2fv									(GLint location, GLsizei count, const GLfloat *value);
void			glwUniform2i									(GLint location, GLint v0, GLint v1);
void			glwUniform2iv									(GLint location, GLsizei count, const GLint *value);
void			glwUniform2ui									(GLint location, GLuint v0, GLuint v1);
void			glwUniform2uiv									(GLint location, GLsizei count, const GLuint *value);
void			glwUniform3d									(GLint location, GLdouble x, GLdouble y, GLdouble z);
void			glwUniform3dv									(GLint location, GLsizei count, const GLdouble *value);
void			glwUniform3f									(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
void			glwUniform3fv									(GLint location, GLsizei count, const GLfloat *value);
void			glwUniform3i									(GLint location, GLint v0, GLint v1, GLint v2);
void			glwUniform3iv									(GLint location, GLsizei count, const GLint *value);
void			glwUniform3ui									(GLint location, GLuint v0, GLuint v1, GLuint v2);
void			glwUniform3uiv									(GLint location, GLsizei count, const GLuint *value);
void			glwUniform4d									(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void			glwUniform4dv									(GLint location, GLsizei count, const GLdouble *value);
void			glwUniform4f									(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
void			glwUniform4fv									(GLint location, GLsizei count, const GLfloat *value);
void			glwUniform4i									(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
void			glwUniform4iv									(GLint location, GLsizei count, const GLint *value);
void			glwUniform4ui									(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
void			glwUniform4uiv									(GLint location, GLsizei count, const GLuint *value);
void			glwUniformBlockBinding							(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
void			glwUniformMatrix2dv								(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix2fv								(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix2x3dv							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix2x3fv							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix2x4dv							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix2x4fv							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix3dv								(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix3fv								(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix3x2dv							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix3x2fv							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix3x4dv							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix3x4fv							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix4dv								(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix4fv								(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix4x2dv							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix4x2fv							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformMatrix4x3dv							(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
void			glwUniformMatrix4x3fv							(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void			glwUniformSubroutinesuiv						(GLenum shadertype, GLsizei count, const GLuint *indices);
GLboolean		glwUnmapBuffer									(GLenum target);
GLboolean		glwUnmapNamedBuffer								(GLuint buffer);
void			glwUseProgram									(GLuint program);
void			glwUseProgramStages								(GLuint pipeline, GLbitfield stages, GLuint program);
void			glwValidateProgram								(GLuint program);
void			glwValidateProgramPipeline						(GLuint pipeline);
void			glwVertexArrayAttribBinding						(GLuint vaobj, GLuint attribindex, GLuint bindingindex);
void			glwVertexArrayAttribFormat						(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
void			glwVertexArrayAttribIFormat						(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
void			glwVertexArrayAttribLFormat						(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
void			glwVertexArrayBindingDivisor					(GLuint vaobj, GLuint bindingindex, GLuint divisor);
void			glwVertexArrayElementBuffer						(GLuint vaobj, GLuint buffer);
void			glwVertexArrayVertexBuffer						(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
void			glwVertexArrayVertexBuffers						(GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
void			glwVertexAttrib1d								(GLuint index, GLdouble x);
void			glwVertexAttrib1dv								(GLuint index, const GLdouble *v);
void			glwVertexAttrib1f								(GLuint index, GLfloat x);
void			glwVertexAttrib1fv								(GLuint index, const GLfloat *v);
void			glwVertexAttrib1s								(GLuint index, GLshort x);
void			glwVertexAttrib1sv								(GLuint index, const GLshort *v);
void			glwVertexAttrib2d								(GLuint index, GLdouble x, GLdouble y);
void			glwVertexAttrib2dv								(GLuint index, const GLdouble *v);
void			glwVertexAttrib2f								(GLuint index, GLfloat x, GLfloat y);
void			glwVertexAttrib2fv								(GLuint index, const GLfloat *v);
void			glwVertexAttrib2s								(GLuint index, GLshort x, GLshort y);
void			glwVertexAttrib2sv								(GLuint index, const GLshort *v);
void			glwVertexAttrib3d								(GLuint index, GLdouble x, GLdouble y, GLdouble z);
void			glwVertexAttrib3dv								(GLuint index, const GLdouble *v);
void			glwVertexAttrib3f								(GLuint index, GLfloat x, GLfloat y, GLfloat z);
void			glwVertexAttrib3fv								(GLuint index, const GLfloat *v);
void			glwVertexAttrib3s								(GLuint index, GLshort x, GLshort y, GLshort z);
void			glwVertexAttrib3sv								(GLuint index, const GLshort *v);
void			glwVertexAttrib4Nbv								(GLuint index, const GLbyte *v);
void			glwVertexAttrib4Niv								(GLuint index, const GLint *v);
void			glwVertexAttrib4Nsv								(GLuint index, const GLshort *v);
void			glwVertexAttrib4Nub								(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
void			glwVertexAttrib4Nubv							(GLuint index, const GLubyte *v);
void			glwVertexAttrib4Nuiv							(GLuint index, const GLuint *v);
void			glwVertexAttrib4Nusv							(GLuint index, const GLushort *v);
void			glwVertexAttrib4bv								(GLuint index, const GLbyte *v);
void			glwVertexAttrib4d								(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void			glwVertexAttrib4dv								(GLuint index, const GLdouble *v);
void			glwVertexAttrib4f								(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void			glwVertexAttrib4fv								(GLuint index, const GLfloat *v);
void			glwVertexAttrib4iv								(GLuint index, const GLint *v);
void			glwVertexAttrib4s								(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
void			glwVertexAttrib4sv								(GLuint index, const GLshort *v);
void			glwVertexAttrib4ubv								(GLuint index, const GLubyte *v);
void			glwVertexAttrib4uiv								(GLuint index, const GLuint *v);
void			glwVertexAttrib4usv								(GLuint index, const GLushort *v);
void			glwVertexAttribBinding							(GLuint attribindex, GLuint bindingindex);
void			glwVertexAttribDivisor							(GLuint index, GLuint divisor);
void			glwVertexAttribFormat							(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
void			glwVertexAttribI1i								(GLuint index, GLint x);
void			glwVertexAttribI1iv								(GLuint index, const GLint *v);
void			glwVertexAttribI1ui								(GLuint index, GLuint x);
void			glwVertexAttribI1uiv							(GLuint index, const GLuint *v);
void			glwVertexAttribI2i								(GLuint index, GLint x, GLint y);
void			glwVertexAttribI2iv								(GLuint index, const GLint *v);
void			glwVertexAttribI2ui								(GLuint index, GLuint x, GLuint y);
void			glwVertexAttribI2uiv							(GLuint index, const GLuint *v);
void			glwVertexAttribI3i								(GLuint index, GLint x, GLint y, GLint z);
void			glwVertexAttribI3iv								(GLuint index, const GLint *v);
void			glwVertexAttribI3ui								(GLuint index, GLuint x, GLuint y, GLuint z);
void			glwVertexAttribI3uiv							(GLuint index, const GLuint *v);
void			glwVertexAttribI4bv								(GLuint index, const GLbyte *v);
void			glwVertexAttribI4i								(GLuint index, GLint x, GLint y, GLint z, GLint w);
void			glwVertexAttribI4iv								(GLuint index, const GLint *v);
void			glwVertexAttribI4sv								(GLuint index, const GLshort *v);
void			glwVertexAttribI4ubv							(GLuint index, const GLubyte *v);
void			glwVertexAttribI4ui								(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
void			glwVertexAttribI4uiv							(GLuint index, const GLuint *v);
void			glwVertexAttribI4usv							(GLuint index, const GLushort *v);
void			glwVertexAttribIFormat							(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
void			glwVertexAttribIPointer							(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
void			glwVertexAttribL1d								(GLuint index, GLdouble x);
void			glwVertexAttribL1dv								(GLuint index, const GLdouble *v);
void			glwVertexAttribL2d								(GLuint index, GLdouble x, GLdouble y);
void			glwVertexAttribL2dv								(GLuint index, const GLdouble *v);
void			glwVertexAttribL3d								(GLuint index, GLdouble x, GLdouble y, GLdouble z);
void			glwVertexAttribL3dv								(GLuint index, const GLdouble *v);
void			glwVertexAttribL4d								(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void			glwVertexAttribL4dv								(GLuint index, const GLdouble *v);
void			glwVertexAttribLFormat							(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
void			glwVertexAttribLPointer							(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);
void			glwVertexAttribP1ui								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void			glwVertexAttribP1uiv							(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void			glwVertexAttribP2ui								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void			glwVertexAttribP2uiv							(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void			glwVertexAttribP3ui								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void			glwVertexAttribP3uiv							(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void			glwVertexAttribP4ui								(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void			glwVertexAttribP4uiv							(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void			glwVertexAttribPointer							(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
void			glwVertexBindingDivisor							(GLuint bindingindex, GLuint divisor);
void			glwViewport										(GLint x, GLint y, GLsizei width, GLsizei height);
void			glwViewportArrayv								(GLuint first, GLsizei count, const GLfloat *v);
void			glwViewportIndexedf								(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
void			glwViewportIndexedfv							(GLuint index, const GLfloat *v);
void			glwWaitSync										(GLsync sync, GLbitfield flags, GLuint64 timeout);
