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

Dict.CN 在線詞典, 英語學習, 在線翻譯

學海苦作舟,書山勤為徑

留下點回憶

常用鏈接

統計

積分與排名

Denoise

English study

Web技術

數據壓縮

一些連接

最新評論

DirectX圖形的設備類型-D3D入門

D3D設備是D3D的粉刷組件;它封裝并存儲粉刷的狀態,另外,D3D設備執行轉換和光操作,并光柵化一個圖像到一個面上。

本節主要包括內容:

1.  設備類型

2.  創建設備

3.  選擇設備

4.  不為人知的設備

5.  決定硬件支持

6.  處理頂點數據

7.  設備支持的初基類型

按照架構來說,D3D設備包含一個轉換模塊、一個光模塊、一個光柵化模塊;如下圖所示:

D3D Device ar.JPG


D3D當前支持兩種主要類型的D3D設備:帶硬件加速的光柵化以及硬件和軟件頂點處理的陰影HAL設備、一個引用設備。

你可以將這些設備看作兩個獨立的驅動。軟件和引用設備通過軟件驅動來表示,HAL設備通過硬件驅動來表示。最通常的利用這些設備的方式是在shipping程序中使用HAL設備作,在特性測試的時候引用驅動。第三方提供枚舉特殊的設備----例如,開發的硬件沒有發布。

程序創建的D3D設備必須于程序正在運行的設備性能相匹配,通過訪問安裝在計算機上的硬件來訪問或者枚舉軟件中3D硬件能力來訪問。因此,D3D為硬件訪問和軟件枚舉提供設備。

硬件加速設備比軟件設備有更好的性能,HAL設備類型在所有支持D3D圖像卡上可用。在大多數情況下,程序將有硬件加速的計算機作為目標并依賴軟件來適應低端計算機。

由于引用設備的異常,軟件設備并不總是能提供和硬件設備相同的特性。程序可以查詢來決定設備支持那些特性。

因為DirectX9提供的引用設備和軟件的行為等同于HAL設備,基于HAL設備上的程序編碼在軟件或引用設備無須修改。注意,提供的軟件或引用設備行為與HAL設備相同的時候,設備性能變化,特殊軟件設備可能實現較小部分的能力。

行為

D3D讓你可以指定設備行為,例如設備類型,IDirect3D9::CreateDevice方法來促使一個或多個行為多哥標志的聯合來控制D3D設備的全局行為。這些行為指定什么需要或不需要在D3D運行時維護,使用所有設備類型和所有設備行為是可能的。例如,在設備創建的時候使用D3DCREATE_PUREDEVICE來指定D3DDEVTYPE_SW是有效的。

1.1.1.      設備類型

?       HAL設備

最基本的設備類型是HAL設備,它支持硬件加速光柵化,且支持硬件和軟件頂點處理。如果你的正在運行程序的計算機配備了支持微軟Direct3D功能,你應該使用顯示卡來支持3D操作。Direct3D HAL設備以硬件的形式實現了全部或部分轉換、光和光柵化模塊。

程序不需要直接訪問3D卡,它們調用Direct3D函數和方法,Direct3D通過HAL來訪問硬件。如果你的程序正在運行的那臺計算機上支持HAL,那么它通過使用HAL設備將獲得最好的性能。

C++創建一個HAL設備,需要調用IDirect3D9::CreateDevice方法,并傳遞D3DDEVTYPE_HAL常量作為設備類。

備注:硬件設備不能粉刷8位粉刷目標表面。

?       引用設備

D3D另外支持引用設備類型或者叫引用光柵,與軟件設備不同的是,引用設備支持每個D3D特性,因為這些功能為了實現精確,而不是速度,并且以軟件實現,所以結果不是很快。無論什么時候,引用設備都利用特定的CPU指令,但它并不是為了某些程序使用的,使用引用設備僅僅是為了功能測試或演示的目的。

為了在C++創建一個引用設備,調用IDirect3D9::CreateDevice方法,并傳遞D3DDEVTYPE_REF常量作為設備類型。

1.1.2.    創建一個設備

備注:所有通過給定的微軟D3D對象創建的粉刷設備都共享相同的物理資源。雖然你的程序能從一個單個D3D對象創建多個粉刷設備,由于他們使用同一個設備,所以你必須付出極端性能的懲罰。

