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

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

?? cvshapes.cpp

?? Windows上的MUD客戶端程序
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/*----------------------------------------------------------------------------
                        _                              _ _       
        /\             | |                            | (_)      
       /  \   _ __   __| |_ __ ___  _ __ ___   ___  __| |_  __ _ 
      / /\ \ | '_ \ / _` | '__/ _ \| '_ ` _ \ / _ \/ _` | |/ _` |
     / ____ \| | | | (_| | | | (_) | | | | | |  __/ (_| | | (_| |
    /_/    \_\_| |_|\__,_|_|  \___/|_| |_| |_|\___|\__,_|_|\__,_|

    The contents of this file are subject to the Andromedia Public
	License Version 1.0 (the "License"); you may not use this file
	except in compliance with the License. You may obtain a copy of
	the License at http://www.andromedia.com/APL/

    Software distributed under the License is distributed on an
	"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
	implied. See the License for the specific language governing
	rights and limitations under the License.

    The Original Code is Pueblo client code, released November 4, 1998.

    The Initial Developer of the Original Code is Andromedia Incorporated.
	Portions created by Andromedia are Copyright (C) 1998 Andromedia
	Incorporated.  All Rights Reserved.

	Andromedia Incorporated                         415.365.6700
	818 Mission Street - 2nd Floor                  415.365.6701 fax
	San Francisco, CA 94103

    Contributor(s):
	--------------------------------------------------------------------------
	   Chaco team:  Dan Greening, Glenn Crocker, Jim Doubek,
	                Coyote Lussier, Pritham Shetty.

					Wrote and designed original codebase.

------------------------------------------------------------------------------

	Implementation for the ChQvInstance class for  Intel 3DR.

----------------------------------------------------------------------------*/

// $Header: /home/cvs/chaco/modules/client/msw/ChGraphx/CvShapes.cpp,v 2.50 1996/10/08 02:04:06 jimd Exp $

#include "grheader.h"

#include "CvInstnc.h"
#include <QvInfo.h>
#include <QvState.h>
#include "ChMaze.h"
#include "ChRenderData.h"
#include "ChMazDep.h"
#include "CvTrnsfm.h"
#include "CvNormal.h"
#include "CvBound.h"
#include "CvMaterl.h"
#include "CvTextur.h"
#include "GxSphere.h"
#include "ChSphere.h"
#include <ChTriangle.h>
#include "ChRenderBuffer.h"

#if defined(CH_IMMED_MODE)
#include "imode.h"
#endif

//#define FLIP_D3D_NORMALS	1

#define CH_SPHERE_LOD	1

// Binary transparency only for now
static bool IsTransparent(float transparency)
{	// 0 is opaque, 1 is totally transparent
	//return alpha <= 0.5;	
	return transparency >= 0.5;	
}

#if 0
inline int VertCount(long *values)
{
	int i = 0;
	while(values[i] != QV_END_FACE_INDEX) i++;
	return i;
}
#endif

inline int VertCount(long *values, int numPoints)
{
	int i = 0;
	while(i < numPoints && values[i] != QV_END_FACE_INDEX) i++;
	return i;
};

inline int VertCount(QvMFLong &coords, int start)
{
	return VertCount(coords.values + start, coords.num - start);
}

inline int GetFaceCount(long *values, int numPoints)
{
	int count = 0;
	for(int i = 0; i < numPoints ;i++)
	{
		if(values[i] == QV_END_FACE_INDEX || i == numPoints - 1) count++;
	}
	return count;
}


#if 0
bool ChQvInstance::ComputeBounds()
{
	// Every class needs to do their own. Maybe this should be pure virtual
	return false;
}

#endif

