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