1 /* 2 Copyright (C) 1996-1997 Id Software, Inc. 3 4 This program is free software; you can redistribute it and/or 5 modify it under the terms of the GNU General Public License 6 as published by the Free Software Foundation; either version 2 7 of the License, or (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 13 See the GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19 */ 20 // disable data conversion warnings 21 22 #pragma warning(disable : 4244) // MIPS 23 #pragma warning(disable : 4136) // X86 24 #pragma warning(disable : 4051) // ALPHA 25 26 #ifdef _WIN32 27 #include <windows.h> 28 #endif 29 30 #if defined (__APPLE__) || defined (MACOSX) 31 #include <OpenGL/gl.h> 32 #include <OpenGL/glu.h> 33 #include <OpenGL/glext.h> 34 #else 35 #include <GL/gl.h> 36 #include <GL/glu.h> 37 #endif /* __APPLE__ ||�MACOSX */ 38 39 /* use the correct dynamic function address binder */ 40 #if defined (SDL) 41 #define SAFE_GET_PROC( func, type, name) \ 42 func = (type) SDL_GL_GetProcAddress (name) 43 #elif defined (__glx__) 44 #define SAFE_GET_PROC( func, type, name) \ 45 func = (type) glXGetProcAddressARB (name) 46 #else 47 #define SAFE_GET_PROC( func, type, name) \ 48 func = (type) wglGetProcAddress( name) 49 #endif 50 51 52 // - DC - 53 #if defined (SDL) 54 #include <SDL/SDL_opengl.h> 55 #endif 56 57 #if defined (__glx__) 58 #include <GL/glx.h> 59 #endif 60 61 void GL_BeginRendering (int *x, int *y, int *width, int *height); 62 void GL_EndRendering (void); 63 64 65 #ifdef _WIN32 66 // Function prototypes for the Texture Object Extension routines 67 typedef GLboolean (APIENTRY *ARETEXRESFUNCPTR)(GLsizei, const GLuint *, 68 const GLboolean *); 69 typedef void (APIENTRY *BINDTEXFUNCPTR)(GLenum, GLuint); 70 typedef void (APIENTRY *DELTEXFUNCPTR)(GLsizei, const GLuint *); 71 typedef void (APIENTRY *GENTEXFUNCPTR)(GLsizei, GLuint *); 72 typedef GLboolean (APIENTRY *ISTEXFUNCPTR)(GLuint); 73 typedef void (APIENTRY *PRIORTEXFUNCPTR)(GLsizei, const GLuint *, 74 const GLclampf *); 75 typedef void (APIENTRY *TEXSUBIMAGEPTR)(int, int, int, int, int, int, int, int, void *); 76 77 extern BINDTEXFUNCPTR bindTexFunc; 78 extern DELTEXFUNCPTR delTexFunc; 79 extern TEXSUBIMAGEPTR TexSubImage2DFunc; 80 #endif 81 82 extern int texture_extension_number; 83 extern int texture_mode; 84 extern int glow_texture_object; //PENTA: gl texture object of the glow texture 85 extern int normcube_texture_object;//PENTA: gl texture object of the normalization cubemap 86 extern int halo_texture_object; //PENTA: Halo light texture 87 extern int atten1d_texture_object; 88 extern int atten2d_texture_object; 89 extern int atten3d_texture_object; 90 extern float gldepthmin, gldepthmax; 91 92 void GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean alpha); 93 void GL_Upload8 (byte *data,char *identifier, int width, int height, qboolean mipmap, qboolean alpha, qboolean bump); 94 int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolean mipmap, qboolean alpha, qboolean bump); 95 int GL_FindTexture (char *identifier); 96 97 typedef struct 98 { 99 float x, y, z; 100 float s, t; 101 float r, g, b; 102 } glvert_t; 103 104 extern glvert_t glv; 105 106 extern int glx, gly, glwidth, glheight; 107 108 #ifdef _WIN32 109 extern PROC glArrayElementEXT; 110 extern PROC glColorPointerEXT; 111 extern PROC glTexturePointerEXT; 112 extern PROC glVertexPointerEXT; 113 #endif 114 115 // r_local.h -- private refresh defs 116 117 #define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0) 118 // normalizing factor so player model works out to about 119 // 1 pixel per triangle 120 #define MAX_LBM_HEIGHT 480 121 122 #define TILE_SIZE 128 // size of textures generated by R_GenTiledSurf 123 124 #define SKYSHIFT 7 125 #define SKYSIZE (1 << SKYSHIFT) 126 #define SKYMASK (SKYSIZE - 1) 127 128 #define BACKFACE_EPSILON 0.01 129 130 131 void R_TimeRefresh_f (void); 132 void R_ReadPointFile_f (void); 133 texture_t *R_TextureAnimation (texture_t *base); 134 135 typedef struct surfcache_s 136 { 137 struct surfcache_s *next; 138 struct surfcache_s **owner; // NULL is an empty chunk of memory 139 int lightadj[MAXLIGHTMAPS]; // checked for strobe flush 140 int dlight; 141 int size; // including header 142 unsigned width; 143 unsigned height; // DEBUG only needed for debug 144 float mipscale; 145 struct texture_s *texture; // checked for animating textures 146 byte data[4]; // width*height elements 147 } surfcache_t; 148 149 150 typedef struct 151 { 152 pixel_t *surfdat; // destination for generated surface 153 int rowbytes; // destination logical width in bytes 154 msurface_t *surf; // description for surface to generate 155 fixed8_t lightadj[MAXLIGHTMAPS]; 156 // adjust for lightmap levels for dynamic lighting 157 texture_t *texture; // corrected for animating textures 158 int surfmip; // mipmapped ratio of surface texels / world pixels 159 int surfwidth; // in mipmapped texels 160 int surfheight; // in mipmapped texels 161 } drawsurf_t; 162 163 164 typedef enum { 165 pt_static, pt_grav, pt_slowgrav, pt_fire, pt_explode, pt_explode2, pt_blob, pt_blob2 166 } ptype_t; 167 168 typedef enum { 169 pb_add, pb_subtract 170 } pblend_t; 171 172 173 typedef enum { 174 emt_box 175 } emtype_t; 176 177 typedef enum { 178 align_view, align_vel, align_surf 179 } align_t; 180 181 typedef struct ParticleEffect_s { 182 char name[64]; 183 vec3_t emmiterParams1, emmiterParams2; //mins maxs of emmiter box 184 emtype_t emmiterType; //currently only box is supported 185 vec3_t startcolormin, startcolormax, endcolormin, endcolormax; 186 vec3_t velocitymin, velocitymax; //min max velocity 187 float lifemin, lifemax; //min max life 188 int movetype; //how it moves (gravity/collision...) 189 vec3_t gravity; 190 float rotmin, rotmax;//rotaiton speed 191 float growmin, growmax;//scale speed (make second smaller to shrink) 192 float sizemin, sizemax;//scale speed (make second smaller to shrink) 193 vec3_t drag; //drag of particle (how fast it looses it's speed) 194 int srcblend, dstblend; // gl enums for blend modes 195 int numbounces; //number of bounces before particle is deleted 196 int texture; //gl object of the texture 197 align_t align;//particle is aligned with its velocity 198 float velscale; 199 struct ParticleEffect_s *spawn; //particle effect to spawn on hit 200 struct ParticleEffect_s *next; 201 } ParticleEffect_t; 202 203 // !!! if this is changed, it must be changed in d_ifacea.h too !!! 204 typedef struct particle_s 205 { 206 // driver-usable fields 207 vec3_t org; 208 vec3_t color; 209 // drivers never touch the following fields 210 struct particle_s *next; 211 vec3_t vel; 212 //float ramp; 213 float die, lifetime; 214 //ptype_t type; 215 //PENTA: Nicer particles (tm) 216 int texture; //texture object of particle 217 int numbounces; //number of bounces left before deletion set to zero for no bounce 218 float rot; 219 float rspeed; 220 float size; 221 float growspeed; 222 qboolean velaligned; 223 //pblend_t blendfunc; 224 vec3_t startcolor, endcolor; 225 int srcblend, dstblend; 226 vec3_t gravity; 227 vec3_t drag; 228 float velscale; 229 ParticleEffect_t *spawn; 230 } particle_t; 231 232 typedef enum { 233 dt_blood 234 } dtype_t; 235 236 #define MAX_DECAL_VERTICES 128 237 #define MAX_DECAL_TRIANGLES 64 238 //PENTA: Decals 239 typedef struct decal_s 240 { 241 vec3_t origin; 242 vec3_t normal; 243 vec3_t tangent; 244 float radius; 245 246 float color[4], startcolor[4], endcolor[4]; 247 struct decal_s *next; 248 float die; 249 float lifetime; 250 dtype_t type; 251 int texture; //texture object of particle 252 int srcblend; 253 int dstblend; 254 255 //geometry of decail 256 int vertexCount, triangleCount; 257 vec3_t vertexArray[MAX_DECAL_VERTICES]; 258 float texcoordArray[MAX_DECAL_VERTICES][2]; 259 int triangleArray[MAX_DECAL_TRIANGLES][3]; 260 } decal_t; 261 262 void R_SpawnDecal(vec3_t center, vec3_t normal, vec3_t tangent, ParticleEffect_t *effect); 263 float RandomMinMax(float min, float max); 264 265 //==================================================== 266 267 268 extern entity_t r_worldentity; 269 extern qboolean r_cache_thrash; // compatability 270 extern vec3_t modelorg, r_entorigin; 271 extern entity_t *currententity; 272 extern int r_visframecount; // ??? what difs? 273 extern int r_framecount; 274 extern int r_lightTimestamp;//PENTA: we need this in different files 275 extern mplane_t frustum[4]; 276 extern int c_brush_polys, c_alias_polys; 277 278 279 // 280 // view origin 281 // 282 extern vec3_t vup; 283 extern vec3_t vpn; 284 extern vec3_t vright; 285 extern vec3_t r_origin; 286 287 // 288 // screen size info 289 // 290 extern refdef_t r_refdef; 291 extern mleaf_t *r_viewleaf, *r_oldviewleaf; 292 extern texture_t *r_notexture_mip; 293 extern int d_lightstylevalue[256]; // 8.8 fraction of base light value 294 295 extern qboolean envmap; 296 extern int currenttexture; 297 extern int cnttextures[16]; 298 extern int particletexture; 299 extern int particletexture_smoke; 300 extern int particletexture_glow; 301 extern int particletexture_glow2; 302 extern int particletexture_tele; 303 extern int particletexture_blood; 304 extern int particletexture_dirblood; 305 extern int playertextures; 306 extern int gl_filter_min; 307 extern int gl_filter_max; 308 309 extern int skytexturenum; // index in cl.loadmodel, not gl texture object 310 311 extern cvar_t r_norefresh; 312 extern cvar_t r_drawentities; 313 extern cvar_t r_drawworld; 314 extern cvar_t r_drawviewmodel; 315 extern cvar_t r_waterwarp; 316 extern cvar_t r_fullbright; 317 extern cvar_t r_lightmap; 318 extern cvar_t r_shadows; 319 extern cvar_t r_mirroralpha; 320 extern cvar_t r_wateralpha; 321 extern cvar_t r_dynamic; 322 extern cvar_t r_novis; 323 324 extern cvar_t gl_clear; 325 extern cvar_t gl_cull; 326 extern cvar_t gl_poly; 327 //extern cvar_t gl_texsort; 328 extern cvar_t gl_smoothmodels; 329 extern cvar_t gl_affinemodels; 330 extern cvar_t gl_polyblend; 331 //extern cvar_t gl_keeptjunctions; PENTA: dont remove t-junctions 332 extern cvar_t gl_reporttjunctions; 333 extern cvar_t gl_flashblend; 334 extern cvar_t gl_nocolors; 335 extern cvar_t gl_doubleeyes; 336 337 extern int gl_lightmap_format; 338 extern int gl_solid_format; 339 extern int gl_alpha_format; 340 341 extern cvar_t gl_max_size; 342 extern cvar_t gl_playermip; 343 344 extern cvar_t gl_watershader; //PENTA: 345 extern cvar_t gl_calcdepth; 346 347 extern cvar_t sh_lightmapbright; //PENTA: 348 extern cvar_t sh_radiusscale; 349 extern cvar_t sh_visiblevolumes; 350 extern cvar_t sh_entityshadows; 351 extern cvar_t sh_worldshadows; 352 extern cvar_t sh_showlightnum; 353 extern cvar_t sh_glows; 354 extern cvar_t sh_fps; // set for running times - muff 355 extern cvar_t sh_debuginfo; 356 extern cvar_t sh_norevis; //PENTA: no recalculating the vis for light positions 357 extern cvar_t sh_nosvbsp; //PENTA: no shadow bsp 358 extern cvar_t sh_noeclip; //PENTA: no entity/leaf clipping for shadows 359 extern cvar_t sh_infinitevolumes;//PENTA: 360 extern cvar_t sh_noscissor; 361 extern cvar_t sh_nocleversave; 362 extern cvar_t sh_bumpmaps;//PENTA: enable disable bump mapping 363 extern cvar_t sh_colormaps;//PENTA: enable disable textures on the world (light will remain) 364 extern cvar_t sh_playershadow;//PENTA: the player casts a shadow (the one YOU are playing with, others always cast shadows) 365 extern cvar_t sh_nocache; 366 extern cvar_t sh_glares; 367 extern cvar_t sh_noefrags; 368 extern cvar_t sh_showtangent; 369 extern cvar_t sh_noshadowpopping; 370 extern cvar_t fog_waterfog; 371 extern cvar_t gl_caustics; 372 extern cvar_t gl_truform; 373 extern cvar_t gl_truform_tesselation; 374 extern cvar_t gl_transformlerp; 375 extern cvar_t gl_compress_textures; 376 extern cvar_t scr_fov; // 10 - 170 377 extern cvar_t mir_detail; //PENTA: mirror detail level 378 //0: no mirrors 379 //1: World only 380 //2: World & player 381 //3: Full 382 extern cvar_t mir_frameskip; //PENTA: mirror is updated every i'th frame 383 extern cvar_t mir_forcewater; //Forces all quake's water to be reflecting. 384 extern cvar_t mir_distance; //maximum drawing distance 385 extern cvar_t gl_wireframe; 386 extern cvar_t fog_r; 387 extern cvar_t fog_g; 388 extern cvar_t fog_b; 389 extern cvar_t fog_start; 390 extern cvar_t fog_end; 391 extern cvar_t fog_enabled; 392 extern float fog_color[4]; 393 394 extern int mirrortexturenum; // quake texturenum, not gltexturenum 395 extern qboolean mirror; 396 extern qboolean glare; 397 extern mplane_t *mirror_plane; 398 extern mplane_t mirror_far_plane; 399 extern int mirror_clipside; 400 extern float vid_gamma; 401 402 extern float r_world_matrix[16]; 403 extern double r_Dproject_matrix[16]; //PENTA <AWE> added "extern". 404 extern double r_Dworld_matrix[16]; //PENTA <AWE> added "extern". 405 extern int r_Iviewport[4]; //PENTA 406 407 extern float color_black[4]; 408 409 #define NUMVERTEXNORMALS 162 410 411 extern float r_avertexnormals[NUMVERTEXNORMALS][3]; 412 413 414 extern const char *gl_vendor; 415 extern const char *gl_renderer; 416 extern const char *gl_version; 417 extern const char *gl_extensions; 418 419 void R_TranslatePlayerSkin (int playernum); 420 void GL_Bind (int texnum); 421 422 #ifndef APIENTRY 423 #define APIENTRY 424 #endif 425 426 #if !defined (__APPLE__) && !defined (MACOSX) 427 428 429 // Multitexture 430 //#define TEXTURE0_SGIS 0x835E 431 //#define TEXTURE1_SGIS 0x835F 432 433 /* ARB_multitexture defines and prototypes from <GL/gl.h> */ 434 #define GL_ACTIVE_TEXTURE_ARB 0x84E0 435 #define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 436 #define GL_MAX_ACTIVE_TEXTURES_ARB 0x84E2 437 #define GL_TEXTURE0_ARB 0x84C0 438 #define GL_TEXTURE1_ARB 0x84C1 439 #define GL_TEXTURE2_ARB 0x84C2 440 #define GL_TEXTURE3_ARB 0x84C3 441 #define GL_TEXTURE4_ARB 0x84C4 442 #define GL_TEXTURE5_ARB 0x84C5 443 #define GL_TEXTURE6_ARB 0x84C6 444 #define GL_TEXTURE7_ARB 0x84C7 445 #define GL_TEXTURE8_ARB 0x84C8 446 #define GL_TEXTURE9_ARB 0x84C9 447 #define GL_TEXTURE10_ARB 0x84CA 448 #define GL_TEXTURE11_ARB 0x84CB 449 #define GL_TEXTURE12_ARB 0x84CC 450 #define GL_TEXTURE13_ARB 0x84CD 451 #define GL_TEXTURE14_ARB 0x84CE 452 #define GL_TEXTURE15_ARB 0x84CF 453 #define GL_TEXTURE16_ARB 0x84D0 454 #define GL_TEXTURE17_ARB 0x84D1 455 #define GL_TEXTURE18_ARB 0x84D2 456 #define GL_TEXTURE19_ARB 0x84D3 457 #define GL_TEXTURE20_ARB 0x84D4 458 #define GL_TEXTURE21_ARB 0x84D5 459 #define GL_TEXTURE22_ARB 0x84D6 460 #define GL_TEXTURE23_ARB 0x84D7 461 #define GL_TEXTURE24_ARB 0x84D8 462 #define GL_TEXTURE25_ARB 0x84D9 463 #define GL_TEXTURE26_ARB 0x84DA 464 #define GL_TEXTURE27_ARB 0x84DB 465 #define GL_TEXTURE28_ARB 0x84DC 466 #define GL_TEXTURE29_ARB 0x84DD 467 #define GL_TEXTURE30_ARB 0x84DE 468 #define GL_TEXTURE31_ARB 0x84DF 469 470 // ARB_texture_compression defines 471 #define GL_COMPRESSED_RGBA_ARB 0x84EE 472 473 #ifndef GL_ATI_separate_stencil 474 #define GL_ATI_separate_stencil 1 475 476 #define GL_STENCIL_BACK_FUNC_ATI 0x8800 477 #define GL_STENCIL_BACK_FAIL_ATI 0x8801 478 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 479 #define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 480 481 typedef void (APIENTRY *PFNGLSTENCILOPSEPARATEATIPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); 482 typedef void (APIENTRY *PFNGLSTENCILFUNCSEPARATEATIPROC)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); 483 484 #endif 485 486 extern PFNGLSTENCILOPSEPARATEATIPROC qglStencilOpSeparateATI; 487 extern PFNGLSTENCILFUNCSEPARATEATIPROC qglStencilFuncSeparateATI; 488 489 #endif /* !__APPLE__ && !MACOSX */ 490 491 #ifndef GL_VERSION_1_3 492 typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum texture); 493 typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); 494 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); 495 typedef void (APIENTRY * PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); 496 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); 497 typedef void (APIENTRY * PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); 498 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); 499 typedef void (APIENTRY * PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); 500 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); 501 typedef void (APIENTRY * PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); 502 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); 503 typedef void (APIENTRY * PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); 504 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); 505 typedef void (APIENTRY * PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); 506 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); 507 typedef void (APIENTRY * PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); 508 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); 509 typedef void (APIENTRY * PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); 510 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); 511 typedef void (APIENTRY * PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); 512 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); 513 typedef void (APIENTRY * PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); 514 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); 515 typedef void (APIENTRY * PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); 516 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); 517 typedef void (APIENTRY * PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); 518 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); 519 typedef void (APIENTRY * PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); 520 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); 521 typedef void (APIENTRY * PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); 522 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); 523 typedef void (APIENTRY * PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); 524 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); 525 typedef void (APIENTRY * PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); 526 #endif 527 528 extern PFNGLACTIVETEXTUREARBPROC qglActiveTextureARB; 529 extern PFNGLCLIENTACTIVETEXTUREARBPROC qglClientActiveTextureARB; 530 extern PFNGLMULTITEXCOORD1FARBPROC qglMultiTexCoord1fARB; 531 extern PFNGLMULTITEXCOORD2FARBPROC qglMultiTexCoord2fARB; 532 extern PFNGLMULTITEXCOORD2FVARBPROC qglMultiTexCoord2fvARB; 533 extern PFNGLMULTITEXCOORD3FARBPROC qglMultiTexCoord3fARB; 534 extern PFNGLMULTITEXCOORD3FVARBPROC qglMultiTexCoord3fvARB; 535 536 // <AWE> : MacOS X 10.2: defined in <OpenGL/glext.h> 537 #if !defined (__APPLE__) && !defined (MACOSX) 538 539 //PENTA: Texture env combine/ Texture env dot3 540 #define GL_COMBINE_ARB 0x8570 541 #define GL_COMBINE_RGB_ARB 0x8571 542 #define GL_COMBINE_ALPHA_ARB 0x8572 543 #define GL_RGB_SCALE_ARB 0x8573 544 #define GL_ADD_SIGNED_ARB 0x8574 545 #define GL_INTERPOLATE_ARB 0x8575 546 #define GL_SUBTRACT_ARB 0x84E7 547 #define GL_CONSTANT_ARB 0x8576 548 #define GL_PRIMARY_COLOR_ARB 0x8577 549 #define GL_PREVIOUS_ARB 0x8578 550 #define GL_SOURCE0_RGB_ARB 0x8580 551 #define GL_SOURCE1_RGB_ARB 0x8581 552 #define GL_SOURCE2_RGB_ARB 0x8582 553 #define GL_SOURCE3_RGB_ARB 0x8583 554 #define GL_SOURCE4_RGB_ARB 0x8584 555 #define GL_SOURCE5_RGB_ARB 0x8585 556 #define GL_SOURCE6_RGB_ARB 0x8586 557 #define GL_SOURCE7_RGB_ARB 0x8587 558 #define GL_SOURCE0_ALPHA_ARB 0x8588 559 #define GL_SOURCE1_ALPHA_ARB 0x8589 560 #define GL_SOURCE2_ALPHA_ARB 0x858A 561 #define GL_SOURCE3_ALPHA_ARB 0x858B 562 #define GL_SOURCE4_ALPHA_ARB 0x858C 563 #define GL_SOURCE5_ALPHA_ARB 0x858D 564 #define GL_SOURCE6_ALPHA_ARB 0x858E 565 #define GL_SOURCE7_ALPHA_ARB 0x858F 566 #define GL_OPERAND0_RGB_ARB 0x8590 567 #define GL_OPERAND1_RGB_ARB 0x8591 568 #define GL_OPERAND2_RGB_ARB 0x8592 569 #define GL_OPERAND3_RGB_ARB 0x8593 570 #define GL_OPERAND4_RGB_ARB 0x8594 571 #define GL_OPERAND5_RGB_ARB 0x8595 572 #define GL_OPERAND6_RGB_ARB 0x8596 573 #define GL_OPERAND7_RGB_ARB 0x8597 574 #define GL_OPERAND0_ALPHA_ARB 0x8598 575 #define GL_OPERAND1_ALPHA_ARB 0x8599 576 #define GL_OPERAND2_ALPHA_ARB 0x859A 577 #define GL_OPERAND3_ALPHA_ARB 0x859B 578 #define GL_OPERAND4_ALPHA_ARB 0x859C 579 #define GL_OPERAND5_ALPHA_ARB 0x859D 580 #define GL_OPERAND6_ALPHA_ARB 0x859E 581 #define GL_OPERAND7_ALPHA_ARB 0x859F 582 583 /* 584 #define GL_DOT3_RGB_EXT 0x8740 585 #define GL_DOT3_RGBA_EXT 0x8741 586 */ 587 #define GL_DOT3_RGB_ARB 0x86AE 588 #define GL_DOT3_RGBA_ARB 0x86AF 589 590 591 //PENTA: Cube mapping 592 #define GL_NORMAL_MAP_ARB 0x8511 593 #define GL_REFLECTION_MAP_ARB 0x8512 594 #define GL_TEXTURE_CUBE_MAP_ARB 0x8513 595 #define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 596 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 597 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 598 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 599 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 600 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 601 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A 602 #define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B 603 #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C 604 605 //PENTA: NV register combiners 606 #define GL_REGISTER_COMBINERS_NV 0x8522 607 #define GL_VARIABLE_A_NV 0x8523 608 #define GL_VARIABLE_B_NV 0x8524 609 #define GL_VARIABLE_C_NV 0x8525 610 #define GL_VARIABLE_D_NV 0x8526 611 #define GL_VARIABLE_E_NV 0x8527 612 #define GL_VARIABLE_F_NV 0x8528 613 #define GL_VARIABLE_G_NV 0x8529 614 #define GL_CONSTANT_COLOR0_NV 0x852A 615 #define GL_CONSTANT_COLOR1_NV 0x852B 616 #define GL_PRIMARY_COLOR_NV 0x852C 617 #define GL_SECONDARY_COLOR_NV 0x852D 618 #define GL_SPARE0_NV 0x852E 619 #define GL_SPARE1_NV 0x852F 620 #define GL_DISCARD_NV 0x8530 621 #define GL_E_TIMES_F_NV 0x8531 622 #define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 623 #define GL_UNSIGNED_IDENTITY_NV 0x8536 624 #define GL_UNSIGNED_INVERT_NV 0x8537 625 #define GL_EXPAND_NORMAL_NV 0x8538 626 #define GL_EXPAND_NEGATE_NV 0x8539 627 #define GL_HALF_BIAS_NORMAL_NV 0x853A 628 #define GL_HALF_BIAS_NEGATE_NV 0x853B 629 #define GL_SIGNED_IDENTITY_NV 0x853C 630 #define GL_SIGNED_NEGATE_NV 0x853D 631 #define GL_SCALE_BY_TWO_NV 0x853E 632 #define GL_SCALE_BY_FOUR_NV 0x853F 633 #define GL_SCALE_BY_ONE_HALF_NV 0x8540 634 #define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 635 #define GL_COMBINER_INPUT_NV 0x8542 636 #define GL_COMBINER_MAPPING_NV 0x8543 637 #define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 638 #define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 639 #define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 640 #define GL_COMBINER_MUX_SUM_NV 0x8547 641 #define GL_COMBINER_SCALE_NV 0x8548 642 #define GL_COMBINER_BIAS_NV 0x8549 643 #define GL_COMBINER_AB_OUTPUT_NV 0x854A 644 #define GL_COMBINER_CD_OUTPUT_NV 0x854B 645 #define GL_COMBINER_SUM_OUTPUT_NV 0x854C 646 #define GL_MAX_GENERAL_COMBINERS_NV 0x854D 647 #define GL_NUM_GENERAL_COMBINERS_NV 0x854E 648 #define GL_COLOR_SUM_CLAMP_NV 0x854F 649 #define GL_COMBINER0_NV 0x8550 650 #define GL_COMBINER1_NV 0x8551 651 #define GL_COMBINER2_NV 0x8552 652 #define GL_COMBINER3_NV 0x8553 653 #define GL_COMBINER4_NV 0x8554 654 #define GL_COMBINER5_NV 0x8555 655 #define GL_COMBINER6_NV 0x8556 656 #define GL_COMBINER7_NV 0x8557 657 658 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE 659 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF 660 661 662 #endif /* !__APPLE__ && !MACOSX */ 663 664 // - DC - 665 #if !defined(SDL) && !defined (__glx__) 666 typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); 667 typedef void (APIENTRY * PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); 668 typedef void (APIENTRY * PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); 669 typedef void (APIENTRY * PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); 670 typedef void (APIENTRY * PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 671 typedef void (APIENTRY * PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); 672 typedef void (APIENTRY * PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); 673 typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); 674 typedef void (APIENTRY * PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); 675 typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); 676 typedef void (APIENTRY * PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); 677 typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); 678 typedef void (APIENTRY * PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); 679 #endif 680 681 extern PFNGLCOMBINERPARAMETERFVNVPROC qglCombinerParameterfvNV; 682 extern PFNGLCOMBINERPARAMETERIVNVPROC qglCombinerParameterivNV; 683 extern PFNGLCOMBINERPARAMETERFNVPROC qglCombinerParameterfNV; 684 extern PFNGLCOMBINERPARAMETERINVPROC qglCombinerParameteriNV; 685 extern PFNGLCOMBINERINPUTNVPROC qglCombinerInputNV; 686 extern PFNGLCOMBINEROUTPUTNVPROC qglCombinerOutputNV; 687 extern PFNGLFINALCOMBINERINPUTNVPROC qglFinalCombinerInputNV; 688 extern PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC qglGetCombinerInputParameterfvNV; 689 extern PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC qglGetCombinerInputParameterivNV; 690 extern PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC qglGetCombinerOutputParameterfvNV; 691 extern PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC qglGetCombinerOutputParameterivNV; 692 extern PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC qglGetFinalCombinerInputParameterfvNV; 693 extern PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC qglGetFinalCombinerInputParameterivNV; 694 695 696 // <AWE> : MacOS X 10.2: defined in <OpenGL/glext.h> 697 #if !defined (__APPLE__) && !defined (MACOSX) && !defined(SDL) && !defined (__glx__) 698 699 //PENTA: texture3d 700 #define GL_PACK_SKIP_IMAGES 0x806B 701 #define GL_PACK_SKIP_IMAGES_EXT 0x806B 702 #define GL_PACK_IMAGE_HEIGHT 0x806C 703 #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C 704 #define GL_UNPACK_SKIP_IMAGES 0x806D 705 #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D 706 #define GL_UNPACK_IMAGE_HEIGHT 0x806E 707 #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E 708 #define GL_TEXTURE_3D 0x806F 709 #define GL_TEXTURE_3D_EXT 0x806F 710 #define GL_PROXY_TEXTURE_3D 0x8070 711 #define GL_PROXY_TEXTURE_3D_EXT 0x8070 712 #define GL_TEXTURE_DEPTH 0x8071 713 #define GL_TEXTURE_DEPTH_EXT 0x8071 714 #define GL_TEXTURE_WRAP_R 0x8072 715 #define GL_TEXTURE_WRAP_R_EXT 0x8072 716 #define GL_MAX_3D_TEXTURE_SIZE 0x8073 717 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 718 719 #endif /* !__APPLE__ && !MACOSX && !SDL && !__glx__ */ 720 721 typedef void (APIENTRY * PFNGLTEXIMAGE3DEXT)(GLenum target, GLint level, GLenum internalformat, 722 GLsizei width, GLsizei height, GLsizei depth, 723 GLint border, GLenum format, GLenum type, 724 const GLvoid* pixels); 725 extern PFNGLTEXIMAGE3DEXT qglTexImage3DEXT; 726 727 //gldepthbounds stuff 728 typedef void (APIENTRY * PFNGLDEPTHBOUNDSNV)(GLclampd zmin, GLclampd zmax); 729 730 extern PFNGLDEPTHBOUNDSNV qglDepthBoundsNV; 731 732 733 734 // <AWE> : NV_vertex_program will never be supported under any other OS than Windows, because it got 735 // replaced by the official ARB spec "ARB_vertex_program". 736 // 737 // Todo: - Add hybrid support for NV & ARB vertex_programs. 738 // - Port the current vertex program from NV to ARB. 739 740 /* ARB_vertex_program */ 741 /* 742 #define GL_VERTEX_PROGRAM_ARB 0x8620 743 #define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 744 #define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 745 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 746 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 747 #define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 748 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 749 #define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 750 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A 751 #define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 752 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 753 #define GL_PROGRAM_LENGTH_ARB 0x8627 754 #define GL_PROGRAM_FORMAT_ARB 0x8876 755 #define GL_PROGRAM_NAME_ARB 0x8677 756 #define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 757 #define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 758 #define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 759 #define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 760 #define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 761 #define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 762 #define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 763 #define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 764 #define GL_PROGRAM_PARAMETERS_ARB 0x88A8 765 #define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 766 #define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA 767 #define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB 768 #define GL_PROGRAM_ATTRIBS_ARB 0x88AC 769 #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD 770 #define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE 771 #define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF 772 #define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 773 #define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 774 #define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 775 #define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 776 #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 777 #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 778 #define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 779 #define GL_PROGRAM_STRING_ARB 0x8628 780 #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B 781 #define GL_CURRENT_MATRIX_ARB 0x8641 782 #define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 783 #define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 784 #define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 785 #define GL_MAX_PROGRAM_MATRICES_ARB 0x862F 786 #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E 787 #define GL_PROGRAM_ERROR_STRING_ARB 0x8874 788 789 #define GL_MATRIX0_ARB 0x88C0 790 #define GL_MATRIX1_ARB 0x88C1 791 #define GL_MATRIX2_ARB 0x88C2 792 #define GL_MATRIX3_ARB 0x88C3 793 #define GL_MATRIX4_ARB 0x88C4 794 #define GL_MATRIX5_ARB 0x88C5 795 #define GL_MATRIX6_ARB 0x88C6 796 #define GL_MATRIX7_ARB 0x88C7 797 #define GL_MATRIX8_ARB 0x88C8 798 #define GL_MATRIX9_ARB 0x88C9 799 #define GL_MATRIX10_ARB 0x88CA 800 #define GL_MATRIX11_ARB 0x88CB 801 #define GL_MATRIX12_ARB 0x88CC 802 #define GL_MATRIX13_ARB 0x88CD 803 #define GL_MATRIX14_ARB 0x88CE 804 #define GL_MATRIX15_ARB 0x88CF 805 #define GL_MATRIX16_ARB 0x88D0 806 #define GL_MATRIX17_ARB 0x88D1 807 #define GL_MATRIX18_ARB 0x88D2 808 #define GL_MATRIX19_ARB 0x88D3 809 #define GL_MATRIX20_ARB 0x88D4 810 #define GL_MATRIX21_ARB 0x88D5 811 #define GL_MATRIX22_ARB 0x88D6 812 #define GL_MATRIX23_ARB 0x88D7 813 #define GL_MATRIX24_ARB 0x88D8 814 #define GL_MATRIX25_ARB 0x88D9 815 #define GL_MATRIX26_ARB 0x88DA 816 #define GL_MATRIX27_ARB 0x88DB 817 #define GL_MATRIX28_ARB 0x88DC 818 #define GL_MATRIX29_ARB 0x88DD 819 #define GL_MATRIX30_ARB 0x88DE 820 #define GL_MATRIX31_ARB 0x88DF 821 822 typedef void (APIENTRY * PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint id); 823 typedef void (APIENTRY * PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); 824 typedef void (APIENTRY * PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); 825 typedef void (APIENTRY * PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); 826 typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); 827 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); 828 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); 829 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); 830 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid **pointer); 831 typedef GLboolean (APIENTRY * PFNGLISPROGRAMARBPROC) (GLuint program); 832 typedef void (APIENTRY * PFNGPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); 833 typedef void (APIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); 834 typedef void (APIENTRY * PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); 835 typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); 836 typedef void (APIENTRY * PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); 837 typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); 838 typedef void (APIENTRY * PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); 839 typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); 840 typedef void (APIENTRY * PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); 841 typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); 842 typedef void (APIENTRY * PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); 843 typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); 844 typedef void (APIENTRY * PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); 845 typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); 846 typedef void (APIENTRY * PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); 847 typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); 848 typedef void (APIENTRY * PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); 849 typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); 850 typedef void (APIENTRY * PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); 851 typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); 852 typedef void (APIENTRY * PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 853 typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); 854 typedef void (APIENTRY * PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 855 typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); 856 typedef void (APIENTRY * PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); 857 typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); 858 typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); 859 860 extern PFNGLBINDPROGRAMARBPROC qglBindProgramARB; 861 extern PFNGLDELETEPROGRAMSARBPROC qglDeleteProgramsARB; 862 extern PFNGLGENPROGRAMSARBPROC qglGenProgramsARB; 863 extern PFNGLGETPROGRAMIVARBPROC qglGetProgramivARB; 864 extern PFNGLGETPROGRAMSTRINGARBPROC qglGetProgramStringARB; 865 extern PFNGLGETVERTEXATTRIBDVARBPROC qglGetVertexAttribdvARB; 866 extern PFNGLGETVERTEXATTRIBFVARBPROC qglGetVertexAttribfvARB; 867 extern PFNGLGETVERTEXATTRIBIVARBPROC qglGetVertexAttribivARB; 868 extern PFNGLGETVERTEXATTRIBPOINTERVARBPROC qglGetVertexAttribPointervARB; 869 extern PFNGLISPROGRAMARBPROC qglIsProgramARB; 870 extern PFNGPROGRAMSTRINGARBPROC qglProgramStringARB; 871 extern PFNGLVERTEXATTRIB1DARBPROC qglVertexAttrib1dARB; 872 extern PFNGLVERTEXATTRIB1DVARBPROC qglVertexAttrib1dvARB; 873 extern PFNGLVERTEXATTRIB1FARBPROC qglVertexAttrib1fARB; 874 extern PFNGLVERTEXATTRIB1FVARBPROC qglVertexAttrib1fvARB; 875 extern PFNGLVERTEXATTRIB1SARBPROC qglVertexAttrib1sARB; 876 extern PFNGLVERTEXATTRIB1SVARBPROC qglVertexAttrib1svARB; 877 extern PFNGLVERTEXATTRIB2DARBPROC qglVertexAttrib2dARB; 878 extern PFNGLVERTEXATTRIB2DVARBPROC qglVertexAttrib2dvARB; 879 extern PFNGLVERTEXATTRIB2FARBPROC qglVertexAttrib2fARB; 880 extern PFNGLVERTEXATTRIB2FVARBPROC qglVertexAttrib2fvARB; 881 extern PFNGLVERTEXATTRIB2SARBPROC qglVertexAttrib2sARB; 882 extern PFNGLVERTEXATTRIB2SVARBPROC qglVertexAttrib2svARB; 883 extern PFNGLVERTEXATTRIB3DARBPROC qglVertexAttrib3dARB; 884 extern PFNGLVERTEXATTRIB3DVARBPROC qglVertexAttrib3dvARB; 885 extern PFNGLVERTEXATTRIB3FARBPROC qglVertexAttrib3fARB; 886 extern PFNGLVERTEXATTRIB3FVARBPROC qglVertexAttrib3fvARB; 887 extern PFNGLVERTEXATTRIB3SARBPROC qglVertexAttrib3sARB; 888 extern PFNGLVERTEXATTRIB3SVARBPROC qglVertexAttrib3svARB; 889 extern PFNGLVERTEXATTRIB4DARBPROC qglVertexAttrib4dARB; 890 extern PFNGLVERTEXATTRIB4DVARBPROC qglVertexAttrib4dvARB; 891 extern PFNGLVERTEXATTRIB4FARBPROC qglVertexAttrib4fARB; 892 extern PFNGLVERTEXATTRIB4FVARBPROC qglVertexAttrib4fvARB; 893 extern PFNGLVERTEXATTRIB4SARBPROC qglVertexAttrib4sARB; 894 extern PFNGLVERTEXATTRIB4SVARBPROC qglVertexAttrib4svARB; 895 extern PFNGLVERTEXATTRIB4UBVARBPROC qglVertexAttrib4ubvARB; 896 */ 897 898 //PENTA: VERTEX_PROGRAM 899 900 #ifndef GL_NV_vertex_program 901 /* NV_vertex_program */ 902 #define GL_VERTEX_PROGRAM_NV 0x8620 903 #define GL_VERTEX_STATE_PROGRAM_NV 0x8621 904 #define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 905 #define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 906 #define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 907 #define GL_CURRENT_ATTRIB_NV 0x8626 908 #define GL_PROGRAM_LENGTH_NV 0x8627 909 #define GL_PROGRAM_STRING_NV 0x8628 910 #define GL_MODELVIEW_PROJECTION_NV 0x8629 911 #define GL_IDENTITY_NV 0x862A 912 #define GL_INVERSE_NV 0x862B 913 #define GL_TRANSPOSE_NV 0x862C 914 #define GL_INVERSE_TRANSPOSE_NV 0x862D 915 #define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E 916 #define GL_MAX_TRACK_MATRICES_NV 0x862F 917 #define GL_MATRIX0_NV 0x8630 918 #define GL_MATRIX1_NV 0x8631 919 #define GL_MATRIX2_NV 0x8632 920 #define GL_MATRIX3_NV 0x8633 921 #define GL_MATRIX4_NV 0x8634 922 #define GL_MATRIX5_NV 0x8635 923 #define GL_MATRIX6_NV 0x8636 924 #define GL_MATRIX7_NV 0x8637 925 #define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 926 #define GL_CURRENT_MATRIX_NV 0x8641 927 #define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 928 #define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 929 #define GL_PROGRAM_PARAMETER_NV 0x8644 930 #define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 931 #define GL_PROGRAM_TARGET_NV 0x8646 932 #define GL_PROGRAM_RESIDENT_NV 0x8647 933 #define GL_TRACK_MATRIX_NV 0x8648 934 #define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 935 #define GL_VERTEX_PROGRAM_BINDING_NV 0x864A 936 #define GL_PROGRAM_ERROR_POSITION_NV 0x864B 937 #define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 938 #define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 939 #define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 940 #define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 941 #define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 942 #define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 943 #define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 944 #define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 945 #define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 946 #define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 947 #define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A 948 #define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B 949 #define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C 950 #define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D 951 #define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E 952 #define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F 953 #define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 954 #define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 955 #define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 956 #define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 957 #define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 958 #define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 959 #define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 960 #define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 961 #define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 962 #define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 963 #define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A 964 #define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B 965 #define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C 966 #define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D 967 #define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E 968 #define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F 969 #define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 970 #define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 971 #define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 972 #define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 973 #define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 974 #define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 975 #define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 976 #define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 977 #define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 978 #define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 979 #define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A 980 #define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B 981 #define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C 982 #define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D 983 #define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E 984 #define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F 985 986 /* NV_vertex_program */ 987 typedef GLboolean (APIENTRY * PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); 988 typedef void (APIENTRY * PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); 989 typedef void (APIENTRY * PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); 990 typedef void (APIENTRY * PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); 991 typedef void (APIENTRY * PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); 992 typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); 993 typedef void (APIENTRY * PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); 994 typedef void (APIENTRY * PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); 995 typedef void (APIENTRY * PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); 996 typedef void (APIENTRY * PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); 997 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); 998 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); 999 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); 1000 typedef void (APIENTRY * PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); 1001 typedef GLboolean (APIENTRY * PFNGLISPROGRAMNVPROC) (GLuint id); 1002 typedef void (APIENTRY * PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); 1003 typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 1004 typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); 1005 typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 1006 typedef void (APIENTRY * PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); 1007 typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); 1008 typedef void (APIENTRY * PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); 1009 typedef void (APIENTRY * PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); 1010 typedef void (APIENTRY * PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); 1011 typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); 1012 typedef void (APIENTRY * PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); 1013 typedef void (APIENTRY * PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); 1014 typedef void (APIENTRY * PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); 1015 typedef void (APIENTRY * PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); 1016 typedef void (APIENTRY * PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); 1017 typedef void (APIENTRY * PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); 1018 typedef void (APIENTRY * PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); 1019 typedef void (APIENTRY * PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); 1020 typedef void (APIENTRY * PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); 1021 typedef void (APIENTRY * PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); 1022 typedef void (APIENTRY * PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); 1023 typedef void (APIENTRY * PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); 1024 typedef void (APIENTRY * PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); 1025 typedef void (APIENTRY * PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); 1026 typedef void (APIENTRY * PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); 1027 typedef void (APIENTRY * PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); 1028 typedef void (APIENTRY * PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); 1029 typedef void (APIENTRY * PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); 1030 typedef void (APIENTRY * PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); 1031 typedef void (APIENTRY * PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); 1032 typedef void (APIENTRY * PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); 1033 typedef void (APIENTRY * PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); 1034 typedef void (APIENTRY * PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); 1035 typedef void (APIENTRY * PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); 1036 typedef void (APIENTRY * PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); 1037 typedef void (APIENTRY * PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 1038 typedef void (APIENTRY * PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 1039 typedef void (APIENTRY * PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 1040 typedef void (APIENTRY * PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 1041 typedef void (APIENTRY * PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 1042 typedef void (APIENTRY * PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 1043 typedef void (APIENTRY * PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 1044 typedef void (APIENTRY * PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 1045 typedef void (APIENTRY * PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 1046 typedef void (APIENTRY * PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); 1047 typedef void (APIENTRY * PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); 1048 typedef void (APIENTRY * PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); 1049 typedef void (APIENTRY * PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); 1050 #endif 1051 1052 extern PFNGLAREPROGRAMSRESIDENTNVPROC qglAreProgramsResidentNV ; 1053 extern PFNGLBINDPROGRAMNVPROC qglBindProgramNV ; 1054 extern PFNGLDELETEPROGRAMSNVPROC qglDeleteProgramsNV ; 1055 extern PFNGLEXECUTEPROGRAMNVPROC qglExecuteProgramNV ; 1056 extern PFNGLGENPROGRAMSNVPROC qglGenProgramsNV ; 1057 extern PFNGLGETPROGRAMPARAMETERDVNVPROC qglGetProgramParameterdvNV ; 1058 extern PFNGLGETPROGRAMPARAMETERFVNVPROC qglGetProgramParameterfvNV ; 1059 extern PFNGLGETPROGRAMIVNVPROC qglGetProgramivNV ; 1060 extern PFNGLGETPROGRAMSTRINGNVPROC qglGetProgramStringNV ; 1061 extern PFNGLGETTRACKMATRIXIVNVPROC qglGetTrackMatrixivNV ; 1062 extern PFNGLGETVERTEXATTRIBDVNVPROC qglGetVertexAttribdvNV ; 1063 extern PFNGLGETVERTEXATTRIBFVNVPROC qglGetVertexAttribfvNV ; 1064 extern PFNGLGETVERTEXATTRIBIVNVPROC qglGetVertexAttribivNV ; 1065 extern PFNGLGETVERTEXATTRIBPOINTERVNVPROC qglGetVertexAttribPointervNV ; 1066 extern PFNGLISPROGRAMNVPROC qglIsProgramNV ; 1067 extern PFNGLLOADPROGRAMNVPROC qglLoadProgramNV ; 1068 extern PFNGLPROGRAMPARAMETER4DNVPROC qglProgramParameter4dNV ; 1069 extern PFNGLPROGRAMPARAMETER4DVNVPROC qglProgramParameter4dvNV ; 1070 extern PFNGLPROGRAMPARAMETER4FNVPROC qglProgramParameter4fNV ; 1071 extern PFNGLPROGRAMPARAMETER4FVNVPROC qglProgramParameter4fvNV ; 1072 extern PFNGLPROGRAMPARAMETERS4DVNVPROC qglProgramParameters4dvNV ; 1073 extern PFNGLPROGRAMPARAMETERS4FVNVPROC qglProgramParameters4fvNV ; 1074 extern PFNGLREQUESTRESIDENTPROGRAMSNVPROC qglRequestResidentProgramsNV ; 1075 extern PFNGLTRACKMATRIXNVPROC qglTrackMatrixNV ; 1076 extern PFNGLVERTEXATTRIBPOINTERNVPROC qglVertexAttribPointerNV ; 1077 extern PFNGLVERTEXATTRIB1DNVPROC qglVertexAttrib1dNV ; 1078 extern PFNGLVERTEXATTRIB1DVNVPROC qglVertexAttrib1dvNV ; 1079 extern PFNGLVERTEXATTRIB1FNVPROC qglVertexAttrib1fNV ; 1080 extern PFNGLVERTEXATTRIB1FVNVPROC qglVertexAttrib1fvNV ; 1081 extern PFNGLVERTEXATTRIB1SNVPROC qglVertexAttrib1sNV ; 1082 extern PFNGLVERTEXATTRIB1SVNVPROC qglVertexAttrib1svNV ; 1083 extern PFNGLVERTEXATTRIB2DNVPROC qglVertexAttrib2dNV ; 1084 extern PFNGLVERTEXATTRIB2DVNVPROC qglVertexAttrib2dvNV ; 1085 extern PFNGLVERTEXATTRIB2FNVPROC qglVertexAttrib2fNV ; 1086 extern PFNGLVERTEXATTRIB2FVNVPROC qglVertexAttrib2fvNV ; 1087 extern PFNGLVERTEXATTRIB2SNVPROC qglVertexAttrib2sNV ; 1088 extern PFNGLVERTEXATTRIB2SVNVPROC qglVertexAttrib2svNV ; 1089 extern PFNGLVERTEXATTRIB3DNVPROC qglVertexAttrib3dNV ; 1090 extern PFNGLVERTEXATTRIB3DVNVPROC qglVertexAttrib3dvNV ; 1091 extern PFNGLVERTEXATTRIB3FNVPROC qglVertexAttrib3fNV ; 1092 extern PFNGLVERTEXATTRIB3FVNVPROC qglVertexAttrib3fvNV ; 1093 extern PFNGLVERTEXATTRIB3SNVPROC qglVertexAttrib3sNV ; 1094 extern PFNGLVERTEXATTRIB3SVNVPROC qglVertexAttrib3svNV ; 1095 extern PFNGLVERTEXATTRIB4DNVPROC qglVertexAttrib4dNV ; 1096 extern PFNGLVERTEXATTRIB4DVNVPROC qglVertexAttrib4dvNV ; 1097 extern PFNGLVERTEXATTRIB4FNVPROC qglVertexAttrib4fNV ; 1098 extern PFNGLVERTEXATTRIB4FVNVPROC qglVertexAttrib4fvNV ; 1099 extern PFNGLVERTEXATTRIB4SNVPROC qglVertexAttrib4sNV ; 1100 extern PFNGLVERTEXATTRIB4SVNVPROC qglVertexAttrib4svNV ; 1101 extern PFNGLVERTEXATTRIB4UBVNVPROC qglVertexAttrib4ubvNV ; 1102 extern PFNGLVERTEXATTRIBS1DVNVPROC qglVertexAttribs1dvNV ; 1103 extern PFNGLVERTEXATTRIBS1FVNVPROC qglVertexAttribs1fvNV ; 1104 extern PFNGLVERTEXATTRIBS1SVNVPROC qglVertexAttribs1svNV ; 1105 extern PFNGLVERTEXATTRIBS2DVNVPROC qglVertexAttribs2dvNV ; 1106 extern PFNGLVERTEXATTRIBS2FVNVPROC qglVertexAttribs2fvNV ; 1107 extern PFNGLVERTEXATTRIBS2SVNVPROC qglVertexAttribs2svNV ; 1108 extern PFNGLVERTEXATTRIBS3DVNVPROC qglVertexAttribs3dvNV ; 1109 extern PFNGLVERTEXATTRIBS3FVNVPROC qglVertexAttribs3fvNV ; 1110 extern PFNGLVERTEXATTRIBS3SVNVPROC qglVertexAttribs3svNV ; 1111 extern PFNGLVERTEXATTRIBS4DVNVPROC qglVertexAttribs4dvNV ; 1112 extern PFNGLVERTEXATTRIBS4FVNVPROC qglVertexAttribs4fvNV ; 1113 extern PFNGLVERTEXATTRIBS4SVNVPROC qglVertexAttribs4svNV ; 1114 extern PFNGLVERTEXATTRIBS4UBVNVPROC qglVertexAttribs4ubvNV ; 1115 1116 // <AWE> : MacOS X 10.2: defined in <OpenGL/glext.h> as APPLE extension: 1117 #if defined (__APPLE__) || defined (MACOSX) 1118 1119 // GL_NV_vertex_array_range = GL_APPLE_vertex_array_range 1120 #define GL_VERTEX_ARRAY_RANGE_NV GL_VERTEX_ARRAY_RANGE_APPLE 1121 #define GL_VERTEX_ARRAY_RANGE_LENGTH_NV GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 1122 #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 1123 #define GL_VERTEX_ARRAY_RANGE_POINTER_NV GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 1124 #define GL_VERTEX_ARRAY_RANGE_VALID_NV GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 1125 1126 #else 1127 1128 #define GL_CLAMP_TO_EDGE 0x812F 1129 1130 // GL_NV_vertex_array_range 1131 #define GL_VERTEX_ARRAY_RANGE_NV 0x851D 1132 #define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E 1133 #define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F 1134 #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 1135 #define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 1136 1137 #endif /* !__APPLE__ && !MACOSX */ 1138 1139 // <AWE> There are some diffs with the function parameters. wgl stuff not present with MacOS X. -DC- and SDL 1140 #if defined (__APPLE__) || defined (MACOSX) || defined(SDL) || defined (__glx__) 1141 1142 #ifndef GL_APPLE_vertex_array_range 1143 #define GL_APPLE_vertex_array_range 1 1144 1145 typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, const GLvoid *pointer); 1146 typedef void (APIENTRY * PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei size, const GLvoid *pointer); 1147 1148 #endif 1149 1150 extern PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC qglFlushVertexArrayRangeAPPLE; 1151 extern PFNGLVERTEXARRAYRANGEAPPLEPROC qglVertexArrayRangeAPPLE; 1152 1153 #define qglVertexArrayRangeNV qglVertexArrayRangeAPPLE 1154 1155 #else 1156 1157 typedef void (APIENTRY * PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); 1158 typedef void (APIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei size, const GLvoid *pointer); 1159 typedef void * (APIENTRY * PFNWGLALLOCATEMEMORYNVPROC) (int size, float readfreq, float writefreq, float priority); 1160 typedef void (APIENTRY * PFNWGLFREEMEMORYNVPROC) (void *pointer); 1161 1162 extern PFNGLFLUSHVERTEXARRAYRANGENVPROC qglFlushVertexArrayRangeNV; 1163 extern PFNGLVERTEXARRAYRANGENVPROC glVertexArrayRangeNV; 1164 extern PFNWGLALLOCATEMEMORYNVPROC wglAllocateMemoryNV; 1165 extern PFNWGLFREEMEMORYNVPROC wglFreeMemoryNV; 1166 1167 #endif /* __APPLE__ || MACOSX */ 1168 1169 /* 1170 1171 */ 1172 1173 typedef void (APIENTRY *lpMTexFUNC) (GLenum, GLfloat, GLfloat); 1174 typedef void (APIENTRY *lpSelTexFUNC) (GLenum); 1175 //extern lpMTexFUNC qglMTexCoord2fSGIS; 1176 //extern lpSelTexFUNC qglSelectTextureSGIS; 1177 1178 extern qboolean gl_mtexable; 1179 extern qboolean gl_palettedtex; // <AWE>: true if EXT_paletted_texture present [for GL_Upload8_EXT ()]. 1180 extern qboolean gl_texturefilteranisotropic; // <AWE> true if anisotropic texture filtering available. 1181 1182 typedef enum 1183 { 1184 GENERIC = 0, 1185 GEFORCE, 1186 GEFORCE3, 1187 RADEON, 1188 PARHELIA, 1189 ARB 1190 } qcardtype; 1191 extern qcardtype gl_cardtype; 1192 1193 //extern qboolean gl_nvcombiner; //PENTA: true if nvdida texture shaders are present 1194 //extern qboolean gl_geforce3; 1195 //extern qboolean gl_radeon;//PA: 1196 extern qboolean gl_var; 1197 extern qboolean gl_texcomp; 1198 1199 extern GLfloat gl_textureanisotropylevel; // <AWE> required for anisotropic textures. 1200 1201 void GL_DisableMultitexture(void); 1202 void GL_EnableMultitexture(void); 1203 1204 //PENTA: Stencil shadows 1205 1206 typedef struct screenrect_s { 1207 int coords [4]; 1208 struct screenrect_s *next; 1209 } screenrect_t; 1210 1211 1212 typedef union lightcmd_u { 1213 int asInt; 1214 float asFloat; 1215 vec_t asVec; 1216 void *asVoid; 1217 } lightcmd_t; 1218 1219 1220 typedef struct shadowlight_s { 1221 vec3_t origin; //position of light source 1222 vec3_t baseColor, color; //light color, animated color 1223 float radius; //radius of light source (doesn't light anyting out of that circle) 1224 //so we can "clip" our shadowvolumes against that circle 1225 float brightness; 1226 qboolean visible; //light is "visible" this frame 1227 qboolean isStatic; //light is static and has a precalc volume 1228 qboolean castShadow;//lights casts shadows 1229 qboolean halo; //light has a halo 1230 mleaf_t *leaf; //leaf this light is in 1231 byte vis[MAX_MAP_LEAFS/8];//redone pvs for light, only poly's in nodes 1232 byte entvis[MAX_MAP_LEAFS/8];//original pvs a light origin 1233 msurface_t **visSurf; //the surfaces that should cast shadows for this light (only when static) 1234 int *volumeCmds; //gl commands to draw the shadow volume 1235 float *volumeVerts; 1236 int numVolumeVerts; 1237 lightcmd_t *lightCmds; //gl commands to draw the cap/lighted volumes 1238 int numVisSurf; 1239 int style; 1240 entity_t *owner; 1241 screenrect_t scizz; 1242 int filtercube; //texture object of this light's cubemap filter 1243 vec3_t angles; //angles of the cubemap filter 1244 float rspeed; //rotation speed of cube map; 1245 float cubescale; //scale factor of cube map; 1246 float haloalpha; //alpha of halo 1247 vec3_t oldlightorigin; 1248 } shadowlight_t; 1249 1250 //PENTA: new 1251 typedef struct aliaslightinstant_s { 1252 1253 int lockframe; //number of the frame when it was last locked. 1254 vec3_t lasteorg, lastlorg, lasteangles, lastvorg; 1255 float lastlradius; 1256 entity_t *lastent; 1257 aliashdr_t * lasthdr; 1258 shadowlight_t *lastlight; 1259 vec3_t lightpos, vieworg; //Object space light position 1260 void *lastframeinstant; 1261 1262 //Per light stuff 1263 vec3_t extvertices[MAXALIASVERTS]; //extruded vertices (volumes) 1264 vec3_t tslights[MAXALIASVERTS]; //per vertex tangent space light vector 1265 vec3_t tshalfangles[MAXALIASVERTS]; //per vertex half angle vector 1266 vec3_t colors[MAXALIASVERTS]; //per vertex attenuation for non gf3 cards 1267 qboolean triangleVis[MAXALIASTRIS]; //triangle facingness for lights 1268 1269 int indecies[MAXALIASTRIS*3];//light visibility list 1270 int numtris; 1271 1272 } aliaslightinstant_t; 1273 1274 typedef struct aliasframeinstant_s { 1275 1276 // chain of frameinstant for multiple surfaces 1277 struct aliasframeinstant_s *_next; 1278 1279 int lockframe; //number of the frame when it was last locked. 1280 int updateframe; //number of the fame when it was last recalculated 1281 aliashdr_t *paliashdr; 1282 int lastpose1, lastpose2; 1283 float lastblend; 1284 entity_t *lastent; 1285 qboolean lastshadowonly; 1286 aliashdr_t *lastpaliashdr; 1287 1288 qboolean shadowonly; //We only need the instant for shadow volume drawing 1289 //we use this for ents out of the frustum but e.g. behind the player 1290 //Per entity stuff 1291 vec3_t vertices[MAXALIASVERTS]; //interpolated vertices 1292 vec3_t normals[MAXALIASVERTS]; //interpolated vertex normals 1293 vec3_t tangents[MAXALIASVERTS]; //interpolated vertex tangents 1294 vec3_t binomials[MAXALIASVERTS]; //interpolated vertex binomials 1295 plane_t triplanes[MAXALIASTRIS]; //triangle plane equatations 1296 1297 aliaslightinstant_t *lightinstant; 1298 } aliasframeinstant_t; 1299 1300 typedef struct brushlightinstant_s { 1301 1302 int lockframe; //number of the frame when it was last locked. 1303 vec3_t lasteorg, lastlorg, lasteangles, lastvorg; 1304 float lastlradius; 1305 entity_t *lastent; 1306 shadowlight_t *lastlight; 1307 vec3_t lightpos, vieworg; //Object space light position 1308 qboolean shadowonly, lastshadowonly; 1309 1310 //Per light stuff 1311 vec3_t extvertices[MAXALIASVERTS]; //extruded vertices (volumes) 1312 vec3_t tslights[MAXALIASVERTS]; //per vertex tangent space light vector 1313 vec3_t tshalfangles[MAXALIASVERTS]; //per vertex half angle vector 1314 float atencoords[MAXALIASVERTS][2]; //per vertex attenuation texture coords for non gf3 cards 1315 float colorscales[MAXALIASVERTS]; //per vertex attenuation texture coords for non gf3 cards 1316 qboolean polygonVis[MAXALIASTRIS]; //polygon facingness for lights 1317 qboolean neighbourVis[MAXALIASTRIS]; //polygon facingness for lights 1318 } brushlightinstant_t; 1319 1320 1321 1322 #define MAXSHADOWLIGHTS 256 //Maximum number of (client side) lights in a map 1323 #define MAX_VOLUME_VERTICES 10000 //should be multiple of 4 because this is used as a vertex array 1324 //with GL_QUADS 1325 #define MAXUSEDSHADOWLIGHS 64 //Maximum number of lights that can be used in a single frame 1326 1327 extern int numShadowLights; //number of lights currently on client 1328 extern int numStaticShadowLights; //number of static lights on client 1329 extern int numUsedShadowLights; 1330 extern shadowlight_t shadowlights[MAXSHADOWLIGHTS]; 1331 extern shadowlight_t *usedshadowlights[MAXUSEDSHADOWLIGHS]; 1332 extern shadowlight_t *currentshadowlight; 1333 extern msurface_t *shadowchain; //linked list of polygons that are shadowed 1334 extern float frustumPlanes[6][4]; 1335 1336 extern mmvertex_t *globalVertexTable; 1337 1338 #define MAX_VOLUME_COMMANDS 131072 //Thats 0.5 meg storage for commands, insane 1339 #define MAX_VOLUME_VERTS 87381 //1 Meg storage for vertices 1340 #define MAX_LIGHT_COMMANDS 65536 //0.25 meg for light commands 1341 extern lightcmd_t lightCmdsBuff[MAX_LIGHT_COMMANDS+128]; 1342 1343 //XYZ 1344 extern int numNormals[MAXALIASTRIS]; //Used during tangent space calc 1345 extern char loadname[32]; // for hunk tags 1346 1347 //64 kb should be enough 1348 #define AGP_BUFFER_SIZE 2048*4 1349 extern void *AGP_Buffer; 1350 1351 //view origin in object space 1352 extern vec3_t object_vieworg; 1353 extern vec3_t tsLightVects[MAXALIASTRIS*3]; 1354 extern vec3_t tsHalfAngles[MAXALIASTRIS*3]; 1355 1356 //PENTA: Shadow bsp's 1357 1358 typedef struct svnode_s { 1359 plane_t *splitplane; 1360 struct svnode_s *children[2]; 1361 } svnode_t; 1362 1363 1364 extern int svBsp_NumCutPolys; 1365 extern int svBsp_NumKeptPolys; 1366 extern int svBsp_NumAddedPolys; 1367 extern int svBsp_NumMissedPlanes; 1368 extern int svBsp_NumMissedNodes; 1369 extern int numClearsSaved; 1370 1371 extern int planesusedpool; 1372 extern int nodesusedpool; 1373 1374 extern int aliasCacheRequests, aliasFullCacheHits, aliasPartialCacheHits; // <AWE> added "extern". 1375 extern int brushCacheRequests, brushFullCacheHits, brushPartialCacheHits; // <AWE> added "extern". 1376 1377 //Don't cast shadows with this light 1378 #define PFLAG_NOSHADOW 1 1379 //Draw a halo around the light 1380 #define PFLAG_HALO 2 1381 /* 1382 It seems in c you can only return structs when you prototype them first 1383 well I don't now for sure since I'm actually not c a specialist. 1384 If you know the answer mail me please. 1385 */ 1386 1387 svnode_t *R_CreateEmptyTree(void); 1388 svnode_t *R_AddShadowCaster(svnode_t *node, vec3_t *v, int vnum, msurface_t *surf,int depth); 1389 svnode_t *ExpandVolume(vec3_t *v,int *sign, int vnum, msurface_t *surf); 1390 plane_t *AllocPlane(plane_t *tryplane); 1391 svnode_t *AllocNode(void); 1392 svnode_t *NodeFromEdge(vec3_t *v,int vnum, int edgeindex); 1393 float CalcFov (float fov_x, float width, float height); 1394 1395 /* other c twists (i'm pascal-core and java-used)*/ 1396 // <AWE> added misc function prototypes, fixed functions without return type. 1397 void Mod_LoadMd3Model (model_t *mod, void *buffer); 1398 void R_AddRectList (screenrect_t *rec); 1399 void R_AllocateMirror (msurface_t *surf); 1400 void R_AnimateLight (void); 1401 void R_AutomaticLightPos (void); 1402 void R_CalcSvBsp (entity_t *ent); 1403 qboolean R_CheckRectList (screenrect_t *rec); 1404 void R_ClearBrushInstantCaches (void); 1405 void R_ClearInstantCaches (void); 1406 void R_ClearParticles (void); 1407 void R_ClearDecals(void); 1408 void R_ClearRectList (void); 1409 void R_ConstructShadowVolume (shadowlight_t *light); 1410 qboolean R_ContributeFrame (shadowlight_t *light); 1411 int R_CubeMapLookup (int i); 1412 qboolean R_CullBox (vec3_t mins, vec3_t maxs); 1413 void R_DrawAliasBumped (aliashdr_t *paliashdr, aliasframeinstant_t *instant); 1414 void R_DrawAliasBumpedGF3 (aliashdr_t *paliashdr, aliasframeinstant_t *instant); 1415 void R_DrawAliasBumpedRadeon(aliashdr_t *paliashdr, aliasframeinstant_t *instant);//PA: 1416 void R_DrawBrushBumpedRadeon(entity_t *e);//PA: 1417 void R_DrawAliasBumpedParhelia(aliashdr_t *paliashdr, aliasframeinstant_t *instant);//PA: 1418 void R_DrawBrushBumpedParhelia(entity_t *e);//PA: 1419 void R_DrawAliasBumpedARB(aliashdr_t *paliashdr, aliasframeinstant_t *instant);//PA: 1420 void R_DrawBrushBumpedARB(entity_t *e);//PA: 1421 void R_DrawAliasFrameWV (aliashdr_t *paliashdr, aliasframeinstant_t *instant, qboolean specular); 1422 void R_DrawAliasObjectLight (entity_t *e, void (*AliasGeoSender) (aliashdr_t *paliashdr, 1423 aliasframeinstant_t* instant)); 1424 void R_DrawBrushATT (entity_t *ent); 1425 void R_DrawBrushBumped (entity_t *e); 1426 void R_DrawBrushBumpedGF3 (entity_t *e); 1427 void R_DrawBrushBumpedRadeon (entity_t *e); 1428 void R_DrawBrushBumpedParhelia (entity_t *e); 1429 void R_DrawBrushBumpedARB (entity_t *e); 1430 void R_DrawBrushModel (entity_t *e); 1431 void R_DrawBrushModelVolumes(entity_t *e); 1432 void R_DrawBrushObjectLight (entity_t *e,void (*BrushGeoSender) (entity_t *e)); 1433 void R_DrawBrushWV (entity_t *e, qboolean specular); 1434 void R_DrawGlare (void); 1435 void R_DrawLightEntities (shadowlight_t *l); 1436 void R_DrawParticles (void); 1437 void R_DrawDecals (void); 1438 void R_DrawShadowVolume (shadowlight_t *light); 1439 void R_DrawSkyChain (msurface_t *s); 1440 void R_DrawSpriteModelWV (entity_t *e); 1441 void R_DrawWaterSurfaces (void); 1442 void R_DrawWorldBumped (/* shadowlight_t *l */); 1443 void R_DrawWorldBumpedGEN (void); 1444 void R_DrawWorldBumpedGF (void); 1445 void R_DrawWorldBumpedGF3 (void); 1446 void R_DrawWorldBumpedRadeon (void); 1447 void R_DrawWorldBumpedParhelia (void); 1448 void R_DrawWorldBumpedARB (void); 1449 void R_DrawWorldWV (lightcmd_t *lightCmds, qboolean specular); 1450 qboolean R_FillShadowChain (shadowlight_t *light); 1451 mspriteframe_t *R_GetSpriteFrame (entity_t *currententity); 1452 void R_Glare (void); 1453 void R_InitDrawWorld (void); 1454 void R_InitGlare (void); 1455 void R_InitMirrorChains (void); 1456 void R_InitParticles (void); 1457 void R_InitDecals (void); 1458 void R_InitShadowsForFrame (void); 1459 int R_LightPoint (vec3_t p); 1460 void R_LoadVertexProgram (void); 1461 void R_NewMirrorChains (void); 1462 void R_ParticleGunHits (vec3_t org, int type); 1463 void R_RenderGlow (shadowlight_t *light); 1464 void R_RenderScene (void); 1465 void R_RotateForEntity (entity_t *e); 1466 void R_UnlerpedRotateForEntity (entity_t *e); 1467 void R_SetTotalRect (void); 1468 void R_SetupBrushInstantForLight(entity_t *e); 1469 void R_SetupInstantForLight(entity_t *e); 1470 void R_SetupInstantForFrame(entity_t *e, qboolean forcevis); 1471 void R_SetupInstants (void); 1472 qboolean R_ShouldDrawViewModel (void); 1473 void R_StoreEfrags (efrag_t **ppefrag); 1474 void R_FillEntityLeafs (entity_t *ent); 1475 void R_WorldMultiplyTextures (void); 1476 void R_WorldToObjectMatrix(entity_t *e, matrix_4x4 result); 1477 1478 int EasyTgaLoad (char *filename); 1479 void EmitBothSkyLayers (msurface_t *fa); 1480 void EmitMirrorPolys (msurface_t *fa); 1481 void EmitMirrorWaterPolys (msurface_t *fa); 1482 void EmitSkyPolys (msurface_t *fa); 1483 void EmitWaterPolys (msurface_t *fa); 1484 void InitShaderTex (void); 1485 void LoadColorTGA (FILE *fin, byte *pixels, int *width, int *height, char *fname); 1486 void LoadGrayTGA (FILE *fin,byte *pixels,int *width, int *height, char *fname); 1487 int LoadTextureInPlace(char* filename, int size, byte* mem, int* width, int* height); 1488 void LoadTGA (FILE *fin); 1489 qboolean OverrideFluidTex (char *name); 1490 void ProjectPlane (const vec3_t src,const vec3_t v1,const vec3_t v2,vec3_t dst); 1491 void TraceLine (vec3_t start, vec3_t end, vec3_t impact); 1492 1493 void GL_AddColor (void); 1494 void GL_BuildLightmaps (void); 1495 void GL_DisableColorShader (qboolean specular); 1496 void GL_DrawAlpha (void); 1497 void GL_EnableColorShader (qboolean specular); 1498 void GL_GetOverrideName (char *identifier, char *tail, char *dest); 1499 int GL_LoadCubeMap (int identifier); 1500 void GL_MakeAliasModelDisplayLists (model_t *m, aliashdr_t *hdr); 1501 void R_DrawAliasModel ( float bright); 1502 void GL_ModulateAlphaDrawColor (void); 1503 void GL_SelectTexture (GLenum target); 1504 void GL_Set2D (void); 1505 void GL_SetupCubeMapMatrix (qboolean world); 1506 void GL_SubdivideSurface (msurface_t *fa); 1507 void GL_Upload8_EXT (byte *data, int width, int height, qboolean mipmap, qboolean alpha); 1508 int GL_LoadLuma(char *identifier, qboolean mipmap); 1509 void R_DrawCaustics(void); 1510 int CL_PointContents (vec3_t p); 1511 void V_CalcBlend (void); 1512 1513 #define VERTEX_TEXTURE 1 1514 #define VERTEX_LIGHTMAP 2 1515 1516 int R_GetNextVertexIndex(void); 1517 int R_AllocateVertexInTemp(vec3_t pos, float texture [2], float lightmap[2]); 1518 void R_CopyVerticesToHunk(void); 1519 void R_EnableVertexTable(int fields); 1520 void R_DisableVertexTable(int fields); 1521 1522 qboolean VID_Is8bit (void); 1523 1524 typedef struct mirrorplane_s { 1525 int texture_object; //Object we should render to and use for drawing 1526 int lockframe, updateframe; //Index of frame when it was last updated 1527 mplane_t plane; //Plane equatation of mirror face 1528 msurface_t *chain; //Chain of mirror poly's 1529 float matrix[16]; 1530 } mirrorplane_t; 1531 1532 #define NUM_MIRROR_PLANES 8 1533 extern mirrorplane_t mirrorplanes[NUM_MIRROR_PLANES]; 1534 extern int mirror_contents; 1535 extern int newenvmap; 1536 1537 extern msurface_t *causticschain; 1538 extern int caustics_textures[8]; 1539 extern qboolean busy_caustics; 1540 1541 extern char skybox_name[64]; 1542 extern float skybox_cloudspeed; 1543 extern qboolean skybox_hasclouds; 1544 1545 #include "gl_md3.h" 1546