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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? r_polyse.c

?? 著名游戲quake2原代碼最新版本(vc6.0可以編譯的)
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
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.

*/
// d_polyset.c: routines for drawing sets of polygons sharing the same
// texture (used for Alias models)

#include "r_local.h"

int	rand1k[] = {
#include "rand1k.h"
};

#define MASK_1K	0x3FF

int		rand1k_index = 0;

// TODO: put in span spilling to shrink list size
// !!! if this is changed, it must be changed in d_polysa.s too !!!
#define DPS_MAXSPANS			MAXHEIGHT+1	
									// 1 extra for spanpackage that marks end

// !!! if this is changed, it must be changed in asm_draw.h too !!!
typedef struct {
	void			*pdest;
	short			*pz;
	int				count;
	byte			*ptex;
	int				sfrac, tfrac, light, zi;
} spanpackage_t;

typedef struct {
	int		isflattop;
	int		numleftedges;
	int		*pleftedgevert0;
	int		*pleftedgevert1;
	int		*pleftedgevert2;
	int		numrightedges;
	int		*prightedgevert0;
	int		*prightedgevert1;
	int		*prightedgevert2;
} edgetable;

aliastriangleparms_t aliastriangleparms;

int	r_p0[6], r_p1[6], r_p2[6];

byte		*d_pcolormap;

int			d_aflatcolor;
int			d_xdenom;

edgetable	*pedgetable;

edgetable	edgetables[12] = {
	{0, 1, r_p0, r_p2, NULL, 2, r_p0, r_p1, r_p2 },
	{0, 2, r_p1, r_p0, r_p2,   1, r_p1, r_p2, NULL},
	{1, 1, r_p0, r_p2, NULL, 1, r_p1, r_p2, NULL},
	{0, 1, r_p1, r_p0, NULL, 2, r_p1, r_p2, r_p0 },
	{0, 2, r_p0, r_p2, r_p1,   1, r_p0, r_p1, NULL},
	{0, 1, r_p2, r_p1, NULL, 1, r_p2, r_p0, NULL},
	{0, 1, r_p2, r_p1, NULL, 2, r_p2, r_p0, r_p1 },
	{0, 2, r_p2, r_p1, r_p0,   1, r_p2, r_p0, NULL},
	{0, 1, r_p1, r_p0, NULL, 1, r_p1, r_p2, NULL},
	{1, 1, r_p2, r_p1, NULL, 1, r_p0, r_p1, NULL},
	{1, 1, r_p1, r_p0, NULL, 1, r_p2, r_p0, NULL},
	{0, 1, r_p0, r_p2, NULL, 1, r_p0, r_p1, NULL},
};

// FIXME: some of these can become statics
int				a_sstepxfrac, a_tstepxfrac, r_lstepx, a_ststepxwhole;
int				r_sstepx, r_tstepx, r_lstepy, r_sstepy, r_tstepy;
int				r_zistepx, r_zistepy;
int				d_aspancount, d_countextrastep;

spanpackage_t			*a_spans;
spanpackage_t			*d_pedgespanpackage;
static int				ystart;
byte					*d_pdest, *d_ptex;
short					*d_pz;
int						d_sfrac, d_tfrac, d_light, d_zi;
int						d_ptexextrastep, d_sfracextrastep;
int						d_tfracextrastep, d_lightextrastep, d_pdestextrastep;
int						d_lightbasestep, d_pdestbasestep, d_ptexbasestep;
int						d_sfracbasestep, d_tfracbasestep;
int						d_ziextrastep, d_zibasestep;
int						d_pzextrastep, d_pzbasestep;

typedef struct {
	int		quotient;
	int		remainder;
} adivtab_t;

static adivtab_t	adivtab[32*32] = {
#include "adivtab.h"
};

byte	*skintable[MAX_LBM_HEIGHT];
int		skinwidth;
byte	*skinstart;

void	(*d_pdrawspans)(spanpackage_t *pspanpackage);

void R_PolysetDrawSpans8_33 (spanpackage_t *pspanpackage);
void R_PolysetDrawSpans8_66 (spanpackage_t *pspanpackage);
void R_PolysetDrawSpans8_Opaque (spanpackage_t *pspanpackage);

void R_PolysetDrawThreshSpans8 (spanpackage_t *pspanpackage);
void R_PolysetCalcGradients (int skinwidth);
void R_DrawNonSubdiv (void);
void R_PolysetSetEdgeTable (void);
void R_RasterizeAliasPolySmooth (void);
void R_PolysetScanLeftEdge(int height);
void R_PolysetScanLeftEdge_C(int height);

