Annotation of quakeworld/client/glquake.h, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.