為了在C++程序中創建D3D設備,你的程序應該首先創建一個D3D對象,這個將在D3D對象中解釋。

首先,初始化D3DPRESENT_PARAMETERS結構,它在創建D3D設備的時候用到,下面的代碼例子詳細說明一個窗口程序后臺緩沖區彈出到前臺緩沖區。

LPDIRECT3DDEVICE9 pDevice = NULL;
D3DPRESENT_PARAMETERS d3dpp; 
ZeroMemory (&d3dpp, sizeof (d3dpp));
d3dpp.Windowed   = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;

下面,創建D3D設備,下面的IDirect3D9::CreateDevice調用指定默認的適配器,一個硬件抽象層設備和軟件頂點處理。

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&d3dDevice)))
return E_FAIL;

注意,創建、釋放、復位設備的調用應該在和焦點窗口的窗口程序在同一個線程中。

在創建設備之后,設置它的狀態。

1.1.3.    選擇一個設備

程序能夠查詢硬件來檢查支持D3D設備的類型。本節包含在枚舉顯示適配器和選擇D3D設備的基本任務。

程序必須執行一系列的任務來選擇一個適當的D3D設備。注意,下面的步驟目的是一個滿屏幕的程序,在多數情況下,一個窗口程序不能下面步驟的大部分。

1.  初始化;

程序必須枚舉系統上的顯示卡;一個卡就是一個物理硬件塊。注意,可能不止一塊圖形卡,例如雙重顯示的情況。與多監視器無關的程序可以忽略這步,并在第二步中傳遞D3DADAPTER_DEFAULT來調用IDirect3D9::EnumAdapterModes方法。

2.  對于每塊卡,程序調用IDirect3D9::EnumAdapterModes來枚舉支持的顯示模式。

3. 如果必要的話,程序需要調用IDirect3D9::CheckDeviceType來檢查每種枚舉模式中的硬件加速情況,如下面代碼所示。注意,這是唯一可能使用IDirect3D9::CheckDeviceType的地方,詳細見:判斷硬件支持。

D3DPRESENT_PARAMETERS Params;

// Initialize values for D3DPRESENT_PARAMETERS members.

Params.BackBufferFormat = D3DFMT_X1R5G5B5;

if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter,                           Device.m_DevType,Params.BackBufferFormat,  Params.BackBufferFormat,  FALSE)))

        return E_FAIL;

4.  程序檢查調用IDirectD39::GetDeviceCaps方法來檢查該卡上期望的設備功能級別。該方法過濾那些不支持需要功能的設備,IDirect3D9::GetDeviceCaps返回的設備能力對于一個通過所有IDirect3D9::CheckDeviceType檢查的設備來說是一個常量。

5.  設備總是能夠粉刷設備支持一個枚舉顯示模式格式的面。如果要求粉刷一個不同格式的面,它調用IDirect3D9::CheckDeviceFormat,如果設備能粉刷這個格式,就可以保證所有IDirect3D9::GetDeviceCaps返回的能力都適用。

6.  最后,程序可以決定是否采用多采樣技術,例如:使用IDirect3D9::CheckDeviceMultiSampleType方法來支持一個全場景 antialiasing作為粉刷格式。

在完成上面的步驟之后,程序應該有一個它可以操作的顯示模式列表,最后一步就是核實有足夠可用的設備可訪問的內存來滿足緩沖區和antialiasing的需要。這個測試是必要的,因為模式和多采樣合并的內存消耗在核實之前并不可預知,另外,有些顯卡結構并不是有一個固定的設備訪問內存;這意味著程序或許會在“滿屏模式”的時候報“顯存溢出”的錯誤。典型地,程序應該從它提供給用戶的模式列表中刪除滿屏模式,或者應該試著通過減少后臺內存的數量來消耗較少的內存,或者使用不是怎么復雜的多采樣技術。

窗口程序執行同樣的一系列任務。

1.  判斷被窗口客戶區覆蓋的桌面矩形

