leocad/common/opengl.cpp
2012-02-02 03:30:26 +00:00

1313 lines
53 KiB
C++
Executable file

//
// Routines to load the OpenGL libraries dynamically
//
#include <string.h>
#include <stdio.h>
#include "opengl.h"
// These functions should be defined in (system)_gl.cpp
bool Sys_GLOpenLibrary (const char* libname);
void Sys_GLCloseLibrary ();
void* Sys_GLGetProc (const char *symbol);
void* Sys_GLGetExtension (const char *symbol);
// =============================================================================
// OpenGL Function pointers
PFNGLCLEARINDEX pfnglClearIndex;
PFNGLCLEARCOLOR pfnglClearColor;
PFNGLCLEAR pfnglClear;
PFNGLINDEXMASK pfnglIndexMask;
PFNGLCOLORMASK pfnglColorMask;
PFNGLALPHAFUNC pfnglAlphaFunc;
PFNGLBLENDFUNC pfnglBlendFunc;
PFNGLLOGICOP pfnglLogicOp;
PFNGLCULLFACE pfnglCullFace;
PFNGLFRONTFACE pfnglFrontFace;
PFNGLPOINTSIZE pfnglPointSize;
PFNGLLINEWIDTH pfnglLineWidth;
PFNGLLINESTIPPLE pfnglLineStipple;
PFNGLPOLYGONMODE pfnglPolygonMode;
PFNGLPOLYGONOFFSET pfnglPolygonOffset;
PFNGLPOLYGONSTIPPLE pfnglPolygonStipple;
PFNGLGETPOLYGONSTIPPLE pfnglGetPolygonStipple;
PFNGLEDGEFLAG pfnglEdgeFlag;
PFNGLEDGEFLAGV pfnglEdgeFlagv;
PFNGLSCISSOR pfnglScissor;
PFNGLCLIPPLANE pfnglClipPlane;
PFNGLGETCLIPPLANE pfnglGetClipPlane;
PFNGLDRAWBUFFER pfnglDrawBuffer;
PFNGLREADBUFFER pfnglReadBuffer;
PFNGLENABLE pfnglEnable;
PFNGLDISABLE pfnglDisable;
PFNGLISENABLED pfnglIsEnabled;
PFNGLENABLECLIENTSTATE pfnglEnableClientState;
PFNGLDISABLECLIENTSTATE pfnglDisableClientState;
PFNGLGETBOOLEANV pfnglGetBooleanv;
PFNGLGETDOUBLEV pfnglGetDoublev;
PFNGLGETFLOATV pfnglGetFloatv;
PFNGLGETINTEGERV pfnglGetIntegerv;
PFNGLPUSHATTRIB pfnglPushAttrib;
PFNGLPOPATTRIB pfnglPopAttrib;
PFNGLPUSHCLIENTATTRIB pfnglPushClientAttrib;
PFNGLPOPCLIENTATTRIB pfnglPopClientAttrib;
PFNGLRENDERMODE pfnglRenderMode;
PFNGLGETERROR pfnglGetError;
PFNGLGETSTRING pfnglGetString;
PFNGLFINISH pfnglFinish;
PFNGLFLUSH pfnglFlush;
PFNGLHINT pfnglHint;
PFNGLCLEARDEPTH pfnglClearDepth;
PFNGLDEPTHFUNC pfnglDepthFunc;
PFNGLDEPTHMASK pfnglDepthMask;
PFNGLDEPTHRANGE pfnglDepthRange;
PFNGLCLEARACCUM pfnglClearAccum;
PFNGLACCUM pfnglAccum;
PFNGLMATRIXMODE pfnglMatrixMode;
PFNGLORTHO pfnglOrtho;
PFNGLFRUSTUM pfnglFrustum;
PFNGLVIEWPORT pfnglViewport;
PFNGLPUSHMATRIX pfnglPushMatrix;
PFNGLPOPMATRIX pfnglPopMatrix;
PFNGLLOADIDENTITY pfnglLoadIdentity;
PFNGLLOADMATRIXD pfnglLoadMatrixd;
PFNGLLOADMATRIXF pfnglLoadMatrixf;
PFNGLMULTMATRIXD pfnglMultMatrixd;
PFNGLMULTMATRIXF pfnglMultMatrixf;
PFNGLROTATED pfnglRotated;
PFNGLROTATEF pfnglRotatef;
PFNGLSCALED pfnglScaled;
PFNGLSCALEF pfnglScalef;
PFNGLTRANSLATED pfnglTranslated;
PFNGLTRANSLATEF pfnglTranslatef;
PFNGLISLIST pfnglIsList;
PFNGLDELETELISTS pfnglDeleteLists;
PFNGLGENLISTS pfnglGenLists;
PFNGLNEWLIST pfnglNewList;
PFNGLENDLIST pfnglEndList;
PFNGLCALLLIST pfnglCallList;
PFNGLCALLLISTS pfnglCallLists;
PFNGLLISTBASE pfnglListBase;
PFNGLBEGIN pfnglBegin;
PFNGLEND pfnglEnd;
PFNGLVERTEX2D pfnglVertex2d;
PFNGLVERTEX2F pfnglVertex2f;
PFNGLVERTEX2I pfnglVertex2i;
PFNGLVERTEX2S pfnglVertex2s;
PFNGLVERTEX3D pfnglVertex3d;
PFNGLVERTEX3F pfnglVertex3f;
PFNGLVERTEX3I pfnglVertex3i;
PFNGLVERTEX3S pfnglVertex3s;
PFNGLVERTEX4D pfnglVertex4d;
PFNGLVERTEX4F pfnglVertex4f;
PFNGLVERTEX4I pfnglVertex4i;
PFNGLVERTEX4S pfnglVertex4s;
PFNGLVERTEX2DV pfnglVertex2dv;
PFNGLVERTEX2FV pfnglVertex2fv;
PFNGLVERTEX2IV pfnglVertex2iv;
PFNGLVERTEX2SV pfnglVertex2sv;
PFNGLVERTEX3DV pfnglVertex3dv;
PFNGLVERTEX3FV pfnglVertex3fv;
PFNGLVERTEX3IV pfnglVertex3iv;
PFNGLVERTEX3SV pfnglVertex3sv;
PFNGLVERTEX4DV pfnglVertex4dv;
PFNGLVERTEX4FV pfnglVertex4fv;
PFNGLVERTEX4IV pfnglVertex4iv;
PFNGLVERTEX4SV pfnglVertex4sv;
PFNGLNORMAL3B pfnglNormal3b;
PFNGLNORMAL3D pfnglNormal3d;
PFNGLNORMAL3F pfnglNormal3f;
PFNGLNORMAL3I pfnglNormal3i;
PFNGLNORMAL3S pfnglNormal3s;
PFNGLNORMAL3BV pfnglNormal3bv;
PFNGLNORMAL3DV pfnglNormal3dv;
PFNGLNORMAL3FV pfnglNormal3fv;
PFNGLNORMAL3IV pfnglNormal3iv;
PFNGLNORMAL3SV pfnglNormal3sv;
PFNGLINDEXD pfnglIndexd;
PFNGLINDEXF pfnglIndexf;
PFNGLINDEXI pfnglIndexi;
PFNGLINDEXS pfnglIndexs;
PFNGLINDEXUB pfnglIndexub;
PFNGLINDEXDV pfnglIndexdv;
PFNGLINDEXFV pfnglIndexfv;
PFNGLINDEXIV pfnglIndexiv;
PFNGLINDEXSV pfnglIndexsv;
PFNGLINDEXUBV pfnglIndexubv;
PFNGLCOLOR3B pfnglColor3b;
PFNGLCOLOR3D pfnglColor3d;
PFNGLCOLOR3F pfnglColor3f;
PFNGLCOLOR3I pfnglColor3i;
PFNGLCOLOR3S pfnglColor3s;
PFNGLCOLOR3UB pfnglColor3ub;
PFNGLCOLOR3UI pfnglColor3ui;
PFNGLCOLOR3US pfnglColor3us;
PFNGLCOLOR4B pfnglColor4b;
PFNGLCOLOR4D pfnglColor4d;
PFNGLCOLOR4F pfnglColor4f;
PFNGLCOLOR4I pfnglColor4i;
PFNGLCOLOR4S pfnglColor4s;
PFNGLCOLOR4UB pfnglColor4ub;
PFNGLCOLOR4UI pfnglColor4ui;
PFNGLCOLOR4US pfnglColor4us;
PFNGLCOLOR3BV pfnglColor3bv;
PFNGLCOLOR3DV pfnglColor3dv;
PFNGLCOLOR3FV pfnglColor3fv;
PFNGLCOLOR3IV pfnglColor3iv;
PFNGLCOLOR3SV pfnglColor3sv;
PFNGLCOLOR3UBV pfnglColor3ubv;
PFNGLCOLOR3UIV pfnglColor3uiv;
PFNGLCOLOR3USV pfnglColor3usv;
PFNGLCOLOR4BV pfnglColor4bv;
PFNGLCOLOR4DV pfnglColor4dv;
PFNGLCOLOR4FV pfnglColor4fv;
PFNGLCOLOR4IV pfnglColor4iv;
PFNGLCOLOR4SV pfnglColor4sv;
PFNGLCOLOR4UBV pfnglColor4ubv;
PFNGLCOLOR4UIV pfnglColor4uiv;
PFNGLCOLOR4USV pfnglColor4usv;
PFNGLTEXCOORD1D pfnglTexCoord1d;
PFNGLTEXCOORD1F pfnglTexCoord1f;
PFNGLTEXCOORD1I pfnglTexCoord1i;
PFNGLTEXCOORD1S pfnglTexCoord1s;
PFNGLTEXCOORD2D pfnglTexCoord2d;
PFNGLTEXCOORD2F pfnglTexCoord2f;
PFNGLTEXCOORD2I pfnglTexCoord2i;
PFNGLTEXCOORD2S pfnglTexCoord2s;
PFNGLTEXCOORD3D pfnglTexCoord3d;
PFNGLTEXCOORD3F pfnglTexCoord3f;
PFNGLTEXCOORD3I pfnglTexCoord3i;
PFNGLTEXCOORD3S pfnglTexCoord3s;
PFNGLTEXCOORD4D pfnglTexCoord4d;
PFNGLTEXCOORD4F pfnglTexCoord4f;
PFNGLTEXCOORD4I pfnglTexCoord4i;
PFNGLTEXCOORD4S pfnglTexCoord4s;
PFNGLTEXCOORD1DV pfnglTexCoord1dv;
PFNGLTEXCOORD1FV pfnglTexCoord1fv;
PFNGLTEXCOORD1IV pfnglTexCoord1iv;
PFNGLTEXCOORD1SV pfnglTexCoord1sv;
PFNGLTEXCOORD2DV pfnglTexCoord2dv;
PFNGLTEXCOORD2FV pfnglTexCoord2fv;
PFNGLTEXCOORD2IV pfnglTexCoord2iv;
PFNGLTEXCOORD2SV pfnglTexCoord2sv;
PFNGLTEXCOORD3DV pfnglTexCoord3dv;
PFNGLTEXCOORD3FV pfnglTexCoord3fv;
PFNGLTEXCOORD3IV pfnglTexCoord3iv;
PFNGLTEXCOORD3SV pfnglTexCoord3sv;
PFNGLTEXCOORD4DV pfnglTexCoord4dv;
PFNGLTEXCOORD4FV pfnglTexCoord4fv;
PFNGLTEXCOORD4IV pfnglTexCoord4iv;
PFNGLTEXCOORD4SV pfnglTexCoord4sv;
PFNGLRASTERPOS2D pfnglRasterPos2d;
PFNGLRASTERPOS2F pfnglRasterPos2f;
PFNGLRASTERPOS2I pfnglRasterPos2i;
PFNGLRASTERPOS2S pfnglRasterPos2s;
PFNGLRASTERPOS3D pfnglRasterPos3d;
PFNGLRASTERPOS3F pfnglRasterPos3f;
PFNGLRASTERPOS3I pfnglRasterPos3i;
PFNGLRASTERPOS3S pfnglRasterPos3s;
PFNGLRASTERPOS4D pfnglRasterPos4d;
PFNGLRASTERPOS4F pfnglRasterPos4f;
PFNGLRASTERPOS4I pfnglRasterPos4i;
PFNGLRASTERPOS4S pfnglRasterPos4s;
PFNGLRASTERPOS2DV pfnglRasterPos2dv;
PFNGLRASTERPOS2FV pfnglRasterPos2fv;
PFNGLRASTERPOS2IV pfnglRasterPos2iv;
PFNGLRASTERPOS2SV pfnglRasterPos2sv;
PFNGLRASTERPOS3DV pfnglRasterPos3dv;
PFNGLRASTERPOS3FV pfnglRasterPos3fv;
PFNGLRASTERPOS3IV pfnglRasterPos3iv;
PFNGLRASTERPOS3SV pfnglRasterPos3sv;
PFNGLRASTERPOS4DV pfnglRasterPos4dv;
PFNGLRASTERPOS4FV pfnglRasterPos4fv;
PFNGLRASTERPOS4IV pfnglRasterPos4iv;
PFNGLRASTERPOS4SV pfnglRasterPos4sv;
PFNGLRECTD pfnglRectd;
PFNGLRECTF pfnglRectf;
PFNGLRECTI pfnglRecti;
PFNGLRECTS pfnglRects;
PFNGLRECTDV pfnglRectdv;
PFNGLRECTFV pfnglRectfv;
PFNGLRECTIV pfnglRectiv;
PFNGLRECTSV pfnglRectsv;
PFNGLVERTEXPOINTER pfnglVertexPointer;
PFNGLNORMALPOINTER pfnglNormalPointer;
PFNGLCOLORPOINTER pfnglColorPointer;
PFNGLINDEXPOINTER pfnglIndexPointer;
PFNGLTEXCOORDPOINTER pfnglTexCoordPointer;
PFNGLEDGEFLAGPOINTER pfnglEdgeFlagPointer;
PFNGLGETPOINTERV pfnglGetPointerv;
PFNGLARRAYELEMENT pfnglArrayElement;
PFNGLDRAWARRAYS pfnglDrawArrays;
PFNGLDRAWELEMENTS pfnglDrawElements;
PFNGLINTERLEAVEDARRAYS pfnglInterleavedArrays;
PFNGLSHADEMODEL pfnglShadeModel;
PFNGLLIGHTF pfnglLightf;
PFNGLLIGHTI pfnglLighti;
PFNGLLIGHTFV pfnglLightfv;
PFNGLLIGHTIV pfnglLightiv;
PFNGLGETLIGHTFV pfnglGetLightfv;
PFNGLGETLIGHTIV pfnglGetLightiv;
PFNGLLIGHTMODELF pfnglLightModelf;
PFNGLLIGHTMODELI pfnglLightModeli;
PFNGLLIGHTMODELFV pfnglLightModelfv;
PFNGLLIGHTMODELIV pfnglLightModeliv;
PFNGLMATERIALF pfnglMaterialf;
PFNGLMATERIALI pfnglMateriali;
PFNGLMATERIALFV pfnglMaterialfv;
PFNGLMATERIALIV pfnglMaterialiv;
PFNGLGETMATERIALFV pfnglGetMaterialfv;
PFNGLGETMATERIALIV pfnglGetMaterialiv;
PFNGLCOLORMATERIAL pfnglColorMaterial;
PFNGLPIXELZOOM pfnglPixelZoom;
PFNGLPIXELSTOREF pfnglPixelStoref;
PFNGLPIXELSTOREI pfnglPixelStorei;
PFNGLPIXELTRANSFERF pfnglPixelTransferf;
PFNGLPIXELTRANSFERI pfnglPixelTransferi;
PFNGLPIXELMAPFV pfnglPixelMapfv;
PFNGLPIXELMAPUIV pfnglPixelMapuiv;
PFNGLPIXELMAPUSV pfnglPixelMapusv;
PFNGLGETPIXELMAPFV pfnglGetPixelMapfv;
PFNGLGETPIXELMAPUIV pfnglGetPixelMapuiv;
PFNGLGETPIXELMAPUSV pfnglGetPixelMapusv;
PFNGLBITMAP pfnglBitmap;
PFNGLREADPIXELS pfnglReadPixels;
PFNGLDRAWPIXELS pfnglDrawPixels;
PFNGLCOPYPIXELS pfnglCopyPixels;
PFNGLSTENCILFUNC pfnglStencilFunc;
PFNGLSTENCILMASK pfnglStencilMask;
PFNGLSTENCILOP pfnglStencilOp;
PFNGLCLEARSTENCIL pfnglClearStencil;
PFNGLTEXGEND pfnglTexGend;
PFNGLTEXGENF pfnglTexGenf;
PFNGLTEXGENI pfnglTexGeni;
PFNGLTEXGENDV pfnglTexGendv;
PFNGLTEXGENFV pfnglTexGenfv;
PFNGLTEXGENIV pfnglTexGeniv;
PFNGLGETTEXGENDV pfnglGetTexGendv;
PFNGLGETTEXGENFV pfnglGetTexGenfv;
PFNGLGETTEXGENIV pfnglGetTexGeniv;
PFNGLTEXENVF pfnglTexEnvf;
PFNGLTEXENVI pfnglTexEnvi;
PFNGLTEXENVFV pfnglTexEnvfv;
PFNGLTEXENVIV pfnglTexEnviv;
PFNGLGETTEXENVFV pfnglGetTexEnvfv;
PFNGLGETTEXENVIV pfnglGetTexEnviv;
PFNGLTEXPARAMETERF pfnglTexParameterf;
PFNGLTEXPARAMETERI pfnglTexParameteri;
PFNGLTEXPARAMETERFV pfnglTexParameterfv;
PFNGLTEXPARAMETERIV pfnglTexParameteriv;
PFNGLGETTEXPARAMETERFV pfnglGetTexParameterfv;
PFNGLGETTEXPARAMETERIV pfnglGetTexParameteriv;
PFNGLGETTEXLEVELPARAMETERFV pfnglGetTexLevelParameterfv;
PFNGLGETTEXLEVELPARAMETERIV pfnglGetTexLevelParameteriv;
PFNGLTEXIMAGE1D pfnglTexImage1D;
PFNGLTEXIMAGE2D pfnglTexImage2D;
PFNGLGETTEXIMAGE pfnglGetTexImage;
PFNGLGENTEXTURES pfnglGenTextures;
PFNGLDELETETEXTURES pfnglDeleteTextures;
PFNGLBINDTEXTURE pfnglBindTexture;
PFNGLPRIORITIZETEXTURES pfnglPrioritizeTextures;
PFNGLARETEXTURESRESIDENT pfnglAreTexturesResident;
PFNGLISTEXTURE pfnglIsTexture;
PFNGLTEXSUBIMAGE1D pfnglTexSubImage1D;
PFNGLTEXSUBIMAGE2D pfnglTexSubImage2D;
PFNGLCOPYTEXIMAGE1D pfnglCopyTexImage1D;
PFNGLCOPYTEXIMAGE2D pfnglCopyTexImage2D;
PFNGLCOPYTEXSUBIMAGE1D pfnglCopyTexSubImage1D;
PFNGLCOPYTEXSUBIMAGE2D pfnglCopyTexSubImage2D;
PFNGLMAP1D pfnglMap1d;
PFNGLMAP1F pfnglMap1f;
PFNGLMAP2D pfnglMap2d;
PFNGLMAP2F pfnglMap2f;
PFNGLGETMAPDV pfnglGetMapdv;
PFNGLGETMAPFV pfnglGetMapfv;
PFNGLGETMAPIV pfnglGetMapiv;
PFNGLEVALCOORD1D pfnglEvalCoord1d;
PFNGLEVALCOORD1F pfnglEvalCoord1f;
PFNGLEVALCOORD1DV pfnglEvalCoord1dv;
PFNGLEVALCOORD1FV pfnglEvalCoord1fv;
PFNGLEVALCOORD2D pfnglEvalCoord2d;
PFNGLEVALCOORD2F pfnglEvalCoord2f;
PFNGLEVALCOORD2DV pfnglEvalCoord2dv;
PFNGLEVALCOORD2FV pfnglEvalCoord2fv;
PFNGLMAPGRID1D pfnglMapGrid1d;
PFNGLMAPGRID1F pfnglMapGrid1f;
PFNGLMAPGRID2D pfnglMapGrid2d;
PFNGLMAPGRID2F pfnglMapGrid2f;
PFNGLEVALPOINT1 pfnglEvalPoint1;
PFNGLEVALPOINT2 pfnglEvalPoint2;
PFNGLEVALMESH1 pfnglEvalMesh1;
PFNGLEVALMESH2 pfnglEvalMesh2;
PFNGLFOGF pfnglFogf;
PFNGLFOGI pfnglFogi;
PFNGLFOGFV pfnglFogfv;
PFNGLFOGIV pfnglFogiv;
PFNGLFEEDBACKBUFFER pfnglFeedbackBuffer;
PFNGLPASSTHROUGH pfnglPassThrough;
PFNGLSELECTBUFFER pfnglSelectBuffer;
PFNGLINITNAMES pfnglInitNames;
PFNGLLOADNAME pfnglLoadName;
PFNGLPUSHNAME pfnglPushName;
PFNGLPOPNAME pfnglPopName;
PFNGLACTIVETEXTUREARB pfnglActiveTextureARB;
PFNGLCLIENTACTIVETEXTUREARB pfnglClientActiveTextureARB;
PFNGLMULTITEXCOORD1DARB pfnglMultiTexCoord1dARB;
PFNGLMULTITEXCOORD1DVARB pfnglMultiTexCoord1dvARB;
PFNGLMULTITEXCOORD1FARB pfnglMultiTexCoord1fARB;
PFNGLMULTITEXCOORD1FVARB pfnglMultiTexCoord1fvARB;
PFNGLMULTITEXCOORD1IARB pfnglMultiTexCoord1iARB;
PFNGLMULTITEXCOORD1IVARB pfnglMultiTexCoord1ivARB;
PFNGLMULTITEXCOORD1SARB pfnglMultiTexCoord1sARB;
PFNGLMULTITEXCOORD1SVARB pfnglMultiTexCoord1svARB;
PFNGLMULTITEXCOORD2DARB pfnglMultiTexCoord2dARB;
PFNGLMULTITEXCOORD2DVARB pfnglMultiTexCoord2dvARB;
PFNGLMULTITEXCOORD2FARB pfnglMultiTexCoord2fARB;
PFNGLMULTITEXCOORD2FVARB pfnglMultiTexCoord2fvARB;
PFNGLMULTITEXCOORD2IARB pfnglMultiTexCoord2iARB;
PFNGLMULTITEXCOORD2IVARB pfnglMultiTexCoord2ivARB;
PFNGLMULTITEXCOORD2SARB pfnglMultiTexCoord2sARB;
PFNGLMULTITEXCOORD2SVARB pfnglMultiTexCoord2svARB;
PFNGLMULTITEXCOORD3DARB pfnglMultiTexCoord3dARB;
PFNGLMULTITEXCOORD3DVARB pfnglMultiTexCoord3dvARB;
PFNGLMULTITEXCOORD3FARB pfnglMultiTexCoord3fARB;
PFNGLMULTITEXCOORD3FVARB pfnglMultiTexCoord3fvARB;
PFNGLMULTITEXCOORD3IARB pfnglMultiTexCoord3iARB;
PFNGLMULTITEXCOORD3IVARB pfnglMultiTexCoord3ivARB;
PFNGLMULTITEXCOORD3SARB pfnglMultiTexCoord3sARB;
PFNGLMULTITEXCOORD3SVARB pfnglMultiTexCoord3svARB;
PFNGLMULTITEXCOORD4DARB pfnglMultiTexCoord4dARB;
PFNGLMULTITEXCOORD4DVARB pfnglMultiTexCoord4dvARB;
PFNGLMULTITEXCOORD4FARB pfnglMultiTexCoord4fARB;
PFNGLMULTITEXCOORD4FVARB pfnglMultiTexCoord4fvARB;
PFNGLMULTITEXCOORD4IARB pfnglMultiTexCoord4iARB;
PFNGLMULTITEXCOORD4IVARB pfnglMultiTexCoord4ivARB;
PFNGLMULTITEXCOORD4SARB pfnglMultiTexCoord4sARB;
PFNGLMULTITEXCOORD4SVARB pfnglMultiTexCoord4svARB;
PFNGLPOINTPARAMETERFEXT pfnglPointParameterfEXT;
PFNGLPOINTPARAMETERFVEXT pfnglPointParameterfvEXT;
PFNGLLOCKARRAYSEXT pfnglLockArraysEXT;
PFNGLUNLOCKARRAYSEXT pfnglUnlockArraysEXT;
// =============================================================================
// Initialization functions
void GL_Shutdown ()
{
Sys_GLCloseLibrary ();
pfnglClearIndex = NULL;
pfnglClearColor = NULL;
pfnglClear = NULL;
pfnglIndexMask = NULL;
pfnglColorMask = NULL;
pfnglAlphaFunc = NULL;
pfnglBlendFunc = NULL;
pfnglLogicOp = NULL;
pfnglCullFace = NULL;
pfnglFrontFace = NULL;
pfnglPointSize = NULL;
pfnglLineWidth = NULL;
pfnglLineStipple = NULL;
pfnglPolygonMode = NULL;
pfnglPolygonOffset = NULL;
pfnglPolygonStipple = NULL;
pfnglGetPolygonStipple = NULL;
pfnglEdgeFlag = NULL;
pfnglEdgeFlagv = NULL;
pfnglScissor = NULL;
pfnglClipPlane = NULL;
pfnglGetClipPlane = NULL;
pfnglDrawBuffer = NULL;
pfnglReadBuffer = NULL;
pfnglEnable = NULL;
pfnglDisable = NULL;
pfnglIsEnabled = NULL;
pfnglEnableClientState = NULL;
pfnglDisableClientState = NULL;
pfnglGetBooleanv = NULL;
pfnglGetDoublev = NULL;
pfnglGetFloatv = NULL;
pfnglGetIntegerv = NULL;
pfnglPushAttrib = NULL;
pfnglPopAttrib = NULL;
pfnglPushClientAttrib = NULL;
pfnglPopClientAttrib = NULL;
pfnglRenderMode = NULL;
pfnglGetError = NULL;
pfnglGetString = NULL;
pfnglFinish = NULL;
pfnglFlush = NULL;
pfnglHint = NULL;
pfnglClearDepth = NULL;
pfnglDepthFunc = NULL;
pfnglDepthMask = NULL;
pfnglDepthRange = NULL;
pfnglClearAccum = NULL;
pfnglAccum = NULL;
pfnglMatrixMode = NULL;
pfnglOrtho = NULL;
pfnglFrustum = NULL;
pfnglViewport = NULL;
pfnglPushMatrix = NULL;
pfnglPopMatrix = NULL;
pfnglLoadIdentity = NULL;
pfnglLoadMatrixd = NULL;
pfnglLoadMatrixf = NULL;
pfnglMultMatrixd = NULL;
pfnglMultMatrixf = NULL;
pfnglRotated = NULL;
pfnglRotatef = NULL;
pfnglScaled = NULL;
pfnglScalef = NULL;
pfnglTranslated = NULL;
pfnglTranslatef = NULL;
pfnglIsList = NULL;
pfnglDeleteLists = NULL;
pfnglGenLists = NULL;
pfnglNewList = NULL;
pfnglEndList = NULL;
pfnglCallList = NULL;
pfnglCallLists = NULL;
pfnglListBase = NULL;
pfnglBegin = NULL;
pfnglEnd = NULL;
pfnglVertex2d = NULL;
pfnglVertex2f = NULL;
pfnglVertex2i = NULL;
pfnglVertex2s = NULL;
pfnglVertex3d = NULL;
pfnglVertex3f = NULL;
pfnglVertex3i = NULL;
pfnglVertex3s = NULL;
pfnglVertex4d = NULL;
pfnglVertex4f = NULL;
pfnglVertex4i = NULL;
pfnglVertex4s = NULL;
pfnglVertex2dv = NULL;
pfnglVertex2fv = NULL;
pfnglVertex2iv = NULL;
pfnglVertex2sv = NULL;
pfnglVertex3dv = NULL;
pfnglVertex3fv = NULL;
pfnglVertex3iv = NULL;
pfnglVertex3sv = NULL;
pfnglVertex4dv = NULL;
pfnglVertex4fv = NULL;
pfnglVertex4iv = NULL;
pfnglVertex4sv = NULL;
pfnglNormal3b = NULL;
pfnglNormal3d = NULL;
pfnglNormal3f = NULL;
pfnglNormal3i = NULL;
pfnglNormal3s = NULL;
pfnglNormal3bv = NULL;
pfnglNormal3dv = NULL;
pfnglNormal3fv = NULL;
pfnglNormal3iv = NULL;
pfnglNormal3sv = NULL;
pfnglIndexd = NULL;
pfnglIndexf = NULL;
pfnglIndexi = NULL;
pfnglIndexs = NULL;
pfnglIndexub = NULL;
pfnglIndexdv = NULL;
pfnglIndexfv = NULL;
pfnglIndexiv = NULL;
pfnglIndexsv = NULL;
pfnglIndexubv = NULL;
pfnglColor3b = NULL;
pfnglColor3d = NULL;
pfnglColor3f = NULL;
pfnglColor3i = NULL;
pfnglColor3s = NULL;
pfnglColor3ub = NULL;
pfnglColor3ui = NULL;
pfnglColor3us = NULL;
pfnglColor4b = NULL;
pfnglColor4d = NULL;
pfnglColor4f = NULL;
pfnglColor4i = NULL;
pfnglColor4s = NULL;
pfnglColor4ub = NULL;
pfnglColor4ui = NULL;
pfnglColor4us = NULL;
pfnglColor3bv = NULL;
pfnglColor3dv = NULL;
pfnglColor3fv = NULL;
pfnglColor3iv = NULL;
pfnglColor3sv = NULL;
pfnglColor3ubv = NULL;
pfnglColor3uiv = NULL;
pfnglColor3usv = NULL;
pfnglColor4bv = NULL;
pfnglColor4dv = NULL;
pfnglColor4fv = NULL;
pfnglColor4iv = NULL;
pfnglColor4sv = NULL;
pfnglColor4ubv = NULL;
pfnglColor4uiv = NULL;
pfnglColor4usv = NULL;
pfnglTexCoord1d = NULL;
pfnglTexCoord1f = NULL;
pfnglTexCoord1i = NULL;
pfnglTexCoord1s = NULL;
pfnglTexCoord2d = NULL;
pfnglTexCoord2f = NULL;
pfnglTexCoord2i = NULL;
pfnglTexCoord2s = NULL;
pfnglTexCoord3d = NULL;
pfnglTexCoord3f = NULL;
pfnglTexCoord3i = NULL;
pfnglTexCoord3s = NULL;
pfnglTexCoord4d = NULL;
pfnglTexCoord4f = NULL;
pfnglTexCoord4i = NULL;
pfnglTexCoord4s = NULL;
pfnglTexCoord1dv = NULL;
pfnglTexCoord1fv = NULL;
pfnglTexCoord1iv = NULL;
pfnglTexCoord1sv = NULL;
pfnglTexCoord2dv = NULL;
pfnglTexCoord2fv = NULL;
pfnglTexCoord2iv = NULL;
pfnglTexCoord2sv = NULL;
pfnglTexCoord3dv = NULL;
pfnglTexCoord3fv = NULL;
pfnglTexCoord3iv = NULL;
pfnglTexCoord3sv = NULL;
pfnglTexCoord4dv = NULL;
pfnglTexCoord4fv = NULL;
pfnglTexCoord4iv = NULL;
pfnglTexCoord4sv = NULL;
pfnglRasterPos2d = NULL;
pfnglRasterPos2f = NULL;
pfnglRasterPos2i = NULL;
pfnglRasterPos2s = NULL;
pfnglRasterPos3d = NULL;
pfnglRasterPos3f = NULL;
pfnglRasterPos3i = NULL;
pfnglRasterPos3s = NULL;
pfnglRasterPos4d = NULL;
pfnglRasterPos4f = NULL;
pfnglRasterPos4i = NULL;
pfnglRasterPos4s = NULL;
pfnglRasterPos2dv = NULL;
pfnglRasterPos2fv = NULL;
pfnglRasterPos2iv = NULL;
pfnglRasterPos2sv = NULL;
pfnglRasterPos3dv = NULL;
pfnglRasterPos3fv = NULL;
pfnglRasterPos3iv = NULL;
pfnglRasterPos3sv = NULL;
pfnglRasterPos4dv = NULL;
pfnglRasterPos4fv = NULL;
pfnglRasterPos4iv = NULL;
pfnglRasterPos4sv = NULL;
pfnglRectd = NULL;
pfnglRectf = NULL;
pfnglRecti = NULL;
pfnglRects = NULL;
pfnglRectdv = NULL;
pfnglRectfv = NULL;
pfnglRectiv = NULL;
pfnglRectsv = NULL;
pfnglVertexPointer = NULL;
pfnglNormalPointer = NULL;
pfnglColorPointer = NULL;
pfnglIndexPointer = NULL;
pfnglTexCoordPointer = NULL;
pfnglEdgeFlagPointer = NULL;
pfnglGetPointerv = NULL;
pfnglArrayElement = NULL;
pfnglDrawArrays = NULL;
pfnglDrawElements = NULL;
pfnglInterleavedArrays = NULL;
pfnglShadeModel = NULL;
pfnglLightf = NULL;
pfnglLighti = NULL;
pfnglLightfv = NULL;
pfnglLightiv = NULL;
pfnglGetLightfv = NULL;
pfnglGetLightiv = NULL;
pfnglLightModelf = NULL;
pfnglLightModeli = NULL;
pfnglLightModelfv = NULL;
pfnglLightModeliv = NULL;
pfnglMaterialf = NULL;
pfnglMateriali = NULL;
pfnglMaterialfv = NULL;
pfnglMaterialiv = NULL;
pfnglGetMaterialfv = NULL;
pfnglGetMaterialiv = NULL;
pfnglColorMaterial = NULL;
pfnglPixelZoom = NULL;
pfnglPixelStoref = NULL;
pfnglPixelStorei = NULL;
pfnglPixelTransferf = NULL;
pfnglPixelTransferi = NULL;
pfnglPixelMapfv = NULL;
pfnglPixelMapuiv = NULL;
pfnglPixelMapusv = NULL;
pfnglGetPixelMapfv = NULL;
pfnglGetPixelMapuiv = NULL;
pfnglGetPixelMapusv = NULL;
pfnglBitmap = NULL;
pfnglReadPixels = NULL;
pfnglDrawPixels = NULL;
pfnglCopyPixels = NULL;
pfnglStencilFunc = NULL;
pfnglStencilMask = NULL;
pfnglStencilOp = NULL;
pfnglClearStencil = NULL;
pfnglTexGend = NULL;
pfnglTexGenf = NULL;
pfnglTexGeni = NULL;
pfnglTexGendv = NULL;
pfnglTexGenfv = NULL;
pfnglTexGeniv = NULL;
pfnglGetTexGendv = NULL;
pfnglGetTexGenfv = NULL;
pfnglGetTexGeniv = NULL;
pfnglTexEnvf = NULL;
pfnglTexEnvi = NULL;
pfnglTexEnvfv = NULL;
pfnglTexEnviv = NULL;
pfnglGetTexEnvfv = NULL;
pfnglGetTexEnviv = NULL;
pfnglTexParameterf = NULL;
pfnglTexParameteri = NULL;
pfnglTexParameterfv = NULL;
pfnglTexParameteriv = NULL;
pfnglGetTexParameterfv = NULL;
pfnglGetTexParameteriv = NULL;
pfnglGetTexLevelParameterfv = NULL;
pfnglGetTexLevelParameteriv = NULL;
pfnglTexImage1D = NULL;
pfnglTexImage2D = NULL;
pfnglGetTexImage = NULL;
pfnglGenTextures = NULL;
pfnglDeleteTextures = NULL;
pfnglBindTexture = NULL;
pfnglPrioritizeTextures = NULL;
pfnglAreTexturesResident = NULL;
pfnglIsTexture = NULL;
pfnglTexSubImage1D = NULL;
pfnglTexSubImage2D = NULL;
pfnglCopyTexImage1D = NULL;
pfnglCopyTexImage2D = NULL;
pfnglCopyTexSubImage1D = NULL;
pfnglCopyTexSubImage2D = NULL;
pfnglMap1d = NULL;
pfnglMap1f = NULL;
pfnglMap2d = NULL;
pfnglMap2f = NULL;
pfnglGetMapdv = NULL;
pfnglGetMapfv = NULL;
pfnglGetMapiv = NULL;
pfnglEvalCoord1d = NULL;
pfnglEvalCoord1f = NULL;
pfnglEvalCoord1dv = NULL;
pfnglEvalCoord1fv = NULL;
pfnglEvalCoord2d = NULL;
pfnglEvalCoord2f = NULL;
pfnglEvalCoord2dv = NULL;
pfnglEvalCoord2fv = NULL;
pfnglMapGrid1d = NULL;
pfnglMapGrid1f = NULL;
pfnglMapGrid2d = NULL;
pfnglMapGrid2f = NULL;
pfnglEvalPoint1 = NULL;
pfnglEvalPoint2 = NULL;
pfnglEvalMesh1 = NULL;
pfnglEvalMesh2 = NULL;
pfnglFogf = NULL;
pfnglFogi = NULL;
pfnglFogfv = NULL;
pfnglFogiv = NULL;
pfnglFeedbackBuffer = NULL;
pfnglPassThrough = NULL;
pfnglSelectBuffer = NULL;
pfnglInitNames = NULL;
pfnglLoadName = NULL;
pfnglPushName = NULL;
pfnglPopName = NULL;
pfnglActiveTextureARB = NULL;
pfnglClientActiveTextureARB = NULL;
pfnglMultiTexCoord1dARB = NULL;
pfnglMultiTexCoord1dvARB = NULL;
pfnglMultiTexCoord1fARB = NULL;
pfnglMultiTexCoord1fvARB = NULL;
pfnglMultiTexCoord1iARB = NULL;
pfnglMultiTexCoord1ivARB = NULL;
pfnglMultiTexCoord1sARB = NULL;
pfnglMultiTexCoord1svARB = NULL;
pfnglMultiTexCoord2dARB = NULL;
pfnglMultiTexCoord2dvARB = NULL;
pfnglMultiTexCoord2fARB = NULL;
pfnglMultiTexCoord2fvARB = NULL;
pfnglMultiTexCoord2iARB = NULL;
pfnglMultiTexCoord2ivARB = NULL;
pfnglMultiTexCoord2sARB = NULL;
pfnglMultiTexCoord2svARB = NULL;
pfnglMultiTexCoord3dARB = NULL;
pfnglMultiTexCoord3dvARB = NULL;
pfnglMultiTexCoord3fARB = NULL;
pfnglMultiTexCoord3fvARB = NULL;
pfnglMultiTexCoord3iARB = NULL;
pfnglMultiTexCoord3ivARB = NULL;
pfnglMultiTexCoord3sARB = NULL;
pfnglMultiTexCoord3svARB = NULL;
pfnglMultiTexCoord4dARB = NULL;
pfnglMultiTexCoord4dvARB = NULL;
pfnglMultiTexCoord4fARB = NULL;
pfnglMultiTexCoord4fvARB = NULL;
pfnglMultiTexCoord4iARB = NULL;
pfnglMultiTexCoord4ivARB = NULL;
pfnglMultiTexCoord4sARB = NULL;
pfnglMultiTexCoord4svARB = NULL;
pfnglPointParameterfEXT = NULL;
pfnglPointParameterfvEXT = NULL;
pfnglLockArraysEXT = NULL;
pfnglUnlockArraysEXT = NULL;
}
bool GL_Initialize (const char* libname)
{
if (Sys_GLOpenLibrary (libname) == false)
{
printf ("No OpenGL libraries could be loaded, the program will now exit.\n");
return false;
}
pfnglClearIndex = (PFNGLCLEARINDEX) Sys_GLGetProc ("glClearIndex");
pfnglClearColor = (PFNGLCLEARCOLOR) Sys_GLGetProc ("glClearColor");
pfnglClear = (PFNGLCLEAR) Sys_GLGetProc ("glClear");
pfnglIndexMask = (PFNGLINDEXMASK) Sys_GLGetProc ("glIndexMask");
pfnglColorMask = (PFNGLCOLORMASK) Sys_GLGetProc ("glColorMask");
pfnglAlphaFunc = (PFNGLALPHAFUNC) Sys_GLGetProc ("glAlphaFunc");
pfnglBlendFunc = (PFNGLBLENDFUNC) Sys_GLGetProc ("glBlendFunc");
pfnglLogicOp = (PFNGLLOGICOP) Sys_GLGetProc ("glLogicOp");
pfnglCullFace = (PFNGLCULLFACE) Sys_GLGetProc ("glCullFace");
pfnglFrontFace = (PFNGLFRONTFACE) Sys_GLGetProc ("glFrontFace");
pfnglPointSize = (PFNGLPOINTSIZE) Sys_GLGetProc ("glPointSize");
pfnglLineWidth = (PFNGLLINEWIDTH) Sys_GLGetProc ("glLineWidth");
pfnglLineStipple = (PFNGLLINESTIPPLE) Sys_GLGetProc ("glLineStipple");
pfnglPolygonMode = (PFNGLPOLYGONMODE) Sys_GLGetProc ("glPolygonMode");
pfnglPolygonOffset = (PFNGLPOLYGONOFFSET) Sys_GLGetProc ("glPolygonOffset");
pfnglPolygonStipple = (PFNGLPOLYGONSTIPPLE) Sys_GLGetProc ("glPolygonStipple");
pfnglGetPolygonStipple = (PFNGLGETPOLYGONSTIPPLE) Sys_GLGetProc ("glGetPolygonStipple");
pfnglEdgeFlag = (PFNGLEDGEFLAG) Sys_GLGetProc ("glEdgeFlag");
pfnglEdgeFlagv = (PFNGLEDGEFLAGV) Sys_GLGetProc ("glEdgeFlagv");
pfnglScissor = (PFNGLSCISSOR) Sys_GLGetProc ("glScissor");
pfnglClipPlane = (PFNGLCLIPPLANE) Sys_GLGetProc ("glClipPlane");
pfnglGetClipPlane = (PFNGLGETCLIPPLANE) Sys_GLGetProc ("glGetClipPlane");
pfnglDrawBuffer = (PFNGLDRAWBUFFER) Sys_GLGetProc ("glDrawBuffer");
pfnglReadBuffer = (PFNGLREADBUFFER) Sys_GLGetProc ("glReadBuffer");
pfnglEnable = (PFNGLENABLE) Sys_GLGetProc ("glEnable");
pfnglDisable = (PFNGLDISABLE) Sys_GLGetProc ("glDisable");
pfnglIsEnabled = (PFNGLISENABLED) Sys_GLGetProc ("glIsEnabled");
pfnglEnableClientState = (PFNGLENABLECLIENTSTATE) Sys_GLGetProc ("glEnableClientState");
pfnglDisableClientState = (PFNGLDISABLECLIENTSTATE) Sys_GLGetProc ("glDisableClientState");
pfnglGetBooleanv = (PFNGLGETBOOLEANV) Sys_GLGetProc ("glGetBooleanv");
pfnglGetDoublev = (PFNGLGETDOUBLEV) Sys_GLGetProc ("glGetDoublev");
pfnglGetFloatv = (PFNGLGETFLOATV) Sys_GLGetProc ("glGetFloatv");
pfnglGetIntegerv = (PFNGLGETINTEGERV) Sys_GLGetProc ("glGetIntegerv");
pfnglPushAttrib = (PFNGLPUSHATTRIB) Sys_GLGetProc ("glPushAttrib");
pfnglPopAttrib = (PFNGLPOPATTRIB) Sys_GLGetProc ("glPopAttrib");
pfnglPushClientAttrib = (PFNGLPUSHCLIENTATTRIB) Sys_GLGetProc ("glPushClientAttrib");
pfnglPopClientAttrib = (PFNGLPOPCLIENTATTRIB) Sys_GLGetProc ("glPopClientAttrib");
pfnglRenderMode = (PFNGLRENDERMODE) Sys_GLGetProc ("glRenderMode");
pfnglGetError = (PFNGLGETERROR) Sys_GLGetProc ("glGetError");
pfnglGetString = (PFNGLGETSTRING) Sys_GLGetProc ("glGetString");
pfnglFinish = (PFNGLFINISH) Sys_GLGetProc ("glFinish");
pfnglFlush = (PFNGLFLUSH) Sys_GLGetProc ("glFlush");
pfnglHint = (PFNGLHINT) Sys_GLGetProc ("glHint");
pfnglClearDepth = (PFNGLCLEARDEPTH) Sys_GLGetProc ("glClearDepth");
pfnglDepthFunc = (PFNGLDEPTHFUNC) Sys_GLGetProc ("glDepthFunc");
pfnglDepthMask = (PFNGLDEPTHMASK) Sys_GLGetProc ("glDepthMask");
pfnglDepthRange = (PFNGLDEPTHRANGE) Sys_GLGetProc ("glDepthRange");
pfnglClearAccum = (PFNGLCLEARACCUM) Sys_GLGetProc ("glClearAccum");
pfnglAccum = (PFNGLACCUM) Sys_GLGetProc ("glAccum");
pfnglMatrixMode = (PFNGLMATRIXMODE) Sys_GLGetProc ("glMatrixMode");
pfnglOrtho = (PFNGLORTHO) Sys_GLGetProc ("glOrtho");
pfnglFrustum = (PFNGLFRUSTUM) Sys_GLGetProc ("glFrustum");
pfnglViewport = (PFNGLVIEWPORT) Sys_GLGetProc ("glViewport");
pfnglPushMatrix = (PFNGLPUSHMATRIX) Sys_GLGetProc ("glPushMatrix");
pfnglPopMatrix = (PFNGLPOPMATRIX) Sys_GLGetProc ("glPopMatrix");
pfnglLoadIdentity = (PFNGLLOADIDENTITY) Sys_GLGetProc ("glLoadIdentity");
pfnglLoadMatrixd = (PFNGLLOADMATRIXD) Sys_GLGetProc ("glLoadMatrixd");
pfnglLoadMatrixf = (PFNGLLOADMATRIXF) Sys_GLGetProc ("glLoadMatrixf");
pfnglMultMatrixd = (PFNGLMULTMATRIXD) Sys_GLGetProc ("glMultMatrixd");
pfnglMultMatrixf = (PFNGLMULTMATRIXF) Sys_GLGetProc ("glMultMatrixf");
pfnglRotated = (PFNGLROTATED) Sys_GLGetProc ("glRotated");
pfnglRotatef = (PFNGLROTATEF) Sys_GLGetProc ("glRotatef");
pfnglScaled = (PFNGLSCALED) Sys_GLGetProc ("glScaled");
pfnglScalef = (PFNGLSCALEF) Sys_GLGetProc ("glScalef");
pfnglTranslated = (PFNGLTRANSLATED) Sys_GLGetProc ("glTranslated");
pfnglTranslatef = (PFNGLTRANSLATEF) Sys_GLGetProc ("glTranslatef");
pfnglIsList = (PFNGLISLIST) Sys_GLGetProc ("glIsList");
pfnglDeleteLists = (PFNGLDELETELISTS) Sys_GLGetProc ("glDeleteLists");
pfnglGenLists = (PFNGLGENLISTS) Sys_GLGetProc ("glGenLists");
pfnglNewList = (PFNGLNEWLIST) Sys_GLGetProc ("glNewList");
pfnglEndList = (PFNGLENDLIST) Sys_GLGetProc ("glEndList");
pfnglCallList = (PFNGLCALLLIST) Sys_GLGetProc ("glCallList");
pfnglCallLists = (PFNGLCALLLISTS) Sys_GLGetProc ("glCallLists");
pfnglListBase = (PFNGLLISTBASE) Sys_GLGetProc ("glListBase");
pfnglBegin = (PFNGLBEGIN) Sys_GLGetProc ("glBegin");
pfnglEnd = (PFNGLEND) Sys_GLGetProc ("glEnd");
pfnglVertex2d = (PFNGLVERTEX2D) Sys_GLGetProc ("glVertex2d");
pfnglVertex2f = (PFNGLVERTEX2F) Sys_GLGetProc ("glVertex2f");
pfnglVertex2i = (PFNGLVERTEX2I) Sys_GLGetProc ("glVertex2i");
pfnglVertex2s = (PFNGLVERTEX2S) Sys_GLGetProc ("glVertex2s");
pfnglVertex3d = (PFNGLVERTEX3D) Sys_GLGetProc ("glVertex3d");
pfnglVertex3f = (PFNGLVERTEX3F) Sys_GLGetProc ("glVertex3f");
pfnglVertex3i = (PFNGLVERTEX3I) Sys_GLGetProc ("glVertex3i");
pfnglVertex3s = (PFNGLVERTEX3S) Sys_GLGetProc ("glVertex3s");
pfnglVertex4d = (PFNGLVERTEX4D) Sys_GLGetProc ("glVertex4d");
pfnglVertex4f = (PFNGLVERTEX4F) Sys_GLGetProc ("glVertex4f");
pfnglVertex4i = (PFNGLVERTEX4I) Sys_GLGetProc ("glVertex4i");
pfnglVertex4s = (PFNGLVERTEX4S) Sys_GLGetProc ("glVertex4s");
pfnglVertex2dv = (PFNGLVERTEX2DV) Sys_GLGetProc ("glVertex2dv");
pfnglVertex2fv = (PFNGLVERTEX2FV) Sys_GLGetProc ("glVertex2fv");
pfnglVertex2iv = (PFNGLVERTEX2IV) Sys_GLGetProc ("glVertex2iv");
pfnglVertex2sv = (PFNGLVERTEX2SV) Sys_GLGetProc ("glVertex2sv");
pfnglVertex3dv = (PFNGLVERTEX3DV) Sys_GLGetProc ("glVertex3dv");
pfnglVertex3fv = (PFNGLVERTEX3FV) Sys_GLGetProc ("glVertex3fv");
pfnglVertex3iv = (PFNGLVERTEX3IV) Sys_GLGetProc ("glVertex3iv");
pfnglVertex3sv = (PFNGLVERTEX3SV) Sys_GLGetProc ("glVertex3sv");
pfnglVertex4dv = (PFNGLVERTEX4DV) Sys_GLGetProc ("glVertex4dv");
pfnglVertex4fv = (PFNGLVERTEX4FV) Sys_GLGetProc ("glVertex4fv");
pfnglVertex4iv = (PFNGLVERTEX4IV) Sys_GLGetProc ("glVertex4iv");
pfnglVertex4sv = (PFNGLVERTEX4SV) Sys_GLGetProc ("glVertex4sv");
pfnglNormal3b = (PFNGLNORMAL3B) Sys_GLGetProc ("glNormal3b");
pfnglNormal3d = (PFNGLNORMAL3D) Sys_GLGetProc ("glNormal3d");
pfnglNormal3f = (PFNGLNORMAL3F) Sys_GLGetProc ("glNormal3f");
pfnglNormal3i = (PFNGLNORMAL3I) Sys_GLGetProc ("glNormal3i");
pfnglNormal3s = (PFNGLNORMAL3S) Sys_GLGetProc ("glNormal3s");
pfnglNormal3bv = (PFNGLNORMAL3BV) Sys_GLGetProc ("glNormal3bv");
pfnglNormal3dv = (PFNGLNORMAL3DV) Sys_GLGetProc ("glNormal3dv");
pfnglNormal3fv = (PFNGLNORMAL3FV) Sys_GLGetProc ("glNormal3fv");
pfnglNormal3iv = (PFNGLNORMAL3IV) Sys_GLGetProc ("glNormal3iv");
pfnglNormal3sv = (PFNGLNORMAL3SV) Sys_GLGetProc ("glNormal3sv");
pfnglIndexd = (PFNGLINDEXD) Sys_GLGetProc ("glIndexd");
pfnglIndexf = (PFNGLINDEXF) Sys_GLGetProc ("glIndexf");
pfnglIndexi = (PFNGLINDEXI) Sys_GLGetProc ("glIndexi");
pfnglIndexs = (PFNGLINDEXS) Sys_GLGetProc ("glIndexs");
pfnglIndexub = (PFNGLINDEXUB) Sys_GLGetProc ("glIndexub");
pfnglIndexdv = (PFNGLINDEXDV) Sys_GLGetProc ("glIndexdv");
pfnglIndexfv = (PFNGLINDEXFV) Sys_GLGetProc ("glIndexfv");
pfnglIndexiv = (PFNGLINDEXIV) Sys_GLGetProc ("glIndexiv");
pfnglIndexsv = (PFNGLINDEXSV) Sys_GLGetProc ("glIndexsv");
pfnglIndexubv = (PFNGLINDEXUBV) Sys_GLGetProc ("glIndexubv");
pfnglColor3b = (PFNGLCOLOR3B) Sys_GLGetProc ("glColor3b");
pfnglColor3d = (PFNGLCOLOR3D) Sys_GLGetProc ("glColor3d");
pfnglColor3f = (PFNGLCOLOR3F) Sys_GLGetProc ("glColor3f");
pfnglColor3i = (PFNGLCOLOR3I) Sys_GLGetProc ("glColor3i");
pfnglColor3s = (PFNGLCOLOR3S) Sys_GLGetProc ("glColor3s");
pfnglColor3ub = (PFNGLCOLOR3UB) Sys_GLGetProc ("glColor3ub");
pfnglColor3ui = (PFNGLCOLOR3UI) Sys_GLGetProc ("glColor3ui");
pfnglColor3us = (PFNGLCOLOR3US) Sys_GLGetProc ("glColor3us");
pfnglColor4b = (PFNGLCOLOR4B) Sys_GLGetProc ("glColor4b");
pfnglColor4d = (PFNGLCOLOR4D) Sys_GLGetProc ("glColor4d");
pfnglColor4f = (PFNGLCOLOR4F) Sys_GLGetProc ("glColor4f");
pfnglColor4i = (PFNGLCOLOR4I) Sys_GLGetProc ("glColor4i");
pfnglColor4s = (PFNGLCOLOR4S) Sys_GLGetProc ("glColor4s");
pfnglColor4ub = (PFNGLCOLOR4UB) Sys_GLGetProc ("glColor4ub");
pfnglColor4ui = (PFNGLCOLOR4UI) Sys_GLGetProc ("glColor4ui");
pfnglColor4us = (PFNGLCOLOR4US) Sys_GLGetProc ("glColor4us");
pfnglColor3bv = (PFNGLCOLOR3BV) Sys_GLGetProc ("glColor3bv");
pfnglColor3dv = (PFNGLCOLOR3DV) Sys_GLGetProc ("glColor3dv");
pfnglColor3fv = (PFNGLCOLOR3FV) Sys_GLGetProc ("glColor3fv");
pfnglColor3iv = (PFNGLCOLOR3IV) Sys_GLGetProc ("glColor3iv");
pfnglColor3sv = (PFNGLCOLOR3SV) Sys_GLGetProc ("glColor3sv");
pfnglColor3ubv = (PFNGLCOLOR3UBV) Sys_GLGetProc ("glColor3ubv");
pfnglColor3uiv = (PFNGLCOLOR3UIV) Sys_GLGetProc ("glColor3uiv");
pfnglColor3usv = (PFNGLCOLOR3USV) Sys_GLGetProc ("glColor3usv");
pfnglColor4bv = (PFNGLCOLOR4BV) Sys_GLGetProc ("glColor4bv");
pfnglColor4dv = (PFNGLCOLOR4DV) Sys_GLGetProc ("glColor4dv");
pfnglColor4fv = (PFNGLCOLOR4FV) Sys_GLGetProc ("glColor4fv");
pfnglColor4iv = (PFNGLCOLOR4IV) Sys_GLGetProc ("glColor4iv");
pfnglColor4sv = (PFNGLCOLOR4SV) Sys_GLGetProc ("glColor4sv");
pfnglColor4ubv = (PFNGLCOLOR4UBV) Sys_GLGetProc ("glColor4ubv");
pfnglColor4uiv = (PFNGLCOLOR4UIV) Sys_GLGetProc ("glColor4uiv");
pfnglColor4usv = (PFNGLCOLOR4USV) Sys_GLGetProc ("glColor4usv");
pfnglTexCoord1d = (PFNGLTEXCOORD1D) Sys_GLGetProc ("glTexCoord1d");
pfnglTexCoord1f = (PFNGLTEXCOORD1F) Sys_GLGetProc ("glTexCoord1f");
pfnglTexCoord1i = (PFNGLTEXCOORD1I) Sys_GLGetProc ("glTexCoord1i");
pfnglTexCoord1s = (PFNGLTEXCOORD1S) Sys_GLGetProc ("glTexCoord1s");
pfnglTexCoord2d = (PFNGLTEXCOORD2D) Sys_GLGetProc ("glTexCoord2d");
pfnglTexCoord2f = (PFNGLTEXCOORD2F) Sys_GLGetProc ("glTexCoord2f");
pfnglTexCoord2i = (PFNGLTEXCOORD2I) Sys_GLGetProc ("glTexCoord2i");
pfnglTexCoord2s = (PFNGLTEXCOORD2S) Sys_GLGetProc ("glTexCoord2s");
pfnglTexCoord3d = (PFNGLTEXCOORD3D) Sys_GLGetProc ("glTexCoord3d");
pfnglTexCoord3f = (PFNGLTEXCOORD3F) Sys_GLGetProc ("glTexCoord3f");
pfnglTexCoord3i = (PFNGLTEXCOORD3I) Sys_GLGetProc ("glTexCoord3i");
pfnglTexCoord3s = (PFNGLTEXCOORD3S) Sys_GLGetProc ("glTexCoord3s");
pfnglTexCoord4d = (PFNGLTEXCOORD4D) Sys_GLGetProc ("glTexCoord4d");
pfnglTexCoord4f = (PFNGLTEXCOORD4F) Sys_GLGetProc ("glTexCoord4f");
pfnglTexCoord4i = (PFNGLTEXCOORD4I) Sys_GLGetProc ("glTexCoord4i");
pfnglTexCoord4s = (PFNGLTEXCOORD4S) Sys_GLGetProc ("glTexCoord4s");
pfnglTexCoord1dv = (PFNGLTEXCOORD1DV) Sys_GLGetProc ("glTexCoord1dv");
pfnglTexCoord1fv = (PFNGLTEXCOORD1FV) Sys_GLGetProc ("glTexCoord1fv");
pfnglTexCoord1iv = (PFNGLTEXCOORD1IV) Sys_GLGetProc ("glTexCoord1iv");
pfnglTexCoord1sv = (PFNGLTEXCOORD1SV) Sys_GLGetProc ("glTexCoord1sv");
pfnglTexCoord2dv = (PFNGLTEXCOORD2DV) Sys_GLGetProc ("glTexCoord2dv");
pfnglTexCoord2fv = (PFNGLTEXCOORD2FV) Sys_GLGetProc ("glTexCoord2fv");
pfnglTexCoord2iv = (PFNGLTEXCOORD2IV) Sys_GLGetProc ("glTexCoord2iv");
pfnglTexCoord2sv = (PFNGLTEXCOORD2SV) Sys_GLGetProc ("glTexCoord2sv");
pfnglTexCoord3dv = (PFNGLTEXCOORD3DV) Sys_GLGetProc ("glTexCoord3dv");
pfnglTexCoord3fv = (PFNGLTEXCOORD3FV) Sys_GLGetProc ("glTexCoord3fv");
pfnglTexCoord3iv = (PFNGLTEXCOORD3IV) Sys_GLGetProc ("glTexCoord3iv");
pfnglTexCoord3sv = (PFNGLTEXCOORD3SV) Sys_GLGetProc ("glTexCoord3sv");
pfnglTexCoord4dv = (PFNGLTEXCOORD4DV) Sys_GLGetProc ("glTexCoord4dv");
pfnglTexCoord4fv = (PFNGLTEXCOORD4FV) Sys_GLGetProc ("glTexCoord4fv");
pfnglTexCoord4iv = (PFNGLTEXCOORD4IV) Sys_GLGetProc ("glTexCoord4iv");
pfnglTexCoord4sv = (PFNGLTEXCOORD4SV) Sys_GLGetProc ("glTexCoord4sv");
pfnglRasterPos2d = (PFNGLRASTERPOS2D) Sys_GLGetProc ("glRasterPos2d");
pfnglRasterPos2f = (PFNGLRASTERPOS2F) Sys_GLGetProc ("glRasterPos2f");
pfnglRasterPos2i = (PFNGLRASTERPOS2I) Sys_GLGetProc ("glRasterPos2i");
pfnglRasterPos2s = (PFNGLRASTERPOS2S) Sys_GLGetProc ("glRasterPos2s");
pfnglRasterPos3d = (PFNGLRASTERPOS3D) Sys_GLGetProc ("glRasterPos3d");
pfnglRasterPos3f = (PFNGLRASTERPOS3F) Sys_GLGetProc ("glRasterPos3f");
pfnglRasterPos3i = (PFNGLRASTERPOS3I) Sys_GLGetProc ("glRasterPos3i");
pfnglRasterPos3s = (PFNGLRASTERPOS3S) Sys_GLGetProc ("glRasterPos3s");
pfnglRasterPos4d = (PFNGLRASTERPOS4D) Sys_GLGetProc ("glRasterPos4d");
pfnglRasterPos4f = (PFNGLRASTERPOS4F) Sys_GLGetProc ("glRasterPos4f");
pfnglRasterPos4i = (PFNGLRASTERPOS4I) Sys_GLGetProc ("glRasterPos4i");
pfnglRasterPos4s = (PFNGLRASTERPOS4S) Sys_GLGetProc ("glRasterPos4s");
pfnglRasterPos2dv = (PFNGLRASTERPOS2DV) Sys_GLGetProc ("glRasterPos2dv");
pfnglRasterPos2fv = (PFNGLRASTERPOS2FV) Sys_GLGetProc ("glRasterPos2fv");
pfnglRasterPos2iv = (PFNGLRASTERPOS2IV) Sys_GLGetProc ("glRasterPos2iv");
pfnglRasterPos2sv = (PFNGLRASTERPOS2SV) Sys_GLGetProc ("glRasterPos2sv");
pfnglRasterPos3dv = (PFNGLRASTERPOS3DV) Sys_GLGetProc ("glRasterPos3dv");
pfnglRasterPos3fv = (PFNGLRASTERPOS3FV) Sys_GLGetProc ("glRasterPos3fv");
pfnglRasterPos3iv = (PFNGLRASTERPOS3IV) Sys_GLGetProc ("glRasterPos3iv");
pfnglRasterPos3sv = (PFNGLRASTERPOS3SV) Sys_GLGetProc ("glRasterPos3sv");
pfnglRasterPos4dv = (PFNGLRASTERPOS4DV) Sys_GLGetProc ("glRasterPos4dv");
pfnglRasterPos4fv = (PFNGLRASTERPOS4FV) Sys_GLGetProc ("glRasterPos4fv");
pfnglRasterPos4iv = (PFNGLRASTERPOS4IV) Sys_GLGetProc ("glRasterPos4iv");
pfnglRasterPos4sv = (PFNGLRASTERPOS4SV) Sys_GLGetProc ("glRasterPos4sv");
pfnglRectd = (PFNGLRECTD) Sys_GLGetProc ("glRectd");
pfnglRectf = (PFNGLRECTF) Sys_GLGetProc ("glRectf");
pfnglRecti = (PFNGLRECTI) Sys_GLGetProc ("glRecti");
pfnglRects = (PFNGLRECTS) Sys_GLGetProc ("glRects");
pfnglRectdv = (PFNGLRECTDV) Sys_GLGetProc ("glRectdv");
pfnglRectfv = (PFNGLRECTFV) Sys_GLGetProc ("glRectfv");
pfnglRectiv = (PFNGLRECTIV) Sys_GLGetProc ("glRectiv");
pfnglRectsv = (PFNGLRECTSV) Sys_GLGetProc ("glRectsv");
pfnglVertexPointer = (PFNGLVERTEXPOINTER) Sys_GLGetProc ("glVertexPointer");
pfnglNormalPointer = (PFNGLNORMALPOINTER) Sys_GLGetProc ("glNormalPointer");
pfnglColorPointer = (PFNGLCOLORPOINTER) Sys_GLGetProc ("glColorPointer");
pfnglIndexPointer = (PFNGLINDEXPOINTER) Sys_GLGetProc ("glIndexPointer");
pfnglTexCoordPointer = (PFNGLTEXCOORDPOINTER) Sys_GLGetProc ("glTexCoordPointer");
pfnglEdgeFlagPointer = (PFNGLEDGEFLAGPOINTER) Sys_GLGetProc ("glEdgeFlagPointer");
pfnglGetPointerv = (PFNGLGETPOINTERV) Sys_GLGetProc ("glGetPointerv");
pfnglArrayElement = (PFNGLARRAYELEMENT) Sys_GLGetProc ("glArrayElement");
pfnglDrawArrays = (PFNGLDRAWARRAYS) Sys_GLGetProc ("glDrawArrays");
pfnglDrawElements = (PFNGLDRAWELEMENTS) Sys_GLGetProc ("glDrawElements");
pfnglInterleavedArrays = (PFNGLINTERLEAVEDARRAYS) Sys_GLGetProc ("glInterleavedArrays");
pfnglShadeModel = (PFNGLSHADEMODEL) Sys_GLGetProc ("glShadeModel");
pfnglLightf = (PFNGLLIGHTF) Sys_GLGetProc ("glLightf");
pfnglLighti = (PFNGLLIGHTI) Sys_GLGetProc ("glLighti");
pfnglLightfv = (PFNGLLIGHTFV) Sys_GLGetProc ("glLightfv");
pfnglLightiv = (PFNGLLIGHTIV) Sys_GLGetProc ("glLightiv");
pfnglGetLightfv = (PFNGLGETLIGHTFV) Sys_GLGetProc ("glGetLightfv");
pfnglGetLightiv = (PFNGLGETLIGHTIV) Sys_GLGetProc ("glGetLightiv");
pfnglLightModelf = (PFNGLLIGHTMODELF) Sys_GLGetProc ("glLightModelf");
pfnglLightModeli = (PFNGLLIGHTMODELI) Sys_GLGetProc ("glLightModeli");
pfnglLightModelfv = (PFNGLLIGHTMODELFV) Sys_GLGetProc ("glLightModelfv");
pfnglLightModeliv = (PFNGLLIGHTMODELIV) Sys_GLGetProc ("glLightModeliv");
pfnglMaterialf = (PFNGLMATERIALF) Sys_GLGetProc ("glMaterialf");
pfnglMateriali = (PFNGLMATERIALI) Sys_GLGetProc ("glMateriali");
pfnglMaterialfv = (PFNGLMATERIALFV) Sys_GLGetProc ("glMaterialfv");
pfnglMaterialiv = (PFNGLMATERIALIV) Sys_GLGetProc ("glMaterialiv");
pfnglGetMaterialfv = (PFNGLGETMATERIALFV) Sys_GLGetProc ("glGetMaterialfv");
pfnglGetMaterialiv = (PFNGLGETMATERIALIV) Sys_GLGetProc ("glGetMaterialiv");
pfnglColorMaterial = (PFNGLCOLORMATERIAL) Sys_GLGetProc ("glColorMaterial");
pfnglPixelZoom = (PFNGLPIXELZOOM) Sys_GLGetProc ("glPixelZoom");
pfnglPixelStoref = (PFNGLPIXELSTOREF) Sys_GLGetProc ("glPixelStoref");
pfnglPixelStorei = (PFNGLPIXELSTOREI) Sys_GLGetProc ("glPixelStorei");
pfnglPixelTransferf = (PFNGLPIXELTRANSFERF) Sys_GLGetProc ("glPixelTransferf");
pfnglPixelTransferi = (PFNGLPIXELTRANSFERI) Sys_GLGetProc ("glPixelTransferi");
pfnglPixelMapfv = (PFNGLPIXELMAPFV) Sys_GLGetProc ("glPixelMapfv");
pfnglPixelMapuiv = (PFNGLPIXELMAPUIV) Sys_GLGetProc ("glPixelMapuiv");
pfnglPixelMapusv = (PFNGLPIXELMAPUSV) Sys_GLGetProc ("glPixelMapusv");
pfnglGetPixelMapfv = (PFNGLGETPIXELMAPFV) Sys_GLGetProc ("glGetPixelMapfv");
pfnglGetPixelMapuiv = (PFNGLGETPIXELMAPUIV) Sys_GLGetProc ("glGetPixelMapuiv");
pfnglGetPixelMapusv = (PFNGLGETPIXELMAPUSV) Sys_GLGetProc ("glGetPixelMapusv");
pfnglBitmap = (PFNGLBITMAP) Sys_GLGetProc ("glBitmap");
pfnglReadPixels = (PFNGLREADPIXELS) Sys_GLGetProc ("glReadPixels");
pfnglDrawPixels = (PFNGLDRAWPIXELS) Sys_GLGetProc ("glDrawPixels");
pfnglCopyPixels = (PFNGLCOPYPIXELS) Sys_GLGetProc ("glCopyPixels");
pfnglStencilFunc = (PFNGLSTENCILFUNC) Sys_GLGetProc ("glStencilFunc");
pfnglStencilMask = (PFNGLSTENCILMASK) Sys_GLGetProc ("glStencilMask");
pfnglStencilOp = (PFNGLSTENCILOP) Sys_GLGetProc ("glStencilOp");
pfnglClearStencil = (PFNGLCLEARSTENCIL) Sys_GLGetProc ("glClearStencil");
pfnglTexGend = (PFNGLTEXGEND) Sys_GLGetProc ("glTexGend");
pfnglTexGenf = (PFNGLTEXGENF) Sys_GLGetProc ("glTexGenf");
pfnglTexGeni = (PFNGLTEXGENI) Sys_GLGetProc ("glTexGeni");
pfnglTexGendv = (PFNGLTEXGENDV) Sys_GLGetProc ("glTexGendv");
pfnglTexGenfv = (PFNGLTEXGENFV) Sys_GLGetProc ("glTexGenfv");
pfnglTexGeniv = (PFNGLTEXGENIV) Sys_GLGetProc ("glTexGeniv");
pfnglGetTexGendv = (PFNGLGETTEXGENDV) Sys_GLGetProc ("glGetTexGendv");
pfnglGetTexGenfv = (PFNGLGETTEXGENFV) Sys_GLGetProc ("glGetTexGenfv");
pfnglGetTexGeniv = (PFNGLGETTEXGENIV) Sys_GLGetProc ("glGetTexGeniv");
pfnglTexEnvf = (PFNGLTEXENVF) Sys_GLGetProc ("glTexEnvf");
pfnglTexEnvi = (PFNGLTEXENVI) Sys_GLGetProc ("glTexEnvi");
pfnglTexEnvfv = (PFNGLTEXENVFV) Sys_GLGetProc ("glTexEnvfv");
pfnglTexEnviv = (PFNGLTEXENVIV) Sys_GLGetProc ("glTexEnviv");
pfnglGetTexEnvfv = (PFNGLGETTEXENVFV) Sys_GLGetProc ("glGetTexEnvfv");
pfnglGetTexEnviv = (PFNGLGETTEXENVIV) Sys_GLGetProc ("glGetTexEnviv");
pfnglTexParameterf = (PFNGLTEXPARAMETERF) Sys_GLGetProc ("glTexParameterf");
pfnglTexParameteri = (PFNGLTEXPARAMETERI) Sys_GLGetProc ("glTexParameteri");
pfnglTexParameterfv = (PFNGLTEXPARAMETERFV) Sys_GLGetProc ("glTexParameterfv");
pfnglTexParameteriv = (PFNGLTEXPARAMETERIV) Sys_GLGetProc ("glTexParameteriv");
pfnglGetTexParameterfv = (PFNGLGETTEXPARAMETERFV) Sys_GLGetProc ("glGetTexParameterfv");
pfnglGetTexParameteriv = (PFNGLGETTEXPARAMETERIV) Sys_GLGetProc ("glGetTexParameteriv");
pfnglGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFV) Sys_GLGetProc ("glGetTexLevelParameterfv");
pfnglGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIV) Sys_GLGetProc ("glGetTexLevelParameteriv");
pfnglTexImage1D = (PFNGLTEXIMAGE1D) Sys_GLGetProc ("glTexImage1D");
pfnglTexImage2D = (PFNGLTEXIMAGE2D) Sys_GLGetProc ("glTexImage2D");
pfnglGetTexImage = (PFNGLGETTEXIMAGE) Sys_GLGetProc ("glGetTexImage");
pfnglGenTextures = (PFNGLGENTEXTURES) Sys_GLGetProc ("glGenTextures");
pfnglDeleteTextures = (PFNGLDELETETEXTURES) Sys_GLGetProc ("glDeleteTextures");
pfnglBindTexture = (PFNGLBINDTEXTURE) Sys_GLGetProc ("glBindTexture");
pfnglPrioritizeTextures = (PFNGLPRIORITIZETEXTURES) Sys_GLGetProc ("glPrioritizeTextures");
pfnglAreTexturesResident = (PFNGLARETEXTURESRESIDENT) Sys_GLGetProc ("glAreTexturesResident");
pfnglIsTexture = (PFNGLISTEXTURE) Sys_GLGetProc ("glIsTexture");
pfnglTexSubImage1D = (PFNGLTEXSUBIMAGE1D) Sys_GLGetProc ("glTexSubImage1D");
pfnglTexSubImage2D = (PFNGLTEXSUBIMAGE2D) Sys_GLGetProc ("glTexSubImage2D");
pfnglCopyTexImage1D = (PFNGLCOPYTEXIMAGE1D) Sys_GLGetProc ("glCopyTexImage1D");
pfnglCopyTexImage2D = (PFNGLCOPYTEXIMAGE2D) Sys_GLGetProc ("glCopyTexImage2D");
pfnglCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1D) Sys_GLGetProc ("glCopyTexSubImage1D");
pfnglCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2D) Sys_GLGetProc ("glCopyTexSubImage2D");
pfnglMap1d = (PFNGLMAP1D) Sys_GLGetProc ("glMap1d");
pfnglMap1f = (PFNGLMAP1F) Sys_GLGetProc ("glMap1f");
pfnglMap2d = (PFNGLMAP2D) Sys_GLGetProc ("glMap2d");
pfnglMap2f = (PFNGLMAP2F) Sys_GLGetProc ("glMap2f");
pfnglGetMapdv = (PFNGLGETMAPDV) Sys_GLGetProc ("glGetMapdv");
pfnglGetMapfv = (PFNGLGETMAPFV) Sys_GLGetProc ("glGetMapfv");
pfnglGetMapiv = (PFNGLGETMAPIV) Sys_GLGetProc ("glGetMapiv");
pfnglEvalCoord1d = (PFNGLEVALCOORD1D) Sys_GLGetProc ("glEvalCoord1d");
pfnglEvalCoord1f = (PFNGLEVALCOORD1F) Sys_GLGetProc ("glEvalCoord1f");
pfnglEvalCoord1dv = (PFNGLEVALCOORD1DV) Sys_GLGetProc ("glEvalCoord1dv");
pfnglEvalCoord1fv = (PFNGLEVALCOORD1FV) Sys_GLGetProc ("glEvalCoord1fv");
pfnglEvalCoord2d = (PFNGLEVALCOORD2D) Sys_GLGetProc ("glEvalCoord2d");
pfnglEvalCoord2f = (PFNGLEVALCOORD2F) Sys_GLGetProc ("glEvalCoord2f");
pfnglEvalCoord2dv = (PFNGLEVALCOORD2DV) Sys_GLGetProc ("glEvalCoord2dv");
pfnglEvalCoord2fv = (PFNGLEVALCOORD2FV) Sys_GLGetProc ("glEvalCoord2fv");
pfnglMapGrid1d = (PFNGLMAPGRID1D) Sys_GLGetProc ("glMapGrid1d");
pfnglMapGrid1f = (PFNGLMAPGRID1F) Sys_GLGetProc ("glMapGrid1f");
pfnglMapGrid2d = (PFNGLMAPGRID2D) Sys_GLGetProc ("glMapGrid2d");
pfnglMapGrid2f = (PFNGLMAPGRID2F) Sys_GLGetProc ("glMapGrid2f");
pfnglEvalPoint1 = (PFNGLEVALPOINT1) Sys_GLGetProc ("glEvalPoint1");
pfnglEvalPoint2 = (PFNGLEVALPOINT2) Sys_GLGetProc ("glEvalPoint2");
pfnglEvalMesh1 = (PFNGLEVALMESH1) Sys_GLGetProc ("glEvalMesh1");
pfnglEvalMesh2 = (PFNGLEVALMESH2) Sys_GLGetProc ("glEvalMesh2");
pfnglFogf = (PFNGLFOGF) Sys_GLGetProc ("glFogf");
pfnglFogi = (PFNGLFOGI) Sys_GLGetProc ("glFogi");
pfnglFogfv = (PFNGLFOGFV) Sys_GLGetProc ("glFogfv");
pfnglFogiv = (PFNGLFOGIV) Sys_GLGetProc ("glFogiv");
pfnglFeedbackBuffer = (PFNGLFEEDBACKBUFFER) Sys_GLGetProc ("glFeedbackBuffer");
pfnglPassThrough = (PFNGLPASSTHROUGH) Sys_GLGetProc ("glPassThrough");
pfnglSelectBuffer = (PFNGLSELECTBUFFER) Sys_GLGetProc ("glSelectBuffer");
pfnglInitNames = (PFNGLINITNAMES) Sys_GLGetProc ("glInitNames");
pfnglLoadName = (PFNGLLOADNAME) Sys_GLGetProc ("glLoadName");
pfnglPushName = (PFNGLPUSHNAME) Sys_GLGetProc ("glPushName");
pfnglPopName = (PFNGLPOPNAME) Sys_GLGetProc ("glPopName");
return true;
}
// =============================================================================
// Extensions support
static GLint GL_MultiTextures = 1;
static bool GL_CompiledVertexArrays = false;
static bool GL_ClampToEdge = false;
static bool GL_PointParameters = false;
static bool GL_ExtensionSupported (const char *extension)
{
const GLubyte *extensions = NULL;
const GLubyte *start;
GLubyte *where, *terminator;
// Extension names should not have spaces.
where = (GLubyte*) strchr(extension, ' ');
if (where || *extension == '\0')
return false;
extensions = glGetString(GL_EXTENSIONS);
if (!extensions)
return false;
// It takes a bit of care to be fool-proof about parsing the
// OpenGL extensions string. Don't be fooled by sub-strings, etc.
for (start = extensions; ;)
{
where = (GLubyte*)strstr((const char*)start, extension);
if (!where)
break;
terminator = where + strlen(extension);
if (where == start || *(where - 1) == ' ')
if (*terminator == ' ' || *terminator == '\0')
return true;
start = terminator;
}
return false;
}
int GL_GetMultiTextures ()
{
return GL_MultiTextures;
}
bool GL_HasCompiledVertexArrays ()
{
return GL_CompiledVertexArrays;
}
bool GL_HasClampToEdge ()
{
return GL_ClampToEdge;
}
bool GL_HasPointParameters ()
{
return GL_PointParameters;
}
// Extensions can only be initialized if there's a current OpenGL context.
bool GL_InitializeExtensions ()
{
if (GL_ExtensionSupported ("GL_ARB_multitexture"))
{
pfnglActiveTextureARB = (PFNGLACTIVETEXTUREARB) Sys_GLGetExtension ("glActiveTextureARB");
pfnglClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARB) Sys_GLGetExtension ("glClientActiveTextureARB");
pfnglMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARB) Sys_GLGetExtension ("glMultiTexCoord1dARB");
pfnglMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARB) Sys_GLGetExtension ("glMultiTexCoord1dvARB");
pfnglMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARB) Sys_GLGetExtension ("glMultiTexCoord1fARB");
pfnglMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARB) Sys_GLGetExtension ("glMultiTexCoord1fvARB");
pfnglMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARB) Sys_GLGetExtension ("glMultiTexCoord1iARB");
pfnglMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARB) Sys_GLGetExtension ("glMultiTexCoord1ivARB");
pfnglMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARB) Sys_GLGetExtension ("glMultiTexCoord1sARB");
pfnglMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARB) Sys_GLGetExtension ("glMultiTexCoord1svARB");
pfnglMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARB) Sys_GLGetExtension ("glMultiTexCoord2dARB");
pfnglMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARB) Sys_GLGetExtension ("glMultiTexCoord2dvARB");
pfnglMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARB) Sys_GLGetExtension ("glMultiTexCoord2fARB");
pfnglMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARB) Sys_GLGetExtension ("glMultiTexCoord2fvARB");
pfnglMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARB) Sys_GLGetExtension ("glMultiTexCoord2iARB");
pfnglMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARB) Sys_GLGetExtension ("glMultiTexCoord2ivARB");
pfnglMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARB) Sys_GLGetExtension ("glMultiTexCoord2sARB");
pfnglMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARB) Sys_GLGetExtension ("glMultiTexCoord2svARB");
pfnglMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARB) Sys_GLGetExtension ("glMultiTexCoord3dARB");
pfnglMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARB) Sys_GLGetExtension ("glMultiTexCoord3dvARB");
pfnglMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARB) Sys_GLGetExtension ("glMultiTexCoord3fARB");
pfnglMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARB) Sys_GLGetExtension ("glMultiTexCoord3fvARB");
pfnglMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARB) Sys_GLGetExtension ("glMultiTexCoord3iARB");
pfnglMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARB) Sys_GLGetExtension ("glMultiTexCoord3ivARB");
pfnglMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARB) Sys_GLGetExtension ("glMultiTexCoord3sARB");
pfnglMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARB) Sys_GLGetExtension ("glMultiTexCoord3svARB");
pfnglMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARB) Sys_GLGetExtension ("glMultiTexCoord4dARB");
pfnglMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARB) Sys_GLGetExtension ("glMultiTexCoord4dvARB");
pfnglMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARB) Sys_GLGetExtension ("glMultiTexCoord4fARB");
pfnglMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARB) Sys_GLGetExtension ("glMultiTexCoord4fvARB");
pfnglMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARB) Sys_GLGetExtension ("glMultiTexCoord4iARB");
pfnglMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARB) Sys_GLGetExtension ("glMultiTexCoord4ivARB");
pfnglMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARB) Sys_GLGetExtension ("glMultiTexCoord4sARB");
pfnglMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARB) Sys_GLGetExtension ("glMultiTexCoord4svARB");
glGetIntegerv (GL_MAX_TEXTURE_UNITS_ARB, &GL_MultiTextures);
}
if (GL_ExtensionSupported ("GL_EXT_point_parameters"))
{
pfnglPointParameterfEXT = (PFNGLPOINTPARAMETERFEXT) Sys_GLGetExtension ("glPointParameterfEXT");
pfnglPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXT) Sys_GLGetExtension ("glPointParameterfvEXT");
GL_PointParameters = true;
}
if (GL_ExtensionSupported ("GL_EXT_compiled_vertex_array"))
{
pfnglLockArraysEXT = (PFNGLLOCKARRAYSEXT) Sys_GLGetExtension ("glLockArraysEXT");
pfnglUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXT) Sys_GLGetExtension ("glUnlockArraysEXT");
GL_CompiledVertexArrays = true;
}
if (GL_ExtensionSupported ("GL_EXT_texture_edge_clamp"))
{
GL_ClampToEdge = true;
}
return true;
}
// =============================================================================
// GLU functions
// Temporary, should be replaced with better versions in the code
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265
#endif
void gluLookAt (GLdouble ex, GLdouble ey, GLdouble ez, GLdouble cx, GLdouble cy, GLdouble cz,
GLdouble ux, GLdouble uy, GLdouble uz)
{
GLdouble x[3], y[3], z[3] = { ex-cx, ey-cy, ez-cz };
GLdouble inv;
inv = sqrt (z[0]*z[0] + z[1]*z[1] + z[2]*z[2]);
if (inv)
{
inv = 1.0/inv;
z[0] *= inv;
z[1] *= inv;
z[2] *= inv;
}
x[0] = uy*z[2] - uz*z[1];
x[1] = -ux*z[2] + uz*z[0];
x[2] = ux*z[1] - uy*z[0];
y[0] = z[1]*x[2] - z[2]*x[1];
y[1] = -z[0]*x[2] + z[2]*x[0];
y[2] = z[0]*x[1] - z[1]*x[0];
inv = sqrt(x[0]*x[0] + x[1]*x[1] + x[2]*x[2]);
if (inv)
{
x[0] *= inv;
x[1] *= inv;
x[2] *= inv;
}
inv = sqrt(y[0]*y[0] + y[1]*y[1] + y[2]*y[2]);
if (inv)
{
y[0] *= inv;
y[1] *= inv;
y[2] *= inv;
}
{
GLdouble m[16] = { x[0], y[0], z[0], 0, x[1], y[1], z[1], 0, x[2], y[2], z[2], 0, 0, 0, 0, 1 };
glMultMatrixd(m);
glTranslated(-ex, -ey, -ez);
}
}
void gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
{
GLdouble y = zNear * tan (fovy * M_PI / 360.0);
glFrustum (-y*aspect, y*aspect, -y, y, zNear, zFar);
}