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

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

《基于MFC的OpenGL編程》Part 17 Shadows

Posted on 2010-03-31 20:52 Shuffy 閱讀(445) 評論(0)  編輯 收藏 引用 所屬分類: MFC,OpenGL

Shadows

Conceptually drawing a shadow is quite simple. A shadow is produced when an object keeps light from a source from striking some object or surface behind the object, casting the shadow. The area on the shadowed object's surface outlined by the object casting the shadow appears dark. We can produce a shadow programatically by flattening the original object into the plane of the surface in which the object lies. The object is then drawn in black or some other color. This is a very simple method which works when casting shadows on a flat surface.

從這一篇開始將用到一個第三方庫PixieLib,本文先對這個庫的使用做簡單介紹,后續文章中將不再贅述。

Paul DiLascia是兼職軟件顧問和資深的 Web/UI 設計師。他是《Windows++: Writing Reusable Windows Code in C++》(Windows++:在 C++ 中編寫可重用 Windows 代碼)一書(Addison-Wesley1992)的作者。Paul 在其業余時間里開發出了 PixieLib,可通過他的網站 www.dilascia.com 來獲取該 MFC 類庫。

將下載下來的源代碼編譯后會生成Lib目錄,我們需要用到的就是IncludeLib這兩個目錄,當然你也可以看看它自帶的Samples。由于使用的是最新PixieLib7.1版,因此接下來幾篇文章都在VS2005下進行開發。

1,LibInclude目錄拷貝到新建的MFC 項目目錄下,配置如下:

1)c/c++à附加包含目錄,這里加入”."include”

2)鏈接器à附加庫目錄,這里加入”."lib”

3)輸入à附加依賴項,這里加入PixieLib71.lib

2,在stdafx.h中包含進PixieLib庫文件:

#include <PixieLib.h>         //Pixel Library

 

3,在CCY457OpenGLView類中加入下述變量:

  int m_PixelFormat;       //Pixel Format

      
//Position and Direction

      GLfloat m_PosX;

      GLfloat m_PosY;

      GLfloat m_PosZ;

      GLfloat m_DirX;

      GLfloat m_DirY;

      GLfloat m_DirZ;

      
//Rotation

      GLfloat m_xRot, m_yRot;
//繞x,y軸旋轉的角度,隨時間不斷變化

      
//Increment for Keyboard Control

      GLfloat m_PosIncr;       
//Positional Increment

      GLfloat m_AngIncr;      
//Angular Increment

      
//Angle of Camera With X Axis

      GLfloat m_AngleX;

      GLdouble m_texWrap, m_texFilter, m_texMode; 

      GLfloat m_ShadowMat[
4][4];

      
//All Texture Names

     GLuint m_Texture[
4];

并在構造函數中初始化如下:

CCY457OpenGLView::CCY457OpenGLView()

{

      
//Rotation

      m_xRot 
= 0.0f;

      m_yRot 
= 0.0f;

      
//Position Increment

      m_PosIncr 
= 0.25f;

      
//Angle Increment

      m_AngIncr 
= 5.0f;

      
//Set Initial Camera Position - looking down negative Z

      m_PosX 
= 0.0f;

      m_PosY 
= 0.5f;

      m_PosZ 
= 2.5f;     

      
//Set Initial Viewing Direction - Pointing Down the -ve Z Axis

      m_DirX 
= m_PosX;

      m_DirY 
= m_PosY;

      m_DirZ 
= m_PosZ-m_PosIncr;

      
//Angle of Camera with X Axis

      m_AngleX 
= 90.0f;

      m_texWrap 
= GL_CLAMP;

      m_texMode 
= GL_DECAL;

      m_texFilter 
= GL_NEAREST;

}

4InitializeOpenGL函數修改如下:

BOOL CCY457OpenGLView::InitializeOpenGL()

