青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  C++博客 :: 首頁(yè) :: 聯(lián)系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用鏈接

留言簿(48)

我參與的團(tuán)隊(duì)

搜索

  •  

積分與排名

  • 積分 - 403338
  • 排名 - 59

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

大家好,歡迎來(lái)到新的一課,在這一課中我們將擴(kuò)展glCamera類,來(lái)實(shí)現(xiàn)鏡頭光暈的效果。在日常生活中,當(dāng)我們對(duì)著光源看時(shí),會(huì)發(fā)現(xiàn)強(qiáng)烈的反光。
為了完成這個(gè)效果,我們需要一些數(shù)學(xué)知識(shí)。首先,我們需要一些函數(shù),用來(lái)檢測(cè)某個(gè)點(diǎn)或球是否在當(dāng)前的視景體內(nèi)。接著我們需要一些紋理作為我們的光暈效果,我們可以把它貼在顯示面上。
在我的上一個(gè)攝像機(jī)類里把下面函數(shù)寫錯(cuò)了,現(xiàn)在修正如下:
 
  

void glCamera::SetPrespective(){ GLfloat Matrix[16];             glVector v;                               
// 根據(jù)當(dāng)前的偏轉(zhuǎn)角旋轉(zhuǎn)視線
glRotatef(m_HeadingDegrees, 0.0f, 1.0f, 0.0f);
glRotatef(m_PitchDegrees, 1.0f, 0.0f, 0.0f);

// 返回模型變換矩陣
glGetFloatv(GL_MODELVIEW_MATRIX, Matrix);

// 獲得視線的方向
m_DirectionVector.i = Matrix[8];
m_DirectionVector.j = Matrix[9];
m_DirectionVector.k = -Matrix[10];

// 重置矩陣
glLoadIdentity();

// 旋轉(zhuǎn)場(chǎng)景
glRotatef(m_PitchDegrees, 1.0f, 0.0f, 0.0f);
glRotatef(m_HeadingDegrees, 0.0f, 1.0f, 0.0f);

// 設(shè)置當(dāng)前攝像機(jī)的位置
v = m_DirectionVector;
v *= m_ForwardVelocity;
m_Position.x += v.i;
m_Position.y += v.j;
m_Position.z += v.k;

// 變換到新的位置
glTranslatef(-m_Position.x, -m_Position.y, -m_Position.z);
}


  
 好了,我們現(xiàn)在開始吧。我將使用4個(gè)對(duì)立的紋理來(lái)制造我們的鏡頭光暈,第一和二個(gè)光暈圖像被放置在光源處,第三和第四個(gè)圖像將根據(jù)視點(diǎn)的位置和方向動(dòng)態(tài)的生成。紋理的圖像如下所示:

 

Big Glow

   Streaks

 
Glow

   Halo

 

 

 

現(xiàn)在你在頭腦里應(yīng)該有了一個(gè)大慨地圖像了吧。我們來(lái)說(shuō)說(shuō)何時(shí)我們應(yīng)該繪制光暈,一般來(lái)說(shuō)平時(shí)我們是看不見(jiàn)這些光暈的,只有當(dāng)我們對(duì)準(zhǔn)光源的時(shí)候才能看見(jiàn)這些。所以我們首先要獲得視景體的數(shù)據(jù),下面的函數(shù)可以幫我們完成這個(gè)功能。
 
  

// 獲得當(dāng)前視景體的6個(gè)平面方程的參數(shù)void glCamera::UpdateFrustum(){    GLfloat   clip[16]; GLfloat   proj[16];    GLfloat   modl[16];    GLfloat   t;
//返回投影矩陣
glGetFloatv( GL_PROJECTION_MATRIX, proj );

//返回模型變換矩陣
glGetFloatv( GL_MODELVIEW_MATRIX, modl );

//計(jì)算剪切矩陣,即上面兩個(gè)矩陣的乘積
clip[ 0] = modl[ 0] * proj[ 0] + modl[ 1] * proj[ 4] + modl[ 2] * proj[ 8] + modl[ 3] * proj[12];
clip[ 1] = modl[ 0] * proj[ 1] + modl[ 1] * proj[ 5] + modl[ 2] * proj[ 9] + modl[ 3] * proj[13];
clip[ 2] = modl[ 0] * proj[ 2] + modl[ 1] * proj[ 6] + modl[ 2] * proj[10] + modl[ 3] * proj[14];
clip[ 3] = modl[ 0] * proj[ 3] + modl[ 1] * proj[ 7] + modl[ 2] * proj[11] + modl[ 3] * proj[15];

