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

一起學 WebGL:繪制圖片

開發(fā) 前端
紋理映射會根據(jù)紋理圖像,將光柵化后的每個片元(像素點)設(shè)置對應顏色值。這些像素也稱為 紋素(Texels, Texture Elements)。

大家好,我是前端西瓜哥。之前講解了如何用 WebGL 繪制紅色三角形,今天西瓜哥帶大家來學習如何將圖片繪制到畫布上的技術(shù):紋理映射(texture mapping)。

紋理映射會根據(jù)紋理圖像,將光柵化后的每個片元(像素點)設(shè)置對應顏色值。這些像素也稱為 紋素(texels, texture elements)。

紋理坐標

紋理圖像的坐標系統(tǒng)是二維的,為和世界坐標的 x、y 區(qū)分,WebGL 對應使用 s、t 來表示。

目前紋理坐標更常用的命名是 uv。因為歷史原因,WebGL 還是用的 st。

圖片

和世界坐標系類似,寬高使用的是一個比例值,即真實像素位置除以寬高后得到的比例。

著色器

const vertexShaderSrc = `
attribute vec4 a_Position;
attribute vec2 a_TexCoord;
varying vec2 v_TexCoord;
void main() {
 gl_Position = a_Position;
 v_TexCoord = a_TexCoord;
}
`;

const fragmentShaderSrc = `
precision highp float;
uniform sampler2D u_Sampler;
varying vec2 v_TexCoord;
void main() {
  gl_FragColor = texture2D(u_Sampler, v_TexCoord);
}
`;

相比繪制單色三角形,我們在頂點著色器加了 a_TexCoord,記錄頂點對應的紋理坐標,因為紋理坐標只有兩個維度,所以用的 vec2 屬性。

并命名一個 v_TexCoord 的 varying 變量,用于將 a_TexCoord 的值傳遞給片元著色器。

片元著色器,聲明了一個接收同名 v_TexCoord 變量 接收傳過來的紋理坐標。

u_Sampler 是 sampler2D 類型,是一個二維紋理采樣器,指定著色器提取顏色的紋理對象。texture2D(u_Sampler, v_TexCoord) 表示從 u_Sampler 紋理采樣器中的某個位置中取出顏色。

傳入頂點數(shù)據(jù)

將頂點位置和紋理位置對應好,放在一個緩沖區(qū)中,并設(shè)置讀取規(guī)則。

先讀第一個點的位置,然后是第一個點對應的紋理坐標。然后第二個點...

// 頂點坐標,紋理坐標
const verticesTexCoords = new Float32Array([
  // 左上點。左邊兩個是頂點,右邊兩個是紋理
  -0.5, 0.5, 0.0, 1.0,
  // 左下
  -0.5, -0.5, 0.0, 0.0,
  // 右上
  0.5, 0.5, 1.0, 1.0,
  // 右下
  0.5, -0.5, 1.0, 0.0,
]);
const FSIZE = verticesTexCoords.BYTES_PER_ELEMENT;

// 創(chuàng)建緩存對象
const verticesTexBuffer = gl.createBuffer();
// 綁定緩存對象到上下文
gl.bindBuffer(gl.ARRAY_BUFFER, verticesTexBuffer);
// 向緩存區(qū)寫入數(shù)據(jù)
gl.bufferData(gl.ARRAY_BUFFER, verticesTexCoords, gl.STATIC_DRAW);

// 獲取 a_Position 變量地址
const a_Position = gl.getAttribLocation(gl.program, 'a_Position');
// 將緩沖區(qū)對象分配給 a_Position 變量
gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, FSIZE * 4, 0);
// 允許訪問緩存區(qū)
gl.enableVertexAttribArray(a_Position);

// 傳入紋理坐標位置信息
const a_TexCoord = gl.getAttribLocation(gl.program, 'a_TexCoord');
gl.vertexAttribPointer(a_TexCoord, 2, gl.FLOAT, false, FSIZE * 4, FSIZE * 2);
gl.enableVertexAttribArray(a_TexCoord);

紋理對象與圖片綁定

/***** 紋理對象 *****/
const texture = gl.createTexture(); // 創(chuàng)建紋理對象
const u_Sampler = gl.getUniformLocation(gl.program, 'u_Sampler'); // 獲取 u_Sampler 地址

