精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在游戲中發(fā)揮HTML5 Canvas的潛能

移動開發(fā)
目前, 支持HTML 5的瀏覽器和Windows 8 Metro成為了游戲開發(fā)的候選方案。利用canvas(畫布)可以實現(xiàn)硬件加速,你可以在上面繪制游戲的內容,通過一些技巧可以達到每分鐘60幀的渲染速度。

[[71280]]

 

在游戲中,fluidity(流暢性)這一概念非常重要,因為好的流暢性能帶給玩家更好的體驗。

這篇文章的主旨在于教你一些技巧,讓你可以最大程度地發(fā)揮HTML5 canvas的潛能。

 

我將通過一個例子來表達我要講的內容。這個例子是2D tunnel effect(2D隧道效應),它是我為Coding4Fun 會議寫的(我參加了在法國舉辦的TechDays 2012)。

(http://video.fr.msn.com/watch/video/techdays-2012-session-technique-coding4fun/zqy7cm8l).

早在80年代,當我還是一個年輕的demomaker的時候曾受到一些Commodore AMIGA代碼的啟發(fā),從而寫了這個2D tunnel effect。

經(jīng)過不斷地改進,現(xiàn)在它僅使用了canvas和Javascript(最初的代碼是基于68000匯編的):

完整的代碼可以從這里獲得:http://www.catuhe.com/msdn/canvas/tunnel.zip

這篇文章的目的不是講解該程序的開發(fā)過程,而是讓你通過優(yōu)化已有的代碼來達到一個實時性的效果。

使用off-screen canvas(離屏畫布)來讀取圖片數(shù)據(jù)

我想講的第一點是怎樣使用canvas來讀取圖片數(shù)據(jù)。實際上,任何一個游戲都需要圖形來顯示游戲界面和背景。canvas有一個非常有用的畫圖方法:drawImage 。這個功能可以用來繪制游戲界面,通過它你可以定義起始和目的區(qū)域。

但是有時候光使用它是不夠的,比如你想要在源圖像上實現(xiàn)一些特效,或者源圖像不是一個簡單的位圖而是一個復雜的資源(如地圖)。

在這些情況下,你需要訪問到圖片的內部數(shù)據(jù)。但是Image標簽無法讀到這些數(shù)據(jù),這時候就該canvas上場了。

事實上,每當你需要從圖片中讀取內容的時候,你都可以使用off-screen canvas。也就是說,當你導入一張圖片的時候,你只需要將它渲染到canvas中(而不是DOM里),然后你就可以通過讀取canvas的像素點來獲得源圖片的內容了(這個過程非常簡單)。

有關部分的代碼如下(2D tunnel effect中用來讀取隧道的紋理數(shù)據(jù)的):

  1. var loadTexture = function (name, then) { 
  2.  
  3.     var texture = new Image(); 
  4.  
  5.     var textureData; 
  6.  
  7.     var textureWidth; 
  8.  
  9.     var textureHeight; 
  10.  
  11.     var result = {}; 
  12.  
  13.     // on load 
  14.  
  15.     texture.addEventListener(‘load’, function () { 
  16.  
  17.         var textureCanvas = document.createElement(‘canvas’); // off-screen canvas 
  18.  
  19.         // Setting the canvas to right size 
  20.  
  21.         textureCanvas.width = this.width; //<– “this” is the image 
  22.  
  23.         textureCanvas.height = this.height; 
  24.  
  25.         result.width = this.width; 
  26.  
  27.         result.height = this.height; 
  28.  
  29.         var textureContext = textureCanvas.getContext(’2d’); 
  30.  
  31.         textureContext.drawImage(this, 0, 0); 
  32.  
  33.         result.data = textureContext.getImageData(0, 0, this.width, this.height).data; 
  34.  
  35.         then(); 
  36.  
  37.     }, false); 
  38.  
  39.     // Loading 
  40.  
  41.     texture.src = name; 
  42.  
  43.     return result; 
  44.  
  45. }; 

為了使用這些代碼,你還要保證隧道紋理圖片的導入是異步的,因此你需要傳遞then參數(shù),代碼如下:

  1. // Texture 
  2.  
  3. var texture = loadTexture(“soft.png”, function () { 
  4.  
  5.     // Launching the render 
  6.  
  7.     QueueNewFrame(); 
  8.  
  9. }); 

使用硬件縮放功能

現(xiàn)代瀏覽器和Windows8都支持硬件加速的canvas,這意味著,你可以使用GPU來調整canvas里面內容的尺寸。

在2D tunnel effect里,該算法要求處理canvas的每一個像素點,因此一個1024×768的canvas就得處理786432個像素點,并且為了達到流暢性的要求,每分鐘得處理60次,也就是說每分鐘要處理47185920個像素點!

很顯然,任何可以減少像素處理總數(shù)的方法都能帶來極大的性能提升。

又一次輪到canvas上場了!下面的代碼展示了怎樣使用硬件加速來調整canvas的內部有效區(qū)域使之等于DOM對象的外部尺寸:

  1. // Setting hardware scaling 
  2.  
  3. canvas.width = 300; 
  4.  
  5. canvas.style.width = window.innerWidth + ‘px’; 
  6.  
  7. canvas.height = 200; 
  8.  
  9. canvas.style.height = window.innerHeight + ‘px’; 

請注意DOM對象的尺寸(canvas.style.width、canvas.style.height)和canvas有效區(qū)域的尺寸(canvas.width、canvas.height)之間的差別。

當這兩個尺寸不同的時候,硬件會自動調整有效區(qū)域的大小,這是一件很棒的事:我們可以繪制低分辨率的圖形,然后通過GPU的調整使之符合DOM對象的大小(實現(xiàn)一個漂亮免費的模糊濾鏡效果)。

在這種情況下,本來只有300×200 的圖像會被GPU擴展到跟你的窗口一樣大。

所有的現(xiàn)代瀏覽器都支持該功能,因此你可以放心的使用。

優(yōu)化rendering loop

制作游戲的時候,需要一個rendering loop用來繪制所有的組件(如背景,界面,分數(shù)等等)。這個loop是代碼的核心,因此必須充分優(yōu)化從而保證游戲的快速和流暢。

RequestAnimationFrame

HTML5一個有趣的功能是使用window.requestAnimationFrame. 代替window.setInterval 來創(chuàng)建定時器,從而實現(xiàn)每(1000/16) 毫秒渲染一次(以達到60fps),你可以通過requestAnimationFrame將該任務交給瀏覽器。調用這個方法表明你想要盡快的更新有關的圖形。

瀏覽器會將你的請求放入內部渲染計劃,并使之與其本身的渲染及動畫代碼(CSS, transitions等等)同步。這個方法另一個有趣的地方在于如果窗口不顯示(minimized, fully occluded等等),你的代碼就不會被調用。

這能改善性能,因為瀏覽器可以優(yōu)化并發(fā)渲染從而提高動畫的流暢性(如你的渲染周期太長的話瀏覽器會將它與其本身的渲染及動畫周期同步)。

代碼很清晰(別忘了window前綴):

  1. var intervalID = -1; 
  2.  
  3. var QueueNewFrame = function () { 
  4.  
  5.     if (window.requestAnimationFrame) 
  6.  
  7.         window.requestAnimationFrame(renderingLoop); 
  8.  
  9.     else if (window.msRequestAnimationFrame) 
  10.  
  11.         window.msRequestAnimationFrame(renderingLoop); 
  12.  
  13.     else if (window.webkitRequestAnimationFrame) 
  14.  
  15.         window.webkitRequestAnimationFrame(renderingLoop); 
  16.  
  17.     else if (window.mozRequestAnimationFrame) 
  18.  
  19.         window.mozRequestAnimationFrame(renderingLoop); 
  20.  
  21.     else if (window.oRequestAnimationFrame) 
  22.  
  23.         window.oRequestAnimationFrame(renderingLoop); 
  24.  
  25.     else { 
  26.  
  27.         QueueNewFrame = function () { 
  28.  
  29.         }; 
  30.  
  31.         intervalID = window.setInterval(renderingLoop, 16.7); 
  32.  
  33.     } 
  34.  
  35. }; 

你只需要在rendering loop的結尾調用這個函數(shù)并在接下來的代碼段里進行注冊即可:

  1. var renderingLoop = function () { 
  2.  
  3.     … 
  4.  
  5.     QueueNewFrame(); 
  6.  
  7. }; 

訪問DOM(Document Object Model)

為了優(yōu)化rendering loop,你必須遵循這條黃金準則:DO NOT ACCESS THE DOM(不要訪問DOM)。即使現(xiàn)代瀏覽器在這方面做了優(yōu)化,讀取DOM對象屬性還是太慢了。

例如,在我的代碼里,我使用了Internet Explorer 10 profiler(IE10的提供的分析器,按F12快捷鍵打開),顯示的結果如下:

 

如圖所示,訪問canvas的寬度和高度會花費大量的時間!

原始代碼如下:

  1. var renderingLoop = function () { 
  2.  
  3.     for (var y = -canvas.height / 2; y < canvas.height / 2; y++) { 
  4.  
  5.         for (var x = -canvas.width / 2; x < canvas.width / 2; x++) { 
  6.  
  7.             … 
  8.  
  9.         } 
  10.  
  11.     } 
  12.  
  13. }; 

你可以通過兩個變量來預先獲取canvas.width 和 canvas.height,然后在后面用變量來代替這些屬性值:

  1. var renderingLoop = function () { 
  2.  
  3.     var index = 0; 
  4.  
  5.     for (var y = -canvasHeight / 2; y < canvasHeight / 2; y++) { 
  6.  
  7.         for (var x = -canvasWidth / 2; x < canvasWidth / 2; x++) { 
  8.  
  9.             … 
  10.  
  11.         } 
  12.  
  13.     } 
  14.  
  15. }; 

是不是非常簡單?雖然有時候很難注意到這些細節(jié),但是請相信我這絕對是件值得的事。

預先計算

通過分析器得知,Math.atan2函數(shù)比較慢。事實上,該操作并不需要在運行時計算,你可以在JavaScript里面加一些代碼預先計算出結果。

 

一般來說,預先計算一些較為費時的代碼是一種好方法。這里,在運行rendering loop之前,我已經(jīng)計算好了Math.atan2:

  1. // precompute arctangent 
  2.  
  3. var atans = []; 
  4.  
  5. var index = 0; 
  6.  
  7. for (var y = -canvasHeight / 2; y < canvasHeight / 2; y++) { 
  8.  
  9.     for (var x = -canvasWidth / 2; x < canvasWidth / 2; x++) { 
  10.  
  11.         atans[index++] = Math.atan2(y, x) / Math.PI; 
  12.  
  13.     } 
  14.  

atans數(shù)組的使用明顯的提高了性能。

避免使用Math.round, Math.floor 以及 parseInt

最后一點是parseInt的使用:

 

當你使用canvas時,你需要使用一些整數(shù)坐標。實際上,所有的計算都采用的浮點數(shù),你需要將它們轉換成整形。

JavaScript 提供了 Math.round, Math.floor 甚至 parseInt 來轉換數(shù)值。但是這個方法做了一些額外的工作(比如檢測數(shù)據(jù)是不是有效的數(shù)值,parseInt 甚至先將參數(shù)轉換成了字符串!)。在我的rendering loop里面,我需要一個更快的轉換方法。

在我的舊的匯編代碼里面,我使用了一個小技巧:將數(shù)據(jù)右移0位。這會將浮點數(shù)從浮點寄存器移到整數(shù)寄存器,并且是通過硬件轉換的。右移0位不會改變數(shù)據(jù)的值,但是會以整數(shù)形式返回。

原始代碼如下:

u = parseInt((u < 0) ? texture.width + (u % texture.width) : (u >= texture.width) ? u % texture.width : u);

以下是改進后的代碼:

u = ((u < 0) ? texture.width + (u % texture.width) : (u >= texture.width) ? u % texture.width : u)>> 0;

當然該方法要求你的數(shù)據(jù)是合法的數(shù)值。

最終結果

實現(xiàn)了上述優(yōu)化之后得到的結果如下:

 

你可以看到做了這些基本的功能優(yōu)化之后的表現(xiàn)。

原始的隧道渲染(沒做任何優(yōu)化):

做完上述優(yōu)化之后:

下表展示了每項優(yōu)化對幀速率的影響(在我的機器上):

 

更進一步

記住這些關鍵技巧,你就可以為現(xiàn)代瀏覽器或Windows8制作實時、快速、流暢的游戲了。

原文鏈接:Unleash The Power of HTML5′s Canvas For Gaming

責任編輯:佚名 來源: Web App Trend
相關推薦

2018-01-20 21:45:08

SDN軟件定義網(wǎng)絡多層網(wǎng)絡

2010-12-16 09:31:08

Windows Emb

2022-02-22 14:43:16

區(qū)塊鏈游戲加密貨幣

2022-05-27 11:22:40

Canvas超級瑪麗游戲

2012-05-09 09:41:58

HTML5

2014-12-30 17:13:51

HTML5

2024-01-15 10:05:04

2013-03-06 16:14:16

UCHTML5游戲引擎

2013-10-21 15:24:49

html5游戲

2012-08-30 10:18:09

HTML5CanvasHTML5實例

2015-10-08 08:48:44

HTML5canvas動畫

2016-01-20 10:11:56

華麗CanvasHTML5

2012-02-24 15:28:36

ibmdw

2017-07-05 16:22:09

HTML5canvas動態(tài)

2013-06-24 14:55:30

HTML5

2015-07-08 16:38:10

Cocos游戲引擎

2011-12-09 20:25:16

HTML5

2016-04-18 16:20:55

2017-09-30 16:18:00

HTML5代碼對象

2012-04-01 10:02:00

HTML5
點贊
收藏

51CTO技術棧公眾號

国产盗摄一区二区三区在线| 妓院一钑片免看黄大片| 熟妇高潮一区二区高潮| 亚洲欧美成人| 中文字幕精品视频| 韩国av中国字幕| 中文在线资源| 亚洲男女毛片无遮挡| 精品久久中出| 国产又粗又猛又爽| 亚洲一区二区毛片| 欧美不卡视频一区发布| 大又大又粗又硬又爽少妇毛片 | 亚洲视频一区在线| 国产一区二区三区四区五区在线 | 日韩av最新在线观看| 亚洲视频在线a| 黄页网站在线| 亚洲国产精品av| 国产在线精品日韩| 97国产精品久久久| 肉丝袜脚交视频一区二区| 色综合久久中文字幕综合网小说| 欧美 日韩 国产 成人 在线观看 | 国产精品18久久久| 国产国产精品人在线视| 日韩成人一区二区三区| 亚欧美无遮挡hd高清在线视频| 国产丝袜一区二区三区| 最新国产精品自拍| 24小时成人在线视频| 一本高清dvd不卡在线观看| 日韩亚洲欧美一区二区| 毛片av在线| 欧美激情中文不卡| 明星裸体视频一区二区| 天天操天天射天天| 国产成人超碰人人澡人人澡| 91嫩草在线视频| 亚洲精品毛片一区二区三区| 国产欧美日韩综合一区在线播放| 欧美大片在线影院| 国产真实乱在线更新| 精品国产不卡| 亚洲欧美一区二区三区情侣bbw | 国产精品白浆| 日韩视频在线一区二区| 99精品视频国产| 999色成人| 欧美精品日日鲁夜夜添| 色一情一区二区| 日韩免费在线电影| 欧美日韩亚洲丝袜制服| 艹b视频在线观看| 成人av色网站| 欧美日韩国产小视频在线观看| 国产又粗又长又大的视频| 欧美精选视频一区二区| 91高清视频免费看| 久久久久久三级| 欧美va视频| 精品视频资源站| 国产福利精品一区二区三区| 国产精久久一区二区| 日韩亚洲欧美在线观看| 少妇被狂c下部羞羞漫画| 国产精品调教| 精品调教chinesegay| 久久精品无码一区| 欧美高清视频手机在在线| 久久亚洲春色中文字幕| 农村黄色一级片| 在线观看亚洲| 98精品国产自产在线观看 | 亚洲欧美卡通另类91av| 日本欧美爱爱爱| 国产精品51麻豆cm传媒| 久久精品久久久精品美女| 成人在线中文字幕| 秋霞网一区二区| xfplay精品久久| 亚洲国产欧美一区二区三区不卡| av在线app| 偷拍一区二区三区四区| 久久精品免费网站| 免费一区二区三区在线视频| 亚洲成人性视频| 国产精品久久久久久久av| 欧美激情理论| 韩国精品久久久999| 亚洲日本视频在线观看| 日本特黄久久久高潮 | 国产极品模特精品一二| 亚洲人成欧美中文字幕| 中国毛片直接看| 在线亚洲欧美| 成人国产在线激情| 深爱五月激情五月| 国产精品久久久久影院亚瑟| 国产一区二区四区| 国产精品蜜月aⅴ在线| 精品国产自在久精品国产| 欧美多人猛交狂配| 欧美在线网址| 国产精品69精品一区二区三区| 朝桐光av在线一区二区三区| 久久久久久久久97黄色工厂| 国产精品一二三在线观看| 英国三级经典在线观看| 制服丝袜亚洲色图| 中文字幕人妻一区二区| 国内精品美女在线观看| 国产69久久精品成人| av网站在线观看免费| 国产午夜精品一区二区| 婷婷五月综合缴情在线视频| 久久福利在线| 亚洲欧洲在线看| 日韩三级av在线| 国产一区欧美日韩| 欧美日韩在线精品| 成人超碰在线| 日韩一区二区视频| 男女全黄做爰文章| 久久最新视频| 激情一区二区三区| 丁香花在线电影| 欧美一区欧美二区| jizz日本在线播放| 日韩国产精品久久久| 欧美日韩一区二区三区在线视频| sm在线观看| 欧美岛国在线观看| 蜜臀av午夜精品久久| 美女视频一区二区| 视频一区二区在线观看| 成人欧美magnet| 亚洲精品美女久久久久| 日本少妇性生活| 波多野结衣在线aⅴ中文字幕不卡| 五月天在线免费视频| 色综合视频一区二区三区44| 在线亚洲国产精品网| 日本久久综合网| 久久久国产精华| 成人三级视频在线播放 | 国产精品资源站在线| 亚洲日本无吗高清不卡| 国语自产精品视频在线看抢先版结局| 亚洲欧洲在线观看| 五月婷婷丁香在线| 国产精品网站在线观看| 亚洲美女性囗交| 一本一本久久a久久综合精品| 成人精品久久av网站| 国产福利在线观看| 欧美性videosxxxxx| 女人黄色一级片| 久久国产福利国产秒拍| 欧美日韩一级在线| 在线综合色站| 久久久之久亚州精品露出| 天堂网av2014| 一本色道久久综合精品竹菊| 欧美成人短视频| 精品午夜久久福利影院| 成人在线视频一区二区三区| 国产成人一二片| 国产成人精品999| 在线观看精品一区二区三区| 欧美一级免费在线| 成人羞羞在线观看网站| 国产色视频一区| 成人免费看片| 亚洲风情亚aⅴ在线发布| 免费观看成人毛片| 国产视频一区在线观看| 日韩va在线观看| 亚洲黄色一区| 日本不卡一二三区| 99精品美女视频在线观看热舞| 欧美精品在线第一页| 天天综合天天综合| 在线观看免费视频综合| 91嫩草丨国产丨精品| 成人一级片在线观看| 成年人视频在线免费| 久久视频精品| 国产综合18久久久久久| 高清成人在线| 欧美精品电影免费在线观看| 国产乱子伦三级在线播放| 欧美一区二区网站| 黑人精品无码一区二区三区AV| 国产精品国产自产拍在线| 国产成人av片| 蜜桃一区二区三区在线| 日韩成人三级视频| 精品视频亚洲| 国产欧美日韩在线播放| 国产成人a视频高清在线观看| 欧美大秀在线观看| 国产一级二级三级在线观看| 欧美一级片在线| 欧美人一级淫片a免费播放| 亚洲激情自拍视频| 人人妻人人澡人人爽| 大陆成人av片| 182午夜视频| 日日夜夜精品免费视频| 少妇大叫太大太粗太爽了a片小说| 激情综合网站| 国产一区二区三区四区五区在线| 亚洲青青久久| 国产a级全部精品| 国产三级伦理在线| 久久精品国产电影| 国产女人在线视频| 日韩精品极品在线观看| 亚洲AV无码一区二区三区性| 欧美日韩久久不卡| 色屁屁影院www国产高清麻豆| 亚洲免费观看高清在线观看| 毛片久久久久久| 久久久久国产精品免费免费搜索| 无码人妻一区二区三区在线| 精品中文av资源站在线观看| 天天操天天爽天天射| 国产欧美日韩一级| 精品少妇人妻av免费久久洗澡| 亚洲色图网站| 久久av秘一区二区三区| 日韩激情一区| 亚欧洲精品在线视频免费观看| 啪啪亚洲精品| 欧美日韩高清在线一区| 日韩最新在线| 欧美日韩亚洲在线| 你微笑时很美电视剧整集高清不卡| 国产精品我不卡| 超碰cao国产精品一区二区| 亚洲xxx大片| 欧美午夜网站| 3d动漫精品啪啪一区二区三区免费 | 亚洲久本草在线中文字幕| 激情五月深爱五月| 日本一区二区三区四区| 性欧美精品男男| 久久视频一区二区| 久久精品国产亚洲AV熟女| 久久综合色8888| www.久久国产| 国产三区在线成人av| 久久成人激情视频| 国产欧美一区二区在线| 免费一级黄色录像| 国产精品国产三级国产普通话蜜臀| 国产又粗又猛又爽又黄的视频小说| 欧美激情中文不卡| 999精品在线视频| 亚洲欧美另类久久久精品| 久艹视频在线观看| 亚洲成人tv网| 欧美特级黄色片| 欧美年轻男男videosbes| 国产女同91疯狂高潮互磨| 欧美一二三四在线| 亚洲女同志亚洲女同女播放| 亚洲国产精品成人av| 毛片免费在线播放| 最近2019年日本中文免费字幕| 精品美女在线观看视频在线观看| 欧美精品中文字幕一区| 大桥未久在线视频| 日本韩国在线不卡| 亚州欧美在线| 国产精品免费在线| 久久99国内| dy888午夜| 一区二区三区国产在线| 天天综合网日韩| 国产麻豆成人传媒免费观看| 欧类av怡春院| 国产精品热久久久久夜色精品三区| 国产大学生自拍| 日韩欧美在线播放| 国产美女三级无套内谢| 亚洲电影免费观看高清完整版在线观看| 欧美另类自拍| 欧美另类99xxxxx| 欧美成人ⅴideosxxxxx| 亚洲最大成人在线| 日韩在线你懂的| 日本美女爱爱视频| 亚洲欧美高清| 日本在线视频播放| 久久婷婷色综合| 校园春色 亚洲| 在线看国产一区| 后进极品白嫩翘臀在线视频| 一区二区三区黄色| 成年人在线网站| 92看片淫黄大片欧美看国产片| 最新亚洲精品| 国产女教师bbwbbwbbw| 免费观看在线综合色| 先锋资源av在线| 亚洲男人天堂一区| 波多野结衣大片| 亚洲国产精品va在线| 国产在线观看免费麻豆| 日韩av免费网站| 国产欧美一区二区三区米奇| 黄瓜视频免费观看在线观看www| 亚洲在线电影| 性生交大片免费看l| 中文字幕亚洲不卡| 国产污视频网站| 亚洲精品久久久一区二区三区| 国产传媒在线播放| 国产啪精品视频网站| 亚洲成人一品| 欧美视频免费看欧美视频| 国产成人啪午夜精品网站男同| 欧洲性xxxx| caopen在线视频| 欧美黄色成人网| 日韩综合久久| 亚洲a∨一区二区三区| 亚洲在线国产日韩欧美| 水蜜桃av无码| 亚洲午夜免费福利视频| а√中文在线资源库| 草民午夜欧美限制a级福利片| 国语自产精品视频在线看抢先版结局| 久久久一本精品99久久精品66| 亚洲高清激情| 日本不卡视频一区| 一区二区三区国产精品| 97精品人妻一区二区三区在线| 亚洲男人的天堂在线播放| 无遮挡爽大片在线观看视频| 精品国产乱码久久久久软件| 国内精品久久久久久久影视蜜臀 | 成人aa视频在线观看| 欧美日韩一级在线观看| 91精品国产品国语在线不卡| 国产在线观看a视频| 亚洲a中文字幕| 中文字幕亚洲精品乱码| 韩国三级在线播放| 亚洲综合区在线| 欧美一区二区黄片| 97人人爽人人喊人人模波多| 欧美变态网站| 777久久久精品一区二区三区| xf在线a精品一区二区视频网站| 中文字字幕在线中文| 亚洲欧美在线免费| av在线日韩| 一本久道久久综合| 国产精品一区2区| 国产中文字幕免费| 亚洲国产欧美一区二区丝袜黑人| 92久久精品| 欧美精品一区三区在线观看| 日韩电影在线看| 国产3级在线观看| 精品久久人人做人人爽| 日韩欧美一中文字暮专区| 日本一区二区三不卡| 久久精品999| 国产一级性生活| 亚洲乱码一区av黑人高潮| 国产精品美女午夜爽爽| 成人在线免费观看网址| www.日韩大片| 自拍偷拍福利视频| 欧美日韩高清在线观看| 亚洲涩涩av| 亚洲精品永久视频| 性做久久久久久| 91官网在线| 成人综合电影| 老司机精品视频网站| 日韩高清dvd碟片| 亚洲大胆人体视频| 亚洲四虎影院| 欧美极品少妇无套实战| 国产亚洲一二三区| 97人妻精品一区二区三区动漫| 久久久亚洲国产天美传媒修理工| 国产精品嫩模av在线| 成人在线短视频| 色婷婷国产精品久久包臀| 国产色在线观看| 欧美中日韩一区二区三区| 国产成+人+日韩+欧美+亚洲| av首页在线观看| 欧美国产日本高清在线 |