clip[ 4] = modl[ 4] * proj[ 0] + modl[ 5] * proj[ 4] + modl[ 6] * proj[ 8] + modl[ 7] * proj[12];
clip[ 5] = modl[ 4] * proj[ 1] + modl[ 5] * proj[ 5] + modl[ 6] * proj[ 9] + modl[ 7] * proj[13];
clip[ 6] = modl[ 4] * proj[ 2] + modl[ 5] * proj[ 6] + modl[ 6] * proj[10] + modl[ 7] * proj[14];
clip[ 7] = modl[ 4] * proj[ 3] + modl[ 5] * proj[ 7] + modl[ 6] * proj[11] + modl[ 7] * proj[15];

clip[ 8] = modl[ 8] * proj[ 0] + modl[ 9] * proj[ 4] + modl[10] * proj[ 8] + modl[11] * proj[12];
clip[ 9] = modl[ 8] * proj[ 1] + modl[ 9] * proj[ 5] + modl[10] * proj[ 9] + modl[11] * proj[13];
clip[10] = modl[ 8] * proj[ 2] + modl[ 9] * proj[ 6] + modl[10] * proj[10] + modl[11] * proj[14];
clip[11] = modl[ 8] * proj[ 3] + modl[ 9] * proj[ 7] + modl[10] * proj[11] + modl[11] * proj[15];

clip[12] = modl[12] * proj[ 0] + modl[13] * proj[ 4] + modl[14] * proj[ 8] + modl[15] * proj[12];
clip[13] = modl[12] * proj[ 1] + modl[13] * proj[ 5] + modl[14] * proj[ 9] + modl[15] * proj[13];
clip[14] = modl[12] * proj[ 2] + modl[13] * proj[ 6] + modl[14] * proj[10] + modl[15] * proj[14];
clip[15] = modl[12] * proj[ 3] + modl[13] * proj[ 7] + modl[14] * proj[11] + modl[15] * proj[15];

//提取右面的平面方程系數(shù)
m_Frustum[0][0] = clip[ 3] - clip[ 0];
m_Frustum[0][1] = clip[ 7] - clip[ 4];
m_Frustum[0][2] = clip[11] - clip[ 8];
m_Frustum[0][3] = clip[15] - clip[12];
t = GLfloat(sqrt( m_Frustum[0][0] * m_Frustum[0][0] + m_Frustum[0][1] * m_Frustum[0][1] + m_Frustum[0][2] * m_Frustum[0][2] ));
m_Frustum[0][0] /= t;
m_Frustum[0][1] /= t;
m_Frustum[0][2] /= t;
m_Frustum[0][3] /= t;

//提取左面的平面方程系數(shù)
m_Frustum[1][0] = clip[ 3] + clip[ 0];
m_Frustum[1][1] = clip[ 7] + clip[ 4];
m_Frustum[1][2] = clip[11] + clip[ 8];
m_Frustum[1][3] = clip[15] + clip[12];
t = GLfloat(sqrt( m_Frustum[1][0] * m_Frustum[1][0] + m_Frustum[1][1] * m_Frustum[1][1] + m_Frustum[1][2] * m_Frustum[1][2] ));
m_Frustum[1][0] /= t;
m_Frustum[1][1] /= t;
m_Frustum[1][2] /= t;
m_Frustum[1][3] /= t;

//提取下面的平面方程系數(shù)
m_Frustum[2][0] = clip[ 3] + clip[ 1];
m_Frustum[2][1] = clip[ 7] + clip[ 5];
m_Frustum[2][2] = clip[11] + clip[ 9];
m_Frustum[2][3] = clip[15] + clip[13];
t = GLfloat(sqrt( m_Frustum[2][0] * m_Frustum[2][0] + m_Frustum[2][1] * m_Frustum[2][1] + m_Frustum[2][2] * m_Frustum[2][2] ));
m_Frustum[2][0] /= t;
m_Frustum[2][1] /= t;
m_Frustum[2][2] /= t;
m_Frustum[2][3] /= t;

