久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 編程 > C++ > 正文

在C++ Builder中進行DirectX編程(2)

2019-09-06 23:34:00
字體:
來源:轉載
供稿:網友

                    2.3 裝入并顯示圖形文件

為了簡明地說明采用DirectDraw圖形文件的顯示技術,我們以示例程序dx2介紹圖面、圖形文件裝入、圖形縮放、圖形在圖面上顯示等的初步概念和實現技術。

2.3.1 DirectDraw顯示圖形的技術

為了顯示圖象,DirectDraw必需首先擁有類似畫布(canvas)的繪圖空間,DirectDraw并不向在DOS下那樣簡單地將顯示緩存作為繪畫的對象,而是通過DirectDraw對象創建各種不同種類的“圖面”(Suerface),圖面上的內容可以被應用程序自由地拷貝、組合,生成千變萬化的圖形。

2.3.1.1圖面分以下幾種類型:

(1)主圖面(Primary圖面):即在屏幕上顯示出來的圖面,就是GDI用于繪制Windows用戶界面的圖面。每個DirectDraw對象只能有一個主圖面,主圖面的尺寸、位置和格式由系統當前的顯示模式決定,不能改動。

(2)后臺圖面(Off-screen圖面):此類圖面不能被直接看到。一般來說,后臺圖面往往用于作為游戲精靈動畫、背景圖形等部件的存儲緩沖區。后臺圖面的尺寸是可以調整的,且可以有多個后臺圖面,其大小根據實際情況調整,不要太大或太小。一種典型的例子是:有一個精靈的動畫由4張128點陣圖形組成,那么可以將后臺圖面定義為256點的方陣,將這個動畫序列存儲下來讀者可能認為可以創建一個比主圖面大的后臺圖面以便保存游戲背景,這樣可以方便地實現滾屏,但是,DirectDraw限制后臺圖面的尺寸不能比主圖面大,除非系統的顯示卡支持。能否實現大的后臺圖面我們將在以后敘述。

(3)復合圖面(Complex圖面)和翻轉鏈(Flipping Chain):這種圖面主要用于生成平滑動畫。有關技術待制作動畫時介紹。

(4)覆蓋圖面(Overlay圖面):這是一種由硬件支持的圖面,DirectDraw不能仿真。有關技術在后面介紹。

DirectDraw可以把圖面創建在顯示內存或系統內存中,而顯示內存又分為常規顯示內存和AGP加速圖形接口內存。由于顯示內存容量是有限的,所以每個圖面具體應該創建在哪部分存儲區域中應該統籌規劃,一般將使用頻繁,需要硬件加速或實現功能的圖面安排在顯示內存。如果您不指定圖面創建的位置,DirectDraw將首先在常規顯示內存創建圖面,當常規顯示內存不夠時,若系統支持AGP內存,則先使用AGP內存,最終使用系統內存。

2.3.1.2 圖形文件的裝入

圖形文件裝入到圖面并不象想象的那么簡單,因為裝入的圖形的點陣可能與、圖面的點陣不同,這就存在圖形的縮放。另外,圖形數據在內存中的移動、復制,也是需要處理的內容。對于Windows的設備無關位圖,我們可以考慮使用Windows的功能實現:

(1)采用LoadImage函數裝入圖形文件

(2)采用圖面的GetDC方法獲得圖面與GDI兼容的設備上下文

(3)采用BitBlt函數將圖形數據拷貝到圖面中

有關GDI編程請參看有關Windows編程資料,這里讀者只需要知道固定的用法就可以了。

2.3.1.3 圖面的丟失

在DirectDraw應用程序被最小化、屏幕顯示方式改變或用戶按Alt+Tab鍵切換當前應用程序時,圖面將會丟失,因此在重新回到DirectDraw應用程序中時,必需用Restore方法恢復圖面。遺憾的是,雖然圖面被恢復了,但其中圖形數據卻丟失了,需要重新繪制。

2.3.2 dx2運行過程

啟動dx2程序后,只有第一個“執行”按鈕可以使用,按下該按鈕后,系統將創建DirectDraw對象,并設置為800*600全屏幕顯示方式;按順序按下“創建主圖面”、“創建

