/* 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.
 */
gl->activeTexture						= &glActiveTexture;
gl->attachShader						= &glAttachShader;
gl->bindAttribLocation					= &glBindAttribLocation;
gl->bindBuffer							= &glBindBuffer;
gl->bindFramebuffer						= &glBindFramebuffer;
gl->bindRenderbuffer					= &glBindRenderbuffer;
gl->bindTexture							= &glBindTexture;
gl->blendColor							= &glBlendColor;
gl->blendEquation						= &glBlendEquation;
gl->blendEquationSeparate				= &glBlendEquationSeparate;
gl->blendFunc							= &glBlendFunc;
gl->blendFuncSeparate					= &glBlendFuncSeparate;
gl->bufferData							= &glBufferData;
gl->bufferSubData						= &glBufferSubData;
gl->checkFramebufferStatus				= &glCheckFramebufferStatus;
gl->clear								= &glClear;
gl->clearColor							= &glClearColor;
gl->clearDepthf							= &glClearDepthf;
gl->clearStencil						= &glClearStencil;
gl->colorMask							= &glColorMask;
gl->compileShader						= &glCompileShader;
gl->compressedTexImage2D				= &glCompressedTexImage2D;
gl->compressedTexSubImage2D				= &glCompressedTexSubImage2D;
gl->copyTexImage2D						= &glCopyTexImage2D;
gl->copyTexSubImage2D					= &glCopyTexSubImage2D;
gl->createProgram						= &glCreateProgram;
gl->createShader						= &glCreateShader;
gl->cullFace							= &glCullFace;
gl->deleteBuffers						= &glDeleteBuffers;
gl->deleteFramebuffers					= &glDeleteFramebuffers;
gl->deleteProgram						= &glDeleteProgram;
gl->deleteRenderbuffers					= &glDeleteRenderbuffers;
gl->deleteShader						= &glDeleteShader;
gl->deleteTextures						= &glDeleteTextures;
gl->depthFunc							= &glDepthFunc;
gl->depthMask							= &glDepthMask;
gl->depthRangef							= &glDepthRangef;
gl->detachShader						= &glDetachShader;
gl->disable								= &glDisable;
gl->disableVertexAttribArray			= &glDisableVertexAttribArray;
gl->drawArrays							= &glDrawArrays;
gl->drawElements						= &glDrawElements;
gl->enable								= &glEnable;
gl->enableVertexAttribArray				= &glEnableVertexAttribArray;
gl->finish								= &glFinish;
gl->flush								= &glFlush;
gl->framebufferRenderbuffer				= &glFramebufferRenderbuffer;
gl->framebufferTexture2D				= &glFramebufferTexture2D;
gl->frontFace							= &glFrontFace;
gl->genBuffers							= &glGenBuffers;
gl->genFramebuffers						= &glGenFramebuffers;
gl->genRenderbuffers					= &glGenRenderbuffers;
gl->genTextures							= &glGenTextures;
gl->generateMipmap						= &glGenerateMipmap;
gl->getActiveAttrib						= &glGetActiveAttrib;
gl->getActiveUniform					= &glGetActiveUniform;
gl->getAttachedShaders					= &glGetAttachedShaders;
gl->getAttribLocation					= &glGetAttribLocation;
gl->getBooleanv							= &glGetBooleanv;
gl->getBufferParameteriv				= &glGetBufferParameteriv;
gl->getError							= &glGetError;
gl->getFloatv							= &glGetFloatv;
gl->getFramebufferAttachmentParameteriv	= &glGetFramebufferAttachmentParameteriv;
gl->getIntegerv							= &glGetIntegerv;
gl->getProgramInfoLog					= &glGetProgramInfoLog;
gl->getProgramiv						= &glGetProgramiv;
gl->getRenderbufferParameteriv			= &glGetRenderbufferParameteriv;
gl->getShaderInfoLog					= &glGetShaderInfoLog;
gl->getShaderPrecisionFormat			= &glGetShaderPrecisionFormat;
gl->getShaderSource						= &glGetShaderSource;
gl->getShaderiv							= &glGetShaderiv;
gl->getString							= &glGetString;
gl->getTexParameterfv					= &glGetTexParameterfv;
gl->getTexParameteriv					= &glGetTexParameteriv;
gl->getUniformLocation					= &glGetUniformLocation;
gl->getUniformfv						= &glGetUniformfv;
gl->getUniformiv						= &glGetUniformiv;
gl->getVertexAttribPointerv				= &glGetVertexAttribPointerv;
gl->getVertexAttribfv					= &glGetVertexAttribfv;
gl->getVertexAttribiv					= &glGetVertexAttribiv;
gl->hint								= &glHint;
gl->isBuffer							= &glIsBuffer;
gl->isEnabled							= &glIsEnabled;
gl->isFramebuffer						= &glIsFramebuffer;
gl->isProgram							= &glIsProgram;
gl->isRenderbuffer						= &glIsRenderbuffer;
gl->isShader							= &glIsShader;
gl->isTexture							= &glIsTexture;
gl->lineWidth							= &glLineWidth;
gl->linkProgram							= &glLinkProgram;
gl->pixelStorei							= &glPixelStorei;
gl->polygonOffset						= &glPolygonOffset;
gl->readPixels							= &glReadPixels;
gl->releaseShaderCompiler				= &glReleaseShaderCompiler;
gl->renderbufferStorage					= &glRenderbufferStorage;
gl->sampleCoverage						= &glSampleCoverage;
gl->scissor								= &glScissor;
gl->shaderBinary						= &glShaderBinary;
gl->shaderSource						= (glShaderSourceFunc)&glShaderSource;
gl->stencilFunc							= &glStencilFunc;
gl->stencilFuncSeparate					= &glStencilFuncSeparate;
gl->stencilMask							= &glStencilMask;
gl->stencilMaskSeparate					= &glStencilMaskSeparate;
gl->stencilOp							= &glStencilOp;
gl->stencilOpSeparate					= &glStencilOpSeparate;
gl->texImage2D							= &glTexImage2D;
gl->texParameterf						= &glTexParameterf;
gl->texParameterfv						= &glTexParameterfv;
gl->texParameteri						= &glTexParameteri;
gl->texParameteriv						= &glTexParameteriv;
gl->texSubImage2D						= &glTexSubImage2D;
gl->uniform1f							= &glUniform1f;
gl->uniform1fv							= &glUniform1fv;
gl->uniform1i							= &glUniform1i;
gl->uniform1iv							= &glUniform1iv;
gl->uniform2f							= &glUniform2f;
gl->uniform2fv							= &glUniform2fv;
gl->uniform2i							= &glUniform2i;
gl->uniform2iv							= &glUniform2iv;
gl->uniform3f							= &glUniform3f;
gl->uniform3fv							= &glUniform3fv;
gl->uniform3i							= &glUniform3i;
gl->uniform3iv							= &glUniform3iv;
gl->uniform4f							= &glUniform4f;
gl->uniform4fv							= &glUniform4fv;
gl->uniform4i							= &glUniform4i;
gl->uniform4iv							= &glUniform4iv;
gl->uniformMatrix2fv					= &glUniformMatrix2fv;
gl->uniformMatrix3fv					= &glUniformMatrix3fv;
gl->uniformMatrix4fv					= &glUniformMatrix4fv;
gl->useProgram							= &glUseProgram;
gl->validateProgram						= &glValidateProgram;
gl->vertexAttrib1f						= &glVertexAttrib1f;
gl->vertexAttrib1fv						= &glVertexAttrib1fv;
gl->vertexAttrib2f						= &glVertexAttrib2f;
gl->vertexAttrib2fv						= &glVertexAttrib2fv;
gl->vertexAttrib3f						= &glVertexAttrib3f;
gl->vertexAttrib3fv						= &glVertexAttrib3fv;
gl->vertexAttrib4f						= &glVertexAttrib4f;
gl->vertexAttrib4fv						= &glVertexAttrib4fv;
gl->vertexAttribPointer					= &glVertexAttribPointer;
gl->viewport							= &glViewport;
