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

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

學??嘧髦郏瑫角跒閺?/a>

留下點回憶

常用鏈接

統計

積分與排名

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>
            欧美日韩专区| 亚洲美女在线视频| 久久久噜噜噜久噜久久| 99av国产精品欲麻豆| 欧美黄色aaaa| 一区二区av| 久久成人免费电影| 麻豆国产精品一区二区三区| 亚洲一区二区av电影| 亚洲男人第一网站| 久久婷婷丁香| 在线综合亚洲欧美在线视频| 亚洲一区二三| 欧美成人激情在线| 国产精品久久久久久av福利软件| 国产精品欧美久久| 亚洲精品国产拍免费91在线| 亚洲午夜免费视频| 亚洲第一毛片| 欧美一区二区三区在线观看视频 | 亚洲黄网站在线观看| 一区二区三区不卡视频在线观看 | 免费日韩成人| 国产日韩欧美麻豆| 国产一二三精品| 亚洲欧美激情视频在线观看一区二区三区| 久久精品盗摄| 亚洲欧美日韩一区二区| 蜜桃av一区二区三区| 国内精品福利| 久久久之久亚州精品露出| 亚洲一区二区精品在线| 欧美亚洲成人精品| 亚洲欧美激情一区| 亚洲欧美日韩精品久久| 国产精品久久久免费| 欧美承认网站| 亚洲无线视频| 欧美三区美女| 久久狠狠婷婷| 久久精品国产69国产精品亚洲| 国产女主播一区二区| 久久成人精品| 久久九九国产| 亚洲国产一区二区精品专区| 免费在线视频一区| 欧美精品七区| 久久狠狠久久综合桃花| 久久综合九色九九| 在线亚洲电影| 亚洲人成人一区二区在线观看| 亚洲国产日韩欧美在线99| 欧美母乳在线| 免费成人在线视频网站| 国产精品va在线播放| 久久成人羞羞网站| 欧美日本一道本| 欧美午夜精品电影| 国产美女一区二区| 亚洲美女中文字幕| 在线日本高清免费不卡| 亚洲一区二区在线免费观看| 99视频精品在线| 久久亚洲图片| 久久高清国产| 国产人成精品一区二区三| 亚洲麻豆一区| 亚洲一区二区免费在线| 欧美日韩成人综合在线一区二区 | 久久久久久久久久久久久女国产乱| 久久精品国产69国产精品亚洲| 亚洲一区二区三区影院| 9i看片成人免费高清| 久久精品久久99精品久久| 久久精品91| 精品福利av| 久久久噜噜噜久久人人看| 久久全国免费视频| 黄色成人片子| 欧美国产欧美综合| 亚洲福利专区| 亚洲欧美日韩中文播放| 国产欧美亚洲一区| 久久人人爽人人| 亚洲精品国产精品乱码不99按摩| 一区二区三区欧美日韩| 国产一区在线视频| 欧美经典一区二区三区| 亚洲午夜一区二区| 欧美国产一区二区三区激情无套| 一区二区三区欧美亚洲| 国语自产精品视频在线看一大j8 | 久久爱www.| 欧美韩日精品| 久热精品视频在线| 亚洲一区二区精品视频| 亚洲第一综合天堂另类专| 国产精品人人做人人爽 | 亚洲免费在线精品一区| 欧美激情区在线播放| 久久久久久午夜| 欧美不卡在线| 亚洲女女女同性video| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美日韩国产精品| 一区二区黄色| 一本色道久久综合亚洲二区三区| 蘑菇福利视频一区播放| 久久综合久久综合这里只有精品| 亚洲精品乱码视频| 亚洲第一偷拍| 亚洲精品在线二区| 亚洲第一偷拍| 日韩亚洲欧美高清| 国产精品国产三级国产aⅴ浪潮| 欧美色图天堂网| 国产精品国产三级国产aⅴ浪潮| 欧美片在线播放| 国产精品老牛| 韩国精品一区二区三区| 久久久精品久久久久| 久久久女女女女999久久| 久久久综合香蕉尹人综合网| 看片网站欧美日韩| 欧美日韩亚洲一区二区| 国产欧美日韩伦理| 亚洲精品之草原avav久久| 一本色道久久| 鲁鲁狠狠狠7777一区二区| 美女精品一区| 亚洲一区二区三区中文字幕在线| 久久久久久久999精品视频| 欧美波霸影院| 黄色资源网久久资源365| 亚洲一区二区三区中文字幕在线| 欧美一区免费视频| 亚洲精品中文字幕在线观看| 午夜精品视频一区| 欧美性感一类影片在线播放| 精品电影一区| 久久最新视频| 久久亚洲精品视频| 亚洲综合电影| 欧美精品久久一区二区| 韩国三级在线一区| 久久精品视频播放| 欧美一区二区三区电影在线观看| 午夜精品久久久久久久99热浪潮| 亚洲国产另类久久精品| 欧美不卡视频一区| 亚洲区在线播放| 亚洲成色www8888| 久久综合电影| 亚洲电影在线观看| 欧美成人午夜激情| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲黄色三级| 亚洲一区二区三区精品在线| 国产婷婷色一区二区三区| 久久米奇亚洲| 久久综合狠狠| 亚洲欧美日韩精品久久久久| 亚洲欧美日韩一区二区在线| 国产欧美一区视频| 欧美大片免费看| 欧美连裤袜在线视频| 亚洲综合社区| 老司机aⅴ在线精品导航| 一区二区三区国产精华| 亚洲综合欧美日韩| 亚洲精品一区在线观看香蕉| 国产精品99久久99久久久二8| 国语自产精品视频在线看一大j8| 夜夜嗨av色一区二区不卡| 欧美在线视频二区| 亚洲在线一区二区| 另类av一区二区| 久久国产手机看片| 欧美日韩国内自拍| 亚洲免费影院| 亚洲永久免费精品| 国产精品扒开腿做爽爽爽视频| 欧美激情一区二区| 亚洲承认在线| 久久久精品国产免费观看同学| 久久精品九九| 国产精品视频自拍| 亚洲无人区一区| 欧美日韩精品免费在线观看视频| 亚洲欧美另类中文字幕| 欧美人与禽猛交乱配| 欧美国产综合一区二区| 亚洲国产一区视频| 免费在线观看一区二区| 免费观看在线综合| 尤物精品国产第一福利三区 | 日韩午夜精品| 欧美日韩国产小视频在线观看| 最新中文字幕亚洲| 亚洲欧美国产精品专区久久|