圖2.2 dx2 裝入并顯示圖形文件程序運行界面

后臺圖面”按鈕,分別創建對應屏幕顯示的主圖面和100*100點陣的后臺圖面;按下“后臺圖面裝入圖形”按鈕,則圖形文件view.bmp被一100*100點陣裝入到后臺圖面,屏幕上看不見圖形;再按下“主圖面裝入圖形”按鈕,view.bmp以200*100點陣縮放后裝入到主圖面(屏幕)的(0,0)位置,此時圖形顯示在屏幕左上角;繼續按“拷貝后臺圖面到主圖面”,將把后臺圖面的100*100圖形顯示在屏幕的(200,0)位置,我們可以看到兩副同樣的圖形以不同的縮放比例并排顯示在屏幕左上方;按下“圖面丟失”后,屏幕被設置成640*480的顯示方式,屏幕上顯示出的圖形消失了;用“恢復丟失的圖面”按鈕重新設置顯示方式為800*600(必需恢復顯示方式,否則圖面恢復將會失敗)并恢復圖面,此時,失去的圖形在屏幕上仍然看不見;最后,按“重新顯示圖形”來重新繪制view.bmp,屏幕重新展現原有的圖形。

 

2.3.3 dx2程序的編程實現

2.2.2 dx1編程實現

啟動C++ Builder后在窗口Form1中設計如圖2.2的操作界面,各對象相關屬性設置如表2.3:

控件對象類型
控件對象名稱
相關屬性
屬性值

TForm
Form1
Caption
DirectX 練習程序1

TLabel
Label1
Caption
運行狀態:

TLabel
Label2
Caption
設備的枚舉

Tlabel
Label3
Caption
顯示模式DDraw2

TEdit
Edit1
Text
(空)

ReadOnly
True

TGroupBox
GroupBox1
Caption
狀態

TCheckBox
CheckBox6
Caption
DDSCL_NOWINDOWCHANGES

Checked
true

TButton
Button1
Caption
執行

TButton
Button2
Caption
創建主圖面

Enabled
False

TButton
Button3
Caption
創建后臺圖面

Enabled
False

TButton
Button4
Caption
后臺圖面裝入圖形

Enabled
False

TButton
Button5
Caption
主圖面裝入圖形

Enabled
False

TButton
Button6
Caption
拷貝后臺圖面到主圖面

Enabled
False

TButton
Button7
Caption
圖面丟失:設置640*480方式

Enabled
False

TButton
Button8
Caption
恢復已丟失的圖面

Enabled
False

TButton
Button9
Caption
重新顯示圖形

Enabled
False


 

表2.3 dx2控件對象屬性設置一覽表

2.3.3.1 創建主圖面

用HRESULT IDirectDraw::CreateSurface來創建圖面:

lpDD2->CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,

LPDIRECTDRAWSURFACE FAR *lpDDSurface,

Iunknown FAR *pUnkOuter)

(1)參數lpDDSurfaceDesc是一個志向DDSURFACEDESC結構的指針,DDSURFACEDESC結構的定義比較復雜,幸好一般只需要使用其中很少的一部分。結構DDSURFACEDESC的部分描述如表2.4所示:

結構成員
描述

DOWRD dwSize
DDSURFACE結構的尺寸。在使用此結構之前,此項數據必需用sizeof函數設置

DWORD dwFlags
控制標志。主要可以設置的標志為:

DDSD_CAPS、

DDSD_HEIGHT、

DDSD_WIDTH、

DDSD_BACKBUFFERCOUNT、

DDSD_PIXELFORMATDENG 等

DWORD dwHeight
圖面高度。主圖面不需要設置

DWORD dwWidth
圖面寬度。主圖面不需要設置

DDSCAPS ddsCaps
圖面能力。DDSCAPS也是一個結構,在創建圖面時需要設置其成員dwCaps的值,以便確定所建圖面的性質。

DwCaps的取值主要有:

DDSCAPS_PRIMARYSURFACE:主圖面

DDSCAPS_OFFSCREENPLAIN:后臺圖面

