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

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
    DirectX最振奮人心的一點(diǎn)就是,取消了所有固定管線,功能全部用shader來做。這樣就再也不需要受到各種功能上的限制的束縛了。譬如opengl舊版本的時(shí)候,可以輸入多個(gè)貼圖,然后每一層的貼圖給一個(gè)blend function,搞得好生復(fù)雜。到了后來,大家都不用固定管線了?,F(xiàn)在DirectX11直接取消了固定管線,API反而簡(jiǎn)潔了許多,也不會(huì)有各種鳥事發(fā)生。

    上圖:


    這里使用的功能有
    1:頂點(diǎn)緩沖區(qū)和索引緩沖區(qū)
    2:像素點(diǎn)光源(每一個(gè)像素分別計(jì)算,而不是在頂點(diǎn)計(jì)算完插值)
    3:CubeMap+多層貼圖混合
    4:渲染到貼圖(動(dòng)態(tài)生成CubeMap)

    代碼上傳在了Vczh Library++ 3.0的Candidate目錄里面(Candidate\Simulator\DirectX\Beginning\Beginning.sln)

    下面貼出中間那個(gè)球的shader:
 1 cbuffer MatrixBuffer : register(b0)
 2 {
 3     matrix worldMatrix;
 4     matrix viewMatrix;
 5     matrix projectionMatrix;
 6     float4 lightPosition;
 7     float4 lightColor;
 8     float4 lightProperty; //(minimumDistance, minimumStrenght, _, _)
 9     float4 environmentColor;
10 };
11 
12 Texture2D shaderTexture : register(t0);
13 SamplerState shaderSampler : register(s0);
14 TextureCube cubeMap : register(t1);
15 
16 struct VIn
17 {
18     float4 position : POSITION;
19     float3 normal : NORMAL;
20     float2 texcoord0 : TEXCOORD0;
21 };
22 
23 struct PIn
24 {
25     float4 position : SV_POSITION;
26     float4 worldPosition : POSITION0;
27     float3 worldNormal : NORMAL0;
28     float4 viewPosition : POSITION1;
29     float3 viewNormal : NORMAL1;
30     float2 texcoord0 : TEXCOORD0;
31 };
32 
33 PIn VShader(VIn input)
34 {
35     PIn output;
36     input.position.w = 1.0f;
37 
38     output.position = mul(input.position, worldMatrix);
39     output.worldPosition = output.position;
40     output.position = mul(output.position, viewMatrix);
41     output.viewPosition = output.position;
42     output.position = mul(output.position, projectionMatrix);
43     
44     output.worldNormal = mul(input.normal, (float3x3)worldMatrix);
45     output.worldNormal = normalize(output.worldNormal);
46     output.viewNormal = mul(output.worldNormal, (float3x3)viewMatrix);
47     output.viewNormal = normalize(output.viewNormal);
48     
49     output.texcoord0 = input.texcoord0;
50     
51     return output;
52 }
53 
54 float4 PShader(PIn input) : SV_TARGET
55 {
56     float3 cubeMapNormal = reflect(input.viewPosition.xyz/input.viewPosition.w, input.viewNormal);
57     float4 cubeMapColor = cubeMap.Sample(shaderSampler, cubeMapNormal);
58     float4 textureColor = shaderTexture.Sample(shaderSampler, input.texcoord0);
59     float4 materialColor = textureColor*0.4 + cubeMapColor*0.6;
60     
61     float4 lightDirection = lightPosition-input.worldPosition;
62     float lightCos = max(0, dot(normalize(lightDirection), input.worldNormal));
63     float lightDistance = length(lightDirection);
64     float lightStrength = lightCos/max(1, (lightDistance*lightDistance)/lightProperty.x)*lightProperty.y;
65     float4 diffuseColor = environmentColor+lightColor*float4(lightStrength,lightStrength,lightStrength,1);
66 
67     float4 color = materialColor*diffuseColor;
68     return color;
69 }

    為了便于調(diào)試和修改,我還封裝了一個(gè)簡(jiǎn)單的DirectX11的庫(Candidate\Simulator\DirectX\Beginning\Shared)。當(dāng)然現(xiàn)在功能肯定還不夠全面。下面是使用這個(gè)小庫寫的渲染上面的圖的代碼:
  1 #include "ModelBuilder.h"
  2 #include "..\..\..\..\..\Library\Pointer.h"
  3 
  4 using namespace vl;
  5 
  6 struct ConstantBufferType
  7 {
  8     D3DXMATRIX world;
  9     D3DXMATRIX view;
 10     D3DXMATRIX projection;
 11     D3DXVECTOR4 lightPosition;
 12     D3DXCOLOR lightColor;
 13     float lightMinimunDistanceSquare;
 14     float lightMinimumStrenght;
 15     float unused0[2];
 16     D3DXCOLOR environmentColor;
 17 };
 18 
 19 struct World
 20 {
 21 private:
 22     const DirectXEnvironment*                    env;
 23     int                                            clientWidth, clientHeight;
 24     D3DXMATRIX                                    viewMatrix, worldMatrix[4];
 25 
 26     DirectXConstantBuffer<ConstantBufferType>    constantBuffer;
 27     DirectXDepthBuffer                            depthBuffer;
 28     DirectXWindowRenderTarget                    windowRenderTarget;
 29     DirectXRenderer                                renderer;
 30     DirectXViewport                                viewport;
 31 
 32     DirectXTextureBuffer                        cubeMapTextures;
 33     Ptr<DirectXTextureRenderTarget>                cubeMapRenderTargets[6];
 34     DirectXDepthBuffer                            cubeMapDepthBuffer;
 35     DirectXCubeMapReference                        cubeMap;
 36     
 37     DirectXVertexBuffer<LightVertex>            lightGeometry;
 38     DirectXVertexBuffer<ColorVertex>            cube1;
 39     DirectXVertexBuffer<TextureVertex>            cube2, sphere;
 40 
 41     DirectXShader<LightVertex>                    lightShader;
 42     DirectXShader<ColorVertex>                    colorShader;
 43     DirectXShader<TextureVertex>                textureShader;
 44     DirectXTextureBuffer                        textureColumn;
 45     DirectXTextureBuffer                        textureEarth;
 46     DirectXSamplerBuffer                        textureSampler;
 47     DirectXShader<TextureVertex>                cubeShader;
 48 
 49     void WriteConstantBuffer(int worldMatrixIndex)
 50     {
 51         D3DXMatrixTranspose(&constantBuffer->world, &worldMatrix[worldMatrixIndex]);
 52         D3DXMatrixTranspose(&constantBuffer->view, &viewMatrix);
 53         D3DXMatrixTranspose(&constantBuffer->projection, &viewport.projectionMatrix);
 54         constantBuffer.Update();
 55     }
 56 public:
 57     World(const DirectXEnvironment* _env, int _clientWidth, int _clientHeight)
 58         :env(_env)
 59         ,clientWidth(_clientWidth), clientHeight(_clientHeight)
 60         ,constantBuffer(_env)
 61         ,depthBuffer(_env), windowRenderTarget(_env), renderer(_env), viewport(_env)
 62         ,cubeMapTextures(_env), cubeMapDepthBuffer(_env), cubeMap(_env)
 63         ,lightGeometry(_env) ,cube1(_env) ,cube2(_env) ,sphere(_env)
 64         ,lightShader(_env) ,colorShader(_env) ,textureShader(_env)
 65         ,textureColumn(_env) ,textureEarth(_env) ,textureSampler(_env)
 66         ,cubeShader(_env)
 67     {
 68         {
 69             depthBuffer.Update(clientWidth, clientHeight);
 70             cubeMapDepthBuffer.Update(512512);
 71             cubeMapTextures.Update(5125126true);
 72             for(int i=0;i<6;i++)
 73             {
 74                 cubeMapRenderTargets[i]=new DirectXTextureRenderTarget(_env);
 75                 cubeMapRenderTargets[i]->Update(&cubeMapTextures, i);
 76             }
 77             cubeMap.Update(&cubeMapTextures);
 78         }
 79         BuildLightGeometry(lightGeometry);
 80         BuildColorCube(cube1);
 81         BuildTextureCube(cube2);
 82         BuildTextureSphere(sphere);
 83         {
 84             lightShader.Fill(L"LightShader.txt", L"VShader", L"PShader")
 85                 .Field(L"POSITION"&LightVertex::Position)
 86                 ;
 87 
 88             colorShader.Fill(L"ColorShader.txt", L"VShader", L"PShader")
 89                 .Field(L"POSITION"&ColorVertex::Position)
 90                 .Field(L"NORMAL"&ColorVertex::Normal)
 91                 .Field(L"COLOR"&ColorVertex::Color)
 92                 ;
 93 
 94             textureShader.Fill(L"TextureShader.txt", L"VShader", L"PShader")
 95                 .Field(L"POSITION"&TextureVertex::Position)
 96                 .Field(L"NORMAL"&TextureVertex::Normal)
 97                 .Field(L"TEXCOORD"&TextureVertex::Texcoord0)
 98                 ;
 99 
100             textureColumn.Update(L"TextureColumn.jpg");
101             textureEarth.Update(L"earth.bmp");
102             textureSampler.Update(D3D11_FILTER_MIN_MAG_MIP_LINEAR, D3D11_TEXTURE_ADDRESS_WRAP, D3DXCOLOR(1111));
103 
104             cubeShader.Fill(L"CubeShader.txt", L"VShader", L"PShader")
105                 .Field(L"POSITION"&TextureVertex::Position)
106                 .Field(L"NORMAL"&TextureVertex::Normal)
107                 .Field(L"TEXCOORD"&TextureVertex::Texcoord0)
108                 ;
109         }
110         {
111             {
112                 D3DXMATRIX scaling;
113                 D3DXMatrixScaling(&scaling, 1.4f1.4f1.4f);
114 
115                 D3DXMatrixTranslation(&worldMatrix[0], -200);
116                 D3DXMatrixMultiply(&worldMatrix[0], &worldMatrix[0], &scaling);
117                 D3DXMatrixTranslation(&worldMatrix[1], 200);
118                 D3DXMatrixMultiply(&worldMatrix[1], &worldMatrix[1], &scaling);
119             }
120             {
121                 D3DXMATRIX matrix;
122                 D3DXMatrixScaling(&worldMatrix[2], 0.2f0.2f0.2f);
123 
124                 D3DXMatrixTranslation(&matrix, 4.7f00);
125                 D3DXMatrixMultiply(&worldMatrix[2], &worldMatrix[2], &matrix);
126 
127                 D3DXMatrixRotationY(&matrix, (float)D3DX_PI/4);
128                 D3DXMatrixMultiply(&worldMatrix[2], &worldMatrix[2], &matrix);
129 
130                 D3DXMatrixRotationX(&matrix, (float)D3DX_PI/5);
131                 D3DXMatrixMultiply(&worldMatrix[2], &worldMatrix[2], &matrix);
132             }
133             {
134                 D3DXMatrixScaling(&worldMatrix[3], 1.0f1.0f1.0f);
135             }
136         }
137         {
138             constantBuffer->lightPosition=D3DXVECTOR4(0001);
139             D3DXVec4Transform(&constantBuffer->lightPosition, &constantBuffer->lightPosition, &worldMatrix[2]);
140             constantBuffer->lightColor=D3DXCOLOR(0.7f0.7f0.7f1.0f);
141             constantBuffer->lightMinimunDistanceSquare=9;
142             constantBuffer->lightMinimumStrenght=3;
143             constantBuffer->environmentColor=D3DXCOLOR(0.3f0.3f0.3f1.0f);
144         }
145     }
146 
147     ~World()
148     {
149     }
150 
151     void Render()
152     {
153         {
154             D3DXVECTOR3 ats[]=
155             {
156                 D3DXVECTOR3( 1,  0,  0),
157                 D3DXVECTOR3(-1,  0,  0),
158                 D3DXVECTOR3( 0,  1,  0),
159                 D3DXVECTOR3( 0-1,  0),
160                 D3DXVECTOR3( 0,  0,  1),
161                 D3DXVECTOR3( 0,  0-1),
162             };
163             D3DXVECTOR3 ups[]=
164             {
165                 D3DXVECTOR3( 0,  1,  0),
166                 D3DXVECTOR3( 0,  1,  0),
167                 D3DXVECTOR3( 0,  0-1),
168                 D3DXVECTOR3( 0,  0,  1),
169                 D3DXVECTOR3( 0,  1,  0),
170                 D3DXVECTOR3( 0,  1,  0),
171             };
172             for(int i=0;i<6;i++)
173             {
174                 D3DXMatrixLookAtLH(&viewMatrix, &D3DXVECTOR3(000), &ats[i], &ups[i]);
175                 renderer.SetRenderTarget(cubeMapRenderTargets[i].Obj(), &cubeMapDepthBuffer);
176                 viewport.SetViewport(512512, (float)D3DX_PI/20.1f100.0f);
177                 cubeMapRenderTargets[i]->Clear(D3DXCOLOR(0.0f0.2f0.4f1.0f));
178                 cubeMapDepthBuffer.Clear();
179 
180                 constantBuffer.VSBindToRegisterBN(0);
181                 constantBuffer.PSBindToRegisterBN(0);
182 
183                 WriteConstantBuffer(0);
184                 cube1.SetCurrentAndRender(&colorShader);
185             
186                 WriteConstantBuffer(1);
187                 textureColumn.PSBindToRegisterTN(0);
188                 textureSampler.PSBindToRegisterSN(0);
189                 cube2.SetCurrentAndRender(&textureShader);
190 
191                 WriteConstantBuffer(2);
192                 lightGeometry.SetCurrentAndRender(&lightShader);
193             }
194         }
195         {
196             D3DXMatrixLookAtLH(&viewMatrix, &D3DXVECTOR3(00-10), &D3DXVECTOR3(001), &D3DXVECTOR3(010));
197             renderer.SetRenderTarget(&windowRenderTarget, &depthBuffer);
198             viewport.SetViewport(clientWidth, clientHeight, (float)D3DX_PI/40.1f100.0f);
199             windowRenderTarget.Clear(D3DXCOLOR(0.0f0.2f0.4f1.0f));
200             depthBuffer.Clear();
201 
202             constantBuffer.VSBindToRegisterBN(0);
203             constantBuffer.PSBindToRegisterBN(0);
204 
205             WriteConstantBuffer(0);
206             cube1.SetCurrentAndRender(&colorShader);
207             
208             WriteConstantBuffer(1);
209             textureColumn.PSBindToRegisterTN(0);
210             textureSampler.PSBindToRegisterSN(0);
211             cube2.SetCurrentAndRender(&textureShader);
212 
213             WriteConstantBuffer(2);
214             lightGeometry.SetCurrentAndRender(&lightShader);
215             
216             WriteConstantBuffer(3);
217             textureEarth.PSBindToRegisterTN(0);
218             textureSampler.PSBindToRegisterSN(0);
219             cubeMap.PSBindToRegisterTN(1);
220             sphere.SetCurrentAndRender(&cubeShader);
221         }
222         env->swapChain->Present(00);
223     }
224 
225     void Rotate(float x, float y)
226     {
227         D3DXMATRIX rotation;
228         D3DXMatrixRotationYawPitchRoll(&rotation, -x, -y, 0);
229         D3DXMatrixMultiply(&worldMatrix[0], &worldMatrix[0], &rotation);
230         D3DXMatrixMultiply(&worldMatrix[1], &worldMatrix[1], &rotation);
231         D3DXMatrixMultiply(&worldMatrix[3], &worldMatrix[3], &rotation);
232     }
233 };
234 World* world=0;
235 int oldX=0;
236 int oldY=0;
237 bool mouseTracking=false;
238 
239 void CALLBACK DirectXProcIdle()
240 {
241     if(world)
242     {
243         world->Render();
244     }
245 }
246 
247 LRESULT CALLBACK DirectXProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool& callDefWindowProc)
248 {
249     switch(uMsg)
250     {
251     case WM_SHOWWINDOW:
252         {
253             if(wParam==TRUE)
254             {
255                 if(!world)
256                 {
257                     SIZE size=WindowGetClient(hwnd);
258                     const DirectXEnvironment* env=CreateDirectXEnvironment(hwnd);
259                     world=new World(env, size.cx, size.cy);
260                 }
261             }
262         }
263         break;
264     case WM_DESTROY:
265         {
266             if(world)
267             {
268                 delete world;
269                 world=0;
270                 DestroyDirectXEnvironment();
271             }
272         }
273         break;
274     case WM_LBUTTONDOWN:
275         {
276             SetCapture(hwnd);
277             WindowMouseInfo info(wParam, lParam, false);
278             oldX=info.x;
279             oldY=info.y;
280             mouseTracking=true;
281         }
282         break;
283     case WM_MOUSEMOVE:
284         {
285             if(mouseTracking)
286             {
287                 WindowMouseInfo info(wParam, lParam, false);
288 
289                 int offsetX=info.x-oldX;
290                 int offsetY=info.y-oldY;
291                 float rotateX=(float)D3DX_PI*offsetX/200;
292                 float rotateY=(float)D3DX_PI*offsetY/200;
293                 world->Rotate(rotateX, rotateY);
294 
295                 oldX=info.x;
296                 oldY=info.y;
297             }
298         }
299         break;
300     case WM_LBUTTONUP:
301         {
302             ReleaseCapture();
303             mouseTracking=false;
304         }
305         break;
306     }
307     return 0;
308 }