const img = new Image();
img.onload = () => {
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1); // 翻轉(zhuǎn)紋理圖像的 y 軸
  gl.activeTexture(gl.TEXTURE0); // 開啟 0 號紋理單元
  gl.bindTexture(gl.TEXTURE_2D, texture); // 將我們的紋理對象綁定到 gl.TEXTURE_2D,類似綁定緩沖區(qū)對象

  // 配置紋理參數(shù)
  // 這里表示在 “繪制范圍小于紋理尺寸” 時,使用 “加權(quán)平均” 算法縮小
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
  
  // 將紋理圖像分配給紋理對象
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, img);

  // 使用 0 號紋理單元
  gl.uniform1i(u_Sampler, 0);

  /****** 繪制 ******/
  // 清空畫布,并指定顏色
  gl.clearColor(0, 0, 0, 1);
  gl.clear(gl.COLOR_BUFFER_BIT);
  // 繪制矩形,這里提供了 4 個點
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
};

img.src = './fe_watermelon.jpg';

創(chuàng)建紋理對象,然后在圖片加載完之后配置到紋理對象上。

WebGL 下有多個紋理紋理單元(比如 gl.TEXTURE0、gl.TEXTURE5 之類),至少有 8 個。這些單元可以保存多個我們創(chuàng)建好的紋理圖片,在需要的時候進行切換。

激活一個紋理單元:

gl.activeTexture(gl.TEXTURE0);

激活后,我們用 gl.TEXTURE_2D 來訪問這個紋理圖像,進行紋理綁定和參數(shù)配置。

這里我們需要反轉(zhuǎn)紋理圖像的 y 軸線,因為圖片和紋理坐標系不一樣。我實在是蚌不住了。

gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1); // 翻轉(zhuǎn)紋理圖像的 y 軸

圖片

gl.texImage2D 用于將紋理圖像分配給紋理對象。

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, img);

gl.RGB 表示紋素的格式為 RGB,此外還有 gl.RGBA、gl.LUMINANCE(流明) 等。gl.UNSIGNED_BYTE 表示紋理的數(shù)據(jù)類型。

將紋理單元綁定到 u_Sampler 變量上。

gl.uniform1i(u_Sampler, 0);

最后就是調(diào)用 el.drawArrays 方法進行繪制。

圖片的注意事項

關(guān)于圖片,有幾點需要注意。

首先是 圖片不要跨域,因為安全限制,Canvas 是不能將跨域的圖片繪制上去的,會報錯。

然后是 圖片的尺寸需要是 2 的冪次方,比如 16、32、64、128、256、512。

尺寸不對的圖片需要留白補全到 2 的冪次方,然后在設(shè)置紋理坐標時指定對應真正寬高比例。

完整源碼

/** @type {HTMLCanvasElement} */
const canvas = document.querySelector('canvas');
const gl = canvas.getContext('webgl');

const vertexShaderSrc = `
attribute vec4 a_Position;
attribute vec2 a_TexCoord;
varying vec2 v_TexCoord;
void main() {
 gl_Position = a_Position;
 v_TexCoord = a_TexCoord;
}
`;

const fragmentShaderSrc = `
precision highp float;
uniform sampler2D u_Sampler;
varying vec2 v_TexCoord;
void main() {
  gl_FragColor = texture2D(u_Sampler, v_TexCoord);
}
`;

/**** 渲染器生成處理 ****/
// 創(chuàng)建頂點渲染器
const vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vertexShaderSrc);
gl.compileShader(vertexShader);
// 創(chuàng)建片元渲染器
const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragmentShader, fragmentShaderSrc);
gl.compileShader(fragmentShader);
// 程序?qū)ο?const program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
gl.useProgram(program);
gl.program = program;

// 頂點坐標,紋理坐標
const verticesTexCoords = new Float32Array([
  // 左上點。左邊兩個是頂點,右邊兩個是紋理
  -0.5, 0.5, 0.0, 1.0,
  // 左下
  -0.5, -0.5, 0.0, 0.0,
  // 右上
  0.5, 0.5, 1.0, 1.0,
  // 右下
  0.5, -0.5, 1.0, 0.0,
]);
const FSIZE = verticesTexCoords.BYTES_PER_ELEMENT;

// 創(chuàng)建緩存對象
const verticesTexBuffer = gl.createBuffer();
// 綁定緩存對象到上下文
gl.bindBuffer(gl.ARRAY_BUFFER, verticesTexBuffer);
// 向緩存區(qū)寫入數(shù)據(jù)
gl.bufferData(gl.ARRAY_BUFFER, verticesTexCoords, gl.STATIC_DRAW);

