亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? r_local.h

?? 著名游戲quake2原代碼最新版本(vc6.0可以編譯的)
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*
Copyright (C) 1997-2001 Id Software, Inc.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  

See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

*/
  
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdarg.h>

#include "../client/ref.h"

#define REF_VERSION     "SOFT 0.01"

// up / down
#define PITCH   0

// left / right
#define YAW             1

// fall over
#define ROLL    2


/*

  skins will be outline flood filled and mip mapped
  pics and sprites with alpha will be outline flood filled
  pic won't be mip mapped

  model skin
  sprite frame
  wall texture
  pic

*/

typedef enum 
{
	it_skin,
	it_sprite,
	it_wall,
	it_pic,
	it_sky
} imagetype_t;

typedef struct image_s
{
	char    name[MAX_QPATH];        // game path, including extension
	imagetype_t     type;
	int             width, height;
	qboolean        transparent;    // true if any 255 pixels in image
	int             registration_sequence;  // 0 = free
	byte		*pixels[4];				// mip levels
} image_t;


//===================================================================

typedef unsigned char pixel_t;

typedef struct vrect_s
{
	int                             x,y,width,height;
	struct vrect_s  *pnext;
} vrect_t;

typedef struct
{
	pixel_t                 *buffer;                // invisible buffer
	pixel_t                 *colormap;              // 256 * VID_GRADES size
	pixel_t                 *alphamap;              // 256 * 256 translucency map
	int                             rowbytes;               // may be > width if displayed in a window
									// can be negative for stupid dibs
	int						width;          
	int						height;
} viddef_t;

typedef enum
{
	rserr_ok,

	rserr_invalid_fullscreen,
	rserr_invalid_mode,

	rserr_unknown
} rserr_t;

extern viddef_t vid;

// !!! if this is changed, it must be changed in asm_draw.h too !!!
typedef struct
{
	vrect_t         vrect;                          // subwindow in video for refresh
									// FIXME: not need vrect next field here?
	vrect_t         aliasvrect;                     // scaled Alias version
	int                     vrectright, vrectbottom;        // right & bottom screen coords
	int                     aliasvrectright, aliasvrectbottom;      // scaled Alias versions
	float           vrectrightedge;                 // rightmost right edge we care about,
										//  for use in edge list
	float           fvrectx, fvrecty;               // for floating-point compares
	float           fvrectx_adj, fvrecty_adj; // left and top edges, for clamping
	int                     vrect_x_adj_shift20;    // (vrect.x + 0.5 - epsilon) << 20
	int                     vrectright_adj_shift20; // (vrectright + 0.5 - epsilon) << 20
	float           fvrectright_adj, fvrectbottom_adj;
										// right and bottom edges, for clamping
	float           fvrectright;                    // rightmost edge, for Alias clamping
	float           fvrectbottom;                   // bottommost edge, for Alias clamping
	float           horizontalFieldOfView;  // at Z = 1.0, this many X is visible 
										// 2.0 = 90 degrees
	float           xOrigin;                        // should probably always be 0.5
	float           yOrigin;                        // between be around 0.3 to 0.5

	vec3_t          vieworg;
	vec3_t          viewangles;
	
	int                     ambientlight;
} oldrefdef_t;

extern oldrefdef_t      r_refdef;

#include "r_model.h"

#define CACHE_SIZE      32

/*
====================================================

  CONSTANTS

====================================================
*/

#define VID_CBITS       6
#define VID_GRADES      (1 << VID_CBITS)


// r_shared.h: general refresh-related stuff shared between the refresh and the
// driver


#define MAXVERTS        64              // max points in a surface polygon
#define MAXWORKINGVERTS (MAXVERTS+4)    // max points in an intermediate
										//  polygon (while processing)
// !!! if this is changed, it must be changed in d_ifacea.h too !!!
#define MAXHEIGHT       1200
#define MAXWIDTH        1600

#define INFINITE_DISTANCE       0x10000         // distance that's always guaranteed to
										//  be farther away than anything in
										//  the scene


// d_iface.h: interface header file for rasterization driver modules

#define WARP_WIDTH              320
#define WARP_HEIGHT             240

#define MAX_LBM_HEIGHT  480


#define PARTICLE_Z_CLIP 8.0

// !!! must be kept the same as in quakeasm.h !!!
#define TRANSPARENT_COLOR       0xFF


// !!! if this is changed, it must be changed in d_ifacea.h too !!!
#define TURB_TEX_SIZE   64              // base turbulent texture size

// !!! if this is changed, it must be changed in d_ifacea.h too !!!
#define CYCLE                   128             // turbulent cycle size

