1/* 2 * Copyright (C) 2010 Tieto Corporation. 3 * Copyright (C) 2011 Igalia S.L. 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 */ 19 20#ifndef OpenGLShims_h 21#define OpenGLShims_h 22 23#include <GL/gl.h> 24#include <GL/glext.h> 25 26#if defined(GL_ES_VERSION_2_0) 27// Some openGL ES systems miss this typedef. 28typedef char GLchar; 29#endif 30 31typedef struct _OpenGLFunctionTable OpenGLFunctionTable; 32 33namespace WebCore { 34bool initializeOpenGLShims(); 35OpenGLFunctionTable* openGLFunctionTable(); 36} 37 38#if OS(WINDOWS) 39#define GLAPIENTRY __stdcall 40#else 41#define GLAPIENTRY 42#endif 43 44typedef void (GLAPIENTRY *glActiveTextureType) (GLenum); 45typedef void (GLAPIENTRY *glAttachShaderType) (GLuint, GLuint); 46typedef void (GLAPIENTRY *glBindAttribLocationType) (GLuint, GLuint, const char*); 47typedef void (GLAPIENTRY *glBindBufferType) (GLenum, GLuint); 48typedef void (GLAPIENTRY *glBindFramebufferType) (GLenum, GLuint); 49typedef void (GLAPIENTRY *glBindRenderbufferType) (GLenum, GLuint); 50typedef void (GLAPIENTRY *glBindVertexArrayType) (GLuint); 51typedef void (GLAPIENTRY *glBlendColorType) (GLclampf, GLclampf, GLclampf, GLclampf); 52typedef void (GLAPIENTRY *glBlendEquationType) (GLenum); 53typedef void (GLAPIENTRY *glBlendEquationSeparateType)(GLenum, GLenum); 54typedef void (GLAPIENTRY *glBlendFuncSeparateType)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); 55typedef void (GLAPIENTRY *glBlitFramebufferType) (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); 56typedef void (GLAPIENTRY *glBufferDataType) (GLenum, GLsizeiptr, const GLvoid*, GLenum); 57typedef void (GLAPIENTRY *glBufferSubDataType) (GLenum, GLintptr, GLsizeiptr, const GLvoid*); 58typedef GLenum (GLAPIENTRY *glCheckFramebufferStatusType) (GLenum); 59typedef void (GLAPIENTRY *glCompileShaderType) (GLuint); 60typedef void (GLAPIENTRY *glCompressedTexImage2DType) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*); 61typedef void (GLAPIENTRY *glCompressedTexSubImage2DType) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*); 62typedef GLuint (GLAPIENTRY *glCreateProgramType) (); 63typedef GLuint (GLAPIENTRY *glCreateShaderType) (GLenum); 64typedef void (GLAPIENTRY *glDeleteBuffersType) (GLsizei, const GLuint*); 65typedef void (GLAPIENTRY *glDeleteFramebuffersType) (GLsizei n, const GLuint*); 66typedef void (GLAPIENTRY *glDeleteProgramType) (GLuint); 67typedef void (GLAPIENTRY *glDeleteRenderbuffersType) (GLsizei n, const GLuint*); 68typedef void (GLAPIENTRY *glDeleteShaderType) (GLuint); 69typedef void (GLAPIENTRY *glDeleteVertexArraysType) (GLsizei, const GLuint*); 70typedef void (GLAPIENTRY *glDetachShaderType) (GLuint, GLuint); 71typedef void (GLAPIENTRY *glDisableVertexAttribArrayType) (GLuint); 72typedef void (GLAPIENTRY *glDrawArraysInstancedType) (GLenum, GLint, GLsizei, GLsizei); 73typedef void (GLAPIENTRY *glDrawBuffersType) (GLsizei, const GLenum*); 74typedef void (GLAPIENTRY *glDrawElementsInstancedType) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei); 75typedef void (GLAPIENTRY *glEnableVertexAttribArrayType) (GLuint); 76typedef void (GLAPIENTRY *glFramebufferRenderbufferType) (GLenum, GLenum, GLenum, GLuint); 77typedef void (GLAPIENTRY *glFramebufferTexture2DType) (GLenum, GLenum, GLenum, GLuint, GLint); 78typedef void (GLAPIENTRY *glGenBuffersType) (GLsizei, GLuint*); 79typedef void (GLAPIENTRY *glGenerateMipmapType) (GLenum target); 80typedef void (GLAPIENTRY *glGenFramebuffersType) (GLsizei, GLuint*); 81typedef void (GLAPIENTRY *glGenRenderbuffersType) (GLsizei, GLuint*); 82typedef void (GLAPIENTRY *glGenVertexArraysType) (GLsizei, GLuint*); 83typedef void (GLAPIENTRY *glGetActiveAttribType) (GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*); 84typedef void (GLAPIENTRY *glGetActiveUniformType) (GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*); 85typedef void (GLAPIENTRY *glGetAttachedShadersType) (GLuint, GLsizei, GLsizei*, GLuint*); 86typedef GLint (GLAPIENTRY *glGetAttribLocationType) (GLuint, const char*); 87typedef void (GLAPIENTRY *glGetBufferParameterivType) (GLenum, GLenum, GLint*); 88typedef void (GLAPIENTRY *glGetFramebufferAttachmentParameterivType) (GLenum, GLenum, GLenum, GLint* params); 89typedef void (GLAPIENTRY *glGetProgramInfoLogType) (GLuint, GLsizei, GLsizei*, char*); 90typedef void (GLAPIENTRY *glGetProgramivType) (GLuint, GLenum, GLint*); 91typedef void (GLAPIENTRY *glGetRenderbufferParameterivType) (GLenum, GLenum, GLint*); 92typedef void (GLAPIENTRY *glGetShaderInfoLogType) (GLuint, GLsizei, GLsizei*, char*); 93typedef void (GLAPIENTRY *glGetShaderivType) (GLuint, GLenum, GLint*); 94typedef void (GLAPIENTRY *glGetShaderSourceType) (GLuint, GLsizei, GLsizei*, char*); 95typedef GLint (GLAPIENTRY *glGetUniformLocationType) (GLuint, const char*); 96typedef void (GLAPIENTRY *glGetUniformfvType) (GLuint, GLint, GLfloat*); 97typedef void (GLAPIENTRY *glGetUniformivType) (GLuint, GLint, GLint*); 98typedef void (GLAPIENTRY *glGetVertexAttribfvType) (GLuint, GLenum, GLfloat*); 99typedef void (GLAPIENTRY *glGetVertexAttribivType) (GLuint, GLenum, GLint*); 100typedef void (GLAPIENTRY *glGetVertexAttribPointervType) (GLuint, GLenum, GLvoid**); 101typedef GLboolean (GLAPIENTRY *glIsBufferType) (GLuint); 102typedef GLboolean (GLAPIENTRY *glIsFramebufferType) (GLuint); 103typedef GLboolean (GLAPIENTRY *glIsProgramType) (GLuint); 104typedef GLboolean (GLAPIENTRY *glIsRenderbufferType) (GLuint); 105typedef GLboolean (GLAPIENTRY *glIsShaderType) (GLuint); 106typedef GLboolean (GLAPIENTRY *glIsVertexArrayType) (GLuint); 107typedef void (GLAPIENTRY *glLinkProgramType) (GLuint); 108typedef void (GLAPIENTRY *glRenderbufferStorageType) (GLenum, GLenum, GLsizei, GLsizei); 109typedef void (GLAPIENTRY *glRenderbufferStorageMultisampleType) (GLenum, GLsizei, GLenum, GLsizei, GLsizei); 110typedef void (GLAPIENTRY *glSampleCoverageType) (GLclampf, GLboolean); 111typedef void (GLAPIENTRY *glShaderSourceType) (GLuint, GLsizei, const char**, const GLint*); 112typedef void (GLAPIENTRY *glStencilFuncSeparateType) (GLenum, GLenum, GLint, GLuint); 113typedef void (GLAPIENTRY *glStencilMaskSeparateType) (GLenum, GLuint); 114typedef void (GLAPIENTRY *glStencilOpSeparateType) (GLenum, GLenum, GLenum, GLenum); 115typedef void (GLAPIENTRY *glUniform1fType) (GLint, GLfloat); 116typedef void (GLAPIENTRY *glUniform1fvType) (GLint, GLsizei, const GLfloat*); 117typedef void (GLAPIENTRY *glUniform1iType) (GLint, GLint); 118typedef void (GLAPIENTRY *glUniform1ivType) (GLint, GLsizei, const GLint*); 119typedef void (GLAPIENTRY *glUniform2fType) (GLint, GLfloat, GLfloat); 120typedef void (GLAPIENTRY *glUniform2fvType) (GLint, GLsizei, const GLfloat*); 121typedef void (GLAPIENTRY *glUniform2iType) (GLint, GLint, GLint); 122typedef void (GLAPIENTRY *glUniform2ivType) (GLint, GLsizei, const GLint*); 123typedef void (GLAPIENTRY *glUniform3fType) (GLint, GLfloat, GLfloat, GLfloat); 124typedef void (GLAPIENTRY *glUniform3fvType) (GLint, GLsizei, const GLfloat*); 125typedef void (GLAPIENTRY *glUniform3iType) (GLint, GLint, GLint, GLint); 126typedef void (GLAPIENTRY *glUniform3ivType) (GLint, GLsizei, const GLint*); 127typedef void (GLAPIENTRY *glUniform4fType) (GLint, GLfloat, GLfloat, GLfloat, GLfloat); 128typedef void (GLAPIENTRY *glUniform4fvType) (GLint, GLsizei, const GLfloat*); 129typedef void (GLAPIENTRY *glUniform4iType) (GLint, GLint, GLint, GLint, GLint); 130typedef void (GLAPIENTRY *glUniform4ivType) (GLint, GLsizei, const GLint*); 131typedef void (GLAPIENTRY *glUniformMatrix2fvType) (GLint, GLsizei, GLboolean, const GLfloat*); 132typedef void (GLAPIENTRY *glUniformMatrix3fvType) (GLint, GLsizei, GLboolean, const GLfloat*); 133typedef void (GLAPIENTRY *glUniformMatrix4fvType) (GLint, GLsizei, GLboolean, const GLfloat*); 134typedef void (GLAPIENTRY *glUseProgramType) (GLuint); 135typedef void (GLAPIENTRY *glValidateProgramType) (GLuint); 136typedef void (GLAPIENTRY *glVertexAttrib1fType) (GLuint, const GLfloat); 137typedef void (GLAPIENTRY *glVertexAttrib1fvType) (GLuint, const GLfloat*); 138typedef void (GLAPIENTRY *glVertexAttrib2fType) (GLuint, const GLfloat, const GLfloat); 139typedef void (GLAPIENTRY *glVertexAttrib2fvType) (GLuint, const GLfloat*); 140typedef void (GLAPIENTRY *glVertexAttrib3fType) (GLuint, const GLfloat, const GLfloat, const GLfloat); 141typedef void (GLAPIENTRY *glVertexAttrib3fvType) (GLuint, const GLfloat*); 142typedef void (GLAPIENTRY *glVertexAttrib4fType) (GLuint, const GLfloat, const GLfloat, const GLfloat, const GLfloat); 143typedef void (GLAPIENTRY *glVertexAttrib4fvType) (GLuint, const GLfloat*); 144typedef void (GLAPIENTRY *glVertexAttribDivisorType) (GLuint, GLuint); 145typedef void (GLAPIENTRY *glVertexAttribPointerType) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*); 146 147#define FUNCTION_TABLE_ENTRY(FunctionName) FunctionName##Type FunctionName 148 149typedef struct _OpenGLFunctionTable { 150 FUNCTION_TABLE_ENTRY(glActiveTexture); 151 FUNCTION_TABLE_ENTRY(glAttachShader); 152 FUNCTION_TABLE_ENTRY(glBindAttribLocation); 153 FUNCTION_TABLE_ENTRY(glBindBuffer); 154 FUNCTION_TABLE_ENTRY(glBindFramebuffer); 155 FUNCTION_TABLE_ENTRY(glBindRenderbuffer); 156 FUNCTION_TABLE_ENTRY(glBindVertexArray); 157 FUNCTION_TABLE_ENTRY(glBlendColor); 158 FUNCTION_TABLE_ENTRY(glBlendEquation); 159 FUNCTION_TABLE_ENTRY(glBlendEquationSeparate); 160 FUNCTION_TABLE_ENTRY(glBlendFuncSeparate); 161 FUNCTION_TABLE_ENTRY(glBlitFramebuffer); 162 FUNCTION_TABLE_ENTRY(glBufferData); 163 FUNCTION_TABLE_ENTRY(glBufferSubData); 164 FUNCTION_TABLE_ENTRY(glCheckFramebufferStatus); 165 FUNCTION_TABLE_ENTRY(glCompileShader); 166 FUNCTION_TABLE_ENTRY(glCompressedTexImage2D); 167 FUNCTION_TABLE_ENTRY(glCompressedTexSubImage2D); 168 FUNCTION_TABLE_ENTRY(glCreateProgram); 169 FUNCTION_TABLE_ENTRY(glCreateShader); 170 FUNCTION_TABLE_ENTRY(glDeleteBuffers); 171 FUNCTION_TABLE_ENTRY(glDeleteFramebuffers); 172 FUNCTION_TABLE_ENTRY(glDeleteProgram); 173 FUNCTION_TABLE_ENTRY(glDeleteRenderbuffers); 174 FUNCTION_TABLE_ENTRY(glDeleteShader); 175 FUNCTION_TABLE_ENTRY(glDeleteVertexArrays); 176 FUNCTION_TABLE_ENTRY(glDetachShader); 177 FUNCTION_TABLE_ENTRY(glDisableVertexAttribArray); 178 FUNCTION_TABLE_ENTRY(glDrawArraysInstanced); 179 FUNCTION_TABLE_ENTRY(glDrawBuffers); 180 FUNCTION_TABLE_ENTRY(glDrawElementsInstanced); 181 FUNCTION_TABLE_ENTRY(glEnableVertexAttribArray); 182 FUNCTION_TABLE_ENTRY(glFramebufferRenderbuffer); 183 FUNCTION_TABLE_ENTRY(glFramebufferTexture2D); 184 FUNCTION_TABLE_ENTRY(glGenBuffers); 185 FUNCTION_TABLE_ENTRY(glGenerateMipmap); 186 FUNCTION_TABLE_ENTRY(glGenFramebuffers); 187 FUNCTION_TABLE_ENTRY(glGenRenderbuffers); 188 FUNCTION_TABLE_ENTRY(glGenVertexArrays); 189 FUNCTION_TABLE_ENTRY(glGetActiveAttrib); 190 FUNCTION_TABLE_ENTRY(glGetActiveUniform); 191 FUNCTION_TABLE_ENTRY(glGetAttachedShaders); 192 FUNCTION_TABLE_ENTRY(glGetAttribLocation); 193 FUNCTION_TABLE_ENTRY(glGetBufferParameteriv); 194 FUNCTION_TABLE_ENTRY(glGetFramebufferAttachmentParameteriv); 195 FUNCTION_TABLE_ENTRY(glGetProgramInfoLog); 196 FUNCTION_TABLE_ENTRY(glGetProgramiv); 197 FUNCTION_TABLE_ENTRY(glGetRenderbufferParameteriv); 198 FUNCTION_TABLE_ENTRY(glGetShaderInfoLog); 199 FUNCTION_TABLE_ENTRY(glGetShaderiv); 200 FUNCTION_TABLE_ENTRY(glGetShaderSource); 201 FUNCTION_TABLE_ENTRY(glGetUniformfv); 202 FUNCTION_TABLE_ENTRY(glGetUniformiv); 203 FUNCTION_TABLE_ENTRY(glGetUniformLocation); 204 FUNCTION_TABLE_ENTRY(glGetVertexAttribfv); 205 FUNCTION_TABLE_ENTRY(glGetVertexAttribiv); 206 FUNCTION_TABLE_ENTRY(glGetVertexAttribPointerv); 207 FUNCTION_TABLE_ENTRY(glIsBuffer); 208 FUNCTION_TABLE_ENTRY(glIsFramebuffer); 209 FUNCTION_TABLE_ENTRY(glIsProgram); 210 FUNCTION_TABLE_ENTRY(glIsRenderbuffer); 211 FUNCTION_TABLE_ENTRY(glIsShader); 212 FUNCTION_TABLE_ENTRY(glIsVertexArray); 213 FUNCTION_TABLE_ENTRY(glLinkProgram); 214 FUNCTION_TABLE_ENTRY(glRenderbufferStorage); 215 FUNCTION_TABLE_ENTRY(glRenderbufferStorageMultisample); 216 FUNCTION_TABLE_ENTRY(glSampleCoverage); 217 FUNCTION_TABLE_ENTRY(glShaderSource); 218 FUNCTION_TABLE_ENTRY(glStencilFuncSeparate); 219 FUNCTION_TABLE_ENTRY(glStencilMaskSeparate); 220 FUNCTION_TABLE_ENTRY(glStencilOpSeparate); 221 FUNCTION_TABLE_ENTRY(glUniform1f); 222 FUNCTION_TABLE_ENTRY(glUniform1fv); 223 FUNCTION_TABLE_ENTRY(glUniform1i); 224 FUNCTION_TABLE_ENTRY(glUniform1iv); 225 FUNCTION_TABLE_ENTRY(glUniform2f); 226 FUNCTION_TABLE_ENTRY(glUniform2fv); 227 FUNCTION_TABLE_ENTRY(glUniform2i); 228 FUNCTION_TABLE_ENTRY(glUniform2iv); 229 FUNCTION_TABLE_ENTRY(glUniform3f); 230 FUNCTION_TABLE_ENTRY(glUniform3fv); 231 FUNCTION_TABLE_ENTRY(glUniform3i); 232 FUNCTION_TABLE_ENTRY(glUniform3iv); 233 FUNCTION_TABLE_ENTRY(glUniform4f); 234 FUNCTION_TABLE_ENTRY(glUniform4fv); 235 FUNCTION_TABLE_ENTRY(glUniform4i); 236 FUNCTION_TABLE_ENTRY(glUniform4iv); 237 FUNCTION_TABLE_ENTRY(glUniformMatrix2fv); 238 FUNCTION_TABLE_ENTRY(glUniformMatrix3fv); 239 FUNCTION_TABLE_ENTRY(glUniformMatrix4fv); 240 FUNCTION_TABLE_ENTRY(glUseProgram); 241 FUNCTION_TABLE_ENTRY(glValidateProgram); 242 FUNCTION_TABLE_ENTRY(glVertexAttrib1f); 243 FUNCTION_TABLE_ENTRY(glVertexAttrib1fv); 244 FUNCTION_TABLE_ENTRY(glVertexAttrib2f); 245 FUNCTION_TABLE_ENTRY(glVertexAttrib2fv); 246 FUNCTION_TABLE_ENTRY(glVertexAttrib3f); 247 FUNCTION_TABLE_ENTRY(glVertexAttrib3fv); 248 FUNCTION_TABLE_ENTRY(glVertexAttrib4f); 249 FUNCTION_TABLE_ENTRY(glVertexAttrib4fv); 250 FUNCTION_TABLE_ENTRY(glVertexAttribDivisor); 251 FUNCTION_TABLE_ENTRY(glVertexAttribPointer); 252} OpenGLFunctionTable; 253 254// We disable the shims for OpenGLShims.cpp, so that we can set them. 255#ifndef DISABLE_SHIMS 256#define LOOKUP_GL_FUNCTION(Function) WebCore::openGLFunctionTable()->Function 257#define glActiveTexture LOOKUP_GL_FUNCTION(glActiveTexture) 258#define glAttachShader LOOKUP_GL_FUNCTION(glAttachShader) 259#define glBindAttribLocation LOOKUP_GL_FUNCTION(glBindAttribLocation) 260#define glBindBuffer LOOKUP_GL_FUNCTION(glBindBuffer) 261#define glBindFramebufferEXT glBindFramebuffer 262#define glBindFramebuffer LOOKUP_GL_FUNCTION(glBindFramebuffer) 263#define glBindRenderbufferEXT glBindRenderbuffer 264#define glBindRenderbuffer LOOKUP_GL_FUNCTION(glBindRenderbuffer) 265#define glBindVertexArrayOES glBindVertexArray 266#define glBindVertexArray LOOKUP_GL_FUNCTION(glBindVertexArray) 267#define glBlendColor LOOKUP_GL_FUNCTION(glBlendColor) 268#define glBlendEquation LOOKUP_GL_FUNCTION(glBlendEquation) 269#define glBlendEquationSeparate LOOKUP_GL_FUNCTION(glBlendEquationSeparate) 270#define glBlendFuncSeparate LOOKUP_GL_FUNCTION(glBlendFuncSeparate) 271#define glBlitFramebufferEXT glBlitFramebuffer 272#define glBlitFramebuffer LOOKUP_GL_FUNCTION(glBlitFramebuffer) 273#define glBufferData LOOKUP_GL_FUNCTION(glBufferData) 274#define glBufferSubData LOOKUP_GL_FUNCTION(glBufferSubData) 275#define glCheckFramebufferStatusEXT glCheckFramebufferStatus 276#define glCheckFramebufferStatus LOOKUP_GL_FUNCTION(glCheckFramebufferStatus) 277#define glCompileShader LOOKUP_GL_FUNCTION(glCompileShader) 278#define glCompressedTexImage2D LOOKUP_GL_FUNCTION(glCompressedTexImage2D) 279#define glCompressedTexSubImage2D LOOKUP_GL_FUNCTION(glCompressedTexSubImage2D) 280#define glCreateProgram LOOKUP_GL_FUNCTION(glCreateProgram) 281#define glCreateShader LOOKUP_GL_FUNCTION(glCreateShader) 282#define glDeleteBuffers LOOKUP_GL_FUNCTION(glDeleteBuffers) 283#define glDeleteFramebuffersEXT glDeleteFramebuffers 284#define glDeleteFramebuffers LOOKUP_GL_FUNCTION(glDeleteFramebuffers) 285#define glDeleteProgram LOOKUP_GL_FUNCTION(glDeleteProgram) 286#define glDeleteRenderbuffersEXT glDeleteRenderbuffers 287#define glDeleteRenderbuffers LOOKUP_GL_FUNCTION(glDeleteRenderbuffers) 288#define glDeleteShader LOOKUP_GL_FUNCTION(glDeleteShader) 289#define glDeleteVertexArraysOES glDeleteVertexArrays 290#define glDeleteVertexArrays LOOKUP_GL_FUNCTION(glDeleteVertexArrays) 291#define glDetachShader LOOKUP_GL_FUNCTION(glDetachShader) 292#define glDisableVertexAttribArray LOOKUP_GL_FUNCTION(glDisableVertexAttribArray) 293#define glDrawArraysInstancedEXT glDrawArraysInstanced 294#define glDrawArraysInstanced LOOKUP_GL_FUNCTION(glDrawArraysInstanced) 295#define glDrawBuffersEXT glDrawBuffers 296#define glDrawBuffers LOOKUP_GL_FUNCTION(glDrawBuffers) 297#define glDrawElementsInstancedEXT glDrawElementsInstanced 298#define glDrawElementsInstanced LOOKUP_GL_FUNCTION(glDrawElementsInstanced) 299#define glEnableVertexAttribArray LOOKUP_GL_FUNCTION(glEnableVertexAttribArray) 300#define glFramebufferRenderbufferEXT glFramebufferRenderbuffer 301#define glFramebufferRenderbuffer LOOKUP_GL_FUNCTION(glFramebufferRenderbuffer) 302#define glFramebufferTexture2DEXT glFramebufferTexture2D 303#define glFramebufferTexture2D LOOKUP_GL_FUNCTION(glFramebufferTexture2D) 304#define glGenBuffers LOOKUP_GL_FUNCTION(glGenBuffers) 305#define glGenerateMipmapEXT glGenerateMipmap 306#define glGenerateMipmap LOOKUP_GL_FUNCTION(glGenerateMipmap) 307#define glGenFramebuffersEXT glGenFramebuffers 308#define glGenFramebuffers LOOKUP_GL_FUNCTION(glGenFramebuffers) 309#define glGenRenderbuffersEXT glGenRenderbuffers 310#define glGenRenderbuffers LOOKUP_GL_FUNCTION(glGenRenderbuffers) 311#define glGenVertexArraysOES glGenVertexArrays; 312#define glGenVertexArrays LOOKUP_GL_FUNCTION(glGenVertexArrays) 313#define glGetActiveAttrib LOOKUP_GL_FUNCTION(glGetActiveAttrib) 314#define glGetActiveUniform LOOKUP_GL_FUNCTION(glGetActiveUniform) 315#define glGetAttachedShaders LOOKUP_GL_FUNCTION(glGetAttachedShaders) 316#define glGetAttribLocation LOOKUP_GL_FUNCTION(glGetAttribLocation) 317#define glGetBufferParameterivEXT glGetBufferParameteriv 318#define glGetBufferParameteriv LOOKUP_GL_FUNCTION(glGetBufferParameteriv) 319#define glGetFramebufferAttachmentParameterivEXT glGetFramebufferAttachmentParameteriv 320#define glGetFramebufferAttachmentParameteriv LOOKUP_GL_FUNCTION(glGetFramebufferAttachmentParameteriv) 321#define glGetProgramInfoLog LOOKUP_GL_FUNCTION(glGetProgramInfoLog) 322#define glGetProgramiv LOOKUP_GL_FUNCTION(glGetProgramiv) 323#define glGetRenderbufferParameterivEXT glGetRenderbufferParameteriv 324#define glGetRenderbufferParameteriv LOOKUP_GL_FUNCTION(glGetRenderbufferParameteriv) 325#define glGetShaderInfoLog LOOKUP_GL_FUNCTION(glGetShaderInfoLog) 326#define glGetShaderiv LOOKUP_GL_FUNCTION(glGetShaderiv) 327#define glGetShaderSource LOOKUP_GL_FUNCTION(glGetShaderSource) 328#define glGetUniformfv LOOKUP_GL_FUNCTION(glGetUniformfv) 329#define glGetUniformiv LOOKUP_GL_FUNCTION(glGetUniformiv) 330#define glGetUniformLocation LOOKUP_GL_FUNCTION(glGetUniformLocation) 331#define glGetVertexAttribfv LOOKUP_GL_FUNCTION(glGetVertexAttribfv) 332#define glGetVertexAttribiv LOOKUP_GL_FUNCTION(glGetVertexAttribiv) 333#define glGetVertexAttribPointerv LOOKUP_GL_FUNCTION(glGetVertexAttribPointerv) 334#define glIsBuffer LOOKUP_GL_FUNCTION(glIsBuffer) 335#define glIsFramebufferEXT glIsFramebuffer 336#define glIsFramebuffer LOOKUP_GL_FUNCTION(glIsFramebuffer) 337#define glIsProgram LOOKUP_GL_FUNCTION(glIsProgram) 338#define glIsRenderbufferEXT glIsRenderbuffer 339#define glIsRenderbuffer LOOKUP_GL_FUNCTION(glIsRenderbuffer) 340#define glIsShader LOOKUP_GL_FUNCTION(glIsShader) 341#define glIsVertexArrayOES glIsVertexArray; 342#define glIsVertexArray LOOKUP_GL_FUNCTION(glIsVertexArray) 343#define glLinkProgram LOOKUP_GL_FUNCTION(glLinkProgram) 344#define glRenderbufferStorageEXT glRenderbufferStorage 345#define glRenderbufferStorage LOOKUP_GL_FUNCTION(glRenderbufferStorage) 346#define glRenderbufferStorageMultisampleEXT glRenderbufferStorageMultisample 347#define glRenderbufferStorageMultisample LOOKUP_GL_FUNCTION(glRenderbufferStorageMultisample) 348#define glSampleCoverage LOOKUP_GL_FUNCTION(glSampleCoverage) 349#define glShaderSource LOOKUP_GL_FUNCTION(glShaderSource) 350#define glStencilFuncSeparate LOOKUP_GL_FUNCTION(glStencilFuncSeparate) 351#define glStencilMaskSeparate LOOKUP_GL_FUNCTION(glStencilMaskSeparate) 352#define glStencilOpSeparate LOOKUP_GL_FUNCTION(glStencilOpSeparate) 353#define glUniform1f LOOKUP_GL_FUNCTION(glUniform1f) 354#define glUniform1fv LOOKUP_GL_FUNCTION(glUniform1fv) 355#define glUniform1i LOOKUP_GL_FUNCTION(glUniform1i) 356#define glUniform1iv LOOKUP_GL_FUNCTION(glUniform1iv) 357#define glUniform2f LOOKUP_GL_FUNCTION(glUniform2f) 358#define glUniform2fv LOOKUP_GL_FUNCTION(glUniform2fv) 359#define glUniform2i LOOKUP_GL_FUNCTION(glUniform2i) 360#define glUniform2iv LOOKUP_GL_FUNCTION(glUniform2iv) 361#define glUniform3f LOOKUP_GL_FUNCTION(glUniform3f) 362#define glUniform3fv LOOKUP_GL_FUNCTION(glUniform3fv) 363#define glUniform3i LOOKUP_GL_FUNCTION(glUniform3i) 364#define glUniform3iv LOOKUP_GL_FUNCTION(glUniform3iv) 365#define glUniform4f LOOKUP_GL_FUNCTION(glUniform4f) 366#define glUniform4fv LOOKUP_GL_FUNCTION(glUniform4fv) 367#define glUniform4i LOOKUP_GL_FUNCTION(glUniform4i) 368#define glUniform4iv LOOKUP_GL_FUNCTION(glUniform4iv) 369#define glUniformMatrix2fv LOOKUP_GL_FUNCTION(glUniformMatrix2fv) 370#define glUniformMatrix3fv LOOKUP_GL_FUNCTION(glUniformMatrix3fv) 371#define glUniformMatrix4fv LOOKUP_GL_FUNCTION(glUniformMatrix4fv) 372#define glUseProgram LOOKUP_GL_FUNCTION(glUseProgram) 373#define glValidateProgram LOOKUP_GL_FUNCTION(glValidateProgram) 374#define glVertexAttrib1f LOOKUP_GL_FUNCTION(glVertexAttrib1f) 375#define glVertexAttrib1fv LOOKUP_GL_FUNCTION(glVertexAttrib1fv) 376#define glVertexAttrib2f LOOKUP_GL_FUNCTION(glVertexAttrib2f) 377#define glVertexAttrib2fv LOOKUP_GL_FUNCTION(glVertexAttrib2fv) 378#define glVertexAttrib3f LOOKUP_GL_FUNCTION(glVertexAttrib3f) 379#define glVertexAttrib3fv LOOKUP_GL_FUNCTION(glVertexAttrib3fv) 380#define glVertexAttrib4f LOOKUP_GL_FUNCTION(glVertexAttrib4f) 381#define glVertexAttrib4fv LOOKUP_GL_FUNCTION(glVertexAttrib4fv) 382#define glVertexAttribDivisorEXT glVertexAttribDivisor 383#define glVertexAttribDivisor LOOKUP_GL_FUNCTION(glVertexAttribDivisor) 384#define glVertexAttribPointer LOOKUP_GL_FUNCTION(glVertexAttribPointer) 385#endif 386 387#endif 388