//提取上面的平面方程系數(shù)
m_Frustum[3][0] = clip[ 3] - clip[ 1];
m_Frustum[3][1] = clip[ 7] - clip[ 5];
m_Frustum[3][2] = clip[11] - clip[ 9];
m_Frustum[3][3] = clip[15] - clip[13];
t = GLfloat(sqrt( m_Frustum[3][0] * m_Frustum[3][0] + m_Frustum[3][1] * m_Frustum[3][1] + m_Frustum[3][2] * m_Frustum[3][2] ));
m_Frustum[3][0] /= t;
m_Frustum[3][1] /= t;
m_Frustum[3][2] /= t;
m_Frustum[3][3] /= t;

//提取遠(yuǎn)面的平面方程系數(shù)
m_Frustum[4][0] = clip[ 3] - clip[ 2];
m_Frustum[4][1] = clip[ 7] - clip[ 6];
m_Frustum[4][2] = clip[11] - clip[10];
m_Frustum[4][3] = clip[15] - clip[14];
t = GLfloat(sqrt( m_Frustum[4][0] * m_Frustum[4][0] + m_Frustum[4][1] * m_Frustum[4][1] + m_Frustum[4][2] * m_Frustum[4][2] ));
m_Frustum[4][0] /= t;
m_Frustum[4][1] /= t;
m_Frustum[4][2] /= t;
m_Frustum[4][3] /= t;

//提取近面的平面方程系數(shù)
m_Frustum[5][0] = clip[ 3] + clip[ 2];
m_Frustum[5][1] = clip[ 7] + clip[ 6];
m_Frustum[5][2] = clip[11] + clip[10];
m_Frustum[5][3] = clip[15] + clip[14];
t = GLfloat(sqrt( m_Frustum[5][0] * m_Frustum[5][0] + m_Frustum[5][1] * m_Frustum[5][1] + m_Frustum[5][2] * m_Frustum[5][2] ));
m_Frustum[5][0] /= t;
m_Frustum[5][1] /= t;
m_Frustum[5][2] /= t;
m_Frustum[5][3] /= t;
}


  
 現(xiàn)在我們可以測(cè)試一個(gè)點(diǎn)或圓是否在視景體內(nèi)了。下面的函數(shù)可以測(cè)試一個(gè)點(diǎn)是否在視景體內(nèi)。 
  

BOOL glCamera::PointInFrustum(glPoint p){ int i; for(i = 0; i < 6; i++) {  if(m_Frustum[i][0] * p.x + m_Frustum[i][1] * p.y + m_Frustum[i][2] * p.z + m_Frustum[i][3] <= 0)  {   return(FALSE);  } } return(TRUE);}

  
 下面的函數(shù)用來(lái)測(cè)試某個(gè)點(diǎn)是否位于當(dāng)前場(chǎng)景物體的前面:
 
  

bool glCamera::IsOccluded(glPoint p){ GLint viewport[4];       GLdouble mvmatrix[16], projmatrix[16];   GLdouble winx, winy, winz;     GLdouble flareZ;       GLfloat bufferZ;      
glGetIntegerv (GL_VIEWPORT, viewport);
glGetDoublev (GL_MODELVIEW_MATRIX, mvmatrix);
glGetDoublev (GL_PROJECTION_MATRIX, projmatrix);

// 返回頂點(diǎn)p在單位立方體中的位置
gluProject(p.x, p.y, p.z, mvmatrix, projmatrix, viewport, &winx, &winy, &winz);
flareZ = winz;

// 讀取點(diǎn)(winx,winy)的深度坐標(biāo)
glReadPixels(winx, winy,1,1,GL_DEPTH_COMPONENT, GL_FLOAT, &bufferZ);

// 如果深度坐標(biāo)小于點(diǎn)的坐標(biāo),則返回true
if (bufferZ < flareZ)
return true;
//否則返回false
else
return false;
}


  
 我們通過(guò)檢測(cè)光源是否正對(duì)我們的視線來(lái)決定是否繪制光暈,但如果你的視點(diǎn)超過(guò)了光源的位置,則會(huì)發(fā)生看不見(jiàn)光暈的現(xiàn)象。為了避免這種現(xiàn)象,我們?cè)谝苿?dòng)視點(diǎn)的使用,也相應(yīng)的移動(dòng)我們的光源。為了在視點(diǎn)和光源之間繪制多個(gè)光暈,我們需要計(jì)算之間的向量,下面的代碼完成這個(gè)功能: 
  