#define SCANBUFFERPAD           0x1000

#define DS_SPAN_LIST_END        -128

#define NUMSTACKEDGES           2000
#define MINEDGES                        NUMSTACKEDGES
#define NUMSTACKSURFACES        1000
#define MINSURFACES                     NUMSTACKSURFACES
#define MAXSPANS                        3000

// flags in finalvert_t.flags
#define ALIAS_LEFT_CLIP                         0x0001
#define ALIAS_TOP_CLIP                          0x0002
#define ALIAS_RIGHT_CLIP                        0x0004
#define ALIAS_BOTTOM_CLIP                       0x0008
#define ALIAS_Z_CLIP                            0x0010
#define ALIAS_XY_CLIP_MASK                      0x000F

#define SURFCACHE_SIZE_AT_320X240    1024*768

#define BMODEL_FULLY_CLIPPED    0x10 // value returned by R_BmodelCheckBBox ()
									 //  if bbox is trivially rejected

#define XCENTERING      (1.0 / 2.0)
#define YCENTERING      (1.0 / 2.0)

#define CLIP_EPSILON            0.001

#define BACKFACE_EPSILON        0.01

// !!! if this is changed, it must be changed in asm_draw.h too !!!
#define NEAR_CLIP       0.01


#define MAXALIASVERTS           2000    // TODO: tune this
#define ALIAS_Z_CLIP_PLANE      4

// turbulence stuff

#define AMP             8*0x10000
#define AMP2    3
#define SPEED   20


/*
====================================================

TYPES

====================================================
*/

typedef struct
{
	float   u, v;
	float   s, t;
	float   zi;
} emitpoint_t;

/*
** if you change this structure be sure to change the #defines
** listed after it!
*/
#define SMALL_FINALVERT 0

#if SMALL_FINALVERT

typedef struct finalvert_s {
	short           u, v, s, t;
	int             l;
	int             zi;
	int             flags;
	float   xyz[3];         // eye space
} finalvert_t;

#define FINALVERT_V0     0
#define FINALVERT_V1     2
#define FINALVERT_V2     4
#define FINALVERT_V3     6
#define FINALVERT_V4     8
#define FINALVERT_V5    12
#define FINALVERT_FLAGS 16
#define FINALVERT_X     20
#define FINALVERT_Y     24
#define FINALVERT_Z     28
#define FINALVERT_SIZE  32

#else

typedef struct finalvert_s {
	int             u, v, s, t;
	int             l;
	int             zi;
	int             flags;
	float   xyz[3];         // eye space
} finalvert_t;

#define FINALVERT_V0     0
#define FINALVERT_V1     4
#define FINALVERT_V2     8
#define FINALVERT_V3    12
#define FINALVERT_V4    16
#define FINALVERT_V5    20
#define FINALVERT_FLAGS 24
#define FINALVERT_X     28
#define FINALVERT_Y     32
#define FINALVERT_Z     36
#define FINALVERT_SIZE  40

#endif

typedef struct
{
	void                            *pskin;
	int                                     pskindesc;
	int                                     skinwidth;
	int                                     skinheight;
	dtriangle_t                     *ptriangles;
	finalvert_t                     *pfinalverts;
	int                                     numtriangles;
	int                                     drawtype;
	int                                     seamfixupX16;
	qboolean                        do_vis_thresh;
	int                                     vis_thresh;
} affinetridesc_t;

typedef struct
{
	byte            *surfdat;       // destination for generated surface
	int                     rowbytes;       // destination logical width in bytes
	msurface_t      *surf;          // description for surface to generate
	fixed8_t        lightadj[MAXLIGHTMAPS];
							// adjust for lightmap levels for dynamic lighting
	image_t			*image;
	int                     surfmip;        // mipmapped ratio of surface texels / world pixels
	int                     surfwidth;      // in mipmapped texels
	int                     surfheight;     // in mipmapped texels
} drawsurf_t;



typedef struct {
	int                     ambientlight;
	int                     shadelight;
	float           *plightvec;
} alight_t;

// clipped bmodel edges

typedef struct bedge_s
{
	mvertex_t               *v[2];
	struct bedge_s  *pnext;
} bedge_t;


// !!! if this is changed, it must be changed in asm_draw.h too !!!
typedef struct clipplane_s
{
	vec3_t          normal;
	float           dist;
	struct          clipplane_s     *next;
	byte            leftedge;
	byte            rightedge;
	byte            reserved[2];
} clipplane_t;