{

      
//Get a DC for the Client Area

      m_pDC 
= new CClientDC(this);

      
//Failure to Get DC

      
if(m_pDC == NULL)

      {

           MessageBox(
"Error Obtaining DC");

           
return FALSE;

      }

      
//Failure to set the pixel format

      
if(!SetupPixelFormat())

      {

           
return FALSE;

      }

      
//Create Rendering Context

      m_hRC 
= ::wglCreateContext (m_pDC->GetSafeHdc ());

      
//Failure to Create Rendering Context

      
if(m_hRC == 0)

      {

           MessageBox(
"Error Creating RC");

           
return FALSE;

      }

      
//Make the RC Current

      
if(::wglMakeCurrent (m_pDC->GetSafeHdc (), m_hRC)==FALSE)

      {

           MessageBox(
"Error making RC Current");

           
return FALSE;

      }

      
// specify black as clear color

      ::glClearColor(
0.0f0.0f0.0f0.0f);

      
// specify the back of the buffer as clear depth

      ::glClearDepth(
1.0f);

      
// enable depth testing

      ::glEnable(GL_DEPTH_TEST);

      
//Enable Color Tracking

      ::glEnable(GL_COLOR_MATERIAL);

      ::glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE);

      ::glShadeModel(GL_SMOOTH);

      
//Setup Lighting Here

      SetupLighting();

      LoadGLTextures();

      
//Effects

      
//Shadow

      
//Calulate Shadow Matrix

      GLfloat lightPos[] 
= {1.0f,1.5f,-1.0f,0.0f};

      GLfloat points[][
3= {

           {
-2.0f,0.0f,0.0f},

           {
2.0f,0.0f,0.0f},

           {
2.0f,0.0f,-2.0f}

      };

      MakeShadowMatrix(points, lightPos, m_ShadowMat);

      
return TRUE;

}

5,設置燈光的代碼修改如下:

void CCY457OpenGLView::SetupLighting ()

{

      
//Enable Lighting

      glEnable(GL_LIGHTING);

      
//Set up the Light Model

      
//Infinite Viewer

      glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE);

      
//Single Sided Lighting

      glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_FALSE);

      
//Set up the lights

      
//Light 1

      
//Directional Light from Front

      GLfloat m_SceneAmbient1[] 
= {0.5f,0.5f,0.5f,1.0f};

      GLfloat m_SceneDiffuse1[] 
= {1.0f,1.0f,1.0f,1.0f};

      GLfloat m_SceneSpecular1[] 
= {1.0f,1.0f,1.0f,1.0f};

      GLfloat m_ScenePosition1[] 
= {1.0f,1.5f,-1.0f,1.0f};

      GLfloat m_SceneDirection1[]
= {0.0f,0.0f,-1.0f,1.0f};

      glLightfv(GL_LIGHT0,GL_AMBIENT,m_SceneAmbient1);

      glLightfv(GL_LIGHT0,GL_DIFFUSE,m_SceneDiffuse1);

      glLightfv(GL_LIGHT0,GL_SPECULAR,m_SceneSpecular1);

      glLightfv(GL_LIGHT0,GL_POSITION,m_ScenePosition1);

      glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,
75.0f);

      glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,m_SceneDirection1);

      glEnable(GL_LIGHT0);

}

6,繪制代碼修改如下:

void CCY457OpenGLView::RenderScene ()

{
//繪制函數

      
//Position Camera

      gluLookAt(m_PosX,m_PosY,m_PosZ,m_DirX,m_DirY,m_DirZ,
0.0f,1.0f,0.0f);

      
//Draw the Scene

      
//Draw the floor

      
// Draw the ground,

      glEnable(GL_TEXTURE_2D);

      glBindTexture(GL_TEXTURE_2D, m_Texture[
3]);

      glBegin(GL_POLYGON);

      glColor3ub(
0,255,0);

      glTexCoord2f(
0.0f0.0f);

      glVertex3f(
-2.0f0.0f0.0f);

      glTexCoord2f(
1.0f0.0f);

      glVertex3f(
2.0f,0.0f0.0f);

      glColor3ub(
0,100,0);   

      glTexCoord2f(
1.0f1.0f);

      glVertex3f(
2.0f0.0f-2.0f);

      glTexCoord2f(
0.0f1.0f);

      glVertex3f(
-2.0f,0.0f-2.0f);

      glEnd();

      glDisable(GL_TEXTURE_2D);

      
//Draw the Cube

      
// Save the matrix state and do the rotations

      glPushMatrix();

      glTranslatef(
-1.0f,0.6f,-1.0f);

      
// Draw jet at new orientation, put light in correct position

      
// before rotating the jet

      glRotatef(m_xRot,
1.0f,0.0f,0.0f);

      glRotatef(m_yRot,
0.0f,1.0f,0.0f);

      DrawCube(FALSE);

      
// Restore original matrix state

      glPopMatrix();  

      
// Get ready to draw the shadow and the ground

      
// First disable lighting and save the projection state

      glDisable(GL_DEPTH_TEST);

      glDisable(GL_LIGHTING);

      glPushMatrix();

      
// Multiply by shadow projection matrix

      glMultMatrixf((GLfloat 
*)m_ShadowMat);

      glTranslatef(
-1.0f,0.6f,-1.0f);

      glRotatef(m_xRot,
1.0f,0.0f,0.0f);

      glRotatef(m_yRot,
0.0f,1.0f,0.0f);

      
// Pass true to indicate drawing shadow

      DrawCube(TRUE); 

      
// Restore the projection to normal

      glPopMatrix();

      
// Restore lighting state variables

      glEnable(GL_DEPTH_TEST);

      glEnable(GL_LIGHTING);

      
// Draw the light source

      glPushMatrix();

      glTranslatef(
1.5f,1.5f,-1.0f);

      glColor3ub(
255,255,0);

      glutSolidSphere(
0.01f,10,10);

      glPopMatrix();

}

