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

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

?? 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;
	 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
风间由美性色一区二区三区| 日本亚洲欧美天堂免费| 国产剧情一区在线| 欧美精品一区二区三区一线天视频 | av网站一区二区三区| 中文字幕免费在线观看视频一区| 国产福利精品一区| 中文字幕一区二区三| 色先锋资源久久综合| 亚洲bt欧美bt精品777| 在线不卡中文字幕| 国产一区二区女| 亚洲视频免费看| 欧美日韩激情一区二区三区| 麻豆成人久久精品二区三区小说| 国产亚洲成av人在线观看导航 | 精品99999| 91香蕉视频黄| 免费观看日韩av| 国产精品视频免费| 欧美羞羞免费网站| 精品一区二区三区日韩| 国产精品网站在线观看| 欧美色区777第一页| 极品少妇xxxx精品少妇| 亚洲理论在线观看| 日韩精品中午字幕| 99re热这里只有精品免费视频| 亚洲成人一区在线| 久久精品人人做人人综合 | 亚洲综合一区二区三区| 欧美一级二级三级蜜桃| 成人av综合一区| 午夜不卡在线视频| 国产精品无人区| 欧美肥大bbwbbw高潮| 成人福利视频在线| 久久精品国产在热久久| 亚洲欧美日韩国产中文在线| 欧美成人伊人久久综合网| 91丝袜高跟美女视频| 激情成人午夜视频| 亚洲动漫第一页| 国产精品国产三级国产| 日韩精品在线看片z| 欧美影院一区二区| 成人午夜伦理影院| 麻豆成人av在线| 亚洲资源在线观看| 国产精品美女久久久久aⅴ | 国产视频一区不卡| 欧美一区二区三区在线观看视频| av综合在线播放| 国产高清成人在线| 精品无人码麻豆乱码1区2区 | 久久众筹精品私拍模特| 欧美麻豆精品久久久久久| 91蜜桃在线免费视频| 国产一区二区不卡在线| 午夜欧美一区二区三区在线播放| 亚洲丝袜自拍清纯另类| 中文字幕av一区二区三区高| 久久久久88色偷偷免费| 日韩免费高清av| 日韩视频一区二区三区| 欧美日韩一二三| 欧美日韩一二区| 欧美日本不卡视频| 欧美精三区欧美精三区| 欧美私人免费视频| 色狠狠色狠狠综合| 91美女视频网站| 97精品久久久午夜一区二区三区 | 国产精品国产三级国产有无不卡| 亚洲精品在线观看网站| 日韩精品一区二区三区视频| 欧美午夜一区二区| 欧美视频完全免费看| 欧美日韩在线综合| 欧美日韩另类一区| 91精品在线观看入口| 日韩一区二区不卡| 欧美日韩国产综合视频在线观看| 91豆麻精品91久久久久久| 91麻豆蜜桃一区二区三区| 色激情天天射综合网| 欧美私模裸体表演在线观看| 欧美色偷偷大香| 欧美人妇做爰xxxⅹ性高电影| 欧美喷潮久久久xxxxx| 欧美一卡二卡三卡| 日韩三级精品电影久久久 | 韩国成人在线视频| 精品综合久久久久久8888| 麻豆一区二区三区| 国产麻豆91精品| 成人动漫视频在线| 91视频www| 欧美福利一区二区| 久久久精品中文字幕麻豆发布| 亚洲国产精华液网站w| 欧美国产视频在线| 一区二区三区日韩精品| 午夜成人免费电影| 国产成人自拍在线| 成人av在线观| 日本韩国欧美国产| 欧美精品久久天天躁| 久久影音资源网| 国产精品福利在线播放| 亚洲精品成a人| 蜜臀av国产精品久久久久| 福利91精品一区二区三区| 91丨九色丨蝌蚪丨老版| 欧美高清视频www夜色资源网| 精品国偷自产国产一区| 日本一区二区三区四区| 1000部国产精品成人观看| 日日欢夜夜爽一区| voyeur盗摄精品| 欧日韩精品视频| xvideos.蜜桃一区二区| 亚洲美女视频在线观看| 国内精品免费**视频| 91丨porny丨国产入口| 日韩欧美综合一区| 亚洲日韩欧美一区二区在线| 日韩综合在线视频| 91在线视频播放地址| 精品盗摄一区二区三区| 亚洲第一综合色| 不卡的av网站| 精品国产免费视频| 亚洲成人免费观看| 99久久免费视频.com| 久久精品亚洲一区二区三区浴池 | 国产盗摄女厕一区二区三区 | 精品制服美女丁香| 色国产精品一区在线观看| www国产成人免费观看视频 深夜成人网| 亚洲精选一二三| 国产成a人亚洲| 精品国产一区a| 日韩成人免费在线| 欧美色图一区二区三区| 亚洲视频在线一区二区| 国产精品一品视频| 2020国产精品自拍| 麻豆视频一区二区| 欧美日韩在线精品一区二区三区激情| 中文字幕一区二区日韩精品绯色| 国产一区二区三区四区在线观看| 欧美日韩精品电影| 亚洲综合一区二区| 在线精品视频一区二区三四| 国产精品理论在线观看| 国产经典欧美精品| 2023国产精品视频| 久久 天天综合| 精品成人一区二区三区| 国产91富婆露脸刺激对白| 欧美一级片在线观看| 日韩影院免费视频| 欧美精品在线观看一区二区| 亚洲成av人片在线观看| 欧美在线视频日韩| 亚洲成a天堂v人片| 在线视频你懂得一区| 亚洲精品写真福利| 在线精品视频免费播放| 亚洲伊人色欲综合网| 欧洲一区在线电影| 亚洲国产日韩精品| 欧美男男青年gay1069videost | 亚洲国产乱码最新视频 | 91亚洲资源网| 亚洲色图都市小说| 日本韩国欧美国产| 午夜精品福利一区二区三区蜜桃| 欧美色精品在线视频| 香蕉成人啪国产精品视频综合网 | 精品国产一区二区精华| 国产美女在线精品| 中文字幕在线不卡视频| 色欧美片视频在线观看| 天堂久久一区二区三区| 欧美一级视频精品观看| 国产一本一道久久香蕉| 成人欧美一区二区三区黑人麻豆| av综合在线播放| 午夜天堂影视香蕉久久| 欧美xxxxxxxxx| 国产成人福利片| 亚洲三级视频在线观看| 欧美丰满一区二区免费视频 | 欧美一区二区视频在线观看2022| 久久精品国内一区二区三区| 亚洲国产精品精华液2区45| 色一情一乱一乱一91av| 麻豆国产精品官网|