2 ===========================================================================
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
9 Doom 3 Source Code is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 Doom 3 Source Code is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
22 In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
26 ===========================================================================
39 #elif defined( MACOS_X )
41 // magic flag to keep tiger gl.h from loading glext.h
42 #define GL_GLEXT_LEGACY
43 #include <OpenGL/gl.h>
45 #elif defined( __linux__ )
47 // using our local glext.h
48 // http://oss.sgi.com/projects/ogl-sample/ABI/
49 #define GL_GLEXT_LEGACY
50 #define GLX_GLXEXT_LEGACY
67 // only use local glext.h if we are not using the system one already
68 // http://oss.sgi.com/projects/ogl-sample/ABI/
69 #ifndef GL_GLEXT_VERSION
75 typedef void (*GLExtension_t)(void);
81 GLExtension_t GLimp_ExtensionPointer( const char *name );
88 extern void ( APIENTRY * qglMultiTexCoord2fARB )( GLenum texture, GLfloat s, GLfloat t );
89 extern void ( APIENTRY * qglMultiTexCoord2fvARB )( GLenum texture, GLfloat *st );
90 extern void ( APIENTRY * qglActiveTextureARB )( GLenum texture );
91 extern void ( APIENTRY * qglClientActiveTextureARB )( GLenum texture );
93 // ARB_vertex_buffer_object
94 extern PFNGLBINDBUFFERARBPROC qglBindBufferARB;
95 extern PFNGLDELETEBUFFERSARBPROC qglDeleteBuffersARB;
96 extern PFNGLGENBUFFERSARBPROC qglGenBuffersARB;
97 extern PFNGLISBUFFERARBPROC qglIsBufferARB;
98 extern PFNGLBUFFERDATAARBPROC qglBufferDataARB;
99 extern PFNGLBUFFERSUBDATAARBPROC qglBufferSubDataARB;
100 extern PFNGLGETBUFFERSUBDATAARBPROC qglGetBufferSubDataARB;
101 extern PFNGLMAPBUFFERARBPROC qglMapBufferARB;
102 extern PFNGLUNMAPBUFFERARBPROC qglUnmapBufferARB;
103 extern PFNGLGETBUFFERPARAMETERIVARBPROC qglGetBufferParameterivARB;
104 extern PFNGLGETBUFFERPOINTERVARBPROC qglGetBufferPointervARB;
107 // NV_register_combiners
108 extern void ( APIENTRY *qglCombinerParameterfvNV )( GLenum pname, const GLfloat *params );
109 extern void ( APIENTRY *qglCombinerParameterivNV )( GLenum pname, const GLint *params );
110 extern void ( APIENTRY *qglCombinerParameterfNV )( GLenum pname, const GLfloat param );
111 extern void ( APIENTRY *qglCombinerParameteriNV )( GLenum pname, const GLint param );
112 extern void ( APIENTRY *qglCombinerInputNV )( GLenum stage, GLenum portion, GLenum variable, GLenum input,
113 GLenum mapping, GLenum componentUsage );
114 extern void ( APIENTRY *qglCombinerOutputNV )( GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput,
115 GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct,
116 GLboolean cdDotProduct, GLboolean muxSum );
117 extern void ( APIENTRY *qglFinalCombinerInputNV )( GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage );
120 extern void ( APIENTRY *qglTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
122 // shared texture palette
123 extern void ( APIENTRY *qglColorTableEXT)( int, int, int, int, int, const void * );
125 // ATI_fragment_shader
126 extern PFNGLGENFRAGMENTSHADERSATIPROC qglGenFragmentShadersATI;
127 extern PFNGLBINDFRAGMENTSHADERATIPROC qglBindFragmentShaderATI;
128 extern PFNGLDELETEFRAGMENTSHADERATIPROC qglDeleteFragmentShaderATI;
129 extern PFNGLBEGINFRAGMENTSHADERATIPROC qglBeginFragmentShaderATI;
130 extern PFNGLENDFRAGMENTSHADERATIPROC qglEndFragmentShaderATI;
131 extern PFNGLPASSTEXCOORDATIPROC qglPassTexCoordATI;
132 extern PFNGLSAMPLEMAPATIPROC qglSampleMapATI;
133 extern PFNGLCOLORFRAGMENTOP1ATIPROC qglColorFragmentOp1ATI;
134 extern PFNGLCOLORFRAGMENTOP2ATIPROC qglColorFragmentOp2ATI;
135 extern PFNGLCOLORFRAGMENTOP3ATIPROC qglColorFragmentOp3ATI;
136 extern PFNGLALPHAFRAGMENTOP1ATIPROC qglAlphaFragmentOp1ATI;
137 extern PFNGLALPHAFRAGMENTOP2ATIPROC qglAlphaFragmentOp2ATI;
138 extern PFNGLALPHAFRAGMENTOP3ATIPROC qglAlphaFragmentOp3ATI;
139 extern PFNGLSETFRAGMENTSHADERCONSTANTATIPROC qglSetFragmentShaderConstantATI;
141 // EXT_stencil_two_side
142 extern PFNGLACTIVESTENCILFACEEXTPROC qglActiveStencilFaceEXT;
145 // ATI_separate_stencil
146 extern PFNGLSTENCILOPSEPARATEATIPROC qglStencilOpSeparateATI;
147 extern PFNGLSTENCILFUNCSEPARATEATIPROC qglStencilFuncSeparateATI;
149 // ARB_texture_compression
150 extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC qglCompressedTexImage2DARB;
151 extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC qglGetCompressedTexImageARB;
153 // ARB_vertex_program / ARB_fragment_program
154 extern PFNGLVERTEXATTRIBPOINTERARBPROC qglVertexAttribPointerARB;
155 extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC qglEnableVertexAttribArrayARB;
156 extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC qglDisableVertexAttribArrayARB;
157 extern PFNGLPROGRAMSTRINGARBPROC qglProgramStringARB;
158 extern PFNGLBINDPROGRAMARBPROC qglBindProgramARB;
159 extern PFNGLGENPROGRAMSARBPROC qglGenProgramsARB;
160 extern PFNGLPROGRAMENVPARAMETER4FVARBPROC qglProgramEnvParameter4fvARB;
161 extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC qglProgramLocalParameter4fvARB;
163 // GL_EXT_depth_bounds_test
164 extern PFNGLDEPTHBOUNDSEXTPROC qglDepthBoundsEXT;
166 //===========================================================================
168 // non-windows systems will just redefine qgl* to gl*
169 #if defined( __APPLE__ ) || defined( ID_GL_HARDLINK )
171 #include "qgl_linked.h"
175 // windows systems use a function pointer for each call so we can do our log file intercepts
177 extern void ( APIENTRY * qglAccum )(GLenum op, GLfloat value);
178 extern void ( APIENTRY * qglAlphaFunc )(GLenum func, GLclampf ref);
179 extern GLboolean ( APIENTRY * qglAreTexturesResident )(GLsizei n, const GLuint *textures, GLboolean *residences);
180 extern void ( APIENTRY * qglArrayElement )(GLint i);
181 extern void ( APIENTRY * qglBegin )(GLenum mode);
182 extern void ( APIENTRY * qglBindTexture )(GLenum target, GLuint texture);
183 extern void ( APIENTRY * qglBitmap )(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
184 extern void ( APIENTRY * qglBlendFunc )(GLenum sfactor, GLenum dfactor);
185 extern void ( APIENTRY * qglCallList )(GLuint list);
186 extern void ( APIENTRY * qglCallLists )(GLsizei n, GLenum type, const GLvoid *lists);
187 extern void ( APIENTRY * qglClear )(GLbitfield mask);
188 extern void ( APIENTRY * qglClearAccum )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
189 extern void ( APIENTRY * qglClearColor )(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
190 extern void ( APIENTRY * qglClearDepth )(GLclampd depth);
191 extern void ( APIENTRY * qglClearIndex )(GLfloat c);
192 extern void ( APIENTRY * qglClearStencil )(GLint s);
193 extern void ( APIENTRY * qglClipPlane )(GLenum plane, const GLdouble *equation);
194 extern void ( APIENTRY * qglColor3b )(GLbyte red, GLbyte green, GLbyte blue);
195 extern void ( APIENTRY * qglColor3bv )(const GLbyte *v);
196 extern void ( APIENTRY * qglColor3d )(GLdouble red, GLdouble green, GLdouble blue);
197 extern void ( APIENTRY * qglColor3dv )(const GLdouble *v);
198 extern void ( APIENTRY * qglColor3f )(GLfloat red, GLfloat green, GLfloat blue);
199 extern void ( APIENTRY * qglColor3fv )(const GLfloat *v);
200 extern void ( APIENTRY * qglColor3i )(GLint red, GLint green, GLint blue);
201 extern void ( APIENTRY * qglColor3iv )(const GLint *v);
202 extern void ( APIENTRY * qglColor3s )(GLshort red, GLshort green, GLshort blue);
203 extern void ( APIENTRY * qglColor3sv )(const GLshort *v);
204 extern void ( APIENTRY * qglColor3ub )(GLubyte red, GLubyte green, GLubyte blue);
205 extern void ( APIENTRY * qglColor3ubv )(const GLubyte *v);
206 extern void ( APIENTRY * qglColor3ui )(GLuint red, GLuint green, GLuint blue);
207 extern void ( APIENTRY * qglColor3uiv )(const GLuint *v);
208 extern void ( APIENTRY * qglColor3us )(GLushort red, GLushort green, GLushort blue);
209 extern void ( APIENTRY * qglColor3usv )(const GLushort *v);
210 extern void ( APIENTRY * qglColor4b )(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
211 extern void ( APIENTRY * qglColor4bv )(const GLbyte *v);
212 extern void ( APIENTRY * qglColor4d )(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
213 extern void ( APIENTRY * qglColor4dv )(const GLdouble *v);
214 extern void ( APIENTRY * qglColor4f )(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
215 extern void ( APIENTRY * qglColor4fv )(const GLfloat *v);
216 extern void ( APIENTRY * qglColor4i )(GLint red, GLint green, GLint blue, GLint alpha);
217 extern void ( APIENTRY * qglColor4iv )(const GLint *v);
218 extern void ( APIENTRY * qglColor4s )(GLshort red, GLshort green, GLshort blue, GLshort alpha);
219 extern void ( APIENTRY * qglColor4sv )(const GLshort *v);
220 extern void ( APIENTRY * qglColor4ub )(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
221 extern void ( APIENTRY * qglColor4ubv )(const GLubyte *v);
222 extern void ( APIENTRY * qglColor4ui )(GLuint red, GLuint green, GLuint blue, GLuint alpha);
223 extern void ( APIENTRY * qglColor4uiv )(const GLuint *v);
224 extern void ( APIENTRY * qglColor4us )(GLushort red, GLushort green, GLushort blue, GLushort alpha);
225 extern void ( APIENTRY * qglColor4usv )(const GLushort *v);
226 extern void ( APIENTRY * qglColorMask )(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
227 extern void ( APIENTRY * qglColorMaterial )(GLenum face, GLenum mode);
228 extern void ( APIENTRY * qglColorPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
229 extern void ( APIENTRY * qglCopyPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
230 extern void ( APIENTRY * qglCopyTexImage1D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
231 extern void ( APIENTRY * qglCopyTexImage2D )(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
232 extern void ( APIENTRY * qglCopyTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
233 extern void ( APIENTRY * qglCopyTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
234 extern void ( APIENTRY * qglCullFace )(GLenum mode);
235 extern void ( APIENTRY * qglDeleteLists )(GLuint list, GLsizei range);
236 extern void ( APIENTRY * qglDeleteTextures )(GLsizei n, const GLuint *textures);
237 extern void ( APIENTRY * qglDepthFunc )(GLenum func);
238 extern void ( APIENTRY * qglDepthMask )(GLboolean flag);
239 extern void ( APIENTRY * qglDepthRange )(GLclampd zNear, GLclampd zFar);
240 extern void ( APIENTRY * qglDisable )(GLenum cap);
241 extern void ( APIENTRY * qglDisableClientState )(GLenum array);
242 extern void ( APIENTRY * qglDrawArrays )(GLenum mode, GLint first, GLsizei count);
243 extern void ( APIENTRY * qglDrawBuffer )(GLenum mode);
244 extern void ( APIENTRY * qglDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
245 extern void ( APIENTRY * qglDrawPixels )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
246 extern void ( APIENTRY * qglEdgeFlag )(GLboolean flag);
247 extern void ( APIENTRY * qglEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer);
248 extern void ( APIENTRY * qglEdgeFlagv )(const GLboolean *flag);
249 extern void ( APIENTRY * qglEnable )(GLenum cap);
250 extern void ( APIENTRY * qglEnableClientState )(GLenum array);
251 extern void ( APIENTRY * qglEnd )(void);
252 extern void ( APIENTRY * qglEndList )(void);
253 extern void ( APIENTRY * qglEvalCoord1d )(GLdouble u);
254 extern void ( APIENTRY * qglEvalCoord1dv )(const GLdouble *u);
255 extern void ( APIENTRY * qglEvalCoord1f )(GLfloat u);
256 extern void ( APIENTRY * qglEvalCoord1fv )(const GLfloat *u);
257 extern void ( APIENTRY * qglEvalCoord2d )(GLdouble u, GLdouble v);
258 extern void ( APIENTRY * qglEvalCoord2dv )(const GLdouble *u);
259 extern void ( APIENTRY * qglEvalCoord2f )(GLfloat u, GLfloat v);
260 extern void ( APIENTRY * qglEvalCoord2fv )(const GLfloat *u);
261 extern void ( APIENTRY * qglEvalMesh1 )(GLenum mode, GLint i1, GLint i2);
262 extern void ( APIENTRY * qglEvalMesh2 )(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
263 extern void ( APIENTRY * qglEvalPoint1 )(GLint i);
264 extern void ( APIENTRY * qglEvalPoint2 )(GLint i, GLint j);
265 extern void ( APIENTRY * qglFeedbackBuffer )(GLsizei size, GLenum type, GLfloat *buffer);
266 extern void ( APIENTRY * qglFinish )(void);
267 extern void ( APIENTRY * qglFlush )(void);
268 extern void ( APIENTRY * qglFogf )(GLenum pname, GLfloat param);
269 extern void ( APIENTRY * qglFogfv )(GLenum pname, const GLfloat *params);
270 extern void ( APIENTRY * qglFogi )(GLenum pname, GLint param);
271 extern void ( APIENTRY * qglFogiv )(GLenum pname, const GLint *params);
272 extern void ( APIENTRY * qglFrontFace )(GLenum mode);
273 extern void ( APIENTRY * qglFrustum )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
274 extern GLuint ( APIENTRY * qglGenLists )(GLsizei range);
275 extern void ( APIENTRY * qglGenTextures )(GLsizei n, GLuint *textures);
276 extern void ( APIENTRY * qglGetBooleanv )(GLenum pname, GLboolean *params);
277 extern void ( APIENTRY * qglGetClipPlane )(GLenum plane, GLdouble *equation);
278 extern void ( APIENTRY * qglGetDoublev )(GLenum pname, GLdouble *params);
279 extern GLenum ( APIENTRY * qglGetError )(void);
280 extern void ( APIENTRY * qglGetFloatv )(GLenum pname, GLfloat *params);
281 extern void ( APIENTRY * qglGetIntegerv )(GLenum pname, GLint *params);
282 extern void ( APIENTRY * qglGetLightfv )(GLenum light, GLenum pname, GLfloat *params);
283 extern void ( APIENTRY * qglGetLightiv )(GLenum light, GLenum pname, GLint *params);
284 extern void ( APIENTRY * qglGetMapdv )(GLenum target, GLenum query, GLdouble *v);
285 extern void ( APIENTRY * qglGetMapfv )(GLenum target, GLenum query, GLfloat *v);
286 extern void ( APIENTRY * qglGetMapiv )(GLenum target, GLenum query, GLint *v);
287 extern void ( APIENTRY * qglGetMaterialfv )(GLenum face, GLenum pname, GLfloat *params);
288 extern void ( APIENTRY * qglGetMaterialiv )(GLenum face, GLenum pname, GLint *params);
289 extern void ( APIENTRY * qglGetPixelMapfv )(GLenum map, GLfloat *values);
290 extern void ( APIENTRY * qglGetPixelMapuiv )(GLenum map, GLuint *values);
291 extern void ( APIENTRY * qglGetPixelMapusv )(GLenum map, GLushort *values);
292 extern void ( APIENTRY * qglGetPointerv )(GLenum pname, GLvoid* *params);
293 extern void ( APIENTRY * qglGetPolygonStipple )(GLubyte *mask);
294 extern const GLubyte * ( APIENTRY * qglGetString )(GLenum name);
295 extern void ( APIENTRY * qglGetTexEnvfv )(GLenum target, GLenum pname, GLfloat *params);
296 extern void ( APIENTRY * qglGetTexEnviv )(GLenum target, GLenum pname, GLint *params);
297 extern void ( APIENTRY * qglGetTexGendv )(GLenum coord, GLenum pname, GLdouble *params);
298 extern void ( APIENTRY * qglGetTexGenfv )(GLenum coord, GLenum pname, GLfloat *params);
299 extern void ( APIENTRY * qglGetTexGeniv )(GLenum coord, GLenum pname, GLint *params);
300 extern void ( APIENTRY * qglGetTexImage )(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
301 extern void ( APIENTRY * qglGetTexLevelParameterfv )(GLenum target, GLint level, GLenum pname, GLfloat *params);
302 extern void ( APIENTRY * qglGetTexLevelParameteriv )(GLenum target, GLint level, GLenum pname, GLint *params);
303 extern void ( APIENTRY * qglGetTexParameterfv )(GLenum target, GLenum pname, GLfloat *params);
304 extern void ( APIENTRY * qglGetTexParameteriv )(GLenum target, GLenum pname, GLint *params);
305 extern void ( APIENTRY * qglHint )(GLenum target, GLenum mode);
306 extern void ( APIENTRY * qglIndexMask )(GLuint mask);
307 extern void ( APIENTRY * qglIndexPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
308 extern void ( APIENTRY * qglIndexd )(GLdouble c);
309 extern void ( APIENTRY * qglIndexdv )(const GLdouble *c);
310 extern void ( APIENTRY * qglIndexf )(GLfloat c);
311 extern void ( APIENTRY * qglIndexfv )(const GLfloat *c);
312 extern void ( APIENTRY * qglIndexi )(GLint c);
313 extern void ( APIENTRY * qglIndexiv )(const GLint *c);
314 extern void ( APIENTRY * qglIndexs )(GLshort c);
315 extern void ( APIENTRY * qglIndexsv )(const GLshort *c);
316 extern void ( APIENTRY * qglIndexub )(GLubyte c);
317 extern void ( APIENTRY * qglIndexubv )(const GLubyte *c);
318 extern void ( APIENTRY * qglInitNames )(void);
319 extern void ( APIENTRY * qglInterleavedArrays )(GLenum format, GLsizei stride, const GLvoid *pointer);
320 extern GLboolean ( APIENTRY * qglIsEnabled )(GLenum cap);
321 extern GLboolean ( APIENTRY * qglIsList )(GLuint list);
322 extern GLboolean ( APIENTRY * qglIsTexture )(GLuint texture);
323 extern void ( APIENTRY * qglLightModelf )(GLenum pname, GLfloat param);
324 extern void ( APIENTRY * qglLightModelfv )(GLenum pname, const GLfloat *params);
325 extern void ( APIENTRY * qglLightModeli )(GLenum pname, GLint param);
326 extern void ( APIENTRY * qglLightModeliv )(GLenum pname, const GLint *params);
327 extern void ( APIENTRY * qglLightf )(GLenum light, GLenum pname, GLfloat param);
328 extern void ( APIENTRY * qglLightfv )(GLenum light, GLenum pname, const GLfloat *params);
329 extern void ( APIENTRY * qglLighti )(GLenum light, GLenum pname, GLint param);
330 extern void ( APIENTRY * qglLightiv )(GLenum light, GLenum pname, const GLint *params);
331 extern void ( APIENTRY * qglLineStipple )(GLint factor, GLushort pattern);
332 extern void ( APIENTRY * qglLineWidth )(GLfloat width);
333 extern void ( APIENTRY * qglListBase )(GLuint base);
334 extern void ( APIENTRY * qglLoadIdentity )(void);
335 extern void ( APIENTRY * qglLoadMatrixd )(const GLdouble *m);
336 extern void ( APIENTRY * qglLoadMatrixf )(const GLfloat *m);
337 extern void ( APIENTRY * qglLoadName )(GLuint name);
338 extern void ( APIENTRY * qglLogicOp )(GLenum opcode);
339 extern void ( APIENTRY * qglMap1d )(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
340 extern void ( APIENTRY * qglMap1f )(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
341 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);
342 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);
343 extern void ( APIENTRY * qglMapGrid1d )(GLint un, GLdouble u1, GLdouble u2);
344 extern void ( APIENTRY * qglMapGrid1f )(GLint un, GLfloat u1, GLfloat u2);
345 extern void ( APIENTRY * qglMapGrid2d )(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
346 extern void ( APIENTRY * qglMapGrid2f )(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
347 extern void ( APIENTRY * qglMaterialf )(GLenum face, GLenum pname, GLfloat param);
348 extern void ( APIENTRY * qglMaterialfv )(GLenum face, GLenum pname, const GLfloat *params);
349 extern void ( APIENTRY * qglMateriali )(GLenum face, GLenum pname, GLint param);
350 extern void ( APIENTRY * qglMaterialiv )(GLenum face, GLenum pname, const GLint *params);
351 extern void ( APIENTRY * qglMatrixMode )(GLenum mode);
352 extern void ( APIENTRY * qglMultMatrixd )(const GLdouble *m);
353 extern void ( APIENTRY * qglMultMatrixf )(const GLfloat *m);
354 extern void ( APIENTRY * qglNewList )(GLuint list, GLenum mode);
355 extern void ( APIENTRY * qglNormal3b )(GLbyte nx, GLbyte ny, GLbyte nz);
356 extern void ( APIENTRY * qglNormal3bv )(const GLbyte *v);
357 extern void ( APIENTRY * qglNormal3d )(GLdouble nx, GLdouble ny, GLdouble nz);
358 extern void ( APIENTRY * qglNormal3dv )(const GLdouble *v);
359 extern void ( APIENTRY * qglNormal3f )(GLfloat nx, GLfloat ny, GLfloat nz);
360 extern void ( APIENTRY * qglNormal3fv )(const GLfloat *v);
361 extern void ( APIENTRY * qglNormal3i )(GLint nx, GLint ny, GLint nz);
362 extern void ( APIENTRY * qglNormal3iv )(const GLint *v);
363 extern void ( APIENTRY * qglNormal3s )(GLshort nx, GLshort ny, GLshort nz);
364 extern void ( APIENTRY * qglNormal3sv )(const GLshort *v);
365 extern void ( APIENTRY * qglNormalPointer )(GLenum type, GLsizei stride, const GLvoid *pointer);
366 extern void ( APIENTRY * qglOrtho )(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
367 extern void ( APIENTRY * qglPassThrough )(GLfloat token);
368 extern void ( APIENTRY * qglPixelMapfv )(GLenum map, GLsizei mapsize, const GLfloat *values);
369 extern void ( APIENTRY * qglPixelMapuiv )(GLenum map, GLsizei mapsize, const GLuint *values);
370 extern void ( APIENTRY * qglPixelMapusv )(GLenum map, GLsizei mapsize, const GLushort *values);
371 extern void ( APIENTRY * qglPixelStoref )(GLenum pname, GLfloat param);
372 extern void ( APIENTRY * qglPixelStorei )(GLenum pname, GLint param);
373 extern void ( APIENTRY * qglPixelTransferf )(GLenum pname, GLfloat param);
374 extern void ( APIENTRY * qglPixelTransferi )(GLenum pname, GLint param);
375 extern void ( APIENTRY * qglPixelZoom )(GLfloat xfactor, GLfloat yfactor);
376 extern void ( APIENTRY * qglPointSize )(GLfloat size);
377 extern void ( APIENTRY * qglPolygonMode )(GLenum face, GLenum mode);
378 extern void ( APIENTRY * qglPolygonOffset )(GLfloat factor, GLfloat units);
379 extern void ( APIENTRY * qglPolygonStipple )(const GLubyte *mask);
380 extern void ( APIENTRY * qglPopAttrib )(void);
381 extern void ( APIENTRY * qglPopClientAttrib )(void);
382 extern void ( APIENTRY * qglPopMatrix )(void);
383 extern void ( APIENTRY * qglPopName )(void);
384 extern void ( APIENTRY * qglPrioritizeTextures )(GLsizei n, const GLuint *textures, const GLclampf *priorities);
385 extern void ( APIENTRY * qglPushAttrib )(GLbitfield mask);
386 extern void ( APIENTRY * qglPushClientAttrib )(GLbitfield mask);
387 extern void ( APIENTRY * qglPushMatrix )(void);
388 extern void ( APIENTRY * qglPushName )(GLuint name);
389 extern void ( APIENTRY * qglRasterPos2d )(GLdouble x, GLdouble y);
390 extern void ( APIENTRY * qglRasterPos2dv )(const GLdouble *v);
391 extern void ( APIENTRY * qglRasterPos2f )(GLfloat x, GLfloat y);
392 extern void ( APIENTRY * qglRasterPos2fv )(const GLfloat *v);
393 extern void ( APIENTRY * qglRasterPos2i )(GLint x, GLint y);
394 extern void ( APIENTRY * qglRasterPos2iv )(const GLint *v);
395 extern void ( APIENTRY * qglRasterPos2s )(GLshort x, GLshort y);
396 extern void ( APIENTRY * qglRasterPos2sv )(const GLshort *v);
397 extern void ( APIENTRY * qglRasterPos3d )(GLdouble x, GLdouble y, GLdouble z);
398 extern void ( APIENTRY * qglRasterPos3dv )(const GLdouble *v);
399 extern void ( APIENTRY * qglRasterPos3f )(GLfloat x, GLfloat y, GLfloat z);
400 extern void ( APIENTRY * qglRasterPos3fv )(const GLfloat *v);
401 extern void ( APIENTRY * qglRasterPos3i )(GLint x, GLint y, GLint z);
402 extern void ( APIENTRY * qglRasterPos3iv )(const GLint *v);
403 extern void ( APIENTRY * qglRasterPos3s )(GLshort x, GLshort y, GLshort z);
404 extern void ( APIENTRY * qglRasterPos3sv )(const GLshort *v);
405 extern void ( APIENTRY * qglRasterPos4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
406 extern void ( APIENTRY * qglRasterPos4dv )(const GLdouble *v);
407 extern void ( APIENTRY * qglRasterPos4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
408 extern void ( APIENTRY * qglRasterPos4fv )(const GLfloat *v);
409 extern void ( APIENTRY * qglRasterPos4i )(GLint x, GLint y, GLint z, GLint w);
410 extern void ( APIENTRY * qglRasterPos4iv )(const GLint *v);
411 extern void ( APIENTRY * qglRasterPos4s )(GLshort x, GLshort y, GLshort z, GLshort w);
412 extern void ( APIENTRY * qglRasterPos4sv )(const GLshort *v);
413 extern void ( APIENTRY * qglReadBuffer )(GLenum mode);
414 extern void ( APIENTRY * qglReadPixels )(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
415 extern void ( APIENTRY * qglRectd )(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
416 extern void ( APIENTRY * qglRectdv )(const GLdouble *v1, const GLdouble *v2);
417 extern void ( APIENTRY * qglRectf )(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
418 extern void ( APIENTRY * qglRectfv )(const GLfloat *v1, const GLfloat *v2);
419 extern void ( APIENTRY * qglRecti )(GLint x1, GLint y1, GLint x2, GLint y2);
420 extern void ( APIENTRY * qglRectiv )(const GLint *v1, const GLint *v2);
421 extern void ( APIENTRY * qglRects )(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
422 extern void ( APIENTRY * qglRectsv )(const GLshort *v1, const GLshort *v2);
423 extern GLint ( APIENTRY * qglRenderMode )(GLenum mode);
424 extern void ( APIENTRY * qglRotated )(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
425 extern void ( APIENTRY * qglRotatef )(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
426 extern void ( APIENTRY * qglScaled )(GLdouble x, GLdouble y, GLdouble z);
427 extern void ( APIENTRY * qglScalef )(GLfloat x, GLfloat y, GLfloat z);
428 extern void ( APIENTRY * qglScissor )(GLint x, GLint y, GLsizei width, GLsizei height);
429 extern void ( APIENTRY * qglSelectBuffer )(GLsizei size, GLuint *buffer);
430 extern void ( APIENTRY * qglShadeModel )(GLenum mode);
431 extern void ( APIENTRY * qglStencilFunc )(GLenum func, GLint ref, GLuint mask);
432 extern void ( APIENTRY * qglStencilMask )(GLuint mask);
433 extern void ( APIENTRY * qglStencilOp )(GLenum fail, GLenum zfail, GLenum zpass);
434 extern void ( APIENTRY * qglTexCoord1d )(GLdouble s);
435 extern void ( APIENTRY * qglTexCoord1dv )(const GLdouble *v);
436 extern void ( APIENTRY * qglTexCoord1f )(GLfloat s);
437 extern void ( APIENTRY * qglTexCoord1fv )(const GLfloat *v);
438 extern void ( APIENTRY * qglTexCoord1i )(GLint s);
439 extern void ( APIENTRY * qglTexCoord1iv )(const GLint *v);
440 extern void ( APIENTRY * qglTexCoord1s )(GLshort s);
441 extern void ( APIENTRY * qglTexCoord1sv )(const GLshort *v);
442 extern void ( APIENTRY * qglTexCoord2d )(GLdouble s, GLdouble t);
443 extern void ( APIENTRY * qglTexCoord2dv )(const GLdouble *v);
444 extern void ( APIENTRY * qglTexCoord2f )(GLfloat s, GLfloat t);
445 extern void ( APIENTRY * qglTexCoord2fv )(const GLfloat *v);
446 extern void ( APIENTRY * qglTexCoord2i )(GLint s, GLint t);
447 extern void ( APIENTRY * qglTexCoord2iv )(const GLint *v);
448 extern void ( APIENTRY * qglTexCoord2s )(GLshort s, GLshort t);
449 extern void ( APIENTRY * qglTexCoord2sv )(const GLshort *v);
450 extern void ( APIENTRY * qglTexCoord3d )(GLdouble s, GLdouble t, GLdouble r);
451 extern void ( APIENTRY * qglTexCoord3dv )(const GLdouble *v);
452 extern void ( APIENTRY * qglTexCoord3f )(GLfloat s, GLfloat t, GLfloat r);
453 extern void ( APIENTRY * qglTexCoord3fv )(const GLfloat *v);
454 extern void ( APIENTRY * qglTexCoord3i )(GLint s, GLint t, GLint r);
455 extern void ( APIENTRY * qglTexCoord3iv )(const GLint *v);
456 extern void ( APIENTRY * qglTexCoord3s )(GLshort s, GLshort t, GLshort r);
457 extern void ( APIENTRY * qglTexCoord3sv )(const GLshort *v);
458 extern void ( APIENTRY * qglTexCoord4d )(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
459 extern void ( APIENTRY * qglTexCoord4dv )(const GLdouble *v);
460 extern void ( APIENTRY * qglTexCoord4f )(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
461 extern void ( APIENTRY * qglTexCoord4fv )(const GLfloat *v);
462 extern void ( APIENTRY * qglTexCoord4i )(GLint s, GLint t, GLint r, GLint q);
463 extern void ( APIENTRY * qglTexCoord4iv )(const GLint *v);
464 extern void ( APIENTRY * qglTexCoord4s )(GLshort s, GLshort t, GLshort r, GLshort q);
465 extern void ( APIENTRY * qglTexCoord4sv )(const GLshort *v);
466 extern void ( APIENTRY * qglTexCoordPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
467 extern void ( APIENTRY * qglTexEnvf )(GLenum target, GLenum pname, GLfloat param);
468 extern void ( APIENTRY * qglTexEnvfv )(GLenum target, GLenum pname, const GLfloat *params);
469 extern void ( APIENTRY * qglTexEnvi )(GLenum target, GLenum pname, GLint param);
470 extern void ( APIENTRY * qglTexEnviv )(GLenum target, GLenum pname, const GLint *params);
471 extern void ( APIENTRY * qglTexGend )(GLenum coord, GLenum pname, GLdouble param);
472 extern void ( APIENTRY * qglTexGendv )(GLenum coord, GLenum pname, const GLdouble *params);
473 extern void ( APIENTRY * qglTexGenf )(GLenum coord, GLenum pname, GLfloat param);
474 extern void ( APIENTRY * qglTexGenfv )(GLenum coord, GLenum pname, const GLfloat *params);
475 extern void ( APIENTRY * qglTexGeni )(GLenum coord, GLenum pname, GLint param);
476 extern void ( APIENTRY * qglTexGeniv )(GLenum coord, GLenum pname, const GLint *params);
477 extern void ( APIENTRY * qglTexImage1D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
478 extern void ( APIENTRY * qglTexImage2D )(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
479 extern void ( APIENTRY * qglTexParameterf )(GLenum target, GLenum pname, GLfloat param);
480 extern void ( APIENTRY * qglTexParameterfv )(GLenum target, GLenum pname, const GLfloat *params);
481 extern void ( APIENTRY * qglTexParameteri )(GLenum target, GLenum pname, GLint param);
482 extern void ( APIENTRY * qglTexParameteriv )(GLenum target, GLenum pname, const GLint *params);
483 extern void ( APIENTRY * qglTexSubImage1D )(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
484 extern void ( APIENTRY * qglTexSubImage2D )(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
485 extern void ( APIENTRY * qglTranslated )(GLdouble x, GLdouble y, GLdouble z);
486 extern void ( APIENTRY * qglTranslatef )(GLfloat x, GLfloat y, GLfloat z);
487 extern void ( APIENTRY * qglVertex2d )(GLdouble x, GLdouble y);
488 extern void ( APIENTRY * qglVertex2dv )(const GLdouble *v);
489 extern void ( APIENTRY * qglVertex2f )(GLfloat x, GLfloat y);
490 extern void ( APIENTRY * qglVertex2fv )(const GLfloat *v);
491 extern void ( APIENTRY * qglVertex2i )(GLint x, GLint y);
492 extern void ( APIENTRY * qglVertex2iv )(const GLint *v);
493 extern void ( APIENTRY * qglVertex2s )(GLshort x, GLshort y);
494 extern void ( APIENTRY * qglVertex2sv )(const GLshort *v);
495 extern void ( APIENTRY * qglVertex3d )(GLdouble x, GLdouble y, GLdouble z);
496 extern void ( APIENTRY * qglVertex3dv )(const GLdouble *v);
497 extern void ( APIENTRY * qglVertex3f )(GLfloat x, GLfloat y, GLfloat z);
498 extern void ( APIENTRY * qglVertex3fv )(const GLfloat *v);
499 extern void ( APIENTRY * qglVertex3i )(GLint x, GLint y, GLint z);
500 extern void ( APIENTRY * qglVertex3iv )(const GLint *v);
501 extern void ( APIENTRY * qglVertex3s )(GLshort x, GLshort y, GLshort z);
502 extern void ( APIENTRY * qglVertex3sv )(const GLshort *v);
503 extern void ( APIENTRY * qglVertex4d )(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
504 extern void ( APIENTRY * qglVertex4dv )(const GLdouble *v);
505 extern void ( APIENTRY * qglVertex4f )(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
506 extern void ( APIENTRY * qglVertex4fv )(const GLfloat *v);
507 extern void ( APIENTRY * qglVertex4i )(GLint x, GLint y, GLint z, GLint w);
508 extern void ( APIENTRY * qglVertex4iv )(const GLint *v);
509 extern void ( APIENTRY * qglVertex4s )(GLshort x, GLshort y, GLshort z, GLshort w);
510 extern void ( APIENTRY * qglVertex4sv )(const GLshort *v);
511 extern void ( APIENTRY * qglVertexPointer )(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
512 extern void ( APIENTRY * qglViewport )(GLint x, GLint y, GLsizei width, GLsizei height);
514 #if defined( _WIN32 )
516 extern int ( WINAPI * qwglChoosePixelFormat )(HDC, CONST PIXELFORMATDESCRIPTOR *);
517 extern int ( WINAPI * qwglDescribePixelFormat) (HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
518 extern int ( WINAPI * qwglGetPixelFormat)(HDC);
519 extern BOOL ( WINAPI * qwglSetPixelFormat)(HDC, int, CONST PIXELFORMATDESCRIPTOR *);
520 extern BOOL ( WINAPI * qwglSwapBuffers)(HDC);
522 extern BOOL ( WINAPI * qwglCopyContext)(HGLRC, HGLRC, UINT);
523 extern HGLRC ( WINAPI * qwglCreateContext)(HDC);
524 extern HGLRC ( WINAPI * qwglCreateLayerContext)(HDC, int);
525 extern BOOL ( WINAPI * qwglDeleteContext)(HGLRC);
526 extern HGLRC ( WINAPI * qwglGetCurrentContext)(VOID);
527 extern HDC ( WINAPI * qwglGetCurrentDC)(VOID);
528 extern PROC ( WINAPI * qwglGetProcAddress)(LPCSTR);
529 extern BOOL ( WINAPI * qwglMakeCurrent)(HDC, HGLRC);
530 extern BOOL ( WINAPI * qwglShareLists)(HGLRC, HGLRC);
531 extern BOOL ( WINAPI * qwglUseFontBitmaps)(HDC, DWORD, DWORD, DWORD);
533 extern BOOL ( WINAPI * qwglUseFontOutlines)(HDC, DWORD, DWORD, DWORD, FLOAT,
534 FLOAT, int, LPGLYPHMETRICSFLOAT);
536 extern BOOL ( WINAPI * qwglDescribeLayerPlane)(HDC, int, int, UINT,
537 LPLAYERPLANEDESCRIPTOR);
538 extern int ( WINAPI * qwglSetLayerPaletteEntries)(HDC, int, int, int,
540 extern int ( WINAPI * qwglGetLayerPaletteEntries)(HDC, int, int, int,
542 extern BOOL ( WINAPI * qwglRealizeLayerPalette)(HDC, int, BOOL);
543 extern BOOL ( WINAPI * qwglSwapLayerBuffers)(HDC, UINT);
547 #if defined( __linux__ )
550 extern XVisualInfo * (*qglXChooseVisual)( Display *dpy, int screen, int *attribList );
551 extern GLXContext (*qglXCreateContext)( Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct );
552 extern void (*qglXDestroyContext)( Display *dpy, GLXContext ctx );
553 extern Bool (*qglXMakeCurrent)( Display *dpy, GLXDrawable drawable, GLXContext ctx);
554 extern void (*qglXSwapBuffers)( Display *dpy, GLXDrawable drawable );
555 extern GLExtension_t (*qglXGetProcAddressARB)( const GLubyte *procname );
557 // make sure the code is correctly using qgl everywhere
558 // don't enable that when building glimp itself obviously..
559 #if !defined( GLIMP )
560 #include "../sys/linux/qgl_enforce.h"
565 #endif // hardlinlk vs dlopen