DDSCAPS_COMPLEX:復合圖面

DDSCAPS_FLIP:圖面翻轉鏈

DDSCAPS_OVERLAY:覆蓋圖面

DDSCAPS_VIDEOMEMORY:圖面創建在顯示內存

DDSCAPS_LOCALVIDMEM:使用常規顯示內存

DDSCAPS_NONLOCALVIDMEM:使用AGP內存

DDSCAPS_SYSTEMMEMORY:圖面創建在系統內存


 

表2.4 DDSURFACEDESC結構的部分成員說明

(2)參數lpDDSurface返回一個指向所創建圖面的指針。

(3)參數pUnkOuter未使用,必需為NULL。

創建主圖面需要以下步驟:

 

(1)獲得并設置DDSURFACEDESC結構的尺寸dwSize:ddsd.dwSize=sizeof(ddsd);

(2)簡單地設置ddsd.dwFlags=DDSD_CAPS;

(3)設置主圖面標志:ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;

(4)調用CreateSurface方法創建圖面。

 

2.3.3.2 創建后臺圖面

后臺圖面的創建與創建主圖面基本相同,只是在DDDURFACEDESC結構中多給出一些信息。創建后臺圖面需要以下步驟:

(1) 獲得并設置DDSURFACEDESC結構的尺寸dwSize:ddsd.dwSize=sizeof(ddsd);

(2) 設置ddsd.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;

(3) 設置后臺表面的寬和高(dx2中設為100):ddsd.dwHeight=100; ddsd.dwWidth=100;

(4) 設置后臺圖面標志:ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;

(5)調用CreateSurface方法創建圖面。

 

2.3.3.3 圖形文件的裝入后臺圖面和圖形文件的裝入主圖面

圖形文件的裝入主要采用Windows的函數,雖然使用C++Builder的TCavas對象打開圖形文件要方便一些,但是在BitBlt時不夠穩定,因此dx2還是選擇了前者。

dx2在實現圖形內存數據復制時采用了GDI,在DirectDrawSurface對象中有GetDC和ReleaseDC兩個方法,以便取得HDC并調用GDI。

HRESULT IDirectDrawSurface::GetDC(HDC FAR *hdc)

HRESULT IDirectDrawSurface::ReleaseDC(HDC hdc)

參數hdc是一個設備句柄。

BitBlt雖然速度比較慢,但是兼容性好,能夠支持不同的顯示模式,而且能夠自動進行格式轉換。

2.3.3.4 后臺圖面圖形拷貝到主圖面顯示

這里同樣使用了BitBlt,將后臺圖面的數據復制到主圖面并顯示出來。

2.3.3.5 丟失圖面及恢復初始顯示方式和圖面

在dx2中我們演示了當改變屏幕顯示方式時,圖面丟失的現象,并且說明了在圖面丟失后可以用HRESULT IDirectDrawSurface::Restore()方法來恢復圖面,同時必需重新繪制圖面上的圖形。

Restore方法沒有參數,但是若要成功恢復已丟失的圖面,必需屏幕顯示方式重新恢復到其初始的狀態。

為了判斷圖面是否已經丟失,也可以使用HRESULT IDirectDrawSurface::IsLost()方法來進行檢測,若返回值為DDERR_SURFACELOST則說明圖面確實丟失了。在dx2中沒有進行此判斷,讀者可以根據自己的理解修改dx2,實現恢復圖面前首先進行圖面是否丟失的判斷。

2.3.4 dx2源程序

2.3.4.1 dx2主要文件的組成為:工程文件(dx2.bpr)、窗口文件(main.cpp)、頭文件(main.h)、view.bmp。

2.3.4.2 頭文件main.h

#ifndef mainH

#define mainH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Dialogs.hpp>

#include "d:oolsdx5sdksdkincddraw.h"

//---------------------------------------------------------------------------

char CR[]={13,10,0};

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TButton *Button1;

TLabel *Label1;

TGroupBox *GroupBox1;

TMemo *Memo1;

TButton *Button2;

TButton *Button3;

TButton *Button4;

TButton *Button5;

TButton *Button6;

TButton *Button7;

TButton *Button8;