//下面的函數(shù)完成具體的渲染光暈的任務(wù)void glCamera::RenderLensFlare(){ GLfloat Length = 0.0f;
// 如果我們的光源在我們的視線范圍內(nèi),則繪制它
if(SphereInFrustum(m_LightSourcePos, 1.0f) == TRUE)
{
vLightSourceToCamera = m_Position - m_LightSourcePos; // 計(jì)算光源到我們視線的距離
Length = vLightSourceToCamera.Magnitude();

//下面三個(gè)函數(shù)計(jì)算光源位置到光暈結(jié)束位置之間的向量
ptIntersect = m_DirectionVector * Length;
ptIntersect += m_Position;
vLightSourceToIntersect = ptIntersect - m_LightSourcePos;
Length = vLightSourceToIntersect.Magnitude();
vLightSourceToIntersect.Normalize();

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);

 

  
 首先我們需要找到光源位置和視點(diǎn)位置之間的向量,接下來(lái)我們需要在視線的方向設(shè)置一個(gè)插值點(diǎn),這個(gè)點(diǎn)的距離必須和光源位置和視點(diǎn)位置之間的距離相等。完成以后,我們找出可以產(chǎn)生光暈的方向,即下圖紅線的方向,在這個(gè)線上我們可以繪制我們的光暈。


 


 
  

  if (!IsOccluded(m_LightSourcePos)) //如果光暈可見(jiàn)  {   // 渲染中間的光暈   RenderBigGlow(0.60f, 0.60f, 0.8f, 1.0f, m_LightSourcePos, 16.0f);   RenderStreaks(0.60f, 0.60f, 0.8f, 1.0f, m_LightSourcePos, 16.0f);   RenderGlow(0.8f, 0.8f, 1.0f, 0.5f, m_LightSourcePos, 3.5f);
//繪制到光暈結(jié)束位置的0.1處的光暈
pt = vLightSourceToIntersect * (Length * 0.1f);
pt += m_LightSourcePos;
RenderGlow(0.9f, 0.6f, 0.4f, 0.5f, pt, 0.6f);

//繪制到光暈結(jié)束位置的0.15處的光暈
pt = vLightSourceToIntersect * (Length * 0.15f);
pt += m_LightSourcePos;
RenderHalo(0.8f, 0.5f, 0.6f, 0.5f, pt, 1.7f);

//繪制到光暈結(jié)束位置的0.175處的光暈
pt = vLightSourceToIntersect * (Length * 0.175f);
pt += m_LightSourcePos;
RenderHalo(0.9f, 0.2f, 0.1f, 0.5f, pt, 0.83f);

//繪制到光暈結(jié)束位置的0.285處的光暈
pt = vLightSourceToIntersect * (Length * 0.285f);
pt += m_LightSourcePos;
RenderHalo(0.7f, 0.7f, 0.4f, 0.5f, pt, 1.6f);

//繪制到光暈結(jié)束位置的0.2755處的光暈
pt = vLightSourceToIntersect * (Length * 0.2755f);
pt += m_LightSourcePos;
RenderGlow(0.9f, 0.9f, 0.2f, 0.5f, pt, 0.8f);

//繪制到光暈結(jié)束位置的0.4755處的光暈
pt = vLightSourceToIntersect * (Length * 0.4775f);
pt += m_LightSourcePos;
RenderGlow(0.93f, 0.82f, 0.73f, 0.5f, pt, 1.0f);

//繪制到光暈結(jié)束位置的0.49處的光暈
pt = vLightSourceToIntersect * (Length * 0.49f);
pt += m_LightSourcePos;
RenderHalo(0.7f, 0.6f, 0.5f, 0.5f, pt, 1.4f);

//繪制到光暈結(jié)束位置的0.65處的光暈
pt = vLightSourceToIntersect * (Length * 0.65f);
pt += m_LightSourcePos;
RenderGlow(0.7f, 0.8f, 0.3f, 0.5f, pt, 1.8f);

//繪制到光暈結(jié)束位置的0.63處的光暈
pt = vLightSourceToIntersect * (Length * 0.63f);
pt += m_LightSourcePos;
RenderGlow(0.4f, 0.3f, 0.2f, 0.5f, pt, 1.4f);

//繪制到光暈結(jié)束位置的0.8處的光暈
pt = vLightSourceToIntersect * (Length * 0.8f);
pt += m_LightSourcePos;
RenderHalo(0.7f, 0.5f, 0.5f, 0.5f, pt, 1.4f);

//繪制到光暈結(jié)束位置的0.7825處的光暈
pt = vLightSourceToIntersect * (Length * 0.7825f);
pt += m_LightSourcePos;
RenderGlow(0.8f, 0.5f, 0.1f, 0.5f, pt, 0.6f);