typedef struct surfcache_s
{
	struct surfcache_s      *next;
	struct surfcache_s      **owner;                // NULL is an empty chunk of memory
	int                                     lightadj[MAXLIGHTMAPS]; // checked for strobe flush
	int                                     dlight;
	int                                     size;           // including header
	unsigned                        width;
	unsigned                        height;         // DEBUG only needed for debug
	float                           mipscale;
	image_t							*image;
	byte                            data[4];        // width*height elements
} surfcache_t;

// !!! if this is changed, it must be changed in asm_draw.h too !!!
typedef struct espan_s
{
	int                             u, v, count;
	struct espan_s  *pnext;
} espan_t;

// used by the polygon drawer (R_POLY.C) and sprite setup code (R_SPRITE.C)
typedef struct
{
	int                     nump;
	emitpoint_t     *pverts;
	byte            *pixels;                        // image
	int                     pixel_width;            // image width
	int         pixel_height;       // image height
	vec3_t          vup, vright, vpn;       // in worldspace, for plane eq
	float       dist;
	float       s_offset, t_offset;
	float       viewer_position[3];
	void       (*drawspanlet)( void );
	int         stipple_parity;
} polydesc_t;

// FIXME: compress, make a union if that will help
// insubmodel is only 1, flags is fewer than 32, spanstate could be a byte
typedef struct surf_s
{
	struct surf_s   *next;                  // active surface stack in r_edge.c
	struct surf_s   *prev;                  // used in r_edge.c for active surf stack
	struct espan_s  *spans;                 // pointer to linked list of spans to draw
	int                     key;                            // sorting key (BSP order)
	int                     last_u;                         // set during tracing
	int                     spanstate;                      // 0 = not in span
									// 1 = in span
									// -1 = in inverted span (end before
									//  start)
	int                     flags;                          // currentface flags
	msurface_t      *msurf;
	entity_t        *entity;
	float           nearzi;                         // nearest 1/z on surface, for mipmapping
	qboolean        insubmodel;
	float           d_ziorigin, d_zistepu, d_zistepv;

	int                     pad[2];                         // to 64 bytes
} surf_t;

