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

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>
            亚洲欧美日韩国产成人精品影院| 欧美日韩一区二区三区视频| 欧美国产在线电影| 欧美影院视频| 老妇喷水一区二区三区| 欧美成人午夜激情| 亚洲国产高清一区| 亚洲日本国产| 日韩视频精品在线观看| 新67194成人永久网站| 久久久综合视频| 欧美久久久久久蜜桃| 国产精品分类| 一区二区亚洲| 一区二区三区久久精品| 欧美在线电影| 欧美黄网免费在线观看| 日韩一区二区精品| 久久精品一区| 国产精品黄色在线观看| 韩国av一区二区| 日韩午夜视频在线观看| 欧美一区二区三区精品| 欧美激情亚洲| 亚洲欧洲99久久| 你懂的视频欧美| 国产精品青草久久| 亚洲每日在线| 老司机成人网| 亚洲午夜未删减在线观看| 久久精品青青大伊人av| 国产精品国码视频| 亚洲人成人77777线观看| 久久精品国产2020观看福利| 亚洲精品乱码久久久久久久久| 欧美在线观看日本一区| 欧美午夜一区二区| 亚洲精品久久久蜜桃| 久久一区二区三区超碰国产精品| 中文成人激情娱乐网| 午夜精品久久久久久久99水蜜桃 | 欧美一区二区三区在线观看视频 | 欧美一级午夜免费电影| 欧美国产亚洲视频| 久久se精品一区精品二区| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品视频一区二区三区| 久久久久综合一区二区三区| 亚洲欧美日韩精品在线| 欧美日韩另类字幕中文| 亚洲精品国产精品国产自| 牛牛精品成人免费视频| 久久国产精品久久久久久| 国产精品午夜久久| 欧美亚洲在线播放| 亚洲午夜激情网页| 欧美视频中文一区二区三区在线观看 | 精品电影一区| 久久精品三级| 欧美一区二区三区视频免费| 国产欧美在线视频| 久久久久久噜噜噜久久久精品| 午夜欧美不卡精品aaaaa| 国产精品免费一区二区三区在线观看| 亚洲视频在线看| 一本久道久久综合中文字幕| 欧美日韩在线免费观看| 一区二区日韩| 中文久久乱码一区二区| 国产精品你懂的在线| 性色av香蕉一区二区| 亚洲免费中文| 韩国三级在线一区| 亚洲高清色综合| 欧美三区美女| 久久精品视频在线看| 久久一区精品| 这里只有精品丝袜| 亚洲欧美激情视频| 在线观看亚洲视频啊啊啊啊| 亚洲国产成人在线| 欧美色综合天天久久综合精品| 亚洲欧美另类在线| 久久精品卡一| 在线一区视频| 久久精品日产第一区二区| 亚洲免费精品| 亚洲男同1069视频| 亚洲国产成人tv| 久久av二区| 亚洲视频精选| 在线观看欧美日本| 麻豆国产精品777777在线 | 欧美在线关看| 亚洲电影有码| 亚洲无线一线二线三线区别av| 国产精品啊啊啊| 免费久久99精品国产自| 亚洲国产一成人久久精品| 欧美一区国产二区| 亚洲国产精品va在线观看黑人 | 欧美日韩在线观看一区二区| 亚洲视频播放| 亚洲精品在线视频| 久久最新视频| 久久九九免费| 午夜久久电影网| 亚洲婷婷免费| 在线一区二区视频| 亚洲精品在线视频观看| 在线激情影院一区| 国内成人自拍视频| 狠狠操狠狠色综合网| 在线观看视频日韩| 在线看一区二区| 亚洲电影毛片| 在线观看视频欧美| 一区二区三区免费观看| 国产精品99久久久久久宅男| 亚洲午夜精品网| 亚洲一级免费视频| 欧美有码在线视频| 久久阴道视频| 国产精品永久入口久久久| 国产精品一区2区| 精久久久久久| 亚洲精品一二三| 亚洲一区二区三区高清不卡| 午夜在线一区| 亚洲精品久久久久久久久久久久| 亚洲美女视频| 翔田千里一区二区| 玖玖玖免费嫩草在线影院一区| 欧美久久久久久蜜桃| 国产欧美一区二区三区视频| 亚洲国产精品123| 亚洲欧美日韩综合| 欧美国产三区| 亚洲欧美国产日韩天堂区| 久久精品在线播放| 国产精品红桃| 99精品视频网| 亚洲高清自拍| 欧美中文日韩| 国产精品一级在线| 午夜精品一区二区三区在线播放| 亚洲高清视频的网址| 巨乳诱惑日韩免费av| 国产美女精品免费电影| 99这里只有久久精品视频| 久久久久.com| 久久精彩免费视频| 国产在线播精品第三| 久久久精品日韩| 久久久久91| 亚洲国产精品一区二区第一页 | 欧美婷婷在线| 亚洲午夜高清视频| 亚洲午夜一区二区三区| 欧美日韩一区二区免费视频| 99在线精品观看| 亚洲欧美视频一区| 好吊日精品视频| 欧美 日韩 国产在线| 欧美日韩国产成人在线观看| 久久亚洲国产精品一区二区| 国产在线欧美日韩| 欧美国产精品久久| 国产精品av免费在线观看 | 禁断一区二区三区在线| 久热这里只精品99re8久| 欧美暴力喷水在线| 欧美一级免费视频| 欧美成人亚洲| 久久―日本道色综合久久| 免费视频一区| 久久精品国产2020观看福利| 欧美精品国产精品| 久久久视频精品| 国产欧美91| 99精品国产福利在线观看免费| 国产一区二区三区久久| 99视频在线观看一区三区| 亚洲高清免费视频| 午夜精品久久久| 久久成人18免费观看| 国产精品视频大全| 亚洲一区二区三区久久| 亚洲一区二区精品| 欧美丝袜一区二区| 夜夜嗨av一区二区三区四区 | 国产丝袜一区二区三区| 亚洲免费电影在线观看| 99视频国产精品免费观看| 欧美—级a级欧美特级ar全黄| 欧美激情一级片一区二区| 日韩一区二区高清| 国产精品日产欧美久久久久| 午夜精品福利视频| 欧美大片一区二区三区|