]> icculus.org git repositories - icculus/iodoom3.git/blob - neo/renderer/qgl.h
Use the same OpenAL headers on all platforms.
[icculus/iodoom3.git] / neo / renderer / qgl.h
1 /*
2 ===========================================================================
3
4 Doom 3 GPL Source Code
5 Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company. 
6
7 This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).  
8
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.
13
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.
18
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/>.
21
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.
23
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.
25
26 ===========================================================================
27 */
28 /*
29 ** QGL.H
30 */
31
32 #ifndef __QGL_H__
33 #define __QGL_H__
34
35 // use an internal copy on all platforms.
36 #include "GL/gl.h"
37 #include "GL/glext.h"
38
39 #ifndef APIENTRY
40 #define APIENTRY
41 #endif
42 #ifndef WINAPI
43 #define WINAPI
44 #endif
45
46 typedef void (*GLExtension_t)(void);
47
48 #ifdef __cplusplus
49         extern "C" {
50 #endif
51
52 GLExtension_t GLimp_ExtensionPointer( const char *name );
53
54 #ifdef __cplusplus
55         }
56 #endif
57
58 // multitexture
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 );
63
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;
76
77
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 );
89
90 // 3D textures
91 extern void ( APIENTRY *qglTexImage3D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
92
93 // shared texture palette
94 extern  void ( APIENTRY *qglColorTableEXT)( int, int, int, int, int, const void * );
95
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;
111
112 // EXT_stencil_two_side
113 extern  PFNGLACTIVESTENCILFACEEXTPROC   qglActiveStencilFaceEXT;
114
115
116 // ATI_separate_stencil
117 extern  PFNGLSTENCILOPSEPARATEATIPROC           qglStencilOpSeparateATI;
118 extern  PFNGLSTENCILFUNCSEPARATEATIPROC         qglStencilFuncSeparateATI;
119
120 // ARB_texture_compression
121 extern  PFNGLCOMPRESSEDTEXIMAGE2DARBPROC        qglCompressedTexImage2DARB;
122 extern  PFNGLGETCOMPRESSEDTEXIMAGEARBPROC       qglGetCompressedTexImageARB;
123
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;
133
134 // GL_EXT_depth_bounds_test
135 extern PFNGLDEPTHBOUNDSEXTPROC              qglDepthBoundsEXT;
136
137 //===========================================================================
138
139 // non-windows systems will just redefine qgl* to gl*
140 #if defined( __APPLE__ ) || defined( ID_GL_HARDLINK )
141
142 #include "qgl_linked.h"
143
144 #else
145
146 // windows systems use a function pointer for each call so we can do our log file intercepts
147
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);
484
485 #if defined( _WIN32 )
486
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);
492
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);
503
504 extern BOOL  ( WINAPI * qwglUseFontOutlines)(HDC, DWORD, DWORD, DWORD, FLOAT,
505                                            FLOAT, int, LPGLYPHMETRICSFLOAT);
506
507 extern BOOL ( WINAPI * qwglDescribeLayerPlane)(HDC, int, int, UINT,
508                                             LPLAYERPLANEDESCRIPTOR);
509 extern int  ( WINAPI * qwglSetLayerPaletteEntries)(HDC, int, int, int,
510                                                 CONST COLORREF *);
511 extern int  ( WINAPI * qwglGetLayerPaletteEntries)(HDC, int, int, int,
512                                                 COLORREF *);
513 extern BOOL ( WINAPI * qwglRealizeLayerPalette)(HDC, int, BOOL);
514 extern BOOL ( WINAPI * qwglSwapLayerBuffers)(HDC, UINT);
515
516 #endif  // _WIN32
517
518 #if defined( __linux__ )
519
520 //GLX Functions
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 );
527
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"
532 #endif
533
534 #endif // __linux__
535
536 #endif  // hardlinlk vs dlopen
537
538 #endif