// ======================
// PGM
// 64 65 66 67 68 69 70 71   72 73 74 75 76 77 78 79
byte iractive = 0;
byte irtable[256] = { 79, 78, 77, 76, 75, 74, 73, 72,		// black/white
					  71, 70, 69, 68, 67, 66, 65, 64,
					  64, 65, 66, 67, 68, 69, 70, 71,		// dark taupe
					  72, 73, 74, 75, 76, 77, 78, 79,

					  64, 65, 66, 67, 68, 69, 70, 71,		// slate grey
					  72, 73, 74, 75, 76, 77, 78, 79,
					  208, 208, 208, 208, 208, 208, 208, 208,	// unused?'
					  64, 66, 68, 70, 72, 74, 76, 78,		// dark yellow
					  
					  64, 65, 66, 67, 68, 69, 70, 71,		// dark red
					  72, 73, 74, 75, 76, 77, 78, 79,
					  64, 65, 66, 67, 68, 69, 70, 71,		// grey/tan
					  72, 73, 74, 75, 76, 77, 78, 79,

					  64, 66, 68, 70, 72, 74, 76, 78,		// chocolate
					  68, 67, 66, 65, 64, 65, 66, 67,		// mauve / teal
					  68, 69, 70, 71, 72, 73, 74, 75,
					  76, 76, 77, 77, 78, 78, 79, 79,		

					  64, 65, 66, 67, 68, 69, 70, 71,		// more mauve
					  72, 73, 74, 75, 76, 77, 78, 79,
					  64, 65, 66, 67, 68, 69, 70, 71,		// olive
					  72, 73, 74, 75, 76, 77, 78, 79,

					  64, 65, 66, 67, 68, 69, 70, 71,		// maroon
					  72, 73, 74, 75, 76, 77, 78, 79,
					  64, 65, 66, 67, 68, 69, 70, 71,		// sky blue
					  72, 73, 74, 75, 76, 77, 78, 79,
					  
					  64, 65, 66, 67, 68, 69, 70, 71,		// olive again
					  72, 73, 74, 75, 76, 77, 78, 79,
					  64, 65, 66, 67, 68, 69, 70, 71,		// nuclear green
					  64, 65, 66, 67, 68, 69, 70, 71,		// bright yellow

					  64, 65, 66, 67, 68, 69, 70, 71,		// fire colors
					  72, 73, 74, 75, 76, 77, 78, 79,
					  208, 208, 64, 64, 70, 71, 72, 64,		// mishmash1
					  66, 68, 70, 64, 65, 66, 67, 68};		// mishmash2
// PGM
// ======================

/*
================
R_PolysetUpdateTables
================
*/
void R_PolysetUpdateTables (void)
{
	int		i;
	byte	*s;
	
	if (r_affinetridesc.skinwidth != skinwidth ||
		r_affinetridesc.pskin != skinstart)
	{
		skinwidth = r_affinetridesc.skinwidth;
		skinstart = r_affinetridesc.pskin;
		s = skinstart;
		for (i=0 ; i<MAX_LBM_HEIGHT ; i++, s+=skinwidth)
			skintable[i] = s;
	}
}


