精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品中文字幕制服诱惑| 超碰电影在线播放| 日本va欧美va精品发布| 久久亚洲精品网站| 亚洲一区和二区| 综合日韩av| 亚洲欧美日韩综合aⅴ视频| 国产欧美日韩亚洲| 亚洲无码久久久久| 尤物精品在线| 日韩一区二区在线视频| 在线xxxxx| 色综合一区二区日本韩国亚洲| 亚洲二区在线视频| 正在播放一区二区三区| 蜜桃久久一区二区三区| 麻豆久久久久久| 2018日韩中文字幕| 欧洲猛交xxxx乱大交3| 国产欧美日韩影院| 亚洲第一视频网| 亚洲欧美日本一区二区三区| 伊人久久精品一区二区三区| 一区二区三区高清在线| 色女孩综合网| 神马亚洲视频| 成人国产在线观看| 国产日韩中文在线| 69视频免费看| 国产一区成人| 国内精品小视频| 2021亚洲天堂| 欧美一区不卡| 久久精品国产精品亚洲| 调教驯服丰满美艳麻麻在线视频| 欧美日韩一区二区三区在线电影| 日韩一卡二卡三卡| 国产免费中文字幕| 99久久er| 欧美这里有精品| 人妻无码视频一区二区三区| 亚洲一二三四| 天天综合日日夜夜精品| 久久精品xxx| 污污的网站在线看| 亚洲美女在线一区| 女女同性女同一区二区三区按摩| 成年人视频在线看| 欧美国产精品一区| 亚洲精品第一区二区三区| 国产亚洲依依| 国产无人区一区二区三区| 免费观看成人在线| 黄色在线小视频| 久久精品夜色噜噜亚洲aⅴ| 久久资源av| 国产在线电影| 中文字幕不卡三区| 在线观看成人av电影| 男人的天堂在线视频免费观看| 国产精品乱码人人做人人爱| 一区二区三区四区| 超碰在线观看免费| 亚洲国产日韩在线一区模特| 草草视频在线免费观看| 涩涩涩在线视频| 色婷婷一区二区三区四区| 国产成人精品无码播放| jizz亚洲女人高潮大叫| 在线播放亚洲一区| 岛国精品一区二区三区| 国产一级成人av| 精品偷拍各种wc美女嘘嘘| 中文字幕在线1| 91欧美在线| 九九精品在线播放| 国产成人无码精品久在线观看| 国产农村妇女精品一区二区| 国产精品成人品| 国产美女自慰在线观看| 99视频在线观看一区三区| 乱一区二区三区在线播放| yes4444视频在线观看| 专区另类欧美日韩| 日韩国产欧美亚洲| 成人在线高清| 亚洲第一精品福利| 正在播放国产对白害羞| 国产精品vip| 国产激情久久久久| 精品人妻一区二区三区麻豆91| 99久久免费国产| 午夜精品一区二区在线观看 | 日韩在线欧美在线国产在线| 婷婷在线精品视频| 另类国产ts人妖高潮视频| 国产精品亚洲аv天堂网| 性一交一乱一精一晶| 久久久美女毛片| 一区二区三区国| 成人免费图片免费观看| 欧美精品一二三四| 亚洲调教欧美在线| 91精品啪在线观看国产18| 午夜免费日韩视频| 97精品人妻一区二区三区香蕉| 国产成人免费视频网站| 日韩午夜视频在线观看| 丰满大乳少妇在线观看网站| 欧美日韩一二三| 日本黄色动态图| 91tv官网精品成人亚洲| 国产成+人+综合+亚洲欧美丁香花| 99国产精品久久久久久久成人| 久久欧美中文字幕| 国产一二三区在线播放| 高清精品久久| 最近2019好看的中文字幕免费| 日韩精品一区二区不卡| 国产乱人伦精品一区二区在线观看| 欧美日韩国产一二| 超碰97国产精品人人cao| 在线电影欧美成精品| 天天舔天天操天天干| 亚洲欧洲午夜| 91视频免费进入| 欧美日韩在线资源| 欧美亚洲精品一区| www.久久av| 亚洲欧美春色| 精品一卡二卡三卡四卡日本乱码 | 亚洲精品一二三| 午夜两性免费视频| 极品美女一区二区三区| 亲子乱一区二区三区电影| 懂色av蜜臀av粉嫩av分享吧| 亚洲激情校园春色| 色哟哟免费视频| 一区二区中文| 亚洲v日韩v综合v精品v| 黄色网页在线免费看| 欧美喷水一区二区| 日本一级片免费| 精久久久久久久久久久| 尤物一区二区三区| 国产精品麻豆| 欧美高跟鞋交xxxxxhd| av高清一区二区| 亚洲精品videosex极品| 91精品国产高清91久久久久久| 欧美ab在线视频| 99porn视频在线| 国产探花在线观看| 亚洲国产精品女人久久久| 日产电影一区二区三区| av一区二区三区四区| 黄色免费福利视频| 免费视频一区三区| 国产精品男女猛烈高潮激情| 色开心亚洲综合| 欧美一区二区播放| 久久9999久久免费精品国产| 99精品视频一区| 久久久噜噜噜www成人网| 视频精品在线观看| 国产一区香蕉久久| 四虎亚洲成人| 亚洲国产中文字幕久久网| 日韩精品在线免费视频| 国产欧美一区二区精品久导航| 婷婷丁香激情网| 亚洲国产成人精品女人| 国产精品一区二区免费| 日本成人片在线| 久久亚洲国产成人| 天天综合天天综合| 欧美亚洲高清一区二区三区不卡| 国产3级在线观看| 成人性生交大片免费看视频在线| 夫妻免费无码v看片| 欧美一级精品| 国产高清在线一区二区| 校园春色亚洲色图| 久久亚洲精品网站| 午夜视频免费看| 欧美乱妇23p| 日本一级黄色录像| 国产精品久久久久一区二区三区共 | 日韩精品资源二区在线| 国产区在线观看视频| 国产精品美女久久福利网站| 日韩女优在线视频| 日本不卡中文字幕| 男的插女的下面视频| 欧洲杯半决赛直播| 国产欧美韩日| 国产资源一区| 55夜色66夜色国产精品视频| 男人影院在线观看| 亚洲人在线视频| 免费av网站在线播放| 欧美日韩电影一区| 四虎成人在线观看| 亚洲国产欧美日韩另类综合| 性少妇xx生活| 99久久精品国产精品久久| 亚洲视频一二三四| 免费日韩av| 性一交一乱一伧国产女士spa| 日韩美女一区二区三区在线观看| 国产一区二区三区av在线| 日韩一区二区三免费高清在线观看| 久久久亚洲国产| 99久久精品免费观看国产| 亚洲人a成www在线影院| 男人天堂av网| 日韩欧美国产不卡| 中文字幕人妻精品一区| 欧美丝袜一区二区三区| 久久久久亚洲av无码专区| 国产精品电影一区二区| 2019男人天堂| 久久美女艺术照精彩视频福利播放 | 国产精品一品二品| 午夜xxxxx| 免费亚洲电影在线| 久久婷婷国产91天堂综合精品| 影院欧美亚洲| 国产视频在线观看网站| 亚洲女同中文字幕| 亚洲一区二三| 91蜜臀精品国产自偷在线| 色视频一区二区三区| 精品日韩欧美一区| 欧美一区二区影视| 亚洲激情77| 久久伊人资源站| 任你弄精品视频免费观看| 国产欧美欧洲| 欧美一区二区三区红桃小说| 精品久久久久久乱码天堂| 精品深夜福利视频| 精品一区二区三区自拍图片区| 国产精品115| 国产精品久久久久久久免费大片| 999在线精品| 国产精品国产精品| 精品精品精品| 欧美18视频| 国产乱码精品一区二区亚洲| 欧美一区二区综合| 欧美亚洲精品在线| 99热这里只有精品7| 真实国产乱子伦精品一区二区三区| 欧美xxxx吸乳| 亚洲午夜91| 日本福利视频在线| 玖玖国产精品视频| 亚洲免费黄色网| 国产精品一二三四五| 日本不卡视频一区| 久久久91精品国产一区二区三区| 国产视频三区四区| 亚洲欧美在线另类| 久久久久亚洲AV| 欧美性猛交xxxx黑人| 在线观看免费高清视频| 91麻豆精品国产| 欧美 日韩 国产 成人 在线| 国产丝袜一区视频在线观看 | 老司机成人在线| 久久综合一区| 91久久高清国语自产拍| 99热久久这里只有精品| 免费视频一区二区三区在线观看| 9久久婷婷国产综合精品性色 | 成人在线黄色电影| 国产精品www网站| 欧美影院在线| 欧美在线激情| 国产精品二区影院| 99免费视频观看| 国产成人在线看| 亚洲国产天堂av| 亚洲激情五月婷婷| 欧美国产一级片| 精品国产麻豆免费人成网站| 青青国产在线| 麻豆国产精品va在线观看不卡| 蜜桃视频动漫在线播放| 成人免费淫片aa视频免费| 精品五月天堂| 黄色www在线观看| 亚洲在线视频| 日本xxxx免费| 国产精品美女久久久久aⅴ| 免费在线观看黄网站| 5月丁香婷婷综合| 天堂a√在线| 欧美大学生性色视频| 日韩另类视频| 久久99久久精品国产| 伊人色**天天综合婷婷| 国产裸体舞一区二区三区 | 懂色av粉嫩av蜜乳av| 亚洲天堂免费在线观看视频| 国产精品人人人人| 欧美大片国产精品| 日本三级在线播放完整版| 97超级碰在线看视频免费在线看| 国产美女亚洲精品7777| 亚洲精品人成| 久久字幕精品一区| 朝桐光av一区二区三区| 有码一区二区三区| 亚洲天天综合网| 一区二区福利视频| 久久久久久久| 久久国产精品免费一区| 国产精品扒开腿做爽爽爽软件| 一级淫片在线观看| 国产精品麻豆视频| 夜夜躁日日躁狠狠久久av| 日韩黄色av网站| 黄页网站在线观看免费| 91传媒在线免费观看| 久久激情电影| 国产超碰在线播放| 久久精品亚洲一区二区三区浴池| 久久艹免费视频| 亚洲国产成人久久| 97久久人人超碰caoprom| 成人激情av| 欧美色图首页| 天天躁日日躁狠狠躁av麻豆男男 | 亚洲影院在线播放| 日韩hd视频在线观看| free性欧美| 激情伦成人综合小说| 在线观看日韩av电影| www.美色吧.com| 亚洲国产精品欧美一二99| 精品人妻午夜一区二区三区四区 | 成人性生交大片免费网站| 久久av免费观看| 久久综合图片| 亚洲一级片在线播放| 欧美日韩亚洲另类| 米奇777四色精品人人爽| 成人国产在线激情| 亚洲综合激情在线| 动漫av在线免费观看| 婷婷国产v国产偷v亚洲高清| 视频污在线观看| 日本免费一区二区三区视频观看| 国产一区二区三区四区五区传媒| 99视频在线免费| 国产精品久久国产精麻豆99网站| 91亚洲精品国偷拍自产在线观看 | 亚洲视频网站在线观看| 欧洲成人一区| 视频一区二区视频| 粉嫩久久99精品久久久久久夜| 日本天堂网在线观看| 亚洲精品视频免费| 巨胸喷奶水www久久久| 欧美性视频在线播放| 国产成人高清视频| 日韩欧美成人一区二区三区| 中文字幕国产亚洲| 久久国产精品美女| 成年人午夜视频在线观看| 久久久久国色av免费看影院| 中文字幕第三页| 九九视频这里只有精品| 五月国产精品| 国内自拍第二页| 精品福利免费观看| 91免费在线| 国产超碰91| 日韩av中文在线观看| 日本中文在线视频| 亚洲精品视频播放| 日本一区二区三区电影免费观看| 少妇高潮喷水在线观看| 中文字幕欧美国产| 欧美熟妇交换久久久久久分类 | 欧美精品videossex性护士| 亚洲精华一区二区三区| 亚洲色图偷拍视频| 狠狠色狠狠色综合日日五| 国产真实乱在线更新| 午夜欧美精品| 亚洲制服丝袜在线播放| 欧美色网一区二区| 制服丝袜在线播放| 欧洲在线视频一区| 国产成人精品影视| 国产裸体美女永久免费无遮挡| 欧美日韩成人在线播放|