#ifdef _WIN32/*** The OpenGL Extension Wrangler Library** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>** Copyright (C) 2002, Lev Povalahev** All rights reserved.** ** Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are met:** ** * Redistributions of source code must retain the above copyright notice, ** this list of conditions and the following disclaimer.** * Redistributions in binary form must reproduce the above copyright notice, ** this list of conditions and the following disclaimer in the documentation ** and/or other materials provided with the distribution.** * The name of the author may be used to endorse or promote products ** derived from this software without specific prior written permission.**** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF** THE POSSIBILITY OF SUCH DAMAGE.*/ #define GLEW_STATIC #include <GL/glew.h>#if defined(_WIN32)# include <GL/wglew.h>#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)# include <GL/glxew.h>#endif /* * Define glewGetContext and related helper macros. */#ifdef GLEW_MX# define glewGetContext() ctx# ifdef _WIN32# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx# define GLEW_CONTEXT_ARG_VAR_INIT ctx# define wglewGetContext() ctx# define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx# define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx# else /* _WIN32 */# define GLEW_CONTEXT_ARG_DEF_INIT void# define GLEW_CONTEXT_ARG_VAR_INIT# define glxewGetContext() ctx# define GLXEW_CONTEXT_ARG_DEF_INIT void# define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx# endif /* _WIN32 */# define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx#else /* GLEW_MX */# define GLEW_CONTEXT_ARG_DEF_INIT void# define GLEW_CONTEXT_ARG_VAR_INIT# define GLEW_CONTEXT_ARG_DEF_LIST void# define WGLEW_CONTEXT_ARG_DEF_INIT void# define WGLEW_CONTEXT_ARG_DEF_LIST void# define GLXEW_CONTEXT_ARG_DEF_INIT void# define GLXEW_CONTEXT_ARG_DEF_LIST void#endif /* GLEW_MX */ #if defined(__sgi) || defined (__sun) || defined(GLEW_APPLE_GLX)#include <dlfcn.h>#include <stdio.h>#include <stdlib.h> void* dlGetProcAddress (const GLubyte* name){ static void* h = NULL; static void* gpa; if (h == NULL) { if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL; gpa = dlsym(h, "glXGetProcAddress"); } if (gpa != NULL) return ((void*(*)(const GLubyte*))gpa)(name); else return dlsym(h, (const char*)name);}#endif /* __sgi || __sun || GLEW_APPLE_GLX */ #if defined(__APPLE__)#include <stdlib.h>#include <string.h>#include <AvailabilityMacros.h> #ifdef MAC_OS_X_VERSION_10_3 #include <dlfcn.h> void* NSGLGetProcAddress (const GLubyte *name){ static void* image = NULL; if (NULL == image) { image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); } if( !image ) return NULL; void* addr = dlsym(image, (const char*)name); if( addr ) return addr;#ifdef GLEW_APPLE_GLX return dlGetProcAddress( name ); // try next for glx symbols#else return NULL;#endif}#else #include <mach-o/dyld.h> void* NSGLGetProcAddress (const GLubyte *name){ static const struct mach_header* image = NULL; NSSymbol symbol; char* symbolName; if (NULL == image) { image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR); } /* prepend a '_' for the Unix C symbol mangling convention */ symbolName = malloc(strlen((const char*)name) + 2); strcpy(symbolName+1, (const char*)name); symbolName[0] = '_'; symbol = NULL; /* if (NSIsSymbolNameDefined(symbolName)) symbol = NSLookupAndBindSymbol(symbolName); */ symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL; free(symbolName); if( symbol ) return NSAddressOfSymbol(symbol);#ifdef GLEW_APPLE_GLX return dlGetProcAddress( name ); // try next for glx symbols#else return NULL;#endif}#endif /* MAC_OS_X_VERSION_10_3 */#endif /* __APPLE__ */ /* * Define glewGetProcAddress. */#if defined(_WIN32)# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)#else# if defined(__APPLE__)# define glewGetProcAddress(name) NSGLGetProcAddress(name)# else# if defined(__sgi) || defined(__sun)# define glewGetProcAddress(name) dlGetProcAddress(name)# else /* __linux */# define glewGetProcAddress(name) (*glXGetProcAddressARB)(name)# endif# endif#endif /* * Define GLboolean const cast. */#define CONST_CAST(x) (*(GLboolean*)&x) /* * GLEW, just like OpenGL or GLU, does not rely on the standard C library. * These functions implement the functionality required in this file. */static GLuint _glewStrLen (const GLubyte* s){ GLuint i=0; if (s == NULL) return 0; while (s[i] != '\0') i++; return i;} static GLuint _glewStrCLen (const GLubyte* s, GLubyte c){ GLuint i=0; if (s == NULL) return 0; while (s[i] != '\0' && s[i] != c) i++; return (s[i] == '\0' || s[i] == c) ? i : 0;} static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n){ GLuint i=0; if(a == NULL || b == NULL) return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE; while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++; return i == n ? GL_TRUE : GL_FALSE;} static GLboolean _glewStrSame1 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb){ while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t')) { (*a)++; (*na)--; } if(*na >= nb) { GLuint i=0; while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; if(i == nb) { *a = *a + nb; *na = *na - nb; return GL_TRUE; } } return GL_FALSE;} static GLboolean _glewStrSame2 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb){ if(*na >= nb) { GLuint i=0; while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; if(i == nb) { *a = *a + nb; *na = *na - nb; return GL_TRUE; } } return GL_FALSE;} static GLboolean _glewStrSame3 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb){ if(*na >= nb) { GLuint i=0; while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t')) { *a = *a + nb; *na = *na - nb; return GL_TRUE; } } return GL_FALSE;} /* * Search for name in the extensions string. Use of strstr() * is not sufficient because extension names can be prefixes of * other extension names. Could use strtok() but the constant * string returned by glGetString might be in read-only memory. */static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end){ const GLubyte* p; GLuint len = _glewStrLen((const GLubyte*)name); p = start; while (p < end) { GLuint n = _glewStrCLen(p, ' '); if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; p += n+1; } return GL_FALSE;} #if !defined(_WIN32) || !defined(GLEW_MX) PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D = NULL;PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements = NULL;PFNGLTEXIMAGE3DPROC __glewTexImage3D = NULL;PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D = NULL; PFNGLACTIVETEXTUREPROC __glewActiveTexture = NULL;PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture = NULL;PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D = NULL;PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D = NULL;PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D = NULL;PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D = NULL;PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D = NULL;PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D = NULL;PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage = NULL;PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd = NULL;PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf = NULL;PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd = NULL;PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf = NULL;PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d = NULL;PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv = NULL;PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f = NULL;PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv = NULL;PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i = NULL;PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv = NULL;PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s = NULL;PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv = NULL;PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d = NULL;PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv = NULL;PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f = NULL;PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv = NULL;PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i = NULL;PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv = NULL;PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s = NULL;PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv = NULL;PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d = NULL;PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv = NULL;PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f = NULL;PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv = NULL;PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i = NULL;PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv = NULL;PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s = NULL;PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv = NULL;PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d = NULL;PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv = NULL;PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f = NULL;PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv = NULL;PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i = NULL;PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv = NULL;PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s = NULL;PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv = NULL;PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage = NULL; PFNGLBLENDCOLORPROC __glewBlendColor = NULL;PFNGLBLENDEQUATIONPROC __glewBlendEquation = NULL;PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate = NULL;PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer = NULL;PFNGLFOGCOORDDPROC __glewFogCoordd = NULL;PFNGLFOGCOORDDVPROC __glewFogCoorddv = NULL;PFNGLFOGCOORDFPROC __glewFogCoordf = NULL;PFNGLFOGCOORDFVPROC __glewFogCoordfv = NULL;PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays = NULL;PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements = NULL;PFNGLPOINTPARAMETERFPROC __glewPointParameterf = NULL;PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv = NULL;PFNGLPOINTPARAMETERIPROC __glewPointParameteri = NULL;PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv = NULL;PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b = NULL;PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv = NULL;PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d = NULL;PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv = NULL;PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f = NULL;PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv = NULL;PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i = NULL;PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv = NULL;PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s = NULL;PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv = NULL;PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub = NULL;PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv = NULL;PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui = NULL;PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv = NULL;PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us = NULL;PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv = NULL;PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer = NULL;PFNGLWINDOWPOS2DPROC __glewWindowPos2d = NULL;PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv = NULL;PFNGLWINDOWPOS2FPROC __glewWindowPos2f = NULL;PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv = NULL;PFNGLWINDOWPOS2IPROC __glewWindowPos2i = NULL;PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv = NULL;PFNGLWINDOWPOS2SPROC __glewWindowPos2s = NULL;PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv = NULL;PFNGLWINDOWPOS3DPROC __glewWindowPos3d = NULL;PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv = NULL;PFNGLWINDOWPOS3FPROC __glewWindowPos3f = NULL;PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv = NULL;PFNGLWINDOWPOS3IPROC __glewWindowPos3i = NULL;PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv = NULL;PFNGLWINDOWPOS3SPROC __glewWindowPos3s = NULL;PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv = NULL; PFNGLBEGINQUERYPROC __glewBeginQuery = NULL;PFNGLBINDBUFFERPROC __glewBindBuffer = NULL;PFNGLBUFFERDATAPROC __glewBufferData = NULL;PFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL;PFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL;PFNGLDELETEQUERIESPROC __glewDeleteQueries = NULL;PFNGLENDQUERYPROC __glewEndQuery = NULL;PFNGLGENBUFFERSPROC __glewGenBuffers = NULL;PFNGLGENQUERIESPROC __glewGenQueries = NULL;PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv = NULL;PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv = NULL;PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData = NULL;PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv = NULL;PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv = NULL;PFNGLGETQUERYIVPROC __glewGetQueryiv = NULL;PFNGLISBUFFERPROC __glewIsBuffer = NULL;PFNGLISQUERYPROC __glewIsQuery = NULL;PFNGLMAPBUFFERPROC __glewMapBuffer = NULL;PFNGLUNMAPBUFFERPROC __glewUnmapBuffer = NULL; PFNGLATTACHSHADERPROC __glewAttachShader = NULL;PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation = NULL;PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate = NULL;PFNGLCOMPILESHADERPROC __glewCompileShader = NULL;PFNGLCREATEPROGRAMPROC __glewCreateProgram = NULL;PFNGLCREATESHADERPROC __glewCreateShader = NULL;PFNGLDELETEPROGRAMPROC __glewDeleteProgram = NULL;PFNGLDELETESHADERPROC __glewDeleteShader = NULL;PFNGLDETACHSHADERPROC __glewDetachShader = NULL;PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray = NULL;PFNGLDRAWBUFFERSPROC __glewDrawBuffers = NULL;PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray = NULL;PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib = NULL;PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform = NULL;PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders = NULL;PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation = NULL;PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog = NULL;PFNGLGETPROGRAMIVPROC __glewGetProgramiv = NULL;PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog = NULL;PFNGLGETSHADERSOURCEPROC __glewGetShaderSource = NULL;PFNGLGETSHADERIVPROC __glewGetShaderiv = NULL;PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation = NULL;PFNGLGETUNIFORMFVPROC __glewGetUniformfv = NULL;PFNGLGETUNIFORMIVPROC __glewGetUniformiv = NULL;PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv = NULL;PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv = NULL;PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv = NULL;PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv = NULL;PFNGLISPROGRAMPROC __glewIsProgram = NULL;PFNGLISSHADERPROC __glewIsShader = NULL;PFNGLLINKPROGRAMPROC __glewLinkProgram = NULL;PFNGLSHADERSOURCEPROC __glewShaderSource = NULL;PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate = NULL;PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate = NULL;PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate = NULL;PFNGLUNIFORM1FPROC __glewUniform1f = NULL;PFNGLUNIFORM1FVPROC __glewUniform1fv = NULL;PFNGLUNIFORM1IPROC __glewUniform1i = NULL;PFNGLUNIFORM1IVPROC __glewUniform1iv = NULL;PFNGLUNIFORM2FPROC __glewUniform2f = NULL;PFNGLUNIFORM2FVPROC __glewUniform2fv = NULL;PFNGLUNIFORM2IPROC __glewUniform2i = NULL;PFNGLUNIFORM2IVPROC __glewUniform2iv = NULL;PFNGLUNIFORM3FPROC __glewUniform3f = NULL;PFNGLUNIFORM3FVPROC __glewUniform3fv = NULL;PFNGLUNIFORM3IPROC __glewUniform3i = NULL;PFNGLUNIFORM3IVPROC __glewUniform3iv = NULL;PFNGLUNIFORM4FPROC __glewUniform4f = NULL;PFNGLUNIFORM4FVPROC __glewUniform4fv = NULL;PFNGLUNIFORM4IPROC __glewUniform4i = NULL;PFNGLUNIFORM4IVPROC __glewUniform4iv = NULL;PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv = NULL;PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv = NULL;PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv = NULL;PFNGLUSEPROGRAMPROC __glewUseProgram = NULL;PFNGLVALIDATEPROGRAMPROC __glewValidateProgram = NULL;PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d = NULL;PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv = NULL;PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f = NULL;PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv = NULL;PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s = NULL;PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv = NULL;PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d = NULL;PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv = NULL;PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f = NULL;PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv = NULL;PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s = NULL;PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv = NULL;PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d = NULL;PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv = NULL;PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f = NULL;PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv = NULL;PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s = NULL;PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv = NULL;PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv = NULL;PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv = NULL;PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv = NULL;PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub = NULL;PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv = NULL;PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv = NULL;PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv = NULL;PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv = NULL;PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d = NULL;PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv = NULL;PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f = NULL;PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv = NULL;PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv = NULL;PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s = NULL;PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv = NULL;PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv = NULL;PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv = NULL;PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv = NULL;PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer = NULL; PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv = NULL;PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv = NULL;PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv = NULL;PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv = NULL;PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv = NULL;PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv = NULL; PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender = NULL;PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback = NULL;PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation = NULL;Lines 1–500 of 15955. Load more
#ifdef _WIN32 /* ** The OpenGL Extension Wrangler Library ** Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org> ** Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org> ** Copyright (C) 2002, Lev Povalahev ** All rights reserved. ** ** Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are met: ** ** * Redistributions of source code must retain the above copyright notice, ** this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright notice, ** this list of conditions and the following disclaimer in the documentation ** and/or other materials provided with the distribution. ** * The name of the author may be used to endorse or promote products ** derived from this software without specific prior written permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ** THE POSSIBILITY OF SUCH DAMAGE. */ #define GLEW_STATIC #include <GL/glew.h> #if defined(_WIN32) # include <GL/wglew.h> #elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) # include <GL/glxew.h> #endif /* * Define glewGetContext and related helper macros. */ #ifdef GLEW_MX # define glewGetContext() ctx # ifdef _WIN32 # define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx # define GLEW_CONTEXT_ARG_VAR_INIT ctx # define wglewGetContext() ctx # define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx # define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx # else /* _WIN32 */ # define GLEW_CONTEXT_ARG_DEF_INIT void # define GLEW_CONTEXT_ARG_VAR_INIT # define glxewGetContext() ctx # define GLXEW_CONTEXT_ARG_DEF_INIT void # define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx # endif /* _WIN32 */ # define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx #else /* GLEW_MX */ # define GLEW_CONTEXT_ARG_DEF_INIT void # define GLEW_CONTEXT_ARG_VAR_INIT # define GLEW_CONTEXT_ARG_DEF_LIST void # define WGLEW_CONTEXT_ARG_DEF_INIT void # define WGLEW_CONTEXT_ARG_DEF_LIST void # define GLXEW_CONTEXT_ARG_DEF_INIT void # define GLXEW_CONTEXT_ARG_DEF_LIST void #endif /* GLEW_MX */ #if defined(__sgi) || defined (__sun) || defined(GLEW_APPLE_GLX) #include <dlfcn.h> #include <stdio.h> #include <stdlib.h> void* dlGetProcAddress (const GLubyte* name) { static void* h = NULL; static void* gpa; if (h == NULL) { if ((h = dlopen(NULL, RTLD_LAZY | RTLD_LOCAL)) == NULL) return NULL; gpa = dlsym(h, "glXGetProcAddress"); } if (gpa != NULL) return ((void*(*)(const GLubyte*))gpa)(name); else return dlsym(h, (const char*)name); } #endif /* __sgi || __sun || GLEW_APPLE_GLX */ #if defined(__APPLE__) #include <stdlib.h> #include <string.h> #include <AvailabilityMacros.h> #ifdef MAC_OS_X_VERSION_10_3 #include <dlfcn.h> void* NSGLGetProcAddress (const GLubyte *name) { static void* image = NULL; if (NULL == image) { image = dlopen("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", RTLD_LAZY); } if( !image ) return NULL; void* addr = dlsym(image, (const char*)name); if( addr ) return addr; #ifdef GLEW_APPLE_GLX return dlGetProcAddress( name ); // try next for glx symbols #else return NULL; #endif } #else #include <mach-o/dyld.h> void* NSGLGetProcAddress (const GLubyte *name) { static const struct mach_header* image = NULL; NSSymbol symbol; char* symbolName; if (NULL == image) { image = NSAddImage("/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", NSADDIMAGE_OPTION_RETURN_ON_ERROR); } /* prepend a '_' for the Unix C symbol mangling convention */ symbolName = malloc(strlen((const char*)name) + 2); strcpy(symbolName+1, (const char*)name); symbolName[0] = '_'; symbol = NULL; /* if (NSIsSymbolNameDefined(symbolName)) symbol = NSLookupAndBindSymbol(symbolName); */ symbol = image ? NSLookupSymbolInImage(image, symbolName, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND | NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR) : NULL; free(symbolName); if( symbol ) return NSAddressOfSymbol(symbol); #ifdef GLEW_APPLE_GLX return dlGetProcAddress( name ); // try next for glx symbols #else return NULL; #endif } #endif /* MAC_OS_X_VERSION_10_3 */ #endif /* __APPLE__ */ /* * Define glewGetProcAddress. */ #if defined(_WIN32) # define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name) #else # if defined(__APPLE__) # define glewGetProcAddress(name) NSGLGetProcAddress(name) # else # if defined(__sgi) || defined(__sun) # define glewGetProcAddress(name) dlGetProcAddress(name) # else /* __linux */ # define glewGetProcAddress(name) (*glXGetProcAddressARB)(name) # endif # endif #endif /* * Define GLboolean const cast. */ #define CONST_CAST(x) (*(GLboolean*)&x) /* * GLEW, just like OpenGL or GLU, does not rely on the standard C library. * These functions implement the functionality required in this file. */ static GLuint _glewStrLen (const GLubyte* s) { GLuint i=0; if (s == NULL) return 0; while (s[i] != '\0') i++; return i; } static GLuint _glewStrCLen (const GLubyte* s, GLubyte c) { GLuint i=0; if (s == NULL) return 0; while (s[i] != '\0' && s[i] != c) i++; return (s[i] == '\0' || s[i] == c) ? i : 0; } static GLboolean _glewStrSame (const GLubyte* a, const GLubyte* b, GLuint n) { GLuint i=0; if(a == NULL || b == NULL) return (a == NULL && b == NULL && n == 0) ? GL_TRUE : GL_FALSE; while (i < n && a[i] != '\0' && b[i] != '\0' && a[i] == b[i]) i++; return i == n ? GL_TRUE : GL_FALSE; } static GLboolean _glewStrSame1 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) { while (*na > 0 && (**a == ' ' || **a == '\n' || **a == '\r' || **a == '\t')) { (*a)++; (*na)--; } if(*na >= nb) { GLuint i=0; while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; if(i == nb) { *a = *a + nb; *na = *na - nb; return GL_TRUE; } } return GL_FALSE; } static GLboolean _glewStrSame2 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) { if(*na >= nb) { GLuint i=0; while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; if(i == nb) { *a = *a + nb; *na = *na - nb; return GL_TRUE; } } return GL_FALSE; } static GLboolean _glewStrSame3 (GLubyte** a, GLuint* na, const GLubyte* b, GLuint nb) { if(*na >= nb) { GLuint i=0; while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++; if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t')) { *a = *a + nb; *na = *na - nb; return GL_TRUE; } } return GL_FALSE; } /* * Search for name in the extensions string. Use of strstr() * is not sufficient because extension names can be prefixes of * other extension names. Could use strtok() but the constant * string returned by glGetString might be in read-only memory. */ static GLboolean _glewSearchExtension (const char* name, const GLubyte *start, const GLubyte *end) { const GLubyte* p; GLuint len = _glewStrLen((const GLubyte*)name); p = start; while (p < end) { GLuint n = _glewStrCLen(p, ' '); if (len == n && _glewStrSame((const GLubyte*)name, p, n)) return GL_TRUE; p += n+1; } return GL_FALSE; } #if !defined(_WIN32) || !defined(GLEW_MX) PFNGLCOPYTEXSUBIMAGE3DPROC __glewCopyTexSubImage3D = NULL; PFNGLDRAWRANGEELEMENTSPROC __glewDrawRangeElements = NULL; PFNGLTEXIMAGE3DPROC __glewTexImage3D = NULL; PFNGLTEXSUBIMAGE3DPROC __glewTexSubImage3D = NULL; PFNGLACTIVETEXTUREPROC __glewActiveTexture = NULL; PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture = NULL; PFNGLCOMPRESSEDTEXIMAGE1DPROC __glewCompressedTexImage1D = NULL; PFNGLCOMPRESSEDTEXIMAGE2DPROC __glewCompressedTexImage2D = NULL; PFNGLCOMPRESSEDTEXIMAGE3DPROC __glewCompressedTexImage3D = NULL; PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC __glewCompressedTexSubImage1D = NULL; PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC __glewCompressedTexSubImage2D = NULL; PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC __glewCompressedTexSubImage3D = NULL; PFNGLGETCOMPRESSEDTEXIMAGEPROC __glewGetCompressedTexImage = NULL; PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd = NULL; PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf = NULL; PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd = NULL; PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf = NULL; PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d = NULL; PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv = NULL; PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f = NULL; PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv = NULL; PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i = NULL; PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv = NULL; PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s = NULL; PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv = NULL; PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d = NULL; PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv = NULL; PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f = NULL; PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv = NULL; PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i = NULL; PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv = NULL; PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s = NULL; PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv = NULL; PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d = NULL; PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv = NULL; PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f = NULL; PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv = NULL; PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i = NULL; PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv = NULL; PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s = NULL; PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv = NULL; PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d = NULL; PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv = NULL; PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f = NULL; PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv = NULL; PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i = NULL; PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv = NULL; PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s = NULL; PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv = NULL; PFNGLSAMPLECOVERAGEPROC __glewSampleCoverage = NULL; PFNGLBLENDCOLORPROC __glewBlendColor = NULL; PFNGLBLENDEQUATIONPROC __glewBlendEquation = NULL; PFNGLBLENDFUNCSEPARATEPROC __glewBlendFuncSeparate = NULL; PFNGLFOGCOORDPOINTERPROC __glewFogCoordPointer = NULL; PFNGLFOGCOORDDPROC __glewFogCoordd = NULL; PFNGLFOGCOORDDVPROC __glewFogCoorddv = NULL; PFNGLFOGCOORDFPROC __glewFogCoordf = NULL; PFNGLFOGCOORDFVPROC __glewFogCoordfv = NULL; PFNGLMULTIDRAWARRAYSPROC __glewMultiDrawArrays = NULL; PFNGLMULTIDRAWELEMENTSPROC __glewMultiDrawElements = NULL; PFNGLPOINTPARAMETERFPROC __glewPointParameterf = NULL; PFNGLPOINTPARAMETERFVPROC __glewPointParameterfv = NULL; PFNGLPOINTPARAMETERIPROC __glewPointParameteri = NULL; PFNGLPOINTPARAMETERIVPROC __glewPointParameteriv = NULL; PFNGLSECONDARYCOLOR3BPROC __glewSecondaryColor3b = NULL; PFNGLSECONDARYCOLOR3BVPROC __glewSecondaryColor3bv = NULL; PFNGLSECONDARYCOLOR3DPROC __glewSecondaryColor3d = NULL; PFNGLSECONDARYCOLOR3DVPROC __glewSecondaryColor3dv = NULL; PFNGLSECONDARYCOLOR3FPROC __glewSecondaryColor3f = NULL; PFNGLSECONDARYCOLOR3FVPROC __glewSecondaryColor3fv = NULL; PFNGLSECONDARYCOLOR3IPROC __glewSecondaryColor3i = NULL; PFNGLSECONDARYCOLOR3IVPROC __glewSecondaryColor3iv = NULL; PFNGLSECONDARYCOLOR3SPROC __glewSecondaryColor3s = NULL; PFNGLSECONDARYCOLOR3SVPROC __glewSecondaryColor3sv = NULL; PFNGLSECONDARYCOLOR3UBPROC __glewSecondaryColor3ub = NULL; PFNGLSECONDARYCOLOR3UBVPROC __glewSecondaryColor3ubv = NULL; PFNGLSECONDARYCOLOR3UIPROC __glewSecondaryColor3ui = NULL; PFNGLSECONDARYCOLOR3UIVPROC __glewSecondaryColor3uiv = NULL; PFNGLSECONDARYCOLOR3USPROC __glewSecondaryColor3us = NULL; PFNGLSECONDARYCOLOR3USVPROC __glewSecondaryColor3usv = NULL; PFNGLSECONDARYCOLORPOINTERPROC __glewSecondaryColorPointer = NULL; PFNGLWINDOWPOS2DPROC __glewWindowPos2d = NULL; PFNGLWINDOWPOS2DVPROC __glewWindowPos2dv = NULL; PFNGLWINDOWPOS2FPROC __glewWindowPos2f = NULL; PFNGLWINDOWPOS2FVPROC __glewWindowPos2fv = NULL; PFNGLWINDOWPOS2IPROC __glewWindowPos2i = NULL; PFNGLWINDOWPOS2IVPROC __glewWindowPos2iv = NULL; PFNGLWINDOWPOS2SPROC __glewWindowPos2s = NULL; PFNGLWINDOWPOS2SVPROC __glewWindowPos2sv = NULL; PFNGLWINDOWPOS3DPROC __glewWindowPos3d = NULL; PFNGLWINDOWPOS3DVPROC __glewWindowPos3dv = NULL; PFNGLWINDOWPOS3FPROC __glewWindowPos3f = NULL; PFNGLWINDOWPOS3FVPROC __glewWindowPos3fv = NULL; PFNGLWINDOWPOS3IPROC __glewWindowPos3i = NULL; PFNGLWINDOWPOS3IVPROC __glewWindowPos3iv = NULL; PFNGLWINDOWPOS3SPROC __glewWindowPos3s = NULL; PFNGLWINDOWPOS3SVPROC __glewWindowPos3sv = NULL; PFNGLBEGINQUERYPROC __glewBeginQuery = NULL; PFNGLBINDBUFFERPROC __glewBindBuffer = NULL; PFNGLBUFFERDATAPROC __glewBufferData = NULL; PFNGLBUFFERSUBDATAPROC __glewBufferSubData = NULL; PFNGLDELETEBUFFERSPROC __glewDeleteBuffers = NULL; PFNGLDELETEQUERIESPROC __glewDeleteQueries = NULL; PFNGLENDQUERYPROC __glewEndQuery = NULL; PFNGLGENBUFFERSPROC __glewGenBuffers = NULL; PFNGLGENQUERIESPROC __glewGenQueries = NULL; PFNGLGETBUFFERPARAMETERIVPROC __glewGetBufferParameteriv = NULL; PFNGLGETBUFFERPOINTERVPROC __glewGetBufferPointerv = NULL; PFNGLGETBUFFERSUBDATAPROC __glewGetBufferSubData = NULL; PFNGLGETQUERYOBJECTIVPROC __glewGetQueryObjectiv = NULL; PFNGLGETQUERYOBJECTUIVPROC __glewGetQueryObjectuiv = NULL; PFNGLGETQUERYIVPROC __glewGetQueryiv = NULL; PFNGLISBUFFERPROC __glewIsBuffer = NULL; PFNGLISQUERYPROC __glewIsQuery = NULL; PFNGLMAPBUFFERPROC __glewMapBuffer = NULL; PFNGLUNMAPBUFFERPROC __glewUnmapBuffer = NULL; PFNGLATTACHSHADERPROC __glewAttachShader = NULL; PFNGLBINDATTRIBLOCATIONPROC __glewBindAttribLocation = NULL; PFNGLBLENDEQUATIONSEPARATEPROC __glewBlendEquationSeparate = NULL; PFNGLCOMPILESHADERPROC __glewCompileShader = NULL; PFNGLCREATEPROGRAMPROC __glewCreateProgram = NULL; PFNGLCREATESHADERPROC __glewCreateShader = NULL; PFNGLDELETEPROGRAMPROC __glewDeleteProgram = NULL; PFNGLDELETESHADERPROC __glewDeleteShader = NULL; PFNGLDETACHSHADERPROC __glewDetachShader = NULL; PFNGLDISABLEVERTEXATTRIBARRAYPROC __glewDisableVertexAttribArray = NULL; PFNGLDRAWBUFFERSPROC __glewDrawBuffers = NULL; PFNGLENABLEVERTEXATTRIBARRAYPROC __glewEnableVertexAttribArray = NULL; PFNGLGETACTIVEATTRIBPROC __glewGetActiveAttrib = NULL; PFNGLGETACTIVEUNIFORMPROC __glewGetActiveUniform = NULL; PFNGLGETATTACHEDSHADERSPROC __glewGetAttachedShaders = NULL; PFNGLGETATTRIBLOCATIONPROC __glewGetAttribLocation = NULL; PFNGLGETPROGRAMINFOLOGPROC __glewGetProgramInfoLog = NULL; PFNGLGETPROGRAMIVPROC __glewGetProgramiv = NULL; PFNGLGETSHADERINFOLOGPROC __glewGetShaderInfoLog = NULL; PFNGLGETSHADERSOURCEPROC __glewGetShaderSource = NULL; PFNGLGETSHADERIVPROC __glewGetShaderiv = NULL; PFNGLGETUNIFORMLOCATIONPROC __glewGetUniformLocation = NULL; PFNGLGETUNIFORMFVPROC __glewGetUniformfv = NULL; PFNGLGETUNIFORMIVPROC __glewGetUniformiv = NULL; PFNGLGETVERTEXATTRIBPOINTERVPROC __glewGetVertexAttribPointerv = NULL; PFNGLGETVERTEXATTRIBDVPROC __glewGetVertexAttribdv = NULL; PFNGLGETVERTEXATTRIBFVPROC __glewGetVertexAttribfv = NULL; PFNGLGETVERTEXATTRIBIVPROC __glewGetVertexAttribiv = NULL; PFNGLISPROGRAMPROC __glewIsProgram = NULL; PFNGLISSHADERPROC __glewIsShader = NULL; PFNGLLINKPROGRAMPROC __glewLinkProgram = NULL; PFNGLSHADERSOURCEPROC __glewShaderSource = NULL; PFNGLSTENCILFUNCSEPARATEPROC __glewStencilFuncSeparate = NULL; PFNGLSTENCILMASKSEPARATEPROC __glewStencilMaskSeparate = NULL; PFNGLSTENCILOPSEPARATEPROC __glewStencilOpSeparate = NULL; PFNGLUNIFORM1FPROC __glewUniform1f = NULL; PFNGLUNIFORM1FVPROC __glewUniform1fv = NULL; PFNGLUNIFORM1IPROC __glewUniform1i = NULL; PFNGLUNIFORM1IVPROC __glewUniform1iv = NULL; PFNGLUNIFORM2FPROC __glewUniform2f = NULL; PFNGLUNIFORM2FVPROC __glewUniform2fv = NULL; PFNGLUNIFORM2IPROC __glewUniform2i = NULL; PFNGLUNIFORM2IVPROC __glewUniform2iv = NULL; PFNGLUNIFORM3FPROC __glewUniform3f = NULL; PFNGLUNIFORM3FVPROC __glewUniform3fv = NULL; PFNGLUNIFORM3IPROC __glewUniform3i = NULL; PFNGLUNIFORM3IVPROC __glewUniform3iv = NULL; PFNGLUNIFORM4FPROC __glewUniform4f = NULL; PFNGLUNIFORM4FVPROC __glewUniform4fv = NULL; PFNGLUNIFORM4IPROC __glewUniform4i = NULL; PFNGLUNIFORM4IVPROC __glewUniform4iv = NULL; PFNGLUNIFORMMATRIX2FVPROC __glewUniformMatrix2fv = NULL; PFNGLUNIFORMMATRIX3FVPROC __glewUniformMatrix3fv = NULL; PFNGLUNIFORMMATRIX4FVPROC __glewUniformMatrix4fv = NULL; PFNGLUSEPROGRAMPROC __glewUseProgram = NULL; PFNGLVALIDATEPROGRAMPROC __glewValidateProgram = NULL; PFNGLVERTEXATTRIB1DPROC __glewVertexAttrib1d = NULL; PFNGLVERTEXATTRIB1DVPROC __glewVertexAttrib1dv = NULL; PFNGLVERTEXATTRIB1FPROC __glewVertexAttrib1f = NULL; PFNGLVERTEXATTRIB1FVPROC __glewVertexAttrib1fv = NULL; PFNGLVERTEXATTRIB1SPROC __glewVertexAttrib1s = NULL; PFNGLVERTEXATTRIB1SVPROC __glewVertexAttrib1sv = NULL; PFNGLVERTEXATTRIB2DPROC __glewVertexAttrib2d = NULL; PFNGLVERTEXATTRIB2DVPROC __glewVertexAttrib2dv = NULL; PFNGLVERTEXATTRIB2FPROC __glewVertexAttrib2f = NULL; PFNGLVERTEXATTRIB2FVPROC __glewVertexAttrib2fv = NULL; PFNGLVERTEXATTRIB2SPROC __glewVertexAttrib2s = NULL; PFNGLVERTEXATTRIB2SVPROC __glewVertexAttrib2sv = NULL; PFNGLVERTEXATTRIB3DPROC __glewVertexAttrib3d = NULL; PFNGLVERTEXATTRIB3DVPROC __glewVertexAttrib3dv = NULL; PFNGLVERTEXATTRIB3FPROC __glewVertexAttrib3f = NULL; PFNGLVERTEXATTRIB3FVPROC __glewVertexAttrib3fv = NULL; PFNGLVERTEXATTRIB3SPROC __glewVertexAttrib3s = NULL; PFNGLVERTEXATTRIB3SVPROC __glewVertexAttrib3sv = NULL; PFNGLVERTEXATTRIB4NBVPROC __glewVertexAttrib4Nbv = NULL; PFNGLVERTEXATTRIB4NIVPROC __glewVertexAttrib4Niv = NULL; PFNGLVERTEXATTRIB4NSVPROC __glewVertexAttrib4Nsv = NULL; PFNGLVERTEXATTRIB4NUBPROC __glewVertexAttrib4Nub = NULL; PFNGLVERTEXATTRIB4NUBVPROC __glewVertexAttrib4Nubv = NULL; PFNGLVERTEXATTRIB4NUIVPROC __glewVertexAttrib4Nuiv = NULL; PFNGLVERTEXATTRIB4NUSVPROC __glewVertexAttrib4Nusv = NULL; PFNGLVERTEXATTRIB4BVPROC __glewVertexAttrib4bv = NULL; PFNGLVERTEXATTRIB4DPROC __glewVertexAttrib4d = NULL; PFNGLVERTEXATTRIB4DVPROC __glewVertexAttrib4dv = NULL; PFNGLVERTEXATTRIB4FPROC __glewVertexAttrib4f = NULL; PFNGLVERTEXATTRIB4FVPROC __glewVertexAttrib4fv = NULL; PFNGLVERTEXATTRIB4IVPROC __glewVertexAttrib4iv = NULL; PFNGLVERTEXATTRIB4SPROC __glewVertexAttrib4s = NULL; PFNGLVERTEXATTRIB4SVPROC __glewVertexAttrib4sv = NULL; PFNGLVERTEXATTRIB4UBVPROC __glewVertexAttrib4ubv = NULL; PFNGLVERTEXATTRIB4UIVPROC __glewVertexAttrib4uiv = NULL; PFNGLVERTEXATTRIB4USVPROC __glewVertexAttrib4usv = NULL; PFNGLVERTEXATTRIBPOINTERPROC __glewVertexAttribPointer = NULL; PFNGLUNIFORMMATRIX2X3FVPROC __glewUniformMatrix2x3fv = NULL; PFNGLUNIFORMMATRIX2X4FVPROC __glewUniformMatrix2x4fv = NULL; PFNGLUNIFORMMATRIX3X2FVPROC __glewUniformMatrix3x2fv = NULL; PFNGLUNIFORMMATRIX3X4FVPROC __glewUniformMatrix3x4fv = NULL; PFNGLUNIFORMMATRIX4X2FVPROC __glewUniformMatrix4x2fv = NULL; PFNGLUNIFORMMATRIX4X3FVPROC __glewUniformMatrix4x3fv = NULL; PFNGLBEGINCONDITIONALRENDERPROC __glewBeginConditionalRender = NULL; PFNGLBEGINTRANSFORMFEEDBACKPROC __glewBeginTransformFeedback = NULL; PFNGLBINDFRAGDATALOCATIONPROC __glewBindFragDataLocation = NULL;