/*
================
R_DrawTriangle
================
*/
void R_DrawTriangle( void )
{
	spanpackage_t spans[DPS_MAXSPANS];

	int dv1_ab, dv0_ac;
	int dv0_ab, dv1_ac;

	/*
	d_xdenom = ( aliastriangleparms.a->v[1] - aliastriangleparms.b->v[1] ) * ( aliastriangleparms.a->v[0] - aliastriangleparms.c->v[0] ) -
			   ( aliastriangleparms.a->v[0] - aliastriangleparms.b->v[0] ) * ( aliastriangleparms.a->v[1] - aliastriangleparms.c->v[1] );
	*/

	dv0_ab = aliastriangleparms.a->u - aliastriangleparms.b->u;
	dv1_ab = aliastriangleparms.a->v - aliastriangleparms.b->v;

	if ( !( dv0_ab | dv1_ab ) )
		return;

	dv0_ac = aliastriangleparms.a->u - aliastriangleparms.c->u;
	dv1_ac = aliastriangleparms.a->v - aliastriangleparms.c->v;

	if ( !( dv0_ac | dv1_ac ) )
		return;

	d_xdenom = ( dv0_ac * dv1_ab ) - ( dv0_ab * dv1_ac );

	if ( d_xdenom < 0 )
	{
		a_spans = spans;

		r_p0[0] = aliastriangleparms.a->u;		// u
		r_p0[1] = aliastriangleparms.a->v;		// v
		r_p0[2] = aliastriangleparms.a->s;		// s
		r_p0[3] = aliastriangleparms.a->t;		// t
		r_p0[4] = aliastriangleparms.a->l;		// light
		r_p0[5] = aliastriangleparms.a->zi;		// iz

		r_p1[0] = aliastriangleparms.b->u;
		r_p1[1] = aliastriangleparms.b->v;
		r_p1[2] = aliastriangleparms.b->s;
		r_p1[3] = aliastriangleparms.b->t;
		r_p1[4] = aliastriangleparms.b->l;
		r_p1[5] = aliastriangleparms.b->zi;

		r_p2[0] = aliastriangleparms.c->u;
		r_p2[1] = aliastriangleparms.c->v;
		r_p2[2] = aliastriangleparms.c->s;
		r_p2[3] = aliastriangleparms.c->t;
		r_p2[4] = aliastriangleparms.c->l;
		r_p2[5] = aliastriangleparms.c->zi;

		R_PolysetSetEdgeTable ();
		R_RasterizeAliasPolySmooth ();
	}
}


/*
===================
R_PolysetScanLeftEdge_C
====================
*/
void R_PolysetScanLeftEdge_C(int height)
{
	do
	{
		d_pedgespanpackage->pdest = d_pdest;
		d_pedgespanpackage->pz = d_pz;
		d_pedgespanpackage->count = d_aspancount;
		d_pedgespanpackage->ptex = d_ptex;

		d_pedgespanpackage->sfrac = d_sfrac;
		d_pedgespanpackage->tfrac = d_tfrac;

	// FIXME: need to clamp l, s, t, at both ends?
		d_pedgespanpackage->light = d_light;
		d_pedgespanpackage->zi = d_zi;

		d_pedgespanpackage++;

		errorterm += erroradjustup;
		if (errorterm >= 0)
		{
			d_pdest += d_pdestextrastep;
			d_pz += d_pzextrastep;
			d_aspancount += d_countextrastep;
			d_ptex += d_ptexextrastep;
			d_sfrac += d_sfracextrastep;
			d_ptex += d_sfrac >> 16;

			d_sfrac &= 0xFFFF;
			d_tfrac += d_tfracextrastep;
			if (d_tfrac & 0x10000)
			{
				d_ptex += r_affinetridesc.skinwidth;
				d_tfrac &= 0xFFFF;
			}
			d_light += d_lightextrastep;
			d_zi += d_ziextrastep;
			errorterm -= erroradjustdown;
		}
		else
		{
			d_pdest += d_pdestbasestep;
			d_pz += d_pzbasestep;
			d_aspancount += ubasestep;
			d_ptex += d_ptexbasestep;
			d_sfrac += d_sfracbasestep;
			d_ptex += d_sfrac >> 16;
			d_sfrac &= 0xFFFF;
			d_tfrac += d_tfracbasestep;
			if (d_tfrac & 0x10000)
			{
				d_ptex += r_affinetridesc.skinwidth;
				d_tfrac &= 0xFFFF;
			}
			d_light += d_lightbasestep;
			d_zi += d_zibasestep;
		}
	} while (--height);
}

/*
===================
FloorDivMod

Returns mathematically correct (floor-based) quotient and remainder for
numer and denom, both of which should contain no fractional part. The
quotient must fit in 32 bits.
FIXME: GET RID OF THIS! (FloorDivMod)
====================
*/
void FloorDivMod (float numer, float denom, int *quotient,
		int *rem)
{
	int		q, r;
	float	x;

	if (numer >= 0.0)
	{

		x = floor(numer / denom);
		q = (int)x;
		r = (int)floor(numer - (x * denom));
	}
	else
	{
	//
	// perform operations with positive values, and fix mod to make floor-based
	//
		x = floor(-numer / denom);
		q = -(int)x;
		r = (int)floor(-numer - (x * denom));
		if (r != 0)
		{
			q--;
			r = (int)denom - r;
		}
	}

	*quotient = q;
	*rem = r;
}


