// this file was automatically generated DO NOT EDIT!
// CaveUTGL - Willem de Jonge (willem@argcargv.com) - 2003
#ifndef GLJUMPTABLE_H
#define GLJUMPTABLE_H

#include "GL/gl.h"
#include <malloc.h>

class GLJumpTable
{
public:
	GLJumpTable() : _extensions(0) {}
	~GLJumpTable() { free(_extensions); }

	bool init();
	void initExtensions();
	bool multitexture();

	void (GLAPIENTRY *glClearIndex) ( GLfloat c );
	void (GLAPIENTRY *glClearColor) ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
	void (GLAPIENTRY *glClear) ( GLbitfield mask );
	void (GLAPIENTRY *glIndexMask) ( GLuint mask );
	void (GLAPIENTRY *glColorMask) ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
	void (GLAPIENTRY *glAlphaFunc) ( GLenum func, GLclampf ref );
	void (GLAPIENTRY *glBlendFunc) ( GLenum sfactor, GLenum dfactor );
	void (GLAPIENTRY *glLogicOp) ( GLenum opcode );
	void (GLAPIENTRY *glCullFace) ( GLenum mode );
	void (GLAPIENTRY *glFrontFace) ( GLenum mode );
	void (GLAPIENTRY *glPointSize) ( GLfloat size );
	void (GLAPIENTRY *glLineWidth) ( GLfloat width );
	void (GLAPIENTRY *glLineStipple) ( GLint factor, GLushort pattern );
	void (GLAPIENTRY *glPolygonMode) ( GLenum face, GLenum mode );
	void (GLAPIENTRY *glPolygonOffset) ( GLfloat factor, GLfloat units );
	void (GLAPIENTRY *glPolygonStipple) ( const GLubyte *mask );
	void (GLAPIENTRY *glGetPolygonStipple) ( GLubyte *mask );
	void (GLAPIENTRY *glEdgeFlag) ( GLboolean flag );
	void (GLAPIENTRY *glEdgeFlagv) ( const GLboolean *flag );
	void (GLAPIENTRY *glScissor) ( GLint x, GLint y, GLsizei width, GLsizei height);
	void (GLAPIENTRY *glClipPlane) ( GLenum plane, const GLdouble *equation );
	void (GLAPIENTRY *glGetClipPlane) ( GLenum plane, GLdouble *equation );
	void (GLAPIENTRY *glDrawBuffer) ( GLenum mode );
	void (GLAPIENTRY *glReadBuffer) ( GLenum mode );
	void (GLAPIENTRY *glEnable) ( GLenum cap );
	void (GLAPIENTRY *glDisable) ( GLenum cap );
	GLboolean (GLAPIENTRY *glIsEnabled) ( GLenum cap );
	void (GLAPIENTRY *glEnableClientState) ( GLenum cap );
	void (GLAPIENTRY *glDisableClientState) ( GLenum cap );
	void (GLAPIENTRY *glGetBooleanv) ( GLenum pname, GLboolean *params );
	void (GLAPIENTRY *glGetDoublev) ( GLenum pname, GLdouble *params );
	void (GLAPIENTRY *glGetFloatv) ( GLenum pname, GLfloat *params );
	void (GLAPIENTRY *glGetIntegerv) ( GLenum pname, GLint *params );
	void (GLAPIENTRY *glPushAttrib) ( GLbitfield mask );
	void (GLAPIENTRY *glPopAttrib) ( void );
	void (GLAPIENTRY *glPushClientAttrib) ( GLbitfield mask );
	void (GLAPIENTRY *glPopClientAttrib) ( void );
	GLint (GLAPIENTRY *glRenderMode) ( GLenum mode );
	GLenum (GLAPIENTRY *glGetError) ( void );
	const GLubyte* (GLAPIENTRY *glGetString) ( GLenum name );
	void (GLAPIENTRY *glFinish) ( void );
	void (GLAPIENTRY *glFlush) ( void );
	void (GLAPIENTRY *glHint) ( GLenum target, GLenum mode );
	void (GLAPIENTRY *glClearDepth) ( GLclampd depth );
	void (GLAPIENTRY *glDepthFunc) ( GLenum func );
	void (GLAPIENTRY *glDepthMask) ( GLboolean flag );
	void (GLAPIENTRY *glDepthRange) ( GLclampd near_val, GLclampd far_val );
	void (GLAPIENTRY *glClearAccum) ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
	void (GLAPIENTRY *glAccum) ( GLenum op, GLfloat value );
	void (GLAPIENTRY *glMatrixMode) ( GLenum mode );
	void (GLAPIENTRY *glOrtho) ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
	void (GLAPIENTRY *glFrustum) ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
	void (GLAPIENTRY *glViewport) ( GLint x, GLint y, GLsizei width, GLsizei height );
	void (GLAPIENTRY *glPushMatrix) ( void );
	void (GLAPIENTRY *glPopMatrix) ( void );
	void (GLAPIENTRY *glLoadIdentity) ( void );
	void (GLAPIENTRY *glLoadMatrixd) ( const GLdouble *m );
	void (GLAPIENTRY *glLoadMatrixf) ( const GLfloat *m );
	void (GLAPIENTRY *glMultMatrixd) ( const GLdouble *m );
	void (GLAPIENTRY *glMultMatrixf) ( const GLfloat *m );
	void (GLAPIENTRY *glRotated) ( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
	void (GLAPIENTRY *glRotatef) ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
	void (GLAPIENTRY *glScaled) ( GLdouble x, GLdouble y, GLdouble z );
	void (GLAPIENTRY *glScalef) ( GLfloat x, GLfloat y, GLfloat z );
	void (GLAPIENTRY *glTranslated) ( GLdouble x, GLdouble y, GLdouble z );
	void (GLAPIENTRY *glTranslatef) ( GLfloat x, GLfloat y, GLfloat z );
	GLboolean (GLAPIENTRY *glIsList) ( GLuint list );
	void (GLAPIENTRY *glDeleteLists) ( GLuint list, GLsizei range );
	GLuint (GLAPIENTRY *glGenLists) ( GLsizei range );
	void (GLAPIENTRY *glNewList) ( GLuint list, GLenum mode );
	void (GLAPIENTRY *glEndList) ( void );
	void (GLAPIENTRY *glCallList) ( GLuint list );
	void (GLAPIENTRY *glCallLists) ( GLsizei n, GLenum type, const GLvoid *lists );
	void (GLAPIENTRY *glListBase) ( GLuint base );
	void (GLAPIENTRY *glBegin) ( GLenum mode );
	void (GLAPIENTRY *glEnd) ( void );
	void (GLAPIENTRY *glVertex2d) ( GLdouble x, GLdouble y );
	void (GLAPIENTRY *glVertex2f) ( GLfloat x, GLfloat y );
	void (GLAPIENTRY *glVertex2i) ( GLint x, GLint y );
	void (GLAPIENTRY *glVertex2s) ( GLshort x, GLshort y );
	void (GLAPIENTRY *glVertex3d) ( GLdouble x, GLdouble y, GLdouble z );
	void (GLAPIENTRY *glVertex3f) ( GLfloat x, GLfloat y, GLfloat z );
	void (GLAPIENTRY *glVertex3i) ( GLint x, GLint y, GLint z );
	void (GLAPIENTRY *glVertex3s) ( GLshort x, GLshort y, GLshort z );
	void (GLAPIENTRY *glVertex4d) ( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
	void (GLAPIENTRY *glVertex4f) ( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
	void (GLAPIENTRY *glVertex4i) ( GLint x, GLint y, GLint z, GLint w );
	void (GLAPIENTRY *glVertex4s) ( GLshort x, GLshort y, GLshort z, GLshort w );
	void (GLAPIENTRY *glVertex2dv) ( const GLdouble *v );
	void (GLAPIENTRY *glVertex2fv) ( const GLfloat *v );
	void (GLAPIENTRY *glVertex2iv) ( const GLint *v );
	void (GLAPIENTRY *glVertex2sv) ( const GLshort *v );
	void (GLAPIENTRY *glVertex3dv) ( const GLdouble *v );
	void (GLAPIENTRY *glVertex3fv) ( const GLfloat *v );
	void (GLAPIENTRY *glVertex3iv) ( const GLint *v );
	void (GLAPIENTRY *glVertex3sv) ( const GLshort *v );
	void (GLAPIENTRY *glVertex4dv) ( const GLdouble *v );
	void (GLAPIENTRY *glVertex4fv) ( const GLfloat *v );
	void (GLAPIENTRY *glVertex4iv) ( const GLint *v );
	void (GLAPIENTRY *glVertex4sv) ( const GLshort *v );
	void (GLAPIENTRY *glNormal3b) ( GLbyte nx, GLbyte ny, GLbyte nz );
	void (GLAPIENTRY *glNormal3d) ( GLdouble nx, GLdouble ny, GLdouble nz );
	void (GLAPIENTRY *glNormal3f) ( GLfloat nx, GLfloat ny, GLfloat nz );
	void (GLAPIENTRY *glNormal3i) ( GLint nx, GLint ny, GLint nz );
	void (GLAPIENTRY *glNormal3s) ( GLshort nx, GLshort ny, GLshort nz );
	void (GLAPIENTRY *glNormal3bv) ( const GLbyte *v );
	void (GLAPIENTRY *glNormal3dv) ( const GLdouble *v );
	void (GLAPIENTRY *glNormal3fv) ( const GLfloat *v );
	void (GLAPIENTRY *glNormal3iv) ( const GLint *v );
	void (GLAPIENTRY *glNormal3sv) ( const GLshort *v );
	void (GLAPIENTRY *glIndexd) ( GLdouble c );
	void (GLAPIENTRY *glIndexf) ( GLfloat c );
	void (GLAPIENTRY *glIndexi) ( GLint c );
	void (GLAPIENTRY *glIndexs) ( GLshort c );
	void (GLAPIENTRY *glIndexub) ( GLubyte c );
	void (GLAPIENTRY *glIndexdv) ( const GLdouble *c );
	void (GLAPIENTRY *glIndexfv) ( const GLfloat *c );
	void (GLAPIENTRY *glIndexiv) ( const GLint *c );
	void (GLAPIENTRY *glIndexsv) ( const GLshort *c );
	void (GLAPIENTRY *glIndexubv) ( const GLubyte *c );
	void (GLAPIENTRY *glColor3b) ( GLbyte red, GLbyte green, GLbyte blue );
	void (GLAPIENTRY *glColor3d) ( GLdouble red, GLdouble green, GLdouble blue );
	void (GLAPIENTRY *glColor3f) ( GLfloat red, GLfloat green, GLfloat blue );
	void (GLAPIENTRY *glColor3i) ( GLint red, GLint green, GLint blue );
	void (GLAPIENTRY *glColor3s) ( GLshort red, GLshort green, GLshort blue );
	void (GLAPIENTRY *glColor3ub) ( GLubyte red, GLubyte green, GLubyte blue );
	void (GLAPIENTRY *glColor3ui) ( GLuint red, GLuint green, GLuint blue );
	void (GLAPIENTRY *glColor3us) ( GLushort red, GLushort green, GLushort blue );
	void (GLAPIENTRY *glColor4b) ( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );
	void (GLAPIENTRY *glColor4d) ( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );
	void (GLAPIENTRY *glColor4f) ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
	void (GLAPIENTRY *glColor4i) ( GLint red, GLint green, GLint blue, GLint alpha );
	void (GLAPIENTRY *glColor4s) ( GLshort red, GLshort green, GLshort blue, GLshort alpha );
	void (GLAPIENTRY *glColor4ub) ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
	void (GLAPIENTRY *glColor4ui) ( GLuint red, GLuint green, GLuint blue, GLuint alpha );
	void (GLAPIENTRY *glColor4us) ( GLushort red, GLushort green, GLushort blue, GLushort alpha );
	void (GLAPIENTRY *glColor3bv) ( const GLbyte *v );
	void (GLAPIENTRY *glColor3dv) ( const GLdouble *v );
	void (GLAPIENTRY *glColor3fv) ( const GLfloat *v );
	void (GLAPIENTRY *glColor3iv) ( const GLint *v );
	void (GLAPIENTRY *glColor3sv) ( const GLshort *v );
	void (GLAPIENTRY *glColor3ubv) ( const GLubyte *v );
	void (GLAPIENTRY *glColor3uiv) ( const GLuint *v );
	void (GLAPIENTRY *glColor3usv) ( const GLushort *v );
	void (GLAPIENTRY *glColor4bv) ( const GLbyte *v );
	void (GLAPIENTRY *glColor4dv) ( const GLdouble *v );
	void (GLAPIENTRY *glColor4fv) ( const GLfloat *v );
	void (GLAPIENTRY *glColor4iv) ( const GLint *v );
	void (GLAPIENTRY *glColor4sv) ( const GLshort *v );
	void (GLAPIENTRY *glColor4ubv) ( const GLubyte *v );
	void (GLAPIENTRY *glColor4uiv) ( const GLuint *v );
	void (GLAPIENTRY *glColor4usv) ( const GLushort *v );
	void (GLAPIENTRY *glTexCoord1d) ( GLdouble s );
	void (GLAPIENTRY *glTexCoord1f) ( GLfloat s );
	void (GLAPIENTRY *glTexCoord1i) ( GLint s );
	void (GLAPIENTRY *glTexCoord1s) ( GLshort s );
	void (GLAPIENTRY *glTexCoord2d) ( GLdouble s, GLdouble t );
	void (GLAPIENTRY *glTexCoord2f) ( GLfloat s, GLfloat t );
	void (GLAPIENTRY *glTexCoord2i) ( GLint s, GLint t );
	void (GLAPIENTRY *glTexCoord2s) ( GLshort s, GLshort t );
	void (GLAPIENTRY *glTexCoord3d) ( GLdouble s, GLdouble t, GLdouble r );
	void (GLAPIENTRY *glTexCoord3f) ( GLfloat s, GLfloat t, GLfloat r );
	void (GLAPIENTRY *glTexCoord3i) ( GLint s, GLint t, GLint r );
	void (GLAPIENTRY *glTexCoord3s) ( GLshort s, GLshort t, GLshort r );
	void (GLAPIENTRY *glTexCoord4d) ( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
	void (GLAPIENTRY *glTexCoord4f) ( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
	void (GLAPIENTRY *glTexCoord4i) ( GLint s, GLint t, GLint r, GLint q );
	void (GLAPIENTRY *glTexCoord4s) ( GLshort s, GLshort t, GLshort r, GLshort q );
	void (GLAPIENTRY *glTexCoord1dv) ( const GLdouble *v );
	void (GLAPIENTRY *glTexCoord1fv) ( const GLfloat *v );
	void (GLAPIENTRY *glTexCoord1iv) ( const GLint *v );
	void (GLAPIENTRY *glTexCoord1sv) ( const GLshort *v );
	void (GLAPIENTRY *glTexCoord2dv) ( const GLdouble *v );
	void (GLAPIENTRY *glTexCoord2fv) ( const GLfloat *v );
	void (GLAPIENTRY *glTexCoord2iv) ( const GLint *v );
	void (GLAPIENTRY *glTexCoord2sv) ( const GLshort *v );
	void (GLAPIENTRY *glTexCoord3dv) ( const GLdouble *v );
	void (GLAPIENTRY *glTexCoord3fv) ( const GLfloat *v );
	void (GLAPIENTRY *glTexCoord3iv) ( const GLint *v );
	void (GLAPIENTRY *glTexCoord3sv) ( const GLshort *v );
	void (GLAPIENTRY *glTexCoord4dv) ( const GLdouble *v );
	void (GLAPIENTRY *glTexCoord4fv) ( const GLfloat *v );
	void (GLAPIENTRY *glTexCoord4iv) ( const GLint *v );
	void (GLAPIENTRY *glTexCoord4sv) ( const GLshort *v );
	void (GLAPIENTRY *glRasterPos2d) ( GLdouble x, GLdouble y );
	void (GLAPIENTRY *glRasterPos2f) ( GLfloat x, GLfloat y );
	void (GLAPIENTRY *glRasterPos2i) ( GLint x, GLint y );
	void (GLAPIENTRY *glRasterPos2s) ( GLshort x, GLshort y );
	void (GLAPIENTRY *glRasterPos3d) ( GLdouble x, GLdouble y, GLdouble z );
	void (GLAPIENTRY *glRasterPos3f) ( GLfloat x, GLfloat y, GLfloat z );
	void (GLAPIENTRY *glRasterPos3i) ( GLint x, GLint y, GLint z );
	void (GLAPIENTRY *glRasterPos3s) ( GLshort x, GLshort y, GLshort z );
	void (GLAPIENTRY *glRasterPos4d) ( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
	void (GLAPIENTRY *glRasterPos4f) ( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
	void (GLAPIENTRY *glRasterPos4i) ( GLint x, GLint y, GLint z, GLint w );
	void (GLAPIENTRY *glRasterPos4s) ( GLshort x, GLshort y, GLshort z, GLshort w );
	void (GLAPIENTRY *glRasterPos2dv) ( const GLdouble *v );
	void (GLAPIENTRY *glRasterPos2fv) ( const GLfloat *v );
	void (GLAPIENTRY *glRasterPos2iv) ( const GLint *v );
	void (GLAPIENTRY *glRasterPos2sv) ( const GLshort *v );
	void (GLAPIENTRY *glRasterPos3dv) ( const GLdouble *v );
	void (GLAPIENTRY *glRasterPos3fv) ( const GLfloat *v );
	void (GLAPIENTRY *glRasterPos3iv) ( const GLint *v );
	void (GLAPIENTRY *glRasterPos3sv) ( const GLshort *v );
	void (GLAPIENTRY *glRasterPos4dv) ( const GLdouble *v );
	void (GLAPIENTRY *glRasterPos4fv) ( const GLfloat *v );
	void (GLAPIENTRY *glRasterPos4iv) ( const GLint *v );
	void (GLAPIENTRY *glRasterPos4sv) ( const GLshort *v );
	void (GLAPIENTRY *glRectd) ( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
	void (GLAPIENTRY *glRectf) ( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
	void (GLAPIENTRY *glRecti) ( GLint x1, GLint y1, GLint x2, GLint y2 );
	void (GLAPIENTRY *glRects) ( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
	void (GLAPIENTRY *glRectdv) ( const GLdouble *v1, const GLdouble *v2 );
	void (GLAPIENTRY *glRectfv) ( const GLfloat *v1, const GLfloat *v2 );
	void (GLAPIENTRY *glRectiv) ( const GLint *v1, const GLint *v2 );
	void (GLAPIENTRY *glRectsv) ( const GLshort *v1, const GLshort *v2 );
	void (GLAPIENTRY *glVertexPointer) ( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
	void (GLAPIENTRY *glNormalPointer) ( GLenum type, GLsizei stride, const GLvoid *ptr );
	void (GLAPIENTRY *glColorPointer) ( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
	void (GLAPIENTRY *glIndexPointer) ( GLenum type, GLsizei stride, const GLvoid *ptr );
	void (GLAPIENTRY *glTexCoordPointer) ( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
	void (GLAPIENTRY *glEdgeFlagPointer) ( GLsizei stride, const GLvoid *ptr );
	void (GLAPIENTRY *glGetPointerv) ( GLenum pname, GLvoid **params );
	void (GLAPIENTRY *glArrayElement) ( GLint i );
	void (GLAPIENTRY *glDrawArrays) ( GLenum mode, GLint first, GLsizei count );
	void (GLAPIENTRY *glDrawElements) ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices );
	void (GLAPIENTRY *glInterleavedArrays) ( GLenum format, GLsizei stride, const GLvoid *pointer );
	void (GLAPIENTRY *glShadeModel) ( GLenum mode );
	void (GLAPIENTRY *glLightf) ( GLenum light, GLenum pname, GLfloat param );
	void (GLAPIENTRY *glLighti) ( GLenum light, GLenum pname, GLint param );
	void (GLAPIENTRY *glLightfv) ( GLenum light, GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glLightiv) ( GLenum light, GLenum pname, const GLint *params );
	void (GLAPIENTRY *glGetLightfv) ( GLenum light, GLenum pname, GLfloat *params );
	void (GLAPIENTRY *glGetLightiv) ( GLenum light, GLenum pname, GLint *params );
	void (GLAPIENTRY *glLightModelf) ( GLenum pname, GLfloat param );
	void (GLAPIENTRY *glLightModeli) ( GLenum pname, GLint param );
	void (GLAPIENTRY *glLightModelfv) ( GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glLightModeliv) ( GLenum pname, const GLint *params );
	void (GLAPIENTRY *glMaterialf) ( GLenum face, GLenum pname, GLfloat param );
	void (GLAPIENTRY *glMateriali) ( GLenum face, GLenum pname, GLint param );
	void (GLAPIENTRY *glMaterialfv) ( GLenum face, GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glMaterialiv) ( GLenum face, GLenum pname, const GLint *params );
	void (GLAPIENTRY *glGetMaterialfv) ( GLenum face, GLenum pname, GLfloat *params );
	void (GLAPIENTRY *glGetMaterialiv) ( GLenum face, GLenum pname, GLint *params );
	void (GLAPIENTRY *glColorMaterial) ( GLenum face, GLenum mode );
	void (GLAPIENTRY *glPixelZoom) ( GLfloat xfactor, GLfloat yfactor );
	void (GLAPIENTRY *glPixelStoref) ( GLenum pname, GLfloat param );
	void (GLAPIENTRY *glPixelStorei) ( GLenum pname, GLint param );
	void (GLAPIENTRY *glPixelTransferf) ( GLenum pname, GLfloat param );
	void (GLAPIENTRY *glPixelTransferi) ( GLenum pname, GLint param );
	void (GLAPIENTRY *glPixelMapfv) ( GLenum map, GLint mapsize, const GLfloat *values );
	void (GLAPIENTRY *glPixelMapuiv) ( GLenum map, GLint mapsize, const GLuint *values );
	void (GLAPIENTRY *glPixelMapusv) ( GLenum map, GLint mapsize, const GLushort *values );
	void (GLAPIENTRY *glGetPixelMapfv) ( GLenum map, GLfloat *values );
	void (GLAPIENTRY *glGetPixelMapuiv) ( GLenum map, GLuint *values );
	void (GLAPIENTRY *glGetPixelMapusv) ( GLenum map, GLushort *values );
	void (GLAPIENTRY *glBitmap) ( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap );
	void (GLAPIENTRY *glReadPixels) ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
	void (GLAPIENTRY *glDrawPixels) ( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
	void (GLAPIENTRY *glCopyPixels) ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );
	void (GLAPIENTRY *glStencilFunc) ( GLenum func, GLint ref, GLuint mask );
	void (GLAPIENTRY *glStencilMask) ( GLuint mask );
	void (GLAPIENTRY *glStencilOp) ( GLenum fail, GLenum zfail, GLenum zpass );
	void (GLAPIENTRY *glClearStencil) ( GLint s );
	void (GLAPIENTRY *glTexGend) ( GLenum coord, GLenum pname, GLdouble param );
	void (GLAPIENTRY *glTexGenf) ( GLenum coord, GLenum pname, GLfloat param );
	void (GLAPIENTRY *glTexGeni) ( GLenum coord, GLenum pname, GLint param );
	void (GLAPIENTRY *glTexGendv) ( GLenum coord, GLenum pname, const GLdouble *params );
	void (GLAPIENTRY *glTexGenfv) ( GLenum coord, GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glTexGeniv) ( GLenum coord, GLenum pname, const GLint *params );
	void (GLAPIENTRY *glGetTexGendv) ( GLenum coord, GLenum pname, GLdouble *params );
	void (GLAPIENTRY *glGetTexGenfv) ( GLenum coord, GLenum pname, GLfloat *params );
	void (GLAPIENTRY *glGetTexGeniv) ( GLenum coord, GLenum pname, GLint *params );
	void (GLAPIENTRY *glTexEnvf) ( GLenum target, GLenum pname, GLfloat param );
	void (GLAPIENTRY *glTexEnvi) ( GLenum target, GLenum pname, GLint param );
	void (GLAPIENTRY *glTexEnvfv) ( GLenum target, GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glTexEnviv) ( GLenum target, GLenum pname, const GLint *params );
	void (GLAPIENTRY *glGetTexEnvfv) ( GLenum target, GLenum pname, GLfloat *params );
	void (GLAPIENTRY *glGetTexEnviv) ( GLenum target, GLenum pname, GLint *params );
	void (GLAPIENTRY *glTexParameterf) ( GLenum target, GLenum pname, GLfloat param );
	void (GLAPIENTRY *glTexParameteri) ( GLenum target, GLenum pname, GLint param );
	void (GLAPIENTRY *glTexParameterfv) ( GLenum target, GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glTexParameteriv) ( GLenum target, GLenum pname, const GLint *params );
	void (GLAPIENTRY *glGetTexParameterfv) ( GLenum target, GLenum pname, GLfloat *params);
	void (GLAPIENTRY *glGetTexParameteriv) ( GLenum target, GLenum pname, GLint *params );
	void (GLAPIENTRY *glGetTexLevelParameterfv) ( GLenum target, GLint level, GLenum pname, GLfloat *params );
	void (GLAPIENTRY *glGetTexLevelParameteriv) ( GLenum target, GLint level, GLenum pname, GLint *params );
	void (GLAPIENTRY *glTexImage1D) ( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
	void (GLAPIENTRY *glTexImage2D) ( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
	void (GLAPIENTRY *glGetTexImage) ( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels );
	void (GLAPIENTRY *glGenTextures) ( GLsizei n, GLuint *textures );
	void (GLAPIENTRY *glDeleteTextures) ( GLsizei n, const GLuint *textures);
	void (GLAPIENTRY *glBindTexture) ( GLenum target, GLuint texture );
	void (GLAPIENTRY *glPrioritizeTextures) ( GLsizei n, const GLuint *textures, const GLclampf *priorities );
	GLboolean (GLAPIENTRY *glAreTexturesResident) ( GLsizei n, const GLuint *textures, GLboolean *residences );
	GLboolean (GLAPIENTRY *glIsTexture) ( GLuint texture );
	void (GLAPIENTRY *glTexSubImage1D) ( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels );
	void (GLAPIENTRY *glTexSubImage2D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
	void (GLAPIENTRY *glCopyTexImage1D) ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border );
	void (GLAPIENTRY *glCopyTexImage2D) ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
	void (GLAPIENTRY *glCopyTexSubImage1D) ( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
	void (GLAPIENTRY *glCopyTexSubImage2D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
	void (GLAPIENTRY *glMap1d) ( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points );
	void (GLAPIENTRY *glMap1f) ( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points );
	void (GLAPIENTRY *glMap2d) ( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points );
	void (GLAPIENTRY *glMap2f) ( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points );
	void (GLAPIENTRY *glGetMapdv) ( GLenum target, GLenum query, GLdouble *v );
	void (GLAPIENTRY *glGetMapfv) ( GLenum target, GLenum query, GLfloat *v );
	void (GLAPIENTRY *glGetMapiv) ( GLenum target, GLenum query, GLint *v );
	void (GLAPIENTRY *glEvalCoord1d) ( GLdouble u );
	void (GLAPIENTRY *glEvalCoord1f) ( GLfloat u );
	void (GLAPIENTRY *glEvalCoord1dv) ( const GLdouble *u );
	void (GLAPIENTRY *glEvalCoord1fv) ( const GLfloat *u );
	void (GLAPIENTRY *glEvalCoord2d) ( GLdouble u, GLdouble v );
	void (GLAPIENTRY *glEvalCoord2f) ( GLfloat u, GLfloat v );
	void (GLAPIENTRY *glEvalCoord2dv) ( const GLdouble *u );
	void (GLAPIENTRY *glEvalCoord2fv) ( const GLfloat *u );
	void (GLAPIENTRY *glMapGrid1d) ( GLint un, GLdouble u1, GLdouble u2 );
	void (GLAPIENTRY *glMapGrid1f) ( GLint un, GLfloat u1, GLfloat u2 );
	void (GLAPIENTRY *glMapGrid2d) ( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );
	void (GLAPIENTRY *glMapGrid2f) ( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );
	void (GLAPIENTRY *glEvalPoint1) ( GLint i );
	void (GLAPIENTRY *glEvalPoint2) ( GLint i, GLint j );
	void (GLAPIENTRY *glEvalMesh1) ( GLenum mode, GLint i1, GLint i2 );
	void (GLAPIENTRY *glEvalMesh2) ( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
	void (GLAPIENTRY *glFogf) ( GLenum pname, GLfloat param );
	void (GLAPIENTRY *glFogi) ( GLenum pname, GLint param );
	void (GLAPIENTRY *glFogfv) ( GLenum pname, const GLfloat *params );
	void (GLAPIENTRY *glFogiv) ( GLenum pname, const GLint *params );
	void (GLAPIENTRY *glFeedbackBuffer) ( GLsizei size, GLenum type, GLfloat *buffer );
	void (GLAPIENTRY *glPassThrough) ( GLfloat token );
	void (GLAPIENTRY *glSelectBuffer) ( GLsizei size, GLuint *buffer );
	void (GLAPIENTRY *glInitNames) ( void );
	void (GLAPIENTRY *glLoadName) ( GLuint name );
	void (GLAPIENTRY *glPushName) ( GLuint name );
	void (GLAPIENTRY *glPopName) ( void );
	HDC (GLAPIENTRY *wglGetCurrentDC) ( void );
	HGLRC (GLAPIENTRY *wglCreateContext) ( HDC hdc );
	HGLRC (GLAPIENTRY *wglCreateLayerContext) ( HDC hdc ,int iLayerPlane );
	HGLRC (GLAPIENTRY *wglGetCurrentContext) ( void );
	PROC (GLAPIENTRY *wglGetProcAddress) ( const char *lpszProc);
	int (GLAPIENTRY *wglChoosePixelFormat) ( HDC hdc, const PIXELFORMATDESCRIPTOR *pfd );
	int (GLAPIENTRY *wglCopyContext) ( HGLRC hgl1, HGLRC hgl2, unsigned int mask );
	int (GLAPIENTRY *wglDeleteContext) ( HGLRC hgl );
	int (GLAPIENTRY *wglDescribeLayerPlane) ( HDC hdc, int iPixelFormat, int iLayerPlane, unsigned int nBytes, LPLAYERPLANEDESCRIPTOR lpd );
	int (GLAPIENTRY *wglDescribePixelFormat) ( HDC hdc, int iPixelFormat, unsigned int nBytes, LPPIXELFORMATDESCRIPTOR pfd );
	int (GLAPIENTRY *wglGetLayerPaletteEntries) ( HDC hdc, int iLayerPlane, int iStart, int cEntries, COLORREF *crf );
	int (GLAPIENTRY *wglGetPixelFormat) ( HDC hdc );
	int (GLAPIENTRY *wglMakeCurrent) ( HDC hdc, HGLRC hgl );
	int (GLAPIENTRY *wglRealizeLayerPalette) ( HDC hdc, int iLayerPlane, int bRealize );
	int (GLAPIENTRY *wglSetLayerPaletteEntries) ( HDC hdc, int iLayerPlane, int iStart, int cEntries, const COLORREF *crf );
	int (GLAPIENTRY *wglSetPixelFormat) ( HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR *pfd );
	int (GLAPIENTRY *wglShareLists) ( HGLRC hgl1, HGLRC hgl2 );
	int (GLAPIENTRY *wglSwapBuffers) ( HDC hdc );
	int (GLAPIENTRY *wglSwapLayerBuffers) ( HDC hdc, unsigned int fuPlanes );
	int (GLAPIENTRY *wglUseFontBitmapsA) ( HDC hdc, unsigned long first, unsigned long count, unsigned long listBase );
	int (GLAPIENTRY *wglUseFontBitmapsW) ( HDC hdc, unsigned long first, unsigned long count, unsigned long listBase );
	int (GLAPIENTRY *wglUseFontOutlinesA) ( HDC hdc, unsigned long first, unsigned long count, unsigned long listBase, float deviation, float extrusion, int format, LPGLYPHMETRICSFLOAT gmf );
	int (GLAPIENTRY *wglUseFontOutlinesW) ( HDC hdc, unsigned long first, unsigned long count, unsigned long listBase, float deviation, float extrusion, int format, LPGLYPHMETRICSFLOAT gmf );

	void (APIENTRY *glActiveTextureARB) (GLenum);
	void (APIENTRY *glClientActiveTextureARB) (GLenum);
	void (APIENTRY *glMultiTexCoord2fARB) (GLenum, float ss, float tt);

#ifndef GL_ARB_shader_objects
#define GL_ARB_shader_objects 1

#define GL_PROGRAM_OBJECT_ARB 0x8B40
#define GL_SHADER_OBJECT_ARB 0x8B48
#define GL_OBJECT_TYPE_ARB 0x8B4E
#define GL_OBJECT_SUBTYPE_ARB 0x8B4F
#define GL_FLOAT_VEC2_ARB 0x8B50
#define GL_FLOAT_VEC3_ARB 0x8B51
#define GL_FLOAT_VEC4_ARB 0x8B52
#define GL_INT_VEC2_ARB 0x8B53
#define GL_INT_VEC3_ARB 0x8B54
#define GL_INT_VEC4_ARB 0x8B55
#define GL_BOOL_ARB 0x8B56
#define GL_BOOL_VEC2_ARB 0x8B57
#define GL_BOOL_VEC3_ARB 0x8B58
#define GL_BOOL_VEC4_ARB 0x8B59
#define GL_FLOAT_MAT2_ARB 0x8B5A
#define GL_FLOAT_MAT3_ARB 0x8B5B
#define GL_FLOAT_MAT4_ARB 0x8B5C
#define GL_SAMPLER_1D_ARB 0x8B5D
#define GL_SAMPLER_2D_ARB 0x8B5E
#define GL_SAMPLER_3D_ARB 0x8B5F
#define GL_SAMPLER_CUBE_ARB 0x8B60
#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61
#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62
#define GL_SAMPLER_2D_RECT_ARB 0x8B63
#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64
#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80
#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81
#define GL_OBJECT_LINK_STATUS_ARB 0x8B82
#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83
#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84
#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85
#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86
#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87
#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88

typedef char GLcharARB;
typedef unsigned int GLhandleARB;

typedef void (GLAPIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
typedef void (GLAPIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
typedef GLhandleARB (GLAPIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
typedef GLhandleARB (GLAPIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
typedef void (GLAPIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
typedef void (GLAPIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
typedef void (GLAPIENTRY * PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj);
typedef GLhandleARB (GLAPIENTRY * PFNGLGETHANDLEARBPROC) (GLenum pname);
typedef void (GLAPIENTRY * PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog);
typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat* params);
typedef void (GLAPIENTRY * PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint* params);
typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source);
typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name);
typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat* params);
typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint* params);
typedef void (GLAPIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
typedef void (GLAPIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length);
typedef void (GLAPIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
typedef void (GLAPIENTRY * PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
typedef void (GLAPIENTRY * PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
typedef void (GLAPIENTRY * PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
typedef void (GLAPIENTRY * PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void (GLAPIENTRY * PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
typedef void (GLAPIENTRY * PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void (GLAPIENTRY * PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void (GLAPIENTRY * PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint* value);
typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
typedef void (GLAPIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);

void (APIENTRY * glValidateProgramARB) (GLhandleARB programObj);
void (APIENTRY * glUseProgramObjectARB) (GLhandleARB programObj);
void (APIENTRY * glUniformMatrix4fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
void (APIENTRY * glUniformMatrix3fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
void (APIENTRY * glUniformMatrix2fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
void (APIENTRY * glUniform4ivARB) (GLint location, GLsizei count, const GLint* value);
void (APIENTRY * glUniform4iARB) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
void (APIENTRY * glUniform4fvARB) (GLint location, GLsizei count, const GLfloat* value);
void (APIENTRY * glUniform4fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
void (APIENTRY * glUniform3ivARB) (GLint location, GLsizei count, const GLint* value);
void (APIENTRY * glUniform3iARB) (GLint location, GLint v0, GLint v1, GLint v2);
void (APIENTRY * glUniform3fvARB) (GLint location, GLsizei count, const GLfloat* value);
void (APIENTRY * glUniform3fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
void (APIENTRY * glUniform2ivARB) (GLint location, GLsizei count, const GLint* value);
void (APIENTRY * glUniform2iARB) (GLint location, GLint v0, GLint v1);
void (APIENTRY * glUniform2fvARB) (GLint location, GLsizei count, const GLfloat* value);
void (APIENTRY * glUniform2fARB) (GLint location, GLfloat v0, GLfloat v1);
void (APIENTRY * glUniform1ivARB) (GLint location, GLsizei count, const GLint* value);
void (APIENTRY * glUniform1iARB) (GLint location, GLint v0);
void (APIENTRY * glUniform1fvARB) (GLint location, GLsizei count, const GLfloat* value);
void (APIENTRY * glUniform1fARB) (GLint location, GLfloat v0);
void (APIENTRY * glShaderSourceARB) (GLhandleARB shaderObj, GLsizei count, const GLcharARB ** string, const GLint *length);
void (APIENTRY * glLinkProgramARB) (GLhandleARB programObj);
void (APIENTRY * glGetUniformivARB) (GLhandleARB programObj, GLint location, GLint* params);
void (APIENTRY * glGetUniformfvARB) (GLhandleARB programObj, GLint location, GLfloat* params);
GLint (APIENTRY * glGetUniformLocationARB) (GLhandleARB programObj, const GLcharARB* name);
void (APIENTRY * glGetShaderSourceARB) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *source);
void (APIENTRY * glGetObjectParameterivARB) (GLhandleARB obj, GLenum pname, GLint* params);
void (APIENTRY * glGetObjectParameterfvARB) (GLhandleARB obj, GLenum pname, GLfloat* params);
void (APIENTRY * glGetInfoLogARB) (GLhandleARB obj, GLsizei maxLength, GLsizei* length, GLcharARB *infoLog);
GLhandleARB (APIENTRY * glGetHandleARB) (GLenum pname);
void (APIENTRY * glGetAttachedObjectsARB) (GLhandleARB containerObj, GLsizei maxCount, GLsizei* count, GLhandleARB *obj);
void (APIENTRY * glGetActiveUniformARB) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
void (APIENTRY * glDetachObjectARB) (GLhandleARB containerObj, GLhandleARB attachedObj);
void (APIENTRY * glDeleteObjectARB) (GLhandleARB obj);
GLhandleARB (APIENTRY * glCreateShaderObjectARB) (GLenum shaderType);
GLhandleARB (APIENTRY * glCreateProgramObjectARB) (void);
void (APIENTRY * glCompileShaderARB) (GLhandleARB shaderObj);
void (APIENTRY * glAttachObjectARB) (GLhandleARB containerObj, GLhandleARB obj);

#endif

/* ------------------------- GL_ARB_vertex_shader ------------------------ */

#ifndef GL_ARB_vertex_shader
#define GL_ARB_vertex_shader 1

#define GL_VERTEX_SHADER_ARB 0x8B31
#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A
#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B
#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C
#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D
#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89
#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A

typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB* name);
typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB* name);

void (APIENTRY * glBindAttribLocationARB) (GLhandleARB programObj, GLuint index, const GLcharARB* name);
void (APIENTRY * glGetActiveAttribARB) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei* length, GLint *size, GLenum *type, GLcharARB *name);
GLint (APIENTRY * glGetAttribLocationARB) (GLhandleARB programObj, const GLcharARB* name);

#endif /* GL_ARB_vertex_shader */

/* ------------------------- GL_ARB_fragment_shader ------------------------ */

#ifndef GL_ARB_fragment_shader
#define GL_ARB_fragment_shader 1

#define GL_FRAGMENT_SHADER_ARB 0x8B30
#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49
#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B

#define GLEW_ARB_fragment_shader GLEW_GET_VAR(__GLEW_ARB_fragment_shader)

#endif /* GL_ARB_fragment_shader */
private:
	bool getFunction(const char* name, void** fptr);
	bool hasExtension(const char* ext);
	char* _extensions;
};
extern GLJumpTable glJump;
#endif