//繪制到光暈結(jié)束位置的1.0處的光暈
pt = vLightSourceToIntersect * (Length * 1.0f);
pt += m_LightSourcePos;
RenderHalo(0.5f, 0.5f, 0.7f, 0.5f, pt, 1.7f);

//繪制到光暈結(jié)束位置的0.975處的光暈
pt = vLightSourceToIntersect * (Length * 0.975f);
pt += m_LightSourcePos;
RenderGlow(0.4f, 0.1f, 0.9f, 0.5f, pt, 2.0f);

}
glDisable(GL_BLEND );
glEnable(GL_DEPTH_TEST);
glDisable(GL_TEXTURE_2D);
}
}


  
 好了,下面的函數(shù)用來(lái)繪制四種不同的光暈 
  

//繪制Halo形的光暈void glCamera::RenderHalo(GLfloat r, GLfloat g, GLfloat b, GLfloat a, glPoint p, GLfloat scale){ glPoint q[4];  q[0].x = (p.x - scale);            q[0].y = (p.y - scale);              q[1].x = (p.x - scale);            q[1].y = (p.y + scale);              q[2].x = (p.x + scale);            q[2].y = (p.y - scale);              q[3].x = (p.x + scale);            q[3].y = (p.y + scale);              glPushMatrix();              glTranslatef(p.x, p.y, p.z);          glRotatef(-m_HeadingDegrees, 0.0f, 1.0f, 0.0f); glRotatef(-m_PitchDegrees, 1.0f, 0.0f, 0.0f); glBindTexture(GL_TEXTURE_2D, m_HaloTexture);      glColor4f(r, g, b, a);             glBegin(GL_TRIANGLE_STRIP);            glTexCoord2f(0.0f, 0.0f);       glVertex2f(q[0].x, q[0].y);  glTexCoord2f(0.0f, 1.0f);  glVertex2f(q[1].x, q[1].y);  glTexCoord2f(1.0f, 0.0f);  glVertex2f(q[2].x, q[2].y);  glTexCoord2f(1.0f, 1.0f);  glVertex2f(q[3].x, q[3].y); glEnd();           glPopMatrix();             }
//繪制Gloew形的光暈
void glCamera::RenderGlow(GLfloat r, GLfloat g, GLfloat b, GLfloat a, glPoint p, GLfloat scale)
{
glPoint q[4];

q[0].x = (p.x - scale);
q[0].y = (p.y - scale);

q[1].x = (p.x - scale);
q[1].y = (p.y + scale);

q[2].x = (p.x + scale);
q[2].y = (p.y - scale);

q[3].x = (p.x + scale);
q[3].y = (p.y + scale);

glPushMatrix();
glTranslatef(p.x, p.y, p.z);
glRotatef(-m_HeadingDegrees, 0.0f, 1.0f, 0.0f);
glRotatef(-m_PitchDegrees, 1.0f, 0.0f, 0.0f);
glBindTexture(GL_TEXTURE_2D, m_GlowTexture);
glColor4f(r, g, b, a);

glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(q[0].x, q[0].y);
glTexCoord2f(0.0f, 1.0f);
glVertex2f(q[1].x, q[1].y);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(q[2].x, q[2].y);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(q[3].x, q[3].y);
glEnd();
glPopMatrix();
}

//繪制BigGlow形的光暈
void glCamera::RenderBigGlow(GLfloat r, GLfloat g, GLfloat b, GLfloat a, glPoint p, GLfloat scale)
{
glPoint q[4];

q[0].x = (p.x - scale);
q[0].y = (p.y - scale);

q[1].x = (p.x - scale);
q[1].y = (p.y + scale);

q[2].x = (p.x + scale);
q[2].y = (p.y - scale);

q[3].x = (p.x + scale);
q[3].y = (p.y + scale);

glPushMatrix();
glTranslatef(p.x, p.y, p.z);
glRotatef(-m_HeadingDegrees, 0.0f, 1.0f, 0.0f);
glRotatef(-m_PitchDegrees, 1.0f, 0.0f, 0.0f);
glBindTexture(GL_TEXTURE_2D, m_BigGlowTexture);
glColor4f(r, g, b, a);

glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(q[0].x, q[0].y);
glTexCoord2f(0.0f, 1.0f);
glVertex2f(q[1].x, q[1].y);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(q[2].x, q[2].y);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(q[3].x, q[3].y);
glEnd();
glPopMatrix();
}