void ChQvInstanceHasProps::Init(ChQvBuildState *pState, ChQvInstance *pInstance)
{
	ChRenderContext *pRC = pState->GetView()->GetRenderContext();

	m_pMaterial =             (QvMaterial 			 *)(pRC->GetCurrentProperty(pState, QvState::MaterialIndex));   
	m_pMaterialBinding =      (QvMaterialBinding 	 *)(pRC->GetCurrentProperty(pState, QvState::MaterialBindingIndex));   
	m_pNormal =               (QvNormal 			 *)(pRC->GetCurrentProperty(pState, QvState::NormalIndex));   
	m_pNormalBinding =        (QvNormalBinding 	 *)(pRC->GetCurrentProperty(pState, QvState::NormalBindingIndex));   
	m_pCoordinate3 =          (QvCoordinate3 		 *)(pRC->GetCurrentProperty(pState, QvState::Coordinate3Index));   
	m_pTexture2 =             (QvTexture2 			 *)(pRC->GetCurrentProperty(pState, QvState::Texture2Index));   
	m_pTexture2Transform =    (QvTexture2Transform  *)(pRC->GetCurrentProperty(pState, QvState::Texture2TransformationIndex));   
	m_pTextureCoordinate2 =   (QvTextureCoordinate2 *)(pRC->GetCurrentProperty(pState, QvState::TextureCoordinate2Index));   
	m_pShapeHints =           (QvShapeHints 		 *)(pRC->GetCurrentProperty(pState, QvState::ShapeHintsIndex));   
	m_pInfo =           	  (QvInfo 				 *)(pRC->GetCurrentProperty(pState, QvState::InfoIndex));   
	m_pFontStyle =            (QvFontStyle 			 *)(pRC->GetCurrentProperty(pState, QvState::FontStyleIndex));   

	((ChQvRenderBaseData *)(m_pMaterial->GetRenderData()))->AddDependent(pInstance);             
	((ChQvRenderBaseData *)(m_pMaterialBinding->GetRenderData()))->AddDependent(pInstance);      
	((ChQvRenderBaseData *)(m_pNormal->GetRenderData()))->AddDependent(pInstance);               
	((ChQvRenderBaseData *)(m_pNormalBinding->GetRenderData()))->AddDependent(pInstance);        
	((ChQvRenderBaseData *)(m_pCoordinate3->GetRenderData()))->AddDependent(pInstance);          
	((ChQvRenderBaseData *)(m_pTexture2->GetRenderData()))->AddDependent(pInstance);             
	((ChQvRenderBaseData *)(m_pTexture2Transform->GetRenderData()))->AddDependent(pInstance);    
	((ChQvRenderBaseData *)(m_pTextureCoordinate2->GetRenderData()))->AddDependent(pInstance);   
	((ChQvRenderBaseData *)(m_pShapeHints->GetRenderData()))->AddDependent(pInstance);           
	((ChQvRenderBaseData *)(m_pInfo->GetRenderData()))->AddDependent(pInstance);           
	((ChQvRenderBaseData *)(m_pFontStyle->GetRenderData()))->AddDependent(pInstance);           

}

void ChQvInstanceHasProps::Term( ChQvInstance *pInstance)
{
	if(m_pMaterial) ((ChQvRenderBaseData *)(m_pMaterial->GetRenderData()))->RemoveDependent(pInstance);             
	if(m_pMaterialBinding) ((ChQvRenderBaseData *)(m_pMaterialBinding->GetRenderData()))->RemoveDependent(pInstance);      
	if(m_pNormal) ((ChQvRenderBaseData *)(m_pNormal->GetRenderData()))->RemoveDependent(pInstance);               
	if(m_pNormalBinding) ((ChQvRenderBaseData *)(m_pNormalBinding->GetRenderData()))->RemoveDependent(pInstance);        
	if(m_pCoordinate3) ((ChQvRenderBaseData *)(m_pCoordinate3->GetRenderData()))->RemoveDependent(pInstance);          
	if(m_pTexture2) ((ChQvRenderBaseData *)(m_pTexture2->GetRenderData()))->RemoveDependent(pInstance);             
	if(m_pTexture2Transform) ((ChQvRenderBaseData *)(m_pTexture2Transform->GetRenderData()))->RemoveDependent(pInstance);    
	if(m_pTextureCoordinate2) ((ChQvRenderBaseData *)(m_pTextureCoordinate2->GetRenderData()))->RemoveDependent(pInstance);   
	if(m_pShapeHints) ((ChQvRenderBaseData *)(m_pShapeHints->GetRenderData()))->RemoveDependent(pInstance);           
	if(m_pInfo) ((ChQvRenderBaseData *)(m_pInfo->GetRenderData()))->RemoveDependent(pInstance);           
	if(m_pFontStyle) ((ChQvRenderBaseData *)(m_pFontStyle->GetRenderData()))->RemoveDependent(pInstance);           
	m_pMaterial =             0;
	m_pMaterialBinding =      0;
	m_pNormal =               0;
	m_pNormalBinding =        0;
	m_pCoordinate3 =          0;
	m_pTexture2 =             0;
	m_pTexture2Transform =    0;
	m_pTextureCoordinate2 =   0;
	m_pShapeHints =           0;
	m_pInfo =           	  0;
	m_pFontStyle =            0;
}