posted on 2011-07-15 04:25 陳梓瀚(vczh) 閱讀(10221) 評(píng)論(17)  編輯 收藏 引用 所屬分類: 3D

評(píng)論:
# re: DirectX11用起來好爽啊 2011-07-15 04:27 | 空明流轉(zhuǎn)
膜拜高手!  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 04:36 | 還我沙發(fā)
@空明流轉(zhuǎn)
還我沙發(fā)  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 05:04 | ArthasLee
有圖有真相,有光有反射,可惜我依舊對(duì)3D無愛……  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊[未登錄] 2011-07-15 06:06 | connor
唉,心目中的神人從此走下神壇。。。。。  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊[未登錄] 2011-07-15 08:55 | kevin
打醬油,圖形學(xué)不懂。  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 17:12 | Paw
啦啦啦啦,,,我的機(jī)器的顯卡還是DX9的。。。  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 17:28 | ooseven
對(duì)directx沒啥研究,不過一直有一個(gè)想法,不知道如果用directx封裝一個(gè)類似qt或mfc那樣gui應(yīng)用程序框架這種想法靠不靠譜?  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 18:24 | right
@ooseven
微軟已經(jīng)做了,WPF嗎,也有很多其他人在做  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 22:28 |
隨便點(diǎn)鼠標(biāo)都能來到梓瀚大神的門口。。只能說。。太有緣了。。。  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-15 23:05 | 陳梓瀚(vczh)
@ooseven
嗯,WPF距離他的原始avalon版本到現(xiàn)在也10年了……  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-16 00:40 | ooseven
@陳梓瀚(vczh)
wpf我知道,不過它畢竟是微軟做的東西,誰知道它有沒有作弊,使用一些directx小組專門為他們提供的特殊api。如果單靠微軟對(duì)外發(fā)布的api不知道會(huì)不會(huì)碰到麻煩  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-16 01:22 | 陳梓瀚(vczh)
@ooseven
微軟那么大,組與組之間的配合沒有你想象的那么好的。根據(jù)我兩年的工作經(jīng)驗(yàn)來看,基本上沒什么可能作弊。倘若真的因?yàn)閃PF的需求導(dǎo)致DirectX有什么變化,那么他就會(huì)體現(xiàn)在Windows加入了新的API,然后舊操作系統(tǒng)不予支持。因此它用到的東西你都能用到,當(dāng)然至于什么東西是需要的,這個(gè)還要你自己去弄明白。

