Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

QGL_WIN.C

Go to the documentation of this file.
00001 /*
00002 ===========================================================================
00003 Copyright (C) 1999-2005 Id Software, Inc.
00004 
00005 This file is part of Quake III Arena source code.
00006 
00007 Quake III Arena source code is free software; you can redistribute it
00008 and/or modify it under the terms of the GNU General Public License as
00009 published by the Free Software Foundation; either version 2 of the License,
00010 or (at your option) any later version.
00011 
00012 Quake III Arena source code is distributed in the hope that it will be
00013 useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Foobar; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 ===========================================================================
00021 */
00022 /*
00023 ** QGL_WIN.C
00024 **
00025 ** This file implements the operating system binding of GL to QGL function
00026 ** pointers.  When doing a port of Quake2 you must implement the following
00027 ** two functions:
00028 **
00029 ** QGL_Init() - loads libraries, assigns function pointers, etc.
00030 ** QGL_Shutdown() - unloads libraries, NULLs function pointers
00031 */
00032 #include "qgl.h"
00033 #include <float.h>
00034 
00035 HMODULE g_hGLDLL;
00036 HMODULE g_hGLUDLL;
00037 
00038 #   pragma warning (disable : 4113 4133 4047 )
00039 
00040 int   ( WINAPI * qwglChoosePixelFormat )(HDC, CONST PIXELFORMATDESCRIPTOR *);
00041 int   ( WINAPI * qwglDescribePixelFormat) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
00042 int   ( WINAPI * qwglGetPixelFormat)(HDC);
00043 BOOL  ( WINAPI * qwglSetPixelFormat)(HDC, int, CONST PIXELFORMATDESCRIPTOR *);
00044 BOOL  ( WINAPI * qwglSwapBuffers)(HDC);
00045 
00046 BOOL  ( WINAPI * qwglCopyContext)(HGLRC, HGLRC, UINT);
00047 HGLRC ( WINAPI * qwglCreateContext)(HDC);
00048 HGLRC ( WINAPI * qwglCreateLayerContext)(HDC, int);
00049 BOOL  ( WINAPI * qwglDeleteContext)(HGLRC);
00050 HGLRC ( WINAPI * qwglGetCurrentContext)(VOID);
00051 HDC   ( WINAPI * qwglGetCurrentDC)(VOID);
00052 PROC  ( WINAPI * qwglGetProcAddress)(LPCSTR);
00053 BOOL  ( WINAPI * qwglMakeCurrent)(HDC, HGLRC);
00054 BOOL  ( WINAPI * qwglShareLists)(HGLRC, HGLRC);
00055 BOOL  ( WINAPI * qwglUseFontBitmaps)(HDC, DWORD, DWORD, DWORD);
00056 
00057 BOOL  ( WINAPI * qwglUseFontOutlines)(HDC, DWORD, DWORD, DWORD, FLOAT,
00058                                            FLOAT, int, LPGLYPHMETRICSFLOAT);
00059 
00060 BOOL ( WINAPI * qwglDescribeLayerPlane)(HDC, int, int, UINT,
00061                                             LPLAYERPLANEDESCRIPTOR);
00062 int  ( WINAPI * qwglSetLayerPaletteEntries)(HDC, int, int, int,
00063                                                 CONST COLORREF *);
00064 int  ( WINAPI * qwglGetLayerPaletteEntries)(HDC, int, int, int,
00065                                                 COLORREF *);
00066 BOOL ( WINAPI * qwglRealizeLayerPalette)(HDC, int, BOOL);
00067 BOOL ( WINAPI * qwglSwapLayerBuffers)(HDC, UINT);
00068 
00069 void ( APIENTRY * qglAccum )(GLenum op, GLfloat value);
00070 void ( APIENTRY * qglAlphaFunc )(GLenum func, GLclampf ref);
00071 GLboolean ( APIENTRY * qglAreTexturesResident )(GLsizei n, const GLuint *textures, GLboolean *residences);
00072 void ( APIENTRY * qglArrayElement )(GLint i);
00073 void ( APIENTRY * qglBegin )(GLenum mode);
00074 void ( APIENTRY * qglBindTexture )(GLenum target, GLuint texture);
00075 void ( APIENTRY * qglBitmap )(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
00076 void ( APIENTRY * qglBlendFunc )(GLenum sfactor, GLenum dfactor);
00077 void ( APIENTRY * qglCallList )(GLuint list);
00078 void ( APIENTRY * qglCallLists )(GLsizei n, GLenum type, const GLvoid *lists);
00079 void ( APIENTRY * qglClear )(GLbitfield mask);
00080 void ( APIENTRY * qglClearAccum )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
00081 void ( APIENTRY * qglClearColor )(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
00082 void ( APIENTRY * qglClearDepth )(GLclampd depth);
00083 void ( APIENTRY * qglClearIndex )(GLfloat c);
00084 void ( APIENTRY * qglClearStencil )(GLint s);
00085 void ( APIENTRY * qglClipPlane )(GLenum plane, const GLdouble *equation);
00086 void ( APIENTRY * qglColor3b )(GLbyte red, GLbyte green, GLbyte blue);
00087 void ( APIENTRY * qglColor3bv )(const GLbyte *v);
00088 void ( APIENTRY * qglColor3d )(GLdouble red, GLdouble green, GLdouble blue);
00089 void ( APIENTRY * qglColor3dv )(const GLdouble *v);
00090 void ( APIENTRY * qglColor3f )(GLfloat red, GLfloat green, GLfloat blue);
00091 void ( APIENTRY * qglColor3fv )(const GLfloat *v);
00092 void ( APIENTRY * qglColor3i )(GLint red, GLint green, GLint blue);
00093 void ( APIENTRY * qglColor3iv )(const GLint *v);
00094 void ( APIENTRY * qglColor3s )(GLshort red, GLshort green, GLshort blue);
00095 void ( APIENTRY * qglColor3sv )(const GLshort *v);
00096 void ( APIENTRY * qglColor3ub )(GLubyte red, GLubyte green, GLubyte blue);
00097 void ( APIENTRY * qglColor3ubv )(const GLubyte *v);
00098 void ( APIENTRY * qglColor3ui )(GLuint red, GLuint green, GLuint blue);
00099 void ( APIENTRY * qglColor3uiv )(const GLuint *v);
00100 void ( APIENTRY * qglColor3us )(GLushort red, GLushort green, GLushort blue);
00101 void ( APIENTRY * qglColor3usv )(const GLushort *v);
00102 void ( APIENTRY * qglColor4b )(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
00103 void ( APIENTRY * qglColor4bv )(const GLbyte *v);
00104 void ( APIENTRY * qglColor4d )(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
00105 void ( APIENTRY * qglColor4dv )(const GLdouble *v);
00106 void ( APIENTRY * qglColor4f )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
00107 void ( APIENTRY * qglColor4fv )(const GLfloat *v);
00108 void ( APIENTRY * qglColor4i )(GLint red, GLint green, GLint blue, GLint alpha);
00109 void ( APIENTRY * qglColor4iv )(const GLint *v);
00110 void ( APIENTRY * qglColor4s )(GLshort red, GLshort green, GLshort blue, GLshort alpha);
00111 void ( APIENTRY * qglColor4sv )(const GLshort *v);
00112 void ( APIENTRY * qglColor4ub )(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
00113 void ( APIENTRY * qglColor4ubv )(const GLubyte *v);
00114 void ( APIENTRY * qglColor4ui )(GLuint red, GLuint green, GLuint blue, GLuint alpha);
00115 void ( APIENTRY * qglColor4uiv )(const GLuint *v);
00116 void ( APIENTRY * qglColor4us )(GLushort red, GLushort green, GLushort blue, GLushort alpha);
00117 void ( APIENTRY * qglColor4usv )(const GLushort *v);
00118 void ( APIENTRY * qglColorMask )(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
00119 void ( APIENTRY * qglColorMaterial )(GLenum face, GLenum mode);
00120 void ( APIENTRY * qglColorPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
00121 void ( APIENTRY * qglCopyPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
00122 void ( APIENTRY * qglCopyTexImage1D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
00123 void ( APIENTRY * qglCopyTexImage2D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
00124 void ( APIENTRY * qglCopyTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
00125 void ( APIENTRY * qglCopyTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
00126 void ( APIENTRY * qglCullFace )(GLenum mode);
00127 void ( APIENTRY * qglDeleteLists )(GLuint list, GLsizei range);
00128 void ( APIENTRY * qglDeleteTextures )(GLsizei n, const GLuint *textures);
00129 void ( APIENTRY * qglDepthFunc )(GLenum func);
00130 void ( APIENTRY * qglDepthMask )(GLboolean flag);
00131 void ( APIENTRY * qglDepthRange )(GLclampd zNear, GLclampd zFar);
00132 void ( APIENTRY * qglDisable )(GLenum cap);
00133 void ( APIENTRY * qglDisableClientState )(GLenum array);
00134 void ( APIENTRY * qglDrawArrays )(GLenum mode, GLint first, GLsizei count);
00135 void ( APIENTRY * qglDrawBuffer )(GLenum mode);
00136 void ( APIENTRY * qglDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
00137 void ( APIENTRY * qglDrawPixels )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
00138 void ( APIENTRY * qglEdgeFlag )(GLboolean flag);
00139 void ( APIENTRY * qglEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer);
00140 void ( APIENTRY * qglEdgeFlagv )(const GLboolean *flag);
00141 void ( APIENTRY * qglEnable )(GLenum cap);
00142 void ( APIENTRY * qglEnableClientState )(GLenum array);
00143 void ( APIENTRY * qglEnd )(void);
00144 void ( APIENTRY * qglEndList )(void);
00145 void ( APIENTRY * qglEvalCoord1d )(GLdouble u);
00146 void ( APIENTRY * qglEvalCoord1dv )(const GLdouble *u);
00147 void ( APIENTRY * qglEvalCoord1f )(GLfloat u);
00148 void ( APIENTRY * qglEvalCoord1fv )(const GLfloat *u);
00149 void ( APIENTRY * qglEvalCoord2d )(GLdouble u, GLdouble v);
00150 void ( APIENTRY * qglEvalCoord2dv )(const GLdouble *u);
00151 void ( APIENTRY * qglEvalCoord2f )(GLfloat u, GLfloat v);
00152 void ( APIENTRY * qglEvalCoord2fv )(const GLfloat *u);
00153 void ( APIENTRY * qglEvalMesh1 )(GLenum mode, GLint i1, GLint i2);
00154 void ( APIENTRY * qglEvalMesh2 )(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
00155 void ( APIENTRY * qglEvalPoint1 )(GLint i);
00156 void ( APIENTRY * qglEvalPoint2 )(GLint i, GLint j);
00157 void ( APIENTRY * qglFeedbackBuffer )(GLsizei size, GLenum type, GLfloat *buffer);
00158 void ( APIENTRY * qglFinish )(void);
00159 void ( APIENTRY * qglFlush )(void);
00160 void ( APIENTRY * qglFogf )(GLenum pname, GLfloat param);
00161 void ( APIENTRY * qglFogfv )(GLenum pname, const GLfloat *params);
00162 void ( APIENTRY * qglFogi )(GLenum pname, GLint param);
00163 void ( APIENTRY * qglFogiv )(GLenum pname, const GLint *params);
00164 void ( APIENTRY * qglFrontFace )(GLenum mode);
00165 void ( APIENTRY * qglFrustum )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
00166 GLuint ( APIENTRY * qglGenLists )(GLsizei range);
00167 void ( APIENTRY * qglGenTextures )(GLsizei n, GLuint *textures);
00168 void ( APIENTRY * qglGetBooleanv )(GLenum pname, GLboolean *params);
00169 void ( APIENTRY * qglGetClipPlane )(GLenum plane, GLdouble *equation);
00170 void ( APIENTRY * qglGetDoublev )(GLenum pname, GLdouble *params);
00171 GLenum ( APIENTRY * qglGetError )(void);
00172 void ( APIENTRY * qglGetFloatv )(GLenum pname, GLfloat *params);
00173 void ( APIENTRY * qglGetIntegerv )(GLenum pname, GLint *params);
00174 void ( APIENTRY * qglGetLightfv )(GLenum light, GLenum pname, GLfloat *params);
00175 void ( APIENTRY * qglGetLightiv )(GLenum light, GLenum pname, GLint *params);
00176 void ( APIENTRY * qglGetMapdv )(GLenum target, GLenum query, GLdouble *v);
00177 void ( APIENTRY * qglGetMapfv )(GLenum target, GLenum query, GLfloat *v);
00178 void ( APIENTRY * qglGetMapiv )(GLenum target, GLenum query, GLint *v);
00179 void ( APIENTRY * qglGetMaterialfv )(GLenum face, GLenum pname, GLfloat *params);
00180 void ( APIENTRY * qglGetMaterialiv )(GLenum face, GLenum pname, GLint *params);
00181 void ( APIENTRY * qglGetPixelMapfv )(GLenum map, GLfloat *values);
00182 void ( APIENTRY * qglGetPixelMapuiv )(GLenum map, GLuint *values);
00183 void ( APIENTRY * qglGetPixelMapusv )(GLenum map, GLushort *values);
00184 void ( APIENTRY * qglGetPointerv )(GLenum pname, GLvoid* *params);
00185 void ( APIENTRY * qglGetPolygonStipple )(GLubyte *mask);
00186 const GLubyte * ( APIENTRY * qglGetString )(GLenum name);
00187 void ( APIENTRY * qglGetTexEnvfv )(GLenum target, GLenum pname, GLfloat *params);
00188 void ( APIENTRY * qglGetTexEnviv )(GLenum target, GLenum pname, GLint *params);
00189 void ( APIENTRY * qglGetTexGendv )(GLenum coord, GLenum pname, GLdouble *params);
00190 void ( APIENTRY * qglGetTexGenfv )(GLenum coord, GLenum pname, GLfloat *params);
00191 void ( APIENTRY * qglGetTexGeniv )(GLenum coord, GLenum pname, GLint *params);
00192 void ( APIENTRY * qglGetTexImage )(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
00193 void ( APIENTRY * qglGetTexLevelParameterfv )(GLenum target, GLint level, GLenum pname, GLfloat *params);
00194 void ( APIENTRY * qglGetTexLevelParameteriv )(GLenum target, GLint level, GLenum pname, GLint *params);
00195 void ( APIENTRY * qglGetTexParameterfv )(GLenum target, GLenum pname, GLfloat *params);
00196 void ( APIENTRY * qglGetTexParameteriv )(GLenum target, GLenum pname, GLint *params);
00197 void ( APIENTRY * qglHint )(GLenum target, GLenum mode);
00198 void ( APIENTRY * qglIndexMask )(GLuint mask);
00199 void ( APIENTRY * qglIndexPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
00200 void ( APIENTRY * qglIndexd )(GLdouble c);
00201 void ( APIENTRY * qglIndexdv )(const GLdouble *c);
00202 void ( APIENTRY * qglIndexf )(GLfloat c);
00203 void ( APIENTRY * qglIndexfv )(const GLfloat *c);
00204 void ( APIENTRY * qglIndexi )(GLint c);
00205 void ( APIENTRY * qglIndexiv )(const GLint *c);
00206 void ( APIENTRY * qglIndexs )(GLshort c);
00207 void ( APIENTRY * qglIndexsv )(const GLshort *c);
00208 void ( APIENTRY * qglIndexub )(GLubyte c);
00209 void ( APIENTRY * qglIndexubv )(const GLubyte *c);
00210 void ( APIENTRY * qglInitNames )(void);
00211 void ( APIENTRY * qglInterleavedArrays )(GLenum format, GLsizei stride, const GLvoid *pointer);
00212 GLboolean ( APIENTRY * qglIsEnabled )(GLenum cap);
00213 GLboolean ( APIENTRY * qglIsList )(GLuint list);
00214 GLboolean ( APIENTRY * qglIsTexture )(GLuint texture);
00215 void ( APIENTRY * qglLightModelf )(GLenum pname, GLfloat param);
00216 void ( APIENTRY * qglLightModelfv )(GLenum pname, const GLfloat *params);
00217 void ( APIENTRY * qglLightModeli )(GLenum pname, GLint param);
00218 void ( APIENTRY * qglLightModeliv )(GLenum pname, const GLint *params);
00219 void ( APIENTRY * qglLightf )(GLenum light, GLenum pname, GLfloat param);
00220 void ( APIENTRY * qglLightfv )(GLenum light, GLenum pname, const GLfloat *params);
00221 void ( APIENTRY * qglLighti )(GLenum light, GLenum pname, GLint param);
00222 void ( APIENTRY * qglLightiv )(GLenum light, GLenum pname, const GLint *params);
00223 void ( APIENTRY * qglLineStipple )(GLint factor, GLushort pattern);
00224 void ( APIENTRY * qglLineWidth )(GLfloat width);
00225 void ( APIENTRY * qglListBase )(GLuint base);
00226 void ( APIENTRY * qglLoadIdentity )(void);
00227 void ( APIENTRY * qglLoadMatrixd )(const GLdouble *m);
00228 void ( APIENTRY * qglLoadMatrixf )(const GLfloat *m);
00229 void ( APIENTRY * qglLoadName )(GLuint name);
00230 void ( APIENTRY * qglLogicOp )(GLenum opcode);
00231 void ( APIENTRY * qglMap1d )(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
00232 void ( APIENTRY * qglMap1f )(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
00233 void ( APIENTRY * qglMap2d )(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
00234 void ( APIENTRY * qglMap2f )(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
00235 void ( APIENTRY * qglMapGrid1d )(GLint un, GLdouble u1, GLdouble u2);
00236 void ( APIENTRY * qglMapGrid1f )(GLint un, GLfloat u1, GLfloat u2);
00237 void ( APIENTRY * qglMapGrid2d )(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
00238 void ( APIENTRY * qglMapGrid2f )(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
00239 void ( APIENTRY * qglMaterialf )(GLenum face, GLenum pname, GLfloat param);
00240 void ( APIENTRY * qglMaterialfv )(GLenum face, GLenum pname, const GLfloat *params);
00241 void ( APIENTRY * qglMateriali )(GLenum face, GLenum pname, GLint param);
00242 void ( APIENTRY * qglMaterialiv )(GLenum face, GLenum pname, const GLint *params);
00243 void ( APIENTRY * qglMatrixMode )(GLenum mode);
00244 void ( APIENTRY * qglMultMatrixd )(const GLdouble *m);
00245 void ( APIENTRY * qglMultMatrixf )(const GLfloat *m);
00246 void ( APIENTRY * qglNewList )(GLuint list, GLenum mode);
00247 void ( APIENTRY * qglNormal3b )(GLbyte nx, GLbyte ny, GLbyte nz);
00248 void ( APIENTRY * qglNormal3bv )(const GLbyte *v);
00249 void ( APIENTRY * qglNormal3d )(GLdouble nx, GLdouble ny, GLdouble nz);
00250 void ( APIENTRY * qglNormal3dv )(const GLdouble *v);
00251 void ( APIENTRY * qglNormal3f )(GLfloat nx, GLfloat ny, GLfloat nz);
00252 void ( APIENTRY * qglNormal3fv )(const GLfloat *v);
00253 void ( APIENTRY * qglNormal3i )(GLint nx, GLint ny, GLint nz);
00254 void ( APIENTRY * qglNormal3iv )(const GLint *v);
00255 void ( APIENTRY * qglNormal3s )(GLshort nx, GLshort ny, GLshort nz);
00256 void ( APIENTRY * qglNormal3sv )(const GLshort *v);
00257 void ( APIENTRY * qglNormalPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
00258 void ( APIENTRY * qglOrtho )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
00259 void ( APIENTRY * qglPassThrough )(GLfloat token);
00260 void ( APIENTRY * qglPixelMapfv )(GLenum map, GLsizei mapsize, const GLfloat *values);
00261 void ( APIENTRY * qglPixelMapuiv )(GLenum map, GLsizei mapsize, const GLuint *values);
00262 void ( APIENTRY * qglPixelMapusv )(GLenum map, GLsizei mapsize, const GLushort *values);
00263 void ( APIENTRY * qglPixelStoref )(GLenum pname, GLfloat param);
00264 void ( APIENTRY * qglPixelStorei )(GLenum pname, GLint param);
00265 void ( APIENTRY * qglPixelTransferf )(GLenum pname, GLfloat param);
00266 void ( APIENTRY * qglPixelTransferi )(GLenum pname, GLint param);
00267 void ( APIENTRY * qglPixelZoom )(GLfloat xfactor, GLfloat yfactor);
00268 void ( APIENTRY * qglPointSize )(GLfloat size);
00269 void ( APIENTRY * qglPolygonMode )(GLenum face, GLenum mode);
00270 void ( APIENTRY * qglPolygonOffset )(GLfloat factor, GLfloat units);
00271 void ( APIENTRY * qglPolygonStipple )(const GLubyte *mask);
00272 void ( APIENTRY * qglPopAttrib )(void);
00273 void ( APIENTRY * qglPopClientAttrib )(void);
00274 void ( APIENTRY * qglPopMatrix )(void);
00275 void ( APIENTRY * qglPopName )(void);
00276 void ( APIENTRY * qglPrioritizeTextures )(GLsizei n, const GLuint *textures, const GLclampf *priorities);
00277 void ( APIENTRY * qglPushAttrib )(GLbitfield mask);
00278 void ( APIENTRY * qglPushClientAttrib )(GLbitfield mask);
00279 void ( APIENTRY * qglPushMatrix )(void);
00280 void ( APIENTRY * qglPushName )(GLuint name);
00281 void ( APIENTRY * qglRasterPos2d )(GLdouble x, GLdouble y);
00282 void ( APIENTRY * qglRasterPos2dv )(const GLdouble *v);
00283 void ( APIENTRY * qglRasterPos2f )(GLfloat x, GLfloat y);
00284 void ( APIENTRY * qglRasterPos2fv )(const GLfloat *v);
00285 void ( APIENTRY * qglRasterPos2i )(GLint x, GLint y);
00286 void ( APIENTRY * qglRasterPos2iv )(const GLint *v);
00287 void ( APIENTRY * qglRasterPos2s )(GLshort x, GLshort y);
00288 void ( APIENTRY * qglRasterPos2sv )(const GLshort *v);
00289 void ( APIENTRY * qglRasterPos3d )(GLdouble x, GLdouble y, GLdouble z);
00290 void ( APIENTRY * qglRasterPos3dv )(const GLdouble *v);
00291 void ( APIENTRY * qglRasterPos3f )(GLfloat x, GLfloat y, GLfloat z);
00292 void ( APIENTRY * qglRasterPos3fv )(const GLfloat *v);
00293 void ( APIENTRY * qglRasterPos3i )(GLint x, GLint y, GLint z);
00294 void ( APIENTRY * qglRasterPos3iv )(const GLint *v);
00295 void ( APIENTRY * qglRasterPos3s )(GLshort x, GLshort y, GLshort z);
00296 void ( APIENTRY * qglRasterPos3sv )(const GLshort *v);
00297 void ( APIENTRY * qglRasterPos4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
00298 void ( APIENTRY * qglRasterPos4dv )(const GLdouble *v);
00299 void ( APIENTRY * qglRasterPos4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
00300 void ( APIENTRY * qglRasterPos4fv )(const GLfloat *v);
00301 void ( APIENTRY * qglRasterPos4i )(GLint x, GLint y, GLint z, GLint w);
00302 void ( APIENTRY * qglRasterPos4iv )(const GLint *v);
00303 void ( APIENTRY * qglRasterPos4s )(GLshort x, GLshort y, GLshort z, GLshort w);
00304 void ( APIENTRY * qglRasterPos4sv )(const GLshort *v);
00305 void ( APIENTRY * qglReadBuffer )(GLenum mode);
00306 void ( APIENTRY * qglReadPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
00307 void ( APIENTRY * qglRectd )(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
00308 void ( APIENTRY * qglRectdv )(const GLdouble *v1, const GLdouble *v2);
00309 void ( APIENTRY * qglRectf )(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
00310 void ( APIENTRY * qglRectfv )(const GLfloat *v1, const GLfloat *v2);
00311 void ( APIENTRY * qglRecti )(GLint x1, GLint y1, GLint x2, GLint y2);
00312 void ( APIENTRY * qglRectiv )(const GLint *v1, const GLint *v2);
00313 void ( APIENTRY * qglRects )(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
00314 void ( APIENTRY * qglRectsv )(const GLshort *v1, const GLshort *v2);
00315 GLint ( APIENTRY * qglRenderMode )(GLenum mode);
00316 void ( APIENTRY * qglRotated )(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
00317 void ( APIENTRY * qglRotatef )(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
00318 void ( APIENTRY * qglScaled )(GLdouble x, GLdouble y, GLdouble z);
00319 void ( APIENTRY * qglScalef )(GLfloat x, GLfloat y, GLfloat z);
00320 void ( APIENTRY * qglScissor )(GLint x, GLint y, GLsizei width, GLsizei height);
00321 void ( APIENTRY * qglSelectBuffer )(GLsizei size, GLuint *buffer);
00322 void ( APIENTRY * qglShadeModel )(GLenum mode);
00323 void ( APIENTRY * qglStencilFunc )(GLenum func, GLint ref, GLuint mask);
00324 void ( APIENTRY * qglStencilMask )(GLuint mask);
00325 void ( APIENTRY * qglStencilOp )(GLenum fail, GLenum zfail, GLenum zpass);
00326 void ( APIENTRY * qglTexCoord1d )(GLdouble s);
00327 void ( APIENTRY * qglTexCoord1dv )(const GLdouble *v);
00328 void ( APIENTRY * qglTexCoord1f )(GLfloat s);
00329 void ( APIENTRY * qglTexCoord1fv )(const GLfloat *v);
00330 void ( APIENTRY * qglTexCoord1i )(GLint s);
00331 void ( APIENTRY * qglTexCoord1iv )(const GLint *v);
00332 void ( APIENTRY * qglTexCoord1s )(GLshort s);
00333 void ( APIENTRY * qglTexCoord1sv )(const GLshort *v);
00334 void ( APIENTRY * qglTexCoord2d )(GLdouble s, GLdouble t);
00335 void ( APIENTRY * qglTexCoord2dv )(const GLdouble *v);
00336 void ( APIENTRY * qglTexCoord2f )(GLfloat s, GLfloat t);
00337 void ( APIENTRY * qglTexCoord2fv )(const GLfloat *v);
00338 void ( APIENTRY * qglTexCoord2i )(GLint s, GLint t);
00339 void ( APIENTRY * qglTexCoord2iv )(const GLint *v);
00340 void ( APIENTRY * qglTexCoord2s )(GLshort s, GLshort t);
00341 void ( APIENTRY * qglTexCoord2sv )(const GLshort *v);
00342 void ( APIENTRY * qglTexCoord3d )(GLdouble s, GLdouble t, GLdouble r);
00343 void ( APIENTRY * qglTexCoord3dv )(const GLdouble *v);
00344 void ( APIENTRY * qglTexCoord3f )(GLfloat s, GLfloat t, GLfloat r);
00345 void ( APIENTRY * qglTexCoord3fv )(const GLfloat *v);
00346 void ( APIENTRY * qglTexCoord3i )(GLint s, GLint t, GLint r);
00347 void ( APIENTRY * qglTexCoord3iv )(const GLint *v);
00348 void ( APIENTRY * qglTexCoord3s )(GLshort s, GLshort t, GLshort r);
00349 void ( APIENTRY * qglTexCoord3sv )(const GLshort *v);
00350 void ( APIENTRY * qglTexCoord4d )(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
00351 void ( APIENTRY * qglTexCoord4dv )(const GLdouble *v);
00352 void ( APIENTRY * qglTexCoord4f )(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
00353 void ( APIENTRY * qglTexCoord4fv )(const GLfloat *v);
00354 void ( APIENTRY * qglTexCoord4i )(GLint s, GLint t, GLint r, GLint q);
00355 void ( APIENTRY * qglTexCoord4iv )(const GLint *v);
00356 void ( APIENTRY * qglTexCoord4s )(GLshort s, GLshort t, GLshort r, GLshort q);
00357 void ( APIENTRY * qglTexCoord4sv )(const GLshort *v);
00358 void ( APIENTRY * qglTexCoordPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
00359 void ( APIENTRY * qglTexEnvf )(GLenum target, GLenum pname, GLfloat param);
00360 void ( APIENTRY * qglTexEnvfv )(GLenum target, GLenum pname, const GLfloat *params);
00361 void ( APIENTRY * qglTexEnvi )(GLenum target, GLenum pname, GLint param);
00362 void ( APIENTRY * qglTexEnviv )(GLenum target, GLenum pname, const GLint *params);
00363 void ( APIENTRY * qglTexGend )(GLenum coord, GLenum pname, GLdouble param);
00364 void ( APIENTRY * qglTexGendv )(GLenum coord, GLenum pname, const GLdouble *params);
00365 void ( APIENTRY * qglTexGenf )(GLenum coord, GLenum pname, GLfloat param);
00366 void ( APIENTRY * qglTexGenfv )(GLenum coord, GLenum pname, const GLfloat *params);
00367 void ( APIENTRY * qglTexGeni )(GLenum coord, GLenum pname, GLint param);
00368 void ( APIENTRY * qglTexGeniv )(GLenum coord, GLenum pname, const GLint *params);
00369 void ( APIENTRY * qglTexImage1D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
00370 void ( APIENTRY * qglTexImage2D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
00371 void ( APIENTRY * qglTexParameterf )(GLenum target, GLenum pname, GLfloat param);
00372 void ( APIENTRY * qglTexParameterfv )(GLenum target, GLenum pname, const GLfloat *params);
00373 void ( APIENTRY * qglTexParameteri )(GLenum target, GLenum pname, GLint param);
00374 void ( APIENTRY * qglTexParameteriv )(GLenum target, GLenum pname, const GLint *params);
00375 void ( APIENTRY * qglTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
00376 void ( APIENTRY * qglTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
00377 void ( APIENTRY * qglTranslated )(GLdouble x, GLdouble y, GLdouble z);
00378 void ( APIENTRY * qglTranslatef )(GLfloat x, GLfloat y, GLfloat z);
00379 void ( APIENTRY * qglVertex2d )(GLdouble x, GLdouble y);
00380 void ( APIENTRY * qglVertex2dv )(const GLdouble *v);
00381 void ( APIENTRY * qglVertex2f )(GLfloat x, GLfloat y);
00382 void ( APIENTRY * qglVertex2fv )(const GLfloat *v);
00383 void ( APIENTRY * qglVertex2i )(GLint x, GLint y);
00384 void ( APIENTRY * qglVertex2iv )(const GLint *v);
00385 void ( APIENTRY * qglVertex2s )(GLshort x, GLshort y);
00386 void ( APIENTRY * qglVertex2sv )(const GLshort *v);
00387 void ( APIENTRY * qglVertex3d )(GLdouble x, GLdouble y, GLdouble z);
00388 void ( APIENTRY * qglVertex3dv )(const GLdouble *v);
00389 void ( APIENTRY * qglVertex3f )(GLfloat x, GLfloat y, GLfloat z);
00390 void ( APIENTRY * qglVertex3fv )(const GLfloat *v);
00391 void ( APIENTRY * qglVertex3i )(GLint x, GLint y, GLint z);
00392 void ( APIENTRY * qglVertex3iv )(const GLint *v);
00393 void ( APIENTRY * qglVertex3s )(GLshort x, GLshort y, GLshort z);
00394 void ( APIENTRY * qglVertex3sv )(const GLshort *v);
00395 void ( APIENTRY * qglVertex4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
00396 void ( APIENTRY * qglVertex4dv )(const GLdouble *v);
00397 void ( APIENTRY * qglVertex4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
00398 void ( APIENTRY * qglVertex4fv )(const GLfloat *v);
00399 void ( APIENTRY * qglVertex4i )(GLint x, GLint y, GLint z, GLint w);
00400 void ( APIENTRY * qglVertex4iv )(const GLint *v);
00401 void ( APIENTRY * qglVertex4s )(GLshort x, GLshort y, GLshort z, GLshort w);
00402 void ( APIENTRY * qglVertex4sv )(const GLshort *v);
00403 void ( APIENTRY * qglVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
00404 void ( APIENTRY * qglViewport )(GLint x, GLint y, GLsizei width, GLsizei height);
00405 
00406 BOOL ( WINAPI * qwglSwapIntervalEXT)( int interval );
00407 BOOL ( WINAPI * qwglGetDeviceGammaRampEXT)( unsigned char *, unsigned char *, unsigned char * );
00408 BOOL ( WINAPI * qwglSetDeviceGammaRampEXT)( const unsigned char *, const unsigned char *, const unsigned char * );
00409 void ( APIENTRY * qglPointParameterfEXT)( GLenum param, GLfloat value );
00410 void ( APIENTRY * qglPointParameterfvEXT)( GLenum param, const GLfloat *value );
00411 void ( APIENTRY * qglColorTableEXT)( int, int, int, int, int, const void * );
00412 void ( APIENTRY * qglSelectTextureSGIS)( GLenum );
00413 void ( APIENTRY * qglMTexCoord2fSGIS)( GLenum, GLfloat, GLfloat );
00414 
00415 
00416 // glu stuff
00417 void (APIENTRY * qgluPerspective) (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
00418 int  (APIENTRY * qgluBuild2DMipmaps) (GLenum target, GLint components, GLint width, GLint height, GLenum format, GLenum      type, const void  *data);
00419 // added for plugins
00420 void (APIENTRY * qgluLookAt)(
00421   GLdouble eyex,
00422   GLdouble eyey,
00423   GLdouble eyez,
00424   GLdouble centerx,
00425   GLdouble centery,
00426   GLdouble centerz,
00427   GLdouble upx,
00428   GLdouble upy,
00429   GLdouble upz);
00430 
00431 
00432 /*
00433 ** QGL_Shutdown
00434 **
00435 ** Unloads the specified DLL then nulls out all the proc pointers.
00436 */
00437 void QGL_Shutdown()
00438 {
00439     if (g_hGLDLL)
00440     {
00441     FreeLibrary(g_hGLDLL);
00442     g_hGLDLL = NULL;
00443     }
00444     if (g_hGLUDLL)
00445     {
00446     FreeLibrary(g_hGLUDLL);
00447     g_hGLUDLL = NULL;
00448     }
00449 
00450 
00451     qglAccum                     = NULL;
00452     qglAlphaFunc                 = NULL;
00453     qglAreTexturesResident       = NULL;
00454     qglArrayElement              = NULL;
00455     qglBegin                     = NULL;
00456     qglBindTexture               = NULL;
00457     qglBitmap                    = NULL;
00458     qglBlendFunc                 = NULL;
00459     qglCallList                  = NULL;
00460     qglCallLists                 = NULL;
00461     qglClear                     = NULL;
00462     qglClearAccum                = NULL;
00463     qglClearColor                = NULL;
00464     qglClearDepth                = NULL;
00465     qglClearIndex                = NULL;
00466     qglClearStencil              = NULL;
00467     qglClipPlane                 = NULL;
00468     qglColor3b                   = NULL;
00469     qglColor3bv                  = NULL;
00470     qglColor3d                   = NULL;
00471     qglColor3dv                  = NULL;
00472     qglColor3f                   = NULL;
00473     qglColor3fv                  = NULL;
00474     qglColor3i                   = NULL;
00475     qglColor3iv                  = NULL;
00476     qglColor3s                   = NULL;
00477     qglColor3sv                  = NULL;
00478     qglColor3ub                  = NULL;
00479     qglColor3ubv                 = NULL;
00480     qglColor3ui                  = NULL;
00481     qglColor3uiv                 = NULL;
00482     qglColor3us                  = NULL;
00483     qglColor3usv                 = NULL;
00484     qglColor4b                   = NULL;
00485     qglColor4bv                  = NULL;
00486     qglColor4d                   = NULL;
00487     qglColor4dv                  = NULL;
00488     qglColor4f                   = NULL;
00489     qglColor4fv                  = NULL;
00490     qglColor4i                   = NULL;
00491     qglColor4iv                  = NULL;
00492     qglColor4s                   = NULL;
00493     qglColor4sv                  = NULL;
00494     qglColor4ub                  = NULL;
00495     qglColor4ubv                 = NULL;
00496     qglColor4ui                  = NULL;
00497     qglColor4uiv                 = NULL;
00498     qglColor4us                  = NULL;
00499     qglColor4usv                 = NULL;
00500     qglColorMask                 = NULL;
00501     qglColorMaterial             = NULL;
00502     qglColorPointer              = NULL;
00503     qglCopyPixels                = NULL;
00504     qglCopyTexImage1D            = NULL;
00505     qglCopyTexImage2D            = NULL;
00506     qglCopyTexSubImage1D         = NULL;
00507     qglCopyTexSubImage2D         = NULL;
00508     qglCullFace                  = NULL;
00509     qglDeleteLists               = NULL;
00510     qglDeleteTextures            = NULL;
00511     qglDepthFunc                 = NULL;
00512     qglDepthMask                 = NULL;
00513     qglDepthRange                = NULL;
00514     qglDisable                   = NULL;
00515     qglDisableClientState        = NULL;
00516     qglDrawArrays                = NULL;
00517     qglDrawBuffer                = NULL;
00518     qglDrawElements              = NULL;
00519     qglDrawPixels                = NULL;
00520     qglEdgeFlag                  = NULL;
00521     qglEdgeFlagPointer           = NULL;
00522     qglEdgeFlagv                 = NULL;
00523     qglEnable                    = NULL;
00524     qglEnableClientState         = NULL;
00525     qglEnd                       = NULL;
00526     qglEndList                   = NULL;
00527     qglEvalCoord1d               = NULL;
00528     qglEvalCoord1dv              = NULL;
00529     qglEvalCoord1f               = NULL;
00530     qglEvalCoord1fv              = NULL;
00531     qglEvalCoord2d               = NULL;
00532     qglEvalCoord2dv              = NULL;
00533     qglEvalCoord2f               = NULL;
00534     qglEvalCoord2fv              = NULL;
00535     qglEvalMesh1                 = NULL;
00536     qglEvalMesh2                 = NULL;
00537     qglEvalPoint1                = NULL;
00538     qglEvalPoint2                = NULL;
00539     qglFeedbackBuffer            = NULL;
00540     qglFinish                    = NULL;
00541     qglFlush                     = NULL;
00542     qglFogf                      = NULL;
00543     qglFogfv                     = NULL;
00544     qglFogi                      = NULL;
00545     qglFogiv                     = NULL;
00546     qglFrontFace                 = NULL;
00547     qglFrustum                   = NULL;
00548     qglGenLists                  = NULL;
00549     qglGenTextures               = NULL;
00550     qglGetBooleanv               = NULL;
00551     qglGetClipPlane              = NULL;
00552     qglGetDoublev                = NULL;
00553     qglGetError                  = NULL;
00554     qglGetFloatv                 = NULL;
00555     qglGetIntegerv               = NULL;
00556     qglGetLightfv                = NULL;
00557     qglGetLightiv                = NULL;
00558     qglGetMapdv                  = NULL;
00559     qglGetMapfv                  = NULL;
00560     qglGetMapiv                  = NULL;
00561     qglGetMaterialfv             = NULL;
00562     qglGetMaterialiv             = NULL;
00563     qglGetPixelMapfv             = NULL;
00564     qglGetPixelMapuiv            = NULL;
00565     qglGetPixelMapusv            = NULL;
00566     qglGetPointerv               = NULL;
00567     qglGetPolygonStipple         = NULL;
00568     qglGetString                 = NULL;
00569     qglGetTexEnvfv               = NULL;
00570     qglGetTexEnviv               = NULL;
00571     qglGetTexGendv               = NULL;
00572     qglGetTexGenfv               = NULL;
00573     qglGetTexGeniv               = NULL;
00574     qglGetTexImage               = NULL;
00575     qglGetTexLevelParameterfv    = NULL;
00576     qglGetTexLevelParameteriv    = NULL;
00577     qglGetTexParameterfv         = NULL;
00578     qglGetTexParameteriv         = NULL;
00579     qglHint                      = NULL;
00580     qglIndexMask                 = NULL;
00581     qglIndexPointer              = NULL;
00582     qglIndexd                    = NULL;
00583     qglIndexdv                   = NULL;
00584     qglIndexf                    = NULL;
00585     qglIndexfv                   = NULL;
00586     qglIndexi                    = NULL;
00587     qglIndexiv                   = NULL;
00588     qglIndexs                    = NULL;
00589     qglIndexsv                   = NULL;
00590     qglIndexub                   = NULL;
00591     qglIndexubv                  = NULL;
00592     qglInitNames                 = NULL;
00593     qglInterleavedArrays         = NULL;
00594     qglIsEnabled                 = NULL;
00595     qglIsList                    = NULL;
00596     qglIsTexture                 = NULL;
00597     qglLightModelf               = NULL;
00598     qglLightModelfv              = NULL;
00599     qglLightModeli               = NULL;
00600     qglLightModeliv              = NULL;
00601     qglLightf                    = NULL;
00602     qglLightfv                   = NULL;
00603     qglLighti                    = NULL;
00604     qglLightiv                   = NULL;
00605     qglLineStipple               = NULL;
00606     qglLineWidth                 = NULL;
00607     qglListBase                  = NULL;
00608     qglLoadIdentity              = NULL;
00609     qglLoadMatrixd               = NULL;
00610     qglLoadMatrixf               = NULL;
00611     qglLoadName                  = NULL;
00612     qglLogicOp                   = NULL;
00613     qglMap1d                     = NULL;
00614     qglMap1f                     = NULL;
00615     qglMap2d                     = NULL;
00616     qglMap2f                     = NULL;
00617     qglMapGrid1d                 = NULL;
00618     qglMapGrid1f                 = NULL;
00619     qglMapGrid2d                 = NULL;
00620     qglMapGrid2f                 = NULL;
00621     qglMaterialf                 = NULL;
00622     qglMaterialfv                = NULL;
00623     qglMateriali                 = NULL;
00624     qglMaterialiv                = NULL;
00625     qglMatrixMode                = NULL;
00626     qglMultMatrixd               = NULL;
00627     qglMultMatrixf               = NULL;
00628     qglNewList                   = NULL;
00629     qglNormal3b                  = NULL;
00630     qglNormal3bv                 = NULL;
00631     qglNormal3d                  = NULL;
00632     qglNormal3dv                 = NULL;
00633     qglNormal3f                  = NULL;
00634     qglNormal3fv                 = NULL;
00635     qglNormal3i                  = NULL;
00636     qglNormal3iv                 = NULL;
00637     qglNormal3s                  = NULL;
00638     qglNormal3sv                 = NULL;
00639     qglNormalPointer             = NULL;
00640     qglOrtho                     = NULL;
00641     qglPassThrough               = NULL;
00642     qglPixelMapfv                = NULL;
00643     qglPixelMapuiv               = NULL;
00644     qglPixelMapusv               = NULL;
00645     qglPixelStoref               = NULL;
00646     qglPixelStorei               = NULL;
00647     qglPixelTransferf            = NULL;
00648     qglPixelTransferi            = NULL;
00649     qglPixelZoom                 = NULL;
00650     qglPointSize                 = NULL;
00651     qglPolygonMode               = NULL;
00652     qglPolygonOffset             = NULL;
00653     qglPolygonStipple            = NULL;
00654     qglPopAttrib                 = NULL;
00655     qglPopClientAttrib           = NULL;
00656     qglPopMatrix                 = NULL;
00657     qglPopName                   = NULL;
00658     qglPrioritizeTextures        = NULL;
00659     qglPushAttrib                = NULL;
00660     qglPushClientAttrib          = NULL;
00661     qglPushMatrix                = NULL;
00662     qglPushName                  = NULL;
00663     qglRasterPos2d               = NULL;
00664     qglRasterPos2dv              = NULL;
00665     qglRasterPos2f               = NULL;
00666     qglRasterPos2fv              = NULL;
00667     qglRasterPos2i               = NULL;
00668     qglRasterPos2iv              = NULL;
00669     qglRasterPos2s               = NULL;
00670     qglRasterPos2sv              = NULL;
00671     qglRasterPos3d               = NULL;
00672     qglRasterPos3dv              = NULL;
00673     qglRasterPos3f               = NULL;
00674     qglRasterPos3fv              = NULL;
00675     qglRasterPos3i               = NULL;
00676     qglRasterPos3iv              = NULL;
00677     qglRasterPos3s               = NULL;
00678     qglRasterPos3sv              = NULL;
00679     qglRasterPos4d               = NULL;
00680     qglRasterPos4dv              = NULL;
00681     qglRasterPos4f               = NULL;
00682     qglRasterPos4fv              = NULL;
00683     qglRasterPos4i               = NULL;
00684     qglRasterPos4iv              = NULL;
00685     qglRasterPos4s               = NULL;
00686     qglRasterPos4sv              = NULL;
00687     qglReadBuffer                = NULL;
00688     qglReadPixels                = NULL;
00689     qglRectd                     = NULL;
00690     qglRectdv                    = NULL;
00691     qglRectf                     = NULL;
00692     qglRectfv                    = NULL;
00693     qglRecti                     = NULL;
00694     qglRectiv                    = NULL;
00695     qglRects                     = NULL;
00696     qglRectsv                    = NULL;
00697     qglRenderMode                = NULL;
00698     qglRotated                   = NULL;
00699     qglRotatef                   = NULL;
00700     qglScaled                    = NULL;
00701     qglScalef                    = NULL;
00702     qglScissor                   = NULL;
00703     qglSelectBuffer              = NULL;
00704     qglShadeModel                = NULL;
00705     qglStencilFunc               = NULL;
00706     qglStencilMask               = NULL;
00707     qglStencilOp                 = NULL;
00708     qglTexCoord1d                = NULL;
00709     qglTexCoord1dv               = NULL;
00710     qglTexCoord1f                = NULL;
00711     qglTexCoord1fv               = NULL;
00712     qglTexCoord1i                = NULL;
00713     qglTexCoord1iv               = NULL;
00714     qglTexCoord1s                = NULL;
00715     qglTexCoord1sv               = NULL;
00716     qglTexCoord2d                = NULL;
00717     qglTexCoord2dv               = NULL;
00718     qglTexCoord2f                = NULL;
00719     qglTexCoord2fv               = NULL;
00720     qglTexCoord2i                = NULL;
00721     qglTexCoord2iv               = NULL;
00722     qglTexCoord2s                = NULL;
00723     qglTexCoord2sv               = NULL;
00724     qglTexCoord3d                = NULL;
00725     qglTexCoord3dv               = NULL;
00726     qglTexCoord3f                = NULL;
00727     qglTexCoord3fv               = NULL;
00728     qglTexCoord3i                = NULL;
00729     qglTexCoord3iv               = NULL;
00730     qglTexCoord3s                = NULL;
00731     qglTexCoord3sv               = NULL;
00732     qglTexCoord4d                = NULL;
00733     qglTexCoord4dv               = NULL;
00734     qglTexCoord4f                = NULL;
00735     qglTexCoord4fv               = NULL;
00736     qglTexCoord4i                = NULL;
00737     qglTexCoord4iv               = NULL;
00738     qglTexCoord4s                = NULL;
00739     qglTexCoord4sv               = NULL;
00740     qglTexCoordPointer           = NULL;
00741     qglTexEnvf                   = NULL;
00742     qglTexEnvfv                  = NULL;
00743     qglTexEnvi                   = NULL;
00744     qglTexEnviv                  = NULL;
00745     qglTexGend                   = NULL;
00746     qglTexGendv                  = NULL;
00747     qglTexGenf                   = NULL;
00748     qglTexGenfv                  = NULL;
00749     qglTexGeni                   = NULL;
00750     qglTexGeniv                  = NULL;
00751     qglTexImage1D                = NULL;
00752     qglTexImage2D                = NULL;
00753     qglTexParameterf             = NULL;
00754     qglTexParameterfv            = NULL;
00755     qglTexParameteri             = NULL;
00756     qglTexParameteriv            = NULL;
00757     qglTexSubImage1D             = NULL;
00758     qglTexSubImage2D             = NULL;
00759     qglTranslated                = NULL;
00760     qglTranslatef                = NULL;
00761     qglVertex2d                  = NULL;
00762     qglVertex2dv                 = NULL;
00763     qglVertex2f                  = NULL;
00764     qglVertex2fv                 = NULL;
00765     qglVertex2i                  = NULL;
00766     qglVertex2iv                 = NULL;
00767     qglVertex2s                  = NULL;
00768     qglVertex2sv                 = NULL;
00769     qglVertex3d                  = NULL;
00770     qglVertex3dv                 = NULL;
00771     qglVertex3f                  = NULL;
00772     qglVertex3fv                 = NULL;
00773     qglVertex3i                  = NULL;
00774     qglVertex3iv                 = NULL;
00775     qglVertex3s                  = NULL;
00776     qglVertex3sv                 = NULL;
00777     qglVertex4d                  = NULL;
00778     qglVertex4dv                 = NULL;
00779     qglVertex4f                  = NULL;
00780     qglVertex4fv                 = NULL;
00781     qglVertex4i                  = NULL;
00782     qglVertex4iv                 = NULL;
00783     qglVertex4s                  = NULL;
00784     qglVertex4sv                 = NULL;
00785     qglVertexPointer             = NULL;
00786     qglViewport                  = NULL;
00787 
00788     qwglCopyContext              = NULL;
00789     qwglCreateContext            = NULL;
00790     qwglCreateLayerContext       = NULL;
00791     qwglDeleteContext            = NULL;
00792     qwglDescribeLayerPlane       = NULL;
00793     qwglGetCurrentContext        = NULL;
00794     qwglGetCurrentDC             = NULL;
00795     qwglGetLayerPaletteEntries   = NULL;
00796     qwglGetProcAddress           = NULL;
00797     qwglMakeCurrent              = NULL;
00798     qwglRealizeLayerPalette      = NULL;
00799     qwglSetLayerPaletteEntries   = NULL;
00800     qwglShareLists               = NULL;
00801     qwglSwapLayerBuffers         = NULL;
00802     qwglUseFontBitmaps           = NULL;
00803     qwglUseFontOutlines          = NULL;
00804 
00805     qwglChoosePixelFormat        = NULL;
00806     qwglDescribePixelFormat      = NULL;
00807     qwglGetPixelFormat           = NULL;
00808     qwglSetPixelFormat           = NULL;
00809     qwglSwapBuffers              = NULL;
00810 
00811     qwglSwapIntervalEXT = NULL;
00812 
00813     qwglGetDeviceGammaRampEXT = NULL;
00814     qwglSetDeviceGammaRampEXT = NULL;
00815 
00816   qgluPerspective = NULL;
00817   qgluBuild2DMipmaps = NULL;
00818 
00819   qgluLookAt = NULL;
00820 }
00821 
00822 #   define GPA(h, a ) GetProcAddress( h, a )
00823 
00824 /*
00825 ** QGL_Init
00826 **
00827 ** This is responsible for binding our qgl function pointers to 
00828 ** the appropriate GL stuff.  In Windows this means doing a 
00829 ** LoadLibrary and a bunch of calls to GetProcAddress.  On other
00830 ** operating systems we need to do the right thing, whatever that
00831 ** might be.
00832 ** 
00833 */
00834 int QGL_Init(const char *dllname, const char* pGluName )
00835 {
00836 
00837   g_hGLDLL = LoadLibrary(dllname);
00838   if (g_hGLDLL == NULL)
00839   {
00840     return 0;
00841   }
00842 
00843   g_hGLUDLL = LoadLibrary(pGluName);
00844   if (g_hGLUDLL == NULL)
00845   {
00846     FreeLibrary(g_hGLDLL);
00847     g_hGLDLL = NULL;
00848     return 0;
00849   }
00850 
00851 
00852   qgluPerspective              = GPA(g_hGLUDLL, "gluPerspective");
00853   qgluBuild2DMipmaps           = GPA(g_hGLUDLL, "gluBuild2DMipmaps");
00854     // added for plugins
00855     qgluLookAt                   = GPA(g_hGLUDLL, "gluLookAt" );
00856 
00857     qglAccum                     = GPA(g_hGLDLL, "glAccum" );
00858     qglAlphaFunc                 = GPA(g_hGLDLL, "glAlphaFunc" );
00859     qglAreTexturesResident       = GPA(g_hGLDLL, "glAreTexturesResident" );
00860     qglArrayElement              = GPA(g_hGLDLL, "glArrayElement" );
00861     qglBegin                     = GPA(g_hGLDLL, "glBegin" );
00862     qglBindTexture               = GPA(g_hGLDLL, "glBindTexture" );
00863     qglBitmap                    = GPA(g_hGLDLL, "glBitmap" );
00864     qglBlendFunc                 = GPA(g_hGLDLL, "glBlendFunc" );
00865     qglCallList                  = GPA(g_hGLDLL, "glCallList" );
00866     qglCallLists                 = GPA(g_hGLDLL, "glCallLists" );
00867     qglClear                     = GPA(g_hGLDLL, "glClear" );
00868     qglClearAccum                = GPA(g_hGLDLL, "glClearAccum" );
00869     qglClearColor                = GPA(g_hGLDLL, "glClearColor" );
00870     qglClearDepth                = GPA(g_hGLDLL, "glClearDepth" );
00871     qglClearIndex                = GPA(g_hGLDLL, "glClearIndex" );
00872     qglClearStencil              = GPA(g_hGLDLL, "glClearStencil" );
00873     qglClipPlane                 = GPA(g_hGLDLL, "glClipPlane" );
00874     qglColor3b                   = GPA(g_hGLDLL, "glColor3b" );
00875     qglColor3bv                  = GPA(g_hGLDLL, "glColor3bv" );
00876     qglColor3d                   = GPA(g_hGLDLL, "glColor3d" );
00877     qglColor3dv                  = GPA(g_hGLDLL, "glColor3dv" );
00878     qglColor3f                   = GPA(g_hGLDLL, "glColor3f" );
00879     qglColor3fv                  = GPA(g_hGLDLL, "glColor3fv" );
00880     qglColor3i                   = GPA(g_hGLDLL, "glColor3i" );
00881     qglColor3iv                  = GPA(g_hGLDLL, "glColor3iv" );
00882     qglColor3s                   = GPA(g_hGLDLL, "glColor3s" );
00883     qglColor3sv                  = GPA(g_hGLDLL, "glColor3sv" );
00884     qglColor3ub                  = GPA(g_hGLDLL, "glColor3ub" );
00885     qglColor3ubv                 = GPA(g_hGLDLL, "glColor3ubv" );
00886     qglColor3ui                  = GPA(g_hGLDLL, "glColor3ui" );
00887     qglColor3uiv                 = GPA(g_hGLDLL, "glColor3uiv" );
00888     qglColor3us                  = GPA(g_hGLDLL, "glColor3us" );
00889     qglColor3usv                 = GPA(g_hGLDLL, "glColor3usv" );
00890     qglColor4b                   = GPA(g_hGLDLL, "glColor4b" );
00891     qglColor4bv                  = GPA(g_hGLDLL, "glColor4bv" );
00892     qglColor4d                   = GPA(g_hGLDLL, "glColor4d" );
00893     qglColor4dv                  = GPA(g_hGLDLL, "glColor4dv" );
00894