void ChQvInstanceHasProps::RemoveProperty(ChQvRenderBaseData *pData)
{
	RemoveProperty(pData, (QvNode**)&m_pMaterial);
	RemoveProperty(pData, (QvNode**)&m_pMaterialBinding);
	RemoveProperty(pData, (QvNode**)&m_pNormal);
	RemoveProperty(pData, (QvNode**)&m_pNormalBinding);
	RemoveProperty(pData, (QvNode**)&m_pCoordinate3);
	RemoveProperty(pData, (QvNode**)&m_pTexture2);
	RemoveProperty(pData, (QvNode**)&m_pTexture2Transform);
	RemoveProperty(pData, (QvNode**)&m_pTextureCoordinate2);
	RemoveProperty(pData, (QvNode**)&m_pShapeHints);
	RemoveProperty(pData, (QvNode**)&m_pInfo);
	RemoveProperty(pData, (QvNode**)&m_pFontStyle);
}

void ChQvInstanceHasProps::RemoveProperty(ChQvRenderBaseData *pData, QvNode **ppNode)
{
	if(ppNode && *ppNode)
	{
		if(((ChQvRenderBaseData *)((*ppNode)->GetRenderData())) == pData) *ppNode = 0;          
	}
}

/////////// Shapes - first the shapeInstance abc

void ChQvShapeInstance::Init(ChQvBuildState *pState)
{
	ChQvInstance::Init(pState);
	ChQvInstanceHasProps::Init(pState, this);
	pState->AddShape();
}

ChQvShapeInstance::ChQvShapeInstance() : ChQvInstance()
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
	, m_mesh(0)
	, m_boolTransformDirty(false)
#if defined(CH_IMMED_MODE)
	, m_hTexture(0)
#endif
#endif
{
}

ChQvShapeInstance::~ChQvShapeInstance()
{
	ChQvInstanceHasProps::Term(this);
#if defined(CH_IMMED_MODE)
	if(m_hTexture)
	{
		ChNrObjectDestroy(m_hTexture);
	}
	m_hTexture = 0;
#endif
}

#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))

#if (defined(CH_USE_RLAB))
void ShapeTransformCallback(ChNrFrame frame, void * arg)
#else
void ShapeTransformCallback(ChNrFrame frame, void * arg, float delta)
#endif
{
	#if 1 || defined(CH_VRML_EVENTS)
	ChQvShapeInstance *pInst = (ChQvShapeInstance *)arg;
	if(pInst->IsTransformDirty())
	{
		ChNrFrameAddTransform(frame, CombineReplace, *(pInst->GetTransform().GetMatrix()));
		ChQvBounds bounds;
		pInst->GetBounds(bounds);	// ??????????? force the bounds transform to update

		pInst->SetTransformDirty( false );
	}
	#endif
}

void ChQvShapeInstance::CreateFrame()
{
	ChQvInstance::CreateFrame();
	// Install callback for event processing on transforms
	#if 1 || defined(CH_VRML_EVENTS)
	ChNrFrameAddCallback(m_frame, ShapeTransformCallback, this);
	#endif
};

#endif
ChQvInstance* ChQvShapeInstance::SetTransformDirty(bool boolDirty)
{
	m_boolTransformDirty = boolDirty;
	if(boolDirty && GetRC()) GetRC()->SetDirty();
	return this;
};