其中一個(gè)痕跡就是,windows里面有一些low level GDI函數(shù)是跟DirectX相關(guān)的,還有一些奇怪的low level繪圖設(shè)備函數(shù)。這些基本都不是什么應(yīng)用程序需要用到的API,唯一的可能就是DirectX自己要用,或者WPF要用。  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-16 06:23 | Ooseven
@陳梓瀚(vczh)
了解了,感謝這么詳細(xì)的回答。如果有時(shí)間折騰一下directx gui框架估計(jì)是一件非常有趣的工作。  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-17 02:11 | 空明流轉(zhuǎn)
每日一膜拜,神清氣又爽!  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-17 06:12 | 陳梓瀚(vczh)
@Ooseven
DXSDK里面附帶了一個(gè)簡(jiǎn)單的dxgui的,雖然功能不像wpf那么復(fù)雜,但是用來做一些游戲的配置窗口啊菜單什么的還是夠用(只是因?yàn)槊拦ぬ?,很少人用……?nbsp; 回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-07-17 18:54 | longzxr
膜拜高手啊  回復(fù)  更多評(píng)論
  
# re: DirectX11用起來好爽啊 2011-08-03 20:24 | lyphoon
@陳梓瀚(vczh)

wpf 不是使用標(biāo)準(zhǔn)的direct3d9,而是direct3d9 ex  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区高清视频在线观看| 亚洲第一偷拍| 亚洲一二三区在线| 亚洲国产高潮在线观看| 国产日韩欧美一区二区三区在线观看 | 亚洲桃色在线一区| 亚洲人成人99网站| 日韩视频欧美视频| 久热精品视频在线观看一区| 在线中文字幕不卡| 亚洲欧洲在线一区| 久久久五月天| 亚洲免费在线观看视频| 亚洲女同性videos| 久久综合久久久久88| 亚洲一区二区三区高清| 亚洲国产精品一区在线观看不卡 | 久久婷婷亚洲| 久久久www成人免费精品| 亚洲高清不卡av| 亚洲欧美制服另类日韩| 欧美日韩国产欧| 国产精品高清免费在线观看| 尤物在线观看一区| 香港久久久电影| 欧美三级视频在线| 欧美日韩播放| 国产亚洲精品一区二区| 欧美亚洲在线观看| 国产精品激情电影| 一区二区三区欧美| 亚洲视频你懂的| 好吊妞**欧美| 99在线精品免费视频九九视| 国产精品视频免费观看| 久热精品在线视频| 欧美精品一区二区三区蜜桃| 久久精品在线播放| 欧美日韩91| 久久激情视频久久| 欧美丰满高潮xxxx喷水动漫| 久久综合网hezyo| 在线播放日韩专区| 久久偷窥视频| 亚洲自拍偷拍福利| 久久久久免费| 免费亚洲一区二区| 亚洲国产精品电影| 久久久久99精品国产片| 久久综合久久综合这里只有精品| 国产区精品视频| 久久久久久一区二区| 欧美aⅴ99久久黑人专区| 亚洲第一在线综合在线| 欧美激情亚洲精品| 亚洲网友自拍| 一本久道久久综合狠狠爱| 榴莲视频成人在线观看| 麻豆成人在线播放| 亚洲国产视频直播| 亚洲在线观看视频网站| 国产情侣久久| 亚洲一级网站| 亚洲人成在线观看网站高清| 黑人极品videos精品欧美裸| 久久一区二区三区国产精品 | 欧美成人精品三级在线观看| 狠狠色丁香久久综合频道| 免费观看成人| 先锋影音网一区二区| 亚洲一区中文| 欧美一二三视频| 欧美亚洲免费在线| 久久久www成人免费无遮挡大片| 久久久国产精品亚洲一区 | 久久精品99国产精品酒店日本| 亚洲二区视频| 亚洲一区影音先锋| 一区二区三区**美女毛片| 国产精品久久久久三级| 亚洲免费网站| 亚洲精品影视| 91久久精品日日躁夜夜躁国产| 一色屋精品视频免费看| 麻豆精品在线视频| 一区二区三区导航| 欧美电影免费观看大全| 亚洲视频欧美在线| 亚洲欧美一区二区精品久久久| 红桃视频欧美| 国产精品久久久久久久第一福利| 女仆av观看一区| 久久一二三区| 国产精品久久一卡二卡| 国产嫩草一区二区三区在线观看| 免播放器亚洲| 快播亚洲色图| 久久久国产精品一区二区中文| 性欧美1819性猛交| 亚洲永久在线| 欧美成人第一页| 欧美激情精品久久久| 国产精品久久久久久久久久久久久 | 性欧美激情精品| 亚洲婷婷免费| 亚洲免费观看| 久久福利电影| 国产精品99一区二区| 在线视频国内自拍亚洲视频| 亚洲网在线观看| 欧美激情第3页| 国产午夜精品在线观看| 欧美午夜片欧美片在线观看| 国产精品一区二区久久精品| 亚洲国产精品一区制服丝袜| 日韩一级精品视频在线观看| 老色鬼久久亚洲一区二区 | 国产亚洲精品aa| 亚洲精品日韩激情在线电影| 亚洲一区二区精品| 亚洲欧洲日本在线| 一区二区三区精密机械公司 | 欧美日韩的一区二区| 亚洲国产99| 麻豆精品传媒视频| 美女成人午夜| 亚洲国产精品久久久久秋霞不卡 | 中文av一区特黄| 99精品免费网| 欧美日韩免费观看一区| 亚洲丶国产丶欧美一区二区三区 | 亚洲自拍高清| 亚洲免费av观看| 欧美激情在线免费观看| 韩日在线一区| 欧美与黑人午夜性猛交久久久| 亚洲精品一区久久久久久| 久久婷婷av| 亚洲日韩欧美视频一区| 欧美激情中文字幕一区二区| 欧美日韩亚洲高清| 玖玖精品视频| 久久久中精品2020中文| 99视频精品全部免费在线| 欧美日韩成人一区二区| 日韩亚洲一区在线播放| 一本色道久久综合狠狠躁篇怎么玩 | 久久天堂av综合合色| 亚洲欧美日韩精品久久久久| 在线看欧美视频| 亚洲在线黄色| 六月天综合网| 这里只有精品在线播放| 亚洲永久免费观看| 亚洲国产一区二区三区a毛片 | 欧美在线观看一区二区| 久久久久综合一区二区三区| 亚洲成人在线| 亚洲综合不卡| 最新成人av在线| 欧美一区二区三区久久精品茉莉花| 亚洲黄一区二区| 欧美一区二区三区视频免费播放| 99视频+国产日韩欧美| 亚洲视频播放| 亚洲精品一区二| 久久综合网色—综合色88| 久久成年人视频| 欧美日本免费一区二区三区| 久久综合伊人77777尤物| 国产视频一区二区三区在线观看| 亚洲在线观看视频| 久久久久成人精品| 欧美日韩视频在线一区二区 | 亚洲片区在线| 久久综合九色综合久99| 亚洲精品一二三区| 久久理论片午夜琪琪电影网| 亚洲精品免费一二三区| 午夜久久美女| 欧美亚洲自偷自偷| 国产精品久久久久毛片软件 | 久久久久久欧美| 99精品欧美一区二区三区| 国产精品一区二区久久久久| 久久久久久久综合日本| 国产日本欧洲亚洲| 久久精品30| 亚洲男人的天堂在线aⅴ视频| 国产精品国产福利国产秒拍| 中文精品在线| 欧美成人午夜激情在线| 在线中文字幕不卡| 亚洲激情影院| 国产欧美日韩一区二区三区在线观看 | 亚洲精品国产精品久久清纯直播 | 久久免费国产精品1| 亚洲国内精品| 久久岛国电影| 亚洲精品视频免费|