TButton *Button9;

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall FormClose(TObject *Sender, TCloseAction &Action);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall Button5Click(TObject *Sender);

void __fastcall Button6Click(TObject *Sender);

void __fastcall Button7Click(TObject *Sender);

void __fastcall Button8Click(TObject *Sender);

void __fastcall Button9Click(TObject *Sender);

private: // User declarations

LPDIRECTDRAW FAR lpDD;

LPDIRECTDRAW2 FAR lpDD2;

DDSURFACEDESC ddsd;

LPDIRECTDRAWSURFACE FAR lpDDPrimary,lpDDOffScreen;

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

 

2.3.4.3 程序文件main.cpp

#include <vcl.h>

#pragma hdrstop

 

#include "main.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if(!FAILED(DirectDrawCreate(NULL,&lpDD,NULL)))

{

if(!FAILED(lpDD->QueryInterface(IID_IDirectDraw2,(LPVOID *)&lpDD2)))

{

lpDD->Release();

if(!FAILED(lpDD2->SetCooperativeLevel(Handle,

DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN|DDSCL_NOWINDOWCHANGES)))

{

if(!FAILED(lpDD2->SetDisplayMode(800,600,16,0,0)))

{

Memo1->Lines->Text=Memo1->Lines->Text+"Create DirectDraw Object OK."+(String)CR;

Button1->Enabled=false;

Button2->Enabled=true;

return;

}

}

}

}

Memo1->Lines->Text=Memo1->Lines->Text+"Create DirectDraw Object Failed."+(String)CR;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

ZeroMemory(&ddsd,sizeof(ddsd));

ddsd.dwSize=sizeof(ddsd);

ddsd.dwFlags=DDSD_CAPS;

ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;

if(FAILED(lpDD2->CreateSurface(&ddsd,&lpDDPrimary,NULL)))

Memo1->Lines->Text=Memo1->Lines->Text+"Create Priamry Surface Failed."+(String)CR;

else