//繪制Streaks形的光暈
void glCamera::RenderStreaks(GLfloat r, GLfloat g, GLfloat b, GLfloat a, glPoint p, GLfloat scale)
{
glPoint q[4];

q[0].x = (p.x - scale);
q[0].y = (p.y - scale);

q[1].x = (p.x - scale);
q[1].y = (p.y + scale);

q[2].x = (p.x + scale);
q[2].y = (p.y - scale);

q[3].x = (p.x + scale);
q[3].y = (p.y + scale);

glPushMatrix();
glTranslatef(p.x, p.y, p.z);
glRotatef(-m_HeadingDegrees, 0.0f, 1.0f, 0.0f);
glRotatef(-m_PitchDegrees, 1.0f, 0.0f, 0.0f);
glBindTexture(GL_TEXTURE_2D, m_StreakTexture);
glColor4f(r, g, b, a);

glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(q[0].x, q[0].y);
glTexCoord2f(0.0f, 1.0f);
glVertex2f(q[1].x, q[1].y);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(q[2].x, q[2].y);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(q[3].x, q[3].y);
glEnd();
glPopMatrix();
}

 

  
 你可以使用w,s,a,d變換攝像機(jī)的方向,1,2顯示/關(guān)閉各種信息參數(shù)。C給攝像機(jī)一個(gè)固定的速度,X停止它。

上面就是這個(gè)教程的全部了,所有的問(wèn)題,評(píng)論和抱怨都?xì)g迎。當(dāng)然我不是第一個(gè)作這個(gè)效果的人,下面是其他方面相關(guān)的文章:
http://www.gamedev.net/reference/articles/article874.asp
http://www.gamedev.net/reference/articles/article813.asp
http://www.opengl.org/developers/code/mjktips/lensflare/
http://www.markmorley.com/opengl/frustumculling.html
http://oss.sgi.com/projects/ogl-sample/registry/HP/occlusion_test.txt
http://oss.sgi.com/projects/ogl-sample/registry/NV/occlusion_query.txt
 

