|
|
1.1 ! root 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: #include <GL/gl.h> ! 31: #include <GL/glu.h> ! 32: ! 33: void GL_BeginRendering (int *x, int *y, int *width, int *height); ! 34: void GL_EndRendering (void); ! 35: ! 36: ! 37: // Function prototypes for the Texture Object Extension routines ! 38: typedef GLboolean (APIENTRY *ARETEXRESFUNCPTR)(GLsizei, const GLuint *, ! 39: const GLboolean *); ! 40: typedef void (APIENTRY *BINDTEXFUNCPTR)(GLenum, GLuint); ! 41: typedef void (APIENTRY *DELTEXFUNCPTR)(GLsizei, const GLuint *); ! 42: typedef void (APIENTRY *GENTEXFUNCPTR)(GLsizei, GLuint *); ! 43: typedef GLboolean (APIENTRY *ISTEXFUNCPTR)(GLuint); ! 44: typedef void (APIENTRY *PRIORTEXFUNCPTR)(GLsizei, const GLuint *, ! 45: const GLclampf *); ! 46: typedef void (APIENTRY *TEXSUBIMAGEPTR)(int, int, int, int, int, int, int, int, void *); ! 47: ! 48: extern BINDTEXFUNCPTR bindTexFunc; ! 49: extern DELTEXFUNCPTR delTexFunc; ! 50: extern TEXSUBIMAGEPTR TexSubImage2DFunc; ! 51: ! 52: extern int texture_extension_number; ! 53: extern int texture_mode; ! 54: ! 55: extern float gldepthmin, gldepthmax; ! 56: ! 57: void GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean alpha); ! 58: void GL_Upload8 (byte *data, int width, int height, qboolean mipmap, qboolean alpha); ! 59: void GL_Upload8_EXT (byte *data, int width, int height, qboolean mipmap, qboolean alpha); ! 60: int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolean mipmap, qboolean alpha); ! 61: int GL_FindTexture (char *identifier); ! 62: ! 63: typedef struct ! 64: { ! 65: float x, y, z; ! 66: float s, t; ! 67: float r, g, b; ! 68: } glvert_t; ! 69: ! 70: extern glvert_t glv; ! 71: ! 72: extern int glx, gly, glwidth, glheight; ! 73: ! 74: #ifdef _WIN32 ! 75: extern PROC glArrayElementEXT; ! 76: extern PROC glColorPointerEXT; ! 77: extern PROC glTexturePointerEXT; ! 78: extern PROC glVertexPointerEXT; ! 79: #endif ! 80: ! 81: // r_local.h -- private refresh defs ! 82: ! 83: #define ALIAS_BASE_SIZE_RATIO (1.0 / 11.0) ! 84: // normalizing factor so player model works out to about ! 85: // 1 pixel per triangle ! 86: #define MAX_LBM_HEIGHT 480 ! 87: ! 88: #define TILE_SIZE 128 // size of textures generated by R_GenTiledSurf ! 89: ! 90: #define SKYSHIFT 7 ! 91: #define SKYSIZE (1 << SKYSHIFT) ! 92: #define SKYMASK (SKYSIZE - 1) ! 93: ! 94: #define BACKFACE_EPSILON 0.01 ! 95: ! 96: ! 97: void R_TimeRefresh_f (void); ! 98: void R_ReadPointFile_f (void); ! 99: texture_t *R_TextureAnimation (texture_t *base); ! 100: ! 101: typedef struct surfcache_s ! 102: { ! 103: struct surfcache_s *next; ! 104: struct surfcache_s **owner; // NULL is an empty chunk of memory ! 105: int lightadj[MAXLIGHTMAPS]; // checked for strobe flush ! 106: int dlight; ! 107: int size; // including header ! 108: unsigned width; ! 109: unsigned height; // DEBUG only needed for debug ! 110: float mipscale; ! 111: struct texture_s *texture; // checked for animating textures ! 112: byte data[4]; // width*height elements ! 113: } surfcache_t; ! 114: ! 115: ! 116: typedef struct ! 117: { ! 118: pixel_t *surfdat; // destination for generated surface ! 119: int rowbytes; // destination logical width in bytes ! 120: msurface_t *surf; // description for surface to generate ! 121: fixed8_t lightadj[MAXLIGHTMAPS]; ! 122: // adjust for lightmap levels for dynamic lighting ! 123: texture_t *texture; // corrected for animating textures ! 124: int surfmip; // mipmapped ratio of surface texels / world pixels ! 125: int surfwidth; // in mipmapped texels ! 126: int surfheight; // in mipmapped texels ! 127: } drawsurf_t; ! 128: ! 129: ! 130: typedef enum { ! 131: pt_static, pt_grav, pt_slowgrav, pt_fire, pt_explode, pt_explode2, pt_blob, pt_blob2 ! 132: } ptype_t; ! 133: ! 134: // !!! if this is changed, it must be changed in d_ifacea.h too !!! ! 135: typedef struct particle_s ! 136: { ! 137: // driver-usable fields ! 138: vec3_t org; ! 139: float color; ! 140: // drivers never touch the following fields ! 141: struct particle_s *next; ! 142: vec3_t vel; ! 143: float ramp; ! 144: float die; ! 145: ptype_t type; ! 146: } particle_t; ! 147: ! 148: ! 149: //==================================================== ! 150: ! 151: ! 152: extern entity_t r_worldentity; ! 153: extern qboolean r_cache_thrash; // compatability ! 154: extern vec3_t modelorg, r_entorigin; ! 155: extern entity_t *currententity; ! 156: extern int r_visframecount; // ??? what difs? ! 157: extern int r_framecount; ! 158: extern mplane_t frustum[4]; ! 159: extern int c_brush_polys, c_alias_polys; ! 160: ! 161: ! 162: // ! 163: // view origin ! 164: // ! 165: extern vec3_t vup; ! 166: extern vec3_t vpn; ! 167: extern vec3_t vright; ! 168: extern vec3_t r_origin; ! 169: ! 170: // ! 171: // screen size info ! 172: // ! 173: extern refdef_t r_refdef; ! 174: extern mleaf_t *r_viewleaf, *r_oldviewleaf; ! 175: extern texture_t *r_notexture_mip; ! 176: extern int d_lightstylevalue[256]; // 8.8 fraction of base light value ! 177: ! 178: extern qboolean envmap; ! 179: extern int currenttexture; ! 180: extern int cnttextures[2]; ! 181: extern int particletexture; ! 182: extern int netgraphtexture; // netgraph texture ! 183: extern int playertextures; ! 184: ! 185: extern int skytexturenum; // index in cl.loadmodel, not gl texture object ! 186: ! 187: extern cvar_t r_norefresh; ! 188: extern cvar_t r_drawentities; ! 189: extern cvar_t r_drawworld; ! 190: extern cvar_t r_drawviewmodel; ! 191: extern cvar_t r_speeds; ! 192: extern cvar_t r_waterwarp; ! 193: extern cvar_t r_fullbright; ! 194: extern cvar_t r_lightmap; ! 195: extern cvar_t r_shadows; ! 196: extern cvar_t r_mirroralpha; ! 197: extern cvar_t r_wateralpha; ! 198: extern cvar_t r_dynamic; ! 199: extern cvar_t r_novis; ! 200: extern cvar_t r_netgraph; ! 201: ! 202: extern cvar_t gl_clear; ! 203: extern cvar_t gl_cull; ! 204: extern cvar_t gl_poly; ! 205: extern cvar_t gl_texsort; ! 206: extern cvar_t gl_smoothmodels; ! 207: extern cvar_t gl_affinemodels; ! 208: extern cvar_t gl_polyblend; ! 209: extern cvar_t gl_keeptjunctions; ! 210: extern cvar_t gl_reporttjunctions; ! 211: extern cvar_t gl_flashblend; ! 212: extern cvar_t gl_nocolors; ! 213: extern cvar_t gl_finish; ! 214: ! 215: extern int gl_lightmap_format; ! 216: extern int gl_solid_format; ! 217: extern int gl_alpha_format; ! 218: ! 219: extern cvar_t gl_max_size; ! 220: extern cvar_t gl_playermip; ! 221: ! 222: extern int mirrortexturenum; // quake texturenum, not gltexturenum ! 223: extern qboolean mirror; ! 224: extern mplane_t *mirror_plane; ! 225: ! 226: extern float r_world_matrix[16]; ! 227: ! 228: extern const char *gl_vendor; ! 229: extern const char *gl_renderer; ! 230: extern const char *gl_version; ! 231: extern const char *gl_extensions; ! 232: ! 233: void R_TranslatePlayerSkin (int playernum); ! 234: void GL_Bind (int texnum); ! 235: ! 236: // Multitexture ! 237: #define TEXTURE0_SGIS 0x835E ! 238: #define TEXTURE1_SGIS 0x835F ! 239: ! 240: #ifdef _WIN32 ! 241: typedef void (APIENTRY *lpMTexFUNC) (GLenum, GLfloat, GLfloat); ! 242: typedef void (APIENTRY *lpSelTexFUNC) (GLenum); ! 243: extern lpMTexFUNC qglMTexCoord2fSGIS; ! 244: extern lpSelTexFUNC qglSelectTextureSGIS; ! 245: #endif ! 246: ! 247: extern qboolean gl_mtexable; ! 248: ! 249: void GL_DisableMultitexture(void); ! 250: void GL_EnableMultitexture(void); ! 251: ! 252: // ! 253: // gl_warp.c ! 254: // ! 255: void GL_SubdivideSurface (msurface_t *fa); ! 256: void EmitBothSkyLayers (msurface_t *fa); ! 257: void EmitWaterPolys (msurface_t *fa); ! 258: void EmitSkyPolys (msurface_t *fa); ! 259: void R_DrawSkyChain (msurface_t *s); ! 260: ! 261: // ! 262: // gl_draw.c ! 263: // ! 264: int GL_LoadPicTexture (qpic_t *pic); ! 265: void GL_Set2D (void); ! 266: ! 267: // ! 268: // gl_rmain.c ! 269: // ! 270: qboolean R_CullBox (vec3_t mins, vec3_t maxs); ! 271: void R_RotateForEntity (entity_t *e); ! 272: ! 273: // ! 274: // gl_rlight.c ! 275: // ! 276: void R_MarkLights (dlight_t *light, int bit, mnode_t *node); ! 277: void R_AnimateLight (void); ! 278: void R_RenderDlights (void); ! 279: int R_LightPoint (vec3_t p); ! 280: ! 281: // ! 282: // gl_refrag.c ! 283: // ! 284: void R_StoreEfrags (efrag_t **ppefrag); ! 285: ! 286: // ! 287: // gl_mesh.c ! 288: // ! 289: void GL_MakeAliasModelDisplayLists (model_t *m, aliashdr_t *hdr); ! 290: ! 291: // ! 292: // gl_rsurf.c ! 293: // ! 294: void R_DrawBrushModel (entity_t *e); ! 295: void R_DrawWorld (void); ! 296: void GL_BuildLightmaps (void); ! 297: ! 298: // ! 299: // gl_ngraph.c ! 300: // ! 301: void R_NetGraph (void); ! 302:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.