// !!! if this is changed, it must be changed in asm_draw.h too !!!
typedef struct edge_s
{
	fixed16_t               u;
	fixed16_t               u_step;
	struct edge_s   *prev, *next;
	unsigned short  surfs[2];
	struct edge_s   *nextremove;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清视频一区二区| 不卡高清视频专区| 亚洲欧洲美洲综合色网| 欧美日韩电影在线| av欧美精品.com| 美女视频黄 久久| 亚洲视频你懂的| 久久日一线二线三线suv| 欧美性色aⅴ视频一区日韩精品| 99久久久久免费精品国产 | 亚洲成人自拍网| 91精品国产品国语在线不卡| 国产91丝袜在线播放九色| 一区二区免费视频| 欧美精品一区二区三区一线天视频 | 欧美绝品在线观看成人午夜影视| 国产日韩精品一区二区浪潮av| 日韩福利视频导航| 久久久久久久久99精品| 欧美综合一区二区| 国产成人高清视频| 午夜视频在线观看一区二区 | 亚洲一区在线视频观看| 久久亚洲二区三区| 91丨porny丨户外露出| 精品一区二区免费在线观看| 亚洲人午夜精品天堂一二香蕉| 国产99久久久国产精品潘金网站| 欧美美女一区二区在线观看| 国产精品一级黄| 美女看a上一区| 一区二区三区四区视频精品免费| 一本色道**综合亚洲精品蜜桃冫| 亚洲免费在线观看| 国产偷v国产偷v亚洲高清 | 国产精品一区二区三区乱码 | 欧美一区二区日韩| 99国产精品国产精品久久| 另类中文字幕网| 亚洲成国产人片在线观看| 一色桃子久久精品亚洲| 欧美一级艳片视频免费观看| 91丨九色丨尤物| 成人激情开心网| 国产99久久久国产精品潘金网站| 国产精品色婷婷| 欧美一区二区免费观在线| 91玉足脚交白嫩脚丫在线播放| 国产精品嫩草久久久久| 久久视频一区二区| 久久伊人中文字幕| 日韩三级免费观看| 日韩视频不卡中文| 91精品国产综合久久久久久| 色哟哟精品一区| 色婷婷综合五月| 日本韩国欧美一区二区三区| 成人永久看片免费视频天堂| 国产99久久久国产精品潘金| 裸体健美xxxx欧美裸体表演| 日本伊人午夜精品| 丝瓜av网站精品一区二区| 亚洲永久免费av| 亚洲综合精品久久| 亚洲少妇最新在线视频| 中文字幕在线观看不卡视频| 久久久久青草大香线综合精品| av福利精品导航| 91网站在线播放| 色婷婷久久久亚洲一区二区三区 | 欧美挠脚心视频网站| 欧美精品v日韩精品v韩国精品v| 另类成人小视频在线| 国内精品视频666| 国产成人午夜精品5599| 成人美女在线观看| 色综合色狠狠天天综合色| 色一情一伦一子一伦一区| 久久亚洲捆绑美女| 中文字幕高清不卡| 亚洲女与黑人做爰| 一区二区三区在线免费| 亚洲第一电影网| 麻豆精品视频在线观看免费| 国产综合久久久久影院| 国产69精品久久久久777| 99久久精品国产毛片| 在线视频亚洲一区| 欧美疯狂做受xxxx富婆| 日韩精品自拍偷拍| 国产欧美一区二区精品性色超碰| 99久久伊人久久99| 欧美在线视频不卡| 欧美精品一级二级| 久久久久久免费毛片精品| 久久亚洲影视婷婷| 亚洲男同性恋视频| 日日夜夜一区二区| 国产成人亚洲综合a∨猫咪| 色综合激情久久| 欧美α欧美αv大片| 国产精品久久久久久妇女6080| 日韩精品在线一区二区| 国产精品五月天| 婷婷久久综合九色国产成人| 国产乱子伦视频一区二区三区| 午夜久久电影网| 国产福利精品一区| 欧美精品日日鲁夜夜添| 国产日本欧洲亚洲| 欧美96一区二区免费视频| 不卡电影一区二区三区| 欧美电影精品一区二区| 国产精品欧美精品| 免费人成黄页网站在线一区二区| 亚洲一级不卡视频| 国产最新精品精品你懂的| 色中色一区二区| 久久免费国产精品 | 久久女同性恋中文字幕| 亚洲综合av网| 国产福利一区二区三区视频在线| 韩国精品主播一区二区在线观看| 免费在线成人网| 在线看国产一区二区| 2020国产精品自拍| 亚洲精品国产视频| 国产成人精品影视| 欧美精品一区二区在线观看| 天天操天天综合网| 大白屁股一区二区视频| 亚洲精品日日夜夜| 成人综合婷婷国产精品久久| 亚洲伦理在线免费看| 波多野结衣在线一区| 欧美无砖砖区免费| 亚洲va韩国va欧美va精品| 欧美午夜精品一区二区蜜桃| 亚洲精品亚洲人成人网在线播放| 欧美日韩国产一级片| 亚洲女人小视频在线观看| proumb性欧美在线观看| 国产丝袜美腿一区二区三区| 欧美色中文字幕| 亚洲特级片在线| 成人性生交大片免费看中文| 亚洲欧美色图小说| 成人精品免费视频| 国产嫩草影院久久久久| 国产精品一品视频| 久久精品人人做人人爽人人| 久久99精品国产.久久久久| 欧美电影精品一区二区| 麻豆精品视频在线| 日韩欧美一级精品久久| 日韩av午夜在线观看| 欧美一区二区女人| 麻豆精品在线播放| 日韩欧美国产小视频| 精品一区二区三区香蕉蜜桃| 精品国产3级a| 国产一区999| 亚洲国产成人在线| 97se亚洲国产综合自在线| 国产精品久久久久影院老司| 91免费看片在线观看| 一区二区三区国产| 一本大道综合伊人精品热热 | www.视频一区| 中文乱码免费一区二区| 99re这里都是精品| 一区二区三区四区亚洲| 91精品啪在线观看国产60岁| 蜜臀av亚洲一区中文字幕| 久久久久久亚洲综合影院红桃 | 日韩亚洲欧美一区| 亚洲综合图片区| 欧美另类变人与禽xxxxx| 日韩精品电影在线| 精品国精品国产尤物美女| 狠狠狠色丁香婷婷综合激情| 欧美一级欧美一级在线播放| 麻豆传媒一区二区三区| 中文字幕欧美日韩一区| 91在线观看免费视频| 亚洲成人精品一区二区| 久久综合九色综合97婷婷女人| 一区二区三区在线视频免费| 91精品国产aⅴ一区二区| 国产一区二区三区美女| 亚洲人成7777| 日韩一区二区电影在线| 丁香婷婷深情五月亚洲| 亚洲图片一区二区| 日韩精品一区二区三区在线观看| 亚洲影视在线播放| 久久影院午夜论| 在线一区二区三区做爰视频网站| 国产欧美日韩在线看| 色网站国产精品|