/*
===================
R_PolysetSetUpForLineScan
====================
*/
void R_PolysetSetUpForLineScan(fixed8_t startvertu, fixed8_t startvertv,
		fixed8_t endvertu, fixed8_t endvertv)
{
	float		dm, dn;
	int			tm, tn;
	adivtab_t	*ptemp;

// TODO: implement x86 version

	errorterm = -1;

	tm = endvertu - startvertu;
	tn = endvertv - startvertv;

	if (((tm <= 16) && (tm >= -15)) &&
		((tn <= 16) && (tn >= -15)))
	{
		ptemp = &adivtab[((tm+15) << 5) + (tn+15)];
		ubasestep = ptemp->quotient;
		erroradjustup = ptemp->remainder;
		erroradjustdown = tn;
	}
	else
	{
		dm = tm;
		dn = tn;

		FloorDivMod (dm, dn, &ubasestep, &erroradjustup);

		erroradjustdown = dn;
	}
}



/*
================
R_PolysetCalcGradients
================
*/
#if id386 && !defined __linux__
void R_PolysetCalcGradients( int skinwidth )
{
	static float xstepdenominv, ystepdenominv, t0, t1;
	static float p01_minus_p21, p11_minus_p21, p00_minus_p20, p10_minus_p20;
	static float one = 1.0F, negative_one = -1.0F;
	static unsigned long t0_int, t1_int;

	extern unsigned long fpu_sp24_ceil_cw, fpu_ceil_cw, fpu_chop_cw;

	/*
	p00_minus_p20 = r_p0[0] - r_p2[0];
	p01_minus_p21 = r_p0[1] - r_p2[1];
	p10_minus_p20 = r_p1[0] - r_p2[0];
	p11_minus_p21 = r_p1[1] - r_p2[1];
	*/

	__asm mov eax, dword ptr [r_p0+0]
	__asm mov ebx, dword ptr [r_p0+4]
	__asm sub eax, dword ptr [r_p2+0]
	__asm sub ebx, dword ptr [r_p2+4]
	__asm mov p00_minus_p20, eax
	__asm mov p01_minus_p21, ebx
	__asm fild dword ptr p00_minus_p20
	__asm fild dword ptr p01_minus_p21
	__asm mov eax, dword ptr [r_p1+0]
	__asm mov ebx, dword ptr [r_p1+4]
	__asm sub eax, dword ptr [r_p2+0]
	__asm sub ebx, dword ptr [r_p2+4]
	__asm fstp p01_minus_p21
	__asm fstp p00_minus_p20
	__asm mov p10_minus_p20, eax
	__asm mov p11_minus_p21, ebx
	__asm fild dword ptr p10_minus_p20
	__asm fild dword ptr p11_minus_p21
	__asm fstp p11_minus_p21
	__asm fstp p10_minus_p20

	/*
	xstepdenominv = 1.0 / (float)d_xdenom;

	ystepdenominv = -xstepdenominv;
	*/

	/*
	** put FPU in single precision ceil mode
	*/
	__asm fldcw word ptr [fpu_sp24_ceil_cw]
//	__asm fldcw word ptr [fpu_ceil_cw]

	__asm fild  dword ptr d_xdenom    ; d_xdenom
	__asm fdivr one                   ; 1 / d_xdenom
	__asm fst   xstepdenominv         ; 
	__asm fmul  negative_one          ; -( 1 / d_xdenom )

// ceil () for light so positive steps are exaggerated, negative steps
// diminished,  pushing us away from underflow toward overflow. Underflow is
// very visible, overflow is very unlikely, because of ambient lighting
	/*
	t0 = r_p0[4] - r_p2[4];
	t1 = r_p1[4] - r_p2[4];
	r_lstepx = (int)
			ceil((t1 * p01_minus_p21 - t0 * p11_minus_p21) * xstepdenominv);
	r_lstepy = (int)
			ceil((t1 * p00_minus_p20 - t0 * p10_minus_p20) * ystepdenominv);
	*/
	__asm mov   eax, dword ptr [r_p0+16]
	__asm mov   ebx, dword ptr [r_p1+16]
	__asm sub   eax, dword ptr [r_p2+16]
	__asm sub   ebx, dword ptr [r_p2+16]

	__asm fstp  ystepdenominv       ; (empty)

	__asm mov   t0_int, eax
	__asm mov   t1_int, ebx
	__asm fild  t0_int              ; t0
	__asm fild  t1_int              ; t1 | t0
	__asm fxch  st(1)               ; t0 | t1
	__asm fstp  t0                  ; t1
	__asm fst   t1                  ; t1
	__asm fmul  p01_minus_p21       ; t1 * p01_minus_p21
	__asm fld   t0                  ; t0 | t1 * p01_minus_p21
	__asm fmul  p11_minus_p21       ; t0 * p11_minus_p21 | t1 * p01_minus_p21
	__asm fld   t1                  ; t1 | t0 * p11_minus_p21 | t1 * p01_minus_p21
	__asm fmul  p00_minus_p20       ; t1 * p00_minus_p20 | t0 * p11_minus_p21 | t1 * p01_minus_p21
	__asm fld   t0                  ; t0 | t1 * p00_minus_p20 | t0 * p11_minus_p21 | t1 * p01_minus_p21
	__asm fmul  p10_minus_p20       ; t0 * p10_minus_p20 | t1 * p00_minus_p20 | t0 * p11_minus_p21 | t1 * p01_minus_p21
	__asm fxch  st(2)               ; t0 * p11_minus_p21 | t0 * p10_minus_p20 | t1 * p00_minus_p20 | t1 * p01_minus_p21
	__asm fsubp st(3), st           ; t0 * p10_minus_p20 | t1 * p00_minus_p20 | t1 * p01_minus_p21 - t0 * p11_minus_p21
	__asm fsubrp st(1), st          ; t1 * p00_minus_p20 - t0 * p10_minus_p20 | t1 * p01_minus_p21 - t0 * p11_minus_p21
	__asm fxch  st(1)               ; t1 * p01_minus_p21 - t0 * p11_minus_p21 | t1 * p00_minus_p20 - t0 * p10_minus_p20
	__asm fmul  xstepdenominv       ; r_lstepx | t1 * p00_minus_p20 - t0 * p10_minus_p20
	__asm fxch  st(1)
	__asm fmul  ystepdenominv       ; r_lstepy | r_lstepx
	__asm fxch  st(1)               ; r_lstepx | r_lstepy
	__asm fistp dword ptr [r_lstepx]
	__asm fistp dword ptr [r_lstepy]

	/*
	** put FPU back into extended precision chop mode
	*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丝袜呻吟高潮美腿白嫩在线观看| 欧美一区二区三区四区五区| 欧美日韩国产免费一区二区 | 狠狠狠色丁香婷婷综合激情| av影院午夜一区| 欧美成人一级视频| 亚洲专区一二三| 99久久精品国产网站| 久久综合九色欧美综合狠狠| 无吗不卡中文字幕| 欧美视频中文字幕| 亚洲色欲色欲www| 国产精品 日产精品 欧美精品| 欧美日韩色一区| 亚洲私人黄色宅男| 国产福利91精品| 久久免费看少妇高潮| 看国产成人h片视频| 欧美性色aⅴ视频一区日韩精品| 国产精品免费丝袜| 国产精品88888| 国产午夜精品美女毛片视频| 美女精品自拍一二三四| 91精品国产色综合久久| 亚洲国产精品人人做人人爽| 一本久久精品一区二区| 1024国产精品| 99国产精品久久久久久久久久久| 中文字幕av不卡| 播五月开心婷婷综合| 国产精品白丝在线| av在线免费不卡| 亚洲视频综合在线| 色天使色偷偷av一区二区| 中文字幕日韩欧美一区二区三区| 成人免费精品视频| **欧美大码日韩| 一本大道久久a久久综合婷婷| 亚洲欧美视频在线观看视频| 色视频一区二区| 亚洲一二三区视频在线观看| 在线成人av影院| 久久99精品久久久久| 久久精品亚洲一区二区三区浴池| 国产成人一级电影| 国产精品国模大尺度视频| 色域天天综合网| 无吗不卡中文字幕| 久久无码av三级| 99久久99精品久久久久久| 亚洲美女一区二区三区| 欧美在线制服丝袜| 日韩成人av影视| 国产日韩亚洲欧美综合| 北岛玲一区二区三区四区| 一区二区三区中文字幕| 欧美一级日韩免费不卡| 国产精品一区二区三区乱码| 亚洲三级免费观看| 欧美久久免费观看| 国产麻豆午夜三级精品| 樱花影视一区二区| 欧美大片在线观看| 91在线一区二区| 日韩综合小视频| 国产喷白浆一区二区三区| 91黄色激情网站| 国产一区二区三区免费看| 亚洲精选在线视频| 久久久噜噜噜久久中文字幕色伊伊| www.日本不卡| 麻豆精品精品国产自在97香蕉 | 一区二区在线观看不卡| 欧美一级片在线看| 色欲综合视频天天天| 久久国产尿小便嘘嘘尿| 一区二区三区四区精品在线视频| 欧美一区二区三区色| 成人激情小说乱人伦| 日本女优在线视频一区二区| 国产精品久久久久久妇女6080| 欧美高清dvd| 色综合天天综合在线视频| 狠狠色狠狠色综合日日91app| 一卡二卡欧美日韩| 国产精品无遮挡| 26uuu精品一区二区| 欧美久久久一区| 色欧美乱欧美15图片| 国产福利一区二区三区| 麻豆91精品视频| 日韩专区在线视频| 亚洲宅男天堂在线观看无病毒| 国产欧美精品一区二区色综合| 69久久99精品久久久久婷婷| 在线免费精品视频| 粉嫩高潮美女一区二区三区| 精品一区二区三区影院在线午夜| 亚洲午夜精品17c| 亚洲精品欧美在线| 亚洲欧洲国产专区| 中国色在线观看另类| 久久久久国产精品人| 精品美女在线观看| 91精品国产综合久久香蕉的特点| 欧美偷拍一区二区| 欧美色综合天天久久综合精品| 色婷婷综合激情| 色综合天天综合狠狠| 91蜜桃婷婷狠狠久久综合9色| 国产成人在线视频免费播放| 国产美女视频91| 国产精品白丝jk黑袜喷水| 国产在线一区二区综合免费视频| 蜜乳av一区二区三区| 奇米精品一区二区三区在线观看| 日韩精品一二三四| 男男视频亚洲欧美| 老司机免费视频一区二区| 美女视频一区二区三区| 久久精品久久精品| 国产精品中文字幕日韩精品| 国产91在线|亚洲| yourporn久久国产精品| 色哟哟欧美精品| 欧美日韩在线播| 日韩一级片在线播放| 欧美精品一区二区三区蜜桃视频 | 亚洲蜜臀av乱码久久精品| 亚洲精品乱码久久久久久| 亚洲国产乱码最新视频| 奇米影视一区二区三区小说| 另类欧美日韩国产在线| 国产毛片精品一区| 97se亚洲国产综合自在线观| 在线观看一区日韩| 日韩一级精品视频在线观看| 2023国产精品| 亚洲人成在线播放网站岛国| 五月婷婷色综合| 国产很黄免费观看久久| 97久久超碰国产精品| 欧美精三区欧美精三区| 久久综合给合久久狠狠狠97色69| 成人欧美一区二区三区在线播放| 亚洲精品久久久蜜桃| 日韩电影免费在线看| 懂色av一区二区三区蜜臀| 91色.com| 久久久久久毛片| 亚洲一区二区高清| 国产很黄免费观看久久| 欧美日韩一区二区欧美激情| 久久人人爽爽爽人久久久| 亚洲精品中文在线| 国内外成人在线| 91精品91久久久中77777| 久久午夜国产精品| 亚洲444eee在线观看| 成人免费毛片a| 欧美成人伊人久久综合网| 18欧美乱大交hd1984| 精品午夜一区二区三区在线观看| 色综合久久久网| 久久精品亚洲一区二区三区浴池 | 欧美精品精品一区| 国产精品污污网站在线观看| 秋霞国产午夜精品免费视频| 99国产一区二区三精品乱码| 精品国产髙清在线看国产毛片| 伊人夜夜躁av伊人久久| 国产一区日韩二区欧美三区| 在线电影欧美成精品| 亚洲精品乱码久久久久久日本蜜臀| 国产麻豆午夜三级精品| 日韩一区二区中文字幕| 亚洲一区成人在线| 91蝌蚪porny成人天涯| 久久免费午夜影院| 久久不见久久见中文字幕免费| 欧美日韩在线电影| 亚洲精品一卡二卡| 91麻豆成人久久精品二区三区| 久久久亚洲精华液精华液精华液| 日本va欧美va欧美va精品| 欧美日韩国产电影| 亚洲一区二区欧美激情| 在线观看日产精品| 亚洲丝袜制服诱惑| voyeur盗摄精品| 国产精品夫妻自拍| 成人三级伦理片| 中文字幕乱码日本亚洲一区二区| 国产美女久久久久| 久久免费看少妇高潮| 国产激情精品久久久第一区二区 | 日韩视频免费直播| 男人的天堂亚洲一区| 欧美一级黄色大片| 久久激情综合网|