1 
2 /*****************************************************************
3  ************** OLD GOOD QUAKE ENGINE OPENGL STYLE ***************
4  *****************************************************************/
5 
6 #ifndef GL_UTIL_H
7 #define GL_UTIL_H
8 
9 #ifdef	__cplusplus
10 extern "C" {
11 #endif
12 
13 #include <SDL2/SDL_platform.h>
14 #include <SDL2/SDL_opengl.h>    /* Header File For The OpenGL Library */
15 
16 
17 /* Miscellaneous */
18 typedef void (APIENTRYP PFNGLCLEARINDEXPROC) (GLfloat c);
19 typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
20 typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
21 typedef void (APIENTRYP PFNGLINDEXMASKPROC) (GLuint mask);
22 typedef void (APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
23 typedef void (APIENTRYP PFNGLALPHAFUNCPROC) (GLenum func, GLclampf ref);
24 typedef void (APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
25 typedef void (APIENTRYP PFNGLLOGICOPPROC) (GLenum opcode);
26 typedef void (APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);
27 typedef void (APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);
28 typedef void (APIENTRYP PFNGLPOINTSIZEPROC) (GLfloat size);
29 typedef void (APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);
30 typedef void (APIENTRYP PFNGLLINESTIPPLEPROC) (GLint factor, GLushort pattern);
31 typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
32 typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
33 typedef void (APIENTRYP PFNGLGETPOLYGONSTIPPLEPROC) (GLubyte *mask);
34 typedef void (APIENTRYP PFNGLPOLYGONSTIPPLEPROC) (const GLubyte *mask);
35 typedef void (APIENTRYP PFNGLEDGEFLAGPROC) (GLboolean flag);
36 typedef void (APIENTRYP PFNGLEDGEFLAGVPROC) (const GLboolean *flag);
37 typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
38 typedef void (APIENTRYP PFNGLCLIPPLANEPROC) (GLenum plane, const GLdouble *equation);
39 typedef void (APIENTRYP PFNGLGETCLIPPLANEPROC) (GLenum plane, GLdouble *equation);
40 typedef void (APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum mode);
41 typedef void (APIENTRYP PFNGLREADBUFFERPROC) (GLenum mode);
42 typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
43 typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
44 typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
45 typedef void (APIENTRYP PFNGLENABLECLIENTSTATEPROC) (GLenum cap);
46 typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEPROC) (GLenum cap);
47 typedef GLenum (APIENTRYP PFNGLGETERRORPROC) (void);
48 typedef const GLubyte* (APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
49 typedef void (APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *params);
50 typedef void (APIENTRYP PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *params);
51 typedef void (APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *params);
52 typedef void (APIENTRYP PFNGLGETIINTEGERVPROC) (GLenum pname, GLint *params);
53 typedef void (APIENTRYP PFNGLPUSHATTRIBPROC) (GLbitfield mask);
54 typedef void (APIENTRYP PFNGLPOPATTRIBPROC) (void);
55 typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBPROC) (GLbitfield mask);
56 typedef void (APIENTRYP PFNGLPOPCLIENTATTRIBPROC) (void);
57 typedef GLint (APIENTRYP PFNGLRENDERMODEPROC) (GLenum mode);
58 typedef void (APIENTRYP PFNGLFINISHPROC) (void);
59 typedef void (APIENTRYP PFNGLFLUSHPROC) (void);
60 typedef void (APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);
61 
62 /* Depth Buffer */
63 typedef void (APIENTRYP PFNGLCLEARDEPTHPROC) (GLclampd depth);
64 typedef void (APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);
65 typedef void (APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);
66 typedef void (APIENTRYP PFNGLDEPTHRANGEPROC) (GLclampd near_val, GLclampd far_val);
67 
68 /* Accumulation Buffer */
69 typedef void (APIENTRYP PFNGLCLEARACCUMPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
70 typedef void (APIENTRYP PFNGLACCUMPROC) (GLenum op, GLfloat value);
71 
72 /* Transformation */
73 typedef void (APIENTRYP PFNGLMATRIXMODEPROC) (GLenum mode);
74 typedef void (APIENTRYP PFNGLORTHOPROC) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val);
75 typedef void (APIENTRYP PFNGLFRUSTUMPROC) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val);
76 typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
77 typedef void (APIENTRYP PFNGLPUSHMATRIXPROC) (void);
78 typedef void (APIENTRYP PFNGLPOPMATRIXPROC) (void);
79 typedef void (APIENTRYP PFNGLLOADIDENTITYPROC) (void);
80 typedef void (APIENTRYP PFNGLLOADMATRIXDPROC) (const GLdouble *m);
81 typedef void (APIENTRYP PFNGLLOADMATRIXFPROC) (const GLfloat *m);
82 typedef void (APIENTRYP PFNGLMULTMATRIXDPROC) (const GLdouble *m);
83 typedef void (APIENTRYP PFNGLMULTMATRIXFPROC) (const GLfloat *m);
84 typedef void (APIENTRYP PFNGLROTATEDPROC) (GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
85 typedef void (APIENTRYP PFNGLROTATEFPROC) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
86 typedef void (APIENTRYP PFNGLSCALEDPROC) (GLdouble x, GLdouble y, GLdouble z);
87 typedef void (APIENTRYP PFNGLSCALEFPROC) (GLfloat x, GLfloat y, GLfloat z);
88 typedef void (APIENTRYP PFNGLTRANSLATEDPROC) (GLdouble x, GLdouble y, GLdouble z);
89 typedef void (APIENTRYP PFNGLTRANSLATEFPROC) (GLfloat x, GLfloat y, GLfloat z);
90 
91 /* Raster functions */
92 typedef void (APIENTRYP PFNGLPIXELZOOMPROC) (GLfloat xfactor, GLfloat yfactor);
93 typedef void (APIENTRYP PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
94 typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
95 typedef void (APIENTRYP PFNGLPIXELTRANSFERFPROC) (GLenum pname, GLfloat param);
96 typedef void (APIENTRYP PFNGLPIXELTRANSFERIPROC) (GLenum pname, GLint param);
97 typedef void (APIENTRYP PFNGLPIXELMAPFVPROC) (GLenum map, GLint mapsize, const GLfloat *values);
98 typedef void (APIENTRYP PFNGLPIXELMAPUIVPROC) (GLenum map, GLint mapsize, const GLuint *values);
99 typedef void (APIENTRYP PFNGLPIXELMAPUSVPROC) (GLenum map, GLint mapsize, const GLushort *values);
100 typedef void (APIENTRYP PFNGLGETPIXELMAPFVPROC) (GLenum map, GLfloat *values);
101 typedef void (APIENTRYP PFNGLGETPIXELMAPUIVPROC) (GLenum map, GLuint *values);
102 typedef void (APIENTRYP PFNGLGETPIXELMAPUSVPROC) (GLenum map, GLushort *values);
103 typedef void (APIENTRYP PFNGLBITMAPPROC) (GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
104 typedef void (APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
105 typedef void (APIENTRYP PFNGLDRAWPIXELSPROC) (GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
106 typedef void (APIENTRYP PFNGLCOPYPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
107 
108 /* Stenciling */
109 typedef void (APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
110 typedef void (APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);
111 typedef void (APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
112 typedef void (APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);
113 
114 /* Texture mapping */
115 typedef void (APIENTRYP PFNGLTEXGENDPROC) (GLenum coord, GLenum pname, GLdouble param);
116 typedef void (APIENTRYP PFNGLTEXGENFPROC) (GLenum coord, GLenum pname, GLfloat param);
117 typedef void (APIENTRYP PFNGLTEXGENIPROC) (GLenum coord, GLenum pname, GLint param);
118 typedef void (APIENTRYP PFNGLTEXGENDVPROC) (GLenum coord, GLenum pname, const GLdouble *params);
119 typedef void (APIENTRYP PFNGLTEXGENFVPROC) (GLenum coord, GLenum pname, const GLfloat *params);
120 typedef void (APIENTRYP PFNGLTEXGENIVPROC) (GLenum coord, GLenum pname, const GLint *params);
121 typedef void (APIENTRYP PFNGLGETTEXGENDVPROC) (GLenum coord, GLenum pname, GLdouble *params);
122 typedef void (APIENTRYP PFNGLGETTEXGENFVPROC) (GLenum coord, GLenum pname, GLfloat *params);
123 typedef void (APIENTRYP PFNGLGETTEXGENIVPROC) (GLenum coord, GLenum pname, GLint *params);
124 typedef void (APIENTRYP PFNGLTEXENVFPROC) (GLenum target, GLenum pname, GLfloat param);
125 typedef void (APIENTRYP PFNGLTEXENVIPROC) (GLenum target, GLenum pname, GLint param);
126 typedef void (APIENTRYP PFNGLTEXENVFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
127 typedef void (APIENTRYP PFNGLTEXENVIVPROC) (GLenum target, GLenum pname, const GLint *params);
128 typedef void (APIENTRYP PFNGLGETTEXENVFVPROC) (GLenum target, GLenum pname, GLfloat *params);
129 typedef void (APIENTRYP PFNGLGETTEXENVIVPROC) (GLenum target, GLenum pname, GLint *params);
130 typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
131 typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
132 typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
133 typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
134 typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
135 typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
136 typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
137 typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
138 typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
139 typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
140 typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
141 
142 /* 1.1 functions */
143 /* texture objects */
144 typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
145 typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
146 typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
147 typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);
148 typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
149 typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);
150 /* texture mapping */
151 typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
152 typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
153 typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
154 typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
155 typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
156 typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
157 /* vertex arrays */
158 typedef void (APIENTRYP PFNGLVERTEXPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
159 typedef void (APIENTRYP PFNGLNORMALPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *ptr);
160 typedef void (APIENTRYP PFNGLCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
161 typedef void (APIENTRYP PFNGLINDEXPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *ptr);
162 typedef void (APIENTRYP PFNGLTEXCOORDPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *ptr);
163 typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERPROC) (GLsizei stride, const GLvoid *ptr);
164 typedef void (APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, GLvoid **params);
165 typedef void (APIENTRYP PFNGLARRAYELEMENTPROC) (GLint i);
166 typedef void (APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
167 typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
168 typedef void (APIENTRYP PFNGLINTERLEAVEDARRAYSPROC) (GLenum format, GLsizei stride, const GLvoid *pointer);
169 
170 /*******************************************************************************
171  ******************************************************************************
172  *******************************************************************************/
173 
174 /* Miscellaneous */
175 extern PFNGLCLEARINDEXPROC qglClearIndex;
176 extern PFNGLCLEARCOLORPROC qglClearColor;
177 extern PFNGLCLEARPROC qglClear;
178 extern PFNGLINDEXMASKPROC qglIndexMask;
179 extern PFNGLCOLORMASKPROC qglColorMask;
180 extern PFNGLALPHAFUNCPROC qglAlphaFunc;
181 extern PFNGLBLENDFUNCPROC qglBlendFunc;
182 extern PFNGLLOGICOPPROC qglLogicOp;
183 extern PFNGLCULLFACEPROC qglCullFace;
184 extern PFNGLFRONTFACEPROC qglFrontFace;
185 extern PFNGLPOINTSIZEPROC qglPointSize;
186 extern PFNGLLINEWIDTHPROC qglLineWidth;
187 extern PFNGLLINESTIPPLEPROC qglLineStipple;
188 extern PFNGLPOLYGONMODEPROC qglPolygonMode;
189 extern PFNGLPOLYGONOFFSETPROC qglPolygonOffset;
190 extern PFNGLPOLYGONSTIPPLEPROC qglPolygonStipple;
191 extern PFNGLGETPOLYGONSTIPPLEPROC qglGetPolygonStipple;
192 extern PFNGLEDGEFLAGPROC qglEdgeFlag;
193 extern PFNGLEDGEFLAGVPROC qglEdgeFlagv;
194 extern PFNGLSCISSORPROC qglScissor;
195 extern PFNGLCLIPPLANEPROC qglClipPlane;
196 extern PFNGLGETCLIPPLANEPROC qglGetClipPlane;
197 extern PFNGLDRAWBUFFERPROC qglDrawBuffer;
198 extern PFNGLREADBUFFERPROC qglReadBuffer;
199 extern PFNGLENABLEPROC qglEnable;
200 extern PFNGLDISABLEPROC qglDisable;
201 extern PFNGLISENABLEDPROC qglIsEnabled;
202 extern PFNGLENABLECLIENTSTATEPROC qglEnableClientState;
203 extern PFNGLDISABLECLIENTSTATEPROC qglDisableClientState;
204 extern PFNGLGETERRORPROC qglGetError;
205 extern PFNGLGETSTRINGPROC qglGetString;
206 extern PFNGLGETBOOLEANVPROC qglGetBooleanv;
207 extern PFNGLGETDOUBLEVPROC qglGetDoublev;
208 extern PFNGLGETFLOATVPROC qglGetFloatv;
209 extern PFNGLGETIINTEGERVPROC qglGetIntegerv;
210 extern PFNGLPUSHATTRIBPROC qglPushAttrib;
211 extern PFNGLPOPATTRIBPROC qglPopAttrib;
212 extern PFNGLPUSHCLIENTATTRIBPROC qglPushClientAttrib;  /* 1.1 */
213 extern PFNGLPOPCLIENTATTRIBPROC qglPopClientAttrib;  /* 1.1 */
214 extern PFNGLRENDERMODEPROC qglRenderMode;
215 extern PFNGLFINISHPROC qglFinish;
216 extern PFNGLFLUSHPROC qglFlush;
217 extern PFNGLHINTPROC qglHint;
218 
219 /* Depth Buffer */
220 extern PFNGLCLEARDEPTHPROC qglClearDepth;
221 extern PFNGLDEPTHFUNCPROC qglDepthFunc;
222 extern PFNGLDEPTHMASKPROC qglDepthMask;
223 extern PFNGLDEPTHRANGEPROC qglDepthRange;
224 
225 /* Accumulation Buffer */
226 extern PFNGLCLEARACCUMPROC qglClearAccum;
227 extern PFNGLACCUMPROC qglAccum;
228 
229 /* Transformation */
230 extern PFNGLMATRIXMODEPROC qglMatrixMode;
231 extern PFNGLORTHOPROC qglOrtho;
232 extern PFNGLFRUSTUMPROC qglFrustum;
233 extern PFNGLVIEWPORTPROC qglViewport;
234 extern PFNGLPUSHMATRIXPROC qglPushMatrix;
235 extern PFNGLPOPMATRIXPROC qglPopMatrix;
236 extern PFNGLLOADIDENTITYPROC qglLoadIdentity;
237 extern PFNGLLOADMATRIXDPROC qglLoadMatrixd;
238 extern PFNGLLOADMATRIXFPROC qglLoadMatrixf;
239 extern PFNGLMULTMATRIXDPROC qglMultMatrixd;
240 extern PFNGLMULTMATRIXFPROC qglMultMatrixf;
241 extern PFNGLROTATEDPROC qglRotated;
242 extern PFNGLROTATEFPROC qglRotatef;
243 extern PFNGLSCALEDPROC qglScaled;
244 extern PFNGLSCALEFPROC qglScalef;
245 extern PFNGLTRANSLATEDPROC qglTranslated;
246 extern PFNGLTRANSLATEFPROC qglTranslatef;
247 
248 /* Raster functions */
249 extern PFNGLPIXELZOOMPROC qglPixelZoom;
250 extern PFNGLPIXELSTOREFPROC qglPixelStoref;
251 extern PFNGLPIXELSTOREIPROC qglPixelStorei;
252 extern PFNGLPIXELTRANSFERFPROC qglPixelTransferf;
253 extern PFNGLPIXELTRANSFERIPROC qglPixelTransferi;
254 extern PFNGLPIXELMAPFVPROC qglPixelMapfv;
255 extern PFNGLPIXELMAPUIVPROC qglPixelMapuiv;
256 extern PFNGLPIXELMAPUSVPROC qglPixelMapusv;
257 extern PFNGLGETPIXELMAPFVPROC qglGetPixelMapfv;
258 extern PFNGLGETPIXELMAPUIVPROC qglGetPixelMapuiv;
259 extern PFNGLGETPIXELMAPUSVPROC qglGetPixelMapusv;
260 extern PFNGLBITMAPPROC qglBitmap;
261 extern PFNGLREADPIXELSPROC qglReadPixels;
262 extern PFNGLDRAWPIXELSPROC qglDrawPixels;
263 extern PFNGLCOPYPIXELSPROC qglCopyPixels;
264 
265 /* Stenciling */
266 extern PFNGLSTENCILFUNCPROC qglStencilFunc;
267 extern PFNGLSTENCILMASKPROC qglStencilMask;
268 extern PFNGLSTENCILOPPROC qglStencilOp;
269 extern PFNGLCLEARSTENCILPROC qglClearStencil;
270 
271 /* Texture mapping */
272 extern PFNGLTEXGENDPROC qglTexGend;
273 extern PFNGLTEXGENFPROC qglTexGenf;
274 extern PFNGLTEXGENIPROC qglTexGeni;
275 extern PFNGLTEXGENDVPROC qglTexGendv;
276 extern PFNGLTEXGENFVPROC qglTexGenfv;
277 extern PFNGLTEXGENIVPROC qglTexGeniv;
278 extern PFNGLGETTEXGENDVPROC qglGetTexGendv;
279 extern PFNGLGETTEXGENFVPROC qglGetTexGenfv;
280 extern PFNGLGETTEXGENIVPROC qglGetTexGeniv;
281 extern PFNGLTEXENVFPROC qglTexEnvf;
282 extern PFNGLTEXENVIPROC qglTexEnvi;
283 extern PFNGLTEXENVFVPROC qglTexEnvfv;
284 extern PFNGLTEXENVIVPROC qglTexEnviv;
285 extern PFNGLGETTEXENVFVPROC qglGetTexEnvfv;
286 extern PFNGLGETTEXENVIVPROC qglGetTexEnviv;
287 extern PFNGLTEXPARAMETERFPROC qglTexParameterf;
288 extern PFNGLTEXPARAMETERIPROC qglTexParameteri;
289 extern PFNGLTEXPARAMETERFVPROC qglTexParameterfv;
290 extern PFNGLTEXPARAMETERIVPROC qglTexParameteriv;
291 extern PFNGLGETTEXPARAMETERFVPROC qglGetTexParameterfv;
292 extern PFNGLGETTEXPARAMETERIVPROC qglGetTexParameteriv;
293 extern PFNGLGETTEXLEVELPARAMETERFVPROC qglGetTexLevelParameterfv;
294 extern PFNGLGETTEXLEVELPARAMETERIVPROC qglGetTexLevelParameteriv;
295 extern PFNGLTEXIMAGE1DPROC qglTexImage1D;
296 extern PFNGLTEXIMAGE2DPROC qglTexImage2D;
297 extern PFNGLGETTEXIMAGEPROC qglGetTexImage;
298 
299 /* 1.1 functions */
300 /* texture objects */
301 extern PFNGLGENTEXTURESPROC qglGenTextures;
302 extern PFNGLDELETETEXTURESPROC qglDeleteTextures;
303 extern PFNGLBINDTEXTUREPROC qglBindTexture;
304 extern PFNGLPRIORITIZETEXTURESPROC qglPrioritizeTextures;
305 extern PFNGLARETEXTURESRESIDENTPROC qglAreTexturesResident;
306 extern PFNGLISTEXTUREPROC qglIsTexture;
307 /* texture mapping */
308 extern PFNGLTEXSUBIMAGE1DPROC qglTexSubImage1D;
309 extern PFNGLTEXSUBIMAGE2DPROC qglTexSubImage2D;
310 extern PFNGLCOPYTEXIMAGE1DPROC qglCopyTexImage1D;
311 extern PFNGLCOPYTEXIMAGE2DPROC qglCopyTexImage2D;
312 extern PFNGLCOPYTEXSUBIMAGE1DPROC qglCopyTexSubImage1D;
313 extern PFNGLCOPYTEXSUBIMAGE2DPROC qglCopyTexSubImage2D;
314 /* vertex arrays */
315 extern PFNGLVERTEXPOINTERPROC qglVertexPointer;
316 extern PFNGLNORMALPOINTERPROC qglNormalPointer;
317 extern PFNGLCOLORPOINTERPROC qglColorPointer;
318 extern PFNGLINDEXPOINTERPROC qglIndexPointer;
319 extern PFNGLTEXCOORDPOINTERPROC qglTexCoordPointer;
320 extern PFNGLEDGEFLAGPOINTERPROC qglEdgeFlagPointer;
321 extern PFNGLGETPOINTERVPROC qglGetPointerv;
322 extern PFNGLARRAYELEMENTPROC qglArrayElement;
323 extern PFNGLDRAWARRAYSPROC qglDrawArrays;
324 extern PFNGLDRAWELEMENTSPROC qglDrawElements;
325 extern PFNGLINTERLEAVEDARRAYSPROC qglInterleavedArrays;
326 
327 /*GLSL functions EXT*/
328 extern PFNGLDELETEOBJECTARBPROC qglDeleteObjectARB;
329 extern PFNGLGETHANDLEARBPROC qglGetHandleARB;
330 extern PFNGLDETACHOBJECTARBPROC qglDetachObjectARB;
331 extern PFNGLCREATESHADEROBJECTARBPROC qglCreateShaderObjectARB;
332 extern PFNGLSHADERSOURCEARBPROC qglShaderSourceARB;
333 extern PFNGLCOMPILESHADERARBPROC qglCompileShaderARB;
334 extern PFNGLCREATEPROGRAMOBJECTARBPROC qglCreateProgramObjectARB;
335 extern PFNGLATTACHOBJECTARBPROC qglAttachObjectARB;
336 extern PFNGLLINKPROGRAMARBPROC qglLinkProgramARB;
337 extern PFNGLUSEPROGRAMOBJECTARBPROC qglUseProgramObjectARB;
338 extern PFNGLVALIDATEPROGRAMARBPROC qglValidateProgramARB;
339 extern PFNGLUNIFORM1FARBPROC qglUniform1fARB;
340 extern PFNGLUNIFORM2FARBPROC qglUniform2fARB;
341 extern PFNGLUNIFORM3FARBPROC qglUniform3fARB;
342 extern PFNGLUNIFORM4FARBPROC qglUniform4fARB;
343 extern PFNGLUNIFORM1IARBPROC qglUniform1iARB;
344 extern PFNGLUNIFORM2IARBPROC qglUniform2iARB;
345 extern PFNGLUNIFORM3IARBPROC qglUniform3iARB;
346 extern PFNGLUNIFORM4IARBPROC qglUniform4iARB;
347 extern PFNGLUNIFORM1FVARBPROC qglUniform1fvARB;
348 extern PFNGLUNIFORM2FVARBPROC qglUniform2fvARB;
349 extern PFNGLUNIFORM3FVARBPROC qglUniform3fvARB;
350 extern PFNGLUNIFORM4FVARBPROC qglUniform4fvARB;
351 extern PFNGLUNIFORM1IVARBPROC qglUniform1ivARB;
352 extern PFNGLUNIFORM2IVARBPROC qglUniform2ivARB;
353 extern PFNGLUNIFORM3IVARBPROC qglUniform3ivARB;
354 extern PFNGLUNIFORM4IVARBPROC qglUniform4ivARB;
355 extern PFNGLUNIFORMMATRIX2FVARBPROC qglUniformMatrix2fvARB;
356 extern PFNGLUNIFORMMATRIX3FVARBPROC qglUniformMatrix3fvARB;
357 extern PFNGLUNIFORMMATRIX4FVARBPROC qglUniformMatrix4fvARB;
358 extern PFNGLGETOBJECTPARAMETERFVARBPROC qglGetObjectParameterfvARB;
359 extern PFNGLGETOBJECTPARAMETERIVARBPROC qglGetObjectParameterivARB;
360 extern PFNGLGETINFOLOGARBPROC qglGetInfoLogARB;
361 extern PFNGLGETATTACHEDOBJECTSARBPROC qglGetAttachedObjectsARB;
362 extern PFNGLGETUNIFORMLOCATIONARBPROC qglGetUniformLocationARB;
363 extern PFNGLGETACTIVEUNIFORMARBPROC qglGetActiveUniformARB;
364 extern PFNGLGETUNIFORMFVARBPROC qglGetUniformfvARB;
365 extern PFNGLGETUNIFORMIVARBPROC qglGetUniformivARB;
366 extern PFNGLGETSHADERSOURCEARBPROC qglGetShaderSourceARB;
367 
368 extern PFNGLBINDATTRIBLOCATIONARBPROC qglBindAttribLocationARB;
369 extern PFNGLGETACTIVEATTRIBARBPROC qglGetActiveAttribARB;
370 extern PFNGLGETATTRIBLOCATIONARBPROC qglGetAttribLocationARB;
371 extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC qglEnableVertexAttribArrayARB;
372 extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC qglDisableVertexAttribArrayARB;
373 extern PFNGLVERTEXATTRIBPOINTERARBPROC qglVertexAttribPointerARB;
374 
375 /*multitexture EXT*/
376 extern PFNGLACTIVETEXTUREARBPROC qglActiveTextureARB;
377 extern PFNGLCLIENTACTIVETEXTUREARBPROC qglClientActiveTextureARB;
378 extern PFNGLMULTITEXCOORD1DARBPROC qglMultiTexCoord1dARB;
379 extern PFNGLMULTITEXCOORD1DVARBPROC qglMultiTexCoord1dvARB;
380 extern PFNGLMULTITEXCOORD1FARBPROC qglMultiTexCoord1fARB;
381 extern PFNGLMULTITEXCOORD1FVARBPROC qglMultiTexCoord1fvARB;
382 extern PFNGLMULTITEXCOORD1IARBPROC qglMultiTexCoord1iARB;
383 extern PFNGLMULTITEXCOORD1IVARBPROC qglMultiTexCoord1ivARB;
384 extern PFNGLMULTITEXCOORD1SARBPROC qglMultiTexCoord1sARB;
385 extern PFNGLMULTITEXCOORD1SVARBPROC qglMultiTexCoord1svARB;
386 extern PFNGLMULTITEXCOORD2DARBPROC qglMultiTexCoord2dARB;
387 extern PFNGLMULTITEXCOORD2DVARBPROC qglMultiTexCoord2dvARB;
388 extern PFNGLMULTITEXCOORD2FARBPROC qglMultiTexCoord2fARB;
389 extern PFNGLMULTITEXCOORD2FVARBPROC qglMultiTexCoord2fvARB;
390 extern PFNGLMULTITEXCOORD2IARBPROC qglMultiTexCoord2iARB;
391 extern PFNGLMULTITEXCOORD2IVARBPROC qglMultiTexCoord2ivARB;
392 extern PFNGLMULTITEXCOORD2SARBPROC qglMultiTexCoord2sARB;
393 extern PFNGLMULTITEXCOORD2SVARBPROC qglMultiTexCoord2svARB;
394 extern PFNGLMULTITEXCOORD3DARBPROC qglMultiTexCoord3dARB;
395 extern PFNGLMULTITEXCOORD3DVARBPROC qglMultiTexCoord3dvARB;
396 extern PFNGLMULTITEXCOORD3FARBPROC qglMultiTexCoord3fARB;
397 extern PFNGLMULTITEXCOORD3FVARBPROC qglMultiTexCoord3fvARB;
398 extern PFNGLMULTITEXCOORD3IARBPROC qglMultiTexCoord3iARB;
399 extern PFNGLMULTITEXCOORD3IVARBPROC qglMultiTexCoord3ivARB;
400 extern PFNGLMULTITEXCOORD3SARBPROC qglMultiTexCoord3sARB;
401 extern PFNGLMULTITEXCOORD3SVARBPROC qglMultiTexCoord3svARB;
402 extern PFNGLMULTITEXCOORD4DARBPROC qglMultiTexCoord4dARB;
403 extern PFNGLMULTITEXCOORD4DVARBPROC qglMultiTexCoord4dvARB;
404 extern PFNGLMULTITEXCOORD4FARBPROC qglMultiTexCoord4fARB;
405 extern PFNGLMULTITEXCOORD4FVARBPROC qglMultiTexCoord4fvARB;
406 extern PFNGLMULTITEXCOORD4IARBPROC qglMultiTexCoord4iARB;
407 extern PFNGLMULTITEXCOORD4IVARBPROC qglMultiTexCoord4ivARB;
408 extern PFNGLMULTITEXCOORD4SARBPROC qglMultiTexCoord4sARB;
409 extern PFNGLMULTITEXCOORD4SVARBPROC qglMultiTexCoord4svARB;
410 
411 /* VBO EXT */
412 extern PFNGLBINDBUFFERARBPROC qglBindBufferARB;
413 extern PFNGLDELETEBUFFERSARBPROC qglDeleteBuffersARB;
414 extern PFNGLGENBUFFERSARBPROC qglGenBuffersARB;
415 extern PFNGLISBUFFERARBPROC qglIsBufferARB;
416 extern PFNGLBUFFERDATAARBPROC qglBufferDataARB;
417 extern PFNGLBUFFERSUBDATAARBPROC qglBufferSubDataARB;
418 extern PFNGLGETBUFFERSUBDATAARBPROC qglGetBufferSubDataARB;
419 extern PFNGLMAPBUFFERARBPROC qglMapBufferARB;
420 extern PFNGLUNMAPBUFFERARBPROC qglUnmapBufferARB;
421 extern PFNGLGETBUFFERPARAMETERIVARBPROC qglGetBufferParameterivARB;
422 extern PFNGLGETBUFFERPOINTERVARBPROC qglGetBufferPointervARB;
423 
424 extern PFNGLBINDVERTEXARRAYPROC qglBindVertexArray;
425 extern PFNGLDELETEVERTEXARRAYSPROC qglDeleteVertexArrays;
426 extern PFNGLGENVERTEXARRAYSPROC qglGenVertexArrays;
427 extern PFNGLISVERTEXARRAYPROC qglIsVertexArray;
428 
429 extern PFNGLGENERATEMIPMAPPROC qglGenerateMipmap;
430 
431 void InitGLExtFuncs();
432 int IsGLExtensionSupported(const char *ext);
433 
434 int checkOpenGLError();
435 void printInfoLog (GLhandleARB object);
436 int loadShaderFromBuff(GLhandleARB ShaderObj, const char *source, const char *additionalDefines);
437 int loadShaderFromFile(GLhandleARB ShaderObj, const char *fileName, const char *additionalDefines);
438 
439 void BindWhiteTexture();
440 
441 #ifdef	__cplusplus
442 }
443 #endif
444 
445 #endif
446