posted on 2008-01-05 19:33 sdfasdf 閱讀(2375) 評(píng)論(0)  編輯 收藏 引用 所屬分類: OPENGL
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲无线一线二线三线区别av| 欧美日韩一区二区国产| 亚洲一区二区三区三| 久久青青草综合| 欧美中文字幕精品| 欧美日韩在线第一页| 亚洲高清久久| 一区二区亚洲精品| 亚洲欧美在线另类| 亚洲一本视频| 欧美日本亚洲视频| 亚洲精品美女久久久久| 亚洲激情第一区| 久久一二三国产| 久久一区二区三区国产精品| 国产日产欧美a一级在线| 一二三区精品福利视频| 一本久道久久综合婷婷鲸鱼| 欧美成人69av| 亚洲福利视频网站| 亚洲日本在线视频观看| 老司机免费视频一区二区三区| 久久只有精品| 精品999日本| 久久亚洲精品视频| 欧美不卡视频一区| 亚洲国产综合视频在线观看| 久久综合导航| 亚洲国产成人av在线| 亚洲日本中文字幕区| 欧美高清在线视频观看不卡| 亚洲欧洲精品一区二区| 国产精品99久久久久久有的能看| 欧美激情综合网| 日韩午夜黄色| 亚洲欧美经典视频| 国产欧美日韩在线视频| 亚洲欧洲av一区二区| 久久久精品国产免大香伊| 国产一在线精品一区在线观看| 欧美在线观看你懂的| 久久婷婷蜜乳一本欲蜜臀| 亚洲国产精品久久久久秋霞蜜臀| 免费观看在线综合| 亚洲日本免费电影| 欧美一级成年大片在线观看| 国产自产2019最新不卡| 久久在线免费视频| 亚洲精品影院| 欧美伊人影院| 亚洲国产精选| 欧美四级电影网站| 欧美在线三级| 亚洲精品国久久99热| 欧美亚洲一级| 亚洲国产精品一区| 欧美天堂在线观看| 久久电影一区| 亚洲精品国产精品国自产观看 | 亚洲免费一在线| 国产亚洲一区二区三区| 猛男gaygay欧美视频| 99精品国产在热久久下载| 香蕉成人伊视频在线观看| 亚洲第一天堂av| 欧美性猛交xxxx乱大交蜜桃 | 葵司免费一区二区三区四区五区| 亚洲国产一区二区三区高清| 亚洲欧美日韩在线一区| 亚洲国产精品成人| 国产欧美精品久久| 欧美另类69精品久久久久9999| 亚洲综合社区| 亚洲激情一区二区| 久久综合久久综合久久| 亚洲午夜久久久久久久久电影院 | 午夜精品久久久久久久男人的天堂| 久久久久国色av免费观看性色| 亚洲国产一区二区a毛片| 国产精品第一区| 久久精品视频在线免费观看| 91久久黄色| 久久国产精品99久久久久久老狼| 91久久在线播放| 国产精品免费一区二区三区在线观看| 欧美一区二区三区在线观看视频| 欧美激情精品久久久久久大尺度| 亚洲欧美日本伦理| 亚洲福利视频免费观看| 国产亚洲电影| 欧美区在线观看| 久久国产精品99精品国产| 亚洲久久视频| 蜜臀91精品一区二区三区| 亚洲制服av| 国产一区二区三区在线观看视频 | 国产综合网站| 欧美日韩精品在线播放| 久久久av水蜜桃| 中文在线一区| 亚洲国产精品高清久久久| 久久不射网站| 日韩视频免费在线| 亚洲三级免费电影| 国产一区久久久| 国产精品九九久久久久久久| 欧美国产精品va在线观看| 午夜一区二区三区在线观看| 亚洲激情在线| 亚洲国产一区视频| 欧美成人精品激情在线观看 | 狠狠色伊人亚洲综合成人| 欧美精品免费看| 欧美精品一区二区在线观看| 久久久久久久久综合| 欧美亚洲网站| 在线中文字幕一区| 日韩网站在线观看| 日韩一区二区精品| 日韩视频在线免费观看| 亚洲福利视频二区| 亚洲国产欧美一区二区三区丁香婷| 久久在线观看视频| 久久综合99re88久久爱| 欧美在线观看网站| 一本色道久久99精品综合| 国产一区二区三区四区在线观看 | 国产一区二区三区成人欧美日韩在线观看 | 久久精品五月| 久久久综合网| 久久综合久久综合久久| 久久亚洲影院| 欧美sm视频| 欧美大胆a视频| 欧美亚洲成人免费| 国产精品欧美在线| 国产精品一区二区三区久久久| 欧美日韩综合视频| 国产精品自拍网站| 国产精品美女久久| 国产丝袜美腿一区二区三区| 国产日韩在线不卡| 狠狠色丁香久久婷婷综合_中| 国产一区二区三区最好精华液| 国产中文一区二区| 国产一区二区三区四区在线观看| 亚洲日本va午夜在线影院| 亚洲精品一区在线| 一区二区三区高清在线观看| 亚洲一区在线免费| 久久久999精品视频| 亚洲黄色视屏| 亚洲午夜精品一区二区三区他趣 | 一区二区三区精密机械公司| 中文国产成人精品久久一| 一区二区免费在线视频| 久久久久女教师免费一区| 欧美成人国产va精品日本一级| 欧美日本一区二区三区| 国产精品热久久久久夜色精品三区| 国产美女精品| 亚洲国产精品一区二区久| 亚洲一区久久| 另类天堂视频在线观看| 亚洲精品少妇网址| 午夜精品久久久久久久久久久久| 麻豆免费精品视频| 老司机一区二区三区| 国产精品久久网站| 加勒比av一区二区| 亚洲人成人77777线观看| 久久乐国产精品| 亚洲精品免费在线观看| 性欧美xxxx视频在线观看| 女人天堂亚洲aⅴ在线观看| 国产精品卡一卡二| 亚洲第一黄网| 欧美一区二区三区久久精品| 亚洲国产高清在线观看视频| 午夜精品亚洲一区二区三区嫩草| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩国产另类不卡| 亚洲欧洲视频| 久久夜色精品一区| 亚洲欧美综合v| 欧美精品www| 国产亚洲在线| 久久精品国产亚洲5555| 宅男噜噜噜66一区二区| 欧美黄色片免费观看| 在线电影院国产精品| 亚洲欧美999| 亚洲破处大片| 美女亚洲精品| 一区二区亚洲精品| 久久久久国产精品一区三寸| 欧美一乱一性一交一视频| 国产精品欧美日韩久久| av成人动漫| 亚洲国产精品精华液2区45|