精品欧美一区二区三区在线观看 _久久久久国色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在线播放| 在线观看国产小视频| 好吊妞国产欧美日韩免费观看网站| 亚洲综合色噜噜狠狠| 韩国成人一区| 亚洲无码久久久久久久| 欧美日韩精品免费观看视频完整| 日韩精品中文字幕久久臀| 亚洲欧洲日本精品| 1234区中文字幕在线观看| 欧美国产禁国产网站cc| 国产精品.com| 97超碰资源站| 日日夜夜精品视频免费| 欧美贵妇videos办公室| 久久久精品成人| 日韩成人av在线资源| 91精品在线观看入口| 久久精品一区二| 丁香花在线观看完整版电影| 国产精品日韩成人| 久久伊人一区| 男人天堂av网| 久久99精品国产麻豆不卡| 国产91精品网站| 日本五十熟hd丰满| 欧美日韩p片| 俺去啦;欧美日韩| 久久精品—区二区三区舞蹈| 成人午夜大片| 欧美一二三四在线| 999久久久精品视频| 四虎影视4hu4虎成人| 午夜精品久久久久久久久久久| 亚洲一区二区三区精品视频 | 在线成人av影院| 成年人视频网站免费观看| 国产美女福利在线观看| 亚洲人吸女人奶水| 一本—道久久a久久精品蜜桃| 国产高清视频在线| 91美女片黄在线观看91美女| 国产精品一区二区三区观看 | 亚洲精品日韩在线| 国产日韩视频一区| 亚洲成人偷拍| 精品久久久久久久久久久院品网| 91精产国品一二三产区别沈先生| 亚洲精品无播放器在线播放| 欧美午夜精品久久久久久孕妇| 成熟老妇女视频| 免费亚洲电影| 在线观看av一区二区| 午夜欧美福利视频| 成人涩涩视频| 欧美日韩成人高清| 国产三级精品三级在线| 亚洲美女色播| 日韩欧美国产综合在线一区二区三区| 亚洲综合伊人久久| 一区中文字幕| 日韩hd视频在线观看| 一起草在线视频| 九九视频免费观看视频精品 | 国产在线观看h| 精品福利久久久| 丝袜一区二区三区| 欧美成人片在线观看| 欧美日韩精选| 欧美在线免费视频| 制服丝袜在线一区| 狠狠狠色丁香婷婷综合激情| 91久久精品www人人做人人爽| www.成人精品| 91视视频在线直接观看在线看网页在线看| 久久精品国产精品国产精品污 | 国偷自产av一区二区三区| 亚洲高清福利视频| 亚洲图片另类小说| 真实国产乱子伦精品一区二区三区| 欧美精品在线播放| 中国一级免费毛片| 六月婷婷色综合| 成人免费看片网址| 国产精品秘入口| 亚洲视频小说图片| 黄色www网站| 国产极品嫩模在线观看91精品| 91精品国产乱| 中文字幕一区二区久久人妻网站 | 91在线观看高清| 亚洲欧洲中文| 国产网友自拍视频导航网站在线观看| 亚洲午夜电影在线观看| 久草在在线视频| 伊人精品综合| 中文字幕亚洲欧美| 人人干人人干人人干| 麻豆国产精品一区二区三区| 国产精品国模大尺度私拍| 国产精品久久一区二区三区不卡 | 久久久天堂国产精品| 午夜伦理福利在线| 91精品蜜臀在线一区尤物| 国产呦小j女精品视频| 亚洲一区二区| 国产精品扒开腿做| 熟妇高潮一区二区三区| 专区另类欧美日韩| 国产a级片免费观看| 亚洲人成网站在线在线观看| 亚洲人成免费电影| 久久高清无码视频| 老司机免费视频一区二区 | 色婷婷一区二区三区| 久久久久久综合网天天| 国产精品高潮呻吟av| 91免费国产在线| 日b视频免费观看| 日韩伦理一区二区| 亚洲天堂av综合网| 在线观看精品国产| 成人高清伦理免费影院在线观看| 一级二级三级欧美| 日韩美女在线看免费观看| 精品成人免费观看| 国产十六处破外女视频| 麻豆国产精品777777在线| 欧美日本韩国一区二区三区| 福利在线免费视频| 欧美变态tickle挠乳网站| 熟女av一区二区| 蜜臀av性久久久久蜜臀av麻豆| 狼狼综合久久久久综合网| 大桥未久在线播放| 精品区一区二区| 校园春色 亚洲| 国产伦理精品不卡| 中国女人做爰视频| 无人区乱码一区二区三区| 日韩有码在线视频| 亚洲资源在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 国产一区视频免费观看| 欧美日韩精品在线一区| 国产z一区二区三区| 伦理片一区二区三区| 欧美性猛交xxxxx水多| 国产精品一级黄片| 男女av一区三区二区色多| 久久99精品久久久久久青青日本| 极品在线视频| 亚洲欧美激情视频| 中文字幕日本视频| 国产精品白丝在线| 男插女视频网站| 亚洲视频免费| 欧美精品一区二区三区在线四季| 欧美黑人巨大xxxxx| 亚洲最大中文字幕| 国产又黄又粗又长| 一区二区三区丝袜| 日本护士做爰视频| 欧美一级久久| 亚洲欧美日韩国产成人综合一二三区 | 国产精品少妇自拍| www.污网站| 亚洲经典自拍| 欧美人与性禽动交精品| 久久亚洲国产精品尤物| 欧美人交a欧美精品| 午夜黄色小视频| 在线看日韩精品电影| 四虎地址8848| eeuss国产一区二区三区| 国产在线观看福利| 欧美gvvideo网站| 国产精品久久久对白| 涩涩视频在线播放| 中文字幕av一区中文字幕天堂 | 久久精品视频2| 亚洲欧洲日本在线| 午夜剧场免费看| 日韩精品乱码免费| 国产青草视频在线观看| 亚洲涩涩av| 96国产粉嫩美女| 性欧美hd调教| 欧美裸体xxxx极品少妇| 亚洲日本香蕉视频| 欧美日韩精品一区二区在线播放| 免费麻豆国产一区二区三区四区| 91片在线免费观看| 国产不卡的av| 日韩精品乱码免费| 国产一区二区三区小说| 日韩欧美一区二区三区在线视频 | 成人网18免费网站| 国产一区喷水| 在线不卡一区| 国产成人精品视频| mm视频在线视频| 久久午夜a级毛片| 黄色电影免费在线看| 日韩精品在线网站| 亚洲天堂网视频| 黑人精品xxx一区一二区| 欧美做爰爽爽爽爽爽爽| 国产亚洲一二三区| 水蜜桃av无码| 国产成人在线视频网站| 欧美日韩中文不卡| 日韩福利视频网| 午夜精品久久久久久久无码| 亚洲最大黄网| 制服丝袜在线91| 9色视频在线观看| 欧美综合另类| 久久精品国产一区二区三区日韩 | 中文字幕制服丝袜在线| 色综合中文网| 蜜桃视频日韩| 人体久久天天| 国产在线视频欧美一区二区三区| 视频二区欧美毛片免费观看| 国产伊人精品在线| 成人在线免费av| 国产91在线视频| 伊人网在线播放| 91精品国产91久久| gogo高清午夜人体在线| 欧美国产日韩在线| www免费在线观看| 久久久精品2019中文字幕神马| 成年人视频在线看| 亚洲丝袜av一区| 国产午夜在线观看| 一本色道久久88精品综合| 久久精品国产亚洲a∨麻豆| 精品视频在线播放| 色哟哟在线观看| 亚洲女同性videos| 久久精品蜜桃| 综合av色偷偷网| 日本在线免费| 蜜臀久久99精品久久久无需会员| 成年视频在线观看| 欧美精品一二区| 2001个疯子在线观看| 97久久精品人人澡人人爽缅北| 成人福利影视| 国产69久久精品成人| 欧美freesex| 国产日韩欧美黄色| 视频国产精品| 久久www免费人成精品| 亚洲综合福利| 亚洲午夜精品久久| 一区二区电影在线观看| www.av91| 乱人伦精品视频在线观看| 欧美日韩亚洲自拍| 韩国成人福利片在线播放| 91精产国品一二三| 99riav一区二区三区| 中文字幕在线观看免费高清| 中文字幕一区二区在线播放| 五月天激情丁香| 亚洲国产精品久久不卡毛片| 日日噜噜噜噜人人爽亚洲精品| 在线观看91视频| www.色婷婷.com| 精品中文视频在线| 在线观看国产原创自拍视频| 欧美精品在线免费播放| 一个人看的www视频在线免费观看 一个人www视频在线免费观看 | 日韩成人一级大片| 五月六月丁香婷婷| 99在线精品观看| jizzjizz日本少妇| 亚洲国产精品一区二区尤物区| 欧美性猛交bbbbb精品| 欧美日本在线看| 手机在线不卡av| www.欧美三级电影.com| av色在线观看| 国产免费一区二区三区在线能观看 | 91在线精品观看| 亚洲免费观看高清完整版在线观| 亚洲黄色一区二区三区| 亚洲性视频h| av污在线观看| 99久久er热在这里只有精品15 | 在线成人直播| 无人在线观看的免费高清视频 | 亚洲 小说 欧美 激情 另类| 专区另类欧美日韩| 国产91精品看黄网站在线观看| 欧美一区二区三区性视频| 三级在线播放| 九色成人免费视频| www.国产精品| 免费观看成人高| 亚洲视频久久| 欧洲美女亚洲激情| 日本一区二区三区久久久久久久久不 | 国产精品一区二区女厕厕| 欧美aaaaaaaa牛牛影院| 天天操天天干天天玩| 日本人妖一区二区| 亚洲天堂美女视频| 一区二区三区在线观看国产| 在线观看国产黄| 亚洲精品中文字幕女同| 欧美hdxxx| 成人欧美在线视频| 精品精品99| 国产xxxxx在线观看| 成人高清在线视频| 九九视频免费看| 欧美放荡的少妇| 日本免费中文字幕在线| 国产精品扒开腿爽爽爽视频| 无码日韩精品一区二区免费| 黄色特一级视频| 国产激情精品久久久第一区二区| 娇妻被老王脔到高潮失禁视频| 亚洲观看高清完整版在线观看| 手机福利在线视频| 快播电影网址老女人久久| 久久国产精品-国产精品| 欧美精品自拍| av电影中文字幕| 亚洲精品国产a| 精品人妻少妇嫩草av无码专区| 精品国产一区二区三区四区在线观看| 国产成人久久精品麻豆二区| 日本一区二区三区视频免费看| 性色一区二区三区| 精品人妻无码一区二区三区| 精品福利在线视频| 午夜激情小视频| 日本精品一区二区三区在线| 免费一区二区三区视频导航| 人妻有码中文字幕| 91美女片黄在线观看| 日韩一级片中文字幕| 亚洲丝袜一区在线| 日韩一区二区三区四区五区| youjizz.com亚洲| 国产精品一区免费在线观看| 懂色av懂色av粉嫩av| 精品久久国产老人久久综合| 国产精品偷拍| 精品乱子伦一区二区三区| 奶水喷射视频一区| 五月婷婷欧美激情| 欧美一区二区三区思思人| 日韩伦理av| 久久国产精品精品国产色婷婷| 国产精品日本欧美一区二区三区| 亚洲一级中文字幕| 欧美日韩不卡在线| 国产盗摄一区二区| 欧美福利一区二区三区| 七七婷婷婷婷精品国产| 国产精品成人69xxx免费视频| 日韩一区二区免费视频| 91高清视频在线观看| 欧美三级华人主播| 久久精品噜噜噜成人av农村| 欧美丰满艳妇bbwbbw| 亚洲福利视频二区| 狠狠久久综合| 少妇大叫太大太粗太爽了a片小说| 91麻豆福利精品推荐| 在线播放国产一区| 久久久久久国产精品久久| 九色成人国产蝌蚪91| 久久久久久久久久久久久久久国产| 亚洲综合久久久| 国产特黄在线| 成人免费在线看片| 日本成人在线不卡视频| 久久久一二三区| 一区二区三区黄色| 成人激情自拍| 色婷婷成人在线| 午夜国产精品一区| 秋霞午夜在线观看| 久精品国产欧美| 国产精品亚洲专一区二区三区| 国产91精品一区| 美女999久久久精品视频| 九九在线高清精品视频| 动漫av在线免费观看| 欧美吻胸吃奶大尺度电影| 国内小视频在线看| 在线播放豆国产99亚洲| 99麻豆久久久国产精品免费优播|