2.  枚舉顯卡,查詢顯卡看哪個監視器覆蓋了客戶區,如果客戶區被多個卡擁有,那么程序能選擇獨立地驅動每塊卡,或者驅動單個卡且有D3D從一個設備到另一個設備傳遞像素。程序也可以不管上面的兩步而使用D3DADAPTER_DEFAULT卡。注意,這可能導致將窗口放置到一個次要的監視器較慢。

3.  程序應該調用IDirect3D9::CheckDeviceType來決定在桌面模式下設備是否能支持指定格式的后臺緩沖區的粉刷。IDirect3D9::GetAdapterDisaplayMode可用來判斷桌面顯示格式,如下面代碼:

D3DPRESENT_PARAMETERS Params;

// Initialize values for D3DPRESENT_PARAMETERS members.

// Use the current display mode.

D3DDISPLAYMODE mode;

if(FAILED(m_pD3D->GetAdapterDisplayMode(Device.m_uAdapter, &mode)))

return E_FAIL;

Params.BackBufferFormat = mode.Format;

if(FAILED(m_pD3D->CheckDeviceType(Device.m_uAdapter,Device.m_DevType,Params.BackBufferFormat, Params.BackBufferFormat, FALSE)))

       return E_FAIL;

1.1.4.    放棄一個設備

微軟的D3D設備可以處在操作狀態或放棄狀態;操作狀態是設備的正常的狀態,設備按照預期來運行和表現所有的粉刷。當一個事件發生時,設備會轉換到放棄狀態,例如在滿屏模式下丟失鍵盤焦點,導致粉刷變成不可能。丟失狀態是所有粉刷操作平靜失敗的表現,這意味著粉刷操作不能返回成功代碼,即使是在粉刷操作失敗的情況下(The lost state is characterized by the silent failure of all rendering operations, which means that the rendering methods can return success codes even though the rendering operations fail);在這種情況下,IDirect3DDevice9::Presenter將返回錯誤代碼D3DERR_DEVICELOST。

根據設計,能導致設備變成丟失狀態的全套場景是不確定的,某些典型的例子包括焦點丟失,例如當用戶按下ALT+TAB或一個系統對話框被初始化時,設備也可以由于電源管理事件而丟失,或者當另外一個程序采用滿屏操作時;另外任何來自IDirect3DDevice9::Reset的失敗都將導致設備進入丟失狀態。

所有繼承自IUnknow的方法都可保證在設備丟失之后正常工作。在設備都是之后,每個函數通常有三個選擇:

1.              失敗并返回D3DERR_DEVICELOST;這意味著程序需要認識丟失的設備,以便于程序能標識那些不能按照預期發生的事情。

2.              安靜地失敗,返回S_OK或者其他的返回值-如果一個函數安靜地失敗,程序通常不能區分是成功的結果還是安靜地失敗

3.              函數返回一個返回值。

1.1.4.1.    對丟失設備的響應

一個丟失的設備在它已經被復位以后必須重創建資源(包括顯存資源)。如果一個設備丟失了,程序查詢設備來看是否能夠恢復到操作狀態;如果不能,程序等待,直到設備可以被恢復。

如果設備可以被恢復,程序通過銷毀所有的顯存資源和任何交換鏈來準備設備,然后,程序調用IDirect3DDeivice9::Reset方法;方法Reset是設備丟失之后唯一有效的方法,也是程序唯一用來改變丟失設備到操作狀態的方法。IDirect3DDevice9::Reset只有在程序釋放了所有以D3DPOOL_DEFAULT方式分配的資源時才會失敗,這些資源包括由IDirect3DDevice9::CreateRenderTargetIDirect3DDevice9::CreateDepthStencilSurface方法創建的資源。

大部分情況,頻繁的調用D3D并不會返回設備已經丟失的信息。程序能繼續調用粉刷方法,例如:IDirect3DDevice9::DrawPrimitive,如果沒有接收到設備丟失的通知;而在內部,這些操作被拋棄直到設備被復位為可操作狀態。

程序可以通過查詢IDirect3DDevice9::TestCooperativeLevel方法來決定遇到丟失設備的時候如何做。

1.1.4.2.    鎖定操作

D3D內部,其做了充分的工作保證設備丟失之后鎖定操作能成功;然而,它不保證在鎖定操作過程中顯存資源數據是準確的。它確保不返回錯誤代碼,這允許程序在鎖定操作過程中是可寫的如果不關心設備丟失。