7,用來計算平面法向量,繪制物體,計算陰影矩陣的輔助函數:


void CCY457OpenGLView::ReduceToUnit(GLfloat vector[3])

{

      
float length;

      
// Calculate the length of the vector          

      length 
= (float)sqrt((vector[0]*vector[0]) +

           (vector[
1]*vector[1]) +

           (vector[
2]*vector[2]));

      
// Keep the program from blowing up by providing an exceptable

      
// value for vectors that may calculated too close to zero.

      
if(length == 0.0f)

           length 
= 1.0f;

      
// Dividing each element by the length will result in a

      
// unit normal vector.

      vector[
0/= length;

      vector[
1/= length;

      vector[
2/= length;

}

void CCY457OpenGLView::CalcNormal(GLfloat v[3][3],GLfloat out[3])

{

      
float v1[3],v2[3];

      
static const int x = 0;

      
static const int y = 1;

      
static const int z = 2;

      
// Calculate two vectors from the three points

      v1[x] 
= v[0][x] - v[1][x];

      v1[y] 
= v[0][y] - v[1][y];

      v1[z] 
= v[0][z] - v[1][z];

      v2[x] 
= v[1][x] - v[2][x];

      v2[y] 
= v[1][y] - v[2][y];

      v2[z] 
= v[1][z] - v[2][z];

      
// Take the cross product of the two vectors to get

      
// the normal vector which will be stored in out

      
out[x] = v1[y]*v2[z] - v1[z]*v2[y];

      
out[y] = v1[z]*v2[x] - v1[x]*v2[z];

      
out[z] = v1[x]*v2[y] - v1[y]*v2[x];

      
// Normalize the vector (shorten length to one)

      ReduceToUnit(
out);

}

//Effects

//Shadow

// Create shadow matrix from the plane equation coeff's and pos of light

void CCY457OpenGLView::MakeShadowMatrix(GLfloat points[3][3], GLfloat lightPos[4], GLfloat destMat[4][4])

{

      GLfloat planeCoeff[
4];

      GLfloat dot;

      
// Find the plane equation coefficients

      
// Find the first three coefficients the same way we

      
// find a normal.

      CalcNormal(points,planeCoeff);

      
// Find the last coefficient by back substitutions

      planeCoeff[
3= - (

           (planeCoeff[
0]*points[2][0]) + (planeCoeff[1]*points[2][1]) +

           (planeCoeff[
2]*points[2][2]));

      
// Dot product of plane and light position

      dot 
= planeCoeff[0* lightPos[0+

           planeCoeff[
1* lightPos[1+

           planeCoeff[
2* lightPos[2+

           planeCoeff[
3* lightPos[3];

      
// Now do the projection

      
// First column

      destMat[
0][0= dot - lightPos[0* planeCoeff[0];

      destMat[
1][0= 0.0f - lightPos[0* planeCoeff[1];

      destMat[
2][0= 0.0f - lightPos[0* planeCoeff[2];

      destMat[
3][0= 0.0f - lightPos[0* planeCoeff[3];

      
// Second column

      destMat[
0][1= 0.0f - lightPos[1* planeCoeff[0];

      destMat[
1][1= dot - lightPos[1* planeCoeff[1];

      destMat[
2][1= 0.0f - lightPos[1* planeCoeff[2];

      destMat[
3][1= 0.0f - lightPos[1* planeCoeff[3];

      
// Third Column

      destMat[
0][2= 0.0f - lightPos[2* planeCoeff[0];

      destMat[
1][2= 0.0f - lightPos[2* planeCoeff[1];

      destMat[
2][2= dot - lightPos[2* planeCoeff[2];

      destMat[
3][2= 0.0f - lightPos[2* planeCoeff[3];

// Fourth Column

      destMat[
0][3= 0.0f - lightPos[3* planeCoeff[0];

      destMat[
1][3= 0.0f - lightPos[3* planeCoeff[1];

      destMat[
2][3= 0.0f - lightPos[3* planeCoeff[2];

      destMat[
3][3= dot - lightPos[3* planeCoeff[3];

}

void CCY457OpenGLView::DrawCubeTex ()

{

      glScalef(
0.3f0.3f0.3f);              

      glEnable(GL_TEXTURE_2D);

      glBindTexture(GL_TEXTURE_2D,m_Texture[
0]);

      
//Front Face

      glBegin(GL_POLYGON);

      glTexCoord2f(
0,0);

      glVertex3f(
-1.0f,-1.0f,0.0f);

      glTexCoord2f(
1,0);

      glVertex3f( 
1.0f,-1.0f,0.0f);

      glTexCoord2f(
1,1);

      glVertex3f( 
1.0f1.0f,0.0f);

      glTexCoord2f(
0,1);

      glVertex3f(
-1.0f1.0f,0.0f);

      glEnd();

      
//Back Face

      glBegin(GL_POLYGON);

      glTexCoord2f(
1,0);

      glVertex3f(
-1.0f,-1.0f,-1.0f);

      glTexCoord2f(
1,1);

      glVertex3f(
-1.0f1.0f,-1.0f);

      glTexCoord2f(
0,1);

      glVertex3f( 
1.0f1.0f,-1.0f);

      glTexCoord2f(
0,0);

      glVertex3f( 
1.0f,-1.0f,-1.0f);

      glEnd();

      glBindTexture(GL_TEXTURE_2D,m_Texture[
1]);

      
//Left Face

      glBegin(GL_POLYGON);

      glTexCoord2f(
1,0);

      glVertex3f(
-1.0f,-1.0f0.0f);

      glTexCoord2f(
1,1);

      glVertex3f(
-1.0f1.0f0.0f);

      glTexCoord2f(
0,1);

      glVertex3f(
-1.0f1.0f,-1.0f);

      glTexCoord2f(
0,0);

      glVertex3f(
-1.0f,-1.0f,-1.0f);

      glEnd();

      
//Right Face

      glBegin(GL_POLYGON);

      glTexCoord2f(
0,0);

      glVertex3f(
1.0f,-1.0f0.0f);

      glTexCoord2f(
1,0);

      glVertex3f(
1.0f,-1.0f,-1.0f);

      glTexCoord2f(
1,1);

      glVertex3f(
1.0f1.0f,-1.0f);

      glTexCoord2f(
0,1);

      glVertex3f(
1.0f1.0f0.0f);

      glEnd();

      glBindTexture(GL_TEXTURE_2D,m_Texture[
2]);

      
//Top Face

      glBegin(GL_POLYGON);

      glTexCoord2f(
0,0);

      glVertex3f(
-1.0f1.0f0.0f);

      glTexCoord2f(
0,1);

      glVertex3f( 
1.0f1.0f0.0f);

      glTexCoord2f(
1,1);

      glVertex3f( 
1.0f1.0f-1.0f);

      glTexCoord2f(
1,0);

      glVertex3f(
-1.0f1.0f-1.0f);

      glEnd();

      
//Botton Face

      glBegin(GL_POLYGON);

      glTexCoord2f(
0,1);

      glVertex3f(
-1.0f-1.0f0.0f);

      glTexCoord2f(
0,0);

      glVertex3f(
-1.0f-1.0f-1.0f);

      glTexCoord2f(
1,0);

      glVertex3f( 
1.0f-1.0f-1.0f);

      glTexCoord2f(
1,1);

      glVertex3f( 
1.0f-1.0f0.0f);

      glEnd();

      glDisable(GL_TEXTURE_2D);

}

void CCY457OpenGLView::DrawCubeNoTex ()

{

      glScalef(
0.3f0.3f0.3f);              

      
//Front Face

      glBegin(GL_POLYGON);

      glVertex3f(
-1.0f,-1.0f,0.0f);

      glVertex3f( 
1.0f,-1.0f,0.0f);

      glVertex3f( 
1.0f1.0f,0.0f);

      glVertex3f(
-1.0f1.0f,0.0f);

      glEnd();

      
//Back Face

      glBegin(GL_POLYGON);

      glVertex3f(
-1.0f,-1.0f,-1.0f);

      glVertex3f(
-1.0f1.0f,-1.0f);

      glVertex3f( 
1.0f1.0f,-1.0f);

      glVertex3f( 
1.0f,-1.0f,-1.0f);

      glEnd();

      
//Left Face

      glBegin(GL_POLYGON);

      glVertex3f(
-1.0f,-1.0f0.0f);

      glVertex3f(
-1.0f1.0f0.0f);

      glVertex3f(
-1.0f1.0f,-1.0f);

      glVertex3f(
-1.0f,-1.0f,-1.0f);

      glEnd();

      
//Right Face

      glBegin(GL_POLYGON);

      glVertex3f(
1.0f,-1.0f0.0f);

      glVertex3f(
1.0f,-1.0f,-1.0f);

      glVertex3f(
1.0f1.0f,-1.0f);

      glVertex3f(
1.0f1.0f0.0f);

      glEnd();

      
//Top Face

      glBegin(GL_POLYGON);

      glVertex3f(
-1.0f1.0f0.0f);

      glVertex3f( 
1.0f1.0f0.0f);

      glVertex3f( 
1.0f1.0f-1.0f);

      glVertex3f(
-1.0f1.0f-1.0f);

      glEnd();

      
//Botton Face

      glBegin(GL_POLYGON);

      glVertex3f(
-1.0f-1.0f0.0f);

      glVertex3f(
-1.0f-1.0f-1.0f);

      glVertex3f( 
1.0f-1.0f-1.0f);

      glVertex3f( 
1.0f-1.0f0.0f);

      glEnd();

}

 

作者:洞庭散人

出處:http://phinecos.cnblogs.com/    

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接:
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区二区| 欧美不卡三区| 亚洲欧洲综合| 亚洲三级色网| 亚洲一级黄色片| 欧美一区二区三区四区在线观看地址 | 欧美激情中文不卡| 亚洲精品1区| 亚洲欧美成人综合| 美女日韩在线中文字幕| 欧美午夜精品电影| 一区二区视频免费在线观看| 亚洲缚视频在线观看| 亚洲视频在线观看三级| 久久久久欧美精品| 亚洲理论在线| 久久国产色av| 欧美深夜影院| 欧美日韩成人在线播放| 夜夜爽www精品| 亚洲午夜国产一区99re久久| 9i看片成人免费高清| 欧美在线观看一区二区三区| 欧美成人午夜激情在线| 亚洲午夜国产成人av电影男同| 久久久久国产免费免费| 国产精品久久久久av免费| 亚洲激情视频在线播放| 欧美在线1区| 亚洲精品一区二区三区蜜桃久| 香蕉久久夜色精品国产| 欧美日韩在线播| 亚洲破处大片| 久久精品一区二区国产| 一区二区三区精品国产| 免费高清在线一区| 黄色欧美成人| 久久精品亚洲精品| 亚洲深夜福利视频| 欧美日韩国产123| 亚洲日本成人网| 蘑菇福利视频一区播放| 午夜在线成人av| 国产精品免费观看视频| 一本一本久久a久久精品牛牛影视| 欧美不卡高清| 美女视频网站黄色亚洲| 在线观看欧美一区| 久久久亚洲成人| 久久成人免费日本黄色| 国产午夜精品久久久久久久| 亚洲欧美日韩系列| 中文精品视频一区二区在线观看| 欧美日韩国产色站一区二区三区| 亚洲激情专区| 最新成人av在线| 欧美日本精品| 亚洲免费视频在线观看| 亚洲网站在线| 国产日韩精品一区二区| 久久久7777| 久久亚洲捆绑美女| 久久精品国产久精国产一老狼| 国产精品久久久久久久浪潮网站| 亚洲特级毛片| 亚洲一级二级在线| 国产性做久久久久久| 久久亚洲风情| 欧美二区乱c少妇| a4yy欧美一区二区三区| 在线亚洲成人| 国产亚洲精品久久久| 久久久人成影片一区二区三区| 久久久久久久一区二区三区| 亚洲欧洲日夜超级视频| 亚洲六月丁香色婷婷综合久久| 欧美天堂亚洲电影院在线播放| 久久久久99精品国产片| 亚洲激情一区| 欧美成人午夜77777| 欧美人妖在线观看| 亚洲女人天堂成人av在线| 亚洲欧美一区二区在线观看| 国产在线视频欧美| 亚洲精品国产精品乱码不99 | 欧美性片在线观看| 欧美亚洲综合在线| 玖玖综合伊人| 亚洲淫性视频| 久久精品九九| 中文无字幕一区二区三区| 香蕉成人伊视频在线观看| 亚洲三级免费| 欧美一区二区三区精品| 亚洲日本免费| 久久福利资源站| 亚洲一区二区毛片| 久久婷婷综合激情| 亚洲女性喷水在线观看一区| 久久精品系列| 亚洲在线视频| 日韩午夜在线视频| 欧美视频一区在线| 亚洲一区三区视频在线观看| 久久久国产精品亚洲一区| 一区二区三区精品视频在线观看| 先锋影音久久久| 99在线观看免费视频精品观看| 香蕉久久夜色| 午夜精品成人在线| 欧美精品日韩精品| 免费不卡亚洲欧美| 一区二区三区导航| 亚洲第一页自拍| 欧美在线免费观看视频| 亚洲男女自偷自拍| 欧美精品自拍偷拍动漫精品| 麻豆成人在线| 国产综合自拍| 久久爱www.| 久久青草久久| 一区二区三区在线观看欧美| 欧美中文字幕在线观看| 午夜老司机精品| 国产精品啊v在线| 日韩一区二区精品视频| 亚洲日本在线视频观看| 蜜桃视频一区| 欧美成人一区二区三区| 黑人操亚洲美女惩罚| 欧美一区二区三区免费看| 久久精品官网| 国产在线欧美| 久久精品人人做人人综合| 久久久欧美精品sm网站| 国产亚洲毛片在线| 久久国产加勒比精品无码| 老司机一区二区| 亚洲欧洲日韩女同| 欧美精品九九99久久| 99国产欧美久久久精品| 亚洲欧美精品中文字幕在线| 国产精品99久久久久久久女警| 午夜久久久久久| 久久精品夜色噜噜亚洲a∨| 国产视频一区在线观看| 久久久久国产精品厨房| 欧美激情一区二区三区在线视频观看| 亚洲国产精品福利| 欧美电影免费观看大全| 精品av久久久久电影| 免费国产一区二区| 亚洲韩国青草视频| 亚洲一二三区视频在线观看| 国产精品视频| 久久久久久久高潮| 亚洲激情精品| 欧美怡红院视频一区二区三区| 国语自产精品视频在线看一大j8| 久久久久久久尹人综合网亚洲| 亚洲精华国产欧美| 久久99在线观看| 亚洲激情在线观看视频免费| 国产精品麻豆va在线播放| 久久久精品日韩| 一区二区国产精品| 麻豆精品精华液| 亚洲午夜精品福利| 极品少妇一区二区| 欧美性片在线观看| 欧美69wwwcom| 午夜精品久久久久| 亚洲人久久久| 久久午夜av| 亚洲欧美日韩区| 亚洲精选久久| 激情丁香综合| 国产精品视频在线观看| 欧美成人免费大片| 久久se精品一区二区| 99国产精品一区| 欧美大片免费观看| 久久国产一区二区| 亚洲视频在线免费观看| 亚洲电影专区| 国产欧美日韩一区二区三区在线| 久久久久久精| 午夜精品国产精品大乳美女| 亚洲欧洲日夜超级视频| 久久一区二区精品| 欧美专区亚洲专区| 一区二区三区四区在线| 最新日韩在线| 国产农村妇女毛片精品久久莱园子| 亚洲黄色成人久久久| 99精品热视频|