bool ChQvShapeInstance::SetupTexture(ChRenderContext *pRC)
{	
				// This is for procedural renderers like 3dr, OGL and D3d
	bool boolUseTexture = false;
	ChQvTextureRenderData *pTextureData = 0;
	pTextureData = (ChQvTextureRenderData*)(GetTexture2()->GetRenderData());
	if (pTextureData->GetTextureHandle()) boolUseTexture = true;
	 
	if(boolUseTexture)
	{
		pRC->SetTexture(pTextureData->GetTextureHandle());
	}
	else
	{
		pRC->SetTexture(0);
	}
	return boolUseTexture;
}

#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
bool ChQvShapeInstance::SetTexture(ChQvTextureRenderData *pTextureData, ChNrMesh mesh /* = 0 */)
{
	if(!pTextureData) pTextureData = (ChQvTextureRenderData*)(GetTexture2()->GetRenderData());
	if(!mesh) mesh = m_mesh;

				// This is for retained mode renderers like RealityLab
	bool boolDidIt = false;


	if (mesh)
	{
		if(pTextureData)
		{
			ChTextureHandle texture = pTextureData->GetTextureHandle();
			if(texture)
			{
				ChNrMeshSetTexture(mesh, texture);
				boolDidIt = true;

				#if (defined(CH_USE_D3D))
				// D3D RM doesn't support alpha transparency for textures, 
				// so use chromaKey instead.
				if(pTextureData->IsChromaKey())
				{
					texture->SetDecalTransparency(true);
					texture->SetDecalTransparentColor(*(pTextureData->GetChromaKey().GetNative()));
				}
				
				// Bleach color out - sometimes D3D insists on modulating
				SetColor(ChColorA(1., 1., 1.), mesh);	 
				#endif
			}
		}
		else
		{
			// remove existing texture
			ChNrMeshSetTexture(mesh, 0);
		}
	}
	return boolDidIt;	// false says nothing happened
}

void ChQvShapeInstance::SetColor(const ChColorA &color, ChNrMesh mesh /* = 0 */)
{
#if (defined(CH_USE_D3D))
	if(!mesh) mesh = m_mesh;
	if(mesh)
	{
		mesh->SetColor(*(color.GetNative()));	 // set faces as asked
		mesh->SetColorSource(ColorFromFace);
	}
#endif
}

#endif

// Shapes


// arbitrary for now; later make it depend on image size
#define CalcCylinderFacetCount(cyl, pRC)	(50)
#define CalcConeFacetCount(cyl, pRC)	(50)


ChQvConeInstance::ChQvConeInstance() : ChQvShapeInstance()
{
}


