• <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>
            Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

            學(xué)海苦作舟,書山勤為徑

            留下點(diǎn)回憶

            常用鏈接

            統(tǒng)計

            積分與排名

            Denoise

            English study

            Web技術(shù)

            數(shù)據(jù)壓縮

            一些連接

            最新評論

            DirectX圖形的設(shè)備類型-D3D入門

            D3D設(shè)備是D3D的粉刷組件;它封裝并存儲粉刷的狀態(tài),另外,D3D設(shè)備執(zhí)行轉(zhuǎn)換和光操作,并光柵化一個圖像到一個面上。

            本節(jié)主要包括內(nèi)容:

            1.  設(shè)備類型

            2.  創(chuàng)建設(shè)備

            3.  選擇設(shè)備

            4.  不為人知的設(shè)備

            5.  決定硬件支持

            6.  處理頂點(diǎn)數(shù)據(jù)

            7.  設(shè)備支持的初基類型

            按照架構(gòu)來說,D3D設(shè)備包含一個轉(zhuǎn)換模塊、一個光模塊、一個光柵化模塊;如下圖所示:

            D3D Device ar.JPG


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

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

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

            硬件加速設(shè)備比軟件設(shè)備有更好的性能,HAL設(shè)備類型在所有支持D3D圖像卡上可用。在大多數(shù)情況下,程序?qū)⒂杏布铀俚挠嬎銠C(jī)作為目標(biāo)并依賴軟件來適應(yīng)低端計算機(jī)。

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

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

            行為

            D3D讓你可以指定設(shè)備行為,例如設(shè)備類型,IDirect3D9::CreateDevice方法來促使一個或多個行為多哥標(biāo)志的聯(lián)合來控制D3D設(shè)備的全局行為。這些行為指定什么需要或不需要在D3D運(yùn)行時維護(hù),使用所有設(shè)備類型和所有設(shè)備行為是可能的。例如,在設(shè)備創(chuàng)建的時候使用D3DCREATE_PUREDEVICE來指定D3DDEVTYPE_SW是有效的。

            1.1.1.      設(shè)備類型

            ?       HAL設(shè)備

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

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

            C++創(chuàng)建一個HAL設(shè)備,需要調(diào)用IDirect3D9::CreateDevice方法,并傳遞D3DDEVTYPE_HAL常量作為設(shè)備類。

            備注:硬件設(shè)備不能粉刷8位粉刷目標(biāo)表面。

            ?       引用設(shè)備

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

            為了在C++創(chuàng)建一個引用設(shè)備,調(diào)用IDirect3D9::CreateDevice方法,并傳遞D3DDEVTYPE_REF常量作為設(shè)備類型。

            1.1.2.    創(chuàng)建一個設(shè)備

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

            為了在C++程序中創(chuàng)建D3D設(shè)備,你的程序應(yīng)該首先創(chuàng)建一個D3D對象,這個將在D3D對象中解釋。

            首先,初始化D3DPRESENT_PARAMETERS結(jié)構(gòu),它在創(chuàng)建D3D設(shè)備的時候用到,下面的代碼例子詳細(xì)說明一個窗口程序后臺緩沖區(qū)彈出到前臺緩沖區(qū)。

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

            下面,創(chuàng)建D3D設(shè)備,下面的IDirect3D9::CreateDevice調(diào)用指定默認(rèn)的適配器,一個硬件抽象層設(shè)備和軟件頂點(diǎn)處理。

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

            注意,創(chuàng)建、釋放、復(fù)位設(shè)備的調(diào)用應(yīng)該在和焦點(diǎn)窗口的窗口程序在同一個線程中。

            在創(chuàng)建設(shè)備之后,設(shè)置它的狀態(tài)。

            1.1.3.    選擇一個設(shè)備

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

            程序必須執(zhí)行一系列的任務(wù)來選擇一個適當(dāng)?shù)?/SPAN>D3D設(shè)備。注意,下面的步驟目的是一個滿屏幕的程序,在多數(shù)情況下,一個窗口程序不能下面步驟的大部分。

            1.  初始化;

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

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

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

            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.  程序檢查調(diào)用IDirectD39::GetDeviceCaps方法來檢查該卡上期望的設(shè)備功能級別。該方法過濾那些不支持需要功能的設(shè)備,IDirect3D9::GetDeviceCaps返回的設(shè)備能力對于一個通過所有IDirect3D9::CheckDeviceType檢查的設(shè)備來說是一個常量。

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

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

            在完成上面的步驟之后,程序應(yīng)該有一個它可以操作的顯示模式列表,最后一步就是核實(shí)有足夠可用的設(shè)備可訪問的內(nèi)存來滿足緩沖區(qū)和antialiasing的需要。這個測試是必要的,因?yàn)槟J胶投嗖蓸雍喜⒌膬?nèi)存消耗在核實(shí)之前并不可預(yù)知,另外,有些顯卡結(jié)構(gòu)并不是有一個固定的設(shè)備訪問內(nèi)存;這意味著程序或許會在“滿屏模式”的時候報“顯存溢出”的錯誤。典型地,程序應(yīng)該從它提供給用戶的模式列表中刪除滿屏模式,或者應(yīng)該試著通過減少后臺內(nèi)存的數(shù)量來消耗較少的內(nèi)存,或者使用不是怎么復(fù)雜的多采樣技術(shù)。

            窗口程序執(zhí)行同樣的一系列任務(wù)。

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

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

            3.  程序應(yīng)該調(diào)用IDirect3D9::CheckDeviceType來決定在桌面模式下設(shè)備是否能支持指定格式的后臺緩沖區(qū)的粉刷。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.    放棄一個設(shè)備

            微軟的D3D設(shè)備可以處在操作狀態(tài)或放棄狀態(tài);操作狀態(tài)是設(shè)備的正常的狀態(tài),設(shè)備按照預(yù)期來運(yùn)行和表現(xiàn)所有的粉刷。當(dāng)一個事件發(fā)生時,設(shè)備會轉(zhuǎn)換到放棄狀態(tài),例如在滿屏模式下丟失鍵盤焦點(diǎn),導(dǎo)致粉刷變成不可能。丟失狀態(tài)是所有粉刷操作平靜失敗的表現(xiàn),這意味著粉刷操作不能返回成功代碼,即使是在粉刷操作失敗的情況下(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

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

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

            1.              失敗并返回D3DERR_DEVICELOST;這意味著程序需要認(rèn)識丟失的設(shè)備,以便于程序能標(biāo)識那些不能按照預(yù)期發(fā)生的事情。

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

            3.              函數(shù)返回一個返回值。

            1.1.4.1.    對丟失設(shè)備的響應(yīng)

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

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

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

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

            1.1.4.2.    鎖定操作

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

            1.1.4.3.    資源

            資源能消耗顯存,因?yàn)橐粋€丟失設(shè)備從顯卡擁有的顯存斷開,在設(shè)備丟失時不可能擔(dān)保分配顯存。結(jié)果所有資源創(chuàng)建方法都被實(shí)現(xiàn)為成功返回D3D_OK,但實(shí)際上僅僅分配虛擬系統(tǒng)內(nèi)存;因?yàn)槿魏物@存資源必須在設(shè)備調(diào)整大小的之前被銷毀,沒有過量分配顯存的問題。這些虛擬的表面允許鎖定和復(fù)制操作看起來運(yùn)行的很正常,直到程序調(diào)用IDirect3DDevice9::Present和發(fā)現(xiàn)設(shè)備已經(jīng)丟失了。

            所有顯存必須在設(shè)備從丟失狀態(tài)被復(fù)位為操作狀態(tài)之前釋放;這意味著程序應(yīng)該釋放任何通過IDirect3DDevice9::CreateAdditionalSwapChain創(chuàng)建的交換鏈和任何放在D3DPOOL_DEFAULT內(nèi)存類中的資源,其他狀態(tài)數(shù)據(jù)會在轉(zhuǎn)換到操作狀態(tài)時自動被銷毀。

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

            1.1.4.4.    重新得到數(shù)據(jù)

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

            D3D也允許程序從顯存資源復(fù)制產(chǎn)生的和以前寫的圖像到永久系統(tǒng)內(nèi)存資源,因?yàn)樵磮D像可能在任何時候丟失,D3D允許在設(shè)備都是的時候復(fù)制操作失敗。

            關(guān)于異步查詢,如果FLUSH標(biāo)志被設(shè)置,IDirect3DQuery9::GetData返回D3DERR_DEVICELOST,為了指示IDirect3DQuery9::GetData永遠(yuǎn)不會返回S_OK

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

            1.1.4.5.    可編程陰影

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

            1.1.5.    判斷硬件支持

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

            1.  IDirect3D9::CheckDeviceFormat

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

            2.  IDirect3D9::CheckDeviceType

            用來驗(yàn)證設(shè)備執(zhí)行硬件加速的能力,一個設(shè)備能力來為表現(xiàn)構(gòu)造交換鏈,或者一個粉刷當(dāng)前顯示格式的設(shè)備能力。

            3.  IDirect3D9::CheckDpthStencilMatch

            用來驗(yàn)證一個深度模板緩沖區(qū)格式是否和一個粉刷目標(biāo)格式相兼容。注意,在調(diào)用該方法之前,程序應(yīng)該調(diào)用在深度模板和粉刷目標(biāo)格式上都調(diào)用過IDirect3D9::CheckDeviceFormat方法。

            1.1.6.    處理頂點(diǎn)數(shù)據(jù)

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

            下面的標(biāo)志用來控制HAL和引用設(shè)備的頂點(diǎn)處理行為。

            l         D3DCREATE_SOFTWARE_VERTEXPROCESSING

            l         D3DCREATE_HARDWARE_VERTEXPROCESSING

            l         D3DCREATE_MIXED_VERTEXPROCESSING

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

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

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

            l         D3DVTXPCAPSD3DVTXPCAPS_DIRECTIONALLLIGHTS成員

            l         D3DVTXPCAPSD3DVTXPCAPS_LOCALVIEWER成員

            l         D3DVTXPCAPSD3DVTXPCAPS_POSITIONALLIGHTS成員

            l         D3DVTXPCAPSD3DVTXPCAPS_TEXGEN成員

            l         D3DVTXPCAPSD3DVTXPCAPS_TWEENING成員

            另外,下表列出了軟件頂點(diǎn)出來模式時D3DCAPS9成員的設(shè)置值:

            成員

            軟件頂點(diǎn)處理能力

            MaxActiveLights

            無限制

            MaxUserClipPlanes

            6

            MaxVertexBlendMatrices

            4

            MaxStreams

            16

            MaxVertexIndex

            0xFFFFFFFF

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

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

            亚洲а∨天堂久久精品9966| 久久久亚洲欧洲日产国码是AV| 久久精品国产亚洲AV无码偷窥| 久久久久久毛片免费播放| AA级片免费看视频久久| 国产成人久久精品二区三区| 久久精品不卡| 久久99精品国产自在现线小黄鸭| 九九久久99综合一区二区| 色综合久久天天综线观看| 蜜臀av性久久久久蜜臀aⅴ| 久久精品三级视频| 国产一久久香蕉国产线看观看| 伊人热热久久原色播放www| 国产精品久久久天天影视| 97视频久久久| 久久无码一区二区三区少妇| 久久大香香蕉国产| 亚洲色婷婷综合久久| 久久国产成人午夜aⅴ影院| 99久久99这里只有免费费精品| 亚洲人成网站999久久久综合| 亚洲嫩草影院久久精品| 久久久国产精品亚洲一区| 波多野结衣久久| 久久经典免费视频| 狠狠色伊人久久精品综合网| 伊人久久精品线影院| 久久99精品久久只有精品| 中文字幕日本人妻久久久免费| 人妻无码久久精品| 久久人搡人人玩人妻精品首页| 91麻豆精品国产91久久久久久| 国产精品久久久久无码av| 国产精品无码久久综合| 国内精品久久久久影院优 | 久久噜噜久久久精品66| 久久久久综合网久久| 亚洲伊人久久大香线蕉综合图片| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 777午夜精品久久av蜜臀|