// 獲取 a_Position 變量地址
const a_Position = gl.getAttribLocation(gl.program, 'a_Position');
// 將緩沖區(qū)對象分配給 a_Position 變量
gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, FSIZE * 4, 0);
// 允許訪問緩存區(qū)
gl.enableVertexAttribArray(a_Position);

// 傳入紋理坐標位置信息
const a_TexCoord = gl.getAttribLocation(gl.program, 'a_TexCoord');
gl.vertexAttribPointer(a_TexCoord, 2, gl.FLOAT, false, FSIZE * 4, FSIZE * 2);
gl.enableVertexAttribArray(a_TexCoord);

/***** 紋理對象 *****/
const texture = gl.createTexture(); // 創(chuàng)建紋理對象
const u_Sampler = gl.getUniformLocation(gl.program, 'u_Sampler'); // 獲取 u_Sampler 地址

// 記載圖片
const img = new Image();
img.onload = () => {
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 1); // 翻轉(zhuǎn)紋理圖像的 y 軸
  gl.activeTexture(gl.TEXTURE0); // 開啟 0 號紋理單元
  gl.bindTexture(gl.TEXTURE_2D, texture); // 將我們的材質(zhì)對象綁定上去

  // 配置紋理參數(shù)
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
  // 配置紋理圖像
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, img);
 // 綁定 0 號紋理單元
  gl.uniform1i(u_Sampler, 0);

  /****** 繪制 ******/
  // 清空畫布,并指定顏色
  gl.clearColor(0, 0, 0, 1);
  gl.clear(gl.COLOR_BUFFER_BIT);
  // 繪制矩形,這里提供了 4 個點
  gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
};

img.src = './fe_watermelon.jpg';

繪制結(jié)果:

圖片

填充方式

補充一下設(shè)置圖片的幾種方式。

gl.texParameteri(target, pname, param);

上面表示,在 pname 場景下,使用 param 策略。比如

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);

表示在 “繪制范圍小于紋理尺寸”(gl.TEXTURE_MIN_FILTER) 場景下,使用 “加權(quán)平均”(gl.LINEAR) 算法進行縮小。

參數(shù) pname 有下面幾個幾個值可選擇:

  • gl.TEXTURE_MAG_FILTER:紋理放大。對應場景為紋理尺寸小于要繪制區(qū)域,需要將紋理放大。默認值為 gl.LINEAR
  • gl.TEXTURE_MIN_FILTER:紋理縮小。默認值為 gl.NEAREST_MIPMAP_LINEAR。
  • gl.TEXTURE_WRAP_S:紋理水平填充。默認為 gl.REPEAT。
  • gl.TEXTURE_WRAP_T:紋理垂直填充。默認為 gl.REPEAT。

參數(shù) param 的一些可選值:

  • gl.LINEAR:使用 “加權(quán)平均” 縮放;
  • gl.NEAREST:使用 “曼哈頓距離” 縮放;
  • gl.REPEAT:重復平鋪;
  • gl.MIRRORED_REPEAT:鏡像重復平鋪:
  • gl.CLAMP_TO_EDGE:使用紋理圖像的邊緣進行延伸填充;

看個實例,將繪制區(qū)域設(shè)置為圖片的 2.5 倍,并設(shè)置填充方式。

// 頂點坐標,紋理坐標
const verticesTexCoords = new Float32Array([
  // 左上點。左邊兩個是頂點,右邊兩個是紋理
  -0.5, 0.5, 0.0, 2.5,
  // 左下
  -0.5, -0.5, 0.0, 0.0,
  // 右上
  0.5, 0.5, 2.5, 2.5,
  // 右下
  0.5, -0.5, 2.5, 0.0,
]);

// ...
// 配置紋理參數(shù)
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
// 邊緣像素平鋪
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);

得到了一個很有意思的結(jié)果:

圖片

責任編輯:姜華 來源: 前端西瓜哥
相關(guān)推薦

2023-04-12 07:46:24

JavaScriptWebGL

2023-05-31 20:10:03

WebGL繪制立方體

2023-04-11 07:48:32

WebGLCanvas

2023-04-17 09:01:01

WebGL繪制三角形

2023-05-04 08:48:42

WebGL復合矩陣

2023-04-26 07:42:16

WebGL圖元的類型

2023-06-26 15:14:19

