engine/platformWin32/winGL.cc
2024-01-07 04:36:33 +00:00

5949 lines
243 KiB
C++

//-----------------------------------------------------------------------------
// V12 Engine
//
// Copyright (c) 2001 GarageGames.Com
// Portions Copyright (c) 2001 by Sierra Online, Inc.
//-----------------------------------------------------------------------------
/*
** QGL_WIN.C
**
** This file implements the operating system binding of GL to QGL function
** pointers. When doing a port of Quake3 you must implement the following
** two functions:
**
** QGL_Init() - loads libraries, assigns function pointers, etc.
** QGL_Shutdown() - unloads libraries, NULLs function pointers
*/
#include "platformWIN32/platformGL.h"
#include "platformWIN32/platformWin32.h"
#include <time.h>
#include "console/console.h"
#include "console/consoleTypes.h"
GLState gGLState;
bool gOpenGLDisablePT = false;
bool gOpenGLDisableCVA = false;
bool gOpenGLDisableTEC = false;
bool gOpenGLDisableARBMT = false;
bool gOpenGLDisableFC = false;
bool gOpenGLDisableTCompress = false;
bool gOpenGLNoEnvColor = false;
float gOpenGLGammaCorrection = 0.5;
bool gOpenGLNoDrawArraysAlpha = false;
typedef int ( WINAPI * qwglSwapIntervalEXT_t )(int interval );
qwglSwapIntervalEXT_t qwglSwapIntervalEXT;
typedef BOOL ( WINAPI * qwglGetDeviceGammaRamp3DFX_t )(HDC, LPVOID );
qwglGetDeviceGammaRamp3DFX_t qwglGetDeviceGammaRamp3DFX;
typedef BOOL ( WINAPI * qwglSetDeviceGammaRamp3DFX_t )(HDC, LPVOID );
qwglSetDeviceGammaRamp3DFX_t qwglSetDeviceGammaRamp3DFX;
typedef int ( WINAPI * qwglChoosePixelFormat_t )(HDC, CONST PIXELFORMATDESCRIPTOR *);
qwglChoosePixelFormat_t qwglChoosePixelFormat;
typedef int ( WINAPI * qwglDescribePixelFormat_t) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
qwglDescribePixelFormat_t qwglDescribePixelFormat;
typedef int ( WINAPI * qwglGetPixelFormat_t )(HDC);
qwglGetPixelFormat_t qwglGetPixelFormat;
typedef BOOL ( WINAPI * qwglSetPixelFormat_t )(HDC, int, CONST PIXELFORMATDESCRIPTOR *);
qwglSetPixelFormat_t qwglSetPixelFormat;
typedef BOOL ( WINAPI * qwglSwapBuffers_t )(HDC);
qwglSwapBuffers_t qwglSwapBuffers;
qwglSwapBuffers_t dllSwapBuffers;
typedef BOOL ( WINAPI * qwglCopyContext_t )(HGLRC, HGLRC, UINT);
qwglCopyContext_t qwglCopyContext;
typedef HGLRC ( WINAPI * qwglCreateContext_t )(HDC);
qwglCreateContext_t qwglCreateContext;
typedef HGLRC ( WINAPI * qwglCreateLayerContext_t )(HDC, int);
qwglCreateLayerContext_t qwglCreateLayerContext;
typedef BOOL ( WINAPI * qwglDeleteContext_t )(HGLRC);
qwglDeleteContext_t qwglDeleteContext;
typedef HGLRC ( WINAPI * qwglGetCurrentContext_t )(VOID);
qwglGetCurrentContext_t qwglGetCurrentContext;
typedef HDC ( WINAPI * qwglGetCurrentDC_t )(VOID);
qwglGetCurrentDC_t qwglGetCurrentDC;
typedef PROC ( WINAPI * qwglGetProcAddress_t )(LPCSTR);
qwglGetProcAddress_t qwglGetProcAddress;
typedef BOOL ( WINAPI * qwglMakeCurrent_t )(HDC, HGLRC);
qwglMakeCurrent_t qwglMakeCurrent;
typedef BOOL ( WINAPI * qwglShareLists_t )(HGLRC, HGLRC);
qwglShareLists_t qwglShareLists;
typedef BOOL ( WINAPI * qwglUseFontBitmaps_t )(HDC, DWORD, DWORD, DWORD);
qwglUseFontBitmaps_t qwglUseFontBitmaps;
typedef BOOL ( WINAPI * qwglUseFontOutlines_t )(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT);
qwglUseFontOutlines_t qwglUseFontOutlines;
typedef BOOL ( WINAPI * qwglDescribeLayerPlane_t )(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR);
qwglDescribeLayerPlane_t qwglDescribeLayerPlane;
typedef int ( WINAPI * qwglSetLayerPaletteEntries_t )(HDC, int, int, int, CONST COLORREF *);
qwglSetLayerPaletteEntries_t qwglSetLayerPaletteEntries;
typedef int ( WINAPI * qwglGetLayerPaletteEntries_t )(HDC, int, int, int, COLORREF *);
qwglGetLayerPaletteEntries_t qwglGetLayerPaletteEntries;
typedef BOOL ( WINAPI * qwglRealizeLayerPalette_t )(HDC, int, BOOL);
qwglRealizeLayerPalette_t qwglRealizeLayerPalette;
typedef BOOL ( WINAPI * qwglSwapLayerBuffers_t )(HDC, UINT);
qwglSwapLayerBuffers_t qwglSwapLayerBuffers;
//------------------------------------------------------------------------------
// GLU Functions
typedef const GLubyte* (APIENTRY * gluErrorString_t) (GLenum errCode);
gluErrorString_t gluErrorString;
typedef const GLubyte* (APIENTRY * gluGetString_t) (GLenum name);
gluGetString_t gluGetString;
typedef void (APIENTRY * gluOrtho2D_t) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
gluOrtho2D_t gluOrtho2D;
typedef void (APIENTRY * gluPerspective_t) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
gluPerspective_t gluPerspective;
typedef void (APIENTRY * gluPickMatrix_t) (GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint viewport[4]);
gluPickMatrix_t gluPickMatrix;
typedef void (APIENTRY * gluLookAt_t) (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
gluLookAt_t gluLookAt;
typedef int (APIENTRY * gluProject_t) (GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz);
gluProject_t gluProject;
typedef int (APIENTRY * gluUnProject_t) (GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz);
gluUnProject_t gluUnProject;
typedef int (APIENTRY * gluScaleImage_t) (GLenum format, GLint widthin, GLint heightin, GLenum typein, const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout);
gluScaleImage_t gluScaleImage;
typedef int (APIENTRY * gluBuild1DMipmaps_t) (GLenum target, GLint components, GLint width, GLenum format, GLenum type, const void *data);
gluBuild1DMipmaps_t gluBuild1DMipmaps;
typedef int (APIENTRY * gluBuild2DMipmaps_t) (GLenum target, GLint components, GLint width, GLint height, GLenum format, GLenum type, const void *data);
gluBuild2DMipmaps_t gluBuild2DMipmaps;
//------------------------------------------------------------------------------
// GL Functions
typedef void ( APIENTRY * glAccum_t )(GLenum op, GLfloat value);
glAccum_t glAccum;
typedef void ( APIENTRY * glAlphaFunc_t )(GLenum func, GLclampf ref);
glAlphaFunc_t glAlphaFunc;
typedef GLboolean ( APIENTRY * glAreTexturesResident_t )(GLsizei n, const GLuint *textures, GLboolean *residences);
glAreTexturesResident_t glAreTexturesResident;
typedef void ( APIENTRY * glArrayElement_t )(GLint i);
glArrayElement_t glArrayElement;
typedef void ( APIENTRY * glBegin_t )(GLenum mode);
glBegin_t glBegin;
typedef void ( APIENTRY * glBindTexture_t )(GLenum target, GLuint texture);
glBindTexture_t glBindTexture;
typedef void ( APIENTRY * glBitmap_t )(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
glBitmap_t glBitmap;
typedef void ( APIENTRY * glBlendFunc_t )(GLenum sfactor, GLenum dfactor);
glBlendFunc_t glBlendFunc;
typedef void ( APIENTRY * glCallList_t )(GLuint list);
glCallList_t glCallList;
typedef void ( APIENTRY * glCallLists_t )(GLsizei n, GLenum type, const GLvoid *lists);
glCallLists_t glCallLists;
typedef void ( APIENTRY * glClear_t )(GLbitfield mask);
glClear_t glClear;
typedef void ( APIENTRY * glClearAccum_t )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
glClearAccum_t glClearAccum;
typedef void ( APIENTRY * glClearColor_t )(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
glClearColor_t glClearColor;
typedef void ( APIENTRY * glClearDepth_t )(GLclampd depth);
glClearDepth_t glClearDepth;
typedef void ( APIENTRY * glClearIndex_t )(GLfloat c);
glClearIndex_t glClearIndex;
typedef void ( APIENTRY * glClearStencil_t )(GLint s);
glClearStencil_t glClearStencil;
typedef void ( APIENTRY * glClipPlane_t )(GLenum plane, const GLdouble *equation);
glClipPlane_t glClipPlane;
typedef void ( APIENTRY * glColor3b_t )(GLbyte red, GLbyte green, GLbyte blue);
glColor3b_t glColor3b;
typedef void ( APIENTRY * glColor3bv_t )(const GLbyte *v);
glColor3bv_t glColor3bv;
typedef void ( APIENTRY * glColor3d_t )(GLdouble red, GLdouble green, GLdouble blue);
glColor3d_t glColor3d;
typedef void ( APIENTRY * glColor3dv_t )(const GLdouble *v);
glColor3dv_t glColor3dv;
typedef void ( APIENTRY * glColor3f_t )(GLfloat red, GLfloat green, GLfloat blue);
glColor3f_t glColor3f;
typedef void ( APIENTRY * glColor3fv_t )(const GLfloat *v);
glColor3fv_t glColor3fv;
typedef void ( APIENTRY * glColor3i_t )(GLint red, GLint green, GLint blue);
glColor3i_t glColor3i;
typedef void ( APIENTRY * glColor3iv_t )(const GLint *v);
glColor3iv_t glColor3iv;
typedef void ( APIENTRY * glColor3s_t )(GLshort red, GLshort green, GLshort blue);
glColor3s_t glColor3s;
typedef void ( APIENTRY * glColor3sv_t )(const GLshort *v);
glColor3sv_t glColor3sv;
typedef void ( APIENTRY * glColor3ub_t )(GLubyte red, GLubyte green, GLubyte blue);
glColor3ub_t glColor3ub;
typedef void ( APIENTRY * glColor3ubv_t )(const GLubyte *v);
glColor3ubv_t glColor3ubv;
typedef void ( APIENTRY * glColor3ui_t )(GLuint red, GLuint green, GLuint blue);
glColor3ui_t glColor3ui;
typedef void ( APIENTRY * glColor3uiv_t )(const GLuint *v);
glColor3uiv_t glColor3uiv;
typedef void ( APIENTRY * glColor3us_t )(GLushort red, GLushort green, GLushort blue);
glColor3us_t glColor3us;
typedef void ( APIENTRY * glColor3usv_t )(const GLushort *v);
glColor3usv_t glColor3usv;
typedef void ( APIENTRY * glColor4b_t )(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
glColor4b_t glColor4b;
typedef void ( APIENTRY * glColor4bv_t )(const GLbyte *v);
glColor4bv_t glColor4bv;
typedef void ( APIENTRY * glColor4d_t )(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
glColor4d_t glColor4d;
typedef void ( APIENTRY * glColor4dv_t )(const GLdouble *v);
glColor4dv_t glColor4dv;
typedef void ( APIENTRY * glColor4f_t )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
glColor4f_t glColor4f;
typedef void ( APIENTRY * glColor4fv_t )(const GLfloat *v);
glColor4fv_t glColor4fv;
typedef void ( APIENTRY * glColor4i_t )(GLint red, GLint green, GLint blue, GLint alpha);
glColor4i_t glColor4i;
typedef void ( APIENTRY * glColor4iv_t )(const GLint *v);
glColor4iv_t glColor4iv;
typedef void ( APIENTRY * glColor4s_t )(GLshort red, GLshort green, GLshort blue, GLshort alpha);
glColor4s_t glColor4s;
typedef void ( APIENTRY * glColor4sv_t )(const GLshort *v);
glColor4sv_t glColor4sv;
typedef void ( APIENTRY * glColor4ub_t )(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
glColor4ub_t glColor4ub;
typedef void ( APIENTRY * glColor4ubv_t )(const GLubyte *v);
glColor4ubv_t glColor4ubv;
typedef void ( APIENTRY * glColor4ui_t )(GLuint red, GLuint green, GLuint blue, GLuint alpha);
glColor4ui_t glColor4ui;
typedef void ( APIENTRY * glColor4uiv_t )(const GLuint *v);
glColor4uiv_t glColor4uiv;
typedef void ( APIENTRY * glColor4us_t )(GLushort red, GLushort green, GLushort blue, GLushort alpha);
glColor4us_t glColor4us;
typedef void ( APIENTRY * glColor4usv_t )(const GLushort *v);
glColor4usv_t glColor4usv;
typedef void ( APIENTRY * glColorMask_t )(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
glColorMask_t glColorMask;
typedef void ( APIENTRY * glColorMaterial_t )(GLenum face, GLenum mode);
glColorMaterial_t glColorMaterial;
typedef void ( APIENTRY * glColorPointer_t )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
glColorPointer_t glColorPointer;
typedef void ( APIENTRY * glCopyPixels_t )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
glCopyPixels_t glCopyPixels;
typedef void ( APIENTRY * glCopyTexImage1D_t )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
glCopyTexImage1D_t glCopyTexImage1D;
typedef void ( APIENTRY * glCopyTexImage2D_t )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
glCopyTexImage2D_t glCopyTexImage2D;
typedef void ( APIENTRY * glCopyTexSubImage1D_t )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
glCopyTexSubImage1D_t glCopyTexSubImage1D;
typedef void ( APIENTRY * glCopyTexSubImage2D_t )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
glCopyTexSubImage2D_t glCopyTexSubImage2D;
typedef void ( APIENTRY * glCullFace_t )(GLenum mode);
glCullFace_t glCullFace;
typedef void ( APIENTRY * glDeleteLists_t )(GLuint list, GLsizei range);
glDeleteLists_t glDeleteLists;
typedef void ( APIENTRY * glDeleteTextures_t )(GLsizei n, const GLuint *textures);
glDeleteTextures_t glDeleteTextures;
typedef void ( APIENTRY * glDepthFunc_t )(GLenum func);
glDepthFunc_t glDepthFunc;
typedef void ( APIENTRY * glDepthMask_t )(GLboolean flag);
glDepthMask_t glDepthMask;
typedef void ( APIENTRY * glDepthRange_t )(GLclampd zNear, GLclampd zFar);
glDepthRange_t glDepthRange;
typedef void ( APIENTRY * glDisable_t )(GLenum cap);
glDisable_t glDisable;
typedef void ( APIENTRY * glDisableClientState_t )(GLenum array);
glDisableClientState_t glDisableClientState;
typedef void ( APIENTRY * glDrawArrays_t )(GLenum mode, GLint first, GLsizei count);
glDrawArrays_t glDrawArrays;
typedef void ( APIENTRY * glDrawBuffer_t )(GLenum mode);
glDrawBuffer_t glDrawBuffer;
typedef void ( APIENTRY * glDrawElements_t )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
glDrawElements_t glDrawElements;
typedef void ( APIENTRY * glDrawPixels_t )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
glDrawPixels_t glDrawPixels;
typedef void ( APIENTRY * glEdgeFlag_t )(GLboolean flag);
glEdgeFlag_t glEdgeFlag;
typedef void ( APIENTRY * glEdgeFlagPointer_t )(GLsizei stride, const GLvoid *pointer);
glEdgeFlagPointer_t glEdgeFlagPointer;
typedef void ( APIENTRY * glEdgeFlagv_t )(const GLboolean *flag);
glEdgeFlagv_t glEdgeFlagv;
typedef void ( APIENTRY * glEnable_t )(GLenum cap);
glEnable_t glEnable;
typedef void ( APIENTRY * glEnableClientState_t )(GLenum array);
glEnableClientState_t glEnableClientState;
typedef void ( APIENTRY * glEnd_t )(void);
glEnd_t glEnd;
typedef void ( APIENTRY * glEndList_t )(void);
glEndList_t glEndList;
typedef void ( APIENTRY * glEvalCoord1d_t )(GLdouble u);
glEvalCoord1d_t glEvalCoord1d;
typedef void ( APIENTRY * glEvalCoord1dv_t )(const GLdouble *u);
glEvalCoord1dv_t glEvalCoord1dv;
typedef void ( APIENTRY * glEvalCoord1f_t )(GLfloat u);
glEvalCoord1f_t glEvalCoord1f;
typedef void ( APIENTRY * glEvalCoord1fv_t )(const GLfloat *u);
glEvalCoord1fv_t glEvalCoord1fv;
typedef void ( APIENTRY * glEvalCoord2d_t )(GLdouble u, GLdouble v);
glEvalCoord2d_t glEvalCoord2d;
typedef void ( APIENTRY * glEvalCoord2dv_t )(const GLdouble *u);
glEvalCoord2dv_t glEvalCoord2dv;
typedef void ( APIENTRY * glEvalCoord2f_t )(GLfloat u, GLfloat v);
glEvalCoord2f_t glEvalCoord2f;
typedef void ( APIENTRY * glEvalCoord2fv_t )(const GLfloat *u);
glEvalCoord2fv_t glEvalCoord2fv;
typedef void ( APIENTRY * glEvalMesh1_t )(GLenum mode, GLint i1, GLint i2);
glEvalMesh1_t glEvalMesh1;
typedef void ( APIENTRY * glEvalMesh2_t )(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
glEvalMesh2_t glEvalMesh2;
typedef void ( APIENTRY * glEvalPoint1_t )(GLint i);
glEvalPoint1_t glEvalPoint1;
typedef void ( APIENTRY * glEvalPoint2_t )(GLint i, GLint j);
glEvalPoint2_t glEvalPoint2;
typedef void ( APIENTRY * glFeedbackBuffer_t )(GLsizei size, GLenum type, GLfloat *buffer);
glFeedbackBuffer_t glFeedbackBuffer;
typedef void ( APIENTRY * glFinish_t )(void);
glFinish_t glFinish;
typedef void ( APIENTRY * glFlush_t )(void);
glFlush_t glFlush;
typedef void ( APIENTRY * glFogf_t )(GLenum pname, GLfloat param);
glFogf_t glFogf;
typedef void ( APIENTRY * glFogfv_t )(GLenum pname, const GLfloat *params);
glFogfv_t glFogfv;
typedef void ( APIENTRY * glFogi_t )(GLenum pname, GLint param);
glFogi_t glFogi;
typedef void ( APIENTRY * glFogiv_t )(GLenum pname, const GLint *params);
glFogiv_t glFogiv;
typedef void ( APIENTRY * glFrontFace_t )(GLenum mode);
glFrontFace_t glFrontFace;
typedef void ( APIENTRY * glFrustum_t )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
glFrustum_t glFrustum;
typedef GLuint ( APIENTRY * glGenLists_t )(GLsizei range);
glGenLists_t glGenLists;
typedef void ( APIENTRY * glGenTextures_t )(GLsizei n, GLuint *textures);
glGenTextures_t glGenTextures;
typedef void ( APIENTRY * glGetBooleanv_t )(GLenum pname, GLboolean *params);
glGetBooleanv_t glGetBooleanv;
typedef void ( APIENTRY * glGetClipPlane_t )(GLenum plane, GLdouble *equation);
glGetClipPlane_t glGetClipPlane;
typedef void ( APIENTRY * glGetDoublev_t )(GLenum pname, GLdouble *params);
glGetDoublev_t glGetDoublev;
typedef GLenum ( APIENTRY * glGetError_t )(void);
glGetError_t glGetError;
typedef void ( APIENTRY * glGetFloatv_t )(GLenum pname, GLfloat *params);
glGetFloatv_t glGetFloatv;
typedef void ( APIENTRY * glGetIntegerv_t )(GLenum pname, GLint *params);
glGetIntegerv_t glGetIntegerv;
typedef void ( APIENTRY * glGetLightfv_t )(GLenum light, GLenum pname, GLfloat *params);
glGetLightfv_t glGetLightfv;
typedef void ( APIENTRY * glGetLightiv_t )(GLenum light, GLenum pname, GLint *params);
glGetLightiv_t glGetLightiv;
typedef void ( APIENTRY * glGetMapdv_t )(GLenum target, GLenum query, GLdouble *v);
glGetMapdv_t glGetMapdv;
typedef void ( APIENTRY * glGetMapfv_t )(GLenum target, GLenum query, GLfloat *v);
glGetMapfv_t glGetMapfv;
typedef void ( APIENTRY * glGetMapiv_t )(GLenum target, GLenum query, GLint *v);
glGetMapiv_t glGetMapiv;
typedef void ( APIENTRY * glGetMaterialfv_t )(GLenum face, GLenum pname, GLfloat *params);
glGetMaterialfv_t glGetMaterialfv;
typedef void ( APIENTRY * glGetMaterialiv_t )(GLenum face, GLenum pname, GLint *params);
glGetMaterialiv_t glGetMaterialiv;
typedef void ( APIENTRY * glGetPixelMapfv_t )(GLenum map, GLfloat *values);
glGetPixelMapfv_t glGetPixelMapfv;
typedef void ( APIENTRY * glGetPixelMapuiv_t )(GLenum map, GLuint *values);
glGetPixelMapuiv_t glGetPixelMapuiv;
typedef void ( APIENTRY * glGetPixelMapusv_t )(GLenum map, GLushort *values);
glGetPixelMapusv_t glGetPixelMapusv;
typedef void ( APIENTRY * glGetPointerv_t )(GLenum pname, GLvoid* *params);
glGetPointerv_t glGetPointerv;
typedef void ( APIENTRY * glGetPolygonStipple_t )(GLubyte *mask);
glGetPolygonStipple_t glGetPolygonStipple;
typedef const GLubyte * ( APIENTRY * glGetString_t )(GLenum name);
glGetString_t glGetString;
typedef void ( APIENTRY * glGetTexEnvfv_t )(GLenum target, GLenum pname, GLfloat *params);
glGetTexEnvfv_t glGetTexEnvfv;
typedef void ( APIENTRY * glGetTexEnviv_t )(GLenum target, GLenum pname, GLint *params);
glGetTexEnviv_t glGetTexEnviv;
typedef void ( APIENTRY * glGetTexGendv_t )(GLenum coord, GLenum pname, GLdouble *params);
glGetTexGendv_t glGetTexGendv;
typedef void ( APIENTRY * glGetTexGenfv_t )(GLenum coord, GLenum pname, GLfloat *params);
glGetTexGenfv_t glGetTexGenfv;
typedef void ( APIENTRY * glGetTexGeniv_t )(GLenum coord, GLenum pname, GLint *params);
glGetTexGeniv_t glGetTexGeniv;
typedef void ( APIENTRY * glGetTexImage_t )(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
glGetTexImage_t glGetTexImage;
typedef void ( APIENTRY * glGetTexLevelParameterfv_t )(GLenum target, GLint level, GLenum pname, GLfloat *params);
glGetTexLevelParameterfv_t glGetTexLevelParameterfv;
typedef void ( APIENTRY * glGetTexLevelParameteriv_t )(GLenum target, GLint level, GLenum pname, GLint *params);
glGetTexLevelParameteriv_t glGetTexLevelParameteriv;
typedef void ( APIENTRY * glGetTexParameterfv_t )(GLenum target, GLenum pname, GLfloat *params);
glGetTexParameterfv_t glGetTexParameterfv;
typedef void ( APIENTRY * glGetTexParameteriv_t )(GLenum target, GLenum pname, GLint *params);
glGetTexParameteriv_t glGetTexParameteriv;
typedef void ( APIENTRY * glHint_t )(GLenum target, GLenum mode);
glHint_t glHint;
typedef void ( APIENTRY * glIndexMask_t )(GLuint mask);
glIndexMask_t glIndexMask;
typedef void ( APIENTRY * glIndexPointer_t )(GLenum type, GLsizei stride, const GLvoid *pointer);
glIndexPointer_t glIndexPointer;
typedef void ( APIENTRY * glIndexd_t )(GLdouble c);
glIndexd_t glIndexd;
typedef void ( APIENTRY * glIndexdv_t )(const GLdouble *c);
glIndexdv_t glIndexdv;
typedef void ( APIENTRY * glIndexf_t )(GLfloat c);
glIndexf_t glIndexf;
typedef void ( APIENTRY * glIndexfv_t )(const GLfloat *c);
glIndexfv_t glIndexfv;
typedef void ( APIENTRY * glIndexi_t )(GLint c);
glIndexi_t glIndexi;
typedef void ( APIENTRY * glIndexiv_t )(const GLint *c);
glIndexiv_t glIndexiv;
typedef void ( APIENTRY * glIndexs_t )(GLshort c);
glIndexs_t glIndexs;
typedef void ( APIENTRY * glIndexsv_t )(const GLshort *c);
glIndexsv_t glIndexsv;
typedef void ( APIENTRY * glIndexub_t )(GLubyte c);
glIndexub_t glIndexub;
typedef void ( APIENTRY * glIndexubv_t )(const GLubyte *c);
glIndexubv_t glIndexubv;
typedef void ( APIENTRY * glInitNames_t )(void);
glInitNames_t glInitNames;
typedef void ( APIENTRY * glInterleavedArrays_t )(GLenum format, GLsizei stride, const GLvoid *pointer);
glInterleavedArrays_t glInterleavedArrays;
typedef GLboolean ( APIENTRY * glIsEnabled_t )(GLenum cap);
glIsEnabled_t glIsEnabled;
typedef GLboolean ( APIENTRY * glIsList_t )(GLuint list);
glIsList_t glIsList;
typedef GLboolean ( APIENTRY * glIsTexture_t )(GLuint texture);
glIsTexture_t glIsTexture;
typedef void ( APIENTRY * glLightModelf_t )(GLenum pname, GLfloat param);
glLightModelf_t glLightModelf;
typedef void ( APIENTRY * glLightModelfv_t )(GLenum pname, const GLfloat *params);
glLightModelfv_t glLightModelfv;
typedef void ( APIENTRY * glLightModeli_t )(GLenum pname, GLint param);
glLightModeli_t glLightModeli;
typedef void ( APIENTRY * glLightModeliv_t )(GLenum pname, const GLint *params);
glLightModeliv_t glLightModeliv;
typedef void ( APIENTRY * glLightf_t )(GLenum light, GLenum pname, GLfloat param);
glLightf_t glLightf;
typedef void ( APIENTRY * glLightfv_t )(GLenum light, GLenum pname, const GLfloat *params);
glLightfv_t glLightfv;
typedef void ( APIENTRY * glLighti_t )(GLenum light, GLenum pname, GLint param);
glLighti_t glLighti;
typedef void ( APIENTRY * glLightiv_t )(GLenum light, GLenum pname, const GLint *params);
glLightiv_t glLightiv;
typedef void ( APIENTRY * glLineStipple_t )(GLint factor, GLushort pattern);
glLineStipple_t glLineStipple;
typedef void ( APIENTRY * glLineWidth_t )(GLfloat width);
glLineWidth_t glLineWidth;
typedef void ( APIENTRY * glListBase_t )(GLuint base);
glListBase_t glListBase;
typedef void ( APIENTRY * glLoadIdentity_t )(void);
glLoadIdentity_t glLoadIdentity;
typedef void ( APIENTRY * glLoadMatrixd_t )(const GLdouble *m);
glLoadMatrixd_t glLoadMatrixd;
typedef void ( APIENTRY * glLoadMatrixf_t )(const GLfloat *m);
glLoadMatrixf_t glLoadMatrixf;
typedef void ( APIENTRY * glLoadName_t )(GLuint name);
glLoadName_t glLoadName;
typedef void ( APIENTRY * glLogicOp_t )(GLenum opcode);
glLogicOp_t glLogicOp;
typedef void ( APIENTRY * glMap1d_t )(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
glMap1d_t glMap1d;
typedef void ( APIENTRY * glMap1f_t )(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
glMap1f_t glMap1f;
typedef void ( APIENTRY * glMap2d_t )(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
glMap2d_t glMap2d;
typedef void ( APIENTRY * glMap2f_t )(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
glMap2f_t glMap2f;
typedef void ( APIENTRY * glMapGrid1d_t )(GLint un, GLdouble u1, GLdouble u2);
glMapGrid1d_t glMapGrid1d;
typedef void ( APIENTRY * glMapGrid1f_t )(GLint un, GLfloat u1, GLfloat u2);
glMapGrid1f_t glMapGrid1f;
typedef void ( APIENTRY * glMapGrid2d_t )(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
glMapGrid2d_t glMapGrid2d;
typedef void ( APIENTRY * glMapGrid2f_t )(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
glMapGrid2f_t glMapGrid2f;
typedef void ( APIENTRY * glMaterialf_t )(GLenum face, GLenum pname, GLfloat param);
glMaterialf_t glMaterialf;
typedef void ( APIENTRY * glMaterialfv_t )(GLenum face, GLenum pname, const GLfloat *params);
glMaterialfv_t glMaterialfv;
typedef void ( APIENTRY * glMateriali_t )(GLenum face, GLenum pname, GLint param);
glMateriali_t glMateriali;
typedef void ( APIENTRY * glMaterialiv_t )(GLenum face, GLenum pname, const GLint *params);
glMaterialiv_t glMaterialiv;
typedef void ( APIENTRY * glMatrixMode_t )(GLenum mode);
glMatrixMode_t glMatrixMode;
typedef void ( APIENTRY * glMultMatrixd_t )(const GLdouble *m);
glMultMatrixd_t glMultMatrixd;
typedef void ( APIENTRY * glMultMatrixf_t )(const GLfloat *m);
glMultMatrixf_t glMultMatrixf;
typedef void ( APIENTRY * glNewList_t )(GLuint list, GLenum mode);
glNewList_t glNewList;
typedef void ( APIENTRY * glNormal3b_t )(GLbyte nx, GLbyte ny, GLbyte nz);
glNormal3b_t glNormal3b;
typedef void ( APIENTRY * glNormal3bv_t )(const GLbyte *v);
glNormal3bv_t glNormal3bv;
typedef void ( APIENTRY * glNormal3d_t )(GLdouble nx, GLdouble ny, GLdouble nz);
glNormal3d_t glNormal3d;
typedef void ( APIENTRY * glNormal3dv_t )(const GLdouble *v);
glNormal3dv_t glNormal3dv;
typedef void ( APIENTRY * glNormal3f_t )(GLfloat nx, GLfloat ny, GLfloat nz);
glNormal3f_t glNormal3f;
typedef void ( APIENTRY * glNormal3fv_t )(const GLfloat *v);
glNormal3fv_t glNormal3fv;
typedef void ( APIENTRY * glNormal3i_t )(GLint nx, GLint ny, GLint nz);
glNormal3i_t glNormal3i;
typedef void ( APIENTRY * glNormal3iv_t )(const GLint *v);
glNormal3iv_t glNormal3iv;
typedef void ( APIENTRY * glNormal3s_t )(GLshort nx, GLshort ny, GLshort nz);
glNormal3s_t glNormal3s;
typedef void ( APIENTRY * glNormal3sv_t )(const GLshort *v);
glNormal3sv_t glNormal3sv;
typedef void ( APIENTRY * glNormalPointer_t )(GLenum type, GLsizei stride, const GLvoid *pointer);
glNormalPointer_t glNormalPointer;
typedef void ( APIENTRY * glOrtho_t )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
glOrtho_t glOrtho;
typedef void ( APIENTRY * glPassThrough_t )(GLfloat token);
glPassThrough_t glPassThrough;
typedef void ( APIENTRY * glPixelMapfv_t )(GLenum map, GLsizei mapsize, const GLfloat *values);
glPixelMapfv_t glPixelMapfv;
typedef void ( APIENTRY * glPixelMapuiv_t )(GLenum map, GLsizei mapsize, const GLuint *values);
glPixelMapuiv_t glPixelMapuiv;
typedef void ( APIENTRY * glPixelMapusv_t )(GLenum map, GLsizei mapsize, const GLushort *values);
glPixelMapusv_t glPixelMapusv;
typedef void ( APIENTRY * glPixelStoref_t )(GLenum pname, GLfloat param);
glPixelStoref_t glPixelStoref;
typedef void ( APIENTRY * glPixelStorei_t )(GLenum pname, GLint param);
glPixelStorei_t glPixelStorei;
typedef void ( APIENTRY * glPixelTransferf_t )(GLenum pname, GLfloat param);
glPixelTransferf_t glPixelTransferf;
typedef void ( APIENTRY * glPixelTransferi_t )(GLenum pname, GLint param);
glPixelTransferi_t glPixelTransferi;
typedef void ( APIENTRY * glPixelZoom_t )(GLfloat xfactor, GLfloat yfactor);
glPixelZoom_t glPixelZoom;
typedef void ( APIENTRY * glPointSize_t )(GLfloat size);
glPointSize_t glPointSize;
typedef void ( APIENTRY * glPolygonMode_t )(GLenum face, GLenum mode);
glPolygonMode_t glPolygonMode;
typedef void ( APIENTRY * glPolygonOffset_t )(GLfloat factor, GLfloat units);
glPolygonOffset_t glPolygonOffset;
typedef void ( APIENTRY * glPolygonStipple_t )(const GLubyte *mask);
glPolygonStipple_t glPolygonStipple;
typedef void ( APIENTRY * glPopAttrib_t )(void);
glPopAttrib_t glPopAttrib;
typedef void ( APIENTRY * glPopClientAttrib_t )(void);
glPopClientAttrib_t glPopClientAttrib;
typedef void ( APIENTRY * glPopMatrix_t )(void);
glPopMatrix_t glPopMatrix;
typedef void ( APIENTRY * glPopName_t )(void);
glPopName_t glPopName;
typedef void ( APIENTRY * glPrioritizeTextures_t )(GLsizei n, const GLuint *textures, const GLclampf *priorities);
glPrioritizeTextures_t glPrioritizeTextures;
typedef void ( APIENTRY * glPushAttrib_t )(GLbitfield mask);
glPushAttrib_t glPushAttrib;
typedef void ( APIENTRY * glPushClientAttrib_t )(GLbitfield mask);
glPushClientAttrib_t glPushClientAttrib;
typedef void ( APIENTRY * glPushMatrix_t )(void);
glPushMatrix_t glPushMatrix;
typedef void ( APIENTRY * glPushName_t )(GLuint name);
glPushName_t glPushName;
typedef void ( APIENTRY * glRasterPos2d_t )(GLdouble x, GLdouble y);
glRasterPos2d_t glRasterPos2d;
typedef void ( APIENTRY * glRasterPos2dv_t )(const GLdouble *v);
glRasterPos2dv_t glRasterPos2dv;
typedef void ( APIENTRY * glRasterPos2f_t )(GLfloat x, GLfloat y);
glRasterPos2f_t glRasterPos2f;
typedef void ( APIENTRY * glRasterPos2fv_t )(const GLfloat *v);
glRasterPos2fv_t glRasterPos2fv;
typedef void ( APIENTRY * glRasterPos2i_t )(GLint x, GLint y);
glRasterPos2i_t glRasterPos2i;
typedef void ( APIENTRY * glRasterPos2iv_t )(const GLint *v);
glRasterPos2iv_t glRasterPos2iv;
typedef void ( APIENTRY * glRasterPos2s_t )(GLshort x, GLshort y);
glRasterPos2s_t glRasterPos2s;
typedef void ( APIENTRY * glRasterPos2sv_t )(const GLshort *v);
glRasterPos2sv_t glRasterPos2sv;
typedef void ( APIENTRY * glRasterPos3d_t )(GLdouble x, GLdouble y, GLdouble z);
glRasterPos3d_t glRasterPos3d;
typedef void ( APIENTRY * glRasterPos3dv_t )(const GLdouble *v);
glRasterPos3dv_t glRasterPos3dv;
typedef void ( APIENTRY * glRasterPos3f_t )(GLfloat x, GLfloat y, GLfloat z);
glRasterPos3f_t glRasterPos3f;
typedef void ( APIENTRY * glRasterPos3fv_t )(const GLfloat *v);
glRasterPos3fv_t glRasterPos3fv;
typedef void ( APIENTRY * glRasterPos3i_t )(GLint x, GLint y, GLint z);
glRasterPos3i_t glRasterPos3i;
typedef void ( APIENTRY * glRasterPos3iv_t )(const GLint *v);
glRasterPos3iv_t glRasterPos3iv;
typedef void ( APIENTRY * glRasterPos3s_t )(GLshort x, GLshort y, GLshort z);
glRasterPos3s_t glRasterPos3s;
typedef void ( APIENTRY * glRasterPos3sv_t )(const GLshort *v);
glRasterPos3sv_t glRasterPos3sv;
typedef void ( APIENTRY * glRasterPos4d_t )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
glRasterPos4d_t glRasterPos4d;
typedef void ( APIENTRY * glRasterPos4dv_t )(const GLdouble *v);
glRasterPos4dv_t glRasterPos4dv;
typedef void ( APIENTRY * glRasterPos4f_t )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
glRasterPos4f_t glRasterPos4f;
typedef void ( APIENTRY * glRasterPos4fv_t )(const GLfloat *v);
glRasterPos4fv_t glRasterPos4fv;
typedef void ( APIENTRY * glRasterPos4i_t )(GLint x, GLint y, GLint z, GLint w);
glRasterPos4i_t glRasterPos4i;
typedef void ( APIENTRY * glRasterPos4iv_t )(const GLint *v);
glRasterPos4iv_t glRasterPos4iv;
typedef void ( APIENTRY * glRasterPos4s_t )(GLshort x, GLshort y, GLshort z, GLshort w);
glRasterPos4s_t glRasterPos4s;
typedef void ( APIENTRY * glRasterPos4sv_t )(const GLshort *v);
glRasterPos4sv_t glRasterPos4sv;
typedef void ( APIENTRY * glReadBuffer_t )(GLenum mode);
glReadBuffer_t glReadBuffer;
typedef void ( APIENTRY * glReadPixels_t )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
glReadPixels_t glReadPixels;
typedef void ( APIENTRY * glRectd_t )(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
glRectd_t glRectd;
typedef void ( APIENTRY * glRectdv_t )(const GLdouble *v1, const GLdouble *v2);
glRectdv_t glRectdv;
typedef void ( APIENTRY * glRectf_t )(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
glRectf_t glRectf;
typedef void ( APIENTRY * glRectfv_t )(const GLfloat *v1, const GLfloat *v2);
glRectfv_t glRectfv;
typedef void ( APIENTRY * glRecti_t )(GLint x1, GLint y1, GLint x2, GLint y2);
glRecti_t glRecti;
typedef void ( APIENTRY * glRectiv_t )(const GLint *v1, const GLint *v2);
glRectiv_t glRectiv;
typedef void ( APIENTRY * glRects_t )(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
glRects_t glRects;
typedef void ( APIENTRY * glRectsv_t )(const GLshort *v1, const GLshort *v2);
glRectsv_t glRectsv;
typedef GLint ( APIENTRY * glRenderMode_t )(GLenum mode);
glRenderMode_t glRenderMode;
typedef void ( APIENTRY * glRotated_t )(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
glRotated_t glRotated;
typedef void ( APIENTRY * glRotatef_t )(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
glRotatef_t glRotatef;
typedef void ( APIENTRY * glScaled_t )(GLdouble x, GLdouble y, GLdouble z);
glScaled_t glScaled;
typedef void ( APIENTRY * glScalef_t )(GLfloat x, GLfloat y, GLfloat z);
glScalef_t glScalef;
typedef void ( APIENTRY * glScissor_t )(GLint x, GLint y, GLsizei width, GLsizei height);
glScissor_t glScissor;
typedef void ( APIENTRY * glSelectBuffer_t )(GLsizei size, GLuint *buffer);
glSelectBuffer_t glSelectBuffer;
typedef void ( APIENTRY * glShadeModel_t )(GLenum mode);
glShadeModel_t glShadeModel;
typedef void ( APIENTRY * glStencilFunc_t )(GLenum func, GLint ref, GLuint mask);
glStencilFunc_t glStencilFunc;
typedef void ( APIENTRY * glStencilMask_t )(GLuint mask);
glStencilMask_t glStencilMask;
typedef void ( APIENTRY * glStencilOp_t )(GLenum fail, GLenum zfail, GLenum zpass);
glStencilOp_t glStencilOp;
typedef void ( APIENTRY * glTexCoord1d_t )(GLdouble s);
glTexCoord1d_t glTexCoord1d;
typedef void ( APIENTRY * glTexCoord1dv_t )(const GLdouble *v);
glTexCoord1dv_t glTexCoord1dv;
typedef void ( APIENTRY * glTexCoord1f_t )(GLfloat s);
glTexCoord1f_t glTexCoord1f;
typedef void ( APIENTRY * glTexCoord1fv_t )(const GLfloat *v);
glTexCoord1fv_t glTexCoord1fv;
typedef void ( APIENTRY * glTexCoord1i_t )(GLint s);
glTexCoord1i_t glTexCoord1i;
typedef void ( APIENTRY * glTexCoord1iv_t )(const GLint *v);
glTexCoord1iv_t glTexCoord1iv;
typedef void ( APIENTRY * glTexCoord1s_t )(GLshort s);
glTexCoord1s_t glTexCoord1s;
typedef void ( APIENTRY * glTexCoord1sv_t )(const GLshort *v);
glTexCoord1sv_t glTexCoord1sv;
typedef void ( APIENTRY * glTexCoord2d_t )(GLdouble s, GLdouble t);
glTexCoord2d_t glTexCoord2d;
typedef void ( APIENTRY * glTexCoord2dv_t )(const GLdouble *v);
glTexCoord2dv_t glTexCoord2dv;
typedef void ( APIENTRY * glTexCoord2f_t )(GLfloat s, GLfloat t);
glTexCoord2f_t glTexCoord2f;
typedef void ( APIENTRY * glTexCoord2fv_t )(const GLfloat *v);
glTexCoord2fv_t glTexCoord2fv;
typedef void ( APIENTRY * glTexCoord2i_t )(GLint s, GLint t);
glTexCoord2i_t glTexCoord2i;
typedef void ( APIENTRY * glTexCoord2iv_t )(const GLint *v);
glTexCoord2iv_t glTexCoord2iv;
typedef void ( APIENTRY * glTexCoord2s_t )(GLshort s, GLshort t);
glTexCoord2s_t glTexCoord2s;
typedef void ( APIENTRY * glTexCoord2sv_t )(const GLshort *v);
glTexCoord2sv_t glTexCoord2sv;
typedef void ( APIENTRY * glTexCoord3d_t )(GLdouble s, GLdouble t, GLdouble r);
glTexCoord3d_t glTexCoord3d;
typedef void ( APIENTRY * glTexCoord3dv_t )(const GLdouble *v);
glTexCoord3dv_t glTexCoord3dv;
typedef void ( APIENTRY * glTexCoord3f_t )(GLfloat s, GLfloat t, GLfloat r);
glTexCoord3f_t glTexCoord3f;
typedef void ( APIENTRY * glTexCoord3fv_t )(const GLfloat *v);
glTexCoord3fv_t glTexCoord3fv;
typedef void ( APIENTRY * glTexCoord3i_t )(GLint s, GLint t, GLint r);
glTexCoord3i_t glTexCoord3i;
typedef void ( APIENTRY * glTexCoord3iv_t )(const GLint *v);
glTexCoord3iv_t glTexCoord3iv;
typedef void ( APIENTRY * glTexCoord3s_t )(GLshort s, GLshort t, GLshort r);
glTexCoord3s_t glTexCoord3s;
typedef void ( APIENTRY * glTexCoord3sv_t )(const GLshort *v);
glTexCoord3sv_t glTexCoord3sv;
typedef void ( APIENTRY * glTexCoord4d_t )(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
glTexCoord4d_t glTexCoord4d;
typedef void ( APIENTRY * glTexCoord4dv_t )(const GLdouble *v);
glTexCoord4dv_t glTexCoord4dv;
typedef void ( APIENTRY * glTexCoord4f_t )(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
glTexCoord4f_t glTexCoord4f;
typedef void ( APIENTRY * glTexCoord4fv_t )(const GLfloat *v);
glTexCoord4fv_t glTexCoord4fv;
typedef void ( APIENTRY * glTexCoord4i_t )(GLint s, GLint t, GLint r, GLint q);
glTexCoord4i_t glTexCoord4i;
typedef void ( APIENTRY * glTexCoord4iv_t )(const GLint *v);
glTexCoord4iv_t glTexCoord4iv;
typedef void ( APIENTRY * glTexCoord4s_t )(GLshort s, GLshort t, GLshort r, GLshort q);
glTexCoord4s_t glTexCoord4s;
typedef void ( APIENTRY * glTexCoord4sv_t )(const GLshort *v);
glTexCoord4sv_t glTexCoord4sv;
typedef void ( APIENTRY * glTexCoordPointer_t )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
glTexCoordPointer_t glTexCoordPointer;
typedef void ( APIENTRY * glTexEnvf_t )(GLenum target, GLenum pname, GLfloat param);
glTexEnvf_t glTexEnvf;
typedef void ( APIENTRY * glTexEnvfv_t )(GLenum target, GLenum pname, const GLfloat *params);
glTexEnvfv_t glTexEnvfv;
typedef void ( APIENTRY * glTexEnvi_t )(GLenum target, GLenum pname, GLint param);
glTexEnvi_t glTexEnvi;
typedef void ( APIENTRY * glTexEnviv_t )(GLenum target, GLenum pname, const GLint *params);
glTexEnviv_t glTexEnviv;
typedef void ( APIENTRY * glTexGend_t )(GLenum coord, GLenum pname, GLdouble param);
glTexGend_t glTexGend;
typedef void ( APIENTRY * glTexGendv_t )(GLenum coord, GLenum pname, const GLdouble *params);
glTexGendv_t glTexGendv;
typedef void ( APIENTRY * glTexGenf_t )(GLenum coord, GLenum pname, GLfloat param);
glTexGenf_t glTexGenf;
typedef void ( APIENTRY * glTexGenfv_t )(GLenum coord, GLenum pname, const GLfloat *params);
glTexGenfv_t glTexGenfv;
typedef void ( APIENTRY * glTexGeni_t )(GLenum coord, GLenum pname, GLint param);
glTexGeni_t glTexGeni;
typedef void ( APIENTRY * glTexGeniv_t )(GLenum coord, GLenum pname, const GLint *params);
glTexGeniv_t glTexGeniv;
typedef void ( APIENTRY * glTexImage1D_t )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
glTexImage1D_t glTexImage1D;
typedef void ( APIENTRY * glTexImage2D_t )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
glTexImage2D_t glTexImage2D;
typedef void ( APIENTRY * glTexParameterf_t )(GLenum target, GLenum pname, GLfloat param);
glTexParameterf_t glTexParameterf;
typedef void ( APIENTRY * glTexParameterfv_t )(GLenum target, GLenum pname, const GLfloat *params);
glTexParameterfv_t glTexParameterfv;
typedef void ( APIENTRY * glTexParameteri_t )(GLenum target, GLenum pname, GLint param);
glTexParameteri_t glTexParameteri;
typedef void ( APIENTRY * glTexParameteriv_t )(GLenum target, GLenum pname, const GLint *params);
glTexParameteriv_t glTexParameteriv;
typedef void ( APIENTRY * glTexSubImage1D_t )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
glTexSubImage1D_t glTexSubImage1D;
typedef void ( APIENTRY * glTexSubImage2D_t )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
glTexSubImage2D_t glTexSubImage2D;
typedef void ( APIENTRY * glTranslated_t )(GLdouble x, GLdouble y, GLdouble z);
glTranslated_t glTranslated;
typedef void ( APIENTRY * glTranslatef_t )(GLfloat x, GLfloat y, GLfloat z);
glTranslatef_t glTranslatef;
typedef void ( APIENTRY * glVertex2d_t )(GLdouble x, GLdouble y);
glVertex2d_t glVertex2d;
typedef void ( APIENTRY * glVertex2dv_t )(const GLdouble *v);
glVertex2dv_t glVertex2dv;
typedef void ( APIENTRY * glVertex2f_t )(GLfloat x, GLfloat y);
glVertex2f_t glVertex2f;
typedef void ( APIENTRY * glVertex2fv_t )(const GLfloat *v);
glVertex2fv_t glVertex2fv;
typedef void ( APIENTRY * glVertex2i_t )(GLint x, GLint y);
glVertex2i_t glVertex2i;
typedef void ( APIENTRY * glVertex2iv_t )(const GLint *v);
glVertex2iv_t glVertex2iv;
typedef void ( APIENTRY * glVertex2s_t )(GLshort x, GLshort y);
glVertex2s_t glVertex2s;
typedef void ( APIENTRY * glVertex2sv_t )(const GLshort *v);
glVertex2sv_t glVertex2sv;
typedef void ( APIENTRY * glVertex3d_t )(GLdouble x, GLdouble y, GLdouble z);
glVertex3d_t glVertex3d;
typedef void ( APIENTRY * glVertex3dv_t )(const GLdouble *v);
glVertex3dv_t glVertex3dv;
typedef void ( APIENTRY * glVertex3f_t )(GLfloat x, GLfloat y, GLfloat z);
glVertex3f_t glVertex3f;
typedef void ( APIENTRY * glVertex3fv_t )(const GLfloat *v);
glVertex3fv_t glVertex3fv;
typedef void ( APIENTRY * glVertex3i_t )(GLint x, GLint y, GLint z);
glVertex3i_t glVertex3i;
typedef void ( APIENTRY * glVertex3iv_t )(const GLint *v);
glVertex3iv_t glVertex3iv;
typedef void ( APIENTRY * glVertex3s_t )(GLshort x, GLshort y, GLshort z);
glVertex3s_t glVertex3s;
typedef void ( APIENTRY * glVertex3sv_t )(const GLshort *v);
glVertex3sv_t glVertex3sv;
typedef void ( APIENTRY * glVertex4d_t )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
glVertex4d_t glVertex4d;
typedef void ( APIENTRY * glVertex4dv_t )(const GLdouble *v);
glVertex4dv_t glVertex4dv;
typedef void ( APIENTRY * glVertex4f_t )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
glVertex4f_t glVertex4f;
typedef void ( APIENTRY * glVertex4fv_t )(const GLfloat *v);
glVertex4fv_t glVertex4fv;
typedef void ( APIENTRY * glVertex4i_t )(GLint x, GLint y, GLint z, GLint w);
glVertex4i_t glVertex4i;
typedef void ( APIENTRY * glVertex4iv_t )(const GLint *v);
glVertex4iv_t glVertex4iv;
typedef void ( APIENTRY * glVertex4s_t )(GLshort x, GLshort y, GLshort z, GLshort w);
glVertex4s_t glVertex4s;
typedef void ( APIENTRY * glVertex4sv_t )(const GLshort *v);
glVertex4sv_t glVertex4sv;
typedef void ( APIENTRY * glVertexPointer_t )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
glVertexPointer_t glVertexPointer;
typedef void ( APIENTRY * glViewport_t )(GLint x, GLint y, GLsizei width, GLsizei height);
glViewport_t glViewport;
/* EXT_paletted_texture */
typedef void ( GLAPIENTRY* glColorTable_t)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data);
glColorTable_t glColorTableEXT;
/* EXT_compiled_vertex_array */
typedef void ( GLAPIENTRY * glLockArrays_t)(GLint first, GLsizei count);
typedef void ( GLAPIENTRY * glUnlockArrays_t)();
glLockArrays_t glLockArraysEXT;
glUnlockArrays_t glUnlockArraysEXT;
/* ARB_multitexture */
typedef void ( GLAPIENTRY * glActiveTextureARB_t)(GLenum target);
typedef void ( GLAPIENTRY * glClientActiveTextureARB_t)(GLenum target);
typedef void ( GLAPIENTRY * glMultiTexCoord2fARB_t)(GLenum texture, GLfloat, GLfloat);
typedef void ( GLAPIENTRY * glMultiTexCoord2fvARB_t)(GLenum texture, GLfloat*);
glActiveTextureARB_t glActiveTextureARB;
glClientActiveTextureARB_t glClientActiveTextureARB;
glMultiTexCoord2fARB_t glMultiTexCoord2fARB;
glMultiTexCoord2fvARB_t glMultiTexCoord2fvARB;
/* NV_vertex_array_range */
typedef void (GLAPIENTRY* glVertexArrayRange_t)(GLsizei length, void* pointer);
typedef void (GLAPIENTRY* glFlushVertexArrayRange_t)();
typedef void* (GLAPIENTRY* wglAllocateMemory_t)(GLsizei, GLfloat, GLfloat, GLfloat);
typedef void (GLAPIENTRY* wglFreeMemory_t)(void*);
glVertexArrayRange_t glVertexArrayRangeNV;
glFlushVertexArrayRange_t glFlushVertexArrayRangeNV;
wglAllocateMemory_t wglAllocateMemoryNV;
wglFreeMemory_t wglFreeMemoryNV;
/* EXT_fog_coord */
typedef void (GLAPIENTRY* glFogCoordf_t)(GLfloat);
typedef void (GLAPIENTRY* glFogCoordPointer_t)(GLenum, GLsizei, void*);
glFogCoordf_t glFogCoordfEXT;
glFogCoordPointer_t glFogCoordPointerEXT;
/* ARB_texture_compression */
typedef void (GLAPIENTRY* glCompressedTexImage3DARB_t)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void*);
typedef void (GLAPIENTRY* glCompressedTexImage2DARB_t)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void*);
typedef void (GLAPIENTRY* glCompressedTexImage1DARB_t)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLsizei imageSize, const void*);
typedef void (GLAPIENTRY* glCompressedTexSubImage3DARB_t)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void*);
typedef void (GLAPIENTRY* glCompressedTexSubImage2DARB_t)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void*);
typedef void (GLAPIENTRY* glCompressedTexSubImage1DARB_t)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void*);
typedef void (GLAPIENTRY* glGetCompressedTexImageARB_t)(GLenum target, GLint lod, void* img);
glCompressedTexImage3DARB_t glCompressedTexImage3DARB;
glCompressedTexImage2DARB_t glCompressedTexImage2DARB;
glCompressedTexImage1DARB_t glCompressedTexImage1DARB;
glCompressedTexSubImage3DARB_t glCompressedTexSubImage3DARB;
glCompressedTexSubImage2DARB_t glCompressedTexSubImage2DARB;
glCompressedTexSubImage1DARB_t glCompressedTexSubImage1DARB;
glGetCompressedTexImageARB_t glGetCompressedTexImageARB;
/* EXT_vertex_buffer */
typedef GLboolean (GLAPIENTRY* glAvailableVertexBufferEXT_t)();
typedef GLint (GLAPIENTRY* glAllocateVertexBufferEXT_t)(GLsizei size, GLint format, GLboolean preserve);
typedef void* (GLAPIENTRY* glLockVertexBufferEXT_t)(GLint handle, GLsizei size);
typedef void (GLAPIENTRY* glUnlockVertexBufferEXT_t)(GLint handle);
typedef void (GLAPIENTRY* glSetVertexBufferEXT_t)(GLint handle);
typedef void (GLAPIENTRY* glOffsetVertexBufferEXT_t)(GLint handle, GLuint offset);
typedef void (GLAPIENTRY* glFillVertexBufferEXT_t)(GLint handle, GLint first, GLsizei count);
typedef void (GLAPIENTRY* glFreeVertexBufferEXT_t)(GLint handle);
glAvailableVertexBufferEXT_t glAvailableVertexBufferEXT;
glAllocateVertexBufferEXT_t glAllocateVertexBufferEXT;
glLockVertexBufferEXT_t glLockVertexBufferEXT;
glUnlockVertexBufferEXT_t glUnlockVertexBufferEXT;
glSetVertexBufferEXT_t glSetVertexBufferEXT;
glOffsetVertexBufferEXT_t glOffsetVertexBufferEXT;
glFillVertexBufferEXT_t glFillVertexBufferEXT;
glFreeVertexBufferEXT_t glFreeVertexBufferEXT;
//------------------------------------------------------------------------------
// GLU DLL Functions
static const GLubyte* (APIENTRY * dllgluErrorString) (GLenum errCode);
static const GLubyte* (APIENTRY * dllgluGetString) (GLenum name);
static void (APIENTRY * dllgluOrtho2D) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
static void (APIENTRY * dllgluPerspective) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
static void (APIENTRY * dllgluPickMatrix) (GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint viewport[4]);
static void (APIENTRY * dllgluLookAt) (GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
static int (APIENTRY * dllgluProject) (GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz);
static int (APIENTRY * dllgluUnProject) (GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz);
static int (APIENTRY * dllgluScaleImage) (GLenum format, GLint widthin, GLint heightin, GLenum typein, const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout);
static int (APIENTRY * dllgluBuild1DMipmaps) (GLenum target, GLint components, GLint width, GLenum format, GLenum type, const void *data);
static int (APIENTRY * dllgluBuild2DMipmaps) (GLenum target, GLint components, GLint width, GLint height, GLenum format, GLenum type, const void *data);
//------------------------------------------------------------------------------
// GL DLL Functions
static void ( APIENTRY * dllAccum )(GLenum op, GLfloat value);
static void ( APIENTRY * dllAlphaFunc )(GLenum func, GLclampf ref);
GLboolean ( APIENTRY * dllAreTexturesResident )(GLsizei n, const GLuint *textures, GLboolean *residences);
static void ( APIENTRY * dllArrayElement )(GLint i);
static void ( APIENTRY * dllBegin )(GLenum mode);
static void ( APIENTRY * dllBindTexture )(GLenum target, GLuint texture);
static void ( APIENTRY * dllBitmap )(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
static void ( APIENTRY * dllBlendFunc )(GLenum sfactor, GLenum dfactor);
static void ( APIENTRY * dllCallList )(GLuint list);
static void ( APIENTRY * dllCallLists )(GLsizei n, GLenum type, const GLvoid *lists);
static void ( APIENTRY * dllClear )(GLbitfield mask);
static void ( APIENTRY * dllClearAccum )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
static void ( APIENTRY * dllClearColor )(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
static void ( APIENTRY * dllClearDepth )(GLclampd depth);
static void ( APIENTRY * dllClearIndex )(GLfloat c);
static void ( APIENTRY * dllClearStencil )(GLint s);
static void ( APIENTRY * dllClipPlane )(GLenum plane, const GLdouble *equation);
static void ( APIENTRY * dllColor3b )(GLbyte red, GLbyte green, GLbyte blue);
static void ( APIENTRY * dllColor3bv )(const GLbyte *v);
static void ( APIENTRY * dllColor3d )(GLdouble red, GLdouble green, GLdouble blue);
static void ( APIENTRY * dllColor3dv )(const GLdouble *v);
static void ( APIENTRY * dllColor3f )(GLfloat red, GLfloat green, GLfloat blue);
static void ( APIENTRY * dllColor3fv )(const GLfloat *v);
static void ( APIENTRY * dllColor3i )(GLint red, GLint green, GLint blue);
static void ( APIENTRY * dllColor3iv )(const GLint *v);
static void ( APIENTRY * dllColor3s )(GLshort red, GLshort green, GLshort blue);
static void ( APIENTRY * dllColor3sv )(const GLshort *v);
static void ( APIENTRY * dllColor3ub )(GLubyte red, GLubyte green, GLubyte blue);
static void ( APIENTRY * dllColor3ubv )(const GLubyte *v);
static void ( APIENTRY * dllColor3ui )(GLuint red, GLuint green, GLuint blue);
static void ( APIENTRY * dllColor3uiv )(const GLuint *v);
static void ( APIENTRY * dllColor3us )(GLushort red, GLushort green, GLushort blue);
static void ( APIENTRY * dllColor3usv )(const GLushort *v);
static void ( APIENTRY * dllColor4b )(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
static void ( APIENTRY * dllColor4bv )(const GLbyte *v);
static void ( APIENTRY * dllColor4d )(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
static void ( APIENTRY * dllColor4dv )(const GLdouble *v);
static void ( APIENTRY * dllColor4f )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
static void ( APIENTRY * dllColor4fv )(const GLfloat *v);
static void ( APIENTRY * dllColor4i )(GLint red, GLint green, GLint blue, GLint alpha);
static void ( APIENTRY * dllColor4iv )(const GLint *v);
static void ( APIENTRY * dllColor4s )(GLshort red, GLshort green, GLshort blue, GLshort alpha);
static void ( APIENTRY * dllColor4sv )(const GLshort *v);
static void ( APIENTRY * dllColor4ub )(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
static void ( APIENTRY * dllColor4ubv )(const GLubyte *v);
static void ( APIENTRY * dllColor4ui )(GLuint red, GLuint green, GLuint blue, GLuint alpha);
static void ( APIENTRY * dllColor4uiv )(const GLuint *v);
static void ( APIENTRY * dllColor4us )(GLushort red, GLushort green, GLushort blue, GLushort alpha);
static void ( APIENTRY * dllColor4usv )(const GLushort *v);
static void ( APIENTRY * dllColorMask )(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
static void ( APIENTRY * dllColorMaterial )(GLenum face, GLenum mode);
static void ( APIENTRY * dllColorPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
static void ( APIENTRY * dllCopyPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
static void ( APIENTRY * dllCopyTexImage1D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
static void ( APIENTRY * dllCopyTexImage2D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
static void ( APIENTRY * dllCopyTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
static void ( APIENTRY * dllCopyTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
static void ( APIENTRY * dllCullFace )(GLenum mode);
static void ( APIENTRY * dllDeleteLists )(GLuint list, GLsizei range);
static void ( APIENTRY * dllDeleteTextures )(GLsizei n, const GLuint *textures);
static void ( APIENTRY * dllDepthFunc )(GLenum func);
static void ( APIENTRY * dllDepthMask )(GLboolean flag);
static void ( APIENTRY * dllDepthRange )(GLclampd zNear, GLclampd zFar);
static void ( APIENTRY * dllDisable )(GLenum cap);
static void ( APIENTRY * dllDisableClientState )(GLenum array);
static void ( APIENTRY * dllDrawArrays )(GLenum mode, GLint first, GLsizei count);
static void ( APIENTRY * dllDrawBuffer )(GLenum mode);
static void ( APIENTRY * dllDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
static void ( APIENTRY * dllDrawPixels )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
static void ( APIENTRY * dllEdgeFlag )(GLboolean flag);
static void ( APIENTRY * dllEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer);
static void ( APIENTRY * dllEdgeFlagv )(const GLboolean *flag);
static void ( APIENTRY * dllEnable )(GLenum cap);
static void ( APIENTRY * dllEnableClientState )(GLenum array);
static void ( APIENTRY * dllEnd )(void);
static void ( APIENTRY * dllEndList )(void);
static void ( APIENTRY * dllEvalCoord1d )(GLdouble u);
static void ( APIENTRY * dllEvalCoord1dv )(const GLdouble *u);
static void ( APIENTRY * dllEvalCoord1f )(GLfloat u);
static void ( APIENTRY * dllEvalCoord1fv )(const GLfloat *u);
static void ( APIENTRY * dllEvalCoord2d )(GLdouble u, GLdouble v);
static void ( APIENTRY * dllEvalCoord2dv )(const GLdouble *u);
static void ( APIENTRY * dllEvalCoord2f )(GLfloat u, GLfloat v);
static void ( APIENTRY * dllEvalCoord2fv )(const GLfloat *u);
static void ( APIENTRY * dllEvalMesh1 )(GLenum mode, GLint i1, GLint i2);
static void ( APIENTRY * dllEvalMesh2 )(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
static void ( APIENTRY * dllEvalPoint1 )(GLint i);
static void ( APIENTRY * dllEvalPoint2 )(GLint i, GLint j);
static void ( APIENTRY * dllFeedbackBuffer )(GLsizei size, GLenum type, GLfloat *buffer);
static void ( APIENTRY * dllFinish )(void);
static void ( APIENTRY * dllFlush )(void);
static void ( APIENTRY * dllFogf )(GLenum pname, GLfloat param);
static void ( APIENTRY * dllFogfv )(GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllFogi )(GLenum pname, GLint param);
static void ( APIENTRY * dllFogiv )(GLenum pname, const GLint *params);
static void ( APIENTRY * dllFrontFace )(GLenum mode);
static void ( APIENTRY * dllFrustum )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
GLuint ( APIENTRY * dllGenLists )(GLsizei range);
static void ( APIENTRY * dllGenTextures )(GLsizei n, GLuint *textures);
static void ( APIENTRY * dllGetBooleanv )(GLenum pname, GLboolean *params);
static void ( APIENTRY * dllGetClipPlane )(GLenum plane, GLdouble *equation);
static void ( APIENTRY * dllGetDoublev )(GLenum pname, GLdouble *params);
GLenum ( APIENTRY * dllGetError )(void);
static void ( APIENTRY * dllGetFloatv )(GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetIntegerv )(GLenum pname, GLint *params);
static void ( APIENTRY * dllGetLightfv )(GLenum light, GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetLightiv )(GLenum light, GLenum pname, GLint *params);
static void ( APIENTRY * dllGetMapdv )(GLenum target, GLenum query, GLdouble *v);
static void ( APIENTRY * dllGetMapfv )(GLenum target, GLenum query, GLfloat *v);
static void ( APIENTRY * dllGetMapiv )(GLenum target, GLenum query, GLint *v);
static void ( APIENTRY * dllGetMaterialfv )(GLenum face, GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetMaterialiv )(GLenum face, GLenum pname, GLint *params);
static void ( APIENTRY * dllGetPixelMapfv )(GLenum map, GLfloat *values);
static void ( APIENTRY * dllGetPixelMapuiv )(GLenum map, GLuint *values);
static void ( APIENTRY * dllGetPixelMapusv )(GLenum map, GLushort *values);
static void ( APIENTRY * dllGetPointerv )(GLenum pname, GLvoid* *params);
static void ( APIENTRY * dllGetPolygonStipple )(GLubyte *mask);
const GLubyte * ( APIENTRY * dllGetString )(GLenum name);
static void ( APIENTRY * dllGetTexEnvfv )(GLenum target, GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetTexEnviv )(GLenum target, GLenum pname, GLint *params);
static void ( APIENTRY * dllGetTexGendv )(GLenum coord, GLenum pname, GLdouble *params);
static void ( APIENTRY * dllGetTexGenfv )(GLenum coord, GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetTexGeniv )(GLenum coord, GLenum pname, GLint *params);
static void ( APIENTRY * dllGetTexImage )(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
static void ( APIENTRY * dllGetTexLevelParameterfv )(GLenum target, GLint level, GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetTexLevelParameteriv )(GLenum target, GLint level, GLenum pname, GLint *params);
static void ( APIENTRY * dllGetTexParameterfv )(GLenum target, GLenum pname, GLfloat *params);
static void ( APIENTRY * dllGetTexParameteriv )(GLenum target, GLenum pname, GLint *params);
static void ( APIENTRY * dllHint )(GLenum target, GLenum mode);
static void ( APIENTRY * dllIndexMask )(GLuint mask);
static void ( APIENTRY * dllIndexPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
static void ( APIENTRY * dllIndexd )(GLdouble c);
static void ( APIENTRY * dllIndexdv )(const GLdouble *c);
static void ( APIENTRY * dllIndexf )(GLfloat c);
static void ( APIENTRY * dllIndexfv )(const GLfloat *c);
static void ( APIENTRY * dllIndexi )(GLint c);
static void ( APIENTRY * dllIndexiv )(const GLint *c);
static void ( APIENTRY * dllIndexs )(GLshort c);
static void ( APIENTRY * dllIndexsv )(const GLshort *c);
static void ( APIENTRY * dllIndexub )(GLubyte c);
static void ( APIENTRY * dllIndexubv )(const GLubyte *c);
static void ( APIENTRY * dllInitNames )(void);
static void ( APIENTRY * dllInterleavedArrays )(GLenum format, GLsizei stride, const GLvoid *pointer);
GLboolean ( APIENTRY * dllIsEnabled )(GLenum cap);
GLboolean ( APIENTRY * dllIsList )(GLuint list);
GLboolean ( APIENTRY * dllIsTexture )(GLuint texture);
static void ( APIENTRY * dllLightModelf )(GLenum pname, GLfloat param);
static void ( APIENTRY * dllLightModelfv )(GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllLightModeli )(GLenum pname, GLint param);
static void ( APIENTRY * dllLightModeliv )(GLenum pname, const GLint *params);
static void ( APIENTRY * dllLightf )(GLenum light, GLenum pname, GLfloat param);
static void ( APIENTRY * dllLightfv )(GLenum light, GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllLighti )(GLenum light, GLenum pname, GLint param);
static void ( APIENTRY * dllLightiv )(GLenum light, GLenum pname, const GLint *params);
static void ( APIENTRY * dllLineStipple )(GLint factor, GLushort pattern);
static void ( APIENTRY * dllLineWidth )(GLfloat width);
static void ( APIENTRY * dllListBase )(GLuint base);
static void ( APIENTRY * dllLoadIdentity )(void);
static void ( APIENTRY * dllLoadMatrixd )(const GLdouble *m);
static void ( APIENTRY * dllLoadMatrixf )(const GLfloat *m);
static void ( APIENTRY * dllLoadName )(GLuint name);
static void ( APIENTRY * dllLogicOp )(GLenum opcode);
static void ( APIENTRY * dllMap1d )(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
static void ( APIENTRY * dllMap1f )(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
static void ( APIENTRY * dllMap2d )(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
static void ( APIENTRY * dllMap2f )(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
static void ( APIENTRY * dllMapGrid1d )(GLint un, GLdouble u1, GLdouble u2);
static void ( APIENTRY * dllMapGrid1f )(GLint un, GLfloat u1, GLfloat u2);
static void ( APIENTRY * dllMapGrid2d )(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
static void ( APIENTRY * dllMapGrid2f )(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
static void ( APIENTRY * dllMaterialf )(GLenum face, GLenum pname, GLfloat param);
static void ( APIENTRY * dllMaterialfv )(GLenum face, GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllMateriali )(GLenum face, GLenum pname, GLint param);
static void ( APIENTRY * dllMaterialiv )(GLenum face, GLenum pname, const GLint *params);
static void ( APIENTRY * dllMatrixMode )(GLenum mode);
static void ( APIENTRY * dllMultMatrixd )(const GLdouble *m);
static void ( APIENTRY * dllMultMatrixf )(const GLfloat *m);
static void ( APIENTRY * dllNewList )(GLuint list, GLenum mode);
static void ( APIENTRY * dllNormal3b )(GLbyte nx, GLbyte ny, GLbyte nz);
static void ( APIENTRY * dllNormal3bv )(const GLbyte *v);
static void ( APIENTRY * dllNormal3d )(GLdouble nx, GLdouble ny, GLdouble nz);
static void ( APIENTRY * dllNormal3dv )(const GLdouble *v);
static void ( APIENTRY * dllNormal3f )(GLfloat nx, GLfloat ny, GLfloat nz);
static void ( APIENTRY * dllNormal3fv )(const GLfloat *v);
static void ( APIENTRY * dllNormal3i )(GLint nx, GLint ny, GLint nz);
static void ( APIENTRY * dllNormal3iv )(const GLint *v);
static void ( APIENTRY * dllNormal3s )(GLshort nx, GLshort ny, GLshort nz);
static void ( APIENTRY * dllNormal3sv )(const GLshort *v);
static void ( APIENTRY * dllNormalPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
static void ( APIENTRY * dllOrtho )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
static void ( APIENTRY * dllPassThrough )(GLfloat token);
static void ( APIENTRY * dllPixelMapfv )(GLenum map, GLsizei mapsize, const GLfloat *values);
static void ( APIENTRY * dllPixelMapuiv )(GLenum map, GLsizei mapsize, const GLuint *values);
static void ( APIENTRY * dllPixelMapusv )(GLenum map, GLsizei mapsize, const GLushort *values);
static void ( APIENTRY * dllPixelStoref )(GLenum pname, GLfloat param);
static void ( APIENTRY * dllPixelStorei )(GLenum pname, GLint param);
static void ( APIENTRY * dllPixelTransferf )(GLenum pname, GLfloat param);
static void ( APIENTRY * dllPixelTransferi )(GLenum pname, GLint param);
static void ( APIENTRY * dllPixelZoom )(GLfloat xfactor, GLfloat yfactor);
static void ( APIENTRY * dllPointSize )(GLfloat size);
static void ( APIENTRY * dllPolygonMode )(GLenum face, GLenum mode);
static void ( APIENTRY * dllPolygonOffset )(GLfloat factor, GLfloat units);
static void ( APIENTRY * dllPolygonStipple )(const GLubyte *mask);
static void ( APIENTRY * dllPopAttrib )(void);
static void ( APIENTRY * dllPopClientAttrib )(void);
static void ( APIENTRY * dllPopMatrix )(void);
static void ( APIENTRY * dllPopName )(void);
static void ( APIENTRY * dllPrioritizeTextures )(GLsizei n, const GLuint *textures, const GLclampf *priorities);
static void ( APIENTRY * dllPushAttrib )(GLbitfield mask);
static void ( APIENTRY * dllPushClientAttrib )(GLbitfield mask);
static void ( APIENTRY * dllPushMatrix )(void);
static void ( APIENTRY * dllPushName )(GLuint name);
static void ( APIENTRY * dllRasterPos2d )(GLdouble x, GLdouble y);
static void ( APIENTRY * dllRasterPos2dv )(const GLdouble *v);
static void ( APIENTRY * dllRasterPos2f )(GLfloat x, GLfloat y);
static void ( APIENTRY * dllRasterPos2fv )(const GLfloat *v);
static void ( APIENTRY * dllRasterPos2i )(GLint x, GLint y);
static void ( APIENTRY * dllRasterPos2iv )(const GLint *v);
static void ( APIENTRY * dllRasterPos2s )(GLshort x, GLshort y);
static void ( APIENTRY * dllRasterPos2sv )(const GLshort *v);
static void ( APIENTRY * dllRasterPos3d )(GLdouble x, GLdouble y, GLdouble z);
static void ( APIENTRY * dllRasterPos3dv )(const GLdouble *v);
static void ( APIENTRY * dllRasterPos3f )(GLfloat x, GLfloat y, GLfloat z);
static void ( APIENTRY * dllRasterPos3fv )(const GLfloat *v);
static void ( APIENTRY * dllRasterPos3i )(GLint x, GLint y, GLint z);
static void ( APIENTRY * dllRasterPos3iv )(const GLint *v);
static void ( APIENTRY * dllRasterPos3s )(GLshort x, GLshort y, GLshort z);
static void ( APIENTRY * dllRasterPos3sv )(const GLshort *v);
static void ( APIENTRY * dllRasterPos4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
static void ( APIENTRY * dllRasterPos4dv )(const GLdouble *v);
static void ( APIENTRY * dllRasterPos4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
static void ( APIENTRY * dllRasterPos4fv )(const GLfloat *v);
static void ( APIENTRY * dllRasterPos4i )(GLint x, GLint y, GLint z, GLint w);
static void ( APIENTRY * dllRasterPos4iv )(const GLint *v);
static void ( APIENTRY * dllRasterPos4s )(GLshort x, GLshort y, GLshort z, GLshort w);
static void ( APIENTRY * dllRasterPos4sv )(const GLshort *v);
static void ( APIENTRY * dllReadBuffer )(GLenum mode);
static void ( APIENTRY * dllReadPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
static void ( APIENTRY * dllRectd )(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
static void ( APIENTRY * dllRectdv )(const GLdouble *v1, const GLdouble *v2);
static void ( APIENTRY * dllRectf )(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
static void ( APIENTRY * dllRectfv )(const GLfloat *v1, const GLfloat *v2);
static void ( APIENTRY * dllRecti )(GLint x1, GLint y1, GLint x2, GLint y2);
static void ( APIENTRY * dllRectiv )(const GLint *v1, const GLint *v2);
static void ( APIENTRY * dllRects )(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
static void ( APIENTRY * dllRectsv )(const GLshort *v1, const GLshort *v2);
GLint ( APIENTRY * dllRenderMode )(GLenum mode);
static void ( APIENTRY * dllRotated )(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
static void ( APIENTRY * dllRotatef )(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
static void ( APIENTRY * dllScaled )(GLdouble x, GLdouble y, GLdouble z);
static void ( APIENTRY * dllScalef )(GLfloat x, GLfloat y, GLfloat z);
static void ( APIENTRY * dllScissor )(GLint x, GLint y, GLsizei width, GLsizei height);
static void ( APIENTRY * dllSelectBuffer )(GLsizei size, GLuint *buffer);
static void ( APIENTRY * dllShadeModel )(GLenum mode);
static void ( APIENTRY * dllStencilFunc )(GLenum func, GLint ref, GLuint mask);
static void ( APIENTRY * dllStencilMask )(GLuint mask);
static void ( APIENTRY * dllStencilOp )(GLenum fail, GLenum zfail, GLenum zpass);
static void ( APIENTRY * dllTexCoord1d )(GLdouble s);
static void ( APIENTRY * dllTexCoord1dv )(const GLdouble *v);
static void ( APIENTRY * dllTexCoord1f )(GLfloat s);
static void ( APIENTRY * dllTexCoord1fv )(const GLfloat *v);
static void ( APIENTRY * dllTexCoord1i )(GLint s);
static void ( APIENTRY * dllTexCoord1iv )(const GLint *v);
static void ( APIENTRY * dllTexCoord1s )(GLshort s);
static void ( APIENTRY * dllTexCoord1sv )(const GLshort *v);
static void ( APIENTRY * dllTexCoord2d )(GLdouble s, GLdouble t);
static void ( APIENTRY * dllTexCoord2dv )(const GLdouble *v);
static void ( APIENTRY * dllTexCoord2f )(GLfloat s, GLfloat t);
static void ( APIENTRY * dllTexCoord2fv )(const GLfloat *v);
static void ( APIENTRY * dllTexCoord2i )(GLint s, GLint t);
static void ( APIENTRY * dllTexCoord2iv )(const GLint *v);
static void ( APIENTRY * dllTexCoord2s )(GLshort s, GLshort t);
static void ( APIENTRY * dllTexCoord2sv )(const GLshort *v);
static void ( APIENTRY * dllTexCoord3d )(GLdouble s, GLdouble t, GLdouble r);
static void ( APIENTRY * dllTexCoord3dv )(const GLdouble *v);
static void ( APIENTRY * dllTexCoord3f )(GLfloat s, GLfloat t, GLfloat r);
static void ( APIENTRY * dllTexCoord3fv )(const GLfloat *v);
static void ( APIENTRY * dllTexCoord3i )(GLint s, GLint t, GLint r);
static void ( APIENTRY * dllTexCoord3iv )(const GLint *v);
static void ( APIENTRY * dllTexCoord3s )(GLshort s, GLshort t, GLshort r);
static void ( APIENTRY * dllTexCoord3sv )(const GLshort *v);
static void ( APIENTRY * dllTexCoord4d )(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
static void ( APIENTRY * dllTexCoord4dv )(const GLdouble *v);
static void ( APIENTRY * dllTexCoord4f )(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
static void ( APIENTRY * dllTexCoord4fv )(const GLfloat *v);
static void ( APIENTRY * dllTexCoord4i )(GLint s, GLint t, GLint r, GLint q);
static void ( APIENTRY * dllTexCoord4iv )(const GLint *v);
static void ( APIENTRY * dllTexCoord4s )(GLshort s, GLshort t, GLshort r, GLshort q);
static void ( APIENTRY * dllTexCoord4sv )(const GLshort *v);
static void ( APIENTRY * dllTexCoordPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
static void ( APIENTRY * dllTexEnvf )(GLenum target, GLenum pname, GLfloat param);
static void ( APIENTRY * dllTexEnvfv )(GLenum target, GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllTexEnvi )(GLenum target, GLenum pname, GLint param);
static void ( APIENTRY * dllTexEnviv )(GLenum target, GLenum pname, const GLint *params);
static void ( APIENTRY * dllTexGend )(GLenum coord, GLenum pname, GLdouble param);
static void ( APIENTRY * dllTexGendv )(GLenum coord, GLenum pname, const GLdouble *params);
static void ( APIENTRY * dllTexGenf )(GLenum coord, GLenum pname, GLfloat param);
static void ( APIENTRY * dllTexGenfv )(GLenum coord, GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllTexGeni )(GLenum coord, GLenum pname, GLint param);
static void ( APIENTRY * dllTexGeniv )(GLenum coord, GLenum pname, const GLint *params);
static void ( APIENTRY * dllTexImage1D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
static void ( APIENTRY * dllTexImage2D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
static void ( APIENTRY * dllTexParameterf )(GLenum target, GLenum pname, GLfloat param);
static void ( APIENTRY * dllTexParameterfv )(GLenum target, GLenum pname, const GLfloat *params);
static void ( APIENTRY * dllTexParameteri )(GLenum target, GLenum pname, GLint param);
static void ( APIENTRY * dllTexParameteriv )(GLenum target, GLenum pname, const GLint *params);
static void ( APIENTRY * dllTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
static void ( APIENTRY * dllTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
static void ( APIENTRY * dllTranslated )(GLdouble x, GLdouble y, GLdouble z);
static void ( APIENTRY * dllTranslatef )(GLfloat x, GLfloat y, GLfloat z);
static void ( APIENTRY * dllVertex2d )(GLdouble x, GLdouble y);
static void ( APIENTRY * dllVertex2dv )(const GLdouble *v);
static void ( APIENTRY * dllVertex2f )(GLfloat x, GLfloat y);
static void ( APIENTRY * dllVertex2fv )(const GLfloat *v);
static void ( APIENTRY * dllVertex2i )(GLint x, GLint y);
static void ( APIENTRY * dllVertex2iv )(const GLint *v);
static void ( APIENTRY * dllVertex2s )(GLshort x, GLshort y);
static void ( APIENTRY * dllVertex2sv )(const GLshort *v);
static void ( APIENTRY * dllVertex3d )(GLdouble x, GLdouble y, GLdouble z);
static void ( APIENTRY * dllVertex3dv )(const GLdouble *v);
static void ( APIENTRY * dllVertex3f )(GLfloat x, GLfloat y, GLfloat z);
static void ( APIENTRY * dllVertex3fv )(const GLfloat *v);
static void ( APIENTRY * dllVertex3i )(GLint x, GLint y, GLint z);
static void ( APIENTRY * dllVertex3iv )(const GLint *v);
static void ( APIENTRY * dllVertex3s )(GLshort x, GLshort y, GLshort z);
static void ( APIENTRY * dllVertex3sv )(const GLshort *v);
static void ( APIENTRY * dllVertex4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
static void ( APIENTRY * dllVertex4dv )(const GLdouble *v);
static void ( APIENTRY * dllVertex4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
static void ( APIENTRY * dllVertex4fv )(const GLfloat *v);
static void ( APIENTRY * dllVertex4i )(GLint x, GLint y, GLint z, GLint w);
static void ( APIENTRY * dllVertex4iv )(const GLint *v);
static void ( APIENTRY * dllVertex4s )(GLshort x, GLshort y, GLshort z, GLshort w);
static void ( APIENTRY * dllVertex4sv )(const GLshort *v);
static void ( APIENTRY * dllVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
static void ( APIENTRY * dllViewport )(GLint x, GLint y, GLsizei width, GLsizei height);
/* EXT_paletted_texture */
static void ( APIENTRY * dllColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data);
/* EXT_compiled_vertex_array */
static void ( APIENTRY * dllLockArraysEXT)(GLint, GLsizei);
static void ( APIENTRY * dllUnlockArraysEXT)();
/* ARB_multitexture */
static void ( APIENTRY * dllActiveTextureARB)(GLenum target);
static void ( APIENTRY * dllClientActiveTextureARB)(GLenum target);
static void ( APIENTRY * dllMultiTexCoord2fARB)(GLenum texture, GLfloat, GLfloat);
static void ( APIENTRY * dllMultiTexCoord2fvARB)(GLenum texture, GLfloat*);
/* NV_vertex_array_range */
static void (APIENTRY* dllVertexArrayRangeNV)(GLsizei length, void* pointer);
static void (APIENTRY* dllFlushVertexArrayRangeNV)();
static void* (APIENTRY* dllAllocateMemoryNV)(GLsizei length, GLfloat, GLfloat, GLfloat);
static void (APIENTRY* dllFreeMemoryNV)(void*);
/* EXT_fog_coord */
static void (APIENTRY* dllFogCoordfEXT)(GLfloat coord);
static void (APIENTRY* dllFogCoordPointerEXT)(GLenum, GLsizei, void*);
/* ARB_texture_compression */
static void (APIENTRY* dllCompressedTexImage3DARB)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void*);
static void (APIENTRY* dllCompressedTexImage2DARB)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void*);
static void (APIENTRY* dllCompressedTexImage1DARB)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLsizei imageSize, const void*);
static void (APIENTRY* dllCompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void*);
static void (APIENTRY* dllCompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void*);
static void (APIENTRY* dllCompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void*);
static void (APIENTRY* dllGetCompressedTexImageARB)(GLenum target, GLint lod, void* img);
/* EXT_vertex_buffer */
static GLboolean (GLAPIENTRY* dllAvailableVertexBufferEXT)();
static GLint (GLAPIENTRY* dllAllocateVertexBufferEXT)(GLsizei size, GLint format, GLboolean preserve);
static void* (GLAPIENTRY* dllLockVertexBufferEXT)(GLint handle, GLsizei size);
static void (GLAPIENTRY* dllUnlockVertexBufferEXT)(GLint handle);
static void (GLAPIENTRY* dllSetVertexBufferEXT)(GLint handle);
static void (GLAPIENTRY* dllOffsetVertexBufferEXT)(GLint handle, GLuint offset);
static void (GLAPIENTRY* dllFillVertexBufferEXT)(GLint handle, GLint first, GLsizei count);
static void (GLAPIENTRY* dllFreeVertexBufferEXT)(GLint handle);
static const char * BooleanToString( GLboolean b )
{
if ( b == GL_FALSE )
return "GL_FALSE";
else if ( b == GL_TRUE )
return "GL_TRUE";
else
return "OUT OF RANGE FOR BOOLEAN";
}
static const char * FuncToString( GLenum f )
{
switch ( f )
{
case GL_ALWAYS:
return "GL_ALWAYS";
case GL_NEVER:
return "GL_NEVER";
case GL_LEQUAL:
return "GL_LEQUAL";
case GL_LESS:
return "GL_LESS";
case GL_EQUAL:
return "GL_EQUAL";
case GL_GREATER:
return "GL_GREATER";
case GL_GEQUAL:
return "GL_GEQUAL";
case GL_NOTEQUAL:
return "GL_NOTEQUAL";
default:
return "!!! UNKNOWN !!!";
}
}
static const char* CoordToString( GLenum coord)
{
if (coord == GL_S)
return "GL_S";
else if (coord == GL_T)
return "GL_T";
else
return "INVALID_COORD";
}
static const char * PrimToString( GLenum mode )
{
static char prim[1024];
if ( mode == GL_TRIANGLES )
strcpy( prim, "GL_TRIANGLES" );
else if ( mode == GL_TRIANGLE_STRIP )
strcpy( prim, "GL_TRIANGLE_STRIP" );
else if ( mode == GL_TRIANGLE_FAN )
strcpy( prim, "GL_TRIANGLE_FAN" );
else if ( mode == GL_QUADS )
strcpy( prim, "GL_QUADS" );
else if ( mode == GL_QUAD_STRIP )
strcpy( prim, "GL_QUAD_STRIP" );
else if ( mode == GL_POLYGON )
strcpy( prim, "GL_POLYGON" );
else if ( mode == GL_POINTS )
strcpy( prim, "GL_POINTS" );
else if ( mode == GL_LINES )
strcpy( prim, "GL_LINES" );
else if ( mode == GL_LINE_STRIP )
strcpy( prim, "GL_LINE_STRIP" );
else if ( mode == GL_LINE_LOOP )
strcpy( prim, "GL_LINE_LOOP" );
else
sprintf( prim, "0x%x", mode );
return prim;
}
static const char * CapToString( GLenum cap )
{
static char buffer[1024];
switch ( cap )
{
case GL_TEXTURE_2D:
return "GL_TEXTURE_2D";
case GL_BLEND:
return "GL_BLEND";
case GL_DEPTH_TEST:
return "GL_DEPTH_TEST";
case GL_CULL_FACE:
return "GL_CULL_FACE";
case GL_CLIP_PLANE0:
return "GL_CLIP_PLANE0";
case GL_COLOR_ARRAY:
return "GL_COLOR_ARRAY";
case GL_TEXTURE_COORD_ARRAY:
return "GL_TEXTURE_COORD_ARRAY";
case GL_VERTEX_ARRAY:
return "GL_VERTEX_ARRAY";
case GL_ALPHA_TEST:
return "GL_ALPHA_TEST";
case GL_STENCIL_TEST:
return "GL_STENCIL_TEST";
case GL_TEXTURE_GEN_S:
return "GL_TEXTURE_GEN_S";
case GL_TEXTURE_GEN_T:
return "GL_TEXTURE_GEN_T";
default:
sprintf( buffer, "0x%x", cap );
}
return buffer;
}
static const char * TypeToString( GLenum t )
{
switch ( t )
{
case GL_BYTE:
return "GL_BYTE";
case GL_UNSIGNED_BYTE:
return "GL_UNSIGNED_BYTE";
case GL_SHORT:
return "GL_SHORT";
case GL_UNSIGNED_SHORT:
return "GL_UNSIGNED_SHORT";
case GL_INT:
return "GL_INT";
case GL_UNSIGNED_INT:
return "GL_UNSIGNED_INT";
case GL_FLOAT:
return "GL_FLOAT";
case GL_DOUBLE:
return "GL_DOUBLE";
default:
return "!!! UNKNOWN !!!";
}
}
//------------------------------------------------------------------------------
// GLU Log Functions
static void APIENTRY loggluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)
{
fprintf(winState.log_fp, "gluOrtho2D( %d, %d, %d, %d )\n", left, right, bottom, top);
fflush(winState.log_fp);
dllgluOrtho2D(left, right, bottom, top);
}
static void APIENTRY loggluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
{
fprintf(winState.log_fp, "gluPerspective( %d, %d, %d, %d )\n", fovy, aspect, zNear, zFar);
fflush(winState.log_fp);
dllgluPerspective(fovy, aspect, zNear, zFar);
}
static void APIENTRY loggluPickMatrix(GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint viewport[4])
{
fprintf(winState.log_fp, "gluPickMatrix(%d, %d, %d, %d, VIEW)\n", x, y, width, height);
fflush(winState.log_fp);
dllgluPickMatrix(x, y, width, height, viewport);
}
static void APIENTRY loggluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz)
{
fprintf(winState.log_fp, "gluLookAt(%d, %d, %d, %d, %d, %d, %d, %d, %d)\n",eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz);
fflush(winState.log_fp);
dllgluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz);
}
static int APIENTRY loggluProject(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz)
{
fprintf(winState.log_fp, "gluProject\n");
fflush(winState.log_fp);
return dllgluProject(objx, objy, objz, modelMatrix, projMatrix, viewport, winx, winy, winz);
}
static int APIENTRY loggluUnProject(GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz)
{
fprintf(winState.log_fp, "gluUnProject\n");
fflush(winState.log_fp);
return dllgluUnProject(winx, winy, winz, modelMatrix, projMatrix, viewport, objx, objy, objz);
}
static int APIENTRY loggluScaleImage(GLenum format, GLint widthin, GLint heightin, GLenum typein, const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout)
{
fprintf(winState.log_fp, "gluScaleImage\n");
fflush(winState.log_fp);
return dllgluScaleImage(format, widthin, heightin, typein, datain, widthout, heightout, typeout, dataout);
}
static int APIENTRY loggluBuild1DMipmaps(GLenum target, GLint components, GLint width, GLenum format, GLenum type, const void *data)
{
fprintf(winState.log_fp, "gluBuild1DMipmaps\n");
fflush(winState.log_fp);
return dllgluBuild1DMipmaps(target, components, width, format, type, data);
}
static int APIENTRY loggluBuild2DMipmaps(GLenum target, GLint components, GLint width, GLint height, GLenum format, GLenum type, const void *data)
{
fprintf(winState.log_fp, "gluBuild2DMipmaps\n");
fflush(winState.log_fp);
return dllgluBuild2DMipmaps(target, components, width, height, format, type, data);
}
//------------------------------------------------------------------------------
// GL LOG Functions
static void APIENTRY logAccum(GLenum op, GLfloat value)
{
fprintf( winState.log_fp, "glAccum\n" );
fflush(winState.log_fp);
dllAccum( op, value );
}
static void APIENTRY logAlphaFunc(GLenum func, GLclampf ref)
{
fprintf( winState.log_fp, "glAlphaFunc( 0x%x, %f )\n", func, ref );
fflush(winState.log_fp);
dllAlphaFunc( func, ref );
}
static GLboolean APIENTRY logAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)
{
fprintf( winState.log_fp, "glAreTexturesResident\n" );
fflush(winState.log_fp);
return dllAreTexturesResident( n, textures, residences );
}
static void APIENTRY logArrayElement(GLint i)
{
fprintf( winState.log_fp, "glArrayElement\n" );
fflush(winState.log_fp);
dllArrayElement( i );
}
static void APIENTRY logBegin(GLenum mode)
{
fprintf( winState.log_fp, "glBegin( %s )\n", PrimToString( mode ));
fflush(winState.log_fp);
dllBegin( mode );
}
static void APIENTRY logBindTexture(GLenum target, GLuint texture)
{
fprintf( winState.log_fp, "glBindTexture( 0x%x, %u )\n", target, texture );
fflush(winState.log_fp);
dllBindTexture( target, texture );
}
static void APIENTRY logBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
{
fprintf( winState.log_fp, "glBitmap\n" );
fflush(winState.log_fp);
dllBitmap( width, height, xorig, yorig, xmove, ymove, bitmap );
}
static void BlendToName( char *n, GLenum f )
{
switch ( f )
{
case GL_ONE:
strcpy( n, "GL_ONE" );
break;
case GL_ZERO:
strcpy( n, "GL_ZERO" );
break;
case GL_SRC_ALPHA:
strcpy( n, "GL_SRC_ALPHA" );
break;
case GL_ONE_MINUS_SRC_ALPHA:
strcpy( n, "GL_ONE_MINUS_SRC_ALPHA" );
break;
case GL_SRC_COLOR:
strcpy( n, "GL_SRC_COLOR" );
break;
case GL_ONE_MINUS_SRC_COLOR:
strcpy( n, "GL_ONE_MINUS_SRC_COLOR" );
break;
case GL_DST_COLOR:
strcpy( n, "GL_DST_COLOR" );
break;
case GL_ONE_MINUS_DST_COLOR:
strcpy( n, "GL_ONE_MINUS_DST_COLOR" );
break;
case GL_DST_ALPHA:
strcpy( n, "GL_DST_ALPHA" );
break;
default:
sprintf( n, "0x%x", f );
}
}
static void APIENTRY logBlendFunc(GLenum sfactor, GLenum dfactor)
{
char sf[128], df[128];
BlendToName( sf, sfactor );
BlendToName( df, dfactor );
fprintf( winState.log_fp, "glBlendFunc( %s, %s )\n", sf, df );
fflush(winState.log_fp);
dllBlendFunc( sfactor, dfactor );
}
static void APIENTRY logCallList(GLuint list)
{
fprintf( winState.log_fp, "glCallList( %u )\n", list );
fflush(winState.log_fp);
dllCallList( list );
}
static void APIENTRY logCallLists(GLsizei n, GLenum type, const void *lists)
{
fprintf( winState.log_fp, "glCallLists\n" );
fflush(winState.log_fp);
dllCallLists( n, type, lists );
}
static void APIENTRY logClear(GLbitfield mask)
{
fprintf( winState.log_fp, "glClear( 0x%x = ", mask );
if ( mask & GL_COLOR_BUFFER_BIT )
fprintf( winState.log_fp, "GL_COLOR_BUFFER_BIT " );
if ( mask & GL_DEPTH_BUFFER_BIT )
fprintf( winState.log_fp, "GL_DEPTH_BUFFER_BIT " );
if ( mask & GL_STENCIL_BUFFER_BIT )
fprintf( winState.log_fp, "GL_STENCIL_BUFFER_BIT " );
if ( mask & GL_ACCUM_BUFFER_BIT )
fprintf( winState.log_fp, "GL_ACCUM_BUFFER_BIT " );
fprintf( winState.log_fp, ")\n" );
fflush(winState.log_fp);
dllClear( mask );
}
static void APIENTRY logClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
fprintf( winState.log_fp, "glClearAccum\n" );
fflush(winState.log_fp);
dllClearAccum( red, green, blue, alpha );
}
static void APIENTRY logClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
fprintf( winState.log_fp, "glClearColor\n" );
fflush(winState.log_fp);
dllClearColor( red, green, blue, alpha );
}
static void APIENTRY logClearDepth(GLclampd depth)
{
fprintf( winState.log_fp, "glClearDepth( %f )\n", ( F32 ) depth );
fflush(winState.log_fp);
dllClearDepth( depth );
}
static void APIENTRY logClearIndex(GLfloat c)
{
fprintf( winState.log_fp, "glClearIndex\n" );
fflush(winState.log_fp);
dllClearIndex( c );
}
static void APIENTRY logClearStencil(GLint s)
{
fprintf( winState.log_fp, "glClearStencil( %d )\n", s );
fflush(winState.log_fp);
dllClearStencil( s );
}
static void APIENTRY logClipPlane(GLenum plane, const GLdouble *equation)
{
fprintf( winState.log_fp, "glClipPlane\n" );
fflush(winState.log_fp);
dllClipPlane( plane, equation );
}
static void APIENTRY logColor3b(GLbyte red, GLbyte green, GLbyte blue)
{
fprintf( winState.log_fp, "glColor3b\n" );
fflush(winState.log_fp);
dllColor3b( red, green, blue );
}
static void APIENTRY logColor3bv(const GLbyte *v)
{
fprintf( winState.log_fp, "glColor3bv\n" );
fflush(winState.log_fp);
dllColor3bv( v );
}
static void APIENTRY logColor3d(GLdouble red, GLdouble green, GLdouble blue)
{
fprintf( winState.log_fp, "glColor3d\n" );
fflush(winState.log_fp);
dllColor3d( red, green, blue );
}
static void APIENTRY logColor3dv(const GLdouble *v)
{
fprintf( winState.log_fp, "glColor3dv\n" );
fflush(winState.log_fp);
dllColor3dv( v );
}
static void APIENTRY logColor3f(GLfloat red, GLfloat green, GLfloat blue)
{
fprintf( winState.log_fp, "glColor3f\n" );
fflush(winState.log_fp);
dllColor3f( red, green, blue );
}
static void APIENTRY logColor3fv(const GLfloat *v)
{
fprintf( winState.log_fp, "glColor3fv\n" );
fflush(winState.log_fp);
dllColor3fv( v );
}
static void APIENTRY logColor3i(GLint red, GLint green, GLint blue)
{
fprintf( winState.log_fp, "glColor3i\n" );
fflush(winState.log_fp);
dllColor3i( red, green, blue );
}
static void APIENTRY logColor3iv(const GLint *v)
{
fprintf( winState.log_fp, "glColor3iv\n" );
fflush(winState.log_fp);
dllColor3iv( v );
}
static void APIENTRY logColor3s(GLshort red, GLshort green, GLshort blue)
{
fprintf( winState.log_fp, "glColor3s\n" );
fflush(winState.log_fp);
dllColor3s( red, green, blue );
}
static void APIENTRY logColor3sv(const GLshort *v)
{
fprintf( winState.log_fp, "glColor3sv\n" );
fflush(winState.log_fp);
dllColor3sv( v );
}
static void APIENTRY logColor3ub(GLubyte red, GLubyte green, GLubyte blue)
{
fprintf( winState.log_fp, "glColor3ub\n" );
fflush(winState.log_fp);
dllColor3ub( red, green, blue );
}
static void APIENTRY logColor3ubv(const GLubyte *v)
{
fprintf( winState.log_fp, "glColor3ubv\n" );
fflush(winState.log_fp);
dllColor3ubv( v );
}
#define SIG( x ) fprintf( winState.log_fp, x "\n" ); fflush(winState.log_fp)
static void APIENTRY logColor3ui(GLuint red, GLuint green, GLuint blue)
{
SIG( "glColor3ui" );
dllColor3ui( red, green, blue );
}
static void APIENTRY logColor3uiv(const GLuint *v)
{
SIG( "glColor3uiv" );
dllColor3uiv( v );
}
static void APIENTRY logColor3us(GLushort red, GLushort green, GLushort blue)
{
SIG( "glColor3us" );
dllColor3us( red, green, blue );
}
static void APIENTRY logColor3usv(const GLushort *v)
{
SIG( "glColor3usv" );
dllColor3usv( v );
}
static void APIENTRY logColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
{
SIG( "glColor4b" );
dllColor4b( red, green, blue, alpha );
}
static void APIENTRY logColor4bv(const GLbyte *v)
{
SIG( "glColor4bv" );
dllColor4bv( v );
}
static void APIENTRY logColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
{
SIG( "glColor4d" );
dllColor4d( red, green, blue, alpha );
}
static void APIENTRY logColor4dv(const GLdouble *v)
{
SIG( "glColor4dv" );
dllColor4dv( v );
}
static void APIENTRY logColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
fprintf( winState.log_fp, "glColor4f( %f,%f,%f,%f )\n", red, green, blue, alpha );
fflush(winState.log_fp);
dllColor4f( red, green, blue, alpha );
}
static void APIENTRY logColor4fv(const GLfloat *v)
{
fprintf( winState.log_fp, "glColor4fv( %f,%f,%f,%f )\n", v[0], v[1], v[2], v[3] );
fflush(winState.log_fp);
dllColor4fv( v );
}
static void APIENTRY logColor4i(GLint red, GLint green, GLint blue, GLint alpha)
{
SIG( "glColor4i" );
dllColor4i( red, green, blue, alpha );
}
static void APIENTRY logColor4iv(const GLint *v)
{
SIG( "glColor4iv" );
dllColor4iv( v );
}
static void APIENTRY logColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)
{
SIG( "glColor4s" );
dllColor4s( red, green, blue, alpha );
}
static void APIENTRY logColor4sv(const GLshort *v)
{
SIG( "glColor4sv" );
dllColor4sv( v );
}
static void APIENTRY logColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
{
SIG( "glColor4ub" );
dllColor4b( red, green, blue, alpha );
}
static void APIENTRY logColor4ubv(const GLubyte *v)
{
SIG( "glColor4ubv" );
dllColor4ubv( v );
}
static void APIENTRY logColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)
{
SIG( "glColor4ui" );
dllColor4ui( red, green, blue, alpha );
}
static void APIENTRY logColor4uiv(const GLuint *v)
{
SIG( "glColor4uiv" );
dllColor4uiv( v );
}
static void APIENTRY logColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)
{
SIG( "glColor4us" );
dllColor4us( red, green, blue, alpha );
}
static void APIENTRY logColor4usv(const GLushort *v)
{
SIG( "glColor4usv" );
dllColor4usv( v );
}
static void APIENTRY logColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
SIG( "glColorMask" );
dllColorMask( red, green, blue, alpha );
}
static void APIENTRY logColorMaterial(GLenum face, GLenum mode)
{
SIG( "glColorMaterial" );
dllColorMaterial( face, mode );
}
static void APIENTRY logColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
{
fprintf( winState.log_fp, "glColorPointer( %d, %s, %d, MEM )\n", size, TypeToString( type ), stride );
fflush(winState.log_fp);
dllColorPointer( size, type, stride, pointer );
}
static void APIENTRY logCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
{
SIG( "glCopyPixels" );
dllCopyPixels( x, y, width, height, type );
}
static void APIENTRY logCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border)
{
SIG( "glCopyTexImage1D" );
dllCopyTexImage1D( target, level, internalFormat, x, y, width, border );
}
static void APIENTRY logCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
SIG( "glCopyTexImage2D" );
dllCopyTexImage2D( target, level, internalFormat, x, y, width, height, border );
}
static void APIENTRY logCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
SIG( "glCopyTexSubImage1D" );
dllCopyTexSubImage1D( target, level, xoffset, x, y, width );
}
static void APIENTRY logCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
SIG( "glCopyTexSubImage2D" );
dllCopyTexSubImage2D( target, level, xoffset, yoffset, x, y, width, height );
}
static void APIENTRY logCullFace(GLenum mode)
{
fprintf( winState.log_fp, "glCullFace( %s )\n", ( mode == GL_FRONT ) ? "GL_FRONT" : "GL_BACK" );
fflush(winState.log_fp);
dllCullFace( mode );
}
static void APIENTRY logDeleteLists(GLuint list, GLsizei range)
{
SIG( "glDeleteLists" );
dllDeleteLists( list, range );
}
static void APIENTRY logDeleteTextures(GLsizei n, const GLuint *textures)
{
SIG( "glDeleteTextures" );
dllDeleteTextures( n, textures );
}
static void APIENTRY logDepthFunc(GLenum func)
{
fprintf( winState.log_fp, "glDepthFunc( %s )\n", FuncToString( func ) );
fflush(winState.log_fp);
dllDepthFunc( func );
}
static void APIENTRY logDepthMask(GLboolean flag)
{
fprintf( winState.log_fp, "glDepthMask( %s )\n", BooleanToString( flag ) );
fflush(winState.log_fp);
dllDepthMask( flag );
}
static void APIENTRY logDepthRange(GLclampd zNear, GLclampd zFar)
{
fprintf( winState.log_fp, "glDepthRange( %f, %f )\n", ( F32 ) zNear, ( F32 ) zFar );
fflush(winState.log_fp);
dllDepthRange( zNear, zFar );
}
static void APIENTRY logDisable(GLenum cap)
{
fprintf( winState.log_fp, "glDisable( %s )\n", CapToString( cap ) );
fflush(winState.log_fp);
dllDisable( cap );
}
static void APIENTRY logDisableClientState(GLenum array)
{
fprintf( winState.log_fp, "glDisableClientState( %s )\n", CapToString( array ) );
fflush(winState.log_fp);
dllDisableClientState( array );
}
static void APIENTRY logDrawArrays(GLenum mode, GLint first, GLsizei count)
{
SIG( "glDrawArrays" );
dllDrawArrays( mode, first, count );
}
static void APIENTRY logDrawBuffer(GLenum mode)
{
SIG( "glDrawBuffer" );
dllDrawBuffer( mode );
}
static void APIENTRY logDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)
{
fprintf( winState.log_fp, "glDrawElements( %s, %d, %s, MEM )\n", PrimToString( mode ), count, TypeToString( type ) );
fflush(winState.log_fp);
dllDrawElements( mode, count, type, indices );
}
static void APIENTRY logDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
{
SIG( "glDrawPixels" );
dllDrawPixels( width, height, format, type, pixels );
}
static void APIENTRY logEdgeFlag(GLboolean flag)
{
SIG( "glEdgeFlag" );
dllEdgeFlag( flag );
}
static void APIENTRY logEdgeFlagPointer(GLsizei stride, const void *pointer)
{
SIG( "glEdgeFlagPointer" );
dllEdgeFlagPointer( stride, pointer );
}
static void APIENTRY logEdgeFlagv(const GLboolean *flag)
{
SIG( "glEdgeFlagv" );
dllEdgeFlagv( flag );
}
static void APIENTRY logEnable(GLenum cap)
{
fprintf( winState.log_fp, "glEnable( %s )\n", CapToString( cap ) );
fflush(winState.log_fp);
dllEnable( cap );
}
static void APIENTRY logEnableClientState(GLenum array)
{
fprintf( winState.log_fp, "glEnableClientState( %s )\n", CapToString( array ) );
fflush(winState.log_fp);
dllEnableClientState( array );
}
static void APIENTRY logEnd(void)
{
SIG( "glEnd" );
dllEnd();
}
static void APIENTRY logEndList(void)
{
SIG( "glEndList" );
dllEndList();
}
static void APIENTRY logEvalCoord1d(GLdouble u)
{
SIG( "glEvalCoord1d" );
dllEvalCoord1d( u );
}
static void APIENTRY logEvalCoord1dv(const GLdouble *u)
{
SIG( "glEvalCoord1dv" );
dllEvalCoord1dv( u );
}
static void APIENTRY logEvalCoord1f(GLfloat u)
{
SIG( "glEvalCoord1f" );
dllEvalCoord1f( u );
}
static void APIENTRY logEvalCoord1fv(const GLfloat *u)
{
SIG( "glEvalCoord1fv" );
dllEvalCoord1fv( u );
}
static void APIENTRY logEvalCoord2d(GLdouble u, GLdouble v)
{
SIG( "glEvalCoord2d" );
dllEvalCoord2d( u, v );
}
static void APIENTRY logEvalCoord2dv(const GLdouble *u)
{
SIG( "glEvalCoord2dv" );
dllEvalCoord2dv( u );
}
static void APIENTRY logEvalCoord2f(GLfloat u, GLfloat v)
{
SIG( "glEvalCoord2f" );
dllEvalCoord2f( u, v );
}
static void APIENTRY logEvalCoord2fv(const GLfloat *u)
{
SIG( "glEvalCoord2fv" );
dllEvalCoord2fv( u );
}
static void APIENTRY logEvalMesh1(GLenum mode, GLint i1, GLint i2)
{
SIG( "glEvalMesh1" );
dllEvalMesh1( mode, i1, i2 );
}
static void APIENTRY logEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
{
SIG( "glEvalMesh2" );
dllEvalMesh2( mode, i1, i2, j1, j2 );
}
static void APIENTRY logEvalPoint1(GLint i)
{
SIG( "glEvalPoint1" );
dllEvalPoint1( i );
}
static void APIENTRY logEvalPoint2(GLint i, GLint j)
{
SIG( "glEvalPoint2" );
dllEvalPoint2( i, j );
}
static void APIENTRY logFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)
{
SIG( "glFeedbackBuffer" );
dllFeedbackBuffer( size, type, buffer );
}
static void APIENTRY logFinish(void)
{
SIG( "glFinish" );
dllFinish();
}
static void APIENTRY logFlush(void)
{
SIG( "glFlush" );
dllFlush();
}
static void APIENTRY logFogf(GLenum pname, GLfloat param)
{
SIG( "glFogf" );
dllFogf( pname, param );
}
static void APIENTRY logFogfv(GLenum pname, const GLfloat *params)
{
SIG( "glFogfv" );
dllFogfv( pname, params );
}
static void APIENTRY logFogi(GLenum pname, GLint param)
{
SIG( "glFogi" );
dllFogi( pname, param );
}
static void APIENTRY logFogiv(GLenum pname, const GLint *params)
{
SIG( "glFogiv" );
dllFogiv( pname, params );
}
static void APIENTRY logFrontFace(GLenum mode)
{
SIG( "glFrontFace" );
dllFrontFace( mode );
}
static void APIENTRY logFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
SIG( "glFrustum" );
dllFrustum( left, right, bottom, top, zNear, zFar );
}
static GLuint APIENTRY logGenLists(GLsizei range)
{
SIG( "glGenLists" );
return dllGenLists( range );
}
static void APIENTRY logGenTextures(GLsizei n, GLuint *textures)
{
SIG( "glGenTextures" );
dllGenTextures( n, textures );
}
static void APIENTRY logGetBooleanv(GLenum pname, GLboolean *params)
{
SIG( "glGetBooleanv" );
dllGetBooleanv( pname, params );
}
static void APIENTRY logGetClipPlane(GLenum plane, GLdouble *equation)
{
SIG( "glGetClipPlane" );
dllGetClipPlane( plane, equation );
}
static void APIENTRY logGetDoublev(GLenum pname, GLdouble *params)
{
SIG( "glGetDoublev" );
dllGetDoublev( pname, params );
}
static GLenum APIENTRY logGetError(void)
{
SIG( "glGetError" );
return dllGetError();
}
static void APIENTRY logGetFloatv(GLenum pname, GLfloat *params)
{
SIG( "glGetFloatv" );
dllGetFloatv( pname, params );
}
static void APIENTRY logGetIntegerv(GLenum pname, GLint *params)
{
SIG( "glGetIntegerv" );
dllGetIntegerv( pname, params );
}
static void APIENTRY logGetLightfv(GLenum light, GLenum pname, GLfloat *params)
{
SIG( "glGetLightfv" );
dllGetLightfv( light, pname, params );
}
static void APIENTRY logGetLightiv(GLenum light, GLenum pname, GLint *params)
{
SIG( "glGetLightiv" );
dllGetLightiv( light, pname, params );
}
static void APIENTRY logGetMapdv(GLenum target, GLenum query, GLdouble *v)
{
SIG( "glGetMapdv" );
dllGetMapdv( target, query, v );
}
static void APIENTRY logGetMapfv(GLenum target, GLenum query, GLfloat *v)
{
SIG( "glGetMapfv" );
dllGetMapfv( target, query, v );
}
static void APIENTRY logGetMapiv(GLenum target, GLenum query, GLint *v)
{
SIG( "glGetMapiv" );
dllGetMapiv( target, query, v );
}
static void APIENTRY logGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)
{
SIG( "glGetMaterialfv" );
dllGetMaterialfv( face, pname, params );
}
static void APIENTRY logGetMaterialiv(GLenum face, GLenum pname, GLint *params)
{
SIG( "glGetMaterialiv" );
dllGetMaterialiv( face, pname, params );
}
static void APIENTRY logGetPixelMapfv(GLenum map, GLfloat *values)
{
SIG( "glGetPixelMapfv" );
dllGetPixelMapfv( map, values );
}
static void APIENTRY logGetPixelMapuiv(GLenum map, GLuint *values)
{
SIG( "glGetPixelMapuiv" );
dllGetPixelMapuiv( map, values );
}
static void APIENTRY logGetPixelMapusv(GLenum map, GLushort *values)
{
SIG( "glGetPixelMapusv" );
dllGetPixelMapusv( map, values );
}
static void APIENTRY logGetPointerv(GLenum pname, GLvoid* *params)
{
SIG( "glGetPointerv" );
dllGetPointerv( pname, params );
}
static void APIENTRY logGetPolygonStipple(GLubyte *mask)
{
SIG( "glGetPolygonStipple" );
dllGetPolygonStipple( mask );
}
static const GLubyte * APIENTRY logGetString(GLenum name)
{
SIG( "glGetString" );
return dllGetString( name );
}
static void APIENTRY logGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)
{
SIG( "glGetTexEnvfv" );
dllGetTexEnvfv( target, pname, params );
}
static void APIENTRY logGetTexEnviv(GLenum target, GLenum pname, GLint *params)
{
SIG( "glGetTexEnviv" );
dllGetTexEnviv( target, pname, params );
}
static void APIENTRY logGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)
{
SIG( "glGetTexGendv" );
dllGetTexGendv( coord, pname, params );
}
static void APIENTRY logGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
{
SIG( "glGetTexGenfv" );
dllGetTexGenfv( coord, pname, params );
}
static void APIENTRY logGetTexGeniv(GLenum coord, GLenum pname, GLint *params)
{
SIG( "glGetTexGeniv" );
dllGetTexGeniv( coord, pname, params );
}
static void APIENTRY logGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
{
SIG( "glGetTexImage" );
dllGetTexImage( target, level, format, type, pixels );
}
static void APIENTRY logGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params )
{
SIG( "glGetTexLevelParameterfv" );
dllGetTexLevelParameterfv( target, level, pname, params );
}
static void APIENTRY logGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
{
SIG( "glGetTexLevelParameteriv" );
dllGetTexLevelParameteriv( target, level, pname, params );
}
static void APIENTRY logGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
SIG( "glGetTexParameterfv" );
dllGetTexParameterfv( target, pname, params );
}
static void APIENTRY logGetTexParameteriv(GLenum target, GLenum pname, GLint *params)
{
SIG( "glGetTexParameteriv" );
dllGetTexParameteriv( target, pname, params );
}
static void APIENTRY logHint(GLenum target, GLenum mode)
{
fprintf( winState.log_fp, "glHint( 0x%x, 0x%x )\n", target, mode );
fflush(winState.log_fp);
dllHint( target, mode );
}
static void APIENTRY logIndexMask(GLuint mask)
{
SIG( "glIndexMask" );
dllIndexMask( mask );
}
static void APIENTRY logIndexPointer(GLenum type, GLsizei stride, const void *pointer)
{
SIG( "glIndexPointer" );
dllIndexPointer( type, stride, pointer );
}
static void APIENTRY logIndexd(GLdouble c)
{
SIG( "glIndexd" );
dllIndexd( c );
}
static void APIENTRY logIndexdv(const GLdouble *c)
{
SIG( "glIndexdv" );
dllIndexdv( c );
}
static void APIENTRY logIndexf(GLfloat c)
{
SIG( "glIndexf" );
dllIndexf( c );
}
static void APIENTRY logIndexfv(const GLfloat *c)
{
SIG( "glIndexfv" );
dllIndexfv( c );
}
static void APIENTRY logIndexi(GLint c)
{
SIG( "glIndexi" );
dllIndexi( c );
}
static void APIENTRY logIndexiv(const GLint *c)
{
SIG( "glIndexiv" );
dllIndexiv( c );
}
static void APIENTRY logIndexs(GLshort c)
{
SIG( "glIndexs" );
dllIndexs( c );
}
static void APIENTRY logIndexsv(const GLshort *c)
{
SIG( "glIndexsv" );
dllIndexsv( c );
}
static void APIENTRY logIndexub(GLubyte c)
{
SIG( "glIndexub" );
dllIndexub( c );
}
static void APIENTRY logIndexubv(const GLubyte *c)
{
SIG( "glIndexubv" );
dllIndexubv( c );
}
static void APIENTRY logInitNames(void)
{
SIG( "glInitNames" );
dllInitNames();
}
static void APIENTRY logInterleavedArrays(GLenum format, GLsizei stride, const void *pointer)
{
SIG( "glInterleavedArrays" );
dllInterleavedArrays( format, stride, pointer );
}
static GLboolean APIENTRY logIsEnabled(GLenum cap)
{
SIG( "glIsEnabled" );
return dllIsEnabled( cap );
}
static GLboolean APIENTRY logIsList(GLuint list)
{
SIG( "glIsList" );
return dllIsList( list );
}
static GLboolean APIENTRY logIsTexture(GLuint texture)
{
SIG( "glIsTexture" );
return dllIsTexture( texture );
}
static void APIENTRY logLightModelf(GLenum pname, GLfloat param)
{
SIG( "glLightModelf" );
dllLightModelf( pname, param );
}
static void APIENTRY logLightModelfv(GLenum pname, const GLfloat *params)
{
SIG( "glLightModelfv" );
dllLightModelfv( pname, params );
}
static void APIENTRY logLightModeli(GLenum pname, GLint param)
{
SIG( "glLightModeli" );
dllLightModeli( pname, param );
}
static void APIENTRY logLightModeliv(GLenum pname, const GLint *params)
{
SIG( "glLightModeliv" );
dllLightModeliv( pname, params );
}
static void APIENTRY logLightf(GLenum light, GLenum pname, GLfloat param)
{
SIG( "glLightf" );
dllLightf( light, pname, param );
}
static void APIENTRY logLightfv(GLenum light, GLenum pname, const GLfloat *params)
{
SIG( "glLightfv" );
dllLightfv( light, pname, params );
}
static void APIENTRY logLighti(GLenum light, GLenum pname, GLint param)
{
SIG( "glLighti" );
dllLighti( light, pname, param );
}
static void APIENTRY logLightiv(GLenum light, GLenum pname, const GLint *params)
{
SIG( "glLightiv" );
dllLightiv( light, pname, params );
}
static void APIENTRY logLineStipple(GLint factor, GLushort pattern)
{
SIG( "glLineStipple" );
dllLineStipple( factor, pattern );
}
static void APIENTRY logLineWidth(GLfloat width)
{
SIG( "glLineWidth" );
dllLineWidth( width );
}
static void APIENTRY logListBase(GLuint base)
{
SIG( "glListBase" );
dllListBase( base );
}
static void APIENTRY logLoadIdentity(void)
{
SIG( "glLoadIdentity" );
dllLoadIdentity();
}
static void APIENTRY logLoadMatrixd(const GLdouble *m)
{
SIG( "glLoadMatrixd" );
dllLoadMatrixd( m );
}
static void APIENTRY logLoadMatrixf(const GLfloat *m)
{
SIG( "glLoadMatrixf" );
dllLoadMatrixf( m );
}
static void APIENTRY logLoadName(GLuint name)
{
SIG( "glLoadName" );
dllLoadName( name );
}
static void APIENTRY logLogicOp(GLenum opcode)
{
SIG( "glLogicOp" );
dllLogicOp( opcode );
}
static void APIENTRY logMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)
{
SIG( "glMap1d" );
dllMap1d( target, u1, u2, stride, order, points );
}
static void APIENTRY logMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)
{
SIG( "glMap1f" );
dllMap1f( target, u1, u2, stride, order, points );
}
static void APIENTRY logMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)
{
SIG( "glMap2d" );
dllMap2d( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points );
}
static void APIENTRY logMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)
{
SIG( "glMap2f" );
dllMap2f( target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points );
}
static void APIENTRY logMapGrid1d(GLint un, GLdouble u1, GLdouble u2)
{
SIG( "glMapGrid1d" );
dllMapGrid1d( un, u1, u2 );
}
static void APIENTRY logMapGrid1f(GLint un, GLfloat u1, GLfloat u2)
{
SIG( "glMapGrid1f" );
dllMapGrid1f( un, u1, u2 );
}
static void APIENTRY logMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
{
SIG( "glMapGrid2d" );
dllMapGrid2d( un, u1, u2, vn, v1, v2 );
}
static void APIENTRY logMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
{
SIG( "glMapGrid2f" );
dllMapGrid2f( un, u1, u2, vn, v1, v2 );
}
static void APIENTRY logMaterialf(GLenum face, GLenum pname, GLfloat param)
{
SIG( "glMaterialf" );
dllMaterialf( face, pname, param );
}
static void APIENTRY logMaterialfv(GLenum face, GLenum pname, const GLfloat *params)
{
SIG( "glMaterialfv" );
dllMaterialfv( face, pname, params );
}
static void APIENTRY logMateriali(GLenum face, GLenum pname, GLint param)
{
SIG( "glMateriali" );
dllMateriali( face, pname, param );
}
static void APIENTRY logMaterialiv(GLenum face, GLenum pname, const GLint *params)
{
SIG( "glMaterialiv" );
dllMaterialiv( face, pname, params );
}
static void APIENTRY logMatrixMode(GLenum mode)
{
SIG( "glMatrixMode" );
dllMatrixMode( mode );
}
static void APIENTRY logMultMatrixd(const GLdouble *m)
{
SIG( "glMultMatrixd" );
dllMultMatrixd( m );
}
static void APIENTRY logMultMatrixf(const GLfloat *m)
{
SIG( "glMultMatrixf" );
dllMultMatrixf( m );
}
static void APIENTRY logNewList(GLuint list, GLenum mode)
{
SIG( "glNewList" );
dllNewList( list, mode );
}
static void APIENTRY logNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)
{
SIG ("glNormal3b" );
dllNormal3b( nx, ny, nz );
}
static void APIENTRY logNormal3bv(const GLbyte *v)
{
SIG( "glNormal3bv" );
dllNormal3bv( v );
}
static void APIENTRY logNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)
{
SIG( "glNormal3d" );
dllNormal3d( nx, ny, nz );
}
static void APIENTRY logNormal3dv(const GLdouble *v)
{
SIG( "glNormal3dv" );
dllNormal3dv( v );
}
static void APIENTRY logNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)
{
SIG( "glNormal3f" );
dllNormal3f( nx, ny, nz );
}
static void APIENTRY logNormal3fv(const GLfloat *v)
{
SIG( "glNormal3fv" );
dllNormal3fv( v );
}
static void APIENTRY logNormal3i(GLint nx, GLint ny, GLint nz)
{
SIG( "glNormal3i" );
dllNormal3i( nx, ny, nz );
}
static void APIENTRY logNormal3iv(const GLint *v)
{
SIG( "glNormal3iv" );
dllNormal3iv( v );
}
static void APIENTRY logNormal3s(GLshort nx, GLshort ny, GLshort nz)
{
SIG( "glNormal3s" );
dllNormal3s( nx, ny, nz );
}
static void APIENTRY logNormal3sv(const GLshort *v)
{
SIG( "glNormal3sv" );
dllNormal3sv( v );
}
static void APIENTRY logNormalPointer(GLenum type, GLsizei stride, const void *pointer)
{
SIG( "glNormalPointer" );
dllNormalPointer( type, stride, pointer );
}
static void APIENTRY logOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
SIG( "glOrtho" );
dllOrtho( left, right, bottom, top, zNear, zFar );
}
static void APIENTRY logPassThrough(GLfloat token)
{
SIG( "glPassThrough" );
dllPassThrough( token );
}
static void APIENTRY logPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)
{
SIG( "glPixelMapfv" );
dllPixelMapfv( map, mapsize, values );
}
static void APIENTRY logPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)
{
SIG( "glPixelMapuiv" );
dllPixelMapuiv( map, mapsize, values );
}
static void APIENTRY logPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)
{
SIG( "glPixelMapusv" );
dllPixelMapusv( map, mapsize, values );
}
static void APIENTRY logPixelStoref(GLenum pname, GLfloat param)
{
SIG( "glPixelStoref" );
dllPixelStoref( pname, param );
}
static void APIENTRY logPixelStorei(GLenum pname, GLint param)
{
SIG( "glPixelStorei" );
dllPixelStorei( pname, param );
}
static void APIENTRY logPixelTransferf(GLenum pname, GLfloat param)
{
SIG( "glPixelTransferf" );
dllPixelTransferf( pname, param );
}
static void APIENTRY logPixelTransferi(GLenum pname, GLint param)
{
SIG( "glPixelTransferi" );
dllPixelTransferi( pname, param );
}
static void APIENTRY logPixelZoom(GLfloat xfactor, GLfloat yfactor)
{
SIG( "glPixelZoom" );
dllPixelZoom( xfactor, yfactor );
}
static void APIENTRY logPointSize(GLfloat size)
{
SIG( "glPointSize" );
dllPointSize( size );
}
static void APIENTRY logPolygonMode(GLenum face, GLenum mode)
{
fprintf( winState.log_fp, "glPolygonMode( 0x%x, 0x%x )\n", face, mode );
fflush(winState.log_fp);
dllPolygonMode( face, mode );
}
static void APIENTRY logPolygonOffset(GLfloat factor, GLfloat units)
{
SIG( "glPolygonOffset" );
dllPolygonOffset( factor, units );
}
static void APIENTRY logPolygonStipple(const GLubyte *mask )
{
SIG( "glPolygonStipple" );
dllPolygonStipple( mask );
}
static void APIENTRY logPopAttrib(void)
{
SIG( "glPopAttrib" );
dllPopAttrib();
}
static void APIENTRY logPopClientAttrib(void)
{
SIG( "glPopClientAttrib" );
dllPopClientAttrib();
}
static void APIENTRY logPopMatrix(void)
{
SIG( "glPopMatrix" );
dllPopMatrix();
}
static void APIENTRY logPopName(void)
{
SIG( "glPopName" );
dllPopName();
}
static void APIENTRY logPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)
{
SIG( "glPrioritizeTextures" );
dllPrioritizeTextures( n, textures, priorities );
}
static void APIENTRY logPushAttrib(GLbitfield mask)
{
SIG( "glPushAttrib" );
dllPushAttrib( mask );
}
static void APIENTRY logPushClientAttrib(GLbitfield mask)
{
SIG( "glPushClientAttrib" );
dllPushClientAttrib( mask );
}
static void APIENTRY logPushMatrix(void)
{
SIG( "glPushMatrix" );
dllPushMatrix();
}
static void APIENTRY logPushName(GLuint name)
{
SIG( "glPushName" );
dllPushName( name );
}
static void APIENTRY logRasterPos2d(GLdouble x, GLdouble y)
{
SIG ("glRasterPot2d" );
dllRasterPos2d( x, y );
}
static void APIENTRY logRasterPos2dv(const GLdouble *v)
{
SIG( "glRasterPos2dv" );
dllRasterPos2dv( v );
}
static void APIENTRY logRasterPos2f(GLfloat x, GLfloat y)
{
SIG( "glRasterPos2f" );
dllRasterPos2f( x, y );
}
static void APIENTRY logRasterPos2fv(const GLfloat *v)
{
SIG( "glRasterPos2dv" );
dllRasterPos2fv( v );
}
static void APIENTRY logRasterPos2i(GLint x, GLint y)
{
SIG( "glRasterPos2if" );
dllRasterPos2i( x, y );
}
static void APIENTRY logRasterPos2iv(const GLint *v)
{
SIG( "glRasterPos2iv" );
dllRasterPos2iv( v );
}
static void APIENTRY logRasterPos2s(GLshort x, GLshort y)
{
SIG( "glRasterPos2s" );
dllRasterPos2s( x, y );
}
static void APIENTRY logRasterPos2sv(const GLshort *v)
{
SIG( "glRasterPos2sv" );
dllRasterPos2sv( v );
}
static void APIENTRY logRasterPos3d(GLdouble x, GLdouble y, GLdouble z)
{
SIG( "glRasterPos3d" );
dllRasterPos3d( x, y, z );
}
static void APIENTRY logRasterPos3dv(const GLdouble *v)
{
SIG( "glRasterPos3dv" );
dllRasterPos3dv( v );
}
static void APIENTRY logRasterPos3f(GLfloat x, GLfloat y, GLfloat z)
{
SIG( "glRasterPos3f" );
dllRasterPos3f( x, y, z );
}
static void APIENTRY logRasterPos3fv(const GLfloat *v)
{
SIG( "glRasterPos3fv" );
dllRasterPos3fv( v );
}
static void APIENTRY logRasterPos3i(GLint x, GLint y, GLint z)
{
SIG( "glRasterPos3i" );
dllRasterPos3i( x, y, z );
}
static void APIENTRY logRasterPos3iv(const GLint *v)
{
SIG( "glRasterPos3iv" );
dllRasterPos3iv( v );
}
static void APIENTRY logRasterPos3s(GLshort x, GLshort y, GLshort z)
{
SIG( "glRasterPos3s" );
dllRasterPos3s( x, y, z );
}
static void APIENTRY logRasterPos3sv(const GLshort *v)
{
SIG( "glRasterPos3sv" );
dllRasterPos3sv( v );
}
static void APIENTRY logRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
SIG( "glRasterPos4d" );
dllRasterPos4d( x, y, z, w );
}
static void APIENTRY logRasterPos4dv(const GLdouble *v)
{
SIG( "glRasterPos4dv" );
dllRasterPos4dv( v );
}
static void APIENTRY logRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
SIG( "glRasterPos4f" );
dllRasterPos4f( x, y, z, w );
}
static void APIENTRY logRasterPos4fv(const GLfloat *v)
{
SIG( "glRasterPos4fv" );
dllRasterPos4fv( v );
}
static void APIENTRY logRasterPos4i(GLint x, GLint y, GLint z, GLint w)
{
SIG( "glRasterPos4i" );
dllRasterPos4i( x, y, z, w );
}
static void APIENTRY logRasterPos4iv(const GLint *v)
{
SIG( "glRasterPos4iv" );
dllRasterPos4iv( v );
}
static void APIENTRY logRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)
{
SIG( "glRasterPos4s" );
dllRasterPos4s( x, y, z, w );
}
static void APIENTRY logRasterPos4sv(const GLshort *v)
{
SIG( "glRasterPos4sv" );
dllRasterPos4sv( v );
}
static void APIENTRY logReadBuffer(GLenum mode)
{
SIG( "glReadBuffer" );
dllReadBuffer( mode );
}
static void APIENTRY logReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)
{
SIG( "glReadPixels" );
dllReadPixels( x, y, width, height, format, type, pixels );
}
static void APIENTRY logRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
{
SIG( "glRectd" );
dllRectd( x1, y1, x2, y2 );
}
static void APIENTRY logRectdv(const GLdouble *v1, const GLdouble *v2)
{
SIG( "glRectdv" );
dllRectdv( v1, v2 );
}
static void APIENTRY logRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
{
SIG( "glRectf" );
dllRectf( x1, y1, x2, y2 );
}
static void APIENTRY logRectfv(const GLfloat *v1, const GLfloat *v2)
{
SIG( "glRectfv" );
dllRectfv( v1, v2 );
}
static void APIENTRY logRecti(GLint x1, GLint y1, GLint x2, GLint y2)
{
SIG( "glRecti" );
dllRecti( x1, y1, x2, y2 );
}
static void APIENTRY logRectiv(const GLint *v1, const GLint *v2)
{
SIG( "glRectiv" );
dllRectiv( v1, v2 );
}
static void APIENTRY logRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
{
SIG( "glRects" );
dllRects( x1, y1, x2, y2 );
}
static void APIENTRY logRectsv(const GLshort *v1, const GLshort *v2)
{
SIG( "glRectsv" );
dllRectsv( v1, v2 );
}
static GLint APIENTRY logRenderMode(GLenum mode)
{
SIG( "glRenderMode" );
return dllRenderMode( mode );
}
static void APIENTRY logRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
{
SIG( "glRotated" );
dllRotated( angle, x, y, z );
}
static void APIENTRY logRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
SIG( "glRotatef" );
dllRotatef( angle, x, y, z );
}
static void APIENTRY logScaled(GLdouble x, GLdouble y, GLdouble z)
{
SIG( "glScaled" );
dllScaled( x, y, z );
}
static void APIENTRY logScalef(GLfloat x, GLfloat y, GLfloat z)
{
SIG( "glScalef" );
dllScalef( x, y, z );
}
static void APIENTRY logScissor(GLint x, GLint y, GLsizei width, GLsizei height)
{
fprintf( winState.log_fp, "glScissor( %d, %d, %d, %d )\n", x, y, width, height );
fflush(winState.log_fp);
dllScissor( x, y, width, height );
}
static void APIENTRY logSelectBuffer(GLsizei size, GLuint *buffer)
{
SIG( "glSelectBuffer" );
dllSelectBuffer( size, buffer );
}
static void APIENTRY logShadeModel(GLenum mode)
{
SIG( "glShadeModel" );
dllShadeModel( mode );
}
static void APIENTRY logStencilFunc(GLenum func, GLint ref, GLuint mask)
{
SIG( "glStencilFunc" );
dllStencilFunc( func, ref, mask );
}
static void APIENTRY logStencilMask(GLuint mask)
{
SIG( "glStencilMask" );
dllStencilMask( mask );
}
static void APIENTRY logStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
{
SIG( "glStencilOp" );
dllStencilOp( fail, zfail, zpass );
}
static void APIENTRY logTexCoord1d(GLdouble s)
{
SIG( "glTexCoord1d" );
dllTexCoord1d( s );
}
static void APIENTRY logTexCoord1dv(const GLdouble *v)
{
SIG( "glTexCoord1dv" );
dllTexCoord1dv( v );
}
static void APIENTRY logTexCoord1f(GLfloat s)
{
SIG( "glTexCoord1f" );
dllTexCoord1f( s );
}
static void APIENTRY logTexCoord1fv(const GLfloat *v)
{
SIG( "glTexCoord1fv" );
dllTexCoord1fv( v );
}
static void APIENTRY logTexCoord1i(GLint s)
{
SIG( "glTexCoord1i" );
dllTexCoord1i( s );
}
static void APIENTRY logTexCoord1iv(const GLint *v)
{
SIG( "glTexCoord1iv" );
dllTexCoord1iv( v );
}
static void APIENTRY logTexCoord1s(GLshort s)
{
SIG( "glTexCoord1s" );
dllTexCoord1s( s );
}
static void APIENTRY logTexCoord1sv(const GLshort *v)
{
SIG( "glTexCoord1sv" );
dllTexCoord1sv( v );
}
static void APIENTRY logTexCoord2d(GLdouble s, GLdouble t)
{
SIG( "glTexCoord2d" );
dllTexCoord2d( s, t );
}
static void APIENTRY logTexCoord2dv(const GLdouble *v)
{
SIG( "glTexCoord2dv" );
dllTexCoord2dv( v );
}
static void APIENTRY logTexCoord2f(GLfloat s, GLfloat t)
{
SIG( "glTexCoord2f" );
dllTexCoord2f( s, t );
}
static void APIENTRY logTexCoord2fv(const GLfloat *v)
{
SIG( "glTexCoord2fv" );
dllTexCoord2fv( v );
}
static void APIENTRY logTexCoord2i(GLint s, GLint t)
{
SIG( "glTexCoord2i" );
dllTexCoord2i( s, t );
}
static void APIENTRY logTexCoord2iv(const GLint *v)
{
SIG( "glTexCoord2iv" );
dllTexCoord2iv( v );
}
static void APIENTRY logTexCoord2s(GLshort s, GLshort t)
{
SIG( "glTexCoord2s" );
dllTexCoord2s( s, t );
}
static void APIENTRY logTexCoord2sv(const GLshort *v)
{
SIG( "glTexCoord2sv" );
dllTexCoord2sv( v );
}
static void APIENTRY logTexCoord3d(GLdouble s, GLdouble t, GLdouble r)
{
SIG( "glTexCoord3d" );
dllTexCoord3d( s, t, r );
}
static void APIENTRY logTexCoord3dv(const GLdouble *v)
{
SIG( "glTexCoord3dv" );
dllTexCoord3dv( v );
}
static void APIENTRY logTexCoord3f(GLfloat s, GLfloat t, GLfloat r)
{
SIG( "glTexCoord3f" );
dllTexCoord3f( s, t, r );
}
static void APIENTRY logTexCoord3fv(const GLfloat *v)
{
SIG( "glTexCoord3fv" );
dllTexCoord3fv( v );
}
static void APIENTRY logTexCoord3i(GLint s, GLint t, GLint r)
{
SIG( "glTexCoord3i" );
dllTexCoord3i( s, t, r );
}
static void APIENTRY logTexCoord3iv(const GLint *v)
{
SIG( "glTexCoord3iv" );
dllTexCoord3iv( v );
}
static void APIENTRY logTexCoord3s(GLshort s, GLshort t, GLshort r)
{
SIG( "glTexCoord3s" );
dllTexCoord3s( s, t, r );
}
static void APIENTRY logTexCoord3sv(const GLshort *v)
{
SIG( "glTexCoord3sv" );
dllTexCoord3sv( v );
}
static void APIENTRY logTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
SIG( "glTexCoord4d" );
dllTexCoord4d( s, t, r, q );
}
static void APIENTRY logTexCoord4dv(const GLdouble *v)
{
SIG( "glTexCoord4dv" );
dllTexCoord4dv( v );
}
static void APIENTRY logTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
SIG( "glTexCoord4f" );
dllTexCoord4f( s, t, r, q );
}
static void APIENTRY logTexCoord4fv(const GLfloat *v)
{
SIG( "glTexCoord4fv" );
dllTexCoord4fv( v );
}
static void APIENTRY logTexCoord4i(GLint s, GLint t, GLint r, GLint q)
{
SIG( "glTexCoord4i" );
dllTexCoord4i( s, t, r, q );
}
static void APIENTRY logTexCoord4iv(const GLint *v)
{
SIG( "glTexCoord4iv" );
dllTexCoord4iv( v );
}
static void APIENTRY logTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)
{
SIG( "glTexCoord4s" );
dllTexCoord4s( s, t, r, q );
}
static void APIENTRY logTexCoord4sv(const GLshort *v)
{
SIG( "glTexCoord4sv" );
dllTexCoord4sv( v );
}
static void APIENTRY logTexCoordPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
{
fprintf( winState.log_fp, "glTexCoordPointer( %d, %s, %d, MEM )\n", size, TypeToString( type ), stride );
fflush(winState.log_fp);
dllTexCoordPointer( size, type, stride, pointer );
}
static void APIENTRY logTexEnvf(GLenum target, GLenum pname, GLfloat param)
{
fprintf( winState.log_fp, "glTexEnvf( 0x%x, 0x%x, %f )\n", target, pname, param );
fflush(winState.log_fp);
dllTexEnvf( target, pname, param );
}
static void APIENTRY logTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)
{
SIG( "glTexEnvfv" );
dllTexEnvfv( target, pname, params );
}
static void APIENTRY logTexEnvi(GLenum target, GLenum pname, GLint param)
{
fprintf( winState.log_fp, "glTexEnvi( 0x%x, 0x%x, 0x%x )\n", target, pname, param );
fflush(winState.log_fp);
dllTexEnvi( target, pname, param );
}
static void APIENTRY logTexEnviv(GLenum target, GLenum pname, const GLint *params)
{
SIG( "glTexEnviv" );
dllTexEnviv( target, pname, params );
}
static void APIENTRY logTexGend(GLenum coord, GLenum pname, GLdouble param)
{
SIG( "glTexGend" );
dllTexGend( coord, pname, param );
}
static void APIENTRY logTexGendv(GLenum coord, GLenum pname, const GLdouble *params)
{
SIG( "glTexGendv" );
dllTexGendv( coord, pname, params );
}
static void APIENTRY logTexGenf(GLenum coord, GLenum pname, GLfloat param)
{
SIG( "glTexGenf" );
dllTexGenf( coord, pname, param );
}
static void APIENTRY logTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)
{
// fprintf( winState.log_fp, "glTexGenfv( %s, (%f, %f, %f, %f) )\n", CoordToString( coord ), params[0], params[1], params[2], params[3]);
fflush(winState.log_fp);
fprintf( winState.log_fp, "glTexGenfv( %s, MEM )\n", CoordToString( coord ));
fflush(winState.log_fp);
dllTexGenfv( coord, pname, params );
}
static void APIENTRY logTexGeni(GLenum coord, GLenum pname, GLint param)
{
SIG( "glTexGeni" );
dllTexGeni( coord, pname, param );
}
static void APIENTRY logTexGeniv(GLenum coord, GLenum pname, const GLint *params)
{
SIG( "glTexGeniv" );
dllTexGeniv( coord, pname, params );
}
static void APIENTRY logTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
{
SIG( "glTexImage1D" );
dllTexImage1D( target, level, internalformat, width, border, format, type, pixels );
}
static void APIENTRY logTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
{
SIG( "glTexImage2D" );
dllTexImage2D( target, level, internalformat, width, height, border, format, type, pixels );
}
static void APIENTRY logTexParameterf(GLenum target, GLenum pname, GLfloat param)
{
fprintf( winState.log_fp, "glTexParameterf( 0x%x, 0x%x, %f )\n", target, pname, param );
fflush(winState.log_fp);
dllTexParameterf( target, pname, param );
}
static void APIENTRY logTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)
{
SIG( "glTexParameterfv" );
dllTexParameterfv( target, pname, params );
}
static void APIENTRY logTexParameteri(GLenum target, GLenum pname, GLint param)
{
fprintf( winState.log_fp, "glTexParameteri( 0x%x, 0x%x, 0x%x )\n", target, pname, param );
fflush(winState.log_fp);
dllTexParameteri( target, pname, param );
}
static void APIENTRY logTexParameteriv(GLenum target, GLenum pname, const GLint *params)
{
SIG( "glTexParameteriv" );
dllTexParameteriv( target, pname, params );
}
static void APIENTRY logTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
{
SIG( "glTexSubImage1D" );
dllTexSubImage1D( target, level, xoffset, width, format, type, pixels );
}
static void APIENTRY logTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
{
SIG( "glTexSubImage2D" );
dllTexSubImage2D( target, level, xoffset, yoffset, width, height, format, type, pixels );
}
static void APIENTRY logTranslated(GLdouble x, GLdouble y, GLdouble z)
{
SIG( "glTranslated" );
dllTranslated( x, y, z );
}
static void APIENTRY logTranslatef(GLfloat x, GLfloat y, GLfloat z)
{
SIG( "glTranslatef" );
dllTranslatef( x, y, z );
}
static void APIENTRY logVertex2d(GLdouble x, GLdouble y)
{
SIG( "glVertex2d" );
dllVertex2d( x, y );
}
static void APIENTRY logVertex2dv(const GLdouble *v)
{
SIG( "glVertex2dv" );
dllVertex2dv( v );
}
static void APIENTRY logVertex2f(GLfloat x, GLfloat y)
{
SIG( "glVertex2f" );
dllVertex2f( x, y );
}
static void APIENTRY logVertex2fv(const GLfloat *v)
{
SIG( "glVertex2fv" );
dllVertex2fv( v );
}
static void APIENTRY logVertex2i(GLint x, GLint y)
{
SIG( "glVertex2i" );
dllVertex2i( x, y );
}
static void APIENTRY logVertex2iv(const GLint *v)
{
SIG( "glVertex2iv" );
dllVertex2iv( v );
}
static void APIENTRY logVertex2s(GLshort x, GLshort y)
{
SIG( "glVertex2s" );
dllVertex2s( x, y );
}
static void APIENTRY logVertex2sv(const GLshort *v)
{
SIG( "glVertex2sv" );
dllVertex2sv( v );
}
static void APIENTRY logVertex3d(GLdouble x, GLdouble y, GLdouble z)
{
SIG( "glVertex3d" );
dllVertex3d( x, y, z );
}
static void APIENTRY logVertex3dv(const GLdouble *v)
{
SIG( "glVertex3dv" );
dllVertex3dv( v );
}
static void APIENTRY logVertex3f(GLfloat x, GLfloat y, GLfloat z)
{
SIG( "glVertex3f" );
dllVertex3f( x, y, z );
}
static void APIENTRY logVertex3fv(const GLfloat *v)
{
SIG( "glVertex3fv" );
dllVertex3fv( v );
}
static void APIENTRY logVertex3i(GLint x, GLint y, GLint z)
{
SIG( "glVertex3i" );
dllVertex3i( x, y, z );
}
static void APIENTRY logVertex3iv(const GLint *v)
{
SIG( "glVertex3iv" );
dllVertex3iv( v );
}
static void APIENTRY logVertex3s(GLshort x, GLshort y, GLshort z)
{
SIG( "glVertex3s" );
dllVertex3s( x, y, z );
}
static void APIENTRY logVertex3sv(const GLshort *v)
{
SIG( "glVertex3sv" );
dllVertex3sv( v );
}
static void APIENTRY logVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
SIG( "glVertex4d" );
dllVertex4d( x, y, z, w );
}
static void APIENTRY logVertex4dv(const GLdouble *v)
{
SIG( "glVertex4dv" );
dllVertex4dv( v );
}
static void APIENTRY logVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
SIG( "glVertex4f" );
dllVertex4f( x, y, z, w );
}
static void APIENTRY logVertex4fv(const GLfloat *v)
{
SIG( "glVertex4fv" );
dllVertex4fv( v );
}
static void APIENTRY logVertex4i(GLint x, GLint y, GLint z, GLint w)
{
SIG( "glVertex4i" );
dllVertex4i( x, y, z, w );
}
static void APIENTRY logVertex4iv(const GLint *v)
{
SIG( "glVertex4iv" );
dllVertex4iv( v );
}
static void APIENTRY logVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)
{
SIG( "glVertex4s" );
dllVertex4s( x, y, z, w );
}
static void APIENTRY logVertex4sv(const GLshort *v)
{
SIG( "glVertex4sv" );
dllVertex4sv( v );
}
static void APIENTRY logVertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
{
fprintf( winState.log_fp, "glVertexPointer( %d, %s, %d, MEM )\n", size, TypeToString( type ), stride );
fflush(winState.log_fp);
dllVertexPointer( size, type, stride, pointer );
}
static void APIENTRY logViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
fprintf( winState.log_fp, "glViewport( %d, %d, %d, %d )\n", x, y, width, height );
fflush(winState.log_fp);
dllViewport( x, y, width, height );
}
static void APIENTRY logColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data)
{
AssertFatal(dllColorTableEXT != NULL, "Error, shouldn't have called unsupported paletted_texture extension");
fprintf(winState.log_fp, "glColorTableEXT(%d, %d, %d, %d, %d, <data>)\n",
target,
internalFormat,
width,
format,
type);
fflush(winState.log_fp);
dllColorTableEXT(target, internalFormat, width, format, type, data);
}
static void APIENTRY logLockArraysEXT(GLint first, GLsizei count)
{
AssertFatal(dllLockArraysEXT != NULL, "Error, shouldn't have called unsupported compiled_vertex_array extension");
fprintf( winState.log_fp, "glLockArraysEXT( %d, %d )\n", first, count);
fflush(winState.log_fp);
dllLockArraysEXT(first, count);
}
static void APIENTRY logUnlockArraysEXT()
{
AssertFatal(dllLockArraysEXT != NULL, "Error, shouldn't have called unsupported compiled_vertex_array extension");
SIG("glUnlockArraysEXT");
dllUnlockArraysEXT();
}
/* ARB_multitexture */
static const char* gARBMTenums[] = {
"GL_TEXTURE0_ARB", "GL_TEXTURE1_ARB", "GL_TEXTURE2_ARB",
"GL_TEXTURE3_ARB", "GL_TEXTURE4_ARB", "GL_TEXTURE5_ARB",
"GL_TEXTURE6_ARB", "GL_TEXTURE7_ARB", "GL_TEXTURE8_ARB",
"GL_TEXTURE9_ARB", "GL_TEXTURE10_ARB", "GL_TEXTURE11_ARB",
"GL_TEXTURE12_ARB", "GL_TEXTURE13_ARB", "GL_TEXTURE14_ARB",
"GL_TEXTURE15_ARB", "GL_TEXTURE16_ARB", "GL_TEXTURE17_ARB",
"GL_TEXTURE18_ARB", "GL_TEXTURE19_ARB", "GL_TEXTURE20_ARB",
"GL_TEXTURE21_ARB", "GL_TEXTURE22_ARB", "GL_TEXTURE23_ARB",
"GL_TEXTURE24_ARB", "GL_TEXTURE25_ARB", "GL_TEXTURE26_ARB",
"GL_TEXTURE27_ARB", "GL_TEXTURE28_ARB", "GL_TEXTURE29_ARB",
"GL_TEXTURE30_ARB", "GL_TEXTURE31_ARB"
};
static void APIENTRY logActiveTextureARB(GLenum target)
{
U32 index = target - GL_TEXTURE0_ARB;
fprintf( winState.log_fp, "glActiveTexturesARB( %s )\n", gARBMTenums[index]);
fflush(winState.log_fp);
dllActiveTextureARB(target);
}
static void APIENTRY logClientActiveTextureARB(GLenum target)
{
U32 index = target - GL_TEXTURE0_ARB;
fprintf( winState.log_fp, "glClientActiveTexturesARB( %s )\n", gARBMTenums[index]);
fflush(winState.log_fp);
dllClientActiveTextureARB(target);
}
static void APIENTRY logMultiTexCoord2fARB(GLenum texture, GLfloat x, GLfloat y)
{
U32 index = texture - GL_TEXTURE0_ARB;
fprintf( winState.log_fp, "glMultiTexCoord2fARB( %s, %f, %f )\n", gARBMTenums[index], x, y);
fflush(winState.log_fp);
dllMultiTexCoord2fARB(texture, x, y);
}
static void APIENTRY logMultiTexCoord2fvARB(GLenum texture, GLfloat* p)
{
U32 index = texture - GL_TEXTURE0_ARB;
fprintf( winState.log_fp, "glMultiTexCoord2fARB( %s, [%f, %f] )\n", gARBMTenums[index], p[0], p[1]);
fflush(winState.log_fp);
dllMultiTexCoord2fvARB(texture, p);
}
/* NV_vertex_array_range */
static void APIENTRY logVertexArrayRangeNV(GLsizei length, void* pointer)
{
fprintf(winState.log_fp, "glVertexArrayRangeNV( %d, MEMORY )", length);
fflush(winState.log_fp);
dllVertexArrayRangeNV(length, pointer);
}
static void APIENTRY logFlushVertexArrayRangeNV()
{
SIG("glFlushVertexArrayRangeNV");
dllFlushVertexArrayRangeNV();
}
static void* APIENTRY logAllocateMemoryNV(GLsizei length, GLfloat read, GLfloat write, GLfloat priority)
{
fprintf(winState.log_fp, "wglAllocateMemoryNV( %d, %g, %g, %g)", length, read, write, priority);
fflush(winState.log_fp);
return dllAllocateMemoryNV(length, read, write, priority);
}
static void APIENTRY logFreeMemoryNV(void* pointer)
{
SIG("glFreeMemoryNV(MEM)");
dllFreeMemoryNV(pointer);
}
/* EXT_fog_coord */
static void APIENTRY logFogCoordfEXT(GLfloat coord)
{
fprintf( winState.log_fp, "glFogCoordEXT(%f)\n", coord);
fflush(winState.log_fp);
dllFogCoordfEXT(coord);
}
static void APIENTRY logFogCoordPointerEXT(GLenum type, GLsizei stride, void *pointer)
{
fprintf( winState.log_fp, "glFogCoordPointerEXT(%s, %d, MEMORY)\n", TypeToString(type), stride);
fflush(winState.log_fp);
dllFogCoordPointerEXT(type, stride, pointer);
}
/* ARB_texture_compression */
static void APIENTRY logCompressedTexImage3DARB(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data)
{
fprintf( winState.log_fp, "glCompressedTexImage3DARB(...)\n");
fflush(winState.log_fp);
dllCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data);
}
static void APIENTRY logCompressedTexImage2DARB(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data)
{
fprintf( winState.log_fp, "glCompressedTexImage3DARB(...)\n");
fflush(winState.log_fp);
dllCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data);
}
static void APIENTRY logCompressedTexImage1DARB(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLsizei imageSize, const void* data)
{
fprintf( winState.log_fp, "glCompressedTexImage3DARB(...)\n");
fflush(winState.log_fp);
dllCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data);
}
static void APIENTRY logCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data)
{
fprintf( winState.log_fp, "glCompressedTexSubImage3DARB(...)\n");
fflush(winState.log_fp);
dllCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
}
static void APIENTRY logCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data)
{
fprintf( winState.log_fp, "glCompressedTexSubImage2DARB(...)\n");
fflush(winState.log_fp);
dllCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data);
}
static void APIENTRY logCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void* data)
{
fprintf( winState.log_fp, "glCompressedTexSubImage1DARB(...)\n");
fflush(winState.log_fp);
dllCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data);
}
static void APIENTRY logGetCompressedTexImageARB(GLenum target, GLint lod, void* img)
{
fprintf( winState.log_fp, "glGetCompressedTexImage3DARB(...)\n");
fflush(winState.log_fp);
dllGetCompressedTexImageARB(target, lod, img);
}
/* EXT_vertex_buffer */
static GLboolean APIENTRY logAvailableVertexBufferEXT()
{
fprintf( winState.log_fp, "glAvailableVertexBufferEXT(...)\n");
fflush(winState.log_fp);
return dllAvailableVertexBufferEXT();
}
static GLint APIENTRY logAllocateVertexBufferEXT(GLsizei size, GLint format, GLboolean preserve)
{
fprintf( winState.log_fp, "glAllocateVertexBufferEXT(...)\n");
fflush(winState.log_fp);
return dllAllocateVertexBufferEXT(size, format, preserve);
}
static void * APIENTRY logLockVertexBufferEXT(GLint handle, GLsizei size)
{
fprintf( winState.log_fp, "glLockVertexBufferEXT(...)\n");
fflush(winState.log_fp);
return dllLockVertexBufferEXT(handle, size);
}
static void APIENTRY logUnlockVertexBufferEXT(GLint handle)
{
fprintf( winState.log_fp, "glUnlockVertexBufferEXT(...)\n");
fflush(winState.log_fp);
dllUnlockVertexBufferEXT(handle);
}
static void APIENTRY logSetVertexBufferEXT(GLint handle)
{
fprintf( winState.log_fp, "glSetVertexBufferEXT(...)\n");
fflush(winState.log_fp);
dllSetVertexBufferEXT(handle);
}
static void APIENTRY logOffsetVertexBufferEXT(GLint handle, GLuint offset)
{
fprintf( winState.log_fp, "glOffsetVertexBufferEXT(...)\n");
fflush(winState.log_fp);
dllOffsetVertexBufferEXT(handle, offset);
}
static void APIENTRY logFillVertexBufferEXT(GLint handle, GLint first, GLsizei count)
{
fprintf( winState.log_fp, "glFillVertexBufferEXT(...)\n");
fflush(winState.log_fp);
dllFillVertexBufferEXT(handle, first, count);
}
static void APIENTRY logFreeVertexBufferEXT(GLint handle)
{
fprintf( winState.log_fp, "glFreeVertexBufferEXT(...)\n");
fflush(winState.log_fp);
dllFreeVertexBufferEXT(handle);
}
/*
** QGL_Shutdown
**
** Unloads the specified DLL then nulls out all the proc pointers. This
** is only called during a hard shutdown of the OGL subsystem (e.g. vid_restart).
*/
void QGL_Shutdown( void )
{
if ( winState.hinstOpenGL )
FreeLibrary( winState.hinstOpenGL );
winState.hinstOpenGL = NULL;
if ( winState.hinstGLU )
FreeLibrary( winState.hinstGLU );
winState.hinstGLU = NULL;
gGLState.suppSwapInterval = false;
// GLU Functions
gluErrorString = NULL;
gluGetString = NULL;
gluOrtho2D = NULL;
gluPerspective = NULL;
gluPickMatrix = NULL;
gluLookAt = NULL;
gluProject = NULL;
gluUnProject = NULL;
gluScaleImage = NULL;
gluBuild1DMipmaps = NULL;
gluBuild2DMipmaps = NULL;
// GL Functions
glAccum = NULL;
glAlphaFunc = NULL;
glAreTexturesResident = NULL;
glArrayElement = NULL;
glBegin = NULL;
glBindTexture = NULL;
glBitmap = NULL;
glBlendFunc = NULL;
glCallList = NULL;
glCallLists = NULL;
glClear = NULL;
glClearAccum = NULL;
glClearColor = NULL;
glClearDepth = NULL;
glClearIndex = NULL;
glClearStencil = NULL;
glClipPlane = NULL;
glColor3b = NULL;
glColor3bv = NULL;
glColor3d = NULL;
glColor3dv = NULL;
glColor3f = NULL;
glColor3fv = NULL;
glColor3i = NULL;
glColor3iv = NULL;
glColor3s = NULL;
glColor3sv = NULL;
glColor3ub = NULL;
glColor3ubv = NULL;
glColor3ui = NULL;
glColor3uiv = NULL;
glColor3us = NULL;
glColor3usv = NULL;
glColor4b = NULL;
glColor4bv = NULL;
glColor4d = NULL;
glColor4dv = NULL;
glColor4f = NULL;
glColor4fv = NULL;
glColor4i = NULL;
glColor4iv = NULL;
glColor4s = NULL;
glColor4sv = NULL;
glColor4ub = NULL;
glColor4ubv = NULL;
glColor4ui = NULL;
glColor4uiv = NULL;
glColor4us = NULL;
glColor4usv = NULL;
glColorMask = NULL;
glColorMaterial = NULL;
glColorPointer = NULL;
glCopyPixels = NULL;
glCopyTexImage1D = NULL;
glCopyTexImage2D = NULL;
glCopyTexSubImage1D = NULL;
glCopyTexSubImage2D = NULL;
glCullFace = NULL;
glDeleteLists = NULL;
glDeleteTextures = NULL;
glDepthFunc = NULL;
glDepthMask = NULL;
glDepthRange = NULL;
glDisable = NULL;
glDisableClientState = NULL;
glDrawArrays = NULL;
glDrawBuffer = NULL;
glDrawElements = NULL;
glDrawPixels = NULL;
glEdgeFlag = NULL;
glEdgeFlagPointer = NULL;
glEdgeFlagv = NULL;
glEnable = NULL;
glEnableClientState = NULL;
glEnd = NULL;
glEndList = NULL;
glEvalCoord1d = NULL;
glEvalCoord1dv = NULL;
glEvalCoord1f = NULL;
glEvalCoord1fv = NULL;
glEvalCoord2d = NULL;
glEvalCoord2dv = NULL;
glEvalCoord2f = NULL;
glEvalCoord2fv = NULL;
glEvalMesh1 = NULL;
glEvalMesh2 = NULL;
glEvalPoint1 = NULL;
glEvalPoint2 = NULL;
glFeedbackBuffer = NULL;
glFinish = NULL;
glFlush = NULL;
glFogf = NULL;
glFogfv = NULL;
glFogi = NULL;
glFogiv = NULL;
glFrontFace = NULL;
glFrustum = NULL;
glGenLists = NULL;
glGenTextures = NULL;
glGetBooleanv = NULL;
glGetClipPlane = NULL;
glGetDoublev = NULL;
glGetError = NULL;
glGetFloatv = NULL;
glGetIntegerv = NULL;
glGetLightfv = NULL;
glGetLightiv = NULL;
glGetMapdv = NULL;
glGetMapfv = NULL;
glGetMapiv = NULL;
glGetMaterialfv = NULL;
glGetMaterialiv = NULL;
glGetPixelMapfv = NULL;
glGetPixelMapuiv = NULL;
glGetPixelMapusv = NULL;
glGetPointerv = NULL;
glGetPolygonStipple = NULL;
glGetString = NULL;
glGetTexEnvfv = NULL;
glGetTexEnviv = NULL;
glGetTexGendv = NULL;
glGetTexGenfv = NULL;
glGetTexGeniv = NULL;
glGetTexImage = NULL;
glGetTexLevelParameterfv = NULL;
glGetTexLevelParameteriv = NULL;
glGetTexParameterfv = NULL;
glGetTexParameteriv = NULL;
glHint = NULL;
glIndexMask = NULL;
glIndexPointer = NULL;
glIndexd = NULL;
glIndexdv = NULL;
glIndexf = NULL;
glIndexfv = NULL;
glIndexi = NULL;
glIndexiv = NULL;
glIndexs = NULL;
glIndexsv = NULL;
glIndexub = NULL;
glIndexubv = NULL;
glInitNames = NULL;
glInterleavedArrays = NULL;
glIsEnabled = NULL;
glIsList = NULL;
glIsTexture = NULL;
glLightModelf = NULL;
glLightModelfv = NULL;
glLightModeli = NULL;
glLightModeliv = NULL;
glLightf = NULL;
glLightfv = NULL;
glLighti = NULL;
glLightiv = NULL;
glLineStipple = NULL;
glLineWidth = NULL;
glListBase = NULL;
glLoadIdentity = NULL;
glLoadMatrixd = NULL;
glLoadMatrixf = NULL;
glLoadName = NULL;
glLogicOp = NULL;
glMap1d = NULL;
glMap1f = NULL;
glMap2d = NULL;
glMap2f = NULL;
glMapGrid1d = NULL;
glMapGrid1f = NULL;
glMapGrid2d = NULL;
glMapGrid2f = NULL;
glMaterialf = NULL;
glMaterialfv = NULL;
glMateriali = NULL;
glMaterialiv = NULL;
glMatrixMode = NULL;
glMultMatrixd = NULL;
glMultMatrixf = NULL;
glNewList = NULL;
glNormal3b = NULL;
glNormal3bv = NULL;
glNormal3d = NULL;
glNormal3dv = NULL;
glNormal3f = NULL;
glNormal3fv = NULL;
glNormal3i = NULL;
glNormal3iv = NULL;
glNormal3s = NULL;
glNormal3sv = NULL;
glNormalPointer = NULL;
glOrtho = NULL;
glPassThrough = NULL;
glPixelMapfv = NULL;
glPixelMapuiv = NULL;
glPixelMapusv = NULL;
glPixelStoref = NULL;
glPixelStorei = NULL;
glPixelTransferf = NULL;
glPixelTransferi = NULL;
glPixelZoom = NULL;
glPointSize = NULL;
glPolygonMode = NULL;
glPolygonOffset = NULL;
glPolygonStipple = NULL;
glPopAttrib = NULL;
glPopClientAttrib = NULL;
glPopMatrix = NULL;
glPopName = NULL;
glPrioritizeTextures = NULL;
glPushAttrib = NULL;
glPushClientAttrib = NULL;
glPushMatrix = NULL;
glPushName = NULL;
glRasterPos2d = NULL;
glRasterPos2dv = NULL;
glRasterPos2f = NULL;
glRasterPos2fv = NULL;
glRasterPos2i = NULL;
glRasterPos2iv = NULL;
glRasterPos2s = NULL;
glRasterPos2sv = NULL;
glRasterPos3d = NULL;
glRasterPos3dv = NULL;
glRasterPos3f = NULL;
glRasterPos3fv = NULL;
glRasterPos3i = NULL;
glRasterPos3iv = NULL;
glRasterPos3s = NULL;
glRasterPos3sv = NULL;
glRasterPos4d = NULL;
glRasterPos4dv = NULL;
glRasterPos4f = NULL;
glRasterPos4fv = NULL;
glRasterPos4i = NULL;
glRasterPos4iv = NULL;
glRasterPos4s = NULL;
glRasterPos4sv = NULL;
glReadBuffer = NULL;
glReadPixels = NULL;
glRectd = NULL;
glRectdv = NULL;
glRectf = NULL;
glRectfv = NULL;
glRecti = NULL;
glRectiv = NULL;
glRects = NULL;
glRectsv = NULL;
glRenderMode = NULL;
glRotated = NULL;
glRotatef = NULL;
glScaled = NULL;
glScalef = NULL;
glScissor = NULL;
glSelectBuffer = NULL;
glShadeModel = NULL;
glStencilFunc = NULL;
glStencilMask = NULL;
glStencilOp = NULL;
glTexCoord1d = NULL;
glTexCoord1dv = NULL;
glTexCoord1f = NULL;
glTexCoord1fv = NULL;
glTexCoord1i = NULL;
glTexCoord1iv = NULL;
glTexCoord1s = NULL;
glTexCoord1sv = NULL;
glTexCoord2d = NULL;
glTexCoord2dv = NULL;
glTexCoord2f = NULL;
glTexCoord2fv = NULL;
glTexCoord2i = NULL;
glTexCoord2iv = NULL;
glTexCoord2s = NULL;
glTexCoord2sv = NULL;
glTexCoord3d = NULL;
glTexCoord3dv = NULL;
glTexCoord3f = NULL;
glTexCoord3fv = NULL;
glTexCoord3i = NULL;
glTexCoord3iv = NULL;
glTexCoord3s = NULL;
glTexCoord3sv = NULL;
glTexCoord4d = NULL;
glTexCoord4dv = NULL;
glTexCoord4f = NULL;
glTexCoord4fv = NULL;
glTexCoord4i = NULL;
glTexCoord4iv = NULL;
glTexCoord4s = NULL;
glTexCoord4sv = NULL;
glTexCoordPointer = NULL;
glTexEnvf = NULL;
glTexEnvfv = NULL;
glTexEnvi = NULL;
glTexEnviv = NULL;
glTexGend = NULL;
glTexGendv = NULL;
glTexGenf = NULL;
glTexGenfv = NULL;
glTexGeni = NULL;
glTexGeniv = NULL;
glTexImage1D = NULL;
glTexImage2D = NULL;
glTexParameterf = NULL;
glTexParameterfv = NULL;
glTexParameteri = NULL;
glTexParameteriv = NULL;
glTexSubImage1D = NULL;
glTexSubImage2D = NULL;
glTranslated = NULL;
glTranslatef = NULL;
glVertex2d = NULL;
glVertex2dv = NULL;
glVertex2f = NULL;
glVertex2fv = NULL;
glVertex2i = NULL;
glVertex2iv = NULL;
glVertex2s = NULL;
glVertex2sv = NULL;
glVertex3d = NULL;
glVertex3dv = NULL;
glVertex3f = NULL;
glVertex3fv = NULL;
glVertex3i = NULL;
glVertex3iv = NULL;
glVertex3s = NULL;
glVertex3sv = NULL;
glVertex4d = NULL;
glVertex4dv = NULL;
glVertex4f = NULL;
glVertex4fv = NULL;
glVertex4i = NULL;
glVertex4iv = NULL;
glVertex4s = NULL;
glVertex4sv = NULL;
glVertexPointer = NULL;
glViewport = NULL;
// EXT_compiled_vertex_array
glLockArraysEXT = NULL;
glUnlockArraysEXT = NULL;
// ARB_multitexture
glActiveTextureARB = NULL;
glClientActiveTextureARB = NULL;
glMultiTexCoord2fARB = NULL;
glMultiTexCoord2fvARB = NULL;
// NV_vertex_array_range
glVertexArrayRangeNV = NULL;
glFlushVertexArrayRangeNV = NULL;
wglAllocateMemoryNV = NULL;
wglFreeMemoryNV = NULL;
// EXT_fog_coord
glFogCoordfEXT = NULL;
glFogCoordPointerEXT = NULL;
/* ARB_texture_compression */
glCompressedTexImage3DARB = NULL;
glCompressedTexImage2DARB = NULL;
glCompressedTexImage1DARB = NULL;
glCompressedTexSubImage3DARB = NULL;
glCompressedTexSubImage2DARB = NULL;
glCompressedTexSubImage1DARB = NULL;
glGetCompressedTexImageARB = NULL;
glAvailableVertexBufferEXT = NULL;
glAllocateVertexBufferEXT = NULL;
glLockVertexBufferEXT = NULL;
glUnlockVertexBufferEXT = NULL;
glSetVertexBufferEXT = NULL;
glOffsetVertexBufferEXT = NULL;
glFillVertexBufferEXT = NULL;
glFreeVertexBufferEXT = NULL;
qwglCopyContext = NULL;
qwglCreateContext = NULL;
qwglCreateLayerContext = NULL;
qwglDeleteContext = NULL;
qwglDescribeLayerPlane = NULL;
qwglGetCurrentContext = NULL;
qwglGetCurrentDC = NULL;
qwglGetLayerPaletteEntries = NULL;
qwglGetProcAddress = NULL;
qwglMakeCurrent = NULL;
qwglRealizeLayerPalette = NULL;
qwglSetLayerPaletteEntries = NULL;
qwglShareLists = NULL;
qwglSwapLayerBuffers = NULL;
qwglUseFontBitmaps = NULL;
qwglUseFontOutlines = NULL;
qwglChoosePixelFormat = NULL;
qwglDescribePixelFormat = NULL;
qwglGetPixelFormat = NULL;
qwglSetPixelFormat = NULL;
qwglSwapBuffers = NULL;
}
#define GR_NUM_BOARDS 0x0f
static bool GlideIsValid( void )
{
// int numBoards;
// void (__stdcall *grGet)(unsigned int, unsigned int, int*);
if ( LoadLibrary("Glide3X") != 0 )
{
// FIXME: 3Dfx needs to fix this shit
return true;
#if 0
grGet = (void *)GetProcAddress( hGlide, "_grGet@12");
if ( grGet )
{
grGet( GR_NUM_BOARDS, sizeof(int), &numBoards);
}
else
{
// if we've reached this point, something is seriously wrong
ri.Printf( PRINT_WARNING, "WARNING: could not find grGet in GLIDE3X.DLL\n" );
numBoards = 0;
}
FreeLibrary( hGlide );
hGlide = NULL;
if ( numBoards > 0 )
{
return true;
}
ri.Printf( PRINT_WARNING, "WARNING: invalid Glide installation!\n" );
#endif
}
return false;
}
# define GPA_GL( a ) GetProcAddress( winState.hinstOpenGL, a )
# define GPA_GLU( a ) GetProcAddress( winState.hinstGLU, a )
/*
** QGL_Init
**
** This is responsible for binding our gl function pointers to
** the appropriate GL stuff. In Windows this means doing a
** LoadLibrary and a bunch of calls to GetProcAddress. On other
** operating systems we need to do the right thing, whatever that
** might be.
**
*/
//--------------------------------------
bool QGL_Init( const char *dllname_gl, const char *dllname_glu )
{
if ( winState.hinstOpenGL && winState.hinstGLU)
return true;
// Load OpenGL DLL
if (!winState.hinstOpenGL)
{
// NOTE: this assumes that 'dllname' is lower case (and it should be)!
if ( strstr( dllname_gl, "voodoo" ) )
{
if ( !GlideIsValid() )
{
return false;
}
}
if ( ( winState.hinstOpenGL = LoadLibrary( dllname_gl ) ) == 0 )
return false;
}
// Load OpenGL GLU DLL
if ( !winState.hinstGLU )
{
if ( ( winState.hinstGLU = LoadLibrary( dllname_glu ) ) == 0 )
return false;
}
// GLU Functions
gluErrorString = dllgluErrorString = (gluErrorString_t) GPA_GLU( "gluErrorString" );
gluGetString = dllgluGetString = (gluGetString_t) GPA_GLU( "gluGetString" );
gluOrtho2D = dllgluOrtho2D = (gluOrtho2D_t) GPA_GLU( "gluOrtho2D" );
gluPerspective = dllgluPerspective = (gluPerspective_t) GPA_GLU( "gluPerspective" );
gluPickMatrix = dllgluPickMatrix = (gluPickMatrix_t) GPA_GLU( "gluPickMatrix" );
gluLookAt = dllgluLookAt = (gluLookAt_t) GPA_GLU( "gluLookAt" );
gluProject = dllgluProject = (gluProject_t) GPA_GLU( "gluProject" );
gluUnProject = dllgluUnProject = (gluUnProject_t) GPA_GLU( "gluUnProject" );
gluScaleImage = dllgluScaleImage = (gluScaleImage_t) GPA_GLU( "gluScaleImage" );
gluBuild1DMipmaps = dllgluBuild1DMipmaps = (gluBuild1DMipmaps_t) GPA_GLU( "gluBuild1DMipmaps" );
gluBuild2DMipmaps = dllgluBuild2DMipmaps = (gluBuild2DMipmaps_t) GPA_GLU( "gluBuild2DMipmaps" );
// GL Functions
glAccum = dllAccum = (glAccum_t) GPA_GL( "glAccum" );
glAlphaFunc = dllAlphaFunc = (glAlphaFunc_t) GPA_GL( "glAlphaFunc" );
glAreTexturesResident = dllAreTexturesResident = (glAreTexturesResident_t) GPA_GL( "glAreTexturesResident" );
glArrayElement = dllArrayElement = (glArrayElement_t) GPA_GL( "glArrayElement" );
glBegin = dllBegin = (glBegin_t) GPA_GL( "glBegin" );
glBindTexture = dllBindTexture = (glBindTexture_t) GPA_GL( "glBindTexture" );
glBitmap = dllBitmap = (glBitmap_t) GPA_GL( "glBitmap" );
glBlendFunc = dllBlendFunc = (glBlendFunc_t) GPA_GL( "glBlendFunc" );
glCallList = dllCallList = (glCallList_t) GPA_GL( "glCallList" );
glCallLists = dllCallLists = (glCallLists_t) GPA_GL( "glCallLists" );
glClear = dllClear = (glClear_t) GPA_GL( "glClear" );
glClearAccum = dllClearAccum = (glClearAccum_t) GPA_GL( "glClearAccum" );
glClearColor = dllClearColor = (glClearColor_t) GPA_GL( "glClearColor" );
glClearDepth = dllClearDepth = (glClearDepth_t) GPA_GL( "glClearDepth" );
glClearIndex = dllClearIndex = (glClearIndex_t) GPA_GL( "glClearIndex" );
glClearStencil = dllClearStencil = (glClearStencil_t) GPA_GL( "glClearStencil" );
glClipPlane = dllClipPlane = (glClipPlane_t) GPA_GL( "glClipPlane" );
glColor3b = dllColor3b = (glColor3b_t) GPA_GL( "glColor3b" );
glColor3bv = dllColor3bv = (glColor3bv_t) GPA_GL( "glColor3bv" );
glColor3d = dllColor3d = (glColor3d_t) GPA_GL( "glColor3d" );
glColor3dv = dllColor3dv = (glColor3dv_t) GPA_GL( "glColor3dv" );
glColor3f = dllColor3f = (glColor3f_t) GPA_GL( "glColor3f" );
glColor3fv = dllColor3fv = (glColor3fv_t) GPA_GL( "glColor3fv" );
glColor3i = dllColor3i = (glColor3i_t) GPA_GL( "glColor3i" );
glColor3iv = dllColor3iv = (glColor3iv_t) GPA_GL( "glColor3iv" );
glColor3s = dllColor3s = (glColor3s_t) GPA_GL( "glColor3s" );
glColor3sv = dllColor3sv = (glColor3sv_t) GPA_GL( "glColor3sv" );
glColor3ub = dllColor3ub = (glColor3ub_t) GPA_GL( "glColor3ub" );
glColor3ubv = dllColor3ubv = (glColor3ubv_t) GPA_GL( "glColor3ubv" );
glColor3ui = dllColor3ui = (glColor3ui_t) GPA_GL( "glColor3ui" );
glColor3uiv = dllColor3uiv = (glColor3uiv_t) GPA_GL( "glColor3uiv" );
glColor3us = dllColor3us = (glColor3us_t) GPA_GL( "glColor3us" );
glColor3usv = dllColor3usv = (glColor3usv_t) GPA_GL( "glColor3usv" );
glColor4b = dllColor4b = (glColor4b_t) GPA_GL( "glColor4b" );
glColor4bv = dllColor4bv = (glColor4bv_t) GPA_GL( "glColor4bv" );
glColor4d = dllColor4d = (glColor4d_t) GPA_GL( "glColor4d" );
glColor4dv = dllColor4dv = (glColor4dv_t) GPA_GL( "glColor4dv" );
glColor4f = dllColor4f = (glColor4f_t) GPA_GL( "glColor4f" );
glColor4fv = dllColor4fv = (glColor4fv_t) GPA_GL( "glColor4fv" );
glColor4i = dllColor4i = (glColor4i_t) GPA_GL( "glColor4i" );
glColor4iv = dllColor4iv = (glColor4iv_t) GPA_GL( "glColor4iv" );
glColor4s = dllColor4s = (glColor4s_t) GPA_GL( "glColor4s" );
glColor4sv = dllColor4sv = (glColor4sv_t) GPA_GL( "glColor4sv" );
glColor4ub = dllColor4ub = (glColor4ub_t) GPA_GL( "glColor4ub" );
glColor4ubv = dllColor4ubv = (glColor4ubv_t) GPA_GL( "glColor4ubv" );
glColor4ui = dllColor4ui = (glColor4ui_t) GPA_GL( "glColor4ui" );
glColor4uiv = dllColor4uiv = (glColor4uiv_t) GPA_GL( "glColor4uiv" );
glColor4us = dllColor4us = (glColor4us_t) GPA_GL( "glColor4us" );
glColor4usv = dllColor4usv = (glColor4usv_t) GPA_GL( "glColor4usv" );
glColorMask = dllColorMask = (glColorMask_t) GPA_GL( "glColorMask" );
glColorMaterial = dllColorMaterial = (glColorMaterial_t) GPA_GL( "glColorMaterial" );
glColorPointer = dllColorPointer = (glColorPointer_t) GPA_GL( "glColorPointer" );
glCopyPixels = dllCopyPixels = (glCopyPixels_t) GPA_GL( "glCopyPixels" );
glCopyTexImage1D = dllCopyTexImage1D = (glCopyTexImage1D_t) GPA_GL( "glCopyTexImage1D" );
glCopyTexImage2D = dllCopyTexImage2D = (glCopyTexImage2D_t) GPA_GL( "glCopyTexImage2D" );
glCopyTexSubImage1D = dllCopyTexSubImage1D = (glCopyTexSubImage1D_t) GPA_GL( "glCopyTexSubImage1D" );
glCopyTexSubImage2D = dllCopyTexSubImage2D = (glCopyTexSubImage2D_t) GPA_GL( "glCopyTexSubImage2D" );
glCullFace = dllCullFace = (glCullFace_t) GPA_GL( "glCullFace" );
glDeleteLists = dllDeleteLists = (glDeleteLists_t) GPA_GL( "glDeleteLists" );
glDeleteTextures = dllDeleteTextures = (glDeleteTextures_t) GPA_GL( "glDeleteTextures" );
glDepthFunc = dllDepthFunc = (glDepthFunc_t) GPA_GL( "glDepthFunc" );
glDepthMask = dllDepthMask = (glDepthMask_t) GPA_GL( "glDepthMask" );
glDepthRange = dllDepthRange = (glDepthRange_t) GPA_GL( "glDepthRange" );
glDisable = dllDisable = (glDisable_t) GPA_GL( "glDisable" );
glDisableClientState = dllDisableClientState = (glDisableClientState_t) GPA_GL( "glDisableClientState" );
glDrawArrays = dllDrawArrays = (glDrawArrays_t) GPA_GL( "glDrawArrays" );
glDrawBuffer = dllDrawBuffer = (glDrawBuffer_t) GPA_GL( "glDrawBuffer" );
glDrawElements = dllDrawElements = (glDrawElements_t) GPA_GL( "glDrawElements" );
glDrawPixels = dllDrawPixels = (glDrawPixels_t) GPA_GL( "glDrawPixels" );
glEdgeFlag = dllEdgeFlag = (glEdgeFlag_t) GPA_GL( "glEdgeFlag" );
glEdgeFlagPointer = dllEdgeFlagPointer = (glEdgeFlagPointer_t) GPA_GL( "glEdgeFlagPointer" );
glEdgeFlagv = dllEdgeFlagv = (glEdgeFlagv_t) GPA_GL( "glEdgeFlagv" );
glEnable = dllEnable = (glEnable_t) GPA_GL( "glEnable" );
glEnableClientState = dllEnableClientState = (glEnableClientState_t) GPA_GL( "glEnableClientState" );
glEnd = dllEnd = (glEnd_t) GPA_GL( "glEnd" );
glEndList = dllEndList = (glEndList_t) GPA_GL( "glEndList" );
glEvalCoord1d = dllEvalCoord1d = (glEvalCoord1d_t) GPA_GL( "glEvalCoord1d" );
glEvalCoord1dv = dllEvalCoord1dv = (glEvalCoord1dv_t) GPA_GL( "glEvalCoord1dv" );
glEvalCoord1f = dllEvalCoord1f = (glEvalCoord1f_t) GPA_GL( "glEvalCoord1f" );
glEvalCoord1fv = dllEvalCoord1fv = (glEvalCoord1fv_t) GPA_GL( "glEvalCoord1fv" );
glEvalCoord2d = dllEvalCoord2d = (glEvalCoord2d_t) GPA_GL( "glEvalCoord2d" );
glEvalCoord2dv = dllEvalCoord2dv = (glEvalCoord2dv_t) GPA_GL( "glEvalCoord2dv" );
glEvalCoord2f = dllEvalCoord2f = (glEvalCoord2f_t) GPA_GL( "glEvalCoord2f" );
glEvalCoord2fv = dllEvalCoord2fv = (glEvalCoord2fv_t) GPA_GL( "glEvalCoord2fv" );
glEvalMesh1 = dllEvalMesh1 = (glEvalMesh1_t) GPA_GL( "glEvalMesh1" );
glEvalMesh2 = dllEvalMesh2 = (glEvalMesh2_t) GPA_GL( "glEvalMesh2" );
glEvalPoint1 = dllEvalPoint1 = (glEvalPoint1_t) GPA_GL( "glEvalPoint1" );
glEvalPoint2 = dllEvalPoint2 = (glEvalPoint2_t) GPA_GL( "glEvalPoint2" );
glFeedbackBuffer = dllFeedbackBuffer = (glFeedbackBuffer_t) GPA_GL( "glFeedbackBuffer" );
glFinish = dllFinish = (glFinish_t) GPA_GL( "glFinish" );
glFlush = dllFlush = (glFlush_t) GPA_GL( "glFlush" );
glFogf = dllFogf = (glFogf_t) GPA_GL( "glFogf" );
glFogfv = dllFogfv = (glFogfv_t) GPA_GL( "glFogfv" );
glFogi = dllFogi = (glFogi_t) GPA_GL( "glFogi" );
glFogiv = dllFogiv = (glFogiv_t) GPA_GL( "glFogiv" );
glFrontFace = dllFrontFace = (glFrontFace_t) GPA_GL( "glFrontFace" );
glFrustum = dllFrustum = (glFrustum_t) GPA_GL( "glFrustum" );
glGenLists = dllGenLists = (glGenLists_t) GPA_GL( "glGenLists" );
glGenTextures = dllGenTextures = (glGenTextures_t) GPA_GL( "glGenTextures" );
glGetBooleanv = dllGetBooleanv = (glGetBooleanv_t) GPA_GL( "glGetBooleanv" );
glGetClipPlane = dllGetClipPlane = (glGetClipPlane_t) GPA_GL( "glGetClipPlane" );
glGetDoublev = dllGetDoublev = (glGetDoublev_t) GPA_GL( "glGetDoublev" );
glGetError = dllGetError = (glGetError_t) GPA_GL( "glGetError" );
glGetFloatv = dllGetFloatv = (glGetFloatv_t) GPA_GL( "glGetFloatv" );
glGetIntegerv = dllGetIntegerv = (glGetIntegerv_t) GPA_GL( "glGetIntegerv" );
glGetLightfv = dllGetLightfv = (glGetLightfv_t) GPA_GL( "glGetLightfv" );
glGetLightiv = dllGetLightiv = (glGetLightiv_t) GPA_GL( "glGetLightiv" );
glGetMapdv = dllGetMapdv = (glGetMapdv_t) GPA_GL( "glGetMapdv" );
glGetMapfv = dllGetMapfv = (glGetMapfv_t) GPA_GL( "glGetMapfv" );
glGetMapiv = dllGetMapiv = (glGetMapiv_t) GPA_GL( "glGetMapiv" );
glGetMaterialfv = dllGetMaterialfv = (glGetMaterialfv_t) GPA_GL( "glGetMaterialfv" );
glGetMaterialiv = dllGetMaterialiv = (glGetMaterialiv_t) GPA_GL( "glGetMaterialiv" );
glGetPixelMapfv = dllGetPixelMapfv = (glGetPixelMapfv_t) GPA_GL( "glGetPixelMapfv" );
glGetPixelMapuiv = dllGetPixelMapuiv = (glGetPixelMapuiv_t) GPA_GL( "glGetPixelMapuiv" );
glGetPixelMapusv = dllGetPixelMapusv = (glGetPixelMapusv_t) GPA_GL( "glGetPixelMapusv" );
glGetPointerv = dllGetPointerv = (glGetPointerv_t) GPA_GL( "glGetPointerv" );
glGetPolygonStipple = dllGetPolygonStipple = (glGetPolygonStipple_t) GPA_GL( "glGetPolygonStipple" );
glGetString = dllGetString = (glGetString_t) GPA_GL( "glGetString" );
glGetTexEnvfv = dllGetTexEnvfv = (glGetTexEnvfv_t) GPA_GL( "glGetTexEnvfv" );
glGetTexEnviv = dllGetTexEnviv = (glGetTexEnviv_t) GPA_GL( "glGetTexEnviv" );
glGetTexGendv = dllGetTexGendv = (glGetTexGendv_t) GPA_GL( "glGetTexGendv" );
glGetTexGenfv = dllGetTexGenfv = (glGetTexGenfv_t) GPA_GL( "glGetTexGenfv" );
glGetTexGeniv = dllGetTexGeniv = (glGetTexGeniv_t) GPA_GL( "glGetTexGeniv" );
glGetTexImage = dllGetTexImage = (glGetTexImage_t) GPA_GL( "glGetTexImage" );
glGetTexLevelParameterfv = dllGetTexLevelParameterfv = (glGetTexLevelParameterfv_t) GPA_GL( "glGetLevelParameterfv" );
glGetTexLevelParameteriv = dllGetTexLevelParameteriv = (glGetTexLevelParameteriv_t) GPA_GL( "glGetLevelParameteriv" );
glGetTexParameterfv = dllGetTexParameterfv = (glGetTexParameterfv_t) GPA_GL( "glGetTexParameterfv" );
glGetTexParameteriv = dllGetTexParameteriv = (glGetTexParameteriv_t) GPA_GL( "glGetTexParameteriv" );
glHint = dllHint = (glHint_t) GPA_GL( "glHint" );
glIndexMask = dllIndexMask = (glIndexMask_t) GPA_GL( "glIndexMask" );
glIndexPointer = dllIndexPointer = (glIndexPointer_t) GPA_GL( "glIndexPointer" );
glIndexd = dllIndexd = (glIndexd_t) GPA_GL( "glIndexd" );
glIndexdv = dllIndexdv = (glIndexdv_t) GPA_GL( "glIndexdv" );
glIndexf = dllIndexf = (glIndexf_t) GPA_GL( "glIndexf" );
glIndexfv = dllIndexfv = (glIndexfv_t) GPA_GL( "glIndexfv" );
glIndexi = dllIndexi = (glIndexi_t) GPA_GL( "glIndexi" );
glIndexiv = dllIndexiv = (glIndexiv_t) GPA_GL( "glIndexiv" );
glIndexs = dllIndexs = (glIndexs_t) GPA_GL( "glIndexs" );
glIndexsv = dllIndexsv = (glIndexsv_t) GPA_GL( "glIndexsv" );
glIndexub = dllIndexub = (glIndexub_t) GPA_GL( "glIndexub" );
glIndexubv = dllIndexubv = (glIndexubv_t) GPA_GL( "glIndexubv" );
glInitNames = dllInitNames = (glInitNames_t) GPA_GL( "glInitNames" );
glInterleavedArrays = dllInterleavedArrays = (glInterleavedArrays_t) GPA_GL( "glInterleavedArrays" );
glIsEnabled = dllIsEnabled = (glIsEnabled_t) GPA_GL( "glIsEnabled" );
glIsList = dllIsList = (glIsList_t) GPA_GL( "glIsList" );
glIsTexture = dllIsTexture = (glIsTexture_t) GPA_GL( "glIsTexture" );
glLightModelf = dllLightModelf = (glLightModelf_t) GPA_GL( "glLightModelf" );
glLightModelfv = dllLightModelfv = (glLightModelfv_t) GPA_GL( "glLightModelfv" );
glLightModeli = dllLightModeli = (glLightModeli_t) GPA_GL( "glLightModeli" );
glLightModeliv = dllLightModeliv = (glLightModeliv_t) GPA_GL( "glLightModeliv" );
glLightf = dllLightf = (glLightf_t) GPA_GL( "glLightf" );
glLightfv = dllLightfv = (glLightfv_t) GPA_GL( "glLightfv" );
glLighti = dllLighti = (glLighti_t) GPA_GL( "glLighti" );
glLightiv = dllLightiv = (glLightiv_t) GPA_GL( "glLightiv" );
glLineStipple = dllLineStipple = (glLineStipple_t) GPA_GL( "glLineStipple" );
glLineWidth = dllLineWidth = (glLineWidth_t) GPA_GL( "glLineWidth" );
glListBase = dllListBase = (glListBase_t) GPA_GL( "glListBase" );
glLoadIdentity = dllLoadIdentity = (glLoadIdentity_t) GPA_GL( "glLoadIdentity" );
glLoadMatrixd = dllLoadMatrixd = (glLoadMatrixd_t) GPA_GL( "glLoadMatrixd" );
glLoadMatrixf = dllLoadMatrixf = (glLoadMatrixf_t) GPA_GL( "glLoadMatrixf" );
glLoadName = dllLoadName = (glLoadName_t) GPA_GL( "glLoadName" );
glLogicOp = dllLogicOp = (glLogicOp_t) GPA_GL( "glLogicOp" );
glMap1d = dllMap1d = (glMap1d_t) GPA_GL( "glMap1d" );
glMap1f = dllMap1f = (glMap1f_t) GPA_GL( "glMap1f" );
glMap2d = dllMap2d = (glMap2d_t) GPA_GL( "glMap2d" );
glMap2f = dllMap2f = (glMap2f_t) GPA_GL( "glMap2f" );
glMapGrid1d = dllMapGrid1d = (glMapGrid1d_t) GPA_GL( "glMapGrid1d" );
glMapGrid1f = dllMapGrid1f = (glMapGrid1f_t) GPA_GL( "glMapGrid1f" );
glMapGrid2d = dllMapGrid2d = (glMapGrid2d_t) GPA_GL( "glMapGrid2d" );
glMapGrid2f = dllMapGrid2f = (glMapGrid2f_t) GPA_GL( "glMapGrid2f" );
glMaterialf = dllMaterialf = (glMaterialf_t) GPA_GL( "glMaterialf" );
glMaterialfv = dllMaterialfv = (glMaterialfv_t) GPA_GL( "glMaterialfv" );
glMateriali = dllMateriali = (glMateriali_t) GPA_GL( "glMateriali" );
glMaterialiv = dllMaterialiv = (glMaterialiv_t) GPA_GL( "glMaterialiv" );
glMatrixMode = dllMatrixMode = (glMatrixMode_t) GPA_GL( "glMatrixMode" );
glMultMatrixd = dllMultMatrixd = (glMultMatrixd_t) GPA_GL( "glMultMatrixd" );
glMultMatrixf = dllMultMatrixf = (glMultMatrixf_t) GPA_GL( "glMultMatrixf" );
glNewList = dllNewList = (glNewList_t) GPA_GL( "glNewList" );
glNormal3b = dllNormal3b = (glNormal3b_t) GPA_GL( "glNormal3b" );
glNormal3bv = dllNormal3bv = (glNormal3bv_t) GPA_GL( "glNormal3bv" );
glNormal3d = dllNormal3d = (glNormal3d_t) GPA_GL( "glNormal3d" );
glNormal3dv = dllNormal3dv = (glNormal3dv_t) GPA_GL( "glNormal3dv" );
glNormal3f = dllNormal3f = (glNormal3f_t) GPA_GL( "glNormal3f" );
glNormal3fv = dllNormal3fv = (glNormal3fv_t) GPA_GL( "glNormal3fv" );
glNormal3i = dllNormal3i = (glNormal3i_t) GPA_GL( "glNormal3i" );
glNormal3iv = dllNormal3iv = (glNormal3iv_t) GPA_GL( "glNormal3iv" );
glNormal3s = dllNormal3s = (glNormal3s_t) GPA_GL( "glNormal3s" );
glNormal3sv = dllNormal3sv = (glNormal3sv_t) GPA_GL( "glNormal3sv" );
glNormalPointer = dllNormalPointer = (glNormalPointer_t) GPA_GL( "glNormalPointer" );
glOrtho = dllOrtho = (glOrtho_t) GPA_GL( "glOrtho" );
glPassThrough = dllPassThrough = (glPassThrough_t) GPA_GL( "glPassThrough" );
glPixelMapfv = dllPixelMapfv = (glPixelMapfv_t) GPA_GL( "glPixelMapfv" );
glPixelMapuiv = dllPixelMapuiv = (glPixelMapuiv_t) GPA_GL( "glPixelMapuiv" );
glPixelMapusv = dllPixelMapusv = (glPixelMapusv_t) GPA_GL( "glPixelMapusv" );
glPixelStoref = dllPixelStoref = (glPixelStoref_t) GPA_GL( "glPixelStoref" );
glPixelStorei = dllPixelStorei = (glPixelStorei_t) GPA_GL( "glPixelStorei" );
glPixelTransferf = dllPixelTransferf = (glPixelTransferf_t) GPA_GL( "glPixelTransferf" );
glPixelTransferi = dllPixelTransferi = (glPixelTransferi_t) GPA_GL( "glPixelTransferi" );
glPixelZoom = dllPixelZoom = (glPixelZoom_t) GPA_GL( "glPixelZoom" );
glPointSize = dllPointSize = (glPointSize_t) GPA_GL( "glPointSize" );
glPolygonMode = dllPolygonMode = (glPolygonMode_t) GPA_GL( "glPolygonMode" );
glPolygonOffset = dllPolygonOffset = (glPolygonOffset_t) GPA_GL( "glPolygonOffset" );
glPolygonStipple = dllPolygonStipple = (glPolygonStipple_t) GPA_GL( "glPolygonStipple" );
glPopAttrib = dllPopAttrib = (glPopAttrib_t) GPA_GL( "glPopAttrib" );
glPopClientAttrib = dllPopClientAttrib = (glPopClientAttrib_t) GPA_GL( "glPopClientAttrib" );
glPopMatrix = dllPopMatrix = (glPopMatrix_t) GPA_GL( "glPopMatrix" );
glPopName = dllPopName = (glPopName_t) GPA_GL( "glPopName" );
glPrioritizeTextures = dllPrioritizeTextures = (glPrioritizeTextures_t) GPA_GL( "glPrioritizeTextures" );
glPushAttrib = dllPushAttrib = (glPushAttrib_t) GPA_GL( "glPushAttrib" );
glPushClientAttrib = dllPushClientAttrib = (glPushClientAttrib_t) GPA_GL( "glPushClientAttrib" );
glPushMatrix = dllPushMatrix = (glPushMatrix_t) GPA_GL( "glPushMatrix" );
glPushName = dllPushName = (glPushName_t) GPA_GL( "glPushName" );
glRasterPos2d = dllRasterPos2d = (glRasterPos2d_t) GPA_GL( "glRasterPos2d" );
glRasterPos2dv = dllRasterPos2dv = (glRasterPos2dv_t) GPA_GL( "glRasterPos2dv" );
glRasterPos2f = dllRasterPos2f = (glRasterPos2f_t) GPA_GL( "glRasterPos2f" );
glRasterPos2fv = dllRasterPos2fv = (glRasterPos2fv_t) GPA_GL( "glRasterPos2fv" );
glRasterPos2i = dllRasterPos2i = (glRasterPos2i_t) GPA_GL( "glRasterPos2i" );
glRasterPos2iv = dllRasterPos2iv = (glRasterPos2iv_t) GPA_GL( "glRasterPos2iv" );
glRasterPos2s = dllRasterPos2s = (glRasterPos2s_t) GPA_GL( "glRasterPos2s" );
glRasterPos2sv = dllRasterPos2sv = (glRasterPos2sv_t) GPA_GL( "glRasterPos2sv" );
glRasterPos3d = dllRasterPos3d = (glRasterPos3d_t) GPA_GL( "glRasterPos3d" );
glRasterPos3dv = dllRasterPos3dv = (glRasterPos3dv_t) GPA_GL( "glRasterPos3dv" );
glRasterPos3f = dllRasterPos3f = (glRasterPos3f_t) GPA_GL( "glRasterPos3f" );
glRasterPos3fv = dllRasterPos3fv = (glRasterPos3fv_t) GPA_GL( "glRasterPos3fv" );
glRasterPos3i = dllRasterPos3i = (glRasterPos3i_t) GPA_GL( "glRasterPos3i" );
glRasterPos3iv = dllRasterPos3iv = (glRasterPos3iv_t) GPA_GL( "glRasterPos3iv" );
glRasterPos3s = dllRasterPos3s = (glRasterPos3s_t) GPA_GL( "glRasterPos3s" );
glRasterPos3sv = dllRasterPos3sv = (glRasterPos3sv_t) GPA_GL( "glRasterPos3sv" );
glRasterPos4d = dllRasterPos4d = (glRasterPos4d_t) GPA_GL( "glRasterPos4d" );
glRasterPos4dv = dllRasterPos4dv = (glRasterPos4dv_t) GPA_GL( "glRasterPos4dv" );
glRasterPos4f = dllRasterPos4f = (glRasterPos4f_t) GPA_GL( "glRasterPos4f" );
glRasterPos4fv = dllRasterPos4fv = (glRasterPos4fv_t) GPA_GL( "glRasterPos4fv" );
glRasterPos4i = dllRasterPos4i = (glRasterPos4i_t) GPA_GL( "glRasterPos4i" );
glRasterPos4iv = dllRasterPos4iv = (glRasterPos4iv_t) GPA_GL( "glRasterPos4iv" );
glRasterPos4s = dllRasterPos4s = (glRasterPos4s_t) GPA_GL( "glRasterPos4s" );
glRasterPos4sv = dllRasterPos4sv = (glRasterPos4sv_t) GPA_GL( "glRasterPos4sv" );
glReadBuffer = dllReadBuffer = (glReadBuffer_t) GPA_GL( "glReadBuffer" );
glReadPixels = dllReadPixels = (glReadPixels_t) GPA_GL( "glReadPixels" );
glRectd = dllRectd = (glRectd_t) GPA_GL( "glRectd" );
glRectdv = dllRectdv = (glRectdv_t) GPA_GL( "glRectdv" );
glRectf = dllRectf = (glRectf_t) GPA_GL( "glRectf" );
glRectfv = dllRectfv = (glRectfv_t) GPA_GL( "glRectfv" );
glRecti = dllRecti = (glRecti_t) GPA_GL( "glRecti" );
glRectiv = dllRectiv = (glRectiv_t) GPA_GL( "glRectiv" );
glRects = dllRects = (glRects_t) GPA_GL( "glRects" );
glRectsv = dllRectsv = (glRectsv_t) GPA_GL( "glRectsv" );
glRenderMode = dllRenderMode = (glRenderMode_t) GPA_GL( "glRenderMode" );
glRotated = dllRotated = (glRotated_t) GPA_GL( "glRotated" );
glRotatef = dllRotatef = (glRotatef_t) GPA_GL( "glRotatef" );
glScaled = dllScaled = (glScaled_t) GPA_GL( "glScaled" );
glScalef = dllScalef = (glScalef_t) GPA_GL( "glScalef" );
glScissor = dllScissor = (glScissor_t) GPA_GL( "glScissor" );
glSelectBuffer = dllSelectBuffer = (glSelectBuffer_t) GPA_GL( "glSelectBuffer" );
glShadeModel = dllShadeModel = (glShadeModel_t) GPA_GL( "glShadeModel" );
glStencilFunc = dllStencilFunc = (glStencilFunc_t) GPA_GL( "glStencilFunc" );
glStencilMask = dllStencilMask = (glStencilMask_t) GPA_GL( "glStencilMask" );
glStencilOp = dllStencilOp = (glStencilOp_t) GPA_GL( "glStencilOp" );
glTexCoord1d = dllTexCoord1d = (glTexCoord1d_t) GPA_GL( "glTexCoord1d" );
glTexCoord1dv = dllTexCoord1dv = (glTexCoord1dv_t) GPA_GL( "glTexCoord1dv" );
glTexCoord1f = dllTexCoord1f = (glTexCoord1f_t) GPA_GL( "glTexCoord1f" );
glTexCoord1fv = dllTexCoord1fv = (glTexCoord1fv_t) GPA_GL( "glTexCoord1fv" );
glTexCoord1i = dllTexCoord1i = (glTexCoord1i_t) GPA_GL( "glTexCoord1i" );
glTexCoord1iv = dllTexCoord1iv = (glTexCoord1iv_t) GPA_GL( "glTexCoord1iv" );
glTexCoord1s = dllTexCoord1s = (glTexCoord1s_t) GPA_GL( "glTexCoord1s" );
glTexCoord1sv = dllTexCoord1sv = (glTexCoord1sv_t) GPA_GL( "glTexCoord1sv" );
glTexCoord2d = dllTexCoord2d = (glTexCoord2d_t) GPA_GL( "glTexCoord2d" );
glTexCoord2dv = dllTexCoord2dv = (glTexCoord2dv_t) GPA_GL( "glTexCoord2dv" );
glTexCoord2f = dllTexCoord2f = (glTexCoord2f_t) GPA_GL( "glTexCoord2f" );
glTexCoord2fv = dllTexCoord2fv = (glTexCoord2fv_t) GPA_GL( "glTexCoord2fv" );
glTexCoord2i = dllTexCoord2i = (glTexCoord2i_t) GPA_GL( "glTexCoord2i" );
glTexCoord2iv = dllTexCoord2iv = (glTexCoord2iv_t) GPA_GL( "glTexCoord2iv" );
glTexCoord2s = dllTexCoord2s = (glTexCoord2s_t) GPA_GL( "glTexCoord2s" );
glTexCoord2sv = dllTexCoord2sv = (glTexCoord2sv_t) GPA_GL( "glTexCoord2sv" );
glTexCoord3d = dllTexCoord3d = (glTexCoord3d_t) GPA_GL( "glTexCoord3d" );
glTexCoord3dv = dllTexCoord3dv = (glTexCoord3dv_t) GPA_GL( "glTexCoord3dv" );
glTexCoord3f = dllTexCoord3f = (glTexCoord3f_t) GPA_GL( "glTexCoord3f" );
glTexCoord3fv = dllTexCoord3fv = (glTexCoord3fv_t) GPA_GL( "glTexCoord3fv" );
glTexCoord3i = dllTexCoord3i = (glTexCoord3i_t) GPA_GL( "glTexCoord3i" );
glTexCoord3iv = dllTexCoord3iv = (glTexCoord3iv_t) GPA_GL( "glTexCoord3iv" );
glTexCoord3s = dllTexCoord3s = (glTexCoord3s_t) GPA_GL( "glTexCoord3s" );
glTexCoord3sv = dllTexCoord3sv = (glTexCoord3sv_t) GPA_GL( "glTexCoord3sv" );
glTexCoord4d = dllTexCoord4d = (glTexCoord4d_t) GPA_GL( "glTexCoord4d" );
glTexCoord4dv = dllTexCoord4dv = (glTexCoord4dv_t) GPA_GL( "glTexCoord4dv" );
glTexCoord4f = dllTexCoord4f = (glTexCoord4f_t) GPA_GL( "glTexCoord4f" );
glTexCoord4fv = dllTexCoord4fv = (glTexCoord4fv_t) GPA_GL( "glTexCoord4fv" );
glTexCoord4i = dllTexCoord4i = (glTexCoord4i_t) GPA_GL( "glTexCoord4i" );
glTexCoord4iv = dllTexCoord4iv = (glTexCoord4iv_t) GPA_GL( "glTexCoord4iv" );
glTexCoord4s = dllTexCoord4s = (glTexCoord4s_t) GPA_GL( "glTexCoord4s" );
glTexCoord4sv = dllTexCoord4sv = (glTexCoord4sv_t) GPA_GL( "glTexCoord4sv" );
glTexCoordPointer = dllTexCoordPointer = (glTexCoordPointer_t) GPA_GL( "glTexCoordPointer" );
glTexEnvf = dllTexEnvf = (glTexEnvf_t) GPA_GL( "glTexEnvf" );
glTexEnvfv = dllTexEnvfv = (glTexEnvfv_t) GPA_GL( "glTexEnvfv" );
glTexEnvi = dllTexEnvi = (glTexEnvi_t) GPA_GL( "glTexEnvi" );
glTexEnviv = dllTexEnviv = (glTexEnviv_t) GPA_GL( "glTexEnviv" );
glTexGend = dllTexGend = (glTexGend_t) GPA_GL( "glTexGend" );
glTexGendv = dllTexGendv = (glTexGendv_t) GPA_GL( "glTexGendv" );
glTexGenf = dllTexGenf = (glTexGenf_t) GPA_GL( "glTexGenf" );
glTexGenfv = dllTexGenfv = (glTexGenfv_t) GPA_GL( "glTexGenfv" );
glTexGeni = dllTexGeni = (glTexGeni_t) GPA_GL( "glTexGeni" );
glTexGeniv = dllTexGeniv = (glTexGeniv_t) GPA_GL( "glTexGeniv" );
glTexImage1D = dllTexImage1D = (glTexImage1D_t) GPA_GL( "glTexImage1D" );
glTexImage2D = dllTexImage2D = (glTexImage2D_t) GPA_GL( "glTexImage2D" );
glTexParameterf = dllTexParameterf = (glTexParameterf_t) GPA_GL( "glTexParameterf" );
glTexParameterfv = dllTexParameterfv = (glTexParameterfv_t) GPA_GL( "glTexParameterfv" );
glTexParameteri = dllTexParameteri = (glTexParameteri_t) GPA_GL( "glTexParameteri" );
glTexParameteriv = dllTexParameteriv = (glTexParameteriv_t) GPA_GL( "glTexParameteriv" );
glTexSubImage1D = dllTexSubImage1D = (glTexSubImage1D_t) GPA_GL( "glTexSubImage1D" );
glTexSubImage2D = dllTexSubImage2D = (glTexSubImage2D_t) GPA_GL( "glTexSubImage2D" );
glTranslated = dllTranslated = (glTranslated_t) GPA_GL( "glTranslated" );
glTranslatef = dllTranslatef = (glTranslatef_t) GPA_GL( "glTranslatef" );
glVertex2d = dllVertex2d = (glVertex2d_t) GPA_GL( "glVertex2d" );
glVertex2dv = dllVertex2dv = (glVertex2dv_t) GPA_GL( "glVertex2dv" );
glVertex2f = dllVertex2f = (glVertex2f_t) GPA_GL( "glVertex2f" );
glVertex2fv = dllVertex2fv = (glVertex2fv_t) GPA_GL( "glVertex2fv" );
glVertex2i = dllVertex2i = (glVertex2i_t) GPA_GL( "glVertex2i" );
glVertex2iv = dllVertex2iv = (glVertex2iv_t) GPA_GL( "glVertex2iv" );
glVertex2s = dllVertex2s = (glVertex2s_t) GPA_GL( "glVertex2s" );
glVertex2sv = dllVertex2sv = (glVertex2sv_t) GPA_GL( "glVertex2sv" );
glVertex3d = dllVertex3d = (glVertex3d_t) GPA_GL( "glVertex3d" );
glVertex3dv = dllVertex3dv = (glVertex3dv_t) GPA_GL( "glVertex3dv" );
glVertex3f = dllVertex3f = (glVertex3f_t) GPA_GL( "glVertex3f" );
glVertex3fv = dllVertex3fv = (glVertex3fv_t) GPA_GL( "glVertex3fv" );
glVertex3i = dllVertex3i = (glVertex3i_t) GPA_GL( "glVertex3i" );
glVertex3iv = dllVertex3iv = (glVertex3iv_t) GPA_GL( "glVertex3iv" );
glVertex3s = dllVertex3s = (glVertex3s_t) GPA_GL( "glVertex3s" );
glVertex3sv = dllVertex3sv = (glVertex3sv_t) GPA_GL( "glVertex3sv" );
glVertex4d = dllVertex4d = (glVertex4d_t) GPA_GL( "glVertex4d" );
glVertex4dv = dllVertex4dv = (glVertex4dv_t) GPA_GL( "glVertex4dv" );
glVertex4f = dllVertex4f = (glVertex4f_t) GPA_GL( "glVertex4f" );
glVertex4fv = dllVertex4fv = (glVertex4fv_t) GPA_GL( "glVertex4fv" );
glVertex4i = dllVertex4i = (glVertex4i_t) GPA_GL( "glVertex4i" );
glVertex4iv = dllVertex4iv = (glVertex4iv_t) GPA_GL( "glVertex4iv" );
glVertex4s = dllVertex4s = (glVertex4s_t) GPA_GL( "glVertex4s" );
glVertex4sv = dllVertex4sv = (glVertex4sv_t) GPA_GL( "glVertex4sv" );
glVertexPointer = dllVertexPointer = (glVertexPointer_t) GPA_GL( "glVertexPointer" );
glViewport = dllViewport = (glViewport_t) GPA_GL( "glViewport" );
qwglChoosePixelFormat = (qwglChoosePixelFormat_t) GPA_GL( "wglChoosePixelFormat" );
qwglDescribePixelFormat = (qwglDescribePixelFormat_t) GPA_GL( "wglDescribePixelFormat" );
qwglGetPixelFormat = (qwglGetPixelFormat_t) GPA_GL( "wglGetPixelFormat" );
qwglSetPixelFormat = (qwglSetPixelFormat_t) GPA_GL( "wglSetPixelFormat" );
dllSwapBuffers = qwglSwapBuffers = (qwglSwapBuffers_t) GPA_GL( "wglSwapBuffers" );
if (dStrstr(dllname_gl,"D3D") != NULL)
{
qwglUseFontBitmaps = (qwglUseFontBitmaps_t) GPA_GL( "wd3dUseFontBitmapsA" );
qwglUseFontOutlines = (qwglUseFontOutlines_t) GPA_GL( "wd3dUseFontOutlinesA" );
qwglCreateContext = (qwglCreateContext_t) GPA_GL( "wd3dCreateContext" );
qwglDeleteContext = (qwglDeleteContext_t) GPA_GL( "wd3dDeleteContext" );
qwglGetCurrentContext = (qwglGetCurrentContext_t) GPA_GL( "wd3dGetCurrentContext" );
qwglGetCurrentDC = (qwglGetCurrentDC_t) GPA_GL( "wd3dGetCurrentDC" );
qwglGetProcAddress = (qwglGetProcAddress_t) GPA_GL( "wd3dGetProcAddress" );
qwglMakeCurrent = (qwglMakeCurrent_t) GPA_GL( "wd3dMakeCurrent" );
qwglCopyContext = (qwglCopyContext_t) GPA_GL( "wd3dCopyContext" );
qwglCreateLayerContext = (qwglCreateLayerContext_t) GPA_GL( "wd3dCreateLayerContext" );
qwglDescribeLayerPlane = (qwglDescribeLayerPlane_t) GPA_GL( "wd3dDescribeLayerPlane" );
qwglGetLayerPaletteEntries = (qwglGetLayerPaletteEntries_t) GPA_GL( "wd3dGetLayerPaletteEntries" );
qwglRealizeLayerPalette = (qwglRealizeLayerPalette_t) GPA_GL( "wd3dRealizeLayerPalette" );
qwglSetLayerPaletteEntries = (qwglSetLayerPaletteEntries_t) GPA_GL( "wd3dSetLayerPaletteEntries" );
qwglShareLists = (qwglShareLists_t) GPA_GL( "wd3dShareLists" );
qwglSwapLayerBuffers = (qwglSwapLayerBuffers_t) GPA_GL( "wd3dSwapLayerBuffers" );
}
else
{
qwglUseFontBitmaps = (qwglUseFontBitmaps_t) GPA_GL( "wglUseFontBitmapsA" );
qwglUseFontOutlines = (qwglUseFontOutlines_t) GPA_GL( "wglUseFontOutlinesA" );
qwglCreateContext = (qwglCreateContext_t) GPA_GL( "wglCreateContext" );
qwglDeleteContext = (qwglDeleteContext_t) GPA_GL( "wglDeleteContext" );
qwglGetCurrentContext = (qwglGetCurrentContext_t) GPA_GL( "wglGetCurrentContext" );
qwglGetCurrentDC = (qwglGetCurrentDC_t) GPA_GL( "wglGetCurrentDC" );
qwglGetProcAddress = (qwglGetProcAddress_t) GPA_GL( "wglGetProcAddress" );
qwglMakeCurrent = (qwglMakeCurrent_t) GPA_GL( "wglMakeCurrent" );
qwglCopyContext = (qwglCopyContext_t) GPA_GL( "wglCopyContext" );
qwglCreateLayerContext = (qwglCreateLayerContext_t) GPA_GL( "wglCreateLayerContext" );
qwglDescribeLayerPlane = (qwglDescribeLayerPlane_t) GPA_GL( "wglDescribeLayerPlane" );
qwglGetLayerPaletteEntries = (qwglGetLayerPaletteEntries_t) GPA_GL( "wglGetLayerPaletteEntries" );
qwglRealizeLayerPalette = (qwglRealizeLayerPalette_t) GPA_GL( "wglRealizeLayerPalette" );
qwglSetLayerPaletteEntries = (qwglSetLayerPaletteEntries_t) GPA_GL( "wglSetLayerPaletteEntries" );
qwglShareLists = (qwglShareLists_t) GPA_GL( "wglShareLists" );
qwglSwapLayerBuffers = (qwglSwapLayerBuffers_t) GPA_GL( "wglSwapLayerBuffers" );
}
qwglSwapIntervalEXT = 0;
return true;
}
bool QGL_EXT_Init( )
{
// Load extensions...
//
const char* pExtString = reinterpret_cast<const char*>(glGetString(GL_EXTENSIONS));
gGLState.primMode = 0;
// extern void ( GLAPIENTRY* glColorTableEXT)(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void* data);
// EXT_paletted_texture
if (pExtString && dStrstr(pExtString, (const char*)"GL_EXT_paletted_texture") != NULL)
{
glColorTableEXT = dllColorTableEXT = (glColorTable_t) qwglGetProcAddress("glColorTableEXT");
gGLState.suppPalettedTexture = true;
}
else
{
gGLState.suppPalettedTexture = false;
}
// EXT_compiled_vertex_array
if (pExtString && dStrstr(pExtString, (const char*)"GL_EXT_compiled_vertex_array") != NULL)
{
glLockArraysEXT = dllLockArraysEXT = (glLockArrays_t) qwglGetProcAddress("glLockArraysEXT");
glUnlockArraysEXT = dllUnlockArraysEXT = (glUnlockArrays_t) qwglGetProcAddress("glUnlockArraysEXT");
gGLState.suppLockedArrays = true;
}
else
{
glLockArraysEXT = dllLockArraysEXT = NULL;
glUnlockArraysEXT = dllUnlockArraysEXT = NULL;
gGLState.suppLockedArrays = false;
}
// ARB_multitexture
if (pExtString && dStrstr(pExtString, (const char*)"GL_ARB_multitexture") != NULL) {
glActiveTextureARB = dllActiveTextureARB = (glActiveTextureARB_t) qwglGetProcAddress("glActiveTextureARB");
glClientActiveTextureARB = dllClientActiveTextureARB = (glClientActiveTextureARB_t) qwglGetProcAddress("glClientActiveTextureARB");
glMultiTexCoord2fARB = dllMultiTexCoord2fARB = (glMultiTexCoord2fARB_t) qwglGetProcAddress("glMultiTexCoord2fARB");
glMultiTexCoord2fvARB = dllMultiTexCoord2fvARB = (glMultiTexCoord2fvARB_t) qwglGetProcAddress("glMultiTexCoord2fvARB");
gGLState.suppARBMultitexture = true;
} else {
glActiveTextureARB = dllActiveTextureARB = NULL;
glClientActiveTextureARB = dllClientActiveTextureARB = NULL;
glMultiTexCoord2fARB = dllMultiTexCoord2fARB = NULL;
glMultiTexCoord2fvARB = dllMultiTexCoord2fvARB = NULL;
gGLState.suppARBMultitexture = false;
}
// NV_vertex_array_range
if (pExtString && dStrstr(pExtString, (const char*)"GL_NV_vertex_array_range") != NULL) {
glVertexArrayRangeNV = dllVertexArrayRangeNV = (glVertexArrayRange_t) qwglGetProcAddress("glVertexArrayRangeNV");
glFlushVertexArrayRangeNV = dllFlushVertexArrayRangeNV = (glFlushVertexArrayRange_t) qwglGetProcAddress("glFlushVertexArrayRangeNV");
wglAllocateMemoryNV = dllAllocateMemoryNV = (wglAllocateMemory_t) qwglGetProcAddress("wglAllocateMemoryNV");
wglFreeMemoryNV = dllFreeMemoryNV = (wglFreeMemory_t) qwglGetProcAddress("wglFreeMemoryNV");
gGLState.suppVertexArrayRange = true;
} else {
glVertexArrayRangeNV = dllVertexArrayRangeNV = NULL;
glFlushVertexArrayRangeNV = dllFlushVertexArrayRangeNV = NULL;
wglAllocateMemoryNV = dllAllocateMemoryNV = NULL;
wglFreeMemoryNV = dllFreeMemoryNV = NULL;
gGLState.suppVertexArrayRange = false;
}
// EXT_fog_coord
if (pExtString && dStrstr(pExtString, (const char*)"GL_EXT_fog_coord") != NULL) {
glFogCoordfEXT = dllFogCoordfEXT = (glFogCoordf_t) qwglGetProcAddress("glFogCoordfEXT");
glFogCoordPointerEXT = dllFogCoordPointerEXT = (glFogCoordPointer_t) qwglGetProcAddress("glFogCoordPointerEXT");
gGLState.suppFogCoord = true;
} else {
glFogCoordfEXT = dllFogCoordfEXT = NULL;
glFogCoordPointerEXT = dllFogCoordPointerEXT = NULL;
gGLState.suppFogCoord = false;
}
// ARB_texture_compression
if (pExtString && dStrstr(pExtString, (const char*)"GL_ARB_texture_compression") != NULL) {
glCompressedTexImage3DARB = dllCompressedTexImage3DARB = (glCompressedTexImage3DARB_t) qwglGetProcAddress("glCompressedTexImage3DARB");
glCompressedTexImage2DARB = dllCompressedTexImage2DARB = (glCompressedTexImage2DARB_t) qwglGetProcAddress("glCompressedTexImage2DARB");
glCompressedTexImage1DARB = dllCompressedTexImage1DARB = (glCompressedTexImage1DARB_t) qwglGetProcAddress("glCompressedTexImage1DARB");
glCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = (glCompressedTexSubImage3DARB_t) qwglGetProcAddress("glCompressedTexSubImage3DARB");
glCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = (glCompressedTexSubImage2DARB_t) qwglGetProcAddress("glCompressedTexSubImage2DARB");
glCompressedTexSubImage1DARB = dllCompressedTexSubImage1DARB = (glCompressedTexSubImage1DARB_t) qwglGetProcAddress("glCompressedTexSubImage1DARB");
glGetCompressedTexImageARB = dllGetCompressedTexImageARB = (glGetCompressedTexImageARB_t) qwglGetProcAddress("glGetCompressedTexImageARB");
gGLState.suppTextureCompression = true;
} else {
glCompressedTexImage3DARB = dllCompressedTexImage3DARB = NULL;
glCompressedTexImage2DARB = dllCompressedTexImage2DARB = NULL;
glCompressedTexImage1DARB = dllCompressedTexImage1DARB = NULL;
glCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB = NULL;
glCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB = NULL;
glCompressedTexSubImage1DARB = dllCompressedTexSubImage1DARB = NULL;
glGetCompressedTexImageARB = dllGetCompressedTexImageARB = NULL;
gGLState.suppTextureCompression = false;
}
// 3DFX_texture_compression_FXT1
if (pExtString && dStrstr(pExtString, (const char*)"GL_3DFX_texture_compression_FXT1") != NULL)
gGLState.suppFXT1 = true;
else
gGLState.suppFXT1 = false;
// EXT_texture_compression_S3TC
if (pExtString && dStrstr(pExtString, (const char*)"GL_EXT_texture_compression_s3tc") != NULL)
gGLState.suppS3TC = true;
else
gGLState.suppS3TC = false;
// WGL_3DFX_gamma_control
if (pExtString && dStrstr(pExtString, (const char*)"WGL_3DFX_gamma_control" ) != NULL)
{
qwglGetDeviceGammaRamp3DFX = (qwglGetDeviceGammaRamp3DFX_t) qwglGetProcAddress( "wglGetDeviceGammaRamp3DFX" );
qwglSetDeviceGammaRamp3DFX = (qwglSetDeviceGammaRamp3DFX_t) qwglGetProcAddress( "wglSetDeviceGammaRamp3DFX" );
}
else
{
qwglGetDeviceGammaRamp3DFX = NULL;
qwglSetDeviceGammaRamp3DFX = NULL;
}
if (pExtString && dStrstr(pExtString, (const char*)"GL_EXT_vertex_buffer") != NULL)
{
glAvailableVertexBufferEXT = dllAvailableVertexBufferEXT = (glAvailableVertexBufferEXT_t) qwglGetProcAddress("glAvailableVertexBufferEXT");
glAllocateVertexBufferEXT = dllAllocateVertexBufferEXT = (glAllocateVertexBufferEXT_t) qwglGetProcAddress("glAllocateVertexBufferEXT");
glLockVertexBufferEXT = dllLockVertexBufferEXT = (glLockVertexBufferEXT_t) qwglGetProcAddress("glLockVertexBufferEXT");
glUnlockVertexBufferEXT = dllUnlockVertexBufferEXT = (glUnlockVertexBufferEXT_t) qwglGetProcAddress("glUnlockVertexBufferEXT");
glSetVertexBufferEXT = dllSetVertexBufferEXT = (glSetVertexBufferEXT_t) qwglGetProcAddress("glSetVertexBufferEXT");
glOffsetVertexBufferEXT = dllOffsetVertexBufferEXT = (glOffsetVertexBufferEXT_t) qwglGetProcAddress("glOffsetVertexBufferEXT");
glFillVertexBufferEXT = dllFillVertexBufferEXT = (glFillVertexBufferEXT_t) qwglGetProcAddress("glFillVertexBufferEXT");
glFreeVertexBufferEXT = dllFreeVertexBufferEXT = (glFreeVertexBufferEXT_t) qwglGetProcAddress("glFreeVertexBufferEXT");
gGLState.suppVertexBuffer = true;
}
else
{
glAvailableVertexBufferEXT = dllAvailableVertexBufferEXT = NULL;
glAllocateVertexBufferEXT = dllAllocateVertexBufferEXT = NULL;
glLockVertexBufferEXT = dllLockVertexBufferEXT = NULL;
glUnlockVertexBufferEXT = dllUnlockVertexBufferEXT = NULL;
glSetVertexBufferEXT = dllSetVertexBufferEXT = NULL;
glOffsetVertexBufferEXT = dllOffsetVertexBufferEXT = NULL;
glFillVertexBufferEXT = dllFillVertexBufferEXT = NULL;
glFreeVertexBufferEXT = dllFreeVertexBufferEXT = NULL;
gGLState.suppVertexBuffer = false;
}
// Binary states, i.e., no supporting functions
// EXT_packed_pixels
// EXT_texture_env_combine
//
gGLState.suppPackedPixels = pExtString? (dStrstr(pExtString, (const char*)"GL_EXT_packed_pixels") != NULL) : false;
gGLState.suppTextureEnvCombine = pExtString? (dStrstr(pExtString, (const char*)"GL_EXT_texture_env_combine") != NULL) : false;
gGLState.suppEdgeClamp = pExtString? (dStrstr(pExtString, (const char*)"GL_EXT_texture_edge_clamp") != NULL) : false;
gGLState.suppTexEnvAdd = pExtString? (dStrstr(pExtString, (const char*)"GL_ARB_texture_env_add") != NULL) : false;
gGLState.suppTexEnvAdd |= pExtString? (dStrstr(pExtString, (const char*)"GL_EXT_texture_env_add") != NULL) : false;
// Anisotropic filtering
gGLState.suppTexAnisotropic = pExtString? (dStrstr(pExtString, (const char*)"GL_EXT_texture_filter_anisotropic") != NULL) : false;
if (gGLState.suppTexAnisotropic)
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &gGLState.maxAnisotropy);
if (gGLState.suppARBMultitexture)
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gGLState.maxTextureUnits);
else
gGLState.maxTextureUnits = 1;
// Swap interval
if (pExtString && dStrstr(pExtString, (const char*)"WGL_EXT_swap_control") != NULL)
{
qwglSwapIntervalEXT = (qwglSwapIntervalEXT_t) qwglGetProcAddress( "wglSwapIntervalEXT" );
gGLState.suppSwapInterval = ( qwglSwapIntervalEXT != NULL );
}
else
{
qwglSwapIntervalEXT = NULL;
gGLState.suppSwapInterval = false;
}
Con::printf("OpenGL Init: Enabled Extensions");
if (gGLState.suppARBMultitexture) Con::printf(" ARB_multitexture (Max Texture Units: %d)", gGLState.maxTextureUnits);
if (gGLState.suppPalettedTexture) Con::printf(" EXT_paletted_texture");
if (gGLState.suppLockedArrays) Con::printf(" EXT_compiled_vertex_array");
if (gGLState.suppVertexArrayRange) Con::printf(" NV_vertex_array_range");
if (gGLState.suppTextureEnvCombine) Con::printf(" EXT_texture_env_combine");
if (gGLState.suppPackedPixels) Con::printf(" EXT_packed_pixels");
if (gGLState.suppFogCoord) Con::printf(" EXT_fog_coord");
if (gGLState.suppTextureCompression) Con::printf(" ARB_texture_compression");
if (gGLState.suppS3TC) Con::printf(" EXT_texture_compression_s3tc");
if (gGLState.suppFXT1) Con::printf(" 3DFX_texture_compression_FXT1");
if (gGLState.suppTexEnvAdd) Con::printf(" (ARB|EXT)_texture_env_add");
if (gGLState.suppTexAnisotropic) Con::printf(" EXT_texture_filter_anisotropic (Max anisotropy: %f)", gGLState.maxAnisotropy);
if (gGLState.suppSwapInterval) Con::printf(" WGL_EXT_swap_control");
Con::warnf("OpenGL Init: Disabled Extensions");
if (!gGLState.suppARBMultitexture) Con::warnf(" ARB_multitexture");
if (!gGLState.suppPalettedTexture) Con::warnf(" EXT_paletted_texture");
if (!gGLState.suppLockedArrays) Con::warnf(" EXT_compiled_vertex_array");
if (!gGLState.suppVertexArrayRange) Con::warnf(" NV_vertex_array_range");
if (!gGLState.suppTextureEnvCombine) Con::warnf(" EXT_texture_env_combine");
if (!gGLState.suppPackedPixels) Con::warnf(" EXT_packed_pixels");
if (!gGLState.suppFogCoord) Con::warnf(" EXT_fog_coord");
if (!gGLState.suppTextureCompression) Con::warnf(" ARB_texture_compression");
if (!gGLState.suppS3TC) Con::warnf(" EXT_texture_compression_s3tc");
if (!gGLState.suppFXT1) Con::warnf(" 3DFX_texture_compression_FXT1");
if (!gGLState.suppTexEnvAdd) Con::warnf(" (ARB|EXT)_texture_env_add");
if (!gGLState.suppTexAnisotropic) Con::warnf(" EXT_texture_filter_anisotropic");
if (!gGLState.suppSwapInterval) Con::warnf(" WGL_EXT_swap_control");
Con::printf("");
// Set some console variables:
Con::setBoolVariable( "$FogCoordSupported", gGLState.suppFogCoord );
Con::setBoolVariable( "$TextureCompressionSupported", gGLState.suppTextureCompression );
Con::setBoolVariable( "$AnisotropySupported", gGLState.suppTexAnisotropic );
Con::setBoolVariable( "$PalettedTextureSupported", gGLState.suppPalettedTexture );
Con::setBoolVariable( "$SwapIntervalSupported", gGLState.suppSwapInterval );
if (!gGLState.suppPalettedTexture && Con::getBoolVariable("$pref::OpenGL::forcePalettedTexture",false))
{
Con::setBoolVariable("$pref::OpenGL::forcePalettedTexture", false);
Con::setBoolVariable("$pref::OpenGL::force16BitTexture", true);
}
return true;
}
//--------------------------------------
static bool loggingEnabled = false;
static bool outlineEnabled = false;
static bool perfEnabled = false;
#if defined (DEBUG) || defined(INTERNAL_RELEASE)
ConsoleFunction(GLEnableLogging, void, 2, 2, "GLEnableLogging(bool);")
{
argc;
bool enable = dAtob(argv[1]);
if(loggingEnabled == enable)
return;
if(enable && (outlineEnabled || perfEnabled))
return;
loggingEnabled = enable;
if ( enable )
{
if ( !winState.log_fp )
{
struct tm *newtime;
time_t aclock;
time( &aclock );
newtime = localtime( &aclock );
asctime( newtime );
winState.log_fp = fopen( "gl_log.txt", "wt" );
fprintf( winState.log_fp, "%s\n", asctime( newtime ) );
fflush(winState.log_fp);
}
// GLU Functions
gluOrtho2D = loggluOrtho2D;
gluPerspective = loggluPerspective;
gluPickMatrix = loggluPickMatrix;
gluLookAt = loggluLookAt;
gluProject = loggluProject;
gluUnProject = loggluUnProject;
gluScaleImage = loggluScaleImage;
gluBuild1DMipmaps = loggluBuild1DMipmaps;
gluBuild2DMipmaps = loggluBuild2DMipmaps;
// GL Functions
glAccum = logAccum;
glAlphaFunc = logAlphaFunc;
glAreTexturesResident = logAreTexturesResident;
glArrayElement = logArrayElement;
glBegin = logBegin;
glBindTexture = logBindTexture;
glBitmap = logBitmap;
glBlendFunc = logBlendFunc;
glCallList = logCallList;
glCallLists = logCallLists;
glClear = logClear;
glClearAccum = logClearAccum;
glClearColor = logClearColor;
glClearDepth = logClearDepth;
glClearIndex = logClearIndex;
glClearStencil = logClearStencil;
glClipPlane = logClipPlane;
glColor3b = logColor3b;
glColor3bv = logColor3bv;
glColor3d = logColor3d;
glColor3dv = logColor3dv;
glColor3f = logColor3f;
glColor3fv = logColor3fv;
glColor3i = logColor3i;
glColor3iv = logColor3iv;
glColor3s = logColor3s;
glColor3sv = logColor3sv;
glColor3ub = logColor3ub;
glColor3ubv = logColor3ubv;
glColor3ui = logColor3ui;
glColor3uiv = logColor3uiv;
glColor3us = logColor3us;
glColor3usv = logColor3usv;
glColor4b = logColor4b;
glColor4bv = logColor4bv;
glColor4d = logColor4d;
glColor4dv = logColor4dv;
glColor4f = logColor4f;
glColor4fv = logColor4fv;
glColor4i = logColor4i;
glColor4iv = logColor4iv;
glColor4s = logColor4s;
glColor4sv = logColor4sv;
glColor4ub = logColor4ub;
glColor4ubv = logColor4ubv;
glColor4ui = logColor4ui;
glColor4uiv = logColor4uiv;
glColor4us = logColor4us;
glColor4usv = logColor4usv;
glColorMask = logColorMask;
glColorMaterial = logColorMaterial;
glColorPointer = logColorPointer;
glCopyPixels = logCopyPixels;
glCopyTexImage1D = logCopyTexImage1D;
glCopyTexImage2D = logCopyTexImage2D;
glCopyTexSubImage1D = logCopyTexSubImage1D;
glCopyTexSubImage2D = logCopyTexSubImage2D;
glCullFace = logCullFace;
glDeleteLists = logDeleteLists ;
glDeleteTextures = logDeleteTextures;
glDepthFunc = logDepthFunc;
glDepthMask = logDepthMask;
glDepthRange = logDepthRange;
glDisable = logDisable;
glDisableClientState = logDisableClientState;
glDrawArrays = logDrawArrays;
glDrawBuffer = logDrawBuffer;
glDrawElements = logDrawElements;
glDrawPixels = logDrawPixels;
glEdgeFlag = logEdgeFlag;
glEdgeFlagPointer = logEdgeFlagPointer;
glEdgeFlagv = logEdgeFlagv;
glEnable = logEnable;
glEnableClientState = logEnableClientState;
glEnd = logEnd;
glEndList = logEndList;
glEvalCoord1d = logEvalCoord1d;
glEvalCoord1dv = logEvalCoord1dv;
glEvalCoord1f = logEvalCoord1f;
glEvalCoord1fv = logEvalCoord1fv;
glEvalCoord2d = logEvalCoord2d;
glEvalCoord2dv = logEvalCoord2dv;
glEvalCoord2f = logEvalCoord2f;
glEvalCoord2fv = logEvalCoord2fv;
glEvalMesh1 = logEvalMesh1;
glEvalMesh2 = logEvalMesh2;
glEvalPoint1 = logEvalPoint1;
glEvalPoint2 = logEvalPoint2;
glFeedbackBuffer = logFeedbackBuffer;
glFinish = logFinish;
glFlush = logFlush;
glFogf = logFogf;
glFogfv = logFogfv;
glFogi = logFogi;
glFogiv = logFogiv;
glFrontFace = logFrontFace;
glFrustum = logFrustum;
glGenLists = logGenLists;
glGenTextures = logGenTextures;
glGetBooleanv = logGetBooleanv;
glGetClipPlane = logGetClipPlane;
glGetDoublev = logGetDoublev;
glGetError = logGetError;
glGetFloatv = logGetFloatv;
glGetIntegerv = logGetIntegerv;
glGetLightfv = logGetLightfv;
glGetLightiv = logGetLightiv;
glGetMapdv = logGetMapdv;
glGetMapfv = logGetMapfv;
glGetMapiv = logGetMapiv;
glGetMaterialfv = logGetMaterialfv;
glGetMaterialiv = logGetMaterialiv;
glGetPixelMapfv = logGetPixelMapfv;
glGetPixelMapuiv = logGetPixelMapuiv;
glGetPixelMapusv = logGetPixelMapusv;
glGetPointerv = logGetPointerv;
glGetPolygonStipple = logGetPolygonStipple;
glGetString = logGetString;
glGetTexEnvfv = logGetTexEnvfv;
glGetTexEnviv = logGetTexEnviv;
glGetTexGendv = logGetTexGendv;
glGetTexGenfv = logGetTexGenfv;
glGetTexGeniv = logGetTexGeniv;
glGetTexImage = logGetTexImage;
glGetTexLevelParameterfv = logGetTexLevelParameterfv;
glGetTexLevelParameteriv = logGetTexLevelParameteriv;
glGetTexParameterfv = logGetTexParameterfv;
glGetTexParameteriv = logGetTexParameteriv;
glHint = logHint;
glIndexMask = logIndexMask;
glIndexPointer = logIndexPointer;
glIndexd = logIndexd;
glIndexdv = logIndexdv;
glIndexf = logIndexf;
glIndexfv = logIndexfv;
glIndexi = logIndexi;
glIndexiv = logIndexiv;
glIndexs = logIndexs;
glIndexsv = logIndexsv;
glIndexub = logIndexub;
glIndexubv = logIndexubv;
glInitNames = logInitNames;
glInterleavedArrays = logInterleavedArrays;
glIsEnabled = logIsEnabled;
glIsList = logIsList;
glIsTexture = logIsTexture;
glLightModelf = logLightModelf;
glLightModelfv = logLightModelfv;
glLightModeli = logLightModeli;
glLightModeliv = logLightModeliv;
glLightf = logLightf;
glLightfv = logLightfv;
glLighti = logLighti;
glLightiv = logLightiv;
glLineStipple = logLineStipple;
glLineWidth = logLineWidth;
glListBase = logListBase;
glLoadIdentity = logLoadIdentity;
glLoadMatrixd = logLoadMatrixd;
glLoadMatrixf = logLoadMatrixf;
glLoadName = logLoadName;
glLogicOp = logLogicOp;
glMap1d = logMap1d;
glMap1f = logMap1f;
glMap2d = logMap2d;
glMap2f = logMap2f;
glMapGrid1d = logMapGrid1d;
glMapGrid1f = logMapGrid1f;
glMapGrid2d = logMapGrid2d;
glMapGrid2f = logMapGrid2f;
glMaterialf = logMaterialf;
glMaterialfv = logMaterialfv;
glMateriali = logMateriali;
glMaterialiv = logMaterialiv;
glMatrixMode = logMatrixMode;
glMultMatrixd = logMultMatrixd;
glMultMatrixf = logMultMatrixf;
glNewList = logNewList;
glNormal3b = logNormal3b;
glNormal3bv = logNormal3bv;
glNormal3d = logNormal3d;
glNormal3dv = logNormal3dv;
glNormal3f = logNormal3f;
glNormal3fv = logNormal3fv;
glNormal3i = logNormal3i;
glNormal3iv = logNormal3iv;
glNormal3s = logNormal3s;
glNormal3sv = logNormal3sv;
glNormalPointer = logNormalPointer;
glOrtho = logOrtho;
glPassThrough = logPassThrough;
glPixelMapfv = logPixelMapfv;
glPixelMapuiv = logPixelMapuiv;
glPixelMapusv = logPixelMapusv;
glPixelStoref = logPixelStoref;
glPixelStorei = logPixelStorei;
glPixelTransferf = logPixelTransferf;
glPixelTransferi = logPixelTransferi;
glPixelZoom = logPixelZoom;
glPointSize = logPointSize;
glPolygonMode = logPolygonMode;
glPolygonOffset = logPolygonOffset;
glPolygonStipple = logPolygonStipple;
glPopAttrib = logPopAttrib;
glPopClientAttrib = logPopClientAttrib;
glPopMatrix = logPopMatrix;
glPopName = logPopName;
glPrioritizeTextures = logPrioritizeTextures;
glPushAttrib = logPushAttrib;
glPushClientAttrib = logPushClientAttrib;
glPushMatrix = logPushMatrix;
glPushName = logPushName;
glRasterPos2d = logRasterPos2d;
glRasterPos2dv = logRasterPos2dv;
glRasterPos2f = logRasterPos2f;
glRasterPos2fv = logRasterPos2fv;
glRasterPos2i = logRasterPos2i;
glRasterPos2iv = logRasterPos2iv;
glRasterPos2s = logRasterPos2s;
glRasterPos2sv = logRasterPos2sv;
glRasterPos3d = logRasterPos3d;
glRasterPos3dv = logRasterPos3dv;
glRasterPos3f = logRasterPos3f;
glRasterPos3fv = logRasterPos3fv;
glRasterPos3i = logRasterPos3i;
glRasterPos3iv = logRasterPos3iv;
glRasterPos3s = logRasterPos3s;
glRasterPos3sv = logRasterPos3sv;
glRasterPos4d = logRasterPos4d;
glRasterPos4dv = logRasterPos4dv;
glRasterPos4f = logRasterPos4f;
glRasterPos4fv = logRasterPos4fv;
glRasterPos4i = logRasterPos4i;
glRasterPos4iv = logRasterPos4iv;
glRasterPos4s = logRasterPos4s;
glRasterPos4sv = logRasterPos4sv;
glReadBuffer = logReadBuffer;
glReadPixels = logReadPixels;
glRectd = logRectd;
glRectdv = logRectdv;
glRectf = logRectf;
glRectfv = logRectfv;
glRecti = logRecti;
glRectiv = logRectiv;
glRects = logRects;
glRectsv = logRectsv;
glRenderMode = logRenderMode;
glRotated = logRotated;
glRotatef = logRotatef;
glScaled = logScaled;
glScalef = logScalef;
glScissor = logScissor;
glSelectBuffer = logSelectBuffer;
glShadeModel = logShadeModel;
glStencilFunc = logStencilFunc;
glStencilMask = logStencilMask;
glStencilOp = logStencilOp;
glTexCoord1d = logTexCoord1d;
glTexCoord1dv = logTexCoord1dv;
glTexCoord1f = logTexCoord1f;
glTexCoord1fv = logTexCoord1fv;
glTexCoord1i = logTexCoord1i;
glTexCoord1iv = logTexCoord1iv;
glTexCoord1s = logTexCoord1s;
glTexCoord1sv = logTexCoord1sv;
glTexCoord2d = logTexCoord2d;
glTexCoord2dv = logTexCoord2dv;
glTexCoord2f = logTexCoord2f;
glTexCoord2fv = logTexCoord2fv;
glTexCoord2i = logTexCoord2i;
glTexCoord2iv = logTexCoord2iv;
glTexCoord2s = logTexCoord2s;
glTexCoord2sv = logTexCoord2sv;
glTexCoord3d = logTexCoord3d;
glTexCoord3dv = logTexCoord3dv;
glTexCoord3f = logTexCoord3f;
glTexCoord3fv = logTexCoord3fv;
glTexCoord3i = logTexCoord3i;
glTexCoord3iv = logTexCoord3iv;
glTexCoord3s = logTexCoord3s;
glTexCoord3sv = logTexCoord3sv;
glTexCoord4d = logTexCoord4d;
glTexCoord4dv = logTexCoord4dv;
glTexCoord4f = logTexCoord4f;
glTexCoord4fv = logTexCoord4fv;
glTexCoord4i = logTexCoord4i;
glTexCoord4iv = logTexCoord4iv;
glTexCoord4s = logTexCoord4s;
glTexCoord4sv = logTexCoord4sv;
glTexCoordPointer = logTexCoordPointer;
glTexEnvf = logTexEnvf;
glTexEnvfv = logTexEnvfv;
glTexEnvi = logTexEnvi;
glTexEnviv = logTexEnviv;
glTexGend = logTexGend;
glTexGendv = logTexGendv;
glTexGenf = logTexGenf;
glTexGenfv = logTexGenfv;
glTexGeni = logTexGeni;
glTexGeniv = logTexGeniv;
glTexImage1D = logTexImage1D;
glTexImage2D = logTexImage2D;
glTexParameterf = logTexParameterf;
glTexParameterfv = logTexParameterfv;
glTexParameteri = logTexParameteri;
glTexParameteriv = logTexParameteriv;
glTexSubImage1D = logTexSubImage1D;
glTexSubImage2D = logTexSubImage2D;
glTranslated = logTranslated;
glTranslatef = logTranslatef;
glVertex2d = logVertex2d;
glVertex2dv = logVertex2dv;
glVertex2f = logVertex2f;
glVertex2fv = logVertex2fv;
glVertex2i = logVertex2i;
glVertex2iv = logVertex2iv;
glVertex2s = logVertex2s;
glVertex2sv = logVertex2sv;
glVertex3d = logVertex3d;
glVertex3dv = logVertex3dv;
glVertex3f = logVertex3f;
glVertex3fv = logVertex3fv;
glVertex3i = logVertex3i;
glVertex3iv = logVertex3iv;
glVertex3s = logVertex3s;
glVertex3sv = logVertex3sv;
glVertex4d = logVertex4d;
glVertex4dv = logVertex4dv;
glVertex4f = logVertex4f;
glVertex4fv = logVertex4fv;
glVertex4i = logVertex4i;
glVertex4iv = logVertex4iv;
glVertex4s = logVertex4s;
glVertex4sv = logVertex4sv;
glVertexPointer = logVertexPointer;
glViewport = logViewport;
if (dglDoesSupportPalettedTexture())
{
glColorTableEXT = logColorTableEXT;
}
if (dglDoesSupportCompiledVertexArray()) {
glLockArraysEXT = logLockArraysEXT;
glUnlockArraysEXT = logUnlockArraysEXT;
}
if (dglDoesSupportARBMultitexture()) {
glActiveTextureARB = logActiveTextureARB;
glClientActiveTextureARB = logClientActiveTextureARB;
glMultiTexCoord2fARB = logMultiTexCoord2fARB;
glMultiTexCoord2fvARB = logMultiTexCoord2fvARB;
}
if (dglDoesSupportVertexArrayRange()) {
glVertexArrayRangeNV = logVertexArrayRangeNV;
glFlushVertexArrayRangeNV = logFlushVertexArrayRangeNV;
wglAllocateMemoryNV = logAllocateMemoryNV;
wglFreeMemoryNV = logFreeMemoryNV;
}
if (dglDoesSupportFogCoord()) {
glFogCoordfEXT = logFogCoordfEXT;
glFogCoordPointerEXT = logFogCoordPointerEXT;
}
if (dglDoesSupportTextureCompression()) {
glCompressedTexImage3DARB = logCompressedTexImage3DARB;
glCompressedTexImage2DARB = logCompressedTexImage2DARB;
glCompressedTexImage1DARB = logCompressedTexImage1DARB;
glCompressedTexSubImage3DARB = logCompressedTexSubImage3DARB;
glCompressedTexSubImage2DARB = logCompressedTexSubImage2DARB;
glCompressedTexSubImage1DARB = logCompressedTexSubImage1DARB;
glGetCompressedTexImageARB = logGetCompressedTexImageARB;
}
if (dglDoesSupportVertexBuffer()) {
glAvailableVertexBufferEXT = logAvailableVertexBufferEXT;
glAllocateVertexBufferEXT = logAllocateVertexBufferEXT;
glLockVertexBufferEXT = logLockVertexBufferEXT;
glUnlockVertexBufferEXT = logUnlockVertexBufferEXT;
glSetVertexBufferEXT = logSetVertexBufferEXT;
glOffsetVertexBufferEXT = logOffsetVertexBufferEXT;
glFillVertexBufferEXT = logFillVertexBufferEXT;
glFreeVertexBufferEXT = logFreeVertexBufferEXT;
}
}
else
{
if ( winState.log_fp ) {
fprintf( winState.log_fp, "*** CLOSING LOG ***\n" );
fflush(winState.log_fp);
fclose( winState.log_fp );
winState.log_fp = NULL;
}
// GLU Functions
gluOrtho2D = dllgluOrtho2D;
gluPerspective = dllgluPerspective;
gluPickMatrix = dllgluPickMatrix;
gluLookAt = dllgluLookAt;
gluProject = dllgluProject;
gluUnProject = dllgluUnProject;
gluScaleImage = dllgluScaleImage;
gluBuild1DMipmaps = dllgluBuild1DMipmaps;
gluBuild2DMipmaps = dllgluBuild2DMipmaps;
// GL Functions
glAccum = dllAccum;
glAlphaFunc = dllAlphaFunc;
glAreTexturesResident = dllAreTexturesResident;
glArrayElement = dllArrayElement;
glBegin = dllBegin;
glBindTexture = dllBindTexture;
glBitmap = dllBitmap;
glBlendFunc = dllBlendFunc;
glCallList = dllCallList;
glCallLists = dllCallLists;
glClear = dllClear;
glClearAccum = dllClearAccum;
glClearColor = dllClearColor;
glClearDepth = dllClearDepth;
glClearIndex = dllClearIndex;
glClearStencil = dllClearStencil;
glClipPlane = dllClipPlane;
glColor3b = dllColor3b;
glColor3bv = dllColor3bv;
glColor3d = dllColor3d;
glColor3dv = dllColor3dv;
glColor3f = dllColor3f;
glColor3fv = dllColor3fv;
glColor3i = dllColor3i;
glColor3iv = dllColor3iv;
glColor3s = dllColor3s;
glColor3sv = dllColor3sv;
glColor3ub = dllColor3ub;
glColor3ubv = dllColor3ubv;
glColor3ui = dllColor3ui;
glColor3uiv = dllColor3uiv;
glColor3us = dllColor3us;
glColor3usv = dllColor3usv;
glColor4b = dllColor4b;
glColor4bv = dllColor4bv;
glColor4d = dllColor4d;
glColor4dv = dllColor4dv;
glColor4f = dllColor4f;
glColor4fv = dllColor4fv;
glColor4i = dllColor4i;
glColor4iv = dllColor4iv;
glColor4s = dllColor4s;
glColor4sv = dllColor4sv;
glColor4ub = dllColor4ub;
glColor4ubv = dllColor4ubv;
glColor4ui = dllColor4ui;
glColor4uiv = dllColor4uiv;
glColor4us = dllColor4us;
glColor4usv = dllColor4usv;
glColorMask = dllColorMask;
glColorMaterial = dllColorMaterial;
glColorPointer = dllColorPointer;
glCopyPixels = dllCopyPixels;
glCopyTexImage1D = dllCopyTexImage1D;
glCopyTexImage2D = dllCopyTexImage2D;
glCopyTexSubImage1D = dllCopyTexSubImage1D;
glCopyTexSubImage2D = dllCopyTexSubImage2D;
glCullFace = dllCullFace;
glDeleteLists = dllDeleteLists;
glDeleteTextures = dllDeleteTextures;
glDepthFunc = dllDepthFunc;
glDepthMask = dllDepthMask;
glDepthRange = dllDepthRange;
glDisable = dllDisable;
glDisableClientState = dllDisableClientState;
glDrawArrays = dllDrawArrays;
glDrawBuffer = dllDrawBuffer;
glDrawElements = dllDrawElements;
glDrawPixels = dllDrawPixels;
glEdgeFlag = dllEdgeFlag;
glEdgeFlagPointer = dllEdgeFlagPointer;
glEdgeFlagv = dllEdgeFlagv;
glEnable = dllEnable;
glEnableClientState = dllEnableClientState;
glEnd = dllEnd;
glEndList = dllEndList;
glEvalCoord1d = dllEvalCoord1d;
glEvalCoord1dv = dllEvalCoord1dv;
glEvalCoord1f = dllEvalCoord1f;
glEvalCoord1fv = dllEvalCoord1fv;
glEvalCoord2d = dllEvalCoord2d;
glEvalCoord2dv = dllEvalCoord2dv;
glEvalCoord2f = dllEvalCoord2f;
glEvalCoord2fv = dllEvalCoord2fv;
glEvalMesh1 = dllEvalMesh1;
glEvalMesh2 = dllEvalMesh2;
glEvalPoint1 = dllEvalPoint1;
glEvalPoint2 = dllEvalPoint2;
glFeedbackBuffer = dllFeedbackBuffer;
glFinish = dllFinish;
glFlush = dllFlush;
glFogf = dllFogf;
glFogfv = dllFogfv;
glFogi = dllFogi;
glFogiv = dllFogiv;
glFrontFace = dllFrontFace;
glFrustum = dllFrustum;
glGenLists = dllGenLists;
glGenTextures = dllGenTextures;
glGetBooleanv = dllGetBooleanv;
glGetClipPlane = dllGetClipPlane;
glGetDoublev = dllGetDoublev;
glGetError = dllGetError;
glGetFloatv = dllGetFloatv;
glGetIntegerv = dllGetIntegerv;
glGetLightfv = dllGetLightfv;
glGetLightiv = dllGetLightiv;
glGetMapdv = dllGetMapdv;
glGetMapfv = dllGetMapfv;
glGetMapiv = dllGetMapiv;
glGetMaterialfv = dllGetMaterialfv;
glGetMaterialiv = dllGetMaterialiv;
glGetPixelMapfv = dllGetPixelMapfv;
glGetPixelMapuiv = dllGetPixelMapuiv;
glGetPixelMapusv = dllGetPixelMapusv;
glGetPointerv = dllGetPointerv;
glGetPolygonStipple = dllGetPolygonStipple;
glGetString = dllGetString;
glGetTexEnvfv = dllGetTexEnvfv;
glGetTexEnviv = dllGetTexEnviv;
glGetTexGendv = dllGetTexGendv;
glGetTexGenfv = dllGetTexGenfv;
glGetTexGeniv = dllGetTexGeniv;
glGetTexImage = dllGetTexImage;
glGetTexLevelParameterfv = dllGetTexLevelParameterfv;
glGetTexLevelParameteriv = dllGetTexLevelParameteriv;
glGetTexParameterfv = dllGetTexParameterfv;
glGetTexParameteriv = dllGetTexParameteriv;
glHint = dllHint;
glIndexMask = dllIndexMask;
glIndexPointer = dllIndexPointer;
glIndexd = dllIndexd;
glIndexdv = dllIndexdv;
glIndexf = dllIndexf;
glIndexfv = dllIndexfv;
glIndexi = dllIndexi;
glIndexiv = dllIndexiv;
glIndexs = dllIndexs;
glIndexsv = dllIndexsv;
glIndexub = dllIndexub;
glIndexubv = dllIndexubv;
glInitNames = dllInitNames;
glInterleavedArrays = dllInterleavedArrays;
glIsEnabled = dllIsEnabled;
glIsList = dllIsList;
glIsTexture = dllIsTexture;
glLightModelf = dllLightModelf;
glLightModelfv = dllLightModelfv;
glLightModeli = dllLightModeli;
glLightModeliv = dllLightModeliv;
glLightf = dllLightf;
glLightfv = dllLightfv;
glLighti = dllLighti;
glLightiv = dllLightiv;
glLineStipple = dllLineStipple;
glLineWidth = dllLineWidth;
glListBase = dllListBase;
glLoadIdentity = dllLoadIdentity;
glLoadMatrixd = dllLoadMatrixd;
glLoadMatrixf = dllLoadMatrixf;
glLoadName = dllLoadName;
glLogicOp = dllLogicOp;
glMap1d = dllMap1d;
glMap1f = dllMap1f;
glMap2d = dllMap2d;
glMap2f = dllMap2f;
glMapGrid1d = dllMapGrid1d;
glMapGrid1f = dllMapGrid1f;
glMapGrid2d = dllMapGrid2d;
glMapGrid2f = dllMapGrid2f;
glMaterialf = dllMaterialf;
glMaterialfv = dllMaterialfv;
glMateriali = dllMateriali;
glMaterialiv = dllMaterialiv;
glMatrixMode = dllMatrixMode;
glMultMatrixd = dllMultMatrixd;
glMultMatrixf = dllMultMatrixf;
glNewList = dllNewList;
glNormal3b = dllNormal3b;
glNormal3bv = dllNormal3bv;
glNormal3d = dllNormal3d;
glNormal3dv = dllNormal3dv;
glNormal3f = dllNormal3f;
glNormal3fv = dllNormal3fv;
glNormal3i = dllNormal3i;
glNormal3iv = dllNormal3iv;
glNormal3s = dllNormal3s;
glNormal3sv = dllNormal3sv;
glNormalPointer = dllNormalPointer;
glOrtho = dllOrtho;
glPassThrough = dllPassThrough;
glPixelMapfv = dllPixelMapfv;
glPixelMapuiv = dllPixelMapuiv;
glPixelMapusv = dllPixelMapusv;
glPixelStoref = dllPixelStoref;
glPixelStorei = dllPixelStorei;
glPixelTransferf = dllPixelTransferf;
glPixelTransferi = dllPixelTransferi;
glPixelZoom = dllPixelZoom;
glPointSize = dllPointSize;
glPolygonMode = dllPolygonMode;
glPolygonOffset = dllPolygonOffset;
glPolygonStipple = dllPolygonStipple;
glPopAttrib = dllPopAttrib;
glPopClientAttrib = dllPopClientAttrib;
glPopMatrix = dllPopMatrix;
glPopName = dllPopName;
glPrioritizeTextures = dllPrioritizeTextures;
glPushAttrib = dllPushAttrib;
glPushClientAttrib = dllPushClientAttrib;
glPushMatrix = dllPushMatrix;
glPushName = dllPushName;
glRasterPos2d = dllRasterPos2d;
glRasterPos2dv = dllRasterPos2dv;
glRasterPos2f = dllRasterPos2f;
glRasterPos2fv = dllRasterPos2fv;
glRasterPos2i = dllRasterPos2i;
glRasterPos2iv = dllRasterPos2iv;
glRasterPos2s = dllRasterPos2s;
glRasterPos2sv = dllRasterPos2sv;
glRasterPos3d = dllRasterPos3d;
glRasterPos3dv = dllRasterPos3dv;
glRasterPos3f = dllRasterPos3f;
glRasterPos3fv = dllRasterPos3fv;
glRasterPos3i = dllRasterPos3i;
glRasterPos3iv = dllRasterPos3iv;
glRasterPos3s = dllRasterPos3s;
glRasterPos3sv = dllRasterPos3sv;
glRasterPos4d = dllRasterPos4d;
glRasterPos4dv = dllRasterPos4dv;
glRasterPos4f = dllRasterPos4f;
glRasterPos4fv = dllRasterPos4fv;
glRasterPos4i = dllRasterPos4i;
glRasterPos4iv = dllRasterPos4iv;
glRasterPos4s = dllRasterPos4s;
glRasterPos4sv = dllRasterPos4sv;
glReadBuffer = dllReadBuffer;
glReadPixels = dllReadPixels;
glRectd = dllRectd;
glRectdv = dllRectdv;
glRectf = dllRectf;
glRectfv = dllRectfv;
glRecti = dllRecti;
glRectiv = dllRectiv;
glRects = dllRects;
glRectsv = dllRectsv;
glRenderMode = dllRenderMode;
glRotated = dllRotated;
glRotatef = dllRotatef;
glScaled = dllScaled;
glScalef = dllScalef;
glScissor = dllScissor;
glSelectBuffer = dllSelectBuffer;
glShadeModel = dllShadeModel;
glStencilFunc = dllStencilFunc;
glStencilMask = dllStencilMask;
glStencilOp = dllStencilOp;
glTexCoord1d = dllTexCoord1d;
glTexCoord1dv = dllTexCoord1dv;
glTexCoord1f = dllTexCoord1f;
glTexCoord1fv = dllTexCoord1fv;
glTexCoord1i = dllTexCoord1i;
glTexCoord1iv = dllTexCoord1iv;
glTexCoord1s = dllTexCoord1s;
glTexCoord1sv = dllTexCoord1sv;
glTexCoord2d = dllTexCoord2d;
glTexCoord2dv = dllTexCoord2dv;
glTexCoord2f = dllTexCoord2f;
glTexCoord2fv = dllTexCoord2fv;
glTexCoord2i = dllTexCoord2i;
glTexCoord2iv = dllTexCoord2iv;
glTexCoord2s = dllTexCoord2s;
glTexCoord2sv = dllTexCoord2sv;
glTexCoord3d = dllTexCoord3d;
glTexCoord3dv = dllTexCoord3dv;
glTexCoord3f = dllTexCoord3f;
glTexCoord3fv = dllTexCoord3fv;
glTexCoord3i = dllTexCoord3i;
glTexCoord3iv = dllTexCoord3iv;
glTexCoord3s = dllTexCoord3s;
glTexCoord3sv = dllTexCoord3sv;
glTexCoord4d = dllTexCoord4d;
glTexCoord4dv = dllTexCoord4dv;
glTexCoord4f = dllTexCoord4f;
glTexCoord4fv = dllTexCoord4fv;
glTexCoord4i = dllTexCoord4i;
glTexCoord4iv = dllTexCoord4iv;
glTexCoord4s = dllTexCoord4s;
glTexCoord4sv = dllTexCoord4sv;
glTexCoordPointer = dllTexCoordPointer;
glTexEnvf = dllTexEnvf;
glTexEnvfv = dllTexEnvfv;
glTexEnvi = dllTexEnvi;
glTexEnviv = dllTexEnviv;
glTexGend = dllTexGend;
glTexGendv = dllTexGendv;
glTexGenf = dllTexGenf;
glTexGenfv = dllTexGenfv;
glTexGeni = dllTexGeni;
glTexGeniv = dllTexGeniv;
glTexImage1D = dllTexImage1D;
glTexImage2D = dllTexImage2D;
glTexParameterf = dllTexParameterf;
glTexParameterfv = dllTexParameterfv;
glTexParameteri = dllTexParameteri;
glTexParameteriv = dllTexParameteriv;
glTexSubImage1D = dllTexSubImage1D;
glTexSubImage2D = dllTexSubImage2D;
glTranslated = dllTranslated;
glTranslatef = dllTranslatef;
glVertex2d = dllVertex2d;
glVertex2dv = dllVertex2dv;
glVertex2f = dllVertex2f;
glVertex2fv = dllVertex2fv;
glVertex2i = dllVertex2i;
glVertex2iv = dllVertex2iv;
glVertex2s = dllVertex2s;
glVertex2sv = dllVertex2sv;
glVertex3d = dllVertex3d;
glVertex3dv = dllVertex3dv;
glVertex3f = dllVertex3f;
glVertex3fv = dllVertex3fv;
glVertex3i = dllVertex3i;
glVertex3iv = dllVertex3iv;
glVertex3s = dllVertex3s;
glVertex3sv = dllVertex3sv;
glVertex4d = dllVertex4d;
glVertex4dv = dllVertex4dv;
glVertex4f = dllVertex4f;
glVertex4fv = dllVertex4fv;
glVertex4i = dllVertex4i;
glVertex4iv = dllVertex4iv;
glVertex4s = dllVertex4s;
glVertex4sv = dllVertex4sv;
glVertexPointer = dllVertexPointer;
glViewport = dllViewport;
glColorTableEXT = dllColorTableEXT;
glLockArraysEXT = dllLockArraysEXT;
glUnlockArraysEXT = dllUnlockArraysEXT;
glActiveTextureARB = dllActiveTextureARB;
glClientActiveTextureARB = dllClientActiveTextureARB;
glMultiTexCoord2fARB = dllMultiTexCoord2fARB;
glMultiTexCoord2fvARB = dllMultiTexCoord2fvARB;
glVertexArrayRangeNV = dllVertexArrayRangeNV;
glFlushVertexArrayRangeNV = dllFlushVertexArrayRangeNV;
wglAllocateMemoryNV = dllAllocateMemoryNV;
wglFreeMemoryNV = dllFreeMemoryNV;
glFogCoordfEXT = dllFogCoordfEXT;
glFogCoordPointerEXT = dllFogCoordPointerEXT;
glCompressedTexImage3DARB = dllCompressedTexImage3DARB;
glCompressedTexImage2DARB = dllCompressedTexImage2DARB;
glCompressedTexImage1DARB = dllCompressedTexImage1DARB;
glCompressedTexSubImage3DARB = dllCompressedTexSubImage3DARB;
glCompressedTexSubImage2DARB = dllCompressedTexSubImage2DARB;
glCompressedTexSubImage1DARB = dllCompressedTexSubImage1DARB;
glGetCompressedTexImageARB = dllGetCompressedTexImageARB;
glAvailableVertexBufferEXT = dllAvailableVertexBufferEXT;
glAllocateVertexBufferEXT = dllAllocateVertexBufferEXT;
glLockVertexBufferEXT = dllLockVertexBufferEXT;
glUnlockVertexBufferEXT = dllUnlockVertexBufferEXT;
glSetVertexBufferEXT = dllSetVertexBufferEXT;
glOffsetVertexBufferEXT = dllOffsetVertexBufferEXT;
glFillVertexBufferEXT = dllFillVertexBufferEXT;
glFreeVertexBufferEXT = dllFreeVertexBufferEXT;
}
}
static void APIENTRY outlineDrawArrays(GLenum mode, GLint first, GLsizei count)
{
if(mode == GL_POLYGON)
mode = GL_LINE_LOOP;
if(mode == GL_POINTS || mode == GL_LINE_STRIP || mode == GL_LINE_LOOP || mode == GL_LINES)
dllDrawArrays( mode, first, count );
else
{
dllBegin(GL_LINES);
if(mode == GL_TRIANGLE_STRIP)
{
U32 i;
for(i = 0; i < count - 1; i++)
{
dllArrayElement(first + i);
dllArrayElement(first + i + 1);
if(i + 2 != count)
{
dllArrayElement(first + i);
dllArrayElement(first + i + 2);
}
}
}
else if(mode == GL_TRIANGLE_FAN)
{
for(U32 i = 1; i < count; i ++)
{
dllArrayElement(first);
dllArrayElement(first + i);
if(i != count - 1)
{
dllArrayElement(first + i);
dllArrayElement(first + i + 1);
}
}
}
else if(mode == GL_TRIANGLES)
{
for(U32 i = 3; i <= count; i += 3)
{
dllArrayElement(first + i - 3);
dllArrayElement(first + i - 2);
dllArrayElement(first + i - 2);
dllArrayElement(first + i - 1);
dllArrayElement(first + i - 3);
dllArrayElement(first + i - 1);
}
}
else if(mode == GL_QUADS)
{
for(U32 i = 4; i <= count; i += 4)
{
dllArrayElement(first + i - 4);
dllArrayElement(first + i - 3);
dllArrayElement(first + i - 3);
dllArrayElement(first + i - 2);
dllArrayElement(first + i - 2);
dllArrayElement(first + i - 1);
dllArrayElement(first + i - 4);
dllArrayElement(first + i - 1);
}
}
else if(mode == GL_QUAD_STRIP)
{
if(count < 4)
return;
dllArrayElement(first + 0);
dllArrayElement(first + 1);
for(U32 i = 4; i <= count; i += 2)
{
dllArrayElement(first + i - 4);
dllArrayElement(first + i - 2);
dllArrayElement(first + i - 3);
dllArrayElement(first + i - 1);
dllArrayElement(first + i - 2);
dllArrayElement(first + i - 1);
}
}
dllEnd();
}
}
static U32 getIndex(GLenum type, const void *indices, U32 i)
{
if(type == GL_UNSIGNED_BYTE)
return ((U8 *) indices)[i];
else if(type == GL_UNSIGNED_SHORT)
return ((U16 *) indices)[i];
else
return ((U32 *) indices)[i];
}
static BOOL WINAPI outlineSwapBuffers(HDC dc)
{
bool ret = dllSwapBuffers(dc);
dllClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
return ret;
}
static void APIENTRY outlineDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)
{
if(mode == GL_POLYGON)
mode = GL_LINE_LOOP;
if(mode == GL_POINTS || mode == GL_LINE_STRIP || mode == GL_LINE_LOOP || mode == GL_LINES)
dllDrawElements( mode, count, type, indices );
else
{
dllBegin(GL_LINES);
if(mode == GL_TRIANGLE_STRIP)
{
U32 i;
for(i = 0; i < count - 1; i++)
{
dllArrayElement(getIndex(type, indices, i));
dllArrayElement(getIndex(type, indices, i + 1));
if(i + 2 != count)
{
dllArrayElement(getIndex(type, indices, i));
dllArrayElement(getIndex(type, indices, i + 2));
}
}
}
else if(mode == GL_TRIANGLE_FAN)
{
for(U32 i = 1; i < count; i ++)
{
dllArrayElement(getIndex(type, indices, 0));
dllArrayElement(getIndex(type, indices, i));
if(i != count - 1)
{
dllArrayElement(getIndex(type, indices, i));
dllArrayElement(getIndex(type, indices, i + 1));
}
}
}
else if(mode == GL_TRIANGLES)
{
for(U32 i = 3; i <= count; i += 3)
{
dllArrayElement(getIndex(type, indices, i - 3));
dllArrayElement(getIndex(type, indices, i - 2));
dllArrayElement(getIndex(type, indices, i - 2));
dllArrayElement(getIndex(type, indices, i - 1));
dllArrayElement(getIndex(type, indices, i - 3));
dllArrayElement(getIndex(type, indices, i - 1));
}
}
else if(mode == GL_QUADS)
{
for(U32 i = 4; i <= count; i += 4)
{
dllArrayElement(getIndex(type, indices, i - 4));
dllArrayElement(getIndex(type, indices, i - 3));
dllArrayElement(getIndex(type, indices, i - 3));
dllArrayElement(getIndex(type, indices, i - 2));
dllArrayElement(getIndex(type, indices, i - 2));
dllArrayElement(getIndex(type, indices, i - 1));
dllArrayElement(getIndex(type, indices, i - 4));
dllArrayElement(getIndex(type, indices, i - 1));
}
}
else if(mode == GL_QUAD_STRIP)
{
if(count < 4)
return;
dllArrayElement(getIndex(type, indices, 0));
dllArrayElement(getIndex(type, indices, 1));
for(U32 i = 4; i <= count; i += 2)
{
dllArrayElement(getIndex(type, indices, i - 4));
dllArrayElement(getIndex(type, indices, i - 2));
dllArrayElement(getIndex(type, indices, i - 3));
dllArrayElement(getIndex(type, indices, i - 1));
dllArrayElement(getIndex(type, indices, i - 2));
dllArrayElement(getIndex(type, indices, i - 1));
}
}
dllEnd();
}
}
ConsoleFunction(GLEnableOutline, void, 2, 2, "GLEnableOutline(bool);")
{
argc;
bool enable = dAtob(argv[1]);
if(outlineEnabled == enable)
return;
if(enable && (loggingEnabled || perfEnabled))
return;
outlineEnabled = enable;
if ( enable )
{
glDrawElements = outlineDrawElements;
glDrawArrays = outlineDrawArrays;
qwglSwapBuffers = outlineSwapBuffers;
}
else
{
glDrawElements = dllDrawElements;
glDrawArrays = dllDrawArrays;
qwglSwapBuffers = dllSwapBuffers;
}
}
static void APIENTRY perfDrawArrays(GLenum mode, GLint first, GLsizei count)
{
gGLState.primCount[gGLState.primMode]++;
U32 tc = 0;
if(mode == GL_TRIANGLES)
tc = count / 3;
else if(mode == GL_TRIANGLE_FAN || mode == GL_TRIANGLE_STRIP)
tc = count - 2;
gGLState.triCount[gGLState.primMode] += tc;
dllDrawArrays( mode, first, count );
}
static void APIENTRY perfDrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)
{
gGLState.primCount[gGLState.primMode]++;
U32 tc = 0;
if(mode == GL_TRIANGLES)
tc = count / 3;
else if(mode == GL_TRIANGLE_FAN || mode == GL_TRIANGLE_STRIP)
tc = count - 2;
gGLState.triCount[gGLState.primMode] += tc;
dllDrawElements( mode, count, type, indices );
}
ConsoleFunction(GLEnableMetrics, void, 2, 2, "GLEnableMetrics(bool);")
{
argc;
static bool varsAdded = false;
if(!varsAdded)
{
Con::addVariable("OpenGL::triCount0", TypeS32, &gGLState.triCount[0]);
Con::addVariable("OpenGL::triCount1", TypeS32, &gGLState.triCount[1]);
Con::addVariable("OpenGL::triCount2", TypeS32, &gGLState.triCount[2]);
Con::addVariable("OpenGL::triCount3", TypeS32, &gGLState.triCount[3]);
Con::addVariable("OpenGL::primCount0", TypeS32, &gGLState.primCount[0]);
Con::addVariable("OpenGL::primCount1", TypeS32, &gGLState.primCount[1]);
Con::addVariable("OpenGL::primCount2", TypeS32, &gGLState.primCount[2]);
Con::addVariable("OpenGL::primCount3", TypeS32, &gGLState.primCount[3]);
varsAdded = true;
}
bool enable = dAtob(argv[1]);
if(perfEnabled == enable)
return;
if(enable && (loggingEnabled || outlineEnabled))
return;
perfEnabled = enable;
if ( enable )
{
glDrawElements = perfDrawElements;
glDrawArrays = perfDrawArrays;
}
else
{
glDrawElements = dllDrawElements;
glDrawArrays = dllDrawArrays;
}
}
#endif