2
===========================================================================
3
Copyright (C) 1999-2005 Id Software, Inc.
5
This file is part of Quake III Arena source code.
7
Quake III Arena source code is free software; you can redistribute it
8
and/or modify it under the terms of the GNU General Public License as
9
published by the Free Software Foundation; either version 2 of the License,
10
or (at your option) any later version.
12
Quake III Arena source code is distributed in the hope that it will be
13
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with Quake III Arena source code; if not, write to the Free Software
19
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
===========================================================================
29
#if defined( __LINT__ )
33
#elif defined( _WIN32 )
36
#pragma warning (disable: 4201)
37
#pragma warning (disable: 4214)
38
#pragma warning (disable: 4514)
39
#pragma warning (disable: 4032)
40
#pragma warning (disable: 4201)
41
#pragma warning (disable: 4214)
47
#elif defined(MACOS_X)
49
#include <OpenGL/OpenGL.h>
50
#include <OpenGL/gl.h>
51
#include <OpenGL/glu.h>
53
#include <OpenGL/glext.h>
56
// This can be defined to use the CGLMacro.h support which avoids looking up
57
// the current context.
58
//#define USE_CGLMACROS
61
#include "macosx_local.h"
62
#define cgl_ctx glw_state._cgl_ctx
63
#include <OpenGL/CGLMacro.h>
66
#elif defined( __linux__ ) || defined(__FreeBSD__)
70
// bk001129 - from cvs1.17 (mkv)
72
#include <GL/fxmesa.h>
75
#elif defined( __sun )
93
//===========================================================================
94
// <Timbo> I hate this section so much
97
** multitexture extension definitions
101
#define GL_ACTIVE_TEXTURE_ARB 0x84E0
102
#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1
103
#define GL_MAX_ACTIVE_TEXTURES_ARB 0x84E2
105
#define GL_TEXTURE0_ARB 0x84C0
106
#define GL_TEXTURE1_ARB 0x84C1
107
#define GL_TEXTURE2_ARB 0x84C2
108
#define GL_TEXTURE3_ARB 0x84C3
112
#define GL_MAX_ACTIVE_TEXTURES_ARB 0x84E2
114
#endif /* defined(__sun) */
116
// anisotropic filtering constants
117
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
118
#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
120
// define for skyboxes without black seams on non SDL-versions.
121
#if !defined(GL_VERSION_1_2) && !defined(GL_CLAMP_TO_EDGE)
122
#define GL_CLAMP_TO_EDGE 0x812F
125
//===========================================================================
127
// NOTE: some Linux platforms would need those prototypes
128
#if defined(MACOS_X) || ( defined(__sun) && defined(__sparc) )
129
typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);
130
typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);
131
typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);
132
typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);
133
typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);
134
typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);
135
typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);
136
typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);
137
typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);
138
typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);
139
typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
140
typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);
141
typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);
142
typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);
143
typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);
144
typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);
145
typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);
146
typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);
147
typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);
148
typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);
149
typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);
150
typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);
151
typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);
152
typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);
153
typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
154
typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);
155
typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
156
typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);
157
typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);
158
typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);
159
typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
160
typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);
161
typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target);
162
typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum target);
165
// TTimo - VC7 / XP ?
167
typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);
168
typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target);
169
typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum target);
173
** extension constants
177
// S3TC compression constants
178
#define GL_RGB_S3TC 0x83A0
179
#define GL_RGB4_S3TC 0x83A1
182
// extensions will be function pointers on all platforms
184
extern void ( APIENTRY * qglMultiTexCoord2fARB )( GLenum texture, GLfloat s, GLfloat t );
185
extern void ( APIENTRY * qglActiveTextureARB )( GLenum texture );
186
extern void ( APIENTRY * qglClientActiveTextureARB )( GLenum texture );
188
extern void ( APIENTRY * qglLockArraysEXT) (GLint, GLint);
189
extern void ( APIENTRY * qglUnlockArraysEXT) (void);
191
//===========================================================================
193
// non-dlopening systems will just redefine qgl* to gl*
194
#if !defined( _WIN32 ) && !defined(MACOS_X) && !defined( __linux__ ) && !defined( __FreeBSD__ ) && !defined(__sun) // rb010123
196
#include "qgl_linked.h"
198
#elif (defined(MACOS_X) && !defined(USE_SDL_VIDEO))
199
// This includes #ifdefs for optional logging and GL error checking after every GL call as well as #defines to prevent incorrect usage of the non-'qgl' versions of the GL API.
200
#include "macosx_qgl.h"
204
// windows systems use a function pointer for each call so we can load minidrivers
206
extern void ( APIENTRY * qglAccum )(GLenum op, GLfloat value);
207
extern void ( APIENTRY * qglAlphaFunc )(GLenum func, GLclampf ref);
208
extern GLboolean ( APIENTRY * qglAreTexturesResident )(GLsizei n, const GLuint *textures, GLboolean *residences);
209
extern void ( APIENTRY * qglArrayElement )(GLint i);
210
extern void ( APIENTRY * qglBegin )(GLenum mode);
211
extern void ( APIENTRY * qglBindTexture )(GLenum target, GLuint texture);
212
extern void ( APIENTRY * qglBitmap )(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
213
extern void ( APIENTRY * qglBlendFunc )(GLenum sfactor, GLenum dfactor);
214
extern void ( APIENTRY * qglCallList )(GLuint list);
215
extern void ( APIENTRY * qglCallLists )(GLsizei n, GLenum type, const GLvoid *lists);
216
extern void ( APIENTRY * qglClear )(GLbitfield mask);
217
extern void ( APIENTRY * qglClearAccum )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
218
extern void ( APIENTRY * qglClearColor )(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
219
extern void ( APIENTRY * qglClearDepth )(GLclampd depth);
220
extern void ( APIENTRY * qglClearIndex )(GLfloat c);
221
extern void ( APIENTRY * qglClearStencil )(GLint s);
222
extern void ( APIENTRY * qglClipPlane )(GLenum plane, const GLdouble *equation);
223
extern void ( APIENTRY * qglColor3b )(GLbyte red, GLbyte green, GLbyte blue);
224
extern void ( APIENTRY * qglColor3bv )(const GLbyte *v);
225
extern void ( APIENTRY * qglColor3d )(GLdouble red, GLdouble green, GLdouble blue);
226
extern void ( APIENTRY * qglColor3dv )(const GLdouble *v);
227
extern void ( APIENTRY * qglColor3f )(GLfloat red, GLfloat green, GLfloat blue);
228
extern void ( APIENTRY * qglColor3fv )(const GLfloat *v);
229
extern void ( APIENTRY * qglColor3i )(GLint red, GLint green, GLint blue);
230
extern void ( APIENTRY * qglColor3iv )(const GLint *v);
231
extern void ( APIENTRY * qglColor3s )(GLshort red, GLshort green, GLshort blue);
232
extern void ( APIENTRY * qglColor3sv )(const GLshort *v);
233
extern void ( APIENTRY * qglColor3ub )(GLubyte red, GLubyte green, GLubyte blue);
234
extern void ( APIENTRY * qglColor3ubv )(const GLubyte *v);
235
extern void ( APIENTRY * qglColor3ui )(GLuint red, GLuint green, GLuint blue);
236
extern void ( APIENTRY * qglColor3uiv )(const GLuint *v);
237
extern void ( APIENTRY * qglColor3us )(GLushort red, GLushort green, GLushort blue);
238
extern void ( APIENTRY * qglColor3usv )(const GLushort *v);
239
extern void ( APIENTRY * qglColor4b )(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
240
extern void ( APIENTRY * qglColor4bv )(const GLbyte *v);
241
extern void ( APIENTRY * qglColor4d )(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
242
extern void ( APIENTRY * qglColor4dv )(const GLdouble *v);
243
extern void ( APIENTRY * qglColor4f )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
244
extern void ( APIENTRY * qglColor4fv )(const GLfloat *v);
245
extern void ( APIENTRY * qglColor4i )(GLint red, GLint green, GLint blue, GLint alpha);
246
extern void ( APIENTRY * qglColor4iv )(const GLint *v);
247
extern void ( APIENTRY * qglColor4s )(GLshort red, GLshort green, GLshort blue, GLshort alpha);
248
extern void ( APIENTRY * qglColor4sv )(const GLshort *v);
249
extern void ( APIENTRY * qglColor4ub )(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
250
extern void ( APIENTRY * qglColor4ubv )(const GLubyte *v);
251
extern void ( APIENTRY * qglColor4ui )(GLuint red, GLuint green, GLuint blue, GLuint alpha);
252
extern void ( APIENTRY * qglColor4uiv )(const GLuint *v);
253
extern void ( APIENTRY * qglColor4us )(GLushort red, GLushort green, GLushort blue, GLushort alpha);
254
extern void ( APIENTRY * qglColor4usv )(const GLushort *v);
255
extern void ( APIENTRY * qglColorMask )(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
256
extern void ( APIENTRY * qglColorMaterial )(GLenum face, GLenum mode);
257
extern void ( APIENTRY * qglColorPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
258
extern void ( APIENTRY * qglCopyPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
259
extern void ( APIENTRY * qglCopyTexImage1D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
260
extern void ( APIENTRY * qglCopyTexImage2D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
261
extern void ( APIENTRY * qglCopyTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
262
extern void ( APIENTRY * qglCopyTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
263
extern void ( APIENTRY * qglCullFace )(GLenum mode);
264
extern void ( APIENTRY * qglDeleteLists )(GLuint list, GLsizei range);
265
extern void ( APIENTRY * qglDeleteTextures )(GLsizei n, const GLuint *textures);
266
extern void ( APIENTRY * qglDepthFunc )(GLenum func);
267
extern void ( APIENTRY * qglDepthMask )(GLboolean flag);
268
extern void ( APIENTRY * qglDepthRange )(GLclampd zNear, GLclampd zFar);
269
extern void ( APIENTRY * qglDisable )(GLenum cap);
270
extern void ( APIENTRY * qglDisableClientState )(GLenum array);
271
extern void ( APIENTRY * qglDrawArrays )(GLenum mode, GLint first, GLsizei count);
272
extern void ( APIENTRY * qglDrawBuffer )(GLenum mode);
273
extern void ( APIENTRY * qglDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
274
extern void ( APIENTRY * qglDrawPixels )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
275
extern void ( APIENTRY * qglEdgeFlag )(GLboolean flag);
276
extern void ( APIENTRY * qglEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer);
277
extern void ( APIENTRY * qglEdgeFlagv )(const GLboolean *flag);
278
extern void ( APIENTRY * qglEnable )(GLenum cap);
279
extern void ( APIENTRY * qglEnableClientState )(GLenum array);
280
extern void ( APIENTRY * qglEnd )(void);
281
extern void ( APIENTRY * qglEndList )(void);
282
extern void ( APIENTRY * qglEvalCoord1d )(GLdouble u);
283
extern void ( APIENTRY * qglEvalCoord1dv )(const GLdouble *u);
284
extern void ( APIENTRY * qglEvalCoord1f )(GLfloat u);
285
extern void ( APIENTRY * qglEvalCoord1fv )(const GLfloat *u);
286
extern void ( APIENTRY * qglEvalCoord2d )(GLdouble u, GLdouble v);
287
extern void ( APIENTRY * qglEvalCoord2dv )(const GLdouble *u);
288
extern void ( APIENTRY * qglEvalCoord2f )(GLfloat u, GLfloat v);
289
extern void ( APIENTRY * qglEvalCoord2fv )(const GLfloat *u);
290
extern void ( APIENTRY * qglEvalMesh1 )(GLenum mode, GLint i1, GLint i2);
291
extern void ( APIENTRY * qglEvalMesh2 )(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
292
extern void ( APIENTRY * qglEvalPoint1 )(GLint i);
293
extern void ( APIENTRY * qglEvalPoint2 )(GLint i, GLint j);
294
extern void ( APIENTRY * qglFeedbackBuffer )(GLsizei size, GLenum type, GLfloat *buffer);
295
extern void ( APIENTRY * qglFinish )(void);
296
extern void ( APIENTRY * qglFlush )(void);
297
extern void ( APIENTRY * qglFogf )(GLenum pname, GLfloat param);
298
extern void ( APIENTRY * qglFogfv )(GLenum pname, const GLfloat *params);
299
extern void ( APIENTRY * qglFogi )(GLenum pname, GLint param);
300
extern void ( APIENTRY * qglFogiv )(GLenum pname, const GLint *params);
301
extern void ( APIENTRY * qglFrontFace )(GLenum mode);
302
extern void ( APIENTRY * qglFrustum )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
303
extern GLuint ( APIENTRY * qglGenLists )(GLsizei range);
304
extern void ( APIENTRY * qglGenTextures )(GLsizei n, GLuint *textures);
305
extern void ( APIENTRY * qglGetBooleanv )(GLenum pname, GLboolean *params);
306
extern void ( APIENTRY * qglGetClipPlane )(GLenum plane, GLdouble *equation);
307
extern void ( APIENTRY * qglGetDoublev )(GLenum pname, GLdouble *params);
308
extern GLenum ( APIENTRY * qglGetError )(void);
309
extern void ( APIENTRY * qglGetFloatv )(GLenum pname, GLfloat *params);
310
extern void ( APIENTRY * qglGetIntegerv )(GLenum pname, GLint *params);
311
extern void ( APIENTRY * qglGetLightfv )(GLenum light, GLenum pname, GLfloat *params);
312
extern void ( APIENTRY * qglGetLightiv )(GLenum light, GLenum pname, GLint *params);
313
extern void ( APIENTRY * qglGetMapdv )(GLenum target, GLenum query, GLdouble *v);
314
extern void ( APIENTRY * qglGetMapfv )(GLenum target, GLenum query, GLfloat *v);
315
extern void ( APIENTRY * qglGetMapiv )(GLenum target, GLenum query, GLint *v);
316
extern void ( APIENTRY * qglGetMaterialfv )(GLenum face, GLenum pname, GLfloat *params);
317
extern void ( APIENTRY * qglGetMaterialiv )(GLenum face, GLenum pname, GLint *params);
318
extern void ( APIENTRY * qglGetPixelMapfv )(GLenum map, GLfloat *values);
319
extern void ( APIENTRY * qglGetPixelMapuiv )(GLenum map, GLuint *values);
320
extern void ( APIENTRY * qglGetPixelMapusv )(GLenum map, GLushort *values);
321
extern void ( APIENTRY * qglGetPointerv )(GLenum pname, GLvoid* *params);
322
extern void ( APIENTRY * qglGetPolygonStipple )(GLubyte *mask);
323
extern const GLubyte * ( APIENTRY * qglGetString )(GLenum name);
324
extern void ( APIENTRY * qglGetTexEnvfv )(GLenum target, GLenum pname, GLfloat *params);
325
extern void ( APIENTRY * qglGetTexEnviv )(GLenum target, GLenum pname, GLint *params);
326
extern void ( APIENTRY * qglGetTexGendv )(GLenum coord, GLenum pname, GLdouble *params);
327
extern void ( APIENTRY * qglGetTexGenfv )(GLenum coord, GLenum pname, GLfloat *params);
328
extern void ( APIENTRY * qglGetTexGeniv )(GLenum coord, GLenum pname, GLint *params);
329
extern void ( APIENTRY * qglGetTexImage )(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
330
extern void ( APIENTRY * qglGetTexLevelParameterfv )(GLenum target, GLint level, GLenum pname, GLfloat *params);
331
extern void ( APIENTRY * qglGetTexLevelParameteriv )(GLenum target, GLint level, GLenum pname, GLint *params);
332
extern void ( APIENTRY * qglGetTexParameterfv )(GLenum target, GLenum pname, GLfloat *params);
333
extern void ( APIENTRY * qglGetTexParameteriv )(GLenum target, GLenum pname, GLint *params);
334
extern void ( APIENTRY * qglHint )(GLenum target, GLenum mode);
335
extern void ( APIENTRY * qglIndexMask )(GLuint mask);
336
extern void ( APIENTRY * qglIndexPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
337
extern void ( APIENTRY * qglIndexd )(GLdouble c);
338
extern void ( APIENTRY * qglIndexdv )(const GLdouble *c);
339
extern void ( APIENTRY * qglIndexf )(GLfloat c);
340
extern void ( APIENTRY * qglIndexfv )(const GLfloat *c);
341
extern void ( APIENTRY * qglIndexi )(GLint c);
342
extern void ( APIENTRY * qglIndexiv )(const GLint *c);
343
extern void ( APIENTRY * qglIndexs )(GLshort c);
344
extern void ( APIENTRY * qglIndexsv )(const GLshort *c);
345
extern void ( APIENTRY * qglIndexub )(GLubyte c);
346
extern void ( APIENTRY * qglIndexubv )(const GLubyte *c);
347
extern void ( APIENTRY * qglInitNames )(void);
348
extern void ( APIENTRY * qglInterleavedArrays )(GLenum format, GLsizei stride, const GLvoid *pointer);
349
extern GLboolean ( APIENTRY * qglIsEnabled )(GLenum cap);
350
extern GLboolean ( APIENTRY * qglIsList )(GLuint list);
351
extern GLboolean ( APIENTRY * qglIsTexture )(GLuint texture);
352
extern void ( APIENTRY * qglLightModelf )(GLenum pname, GLfloat param);
353
extern void ( APIENTRY * qglLightModelfv )(GLenum pname, const GLfloat *params);
354
extern void ( APIENTRY * qglLightModeli )(GLenum pname, GLint param);
355
extern void ( APIENTRY * qglLightModeliv )(GLenum pname, const GLint *params);
356
extern void ( APIENTRY * qglLightf )(GLenum light, GLenum pname, GLfloat param);
357
extern void ( APIENTRY * qglLightfv )(GLenum light, GLenum pname, const GLfloat *params);
358
extern void ( APIENTRY * qglLighti )(GLenum light, GLenum pname, GLint param);
359
extern void ( APIENTRY * qglLightiv )(GLenum light, GLenum pname, const GLint *params);
360
extern void ( APIENTRY * qglLineStipple )(GLint factor, GLushort pattern);
361
extern void ( APIENTRY * qglLineWidth )(GLfloat width);
362
extern void ( APIENTRY * qglListBase )(GLuint base);
363
extern void ( APIENTRY * qglLoadIdentity )(void);
364
extern void ( APIENTRY * qglLoadMatrixd )(const GLdouble *m);
365
extern void ( APIENTRY * qglLoadMatrixf )(const GLfloat *m);
366
extern void ( APIENTRY * qglLoadName )(GLuint name);
367
extern void ( APIENTRY * qglLogicOp )(GLenum opcode);
368
extern void ( APIENTRY * qglMap1d )(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
369
extern void ( APIENTRY * qglMap1f )(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
370
extern void ( APIENTRY * qglMap2d )(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
371
extern void ( APIENTRY * qglMap2f )(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
372
extern void ( APIENTRY * qglMapGrid1d )(GLint un, GLdouble u1, GLdouble u2);
373
extern void ( APIENTRY * qglMapGrid1f )(GLint un, GLfloat u1, GLfloat u2);
374
extern void ( APIENTRY * qglMapGrid2d )(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
375
extern void ( APIENTRY * qglMapGrid2f )(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
376
extern void ( APIENTRY * qglMaterialf )(GLenum face, GLenum pname, GLfloat param);
377
extern void ( APIENTRY * qglMaterialfv )(GLenum face, GLenum pname, const GLfloat *params);
378
extern void ( APIENTRY * qglMateriali )(GLenum face, GLenum pname, GLint param);
379
extern void ( APIENTRY * qglMaterialiv )(GLenum face, GLenum pname, const GLint *params);
380
extern void ( APIENTRY * qglMatrixMode )(GLenum mode);
381
extern void ( APIENTRY * qglMultMatrixd )(const GLdouble *m);
382
extern void ( APIENTRY * qglMultMatrixf )(const GLfloat *m);
383
extern void ( APIENTRY * qglNewList )(GLuint list, GLenum mode);
384
extern void ( APIENTRY * qglNormal3b )(GLbyte nx, GLbyte ny, GLbyte nz);
385
extern void ( APIENTRY * qglNormal3bv )(const GLbyte *v);
386
extern void ( APIENTRY * qglNormal3d )(GLdouble nx, GLdouble ny, GLdouble nz);
387
extern void ( APIENTRY * qglNormal3dv )(const GLdouble *v);
388
extern void ( APIENTRY * qglNormal3f )(GLfloat nx, GLfloat ny, GLfloat nz);
389
extern void ( APIENTRY * qglNormal3fv )(const GLfloat *v);
390
extern void ( APIENTRY * qglNormal3i )(GLint nx, GLint ny, GLint nz);
391
extern void ( APIENTRY * qglNormal3iv )(const GLint *v);
392
extern void ( APIENTRY * qglNormal3s )(GLshort nx, GLshort ny, GLshort nz);
393
extern void ( APIENTRY * qglNormal3sv )(const GLshort *v);
394
extern void ( APIENTRY * qglNormalPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
395
extern void ( APIENTRY * qglOrtho )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
396
extern void ( APIENTRY * qglPassThrough )(GLfloat token);
397
extern void ( APIENTRY * qglPixelMapfv )(GLenum map, GLsizei mapsize, const GLfloat *values);
398
extern void ( APIENTRY * qglPixelMapuiv )(GLenum map, GLsizei mapsize, const GLuint *values);
399
extern void ( APIENTRY * qglPixelMapusv )(GLenum map, GLsizei mapsize, const GLushort *values);
400
extern void ( APIENTRY * qglPixelStoref )(GLenum pname, GLfloat param);
401
extern void ( APIENTRY * qglPixelStorei )(GLenum pname, GLint param);
402
extern void ( APIENTRY * qglPixelTransferf )(GLenum pname, GLfloat param);
403
extern void ( APIENTRY * qglPixelTransferi )(GLenum pname, GLint param);
404
extern void ( APIENTRY * qglPixelZoom )(GLfloat xfactor, GLfloat yfactor);
405
extern void ( APIENTRY * qglPointSize )(GLfloat size);
406
extern void ( APIENTRY * qglPolygonMode )(GLenum face, GLenum mode);
407
extern void ( APIENTRY * qglPolygonOffset )(GLfloat factor, GLfloat units);
408
extern void ( APIENTRY * qglPolygonStipple )(const GLubyte *mask);
409
extern void ( APIENTRY * qglPopAttrib )(void);
410
extern void ( APIENTRY * qglPopClientAttrib )(void);
411
extern void ( APIENTRY * qglPopMatrix )(void);
412
extern void ( APIENTRY * qglPopName )(void);
413
extern void ( APIENTRY * qglPrioritizeTextures )(GLsizei n, const GLuint *textures, const GLclampf *priorities);
414
extern void ( APIENTRY * qglPushAttrib )(GLbitfield mask);
415
extern void ( APIENTRY * qglPushClientAttrib )(GLbitfield mask);
416
extern void ( APIENTRY * qglPushMatrix )(void);
417
extern void ( APIENTRY * qglPushName )(GLuint name);
418
extern void ( APIENTRY * qglRasterPos2d )(GLdouble x, GLdouble y);
419
extern void ( APIENTRY * qglRasterPos2dv )(const GLdouble *v);
420
extern void ( APIENTRY * qglRasterPos2f )(GLfloat x, GLfloat y);
421
extern void ( APIENTRY * qglRasterPos2fv )(const GLfloat *v);
422
extern void ( APIENTRY * qglRasterPos2i )(GLint x, GLint y);
423
extern void ( APIENTRY * qglRasterPos2iv )(const GLint *v);
424
extern void ( APIENTRY * qglRasterPos2s )(GLshort x, GLshort y);
425
extern void ( APIENTRY * qglRasterPos2sv )(const GLshort *v);
426
extern void ( APIENTRY * qglRasterPos3d )(GLdouble x, GLdouble y, GLdouble z);
427
extern void ( APIENTRY * qglRasterPos3dv )(const GLdouble *v);
428
extern void ( APIENTRY * qglRasterPos3f )(GLfloat x, GLfloat y, GLfloat z);
429
extern void ( APIENTRY * qglRasterPos3fv )(const GLfloat *v);
430
extern void ( APIENTRY * qglRasterPos3i )(GLint x, GLint y, GLint z);
431
extern void ( APIENTRY * qglRasterPos3iv )(const GLint *v);
432
extern void ( APIENTRY * qglRasterPos3s )(GLshort x, GLshort y, GLshort z);
433
extern void ( APIENTRY * qglRasterPos3sv )(const GLshort *v);
434
extern void ( APIENTRY * qglRasterPos4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
435
extern void ( APIENTRY * qglRasterPos4dv )(const GLdouble *v);
436
extern void ( APIENTRY * qglRasterPos4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
437
extern void ( APIENTRY * qglRasterPos4fv )(const GLfloat *v);
438
extern void ( APIENTRY * qglRasterPos4i )(GLint x, GLint y, GLint z, GLint w);
439
extern void ( APIENTRY * qglRasterPos4iv )(const GLint *v);
440
extern void ( APIENTRY * qglRasterPos4s )(GLshort x, GLshort y, GLshort z, GLshort w);
441
extern void ( APIENTRY * qglRasterPos4sv )(const GLshort *v);
442
extern void ( APIENTRY * qglReadBuffer )(GLenum mode);
443
extern void ( APIENTRY * qglReadPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
444
extern void ( APIENTRY * qglRectd )(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
445
extern void ( APIENTRY * qglRectdv )(const GLdouble *v1, const GLdouble *v2);
446
extern void ( APIENTRY * qglRectf )(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
447
extern void ( APIENTRY * qglRectfv )(const GLfloat *v1, const GLfloat *v2);
448
extern void ( APIENTRY * qglRecti )(GLint x1, GLint y1, GLint x2, GLint y2);
449
extern void ( APIENTRY * qglRectiv )(const GLint *v1, const GLint *v2);
450
extern void ( APIENTRY * qglRects )(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
451
extern void ( APIENTRY * qglRectsv )(const GLshort *v1, const GLshort *v2);
452
extern GLint ( APIENTRY * qglRenderMode )(GLenum mode);
453
extern void ( APIENTRY * qglRotated )(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
454
extern void ( APIENTRY * qglRotatef )(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
455
extern void ( APIENTRY * qglScaled )(GLdouble x, GLdouble y, GLdouble z);
456
extern void ( APIENTRY * qglScalef )(GLfloat x, GLfloat y, GLfloat z);
457
extern void ( APIENTRY * qglScissor )(GLint x, GLint y, GLsizei width, GLsizei height);
458
extern void ( APIENTRY * qglSelectBuffer )(GLsizei size, GLuint *buffer);
459
extern void ( APIENTRY * qglShadeModel )(GLenum mode);
460
extern void ( APIENTRY * qglStencilFunc )(GLenum func, GLint ref, GLuint mask);
461
extern void ( APIENTRY * qglStencilMask )(GLuint mask);
462
extern void ( APIENTRY * qglStencilOp )(GLenum fail, GLenum zfail, GLenum zpass);
463
extern void ( APIENTRY * qglTexCoord1d )(GLdouble s);
464
extern void ( APIENTRY * qglTexCoord1dv )(const GLdouble *v);
465
extern void ( APIENTRY * qglTexCoord1f )(GLfloat s);
466
extern void ( APIENTRY * qglTexCoord1fv )(const GLfloat *v);
467
extern void ( APIENTRY * qglTexCoord1i )(GLint s);
468
extern void ( APIENTRY * qglTexCoord1iv )(const GLint *v);
469
extern void ( APIENTRY * qglTexCoord1s )(GLshort s);
470
extern void ( APIENTRY * qglTexCoord1sv )(const GLshort *v);
471
extern void ( APIENTRY * qglTexCoord2d )(GLdouble s, GLdouble t);
472
extern void ( APIENTRY * qglTexCoord2dv )(const GLdouble *v);
473
extern void ( APIENTRY * qglTexCoord2f )(GLfloat s, GLfloat t);
474
extern void ( APIENTRY * qglTexCoord2fv )(const GLfloat *v);
475
extern void ( APIENTRY * qglTexCoord2i )(GLint s, GLint t);
476
extern void ( APIENTRY * qglTexCoord2iv )(const GLint *v);
477
extern void ( APIENTRY * qglTexCoord2s )(GLshort s, GLshort t);
478
extern void ( APIENTRY * qglTexCoord2sv )(const GLshort *v);
479
extern void ( APIENTRY * qglTexCoord3d )(GLdouble s, GLdouble t, GLdouble r);
480
extern void ( APIENTRY * qglTexCoord3dv )(const GLdouble *v);
481
extern void ( APIENTRY * qglTexCoord3f )(GLfloat s, GLfloat t, GLfloat r);
482
extern void ( APIENTRY * qglTexCoord3fv )(const GLfloat *v);
483
extern void ( APIENTRY * qglTexCoord3i )(GLint s, GLint t, GLint r);
484
extern void ( APIENTRY * qglTexCoord3iv )(const GLint *v);
485
extern void ( APIENTRY * qglTexCoord3s )(GLshort s, GLshort t, GLshort r);
486
extern void ( APIENTRY * qglTexCoord3sv )(const GLshort *v);
487
extern void ( APIENTRY * qglTexCoord4d )(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
488
extern void ( APIENTRY * qglTexCoord4dv )(const GLdouble *v);
489
extern void ( APIENTRY * qglTexCoord4f )(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
490
extern void ( APIENTRY * qglTexCoord4fv )(const GLfloat *v);
491
extern void ( APIENTRY * qglTexCoord4i )(GLint s, GLint t, GLint r, GLint q);
492
extern void ( APIENTRY * qglTexCoord4iv )(const GLint *v);
493
extern void ( APIENTRY * qglTexCoord4s )(GLshort s, GLshort t, GLshort r, GLshort q);
494
extern void ( APIENTRY * qglTexCoord4sv )(const GLshort *v);
495
extern void ( APIENTRY * qglTexCoordPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
496
extern void ( APIENTRY * qglTexEnvf )(GLenum target, GLenum pname, GLfloat param);
497
extern void ( APIENTRY * qglTexEnvfv )(GLenum target, GLenum pname, const GLfloat *params);
498
extern void ( APIENTRY * qglTexEnvi )(GLenum target, GLenum pname, GLint param);
499
extern void ( APIENTRY * qglTexEnviv )(GLenum target, GLenum pname, const GLint *params);
500
extern void ( APIENTRY * qglTexGend )(GLenum coord, GLenum pname, GLdouble param);
501
extern void ( APIENTRY * qglTexGendv )(GLenum coord, GLenum pname, const GLdouble *params);
502
extern void ( APIENTRY * qglTexGenf )(GLenum coord, GLenum pname, GLfloat param);
503
extern void ( APIENTRY * qglTexGenfv )(GLenum coord, GLenum pname, const GLfloat *params);
504
extern void ( APIENTRY * qglTexGeni )(GLenum coord, GLenum pname, GLint param);
505
extern void ( APIENTRY * qglTexGeniv )(GLenum coord, GLenum pname, const GLint *params);
506
extern void ( APIENTRY * qglTexImage1D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
507
extern void ( APIENTRY * qglTexImage2D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
508
extern void ( APIENTRY * qglTexParameterf )(GLenum target, GLenum pname, GLfloat param);
509
extern void ( APIENTRY * qglTexParameterfv )(GLenum target, GLenum pname, const GLfloat *params);
510
extern void ( APIENTRY * qglTexParameteri )(GLenum target, GLenum pname, GLint param);
511
extern void ( APIENTRY * qglTexParameteriv )(GLenum target, GLenum pname, const GLint *params);
512
extern void ( APIENTRY * qglTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
513
extern void ( APIENTRY * qglTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
514
extern void ( APIENTRY * qglTranslated )(GLdouble x, GLdouble y, GLdouble z);
515
extern void ( APIENTRY * qglTranslatef )(GLfloat x, GLfloat y, GLfloat z);
516
extern void ( APIENTRY * qglVertex2d )(GLdouble x, GLdouble y);
517
extern void ( APIENTRY * qglVertex2dv )(const GLdouble *v);
518
extern void ( APIENTRY * qglVertex2f )(GLfloat x, GLfloat y);
519
extern void ( APIENTRY * qglVertex2fv )(const GLfloat *v);
520
extern void ( APIENTRY * qglVertex2i )(GLint x, GLint y);
521
extern void ( APIENTRY * qglVertex2iv )(const GLint *v);
522
extern void ( APIENTRY * qglVertex2s )(GLshort x, GLshort y);
523
extern void ( APIENTRY * qglVertex2sv )(const GLshort *v);
524
extern void ( APIENTRY * qglVertex3d )(GLdouble x, GLdouble y, GLdouble z);
525
extern void ( APIENTRY * qglVertex3dv )(const GLdouble *v);
526
extern void ( APIENTRY * qglVertex3f )(GLfloat x, GLfloat y, GLfloat z);
527
extern void ( APIENTRY * qglVertex3fv )(const GLfloat *v);
528
extern void ( APIENTRY * qglVertex3i )(GLint x, GLint y, GLint z);
529
extern void ( APIENTRY * qglVertex3iv )(const GLint *v);
530
extern void ( APIENTRY * qglVertex3s )(GLshort x, GLshort y, GLshort z);
531
extern void ( APIENTRY * qglVertex3sv )(const GLshort *v);
532
extern void ( APIENTRY * qglVertex4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
533
extern void ( APIENTRY * qglVertex4dv )(const GLdouble *v);
534
extern void ( APIENTRY * qglVertex4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
535
extern void ( APIENTRY * qglVertex4fv )(const GLfloat *v);
536
extern void ( APIENTRY * qglVertex4i )(GLint x, GLint y, GLint z, GLint w);
537
extern void ( APIENTRY * qglVertex4iv )(const GLint *v);
538
extern void ( APIENTRY * qglVertex4s )(GLshort x, GLshort y, GLshort z, GLshort w);
539
extern void ( APIENTRY * qglVertex4sv )(const GLshort *v);
540
extern void ( APIENTRY * qglVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
541
extern void ( APIENTRY * qglViewport )(GLint x, GLint y, GLsizei width, GLsizei height);
543
#if defined( _WIN32 )
545
extern int ( WINAPI * qwglChoosePixelFormat )(HDC, CONST PIXELFORMATDESCRIPTOR *);
546
extern int ( WINAPI * qwglDescribePixelFormat) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
547
extern int ( WINAPI * qwglGetPixelFormat)(HDC);
548
extern BOOL ( WINAPI * qwglSetPixelFormat)(HDC, int, CONST PIXELFORMATDESCRIPTOR *);
549
extern BOOL ( WINAPI * qwglSwapBuffers)(HDC);
551
extern BOOL ( WINAPI * qwglGetDeviceGammaRamp3DFX)( HDC, LPVOID );
552
extern BOOL ( WINAPI * qwglSetDeviceGammaRamp3DFX)( HDC, LPVOID );
554
extern BOOL ( WINAPI * qwglCopyContext)(HGLRC, HGLRC, UINT);
555
extern HGLRC ( WINAPI * qwglCreateContext)(HDC);
556
extern HGLRC ( WINAPI * qwglCreateLayerContext)(HDC, int);
557
extern BOOL ( WINAPI * qwglDeleteContext)(HGLRC);
558
extern HGLRC ( WINAPI * qwglGetCurrentContext)(VOID);
559
extern HDC ( WINAPI * qwglGetCurrentDC)(VOID);
560
extern PROC ( WINAPI * qwglGetProcAddress)(LPCSTR);
561
extern BOOL ( WINAPI * qwglMakeCurrent)(HDC, HGLRC);
562
extern BOOL ( WINAPI * qwglShareLists)(HGLRC, HGLRC);
563
extern BOOL ( WINAPI * qwglUseFontBitmaps)(HDC, DWORD, DWORD, DWORD);
565
extern BOOL ( WINAPI * qwglUseFontOutlines)(HDC, DWORD, DWORD, DWORD, FLOAT,
566
FLOAT, int, LPGLYPHMETRICSFLOAT);
568
extern BOOL ( WINAPI * qwglDescribeLayerPlane)(HDC, int, int, UINT,
569
LPLAYERPLANEDESCRIPTOR);
570
extern int ( WINAPI * qwglSetLayerPaletteEntries)(HDC, int, int, int,
572
extern int ( WINAPI * qwglGetLayerPaletteEntries)(HDC, int, int, int,
574
extern BOOL ( WINAPI * qwglRealizeLayerPalette)(HDC, int, BOOL);
575
extern BOOL ( WINAPI * qwglSwapLayerBuffers)(HDC, UINT);
577
extern BOOL ( WINAPI * qwglSwapIntervalEXT)( int interval );
581
#if ( (defined __linux__ ) || (defined __FreeBSD__ ) || (defined __sun) ) // rb010123
584
// bk001129 - from cvs1.17 (mkv)
586
extern fxMesaContext (*qfxMesaCreateContext)(GLuint win, GrScreenResolution_t, GrScreenRefresh_t, const GLint attribList[]);
587
extern fxMesaContext (*qfxMesaCreateBestContext)(GLuint win, GLint width, GLint height, const GLint attribList[]);
588
extern void (*qfxMesaDestroyContext)(fxMesaContext ctx);
589
extern void (*qfxMesaMakeCurrent)(fxMesaContext ctx);
590
extern fxMesaContext (*qfxMesaGetCurrentContext)(void);
591
extern void (*qfxMesaSwapBuffers)(void);
595
extern XVisualInfo * (*qglXChooseVisual)( Display *dpy, int screen, int *attribList );
596
extern GLXContext (*qglXCreateContext)( Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct );
597
extern void (*qglXDestroyContext)( Display *dpy, GLXContext ctx );
598
extern Bool (*qglXMakeCurrent)( Display *dpy, GLXDrawable drawable, GLXContext ctx);
599
extern void (*qglXCopyContext)( Display *dpy, GLXContext src, GLXContext dst, GLuint mask );
600
extern void (*qglXSwapBuffers)( Display *dpy, GLXDrawable drawable );
602
#endif // __linux__ || __FreeBSD__ || __sun // rb010123
604
#endif // _WIN32 && __linux__