// this file was automatically generated DO NOT EDIT!
// CaveUTGL - Willem de Jonge (willem@argcargv.com) - 2003
//          - Bob Kuehne (rpk@blue-newt.com) - 2006
#include "gljumptable.h"

#include <stdio.h>

bool GLJumpTable::init()
{
	bool result = true;
	if (!getFunction("glClearIndex", (void**)&glClearIndex)) return false;
	if (!getFunction("glClearColor", (void**)&glClearColor)) return false;
	if (!getFunction("glClear", (void**)&glClear)) return false;
	if (!getFunction("glIndexMask", (void**)&glIndexMask)) return false;
	if (!getFunction("glColorMask", (void**)&glColorMask)) return false;
	if (!getFunction("glAlphaFunc", (void**)&glAlphaFunc)) return false;
	if (!getFunction("glBlendFunc", (void**)&glBlendFunc)) return false;
	if (!getFunction("glLogicOp", (void**)&glLogicOp)) return false;
	if (!getFunction("glCullFace", (void**)&glCullFace)) return false;
	if (!getFunction("glFrontFace", (void**)&glFrontFace)) return false;
	if (!getFunction("glPointSize", (void**)&glPointSize)) return false;
	if (!getFunction("glLineWidth", (void**)&glLineWidth)) return false;
	if (!getFunction("glLineStipple", (void**)&glLineStipple)) return false;
	if (!getFunction("glPolygonMode", (void**)&glPolygonMode)) return false;
	if (!getFunction("glPolygonOffset", (void**)&glPolygonOffset)) return false;
	if (!getFunction("glPolygonStipple", (void**)&glPolygonStipple)) return false;
	if (!getFunction("glGetPolygonStipple", (void**)&glGetPolygonStipple)) return false;
	if (!getFunction("glEdgeFlag", (void**)&glEdgeFlag)) return false;
	if (!getFunction("glEdgeFlagv", (void**)&glEdgeFlagv)) return false;
	if (!getFunction("glScissor", (void**)&glScissor)) return false;
	if (!getFunction("glClipPlane", (void**)&glClipPlane)) return false;
	if (!getFunction("glGetClipPlane", (void**)&glGetClipPlane)) return false;
	if (!getFunction("glDrawBuffer", (void**)&glDrawBuffer)) return false;
	if (!getFunction("glReadBuffer", (void**)&glReadBuffer)) return false;
	if (!getFunction("glEnable", (void**)&glEnable)) return false;
	if (!getFunction("glDisable", (void**)&glDisable)) return false;
	if (!getFunction("glIsEnabled", (void**)&glIsEnabled)) return false;
	if (!getFunction("glEnableClientState", (void**)&glEnableClientState)) return false;
	if (!getFunction("glDisableClientState", (void**)&glDisableClientState)) return false;
	if (!getFunction("glGetBooleanv", (void**)&glGetBooleanv)) return false;
	if (!getFunction("glGetDoublev", (void**)&glGetDoublev)) return false;
	if (!getFunction("glGetFloatv", (void**)&glGetFloatv)) return false;
	if (!getFunction("glGetIntegerv", (void**)&glGetIntegerv)) return false;
	if (!getFunction("glPushAttrib", (void**)&glPushAttrib)) return false;
	if (!getFunction("glPopAttrib", (void**)&glPopAttrib)) return false;
	if (!getFunction("glPushClientAttrib", (void**)&glPushClientAttrib)) return false;
	if (!getFunction("glPopClientAttrib", (void**)&glPopClientAttrib)) return false;
	if (!getFunction("glRenderMode", (void**)&glRenderMode)) return false;
	if (!getFunction("glGetError", (void**)&glGetError)) return false;
	if (!getFunction("glGetString", (void**)&glGetString)) return false;
	if (!getFunction("glFinish", (void**)&glFinish)) return false;
	if (!getFunction("glFlush", (void**)&glFlush)) return false;
	if (!getFunction("glHint", (void**)&glHint)) return false;
	if (!getFunction("glClearDepth", (void**)&glClearDepth)) return false;
	if (!getFunction("glDepthFunc", (void**)&glDepthFunc)) return false;
	if (!getFunction("glDepthMask", (void**)&glDepthMask)) return false;
	if (!getFunction("glDepthRange", (void**)&glDepthRange)) return false;
	if (!getFunction("glClearAccum", (void**)&glClearAccum)) return false;
	if (!getFunction("glAccum", (void**)&glAccum)) return false;
	if (!getFunction("glMatrixMode", (void**)&glMatrixMode)) return false;
	if (!getFunction("glOrtho", (void**)&glOrtho)) return false;
	if (!getFunction("glFrustum", (void**)&glFrustum)) return false;
	if (!getFunction("glViewport", (void**)&glViewport)) return false;
	if (!getFunction("glPushMatrix", (void**)&glPushMatrix)) return false;
	if (!getFunction("glPopMatrix", (void**)&glPopMatrix)) return false;
	if (!getFunction("glLoadIdentity", (void**)&glLoadIdentity)) return false;
	if (!getFunction("glLoadMatrixd", (void**)&glLoadMatrixd)) return false;
	if (!getFunction("glLoadMatrixf", (void**)&glLoadMatrixf)) return false;
	if (!getFunction("glMultMatrixd", (void**)&glMultMatrixd)) return false;
	if (!getFunction("glMultMatrixf", (void**)&glMultMatrixf)) return false;
	if (!getFunction("glRotated", (void**)&glRotated)) return false;
	if (!getFunction("glRotatef", (void**)&glRotatef)) return false;
	if (!getFunction("glScaled", (void**)&glScaled)) return false;
	if (!getFunction("glScalef", (void**)&glScalef)) return false;
	if (!getFunction("glTranslated", (void**)&glTranslated)) return false;
	if (!getFunction("glTranslatef", (void**)&glTranslatef)) return false;
	if (!getFunction("glIsList", (void**)&glIsList)) return false;
	if (!getFunction("glDeleteLists", (void**)&glDeleteLists)) return false;
	if (!getFunction("glGenLists", (void**)&glGenLists)) return false;
	if (!getFunction("glNewList", (void**)&glNewList)) return false;
	if (!getFunction("glEndList", (void**)&glEndList)) return false;
	if (!getFunction("glCallList", (void**)&glCallList)) return false;
	if (!getFunction("glCallLists", (void**)&glCallLists)) return false;
	if (!getFunction("glListBase", (void**)&glListBase)) return false;
	if (!getFunction("glBegin", (void**)&glBegin)) return false;
	if (!getFunction("glEnd", (void**)&glEnd)) return false;
	if (!getFunction("glVertex2d", (void**)&glVertex2d)) return false;
	if (!getFunction("glVertex2f", (void**)&glVertex2f)) return false;
	if (!getFunction("glVertex2i", (void**)&glVertex2i)) return false;
	if (!getFunction("glVertex2s", (void**)&glVertex2s)) return false;
	if (!getFunction("glVertex3d", (void**)&glVertex3d)) return false;
	if (!getFunction("glVertex3f", (void**)&glVertex3f)) return false;
	if (!getFunction("glVertex3i", (void**)&glVertex3i)) return false;
	if (!getFunction("glVertex3s", (void**)&glVertex3s)) return false;
	if (!getFunction("glVertex4d", (void**)&glVertex4d)) return false;
	if (!getFunction("glVertex4f", (void**)&glVertex4f)) return false;
	if (!getFunction("glVertex4i", (void**)&glVertex4i)) return false;
	if (!getFunction("glVertex4s", (void**)&glVertex4s)) return false;
	if (!getFunction("glVertex2dv", (void**)&glVertex2dv)) return false;
	if (!getFunction("glVertex2fv", (void**)&glVertex2fv)) return false;
	if (!getFunction("glVertex2iv", (void**)&glVertex2iv)) return false;
	if (!getFunction("glVertex2sv", (void**)&glVertex2sv)) return false;
	if (!getFunction("glVertex3dv", (void**)&glVertex3dv)) return false;
	if (!getFunction("glVertex3fv", (void**)&glVertex3fv)) return false;
	if (!getFunction("glVertex3iv", (void**)&glVertex3iv)) return false;
	if (!getFunction("glVertex3sv", (void**)&glVertex3sv)) return false;
	if (!getFunction("glVertex4dv", (void**)&glVertex4dv)) return false;
	if (!getFunction("glVertex4fv", (void**)&glVertex4fv)) return false;
	if (!getFunction("glVertex4iv", (void**)&glVertex4iv)) return false;
	if (!getFunction("glVertex4sv", (void**)&glVertex4sv)) return false;
	if (!getFunction("glNormal3b", (void**)&glNormal3b)) return false;
	if (!getFunction("glNormal3d", (void**)&glNormal3d)) return false;
	if (!getFunction("glNormal3f", (void**)&glNormal3f)) return false;
	if (!getFunction("glNormal3i", (void**)&glNormal3i)) return false;
	if (!getFunction("glNormal3s", (void**)&glNormal3s)) return false;
	if (!getFunction("glNormal3bv", (void**)&glNormal3bv)) return false;
	if (!getFunction("glNormal3dv", (void**)&glNormal3dv)) return false;
	if (!getFunction("glNormal3fv", (void**)&glNormal3fv)) return false;
	if (!getFunction("glNormal3iv", (void**)&glNormal3iv)) return false;
	if (!getFunction("glNormal3sv", (void**)&glNormal3sv)) return false;
	if (!getFunction("glIndexd", (void**)&glIndexd)) return false;
	if (!getFunction("glIndexf", (void**)&glIndexf)) return false;
	if (!getFunction("glIndexi", (void**)&glIndexi)) return false;
	if (!getFunction("glIndexs", (void**)&glIndexs)) return false;
	if (!getFunction("glIndexub", (void**)&glIndexub)) return false;
	if (!getFunction("glIndexdv", (void**)&glIndexdv)) return false;
	if (!getFunction("glIndexfv", (void**)&glIndexfv)) return false;
	if (!getFunction("glIndexiv", (void**)&glIndexiv)) return false;
	if (!getFunction("glIndexsv", (void**)&glIndexsv)) return false;
	if (!getFunction("glIndexubv", (void**)&glIndexubv)) return false;
	if (!getFunction("glColor3b", (void**)&glColor3b)) return false;
	if (!getFunction("glColor3d", (void**)&glColor3d)) return false;
	if (!getFunction("glColor3f", (void**)&glColor3f)) return false;
	if (!getFunction("glColor3i", (void**)&glColor3i)) return false;
	if (!getFunction("glColor3s", (void**)&glColor3s)) return false;
	if (!getFunction("glColor3ub", (void**)&glColor3ub)) return false;
	if (!getFunction("glColor3ui", (void**)&glColor3ui)) return false;
	if (!getFunction("glColor3us", (void**)&glColor3us)) return false;
	if (!getFunction("glColor4b", (void**)&glColor4b)) return false;
	if (!getFunction("glColor4d", (void**)&glColor4d)) return false;
	if (!getFunction("glColor4f", (void**)&glColor4f)) return false;
	if (!getFunction("glColor4i", (void**)&glColor4i)) return false;
	if (!getFunction("glColor4s", (void**)&glColor4s)) return false;
	if (!getFunction("glColor4ub", (void**)&glColor4ub)) return false;
	if (!getFunction("glColor4ui", (void**)&glColor4ui)) return false;
	if (!getFunction("glColor4us", (void**)&glColor4us)) return false;
	if (!getFunction("glColor3bv", (void**)&glColor3bv)) return false;
	if (!getFunction("glColor3dv", (void**)&glColor3dv)) return false;
	if (!getFunction("glColor3fv", (void**)&glColor3fv)) return false;
	if (!getFunction("glColor3iv", (void**)&glColor3iv)) return false;
	if (!getFunction("glColor3sv", (void**)&glColor3sv)) return false;
	if (!getFunction("glColor3ubv", (void**)&glColor3ubv)) return false;
	if (!getFunction("glColor3uiv", (void**)&glColor3uiv)) return false;
	if (!getFunction("glColor3usv", (void**)&glColor3usv)) return false;
	if (!getFunction("glColor4bv", (void**)&glColor4bv)) return false;
	if (!getFunction("glColor4dv", (void**)&glColor4dv)) return false;
	if (!getFunction("glColor4fv", (void**)&glColor4fv)) return false;
	if (!getFunction("glColor4iv", (void**)&glColor4iv)) return false;
	if (!getFunction("glColor4sv", (void**)&glColor4sv)) return false;
	if (!getFunction("glColor4ubv", (void**)&glColor4ubv)) return false;
	if (!getFunction("glColor4uiv", (void**)&glColor4uiv)) return false;
	if (!getFunction("glColor4usv", (void**)&glColor4usv)) return false;
	if (!getFunction("glTexCoord1d", (void**)&glTexCoord1d)) return false;
	if (!getFunction("glTexCoord1f", (void**)&glTexCoord1f)) return false;
	if (!getFunction("glTexCoord1i", (void**)&glTexCoord1i)) return false;
	if (!getFunction("glTexCoord1s", (void**)&glTexCoord1s)) return false;
	if (!getFunction("glTexCoord2d", (void**)&glTexCoord2d)) return false;
	if (!getFunction("glTexCoord2f", (void**)&glTexCoord2f)) return false;
	if (!getFunction("glTexCoord2i", (void**)&glTexCoord2i)) return false;
	if (!getFunction("glTexCoord2s", (void**)&glTexCoord2s)) return false;
	if (!getFunction("glTexCoord3d", (void**)&glTexCoord3d)) return false;
	if (!getFunction("glTexCoord3f", (void**)&glTexCoord3f)) return false;
	if (!getFunction("glTexCoord3i", (void**)&glTexCoord3i)) return false;
	if (!getFunction("glTexCoord3s", (void**)&glTexCoord3s)) return false;
	if (!getFunction("glTexCoord4d", (void**)&glTexCoord4d)) return false;
	if (!getFunction("glTexCoord4f", (void**)&glTexCoord4f)) return false;
	if (!getFunction("glTexCoord4i", (void**)&glTexCoord4i)) return false;
	if (!getFunction("glTexCoord4s", (void**)&glTexCoord4s)) return false;
	if (!getFunction("glTexCoord1dv", (void**)&glTexCoord1dv)) return false;
	if (!getFunction("glTexCoord1fv", (void**)&glTexCoord1fv)) return false;
	if (!getFunction("glTexCoord1iv", (void**)&glTexCoord1iv)) return false;
	if (!getFunction("glTexCoord1sv", (void**)&glTexCoord1sv)) return false;
	if (!getFunction("glTexCoord2dv", (void**)&glTexCoord2dv)) return false;
	if (!getFunction("glTexCoord2fv", (void**)&glTexCoord2fv)) return false;
	if (!getFunction("glTexCoord2iv", (void**)&glTexCoord2iv)) return false;
	if (!getFunction("glTexCoord2sv", (void**)&glTexCoord2sv)) return false;
	if (!getFunction("glTexCoord3dv", (void**)&glTexCoord3dv)) return false;
	if (!getFunction("glTexCoord3fv", (void**)&glTexCoord3fv)) return false;
	if (!getFunction("glTexCoord3iv", (void**)&glTexCoord3iv)) return false;
	if (!getFunction("glTexCoord3sv", (void**)&glTexCoord3sv)) return false;
	if (!getFunction("glTexCoord4dv", (void**)&glTexCoord4dv)) return false;
	if (!getFunction("glTexCoord4fv", (void**)&glTexCoord4fv)) return false;
	if (!getFunction("glTexCoord4iv", (void**)&glTexCoord4iv)) return false;
	if (!getFunction("glTexCoord4sv", (void**)&glTexCoord4sv)) return false;
	if (!getFunction("glRasterPos2d", (void**)&glRasterPos2d)) return false;
	if (!getFunction("glRasterPos2f", (void**)&glRasterPos2f)) return false;
	if (!getFunction("glRasterPos2i", (void**)&glRasterPos2i)) return false;
	if (!getFunction("glRasterPos2s", (void**)&glRasterPos2s)) return false;
	if (!getFunction("glRasterPos3d", (void**)&glRasterPos3d)) return false;
	if (!getFunction("glRasterPos3f", (void**)&glRasterPos3f)) return false;
	if (!getFunction("glRasterPos3i", (void**)&glRasterPos3i)) return false;
	if (!getFunction("glRasterPos3s", (void**)&glRasterPos3s)) return false;
	if (!getFunction("glRasterPos4d", (void**)&glRasterPos4d)) return false;
	if (!getFunction("glRasterPos4f", (void**)&glRasterPos4f)) return false;
	if (!getFunction("glRasterPos4i", (void**)&glRasterPos4i)) return false;
	if (!getFunction("glRasterPos4s", (void**)&glRasterPos4s)) return false;
	if (!getFunction("glRasterPos2dv", (void**)&glRasterPos2dv)) return false;
	if (!getFunction("glRasterPos2fv", (void**)&glRasterPos2fv)) return false;
	if (!getFunction("glRasterPos2iv", (void**)&glRasterPos2iv)) return false;
	if (!getFunction("glRasterPos2sv", (void**)&glRasterPos2sv)) return false;
	if (!getFunction("glRasterPos3dv", (void**)&glRasterPos3dv)) return false;
	if (!getFunction("glRasterPos3fv", (void**)&glRasterPos3fv)) return false;
	if (!getFunction("glRasterPos3iv", (void**)&glRasterPos3iv)) return false;
	if (!getFunction("glRasterPos3sv", (void**)&glRasterPos3sv)) return false;
	if (!getFunction("glRasterPos4dv", (void**)&glRasterPos4dv)) return false;
	if (!getFunction("glRasterPos4fv", (void**)&glRasterPos4fv)) return false;
	if (!getFunction("glRasterPos4iv", (void**)&glRasterPos4iv)) return false;
	if (!getFunction("glRasterPos4sv", (void**)&glRasterPos4sv)) return false;
	if (!getFunction("glRectd", (void**)&glRectd)) return false;
	if (!getFunction("glRectf", (void**)&glRectf)) return false;
	if (!getFunction("glRecti", (void**)&glRecti)) return false;
	if (!getFunction("glRects", (void**)&glRects)) return false;
	if (!getFunction("glRectdv", (void**)&glRectdv)) return false;
	if (!getFunction("glRectfv", (void**)&glRectfv)) return false;
	if (!getFunction("glRectiv", (void**)&glRectiv)) return false;
	if (!getFunction("glRectsv", (void**)&glRectsv)) return false;
	if (!getFunction("glVertexPointer", (void**)&glVertexPointer)) return false;
	if (!getFunction("glNormalPointer", (void**)&glNormalPointer)) return false;
	if (!getFunction("glColorPointer", (void**)&glColorPointer)) return false;
	if (!getFunction("glIndexPointer", (void**)&glIndexPointer)) return false;
	if (!getFunction("glTexCoordPointer", (void**)&glTexCoordPointer)) return false;
	if (!getFunction("glEdgeFlagPointer", (void**)&glEdgeFlagPointer)) return false;
	if (!getFunction("glGetPointerv", (void**)&glGetPointerv)) return false;
	if (!getFunction("glArrayElement", (void**)&glArrayElement)) return false;
	if (!getFunction("glDrawArrays", (void**)&glDrawArrays)) return false;
	if (!getFunction("glDrawElements", (void**)&glDrawElements)) return false;
	if (!getFunction("glInterleavedArrays", (void**)&glInterleavedArrays)) return false;
	if (!getFunction("glShadeModel", (void**)&glShadeModel)) return false;
	if (!getFunction("glLightf", (void**)&glLightf)) return false;
	if (!getFunction("glLighti", (void**)&glLighti)) return false;
	if (!getFunction("glLightfv", (void**)&glLightfv)) return false;
	if (!getFunction("glLightiv", (void**)&glLightiv)) return false;
	if (!getFunction("glGetLightfv", (void**)&glGetLightfv)) return false;
	if (!getFunction("glGetLightiv", (void**)&glGetLightiv)) return false;
	if (!getFunction("glLightModelf", (void**)&glLightModelf)) return false;
	if (!getFunction("glLightModeli", (void**)&glLightModeli)) return false;
	if (!getFunction("glLightModelfv", (void**)&glLightModelfv)) return false;
	if (!getFunction("glLightModeliv", (void**)&glLightModeliv)) return false;
	if (!getFunction("glMaterialf", (void**)&glMaterialf)) return false;
	if (!getFunction("glMateriali", (void**)&glMateriali)) return false;
	if (!getFunction("glMaterialfv", (void**)&glMaterialfv)) return false;
	if (!getFunction("glMaterialiv", (void**)&glMaterialiv)) return false;
	if (!getFunction("glGetMaterialfv", (void**)&glGetMaterialfv)) return false;
	if (!getFunction("glGetMaterialiv", (void**)&glGetMaterialiv)) return false;
	if (!getFunction("glColorMaterial", (void**)&glColorMaterial)) return false;
	if (!getFunction("glPixelZoom", (void**)&glPixelZoom)) return false;
	if (!getFunction("glPixelStoref", (void**)&glPixelStoref)) return false;
	if (!getFunction("glPixelStorei", (void**)&glPixelStorei)) return false;
	if (!getFunction("glPixelTransferf", (void**)&glPixelTransferf)) return false;
	if (!getFunction("glPixelTransferi", (void**)&glPixelTransferi)) return false;
	if (!getFunction("glPixelMapfv", (void**)&glPixelMapfv)) return false;
	if (!getFunction("glPixelMapuiv", (void**)&glPixelMapuiv)) return false;
	if (!getFunction("glPixelMapusv", (void**)&glPixelMapusv)) return false;
	if (!getFunction("glGetPixelMapfv", (void**)&glGetPixelMapfv)) return false;
	if (!getFunction("glGetPixelMapuiv", (void**)&glGetPixelMapuiv)) return false;
	if (!getFunction("glGetPixelMapusv", (void**)&glGetPixelMapusv)) return false;
	if (!getFunction("glBitmap", (void**)&glBitmap)) return false;
	if (!getFunction("glReadPixels", (void**)&glReadPixels)) return false;
	if (!getFunction("glDrawPixels", (void**)&glDrawPixels)) return false;
	if (!getFunction("glCopyPixels", (void**)&glCopyPixels)) return false;
	if (!getFunction("glStencilFunc", (void**)&glStencilFunc)) return false;
	if (!getFunction("glStencilMask", (void**)&glStencilMask)) return false;
	if (!getFunction("glStencilOp", (void**)&glStencilOp)) return false;
	if (!getFunction("glClearStencil", (void**)&glClearStencil)) return false;
	if (!getFunction("glTexGend", (void**)&glTexGend)) return false;
	if (!getFunction("glTexGenf", (void**)&glTexGenf)) return false;
	if (!getFunction("glTexGeni", (void**)&glTexGeni)) return false;
	if (!getFunction("glTexGendv", (void**)&glTexGendv)) return false;
	if (!getFunction("glTexGenfv", (void**)&glTexGenfv)) return false;
	if (!getFunction("glTexGeniv", (void**)&glTexGeniv)) return false;
	if (!getFunction("glGetTexGendv", (void**)&glGetTexGendv)) return false;
	if (!getFunction("glGetTexGenfv", (void**)&glGetTexGenfv)) return false;
	if (!getFunction("glGetTexGeniv", (void**)&glGetTexGeniv)) return false;
	if (!getFunction("glTexEnvf", (void**)&glTexEnvf)) return false;
	if (!getFunction("glTexEnvi", (void**)&glTexEnvi)) return false;
	if (!getFunction("glTexEnvfv", (void**)&glTexEnvfv)) return false;
	if (!getFunction("glTexEnviv", (void**)&glTexEnviv)) return false;
	if (!getFunction("glGetTexEnvfv", (void**)&glGetTexEnvfv)) return false;
	if (!getFunction("glGetTexEnviv", (void**)&glGetTexEnviv)) return false;
	if (!getFunction("glTexParameterf", (void**)&glTexParameterf)) return false;
	if (!getFunction("glTexParameteri", (void**)&glTexParameteri)) return false;
	if (!getFunction("glTexParameterfv", (void**)&glTexParameterfv)) return false;
	if (!getFunction("glTexParameteriv", (void**)&glTexParameteriv)) return false;
	if (!getFunction("glGetTexParameterfv", (void**)&glGetTexParameterfv)) return false;
	if (!getFunction("glGetTexParameteriv", (void**)&glGetTexParameteriv)) return false;
	if (!getFunction("glGetTexLevelParameterfv", (void**)&glGetTexLevelParameterfv)) return false;
	if (!getFunction("glGetTexLevelParameteriv", (void**)&glGetTexLevelParameteriv)) return false;
	if (!getFunction("glTexImage1D", (void**)&glTexImage1D)) return false;
	if (!getFunction("glTexImage2D", (void**)&glTexImage2D)) return false;
	if (!getFunction("glGetTexImage", (void**)&glGetTexImage)) return false;
	if (!getFunction("glGenTextures", (void**)&glGenTextures)) return false;
	if (!getFunction("glDeleteTextures", (void**)&glDeleteTextures)) return false;
	if (!getFunction("glBindTexture", (void**)&glBindTexture)) return false;
	if (!getFunction("glPrioritizeTextures", (void**)&glPrioritizeTextures)) return false;
	if (!getFunction("glAreTexturesResident", (void**)&glAreTexturesResident)) return false;
	if (!getFunction("glIsTexture", (void**)&glIsTexture)) return false;
	if (!getFunction("glTexSubImage1D", (void**)&glTexSubImage1D)) return false;
	if (!getFunction("glTexSubImage2D", (void**)&glTexSubImage2D)) return false;
	if (!getFunction("glCopyTexImage1D", (void**)&glCopyTexImage1D)) return false;
	if (!getFunction("glCopyTexImage2D", (void**)&glCopyTexImage2D)) return false;
	if (!getFunction("glCopyTexSubImage1D", (void**)&glCopyTexSubImage1D)) return false;
	if (!getFunction("glCopyTexSubImage2D", (void**)&glCopyTexSubImage2D)) return false;
	if (!getFunction("glMap1d", (void**)&glMap1d)) return false;
	if (!getFunction("glMap1f", (void**)&glMap1f)) return false;
	if (!getFunction("glMap2d", (void**)&glMap2d)) return false;
	if (!getFunction("glMap2f", (void**)&glMap2f)) return false;
	if (!getFunction("glGetMapdv", (void**)&glGetMapdv)) return false;
	if (!getFunction("glGetMapfv", (void**)&glGetMapfv)) return false;
	if (!getFunction("glGetMapiv", (void**)&glGetMapiv)) return false;
	if (!getFunction("glEvalCoord1d", (void**)&glEvalCoord1d)) return false;
	if (!getFunction("glEvalCoord1f", (void**)&glEvalCoord1f)) return false;
	if (!getFunction("glEvalCoord1dv", (void**)&glEvalCoord1dv)) return false;
	if (!getFunction("glEvalCoord1fv", (void**)&glEvalCoord1fv)) return false;
	if (!getFunction("glEvalCoord2d", (void**)&glEvalCoord2d)) return false;
	if (!getFunction("glEvalCoord2f", (void**)&glEvalCoord2f)) return false;
	if (!getFunction("glEvalCoord2dv", (void**)&glEvalCoord2dv)) return false;
	if (!getFunction("glEvalCoord2fv", (void**)&glEvalCoord2fv)) return false;
	if (!getFunction("glMapGrid1d", (void**)&glMapGrid1d)) return false;
	if (!getFunction("glMapGrid1f", (void**)&glMapGrid1f)) return false;
	if (!getFunction("glMapGrid2d", (void**)&glMapGrid2d)) return false;
	if (!getFunction("glMapGrid2f", (void**)&glMapGrid2f)) return false;
	if (!getFunction("glEvalPoint1", (void**)&glEvalPoint1)) return false;
	if (!getFunction("glEvalPoint2", (void**)&glEvalPoint2)) return false;
	if (!getFunction("glEvalMesh1", (void**)&glEvalMesh1)) return false;
	if (!getFunction("glEvalMesh2", (void**)&glEvalMesh2)) return false;
	if (!getFunction("glFogf", (void**)&glFogf)) return false;
	if (!getFunction("glFogi", (void**)&glFogi)) return false;
	if (!getFunction("glFogfv", (void**)&glFogfv)) return false;
	if (!getFunction("glFogiv", (void**)&glFogiv)) return false;
	if (!getFunction("glFeedbackBuffer", (void**)&glFeedbackBuffer)) return false;
	if (!getFunction("glPassThrough", (void**)&glPassThrough)) return false;
	if (!getFunction("glSelectBuffer", (void**)&glSelectBuffer)) return false;
	if (!getFunction("glInitNames", (void**)&glInitNames)) return false;
	if (!getFunction("glLoadName", (void**)&glLoadName)) return false;
	if (!getFunction("glPushName", (void**)&glPushName)) return false;
	if (!getFunction("glPopName", (void**)&glPopName)) return false;
	if (!getFunction("wglGetCurrentDC", (void**)&wglGetCurrentDC)) return false;
	if (!getFunction("wglCreateContext", (void**)&wglCreateContext)) return false;
	if (!getFunction("wglCreateLayerContext", (void**)&wglCreateLayerContext)) return false;
	if (!getFunction("wglGetCurrentContext", (void**)&wglGetCurrentContext)) return false;
	if (!getFunction("wglGetProcAddress", (void**)&wglGetProcAddress)) return false;
	if (!getFunction("wglChoosePixelFormat", (void**)&wglChoosePixelFormat)) return false;
	if (!getFunction("wglCopyContext", (void**)&wglCopyContext)) return false;
	if (!getFunction("wglDeleteContext", (void**)&wglDeleteContext)) return false;
	if (!getFunction("wglDescribeLayerPlane", (void**)&wglDescribeLayerPlane)) return false;
	if (!getFunction("wglDescribePixelFormat", (void**)&wglDescribePixelFormat)) return false;
	if (!getFunction("wglGetLayerPaletteEntries", (void**)&wglGetLayerPaletteEntries)) return false;
	if (!getFunction("wglGetPixelFormat", (void**)&wglGetPixelFormat)) return false;
	if (!getFunction("wglMakeCurrent", (void**)&wglMakeCurrent)) return false;
	if (!getFunction("wglRealizeLayerPalette", (void**)&wglRealizeLayerPalette)) return false;
	if (!getFunction("wglSetLayerPaletteEntries", (void**)&wglSetLayerPaletteEntries)) return false;
	if (!getFunction("wglSetPixelFormat", (void**)&wglSetPixelFormat)) return false;
	if (!getFunction("wglShareLists", (void**)&wglShareLists)) return false;
	if (!getFunction("wglSwapBuffers", (void**)&wglSwapBuffers)) return false;
	if (!getFunction("wglSwapLayerBuffers", (void**)&wglSwapLayerBuffers)) return false;
	if (!getFunction("wglUseFontBitmapsA", (void**)&wglUseFontBitmapsA)) return false;
	if (!getFunction("wglUseFontBitmapsW", (void**)&wglUseFontBitmapsW)) return false;
	if (!getFunction("wglUseFontOutlinesA", (void**)&wglUseFontOutlinesA)) return false;
	if (!getFunction("wglUseFontOutlinesW", (void**)&wglUseFontOutlinesW)) return false;
	return true;
};