WebGL紋理對象學習

2023-03-29 07:31:09

WebGL坐標系

2023-04-13 07:45:15

WebGL片元著色器

2023-05-17 08:28:55

2023-04-27 08:27:29

WebGL變形矩陣

2023-03-02 07:44:39

pixijsWebGL

2023-02-22 09:27:31

CanvasWebGL

2023-05-08 07:29:48

WebGL視圖矩陣

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發(fā)畫布功能

2023-05-06 07:23:57

2009-10-23 16:43:01

VB.NET繪制圖形
點贊
收藏

51CTO技術(shù)棧公眾號

精品视频免费| 色是在线视频| 国产成人av福利| 韩国精品美女www爽爽爽视频| 性欧美18—19sex性高清| free性欧美| 国产欧美日韩综合精品一区二区 | 激情亚洲影院在线观看| 18涩涩午夜精品.www| 精品网站在线看| 一级特黄色大片| 亚洲一级黄色| 最近2019中文字幕第三页视频| 色综合久久久无码中文字幕波多| 成年男女免费视频网站不卡| 国产精品久久久久久亚洲毛片| 国产精品毛片va一区二区三区| 亚洲精品一区二三区| 亚洲性人人天天夜夜摸| 日韩在线观看av| 免费在线观看成年人视频| 成人97精品毛片免费看| 色哟哟一区二区三区| 91网站在线观看免费| 成人在线视频成人| 99久久精品国产一区二区三区| 国产精品一区久久久| 日本三级欧美三级| 综合久久十次| 久久天堂电影网| 2019男人天堂| 欧美美乳视频| 亚洲国产欧美日韩精品| 欧美性受xxxx黒人xyx性爽| 天堂久久午夜av| 欧美日韩中文字幕在线| 国产精品网站免费| 国产亚av手机在线观看| 亚洲精品高清在线| 国产又粗又爽又黄的视频| 国产69精品久久app免费版| youjizz国产精品| 产国精品偷在线| 国产丰满美女做爰| 国产一区二区三区四区五区美女| 国产精品伦子伦免费视频| 精品人妻一区二区三区潮喷在线 | 欧美午夜精品一区二区| 97精品国产综合久久久动漫日韩 | 奇米视频7777| www.国产精品| 欧美日韩另类一区| 日日躁夜夜躁aaaabbbb| 成人mm视频在线观看| 日本乱码高清不卡字幕| 久久精品.com| 日韩影片中文字幕| 欧美怡红院视频| 亚洲高清免费在线观看| 另类一区二区三区| 在线电影国产精品| 秋霞午夜鲁丝一区二区| 欧美高清一级片| 日韩精品在线看片z| 亚洲成人av免费观看| 日韩精品视频一区二区三区| 欧美一区二区三区四区高清| 国产成人av免费观看| 999精品视频在这里| 亚洲国产私拍精品国模在线观看| 亚洲の无码国产の无码步美| 五月综合久久| 99久久99久久精品免费看蜜桃| 一本久久综合亚洲鲁鲁五月天| www.18av.com| 91九色在线看| 色悠悠亚洲一区二区| 黄色片视频在线| 国产精品亚洲综合在线观看| 日韩欧美一级二级| 国产在线观看无码免费视频| 综合国产视频| 不卡毛片在线看| 日本少妇性生活| 日韩精品色哟哟| 91亚洲精华国产精华| 人妻精品无码一区二区| 国产亚洲女人久久久久毛片| 亚洲一区二区三区涩| 中文字幕伦理免费在线视频 | 亚洲综合在线网站| 丁香婷婷久久| 日韩精品一区二区三区四区| 特级西西人体wwwww| 日韩欧美精品综合| 欧美极品欧美精品欧美视频| 亚洲综合图片网| 国产精品资源网| 久中文字幕一区| 免费av在线网址| 午夜电影久久久| 999在线观看| 三级小说欧洲区亚洲区| 久久精品久久久久电影| aaa人片在线| 国产一二精品视频| 日本一区二区三区视频在线观看| 3d玉蒲团在线观看| 欧洲国内综合视频| 日本一级片在线播放| 偷拍欧美精品| 国产999精品视频| 亚洲精品一区二区三区四区| 中文av一区特黄| 日本韩国欧美在线观看| 97色婷婷成人综合在线观看| 亚洲欧美日韩中文在线| 久久久综合久久久| 国产资源精品在线观看| 日本一区二区三区四区在线观看| av免费不卡| 欧美一区二区三级| 精品伦精品一区二区三区视频密桃| 中文高清一区| 91蜜桃网站免费观看| 77777影视视频在线观看| 福利一区视频在线观看| 亚洲精品鲁一鲁一区二区三区| 日韩av有码| 国产精品扒开腿爽爽爽视频| 亚洲日本香蕉视频| 亚洲一区二区三区视频在线播放| 在线一区二区不卡| 日韩激情在线| 国产精品一区二区电影| 国产原创av在线| 精品日韩美女的视频高清| av不卡中文字幕| 欧美色综合网| 超碰在线97av| 成人区精品一区二区不卡| 精品视频免费在线| 免费一级黄色录像| 日韩电影在线观看一区| 欧洲一区二区日韩在线视频观看免费 | 96sao精品免费视频观看| 综合136福利视频在线| 自拍偷拍第八页| 国产精品网曝门| 午夜免费福利视频在线观看| 久久免费av| 91久久国产精品91久久性色| 久操视频在线免费播放| 欧美一级理论片| 国产在线视频第一页| 成人国产在线观看| 日本网站免费在线观看| 蜜臀av免费一区二区三区| 日本91av在线播放| 国产福利第一视频在线播放| 欧美在线视频全部完| 亚洲国产精品一区二区久久hs| 麻豆视频观看网址久久| 中国老女人av| 99香蕉久久| 欧美亚洲激情在线| 第一福利在线| 51精品国自产在线| 精国产品一区二区三区a片| 成人午夜视频在线| 欧美视频免费播放| 人人狠狠综合久久亚洲婷| 91久久国产婷婷一区二区| 欧美韩日亚洲| 日韩精品一二三四区| 这里只有精品999| 亚洲久本草在线中文字幕| 日本一区二区在线观看视频| 亚洲一区二区毛片| 一区二区三区观看| 在线观看视频一区二区三区| 97婷婷大伊香蕉精品视频| 国产www.大片在线| 日韩视频123| 一级黄色在线视频| 亚洲欧美日韩国产综合在线| 中文字幕乱码一区| 美国十次了思思久久精品导航| 青青在线免费视频| 免费观看不卡av| 亚洲一区二区三| 性xxxxfreexxxxx欧美丶| 日韩亚洲综合在线| 色香蕉在线视频| 欧美猛男男办公室激情| 日本熟女一区二区| 亚洲欧美一区二区在线观看| 欧产日产国产精品98| 国内精品视频一区二区三区八戒| 欧美精品久久久久久久久久久| 日本大胆欧美| 精品福利影视| 国产激情综合| 全亚洲最色的网站在线观看| а√资源新版在线天堂| 亚洲色图第一页| 丰满肥臀噗嗤啊x99av| 欧美色图在线观看| av大片免费在线观看| 中文字幕一区av| 精品少妇人妻一区二区黑料社区| 国产精品一区二区黑丝| 在线视频日韩一区 | 亚洲免费观看高清完整版在线观看熊| 成人网站免费观看| 成人午夜视频在线| 午夜影院免费版| 麻豆成人在线观看| 成人在线观看a| 中文精品在线| 青青草精品视频在线| 小处雏高清一区二区三区| 日韩av电影免费在线观看| 欧美亚洲色图校园春色| 99精品99久久久久久宅男| 另类一区二区| 国产精品视频成人| 精品无人乱码一区二区三区| 欧美孕妇孕交黑巨大网站| av免费在线视| 欧美激情视频一区| 在线视频国产区| 久久成年人免费电影| 日本成人在线播放| 这里只有精品视频| 高清中文字幕一区二区三区| 亚洲福利久久| 成人久久一区二区| 日韩色淫视频| 国产精品久久久久一区二区| 欧美xxx性| 日韩美女在线观看| xx欧美xxx| 人九九综合九九宗合| 亚洲淫成人影院| 日本久久中文字幕| 日韩国产网站| 国产精品久久久999| 外国电影一区二区| 国产精品成人在线| 成人高清一区| 成人av番号网| 日本在线一区二区三区| 91在线中文字幕| 欧美影院精品| 国产日韩精品推荐| 日日天天久久| 色一情一乱一伦一区二区三区丨| 国产探花一区二区| 亚洲美女搞黄| 91tv精品福利国产在线观看| 99热一区二区三区| 欧美韩日精品| 成人免费观看cn| 久久人人精品| 8x8x成人免费视频| 国产精品综合在线视频| 97精品人妻一区二区三区蜜桃| 99久久伊人网影院| 欧美熟妇激情一区二区三区| 国产精品久久久一区麻豆最新章节| 性色国产成人久久久精品| 亚洲黄色片在线观看| 国产情侣在线视频| 欧洲av在线精品| 国产三级午夜理伦三级| 亚洲成av人片在线观看香蕉| 欧美男男激情freegay| 色综久久综合桃花网| 日本aa在线| 日韩免费中文字幕| 99综合99| 久久亚洲国产精品日日av夜夜| 精品一级毛片| 大片在线观看网站免费收看| 亚洲自啪免费| 免费在线观看污网站| 成人av免费在线观看| 91麻豆精品国产91久久综合| 亚洲乱码中文字幕综合| 日韩在线视频免费播放| 欧美欧美欧美欧美| 丝袜视频国产在线播放| 久久久999国产精品| 亚洲优女在线| 亚洲综合自拍一区| 国产亚洲一区二区三区啪| 激情五月六月婷婷| 秋霞av亚洲一区二区三| 中文字幕无码人妻少妇免费| 国产精品乱人伦中文| 日韩成人一区二区三区| 欧美日韩不卡一区| 欧美女优在线| 午夜免费日韩视频| 另类视频一区二区三区| 日韩欧美亚洲日产国产| 99在线精品视频在线观看| 中文字幕色网站| 国产日韩欧美激情| 国产手机在线视频| 日韩欧美国产精品| 五月天婷婷在线视频| 秋霞成人午夜鲁丝一区二区三区| eeuss国产一区二区三区四区| 亚洲精品中字| 日韩福利视频网| 97人妻精品一区二区三区免 | 亚洲一级一级97网| 51漫画成人app入口| 亚洲一区二区三区xxx视频| 精品国产乱码久久久| 国产精品宾馆在线精品酒店| 国产成+人+日韩+欧美+亚洲| 羞羞在线观看视频| 在线观看区一区二| 欧美大片aaa| 2019中文字幕免费视频| 国产精品天天看天天狠| 青青草视频在线视频| 国产精品资源站在线| 情侣偷拍对白清晰饥渴难耐| 在线欧美一区二区| 能在线看的av| 国产999在线观看| 亚洲欧洲色图| 国产在线青青草| 99v久久综合狠狠综合久久| 日韩av在线播放观看| 亚洲精品一线二线三线| 免费看电影在线| 国产精品久久精品国产| 精品9999| 黄色污在线观看| 欧美日韩一区二区免费视频| 亚欧在线观看视频| 91精品国产乱码久久久久久蜜臀 | 日本va欧美va国产激情| 亚洲国产婷婷香蕉久久久久久| 爱情岛亚洲播放路线| 国产亚洲福利社区| 国产视频久久| 中文字幕第20页| 欧美日韩在线三区| 欧美成人hd| 91久久精品www人人做人人爽| 国产精品a级| 中国av免费看| 在线视频亚洲一区| 久操视频在线| 成人欧美一区二区| 亚洲精选国产| 亚洲码无人客一区二区三区| 欧美午夜不卡在线观看免费| 色网站免费在线观看| 成人午夜一级二级三级| 亚洲天堂男人| 国产人妻一区二区| 欧美精品 日韩| 超碰中文在线| 日本高清久久一区二区三区| 麻豆高清免费国产一区| 妺妺窝人体色www聚色窝仙踪| 亚洲护士老师的毛茸茸最新章节| 欧美特黄aaaaaaaa大片| 亚洲一区二区免费视频软件合集| 国产精品亚洲成人| 欧美在线观看不卡| 日韩在线观看高清| 国产精品xxxav免费视频| 日本www高清视频| 亚洲欧美另类小说| 天堂av中文在线资源库| 91精品久久久久久久久久久| 亚洲一级黄色| 天天摸日日摸狠狠添| 精品精品欲导航| 小明成人免费视频一区| 乱熟女高潮一区二区在线| 久久久精品影视| www黄色网址| 国产精品毛片a∨一区二区三区|国| 亚洲国产精品成人| 国产成人无码精品久久二区三| 欧美丰满少妇xxxbbb| 波多视频一区| 免费在线黄网站| 中文字幕av资源一区| 色欲av伊人久久大香线蕉影院| 国产剧情日韩欧美|