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