{

Memo1->Lines->Text=Memo1->Lines->Text+"Create Priamry Surface OK."+(String)CR;

Button2->Enabled=false;

Button3->Enabled=true;

}

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{

lpDD2->Release();

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button3Click(TObject *Sender)

{

ZeroMemory(&ddsd,sizeof(ddsd));

ddsd.dwSize=sizeof(ddsd);

ddsd.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;

ddsd.dwHeight=100;

ddsd.dwWidth=100;

ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;

if(FAILED(lpDD2->CreateSurface(&ddsd,&lpDDOffScreen,NULL)))

Memo1->Lines->Text=Memo1->Lines->Text+"Create OffScreen Surface Failed."+(String)CR;

else

{

Memo1->Lines->Text=Memo1->Lines->Text+"Create OffScreen Surface OK."+(String)CR;

Button3->Enabled=false;

Button4->Enabled=true;

}

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button4Click(TObject *Sender)

{

HDC hdc,hdcImage;

HBITMAP hbm;

hbm=(HBITMAP)LoadImage(NULL,"view.bmp",IMAGE_BITMAP,100,100,LR_LOADFROMFILE|LR_CREATEDIBSECTION);

hdcImage=CreateCompatibleDC(NULL);

SelectObject(hdcImage,hbm);

if(FAILED(lpDDOffScreen->GetDC(&hdc)))

Memo1->Lines->Text=Memo1->Lines->Text+"Get DC of OffScreen Screen Surface Failed."+(String)CR;

else

{

Memo1->Lines->Text=Memo1->Lines->Text+"Get DC of OffScreen Screen Surface OK."+(String)CR;

if(BitBlt(hdc,0,0,100,100,hdcImage,0,0,SRCCOPY)==FALSE)

Memo1->Lines->Text=Memo1->Lines->Text+"OffScreen Screen BitBlt Failed."+(String)CR;

else

{

Memo1->Lines->Text=Memo1->Lines->Text+"OffScreen Screen BitBlt OK."+(String)CR;

Button4->Enabled=false;

Button5->Enabled=true;

}

lpDDOffScreen->ReleaseDC(hdc);

}

if(hdcImage) DeleteDC(hdcImage);

if(hbm) DeleteObject(hbm);

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button5Click(TObject *Sender)

{

HDC hdc,hdcImage;

HBITMAP hbm;

hbm=(HBITMAP)LoadImage(NULL,"view.bmp",IMAGE_BITMAP,200,100,LR_LOADFROMFILE|LR_CREATEDIBSECTION);

hdcImage=CreateCompatibleDC(NULL);

SelectObject(hdcImage,hbm);

if(FAILED(lpDDPrimary->GetDC(&hdc)))

Memo1->Lines->Text=Memo1->Lines->Text+"Get DC of Primary Screen Surface Failed."+(String)CR;

else

{

Memo1->Lines->Text=Memo1->Lines->Text+"Get DC of Primary Screen Surface OK."+(String)CR;

if(BitBlt(hdc,0,0,200,100,hdcImage,0,0,SRCCOPY)==FALSE)

Memo1->Lines->Text=

Memo1->Lines->Text+"Primary Screen BitBlt Failed."+(String)CR;

else

{

Memo1->Lines->Text=Memo1->Lines->Text+"Primary Screen BitBlt OK."+(String)CR;

Button5->Enabled=false;

Button6->Enabled=true;

}

lpDDPrimary->ReleaseDC(hdc);

}
if(hdcImage) DeleteDC(hdcImage);

if(hbm) DeleteObject(hbm);

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button6Click(TObject *Sender)

{

HDC hdcPrimary,hdcOffScreen;

lpDDPrimary->GetDC(&hdcPrimary);

lpDDOffScreen->GetDC(&hdcOffScreen);

BitBlt(hdcPrimary,200,0,100,100,hdcOffScreen,0,0,SRCCOPY);

lpDDPrimary->ReleaseDC(hdcPrimary);

lpDDOffScreen->ReleaseDC(hdcOffScreen);

Memo1->Lines->Text=Memo1->Lines->Text+"OffScreen To Primary OK."+(String)CR;

Button6->Enabled=false;

Button7->Enabled=true;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button7Click(TObject *Sender)

{

lpDD2->SetDisplayMode(640,480,16,0,0);

if(lpDDPrimary->IsLost()==DDERR_SURFACELOST&&lpDDOffScreen->IsLost()==DDERR_SURFACELOST)

Memo1->Lines->Text=Memo1->Lines->Text+"Surfaces are Lost."+(String)CR;

else

Memo1->Lines->Text=Memo1->Lines->Text+"Surfaces remain."+(String)CR;

Button7->Enabled=false;

Button8->Enabled=true;

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button8Click(TObject *Sender)

{

lpDD2->SetDisplayMode(800,600,16,0,0);

lpDDPrimary->Restore();

lpDDOffScreen->Restore();

Memo1->Lines->Text=Memo1->Lines->Text+"Restore lost Surfaces OK."+(String)CR;

Button8->Enabled=false;

Button9->Enabled=true;

}

//---------------------------------------------------------------------------


void __fastcall TForm1::Button9Click(TObject *Sender)

{

Button4Click(Sender);

Button5Click(Sender);

Button6Click(Sender);

}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

久久久99免费| 色婷婷综合久久久久| 中文字幕av第一页| 国产精品一区二区在线播放| 香蕉乱码成人久久天堂爱免费| 久久影院资源网| 高清无码视频直接看| 韩国av中文字幕| 色综合天天综合| 成人免费在线网址| 大尺度在线观看| 国产一区二区精品久久91| 久久精品视频免费播放| 一级黄色片在线免费观看| 国产精品资源在线| 色综合久久88色综合天天看泰| 亚洲五月天综合| 国产成人自拍网| 亚洲欧洲日韩av| 欧美一区二区三区免费大片 | 毛片毛片女人毛片毛片| 国产综合香蕉五月婷在线| 久久天天躁日日躁| 在线性视频日韩欧美| 日韩一级二级三级| 黄色影视在线观看| 国产老妇伦国产熟女老妇视频| 日韩最新中文字幕电影免费看| 男人日女人bb视频| 91网站最新网址| 91精品视频免费| 欧美一二三区视频| 亚洲欧洲在线播放| 丁香花五月激情| 欧美日韩国产电影| wwwxx日本| 午夜视频在线观看一区| 日韩精品福利片午夜免费观看| 国产在线视频一区二区| 亚洲综合在线播放| 国产亚洲精品久久久久久无几年桃 | 丰满岳乱妇国产精品一区| 波多野结衣午夜| 日韩av在线高清| 国产又黄又猛的视频| 日本在线不卡视频| 日韩一级二级三级| 国产wwwxx| 亚洲国产精品久久人人爱| 国产精品亚洲天堂| 乱精品一区字幕二区| 亚洲欧美一区二区三区久久| 亚洲av无码一区二区二三区| 678五月天丁香亚洲综合网| youjizz.com国产| 亚洲欧美区自拍先锋| 国产91精品一区二区绿帽| 麻豆国产精品视频| 日韩一区国产在线观看| 美女诱惑一区| 国产成人在线播放| 亚洲免费视频二区| 亚洲自拍偷拍区| 激情图区综合网| 97视频在线免费| 亚洲成人av一区二区| 日韩女优视频免费观看| 欧美亚州一区二区三区| 日韩精品视频网站| 色一情一乱一伦一区二区三区丨| 国产精品原创巨作av| 国产精品久久久久久久久久久新郎 | 欧美高清在线播放| 国产免费一区二区三区四区五区 | 成人免费视频网址| 久久婷婷麻豆| wwwjizzjizzcom| 777色狠狠一区二区三区| 看免费黄色录像| 欧美成在线视频| 国产精品国产一区二区三区四区 | av免费观看网址| 91影视免费在线观看| 国产一区二区三区在线看麻豆| 国产精品99久久免费黑人人妻| 4438亚洲最大| 一区二区三区视频免费看| 国产精品精品视频| 琪琪一区二区三区| 黄大色黄女片18第一次| 中文亚洲视频在线| 爽爽淫人综合网网站| 成人午夜免费剧场| 日韩中文在线视频| 男人的天堂亚洲一区| 国产精品免费入口| 亚洲精品大尺度| 在线观看国产一区二区三区| 欧美 另类 交| 日韩精品在线免费观看| 久久国产直播| 久久精品影视大全| 粉嫩av一区二区夜夜嗨| 热门国产精品亚洲第一区在线| 久久网这里都是精品| 中文字幕在线视频一区二区| 日韩精品视频免费专区在线播放 | 色狠狠色噜噜噜综合网| 日韩黄色在线视频| 精品国产aⅴ麻豆| 亚洲国产毛片完整版| 国产成人在线免费观看| 长河落日免费高清观看| 亚洲最大的免费| 亚洲男子天堂网| 国产无遮挡一区二区三区毛片日本| 亚洲熟妇一区二区三区| 日韩av成人在线| 日韩欧美在线1卡| 亚洲欧洲另类国产综合| 国内老熟妇对白hdxxxx| 欧美成在线观看| 亚洲免费观看视频| 国产一区二区三区不卡在线观看| 日韩欧美123区| 亚洲一区3d动漫同人无遮挡 | 精品国产乱码久久久久久久久| 国产精品亚洲а∨天堂免在线| 玖玖爱在线观看| 欧美久久在线| 97视频在线观看视频免费视频| 中文字幕不卡的av| 九一九一国产精品| 日韩黄色一级大片| www.狠狠爱| 摸摸摸bbb毛毛毛片| 欧洲av无码放荡人妇网站| 久久综合久久久| 欧美激情18p| 欧美无砖专区一中文字| 亚洲av成人精品一区二区三区在线播放 | 啦啦啦免费高清视频在线观看| 香蕉久久久久久久| 污污内射在线观看一区二区少妇| 久久人妻无码一区二区| 成人免费视频网站| 欧美精品videosex性欧美| 亚洲电影在线观看| 欧美精品三级在线观看| 亚洲激情图片qvod| 美女视频一区二区三区| 少妇人妻精品一区二区三区| 亚洲最大成人av| 久草成人在线视频| 97人妻精品一区二区三区免费| 欧美激情国产精品日韩| 菠萝蜜视频在线观看入口| 国内精品视频免费| 久久伦理网站| 亚洲第一导航| 精品欧美一区二区三区久久久| 国产精品国产福利国产秒拍| 国产日韩精品在线观看| 国产精品色婷婷视频| 91高潮在线观看| 91精品国产99| 国产专区一区二区三区| 91嫩草免费看| 日韩理论片在线观看| 青草青草久热精品视频在线观看| 97香蕉超级碰碰久久免费软件| 久久九九国产精品怡红院| 中文字幕欧美视频在线| 国产精品九九九| 69堂成人精品视频免费| 国产精品高潮在线| 亚洲一区二区三区四区在线播放| 9a蜜桃久久久久久免费| 国产伦精品一区二区三区免 | 中文字幕精品无码亚| 香蕉视频免费在线看| 精品综合免费视频观看| 91首页免费视频| 色呦呦国产精品| 欧美一区午夜视频在线观看| 亚洲免费小视频| 正在播放亚洲1区| 成人网页在线免费观看| 一区二区视频国产| 中文字幕国内自拍| 多男操一女视频| 国产日韩一级片| 国产成人亚洲综合a∨猫咪| 国产午夜一区二区三区| 欧美视频一区二区三区四区| 精品小视频在线| 欧美中文字幕第一页| 开心色怡人综合网站| 久久婷婷国产精品| 亚洲精品久久久久久| 亚洲一级视频在线观看| 国产成人免费视频网站高清观看视频| 国产精品日韩精品欧美在线| 精品国产乱码久久久久久闺蜜| 7777kkkk成人观看| 蜜桃av久久久亚洲精品| 国产欧美一区二| 亚洲综合一区中| 国产精品一卡二卡在线观看| 色综合久久久久综合| 亚洲欧美国产高清va在线播| 日韩免费观看网站| 亚洲熟妇无码一区二区三区| 4438国产精品一区二区| 国精品**一区二区三区在线蜜桃| 欧美挠脚心视频网站| 91欧美日韩一区| 久久av秘一区二区三区| 国产大学生自拍| 99久久精品免费看| 欧美r级在线观看| 成人精品一二区| 91aaa在线观看| 精品久久久久久久久中文字幕 | 欧美伊人久久久久久午夜久久久久| 久久亚洲精品成人| 日韩亚洲不卡在线| 日韩美女黄色片| 欧洲一区二区三区在线| 国产精品精品一区二区三区午夜版| 欧美视频第一区| 美女网站久久| 爽爽爽爽爽爽爽成人免费观看| 日本免费高清一区| 久久艹精品视频| 亚洲h精品动漫在线观看| 秋霞在线一区二区| 国产一区二区在线视频聊天| 亚洲欧美激情一区二区| 97国产精品免费视频| 国产jjizz一区二区三区视频| 亚洲综合久久久久| 国产精品自拍偷拍| 欧美日韩偷拍视频| 亚洲成人av在线电影| 国产伦精品一区二区三区四区视频 | 五月婷婷丁香六月| 午夜伦理精品一区| 绯色av蜜臀vs少妇| 成人av资源站| 国产三区在线成人av| 亚洲精品免费av| 波多野结衣激情视频| 欧美日韩午夜影院| 亚洲综合在线一区二区| 成人av免费在线播放| 久久精品国产综合精品| 亚洲第九十九页| 九九九久久久久久| 美女视频免费一区| 欧美视频一区二区| 成年人视频观看| 天天射综合影视| 极品白嫩丰满美女无套| 欧美成人精精品一区二区频| 69夜色精品国产69乱| 爽爽爽爽爽爽爽成人免费观看| 91看片在线播放| 国产在线观看不卡| 国产一区中文字幕| eeuss中文| 91国偷自产一区二区三区观看 | 91高清免费在线观看| 久久狠狠一本精品综合网| 欧美专区一二三| 亚洲成a人在线观看| 国产盗摄x88av| 国产一区视频在线| 国产精品入口麻豆九色| 欧美视频一区二区在线| 国产精品久久久久99| 成人的网站免费观看| 超级砰砰砰97免费观看最新一期 | 精品一区二区在线免费观看| 国产二区视频在线| 日韩精品小视频| 99久久免费精品| 性做爰过程免费播放| 99久久久精品免费观看国产蜜| 国产精品久久久久免费a∨| 波多野结衣视频观看| 亚洲精品视频免费| 免费黄色片网站| 久久精品视频在线观看| 亚洲图片欧美在线| 日韩在线免费视频| 欧洲av在线播放| 黄页免费在线观看视频| 亚洲精品高清在线| 乐播av一区二区三区| 欧美综合第一页| 久久精品亚洲乱码伦伦中文 | 中文在线一区二区| 阿v天堂2014| 精品国产_亚洲人成在线| 亚洲一区二区偷拍精品| 尤物网站在线观看| 国产亚洲精品久久久| 亚洲 美腿 欧美 偷拍| 亚洲最大免费| 日韩一区二区高清| 捆绑变态av一区二区三区| 黑人性生活视频| 国产精品免费电影| 无码av中文一区二区三区桃花岛| 麻豆91精品91久久久| 成人综合色站| 蜜乳av一区二区| 波多野结衣av在线免费观看| 国产精品18久久久久久麻辣| 欧美激情一区在线| 国产99免费视频| 一区二区三区四区欧美| 欧美精品videos| 国产亚洲一区二区三区在线观看| 欧美精品成人久久| 综合操久久久| 欧美亚州一区二区三区| 日韩欧美国产精品一区| 韩国三级电影一区二区| 网站永久看片免费| 丰满的少妇愉情hd高清果冻传媒| 欧美伊久线香蕉线新在线| 在线视频综合导航| 国产成人精品亚洲午夜麻豆| 又嫩又硬又黄又爽的视频| 成人免费看片视频在线观看| 久久久噜噜噜久久中文字免| 欧美久久久久中文字幕| 国产亚洲一区二区三区在线观看| 一级黄色在线视频| 人人爽人人av| 91最新在线免费观看| 久久精品国产亚洲一区二区| 狠狠爱在线视频一区| 99久久久久免费精品国产 | 97精品电影院| av官网在线观看| 青草影院在线观看| 免费中文字幕av| 亚洲熟妇av一区二区三区| ts人妖另类在线| 日本免费久久高清视频| 精品国产伦一区二区三区观看方式| 国产精品一区二区在线播放 | 国产a级毛片一区| 黄色片中文字幕| 国产suv精品一区二区68| 日本一区二区在线免费观看| 大陆av在线播放| 亚洲一区国产精品| 热99在线视频| 中文字幕亚洲综合| 亚洲人成电影在线| 日韩第一页在线| 欧美一区二区福利在线| 一本大道久久a久久综合| 国产日韩欧美视频在线观看| 偷偷操不一样的久久| 久久精品视频8| 无码人妻av一区二区三区波多野| 免费三级在线观看| 9.1成人看片免费版| 日本泡妞xxxx免费视频软件| 亚洲一二三四五| 亚洲熟女一区二区三区| 看看黄色一级片| 中文字幕天堂网| 黄色正能量网站| 亚洲精品自拍视频在线观看| 免费成人深夜天涯网站| av在线免费看片| 麻豆tv在线观看| 中文字幕在线观看免费高清| 久久伊人成人网| 青青国产在线视频| a级片免费观看| 经典三级在线一区| 久久99热国产| 国产精品三级av| 制服丝袜亚洲网站| 日韩小视频网址| 中文字幕亚洲一区二区三区五十路| 欧美巨大黑人极品精男| 国产精品爱久久久久久久| 国产在线资源一区| 日韩第一页在线观看| 久久精品第九区免费观看| 任我爽在线视频精品一| 欧美日韩视频免费| 国产在线拍揄自揄拍无码视频| 亚洲无人区码一码二码三码的含义| 青青草偷拍视频| 亚洲视频在线观看免费视频| 国产精品12区| 日韩亚洲欧美成人一区| 亚洲国产高清福利视频| 国产精品久久97| 无码精品国产一区二区三区免费| 在线观看黄网址|