1.1.4.3.    資源

資源能消耗顯存,因為一個丟失設備從顯卡擁有的顯存斷開,在設備丟失時不可能擔保分配顯存。結果所有資源創建方法都被實現為成功返回D3D_OK,但實際上僅僅分配虛擬系統內存;因為任何顯存資源必須在設備調整大小的之前被銷毀,沒有過量分配顯存的問題。這些虛擬的表面允許鎖定和復制操作看起來運行的很正常,直到程序調用IDirect3DDevice9::Present和發現設備已經丟失了。

所有顯存必須在設備從丟失狀態被復位為操作狀態之前釋放;這意味著程序應該釋放任何通過IDirect3DDevice9::CreateAdditionalSwapChain創建的交換鏈和任何放在D3DPOOL_DEFAULT內存類中的資源,其他狀態數據會在轉換到操作狀態時自動被銷毀。

開發一個單響應設備丟失編碼途徑是值得鼓勵的;如果不同,這個編碼途徑很可能與設備啟動時初始化的編碼途徑相似。

1.1.4.4.    重新得到數據

D3D允許程序允許程序驗證紋理并粉刷狀態,而不是通過IDirect3DDevice::ValidateDevice硬件來單向粉刷。這個方法通常在程序初始化的時候調用,如果設備丟失將返回D3DERR_DEVICELOST

D3D也允許程序從顯存資源復制產生的和以前寫的圖像到永久系統內存資源,因為源圖像可能在任何時候丟失,D3D允許在設備都是的時候復制操作失敗。

關于異步查詢,如果FLUSH標志被設置,IDirect3DQuery9::GetData返回D3DERR_DEVICELOST,為了指示IDirect3DQuery9::GetData永遠不會返回S_OK。

復制操作,IDirect3DDevice9::GetFontBufferData失敗并返回D3DERR_DEVICELOST,由于在設備丟失的時候沒有基本的表面。IDirect3DDevice9::CreateAdditionalSwapChain在設備的丟失的時候不能創建BACK緩沖區而失敗并返回D3DERR_DEVICELOST。這些情況是除IDirect3DDevice9::Present IDirect3DDevice9::TestCooperativeLevelIDirect3DDevice9::Reset方法之外返回D3DERR_DEVICELOST的唯一情況。

1.1.4.5.    可編程陰影

在微軟D3D 9.0中,Vertex Shader1_1Pixel_Shader_1_X并不需要在復位之后重新創建,他們會被記住。在以前的DirectX版本中,丟失設備要求陰影也需要重新創建。

1.1.5.    判斷硬件支持

微軟D3D提供了下面的函數來判斷硬件的支持情況。

1.  IDirect3D9::CheckDeviceFormat

用來判斷一個表面格式是是否可以用作紋理,一個格式是否能用作紋理和粉刷對象或者一個表面格式是否可以用作深度模板緩沖區。另外,這個方法被用來驗證深度緩沖區格式支持和深度模板緩沖區格式支持。

2.  IDirect3D9::CheckDeviceType

用來驗證設備執行硬件加速的能力,一個設備能力來為表現構造交換鏈,或者一個粉刷當前顯示格式的設備能力。

3.  IDirect3D9::CheckDpthStencilMatch

用來驗證一個深度模板緩沖區格式是否和一個粉刷目標格式相兼容。注意,在調用該方法之前,程序應該調用在深度模板和粉刷目標格式上都調用過IDirect3D9::CheckDeviceFormat方法。

1.1.6.    處理頂點數據

IDirect3DDevice9接口支持以軟件和硬件的方式的頂點處理。通常對于軟件和硬件頂點處理的設備能力是不同的;硬件能力是可邊的,依賴于顯示卡和驅動,而軟件呢能是固定的。

下面的標志用來控制HAL和引用設備的頂點處理行為。

l         D3DCREATE_SOFTWARE_VERTEXPROCESSING

l         D3DCREATE_HARDWARE_VERTEXPROCESSING

l         D3DCREATE_MIXED_VERTEXPROCESSING