bool GLJumpTable::hasExtension(const char* ext)
{
	char* result  = strstr(_extensions,ext);
	return result!=0;
}

void GLJumpTable::initExtensions()
{
	// initialize extensions releated to spherical correction
	const char*  gl_ext = reinterpret_cast<const char*>(this->glGetString(GL_EXTENSIONS));
	const char*  gl_ver = reinterpret_cast<const char*>(this->glGetString(GL_VERSION));
	const char* wgl_ext = 0;

	int  gl_ext_len = strlen(gl_ext);
	int wgl_ext_len = wgl_ext?strlen(wgl_ext):0;
	_extensions = (char*)malloc(gl_ext_len+wgl_ext_len+3);
	strcpy(_extensions,gl_ext);
	if (wgl_ext)
	{
		strcat(_extensions," ");
		strcat(_extensions,wgl_ext);
	}
	strcat(_extensions," ");

	// multi texturing
	if (hasExtension("GL_ARB_multitexture")) // add gl version greater than 1.3 check
	{
		int _texture_units;
		this->glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB,&_texture_units);
		glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)(this->wglGetProcAddress("glActiveTextureARB"));
		glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)(this->wglGetProcAddress("glClientActiveTextureARB"));
		glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)(this->wglGetProcAddress("glMultiTexCoord2fARB"));
	}

	// arb shading
	if ( hasExtension("GL_ARB_shader_objects")) // add gl version greater than 1.3 check
	{
		int _texture_units;
		this->glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB,&_texture_units);
        glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)(this->wglGetProcAddress("glValidateProgramARB"));
        glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)(this->wglGetProcAddress("glUseProgramObjectARB"));
        glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)(this->wglGetProcAddress("glUniformMatrix4fvARB"));
        glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)(this->wglGetProcAddress("glUniformMatrix3fvARB"));
        glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)(this->wglGetProcAddress("glUniformMatrix2fvARB"));
        glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)(this->wglGetProcAddress("glUniform4ivARB"));
        glUniform4iARB = (PFNGLUNIFORM4IARBPROC)(this->wglGetProcAddress("glUniform4iARB"));
        glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)(this->wglGetProcAddress("glUniform4fvARB"));
        glUniform4fARB = (PFNGLUNIFORM4FARBPROC)(this->wglGetProcAddress("glUniform4fARB"));
        glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)(this->wglGetProcAddress("glUniform3ivARB"));
        glUniform3iARB = (PFNGLUNIFORM3IARBPROC)(this->wglGetProcAddress("glUniform3iARB"));
        glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)(this->wglGetProcAddress("glUniform3fvARB"));
        glUniform3fARB = (PFNGLUNIFORM3FARBPROC)(this->wglGetProcAddress("glUniform3fARB"));
        glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)(this->wglGetProcAddress("glUniform2ivARB"));
        glUniform2iARB = (PFNGLUNIFORM2IARBPROC)(this->wglGetProcAddress("glUniform2iARB"));
        glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)(this->wglGetProcAddress("glUniform2fvARB"));
        glUniform2fARB = (PFNGLUNIFORM2FARBPROC)(this->wglGetProcAddress("glUniform2fARB"));
        glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)(this->wglGetProcAddress("glUniform1ivARB"));
        glUniform1iARB = (PFNGLUNIFORM1IARBPROC)(this->wglGetProcAddress("glUniform1iARB"));
        glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)(this->wglGetProcAddress("glUniform1fvARB"));
        glUniform1fARB = (PFNGLUNIFORM1FARBPROC)(this->wglGetProcAddress("glUniform1fARB"));
        glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)(this->wglGetProcAddress("glShaderSourceARB"));
        glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)(this->wglGetProcAddress("glLinkProgramARB"));
        glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)(this->wglGetProcAddress("glGetUniformivARB"));
        glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)(this->wglGetProcAddress("glGetUniformfvARB"));
        glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)(this->wglGetProcAddress("glGetUniformLocationARB"));
        glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)(this->wglGetProcAddress("glGetShaderSourceARB"));
        glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)(this->wglGetProcAddress("glGetObjectParameterivARB"));
        glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)(this->wglGetProcAddress("glGetObjectParameterfvARB"));
        glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)(this->wglGetProcAddress("glGetInfoLogARB"));
        glGetHandleARB = (PFNGLGETHANDLEARBPROC)(this->wglGetProcAddress("glGetHandleARB"));
        glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)(this->wglGetProcAddress("glGetAttachedObjectsARB"));
        glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)(this->wglGetProcAddress("glGetActiveUniformARB"));
        glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)(this->wglGetProcAddress("glDetachObjectARB"));
        glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)(this->wglGetProcAddress("glDeleteObjectARB"));
        glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)(this->wglGetProcAddress("glCreateShaderObjectARB"));
        glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)(this->wglGetProcAddress("glCreateProgramObjectARB"));
        glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)(this->wglGetProcAddress("glCompileShaderARB"));
        glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)(this->wglGetProcAddress("glAttachObjectARB"));
	}
}

bool GLJumpTable::multitexture()
{
	return glActiveTextureARB!=0;
}