bool ChQvConeInstance::Construct(ChRenderContext *pRC, ChConstructionIterator *pIterator)
{
#if (defined(CH_USE_RLAB) || defined(CH_USE_D3D))
	{
		QvCone *pNode = (QvCone *)GetNode();

		ASSERT(m_frame );
		pRC->LockQv();		   // Lock tree so other threads don't kill our data
		if(!pIterator->IsOKToProceed(this))	 // This locks scene if available
		{
			pRC->UnlockQv();		   // Unlock tree 
			return 0;
		}
		if(IsConstructed())
		{
			pRC->UnlockScene();
			pRC->UnlockQv();		   // Unlock tree 
			return 1;
		}
		m_boolConstructed = true;
		
		ChNrMesh mesh = m_mesh = pRC->CreateMesh();
		ChNrFrameAddVisual(GetFrame(), mesh);				   
		D3DRelease(mesh);

		ChNrObjectSetAppData(mesh, (unsigned long)this);
		ChNrMeshSetColorSource(mesh,ColorFromFace); // alternative: ChNativeColorFromVertex 
		ChNrMeshSetPerspective(mesh,true);  

		ChNrMeshSetTextureTopology(mesh,true, false); // uwrap, vwrap 

		bool boolCull = (pNode->parts.value == QvCone::ALL);	// if all sides are present, then cull
		   //boolCull = true;
		int numFacets = CalcConeFacetCount(this, state);

		// Make a material mapping; we will use later for each facet, top and bottom
		ChQvConeMaterials materialMap( this );
		pRC->AdjustTransparency(materialMap);

		/* Do the texture stuff -  make the map, assign to all the verts, */
		ChQvConeTextures	*pTxMap =  new ChQvConeTextures( this, numFacets );
		ChQvTextureRenderData *pTextureData = (ChQvTextureRenderData*)(GetTexture2()->GetRenderData());
		bool boolUseTexture = !(pTextureData->IsEmpty());  // one -might- arrive

		float h2 = pNode->height.value / 2.;
		float r = pNode->bottomRadius.value;

		float pi = atan(1.) * 4.;
		float twoPi = pi * 2;

		// Build the display list: verts, normals, and faces
		// We replicate the apex vertex for each facet, since it has a different 
		// texture u for each facet.
		int numFaces = numFacets + 1, numVerts = numFacets * 2, numNorms = numFacets * 2 + 1;
		if (!boolCull) numNorms *= 2;
		int vertStep = 0;		// step to find verts for sides
		if (boolUseTexture)
		{
			vertStep = numVerts;
			numVerts += numFacets;
		}

		// alloc face_data conservatively; might be a touch too big in some cases
		int face_data_size = numFacets * 3 * 2 		// for side faces - triangles with normals
							+ numFacets 			// side counts
							+ 2 * numFacets 		// bottom
							+ 1 					// bottom counts		
							+ 1;					// terminator
		if (!boolCull) face_data_size *= 2;
		ChNrFaceData * face_data = new ChNrFaceData[face_data_size];

		int 	ifd = 0; // index into face data
		GxVec3f *n = new GxVec3f[numNorms];
		GxVec3f *v = new GxVec3f[numVerts];

		int normStep = numNorms / 2;
		float ynorm = (h2 > 1e-3) ? (r  / (h2 * 2)) : 0;
		for( int facet = 0; facet < numFacets; facet ++)
		{
			float theta = facet * twoPi / numFacets;
			float sintheta = sin(theta);
			float costheta = cos(theta);

			n[facet*2].x() = -sintheta;
			n[facet*2].y() = ynorm;	//  width / height, then mormalize
			n[facet*2].z() = -costheta;
	 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美日韩国产综合一区二区| 免费xxxx性欧美18vr| 亚洲一级二级三级在线免费观看| 国产三级欧美三级日产三级99| 国产麻豆欧美日韩一区| 日韩福利电影在线| 麻豆91在线播放免费| 91丨九色丨蝌蚪丨老版| 91在线免费视频观看| 91蝌蚪porny九色| 2023国产一二三区日本精品2022| 精品久久国产字幕高潮| 久久色视频免费观看| 亚洲一区二区三区中文字幕| 成人毛片在线观看| 91精品1区2区| 欧美色图第一页| 日韩一卡二卡三卡四卡| 久久综合九色欧美综合狠狠| 日本少妇一区二区| 91精品国产全国免费观看| 久久久久国产一区二区三区四区| 中文成人综合网| 亚洲综合成人在线| 在线看一区二区| 2017欧美狠狠色| 国内偷窥港台综合视频在线播放| 成人av网站大全| 欧美久久婷婷综合色| 精品99久久久久久| 一区二区三区欧美日韩| 日本不卡免费在线视频| 91麻豆精品国产91久久久资源速度| 国产欧美一区二区在线| 国产精品伊人色| 555www色欧美视频| 美日韩一区二区| 欧美mv和日韩mv的网站| 韩国成人精品a∨在线观看| 久久久久久久网| 国产ts人妖一区二区| 欧美精品亚洲一区二区在线播放| 日本欧美加勒比视频| 精品三级在线看| 国产福利电影一区二区三区| 欧美综合一区二区三区| 午夜久久久影院| 99久久精品情趣| 一区二区三区在线免费视频| 5月丁香婷婷综合| 国产精品亚洲一区二区三区在线| 国产亚洲欧美在线| 91久久国产最好的精华液| 午夜伊人狠狠久久| 欧美亚洲综合另类| 自拍偷拍国产亚洲| 国产精品一级在线| 亚洲欧美电影一区二区| 99精品视频一区| 亚洲成人www| 久久久久久久久97黄色工厂| 97se亚洲国产综合自在线| 亚洲国产精品视频| 欧美无人高清视频在线观看| 麻豆成人91精品二区三区| 国产精品美女久久久久aⅴ| 欧美区在线观看| 成人在线视频一区二区| 午夜欧美电影在线观看| 欧美国产日本韩| 成人黄色片在线观看| 亚洲成人av福利| 国产精品久久毛片a| 99精品国产91久久久久久| 亚洲成人1区2区| 中国色在线观看另类| 日韩一区二区视频在线观看| 色综合久久天天| 亚洲最快最全在线视频| 精品国产第一区二区三区观看体验| 91在线无精精品入口| 久久99精品国产91久久来源| 日本一区二区三区久久久久久久久不| 在线观看国产91| 国产不卡免费视频| 蜜桃视频一区二区三区 | 99热精品国产| 亚洲毛片av在线| 国产欧美久久久精品影院| 欧美丰满高潮xxxx喷水动漫| 99精品视频一区| www.日本不卡| 粉嫩一区二区三区在线看| 久久国产夜色精品鲁鲁99| 亚洲国产精品精华液ab| 日韩亚洲欧美在线| 6080国产精品一区二区| 欧美视频精品在线| 91亚洲精华国产精华精华液| 国产一区美女在线| 美女视频黄免费的久久 | 91.com视频| 欧美精品在线观看播放| 欧美日韩专区在线| 91国偷自产一区二区使用方法| 波多野结衣精品在线| 国产91精品久久久久久久网曝门| 国产在线播精品第三| 国产一区二区三区在线看麻豆| 蜜芽一区二区三区| 免费在线观看一区| 热久久一区二区| 蜜桃一区二区三区四区| 美女性感视频久久| 韩日av一区二区| 国产乱一区二区| 高清久久久久久| 成人高清视频在线观看| 国产成人免费在线| 99国产欧美另类久久久精品| 99re热这里只有精品免费视频| 91亚洲资源网| 精品视频全国免费看| 91精品综合久久久久久| 精品久久久久一区二区国产| 久久亚洲综合色| 国产精品国模大尺度视频| 亚洲人成伊人成综合网小说| 亚洲激情综合网| 久久婷婷一区二区三区| 国产精品美女久久久久高潮| 最新不卡av在线| 亚洲va欧美va人人爽午夜| 日韩综合在线视频| 亚洲一区二区三区四区在线免费观看| 亚洲成人你懂的| 九九热在线视频观看这里只有精品| 国内欧美视频一区二区| 99久久国产综合精品女不卡| 在线亚洲人成电影网站色www| 欧美日韩美少妇| 久久久久久久久久久久电影| 亚洲色欲色欲www| 奇米影视在线99精品| 成人av网站在线观看免费| 欧美亚洲国产一区二区三区| 精品日韩在线观看| 综合欧美亚洲日本| 久久精品国产精品亚洲精品| 99久久精品国产导航| 日韩美女在线视频| 精品欧美一区二区久久| 国产精品成人一区二区艾草| 日韩黄色片在线观看| av电影天堂一区二区在线 | 色综合天天在线| 国产精品亚洲一区二区三区在线 | 中文一区二区在线观看| 一二三四区精品视频| 精品一区二区三区影院在线午夜| 91免费视频观看| 欧美精品一区二区久久婷婷| 亚洲一区在线观看免费| 成人午夜精品在线| 欧美成人性战久久| 亚洲一区二区精品久久av| 丁香一区二区三区| 日韩区在线观看| 亚洲国产精品久久人人爱蜜臀 | 精品在线一区二区三区| 欧美私人免费视频| 国产精品你懂的| 国产乱码一区二区三区| 91精品国产黑色紧身裤美女| 亚洲一区二区中文在线| av在线不卡观看免费观看| 久久精品人人做| 久久99国产精品尤物| 日韩一区二区免费视频| 午夜av一区二区三区| 色丁香久综合在线久综合在线观看| 中文在线免费一区三区高中清不卡 | 美女免费视频一区二区| 欧美伦理视频网站| 午夜av一区二区| 欧美吞精做爰啪啪高潮| 亚洲免费电影在线| 91在线丨porny丨国产| 中文幕一区二区三区久久蜜桃| 国产高清亚洲一区| 久久九九全国免费| 国产一区二区三区久久久| 久久日韩精品一区二区五区| 美女在线观看视频一区二区| 欧美一区二视频| 蜜桃在线一区二区三区| 日韩精品自拍偷拍| 麻豆精品新av中文字幕| 欧美精品一区二区三区很污很色的 |