在調用IDirect3D9::CreateDevice時指定頂點處理行為標志之一,也可以指定混合模式,用來表示可以指定硬件和軟件頂點處理模式。在任何時候僅僅可以為一個設備設置一種頂點處理標志。注意,D3DCREATE_HARDWARE_VERTEXPROCESSING標志在創建虛設備(D3DCREATE_PUREDEVICE)的時候要求被設置。

為了避免在單個設備上的多重頂點處理,僅僅硬件頂點處理能力可以在運行時查詢,軟件頂點處理能力是固定的,在運行時不能查詢。

你能和D3DCAPS9VerterProcessingCaps成員商討來決定設備的硬件處理能力,對于軟件頂點處理支持下面的能力:

l         D3DVTXPCAPSD3DVTXPCAPS_DIRECTIONALLLIGHTS成員

l         D3DVTXPCAPSD3DVTXPCAPS_LOCALVIEWER成員

l         D3DVTXPCAPSD3DVTXPCAPS_POSITIONALLIGHTS成員

l         D3DVTXPCAPSD3DVTXPCAPS_TEXGEN成員

l         D3DVTXPCAPSD3DVTXPCAPS_TWEENING成員

另外,下表列出了軟件頂點出來模式時D3DCAPS9成員的設置值:

成員

軟件頂點處理能力

MaxActiveLights

無限制

MaxUserClipPlanes

6

MaxVertexBlendMatrices

4

MaxStreams

16

MaxVertexIndex

0xFFFFFFFF

軟件頂點處理提供一系列頂點處理能力,包括一些極大數量的光和可編程頂點陰影完全支持。你能夠在使用HAL設備的任何時候在軟件和硬件頂點處理之間切換,唯一同時支持硬件和軟件頂點處理的設備類型。唯一要求是用做軟件頂點處理的頂點緩沖區必須被分配在系統內存中。

