blob: 4c357dde981f136f058d8837078c4130d60d6a65 [file] [log] [blame]
/*
* Copyright (C) 2010 Tieto Corporation.
* Copyright (C) 2011 Igalia S.L.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef OpenGLShims_h
#define OpenGLShims_h
#if OS(WINDOWS)
#include <GL/gl.h>
#include <GLES2/gl2.h>
#else
#include <GL/gl.h>
#include <GL/glext.h>
#endif
#if defined(GL_ES_VERSION_2_0)
// Some openGL ES systems miss this typedef.
typedef char GLchar;
#endif
typedef struct _OpenGLFunctionTable OpenGLFunctionTable;
namespace WebCore {
bool initializeOpenGLShims();
OpenGLFunctionTable* openGLFunctionTable();
}
#if OS(WINDOWS)
#define GLAPIENTRY __stdcall
typedef char GLchar;
#else
#define GLAPIENTRY
#endif
typedef void (GLAPIENTRY *glActiveTextureType) (GLenum);
typedef void (GLAPIENTRY *glAttachShaderType) (GLuint, GLuint);
typedef void (GLAPIENTRY *glBindAttribLocationType) (GLuint, GLuint, const char*);
typedef void (GLAPIENTRY *glBindBufferType) (GLenum, GLuint);
typedef void (GLAPIENTRY *glBindFramebufferType) (GLenum, GLuint);
typedef void (GLAPIENTRY *glBindRenderbufferType) (GLenum, GLuint);
typedef void (GLAPIENTRY *glBindVertexArrayType) (GLuint);
typedef void (GLAPIENTRY *glBlendColorType) (GLclampf, GLclampf, GLclampf, GLclampf);
typedef void (GLAPIENTRY *glBlendEquationType) (GLenum);
typedef void (GLAPIENTRY *glBlendEquationSeparateType)(GLenum, GLenum);
typedef void (GLAPIENTRY *glBlendFuncSeparateType)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
typedef void (GLAPIENTRY *glBlitFramebufferType) (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
typedef void (GLAPIENTRY *glBufferDataType) (GLenum, GLsizeiptr, const GLvoid*, GLenum);
typedef void (GLAPIENTRY *glBufferSubDataType) (GLenum, GLintptr, GLsizeiptr, const GLvoid*);
typedef GLenum (GLAPIENTRY *glCheckFramebufferStatusType) (GLenum);
typedef void (GLAPIENTRY *glCompileShaderType) (GLuint);
typedef void (GLAPIENTRY *glCompressedTexImage2DType) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
typedef void (GLAPIENTRY *glCompressedTexSubImage2DType) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
typedef GLuint (GLAPIENTRY *glCreateProgramType) ();
typedef GLuint (GLAPIENTRY *glCreateShaderType) (GLenum);
typedef void (GLAPIENTRY *glDeleteBuffersType) (GLsizei, const GLuint*);
typedef void (GLAPIENTRY *glDeleteFramebuffersType) (GLsizei n, const GLuint*);
typedef void (GLAPIENTRY *glDeleteProgramType) (GLuint);
typedef void (GLAPIENTRY *glDeleteRenderbuffersType) (GLsizei n, const GLuint*);
typedef void (GLAPIENTRY *glDeleteShaderType) (GLuint);
typedef void (GLAPIENTRY *glDeleteVertexArraysType) (GLsizei, const GLuint*);
typedef void (GLAPIENTRY *glDetachShaderType) (GLuint, GLuint);
typedef void (GLAPIENTRY *glDisableVertexAttribArrayType) (GLuint);
typedef void (GLAPIENTRY *glDrawArraysInstancedType) (GLenum, GLint, GLsizei, GLsizei);
typedef void (GLAPIENTRY *glDrawBuffersType) (GLsizei, const GLenum*);
typedef void (GLAPIENTRY *glDrawElementsInstancedType) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei);
typedef void (GLAPIENTRY *glEnableVertexAttribArrayType) (GLuint);
typedef void (GLAPIENTRY *glFramebufferRenderbufferType) (GLenum, GLenum, GLenum, GLuint);
typedef void (GLAPIENTRY *glFramebufferTexture2DType) (GLenum, GLenum, GLenum, GLuint, GLint);
typedef void (GLAPIENTRY *glGenBuffersType) (GLsizei, GLuint*);
typedef void (GLAPIENTRY *glGenerateMipmapType) (GLenum target);
typedef void (GLAPIENTRY *glGenFramebuffersType) (GLsizei, GLuint*);
typedef void (GLAPIENTRY *glGenRenderbuffersType) (GLsizei, GLuint*);
typedef void (GLAPIENTRY *glGenVertexArraysType) (GLsizei, GLuint*);
typedef void (GLAPIENTRY *glGetActiveAttribType) (GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*);
typedef void (GLAPIENTRY *glGetActiveUniformType) (GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*);
typedef void (GLAPIENTRY *glGetAttachedShadersType) (GLuint, GLsizei, GLsizei*, GLuint*);
typedef GLint (GLAPIENTRY *glGetAttribLocationType) (GLuint, const char*);
typedef void (GLAPIENTRY *glGetBufferParameterivType) (GLenum, GLenum, GLint*);
typedef void (GLAPIENTRY *glGetFramebufferAttachmentParameterivType) (GLenum, GLenum, GLenum, GLint* params);
typedef void (GLAPIENTRY *glGetProgramInfoLogType) (GLuint, GLsizei, GLsizei*, char*);
typedef void (GLAPIENTRY *glGetProgramivType) (GLuint, GLenum, GLint*);
typedef void (GLAPIENTRY *glGetRenderbufferParameterivType) (GLenum, GLenum, GLint*);
typedef void (GLAPIENTRY *glGetShaderInfoLogType) (GLuint, GLsizei, GLsizei*, char*);
typedef void (GLAPIENTRY *glGetShaderivType) (GLuint, GLenum, GLint*);
typedef void (GLAPIENTRY *glGetShaderSourceType) (GLuint, GLsizei, GLsizei*, char*);
typedef const GLubyte* (GLAPIENTRY *glGetStringType) (GLenum);
typedef const GLubyte* (GLAPIENTRY *glGetStringiType) (GLenum, GLuint);
typedef GLint (GLAPIENTRY *glGetUniformLocationType) (GLuint, const char*);
typedef void (GLAPIENTRY *glGetUniformfvType) (GLuint, GLint, GLfloat*);
typedef void (GLAPIENTRY *glGetUniformivType) (GLuint, GLint, GLint*);
typedef void (GLAPIENTRY *glGetVertexAttribfvType) (GLuint, GLenum, GLfloat*);
typedef void (GLAPIENTRY *glGetVertexAttribivType) (GLuint, GLenum, GLint*);
typedef void (GLAPIENTRY *glGetVertexAttribPointervType) (GLuint, GLenum, GLvoid**);
typedef GLboolean (GLAPIENTRY *glIsBufferType) (GLuint);
typedef GLboolean (GLAPIENTRY *glIsFramebufferType) (GLuint);
typedef GLboolean (GLAPIENTRY *glIsProgramType) (GLuint);
typedef GLboolean (GLAPIENTRY *glIsRenderbufferType) (GLuint);
typedef GLboolean (GLAPIENTRY *glIsShaderType) (GLuint);
typedef GLboolean (GLAPIENTRY *glIsVertexArrayType) (GLuint);
typedef void (GLAPIENTRY *glLinkProgramType) (GLuint);
typedef void (GLAPIENTRY *glRenderbufferStorageType) (GLenum, GLenum, GLsizei, GLsizei);
typedef void (GLAPIENTRY *glRenderbufferStorageMultisampleType) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (GLAPIENTRY *glSampleCoverageType) (GLclampf, GLboolean);
typedef void (GLAPIENTRY *glShaderSourceType) (GLuint, GLsizei, const char**, const GLint*);
typedef void (GLAPIENTRY *glStencilFuncSeparateType) (GLenum, GLenum, GLint, GLuint);
typedef void (GLAPIENTRY *glStencilMaskSeparateType) (GLenum, GLuint);
typedef void (GLAPIENTRY *glStencilOpSeparateType) (GLenum, GLenum, GLenum, GLenum);
typedef void (GLAPIENTRY *glUniform1fType) (GLint, GLfloat);
typedef void (GLAPIENTRY *glUniform1fvType) (GLint, GLsizei, const GLfloat*);
typedef void (GLAPIENTRY *glUniform1iType) (GLint, GLint);
typedef void (GLAPIENTRY *glUniform1ivType) (GLint, GLsizei, const GLint*);
typedef void (GLAPIENTRY *glUniform2fType) (GLint, GLfloat, GLfloat);
typedef void (GLAPIENTRY *glUniform2fvType) (GLint, GLsizei, const GLfloat*);
typedef void (GLAPIENTRY *glUniform2iType) (GLint, GLint, GLint);
typedef void (GLAPIENTRY *glUniform2ivType) (GLint, GLsizei, const GLint*);
typedef void (GLAPIENTRY *glUniform3fType) (GLint, GLfloat, GLfloat, GLfloat);
typedef void (GLAPIENTRY *glUniform3fvType) (GLint, GLsizei, const GLfloat*);
typedef void (GLAPIENTRY *glUniform3iType) (GLint, GLint, GLint, GLint);
typedef void (GLAPIENTRY *glUniform3ivType) (GLint, GLsizei, const GLint*);
typedef void (GLAPIENTRY *glUniform4fType) (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
typedef void (GLAPIENTRY *glUniform4fvType) (GLint, GLsizei, const GLfloat*);
typedef void (GLAPIENTRY *glUniform4iType) (GLint, GLint, GLint, GLint, GLint);
typedef void (GLAPIENTRY *glUniform4ivType) (GLint, GLsizei, const GLint*);
typedef void (GLAPIENTRY *glUniformMatrix2fvType) (GLint, GLsizei, GLboolean, const GLfloat*);
typedef void (GLAPIENTRY *glUniformMatrix3fvType) (GLint, GLsizei, GLboolean, const GLfloat*);
typedef void (GLAPIENTRY *glUniformMatrix4fvType) (GLint, GLsizei, GLboolean, const GLfloat*);
typedef void (GLAPIENTRY *glUseProgramType) (GLuint);
typedef void (GLAPIENTRY *glValidateProgramType) (GLuint);
typedef void (GLAPIENTRY *glVertexAttrib1fType) (GLuint, const GLfloat);
typedef void (GLAPIENTRY *glVertexAttrib1fvType) (GLuint, const GLfloat*);
typedef void (GLAPIENTRY *glVertexAttrib2fType) (GLuint, const GLfloat, const GLfloat);
typedef void (GLAPIENTRY *glVertexAttrib2fvType) (GLuint, const GLfloat*);
typedef void (GLAPIENTRY *glVertexAttrib3fType) (GLuint, const GLfloat, const GLfloat, const GLfloat);
typedef void (GLAPIENTRY *glVertexAttrib3fvType) (GLuint, const GLfloat*);
typedef void (GLAPIENTRY *glVertexAttrib4fType) (GLuint, const GLfloat, const GLfloat, const GLfloat, const GLfloat);
typedef void (GLAPIENTRY *glVertexAttrib4fvType) (GLuint, const GLfloat*);
typedef void (GLAPIENTRY *glVertexAttribDivisorType) (GLuint, GLuint);
typedef void (GLAPIENTRY *glVertexAttribPointerType) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*);
#define FUNCTION_TABLE_ENTRY(FunctionName) FunctionName##Type FunctionName
typedef struct _OpenGLFunctionTable {
FUNCTION_TABLE_ENTRY(glActiveTexture);
FUNCTION_TABLE_ENTRY(glAttachShader);
FUNCTION_TABLE_ENTRY(glBindAttribLocation);
FUNCTION_TABLE_ENTRY(glBindBuffer);
FUNCTION_TABLE_ENTRY(glBindFramebuffer);
FUNCTION_TABLE_ENTRY(glBindRenderbuffer);
FUNCTION_TABLE_ENTRY(glBindVertexArray);
FUNCTION_TABLE_ENTRY(glBlendColor);
FUNCTION_TABLE_ENTRY(glBlendEquation);
FUNCTION_TABLE_ENTRY(glBlendEquationSeparate);
FUNCTION_TABLE_ENTRY(glBlendFuncSeparate);
FUNCTION_TABLE_ENTRY(glBlitFramebuffer);
FUNCTION_TABLE_ENTRY(glBufferData);
FUNCTION_TABLE_ENTRY(glBufferSubData);
FUNCTION_TABLE_ENTRY(glCheckFramebufferStatus);
FUNCTION_TABLE_ENTRY(glCompileShader);
FUNCTION_TABLE_ENTRY(glCompressedTexImage2D);
FUNCTION_TABLE_ENTRY(glCompressedTexSubImage2D);
FUNCTION_TABLE_ENTRY(glCreateProgram);
FUNCTION_TABLE_ENTRY(glCreateShader);
FUNCTION_TABLE_ENTRY(glDeleteBuffers);
FUNCTION_TABLE_ENTRY(glDeleteFramebuffers);
FUNCTION_TABLE_ENTRY(glDeleteProgram);
FUNCTION_TABLE_ENTRY(glDeleteRenderbuffers);
FUNCTION_TABLE_ENTRY(glDeleteShader);
FUNCTION_TABLE_ENTRY(glDeleteVertexArrays);
FUNCTION_TABLE_ENTRY(glDetachShader);
FUNCTION_TABLE_ENTRY(glDisableVertexAttribArray);
FUNCTION_TABLE_ENTRY(glDrawArraysInstanced);
FUNCTION_TABLE_ENTRY(glDrawBuffers);
FUNCTION_TABLE_ENTRY(glDrawElementsInstanced);
FUNCTION_TABLE_ENTRY(glEnableVertexAttribArray);
FUNCTION_TABLE_ENTRY(glFramebufferRenderbuffer);
FUNCTION_TABLE_ENTRY(glFramebufferTexture2D);
FUNCTION_TABLE_ENTRY(glGenBuffers);
FUNCTION_TABLE_ENTRY(glGenerateMipmap);
FUNCTION_TABLE_ENTRY(glGenFramebuffers);
FUNCTION_TABLE_ENTRY(glGenRenderbuffers);
FUNCTION_TABLE_ENTRY(glGenVertexArrays);
FUNCTION_TABLE_ENTRY(glGetActiveAttrib);
FUNCTION_TABLE_ENTRY(glGetActiveUniform);
FUNCTION_TABLE_ENTRY(glGetAttachedShaders);
FUNCTION_TABLE_ENTRY(glGetAttribLocation);
FUNCTION_TABLE_ENTRY(glGetBufferParameteriv);
FUNCTION_TABLE_ENTRY(glGetFramebufferAttachmentParameteriv);
FUNCTION_TABLE_ENTRY(glGetProgramInfoLog);
FUNCTION_TABLE_ENTRY(glGetProgramiv);
FUNCTION_TABLE_ENTRY(glGetRenderbufferParameteriv);
FUNCTION_TABLE_ENTRY(glGetShaderInfoLog);
FUNCTION_TABLE_ENTRY(glGetShaderiv);
FUNCTION_TABLE_ENTRY(glGetShaderSource);
FUNCTION_TABLE_ENTRY(glGetString);
FUNCTION_TABLE_ENTRY(glGetStringi);
FUNCTION_TABLE_ENTRY(glGetUniformfv);
FUNCTION_TABLE_ENTRY(glGetUniformiv);
FUNCTION_TABLE_ENTRY(glGetUniformLocation);
FUNCTION_TABLE_ENTRY(glGetVertexAttribfv);
FUNCTION_TABLE_ENTRY(glGetVertexAttribiv);
FUNCTION_TABLE_ENTRY(glGetVertexAttribPointerv);
FUNCTION_TABLE_ENTRY(glIsBuffer);
FUNCTION_TABLE_ENTRY(glIsFramebuffer);
FUNCTION_TABLE_ENTRY(glIsProgram);
FUNCTION_TABLE_ENTRY(glIsRenderbuffer);
FUNCTION_TABLE_ENTRY(glIsShader);
FUNCTION_TABLE_ENTRY(glIsVertexArray);
FUNCTION_TABLE_ENTRY(glLinkProgram);
FUNCTION_TABLE_ENTRY(glRenderbufferStorage);
FUNCTION_TABLE_ENTRY(glRenderbufferStorageMultisample);
FUNCTION_TABLE_ENTRY(glSampleCoverage);
FUNCTION_TABLE_ENTRY(glShaderSource);
FUNCTION_TABLE_ENTRY(glStencilFuncSeparate);
FUNCTION_TABLE_ENTRY(glStencilMaskSeparate);
FUNCTION_TABLE_ENTRY(glStencilOpSeparate);
FUNCTION_TABLE_ENTRY(glUniform1f);
FUNCTION_TABLE_ENTRY(glUniform1fv);
FUNCTION_TABLE_ENTRY(glUniform1i);
FUNCTION_TABLE_ENTRY(glUniform1iv);
FUNCTION_TABLE_ENTRY(glUniform2f);
FUNCTION_TABLE_ENTRY(glUniform2fv);
FUNCTION_TABLE_ENTRY(glUniform2i);
FUNCTION_TABLE_ENTRY(glUniform2iv);
FUNCTION_TABLE_ENTRY(glUniform3f);
FUNCTION_TABLE_ENTRY(glUniform3fv);
FUNCTION_TABLE_ENTRY(glUniform3i);
FUNCTION_TABLE_ENTRY(glUniform3iv);
FUNCTION_TABLE_ENTRY(glUniform4f);
FUNCTION_TABLE_ENTRY(glUniform4fv);
FUNCTION_TABLE_ENTRY(glUniform4i);
FUNCTION_TABLE_ENTRY(glUniform4iv);
FUNCTION_TABLE_ENTRY(glUniformMatrix2fv);
FUNCTION_TABLE_ENTRY(glUniformMatrix3fv);
FUNCTION_TABLE_ENTRY(glUniformMatrix4fv);
FUNCTION_TABLE_ENTRY(glUseProgram);
FUNCTION_TABLE_ENTRY(glValidateProgram);
FUNCTION_TABLE_ENTRY(glVertexAttrib1f);
FUNCTION_TABLE_ENTRY(glVertexAttrib1fv);
FUNCTION_TABLE_ENTRY(glVertexAttrib2f);
FUNCTION_TABLE_ENTRY(glVertexAttrib2fv);
FUNCTION_TABLE_ENTRY(glVertexAttrib3f);
FUNCTION_TABLE_ENTRY(glVertexAttrib3fv);
FUNCTION_TABLE_ENTRY(glVertexAttrib4f);
FUNCTION_TABLE_ENTRY(glVertexAttrib4fv);
FUNCTION_TABLE_ENTRY(glVertexAttribDivisor);
FUNCTION_TABLE_ENTRY(glVertexAttribPointer);
} OpenGLFunctionTable;
// We disable the shims for OpenGLShims.cpp, so that we can set them.
#ifndef DISABLE_SHIMS
#define LOOKUP_GL_FUNCTION(Function) WebCore::openGLFunctionTable()->Function
#define glActiveTexture LOOKUP_GL_FUNCTION(glActiveTexture)
#define glAttachShader LOOKUP_GL_FUNCTION(glAttachShader)
#define glBindAttribLocation LOOKUP_GL_FUNCTION(glBindAttribLocation)
#define glBindBuffer LOOKUP_GL_FUNCTION(glBindBuffer)
#define glBindFramebufferEXT glBindFramebuffer
#define glBindFramebuffer LOOKUP_GL_FUNCTION(glBindFramebuffer)
#define glBindRenderbufferEXT glBindRenderbuffer
#define glBindRenderbuffer LOOKUP_GL_FUNCTION(glBindRenderbuffer)
#define glBindVertexArrayOES glBindVertexArray
#define glBindVertexArray LOOKUP_GL_FUNCTION(glBindVertexArray)
#define glBlendColor LOOKUP_GL_FUNCTION(glBlendColor)
#define glBlendEquation LOOKUP_GL_FUNCTION(glBlendEquation)
#define glBlendEquationSeparate LOOKUP_GL_FUNCTION(glBlendEquationSeparate)
#define glBlendFuncSeparate LOOKUP_GL_FUNCTION(glBlendFuncSeparate)
#define glBlitFramebufferEXT glBlitFramebuffer
#define glBlitFramebuffer LOOKUP_GL_FUNCTION(glBlitFramebuffer)
#define glBufferData LOOKUP_GL_FUNCTION(glBufferData)
#define glBufferSubData LOOKUP_GL_FUNCTION(glBufferSubData)
#define glCheckFramebufferStatusEXT glCheckFramebufferStatus
#define glCheckFramebufferStatus LOOKUP_GL_FUNCTION(glCheckFramebufferStatus)
#define glCompileShader LOOKUP_GL_FUNCTION(glCompileShader)
#define glCompressedTexImage2D LOOKUP_GL_FUNCTION(glCompressedTexImage2D)
#define glCompressedTexSubImage2D LOOKUP_GL_FUNCTION(glCompressedTexSubImage2D)
#define glCreateProgram LOOKUP_GL_FUNCTION(glCreateProgram)
#define glCreateShader LOOKUP_GL_FUNCTION(glCreateShader)
#define glDeleteBuffers LOOKUP_GL_FUNCTION(glDeleteBuffers)
#define glDeleteFramebuffersEXT glDeleteFramebuffers
#define glDeleteFramebuffers LOOKUP_GL_FUNCTION(glDeleteFramebuffers)
#define glDeleteProgram LOOKUP_GL_FUNCTION(glDeleteProgram)
#define glDeleteRenderbuffersEXT glDeleteRenderbuffers
#define glDeleteRenderbuffers LOOKUP_GL_FUNCTION(glDeleteRenderbuffers)
#define glDeleteShader LOOKUP_GL_FUNCTION(glDeleteShader)
#define glDeleteVertexArraysOES glDeleteVertexArrays
#define glDeleteVertexArrays LOOKUP_GL_FUNCTION(glDeleteVertexArrays)
#define glDetachShader LOOKUP_GL_FUNCTION(glDetachShader)
#define glDisableVertexAttribArray LOOKUP_GL_FUNCTION(glDisableVertexAttribArray)
#define glDrawArraysInstancedEXT glDrawArraysInstanced
#define glDrawArraysInstanced LOOKUP_GL_FUNCTION(glDrawArraysInstanced)
#define glDrawBuffersEXT glDrawBuffers
#define glDrawBuffers LOOKUP_GL_FUNCTION(glDrawBuffers)
#define glDrawElementsInstancedEXT glDrawElementsInstanced
#define glDrawElementsInstanced LOOKUP_GL_FUNCTION(glDrawElementsInstanced)
#define glEnableVertexAttribArray LOOKUP_GL_FUNCTION(glEnableVertexAttribArray)
#define glFramebufferRenderbufferEXT glFramebufferRenderbuffer
#define glFramebufferRenderbuffer LOOKUP_GL_FUNCTION(glFramebufferRenderbuffer)
#define glFramebufferTexture2DEXT glFramebufferTexture2D
#define glFramebufferTexture2D LOOKUP_GL_FUNCTION(glFramebufferTexture2D)
#define glGenBuffers LOOKUP_GL_FUNCTION(glGenBuffers)
#define glGenerateMipmapEXT glGenerateMipmap
#define glGenerateMipmap LOOKUP_GL_FUNCTION(glGenerateMipmap)
#define glGenFramebuffersEXT glGenFramebuffers
#define glGenFramebuffers LOOKUP_GL_FUNCTION(glGenFramebuffers)
#define glGenRenderbuffersEXT glGenRenderbuffers
#define glGenRenderbuffers LOOKUP_GL_FUNCTION(glGenRenderbuffers)
#define glGenVertexArraysOES glGenVertexArrays;
#define glGenVertexArrays LOOKUP_GL_FUNCTION(glGenVertexArrays)
#define glGetActiveAttrib LOOKUP_GL_FUNCTION(glGetActiveAttrib)
#define glGetActiveUniform LOOKUP_GL_FUNCTION(glGetActiveUniform)
#define glGetAttachedShaders LOOKUP_GL_FUNCTION(glGetAttachedShaders)
#define glGetAttribLocation LOOKUP_GL_FUNCTION(glGetAttribLocation)
#define glGetBufferParameterivEXT glGetBufferParameteriv
#define glGetBufferParameteriv LOOKUP_GL_FUNCTION(glGetBufferParameteriv)
#define glGetFramebufferAttachmentParameterivEXT glGetFramebufferAttachmentParameteriv
#define glGetFramebufferAttachmentParameteriv LOOKUP_GL_FUNCTION(glGetFramebufferAttachmentParameteriv)
#define glGetProgramInfoLog LOOKUP_GL_FUNCTION(glGetProgramInfoLog)
#define glGetProgramiv LOOKUP_GL_FUNCTION(glGetProgramiv)
#define glGetRenderbufferParameterivEXT glGetRenderbufferParameteriv
#define glGetRenderbufferParameteriv LOOKUP_GL_FUNCTION(glGetRenderbufferParameteriv)
#define glGetShaderInfoLog LOOKUP_GL_FUNCTION(glGetShaderInfoLog)
#define glGetShaderiv LOOKUP_GL_FUNCTION(glGetShaderiv)
#define glGetShaderSource LOOKUP_GL_FUNCTION(glGetShaderSource)
#define glGetString LOOKUP_GL_FUNCTION(glGetString)
#define glGetStringi LOOKUP_GL_FUNCTION(glGetStringi)
#define glGetUniformfv LOOKUP_GL_FUNCTION(glGetUniformfv)
#define glGetUniformiv LOOKUP_GL_FUNCTION(glGetUniformiv)
#define glGetUniformLocation LOOKUP_GL_FUNCTION(glGetUniformLocation)
#define glGetVertexAttribfv LOOKUP_GL_FUNCTION(glGetVertexAttribfv)
#define glGetVertexAttribiv LOOKUP_GL_FUNCTION(glGetVertexAttribiv)
#define glGetVertexAttribPointerv LOOKUP_GL_FUNCTION(glGetVertexAttribPointerv)
#define glIsBuffer LOOKUP_GL_FUNCTION(glIsBuffer)
#define glIsFramebufferEXT glIsFramebuffer
#define glIsFramebuffer LOOKUP_GL_FUNCTION(glIsFramebuffer)
#define glIsProgram LOOKUP_GL_FUNCTION(glIsProgram)
#define glIsRenderbufferEXT glIsRenderbuffer
#define glIsRenderbuffer LOOKUP_GL_FUNCTION(glIsRenderbuffer)
#define glIsShader LOOKUP_GL_FUNCTION(glIsShader)
#define glIsVertexArrayOES glIsVertexArray;
#define glIsVertexArray LOOKUP_GL_FUNCTION(glIsVertexArray)
#define glLinkProgram LOOKUP_GL_FUNCTION(glLinkProgram)
#define glRenderbufferStorageEXT glRenderbufferStorage
#define glRenderbufferStorage LOOKUP_GL_FUNCTION(glRenderbufferStorage)
#define glRenderbufferStorageMultisampleEXT glRenderbufferStorageMultisample
#define glRenderbufferStorageMultisample LOOKUP_GL_FUNCTION(glRenderbufferStorageMultisample)
#define glSampleCoverage LOOKUP_GL_FUNCTION(glSampleCoverage)
#define glShaderSource LOOKUP_GL_FUNCTION(glShaderSource)
#define glStencilFuncSeparate LOOKUP_GL_FUNCTION(glStencilFuncSeparate)
#define glStencilMaskSeparate LOOKUP_GL_FUNCTION(glStencilMaskSeparate)
#define glStencilOpSeparate LOOKUP_GL_FUNCTION(glStencilOpSeparate)
#define glUniform1f LOOKUP_GL_FUNCTION(glUniform1f)
#define glUniform1fv LOOKUP_GL_FUNCTION(glUniform1fv)
#define glUniform1i LOOKUP_GL_FUNCTION(glUniform1i)
#define glUniform1iv LOOKUP_GL_FUNCTION(glUniform1iv)
#define glUniform2f LOOKUP_GL_FUNCTION(glUniform2f)
#define glUniform2fv LOOKUP_GL_FUNCTION(glUniform2fv)
#define glUniform2i LOOKUP_GL_FUNCTION(glUniform2i)
#define glUniform2iv LOOKUP_GL_FUNCTION(glUniform2iv)
#define glUniform3f LOOKUP_GL_FUNCTION(glUniform3f)
#define glUniform3fv LOOKUP_GL_FUNCTION(glUniform3fv)
#define glUniform3i LOOKUP_GL_FUNCTION(glUniform3i)
#define glUniform3iv LOOKUP_GL_FUNCTION(glUniform3iv)
#define glUniform4f LOOKUP_GL_FUNCTION(glUniform4f)
#define glUniform4fv LOOKUP_GL_FUNCTION(glUniform4fv)
#define glUniform4i LOOKUP_GL_FUNCTION(glUniform4i)
#define glUniform4iv LOOKUP_GL_FUNCTION(glUniform4iv)
#define glUniformMatrix2fv LOOKUP_GL_FUNCTION(glUniformMatrix2fv)
#define glUniformMatrix3fv LOOKUP_GL_FUNCTION(glUniformMatrix3fv)
#define glUniformMatrix4fv LOOKUP_GL_FUNCTION(glUniformMatrix4fv)
#define glUseProgram LOOKUP_GL_FUNCTION(glUseProgram)
#define glValidateProgram LOOKUP_GL_FUNCTION(glValidateProgram)
#define glVertexAttrib1f LOOKUP_GL_FUNCTION(glVertexAttrib1f)
#define glVertexAttrib1fv LOOKUP_GL_FUNCTION(glVertexAttrib1fv)
#define glVertexAttrib2f LOOKUP_GL_FUNCTION(glVertexAttrib2f)
#define glVertexAttrib2fv LOOKUP_GL_FUNCTION(glVertexAttrib2fv)
#define glVertexAttrib3f LOOKUP_GL_FUNCTION(glVertexAttrib3f)
#define glVertexAttrib3fv LOOKUP_GL_FUNCTION(glVertexAttrib3fv)
#define glVertexAttrib4f LOOKUP_GL_FUNCTION(glVertexAttrib4f)
#define glVertexAttrib4fv LOOKUP_GL_FUNCTION(glVertexAttrib4fv)
#define glVertexAttribDivisorEXT glVertexAttribDivisor
#define glVertexAttribDivisor LOOKUP_GL_FUNCTION(glVertexAttribDivisor)
#define glVertexAttribPointer LOOKUP_GL_FUNCTION(glVertexAttribPointer)
#endif
#endif