posted on 2006-02-25 01:03 笨笨 閱讀(2212) 評論(0)  編輯 收藏 引用 所屬分類: DirectX3D

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品日韩精品欧美精品| 欧美一区二区三区在线播放| 欧美日韩成人精品| 欧美第一黄色网| 欧美激情中文不卡| 亚洲激情偷拍| 亚洲韩国精品一区| 亚洲欧美视频在线观看| 欧美成人激情在线| 国内偷自视频区视频综合| 久久夜色精品国产| 国产精品v亚洲精品v日韩精品| 亚洲精品一区二区三区婷婷月| 99国产精品国产精品毛片| 亚洲欧美国产va在线影院| 日韩亚洲欧美成人一区| 欧美电影电视剧在线观看| 国产亚洲欧美一区| 亚洲已满18点击进入久久| 亚洲第一在线| 亚洲免费在线播放| 狂野欧美激情性xxxx欧美| 国产精品99久久99久久久二8 | 久久九九精品99国产精品| 免播放器亚洲一区| 一区在线影院| 蜜桃av一区二区| 久久精品国产一区二区三区免费看 | 亚洲精品国精品久久99热| 国产精品自拍三区| 亚洲午夜精品久久久久久浪潮| 亚洲国产日韩欧美在线99| 亚洲裸体在线观看| 亚洲成色777777女色窝| 欧美日韩国产丝袜另类| 亚洲一区二区三区免费在线观看| 日韩亚洲精品电影| 国产精品一区二区男女羞羞无遮挡| 国产日韩精品一区二区| 亚洲人成网站在线观看播放| 亚洲片国产一区一级在线观看| 欧美视频精品一区| 日韩一级精品| 久久精品国产久精国产思思| 亚洲黄色高清| 亚洲先锋成人| 日韩一级网站| 另类成人小视频在线| 亚洲午夜女主播在线直播| 欧美ed2k| 久久综合九色| 久久久国产精品一区| 欧美一区在线看| 亚洲国产一区二区精品专区| 亚洲毛片播放| 亚洲精品国产精品国产自| 亚洲欧美另类国产| 亚洲欧美久久久久一区二区三区| 亚洲美女视频在线免费观看| 国内精品国产成人| 亚洲欧美一区二区激情| 日韩一级大片在线| 免费不卡在线观看av| 久久色在线观看| 国产欧美日韩| 香蕉尹人综合在线观看| 性欧美xxxx大乳国产app| 欧美国产日韩亚洲一区| 亚洲一区二区三区四区视频| 欧美成年人网站| 久久久久国产精品www | 你懂的国产精品永久在线| 久久青青草原一区二区| 日韩视频免费在线观看| 亚洲高清av| 欧美3dxxxxhd| 国产精品福利片| 欧美a级片一区| 在线看日韩欧美| 久热这里只精品99re8久| 最新国产の精品合集bt伙计| 久久精品国产亚洲精品 | 久久精品免费观看| 亚洲欧美日产图| 一区二区视频免费完整版观看| 农村妇女精品| 亚洲自拍偷拍一区| 91久久中文| 久久久久久亚洲精品杨幂换脸| 亚洲黄色尤物视频| 国产麻豆精品theporn| 欧美69wwwcom| 久久精品毛片| 亚洲综合色激情五月| 亚洲国产一区二区三区在线播| 性欧美在线看片a免费观看| 在线观看一区欧美| 国产精品久久久久久久久久尿| 久久久久五月天| 亚洲永久免费视频| 亚洲人在线视频| 亚洲国产精品高清久久久| 久久久91精品国产| 欧美在线一二三四区| 国产最新精品精品你懂的| 国产美女高潮久久白浆| 欧美日韩午夜精品| 欧美区二区三区| 欧美另类69精品久久久久9999| 久久综合网hezyo| 欧美国产乱视频| 亚洲美女电影在线| 日韩一级大片| 亚洲午夜精品久久久久久app| 亚洲天堂偷拍| 欧美有码在线观看视频| 久久九九免费视频| 亚洲天堂av在线免费| 欧美一级精品大片| 国产乱肥老妇国产一区二 | 久久蜜桃香蕉精品一区二区三区| 日韩一区二区久久| 在线视频一区观看| 欧美影院久久久| 欧美日韩国产免费观看| 国产精品视频精品| 国产在线乱码一区二区三区| 在线国产亚洲欧美| av不卡在线| 久久久999国产| 欧美大片在线看免费观看| 亚洲美女区一区| 亚洲综合99| 亚洲国产日韩欧美综合久久| 亚洲精品一区二区三区四区高清| 欧美日韩在线精品| 麻豆成人综合网| 欧美日韩国产高清| 美女久久一区| 国产精品日韩精品欧美精品| 欧美激情中文字幕乱码免费| 国产精品亚洲成人| 91久久在线播放| 亚洲第一精品福利| 亚洲欧美色一区| 亚洲一级免费视频| 免费试看一区| 欧美激情视频一区二区三区免费| 国产精品亚洲综合久久| 日韩一区二区电影网| 亚洲精品在线观看免费| 久久久久久久久久久一区 | 99成人在线| 亚洲人成人一区二区在线观看| 欧美在线一区二区三区| 亚洲男人的天堂在线aⅴ视频| 欧美激情免费在线| 亚洲国产婷婷| 日韩一区二区精品在线观看| 噜噜噜在线观看免费视频日韩| 久久久av网站| 国产伊人精品| 久久精品国产欧美亚洲人人爽| 久久精品五月婷婷| 狠狠色丁香婷婷综合久久片| 欧美一区二区三区四区视频| 久久精彩免费视频| 激情综合色丁香一区二区| 欧美成人激情视频免费观看| 亚洲精品乱码久久久久| 亚洲天堂视频在线观看| 国产精品午夜春色av| 久久久噜噜噜久噜久久| 亚洲国产一区二区三区高清 | 欧美一级二级三级蜜桃| 国产精品毛片| 久色成人在线| 午夜精品福利一区二区蜜股av| 欧美成人精品在线播放| 亚洲欧美在线x视频| 亚洲精品视频在线| 狠狠入ady亚洲精品| 国产精品你懂的| 欧美日韩精品免费观看| 美女啪啪无遮挡免费久久网站| 亚洲一区二区精品在线| 亚洲国产导航| 免费欧美高清视频| 久久久综合视频| 久久激情综合网| 亚洲欧美视频一区| 亚洲欧美日韩国产另类专区| 亚洲日韩成人| 亚洲国产网站| 亚洲精选视频在线| 日韩视频一区二区三区在线播放免费观看 | 亚洲成人在线网| 久久五月激情| 久久精品国产亚洲一区二区三区| 亚洲在线视频一区|