亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

HTML5之WebGL 3D概述(上)—WebGL原生開發開啟網頁3D渲染新時代
來源:易賢網 閱讀:2295 次 日期:2016-07-22 14:38:25
溫馨提示:易賢網小編為您整理了“HTML5之WebGL 3D概述(上)—WebGL原生開發開啟網頁3D渲染新時代”,方便廣大網友查閱!

WebGL開啟了網頁3D渲染的新時代,它允許在canvas中直接渲染3D的內容,而不借助任何插件。WebGL同canvas 2D的API一樣,都是通過腳本操縱對象,所以步驟也是基本相似:準備工作上下文,準備數據,在canvas中繪制對象并渲染。與2D不同的就是3D涉及的知識更多了,例如世界、光線、紋理、相機、矩陣等專業知識。WebGL有一個很好的中文教程,就是下面使用參考中的第一個鏈接,所以這里不再班門弄斧,后面的內容只是簡單的總結一下學習的內容。

瀏覽器的支持

由于微軟有自己的圖形發展計劃,一直不支持WebGL,所以IE目前除了安裝插件外,是無法運行WebGL的。其他的主流瀏覽器如Chrome、FireFox、Safari、Opera等,都裝上最新的版本就可以了。除了瀏覽器要裝最新的外,還要保證顯卡的驅動也是最新的。

裝上這些以后,可以打開瀏覽器,輸入下面的網址驗證一下瀏覽器對WebGL的支持情況:http://webglreport.sourceforge.net/。

在正常安裝以上瀏覽器之后還是不能運行WebGL,那你可以強制開啟WebGL支持試一試。開啟方法如下:

Chrome瀏覽器

我們需要為Chrome加入一些啟動參數,以下具體操作步驟以Windows操作系統為例:找到Chrome瀏覽器的快捷方式,右鍵點擊快捷方式,選擇屬性;在目標框內,chrome.exe后面的引號后面,加入以下內容:

--enable-webgl--ignore-gpu-blacklist--allow-file-access-from-files

點擊確定后關閉Chrome,然后用此快捷方式啟動Chrome瀏覽器。

幾個參數的含義如下:

--enable-webgl的意思是開啟WebGL支持;

--ignore-gpu-blacklist的意思是忽略GPU黑名單,也就是說有一些顯卡GPU因為過于陳舊等原因,不建議運行WebGL,這個參數可以讓瀏覽器忽略這個黑名單,強制運行WebGL;

--allow-file-access-from-files的意思是允許從本地載入資源,如果你不是WebGL的開發者,不需要開發調試WebGL,只是想要看一下WebGL的Demo,那你可以不添加這個參數。

Firefox瀏覽器

Firefox的用戶請在瀏覽器的地址欄輸入“about:config”,回車,然后在過濾器(filter)中搜索“webgl”,將webgl.force-enabled設置為true;將webgl.disabled設置為false;在過濾器(filter)中搜索“security.fileuri.strict_origin_policy”,將security.fileuri.strict_origin_policy設置為false;然后關閉目前開啟的所有Firefox窗口,重新啟動Firefox。

前兩個設置是強制開啟WebGL支持,最后一個security.fileuri.strict_origin_policy的設置是允許從本地載入資源,如果你不是WebGL的開發者,不需要開發調試WebGL,只是想要看一下WebGL的Demo,那你可以不設置此項。

Safari瀏覽器

在菜單中找到“屬性”→“高級”,選中“顯示開發菜單”,然后到“開發”菜單,選中“開啟WebGL”。

開發步驟

下面的代碼只是簡單總結一下相關的概念,它來源于參考中的中文教程,涉及較多的3D方面的知識。感興趣的同學直接可以跳到實用參考中的中文教程中學習,比我這里講解的要詳細和準確的多。湊熱鬧的同學簡單看看就可以了,不用深究每一行代碼的含義。

準備工作

這個不用說了,就是在頁面上添加一個canvas元素作為渲染的容器。例如:

代碼如下:

<bodyonload="start()">

<canvasid="glcanvas"width="640"height="480">

Yourbrowserdoesn'tappeartosupporttheHTML5canvaselement.

</canvas>

</body>

下面就是正式開始寫腳本的時候了,首先看一下程序入口以及整體結構:

代碼如下:

functionstart(){

varcanvas=document.getElementById("glcanvas");

initGL(canvas);

initShaders();

initBuffers();

gl.clearColor(0.0,0.0,0.0,1.0);

gl.enable(gl.DEPTH_TEST);

drawScene();

}

這里的幾個方法代表了典型的WebGL的繪制步驟:

步驟一:初始化WebGL工作環境 - initGL

這個方法的代碼如下:

代碼如下:

vargl;

functioninitGL(canvas){

gl=null;

try{

//Trytograbthestandardcontext.Ifitfails,fallbacktoexperimental.

gl=canvas.getContext("webgl")||canvas.getContext("experimental-webgl");

}

catch(e){} //Ifwedon'thaveaGLcontext,giveupnow

if(!gl){

alert("UnabletoinitializeWebGL.Yourbrowsermaynotsupportit.");

}

}

這個方法很簡單,就是獲取WebGL的繪制環境,需要把參數"webgl"傳給canvas.getContext方法就行了,但是由于目前WebGL的標準沒有最終定型,所以實驗階段用的參數都是"experimental-webgl"。當然你直接去調用canvas.getContext("experimental-webgl")也是可以的,等標準定下以后,你再修改一個代碼。

步驟二:初始化著色器Shaders - initShaders

著色器Shader概念比較簡單,說白了就是顯卡運算指令。構造3D場景需要進行大量的顏色、位置等等信息的計算,如果這些計算由軟件執行的話,速度會很慢。所以把這些運算讓顯卡去計算,速度就很快;如何去執行這些計算,就是由著色器指定的。著色器代碼是用一種叫做GLSL的著色器語言編寫的,這個我們不去講述這個語言了。

著色器可以在html中定義,在代碼中使用。當然了你在程序中用一個字符串去定義著色器也是一樣的。

下面先看定義的部分:

代碼如下:

<scriptid="shader-fs"type="x-shader/x-fragment">

precisionmediumpfloat;

varyingvec4vColor;

voidmain(void){

gl_FragColor=vColor;

}

</script>

<scriptid="shader-vs"type="x-shader/x-vertex">

attributevec3aVertexPosition;

attributevec4aVertexColor;

uniformmat4uMVMatrix;

uniformmat4uPMatrix;

varyingvec4vColor;

voidmain(void){

gl_Position=uPMatrix*uMVMatrix*vec4(aVertexPosition,1.0);

vColor=aVertexColor;

}

</script>

這里有兩個著色器:面著色器和頂點著色器。

關于這兩個著色器,這里有必要說明一下,計算機中的3D模型基本都是由點結合三角面片去描述的,頂點著色器就是去處理這些點的數據,而面著色器就是通過插值的方式,去處理三角面片上點的數據。

上面定義的頂點著色器就定義了頂點的位置和顏色計算方式;而面著色器定義了插值點的顏色計算方式。實際的應用場景中,還會涉及到在著色器中處理光線等效果。

定義了著色器,在程序中就可以查找到它們并可以去使用:

代碼如下:

varshaderProgram;

functioninitShaders(){

varfragmentShader=getShader(gl,"shader-fs");

varvertexShader=getShader(gl,"shader-vs");

shaderProgram=gl.createProgram();

gl.attachShader(shaderProgram,vertexShader);

gl.attachShader(shaderProgram,fragmentShader);

gl.linkProgram(shaderProgram);

if(!gl.getProgramParameter(shaderProgram,gl.LINK_STATUS)){

alert("Couldnotinitialiseshaders");

}

gl.useProgram(shaderProgram);

shaderProgram.vertexPositionAttribute=gl.getAttribLocation(shaderProgram,"aVertexPosition");

gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute);

shaderProgram.vertexColorAttribute=gl.getAttribLocation(shaderProgram,"aVertexColor");

gl.enableVertexAttribArray(shaderProgram.vertexColorAttribute);

shaderProgram.pMatrixUniform=gl.getUniformLocation(shaderProgram,"uPMatrix");

shaderProgram.mvMatrixUniform=gl.getUniformLocation(shaderProgram,"uMVMatrix");

}

著色器是有了,但是怎么讓顯卡去執行,Program就是這種橋梁,它是WebGL原生的二進制碼,它的作用基本上就是讓顯卡運行著色器代碼去渲染指定的模型數據。

這里還用到一個輔助方法getShader,這個方法就是遍歷html文檔,查找著色器的定義,拿到定義后創建著色器,這里就不細說了:

代碼如下:

functiongetShader(gl,id){

varshaderScript,theSource,currentChild,shader;

shaderScript=document.getElementById(id);

if(!shaderScript){

returnnull;

}

theSource="";

currentChild=shaderScript.firstChild;

while(currentChild){

if(currentChild.nodeType==currentChild.TEXT_NODE){

theSource+=currentChild.textContent;

}

currentChild=currentChild.nextSibling;

}

if(shaderScript.type=="x-shader/x-fragment"){

shader=gl.createShader(gl.FRAGMENT_SHADER);

}elseif(shaderScript.type=="x-shader/x-vertex"){

shader=gl.createShader(gl.VERTEX_SHADER);

}else{

//Unknownshadertype

returnnull;

}

gl.shaderSource(shader,theSource);

//Compiletheshaderprogram

gl.compileShader(shader);

//Seeifitcompiledsuccessfully

if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){

alert("Anerroroccurredcompilingtheshaders:"+gl.getShaderInfoLog(shader));

returnnull;

}

returnshader;

}

步驟三:創建/加載模型數據 - initBuffers

這些小例子中,模型數據基本都是直接生成的,實際的程序中,這些數據應該都是從模型加載得到的:

代碼如下:

vartriangleVertexPositionBuffer;

vartriangleVertexColorBuffer;

functioninitBuffers(){

triangleVertexPositionBuffer=gl.createBuffer();

gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexPositionBuffer);

varvertices=[

0.0,1.0,0.0,

-1.0,-1.0,0.0,

1.0,-1.0,0.0

];

gl.bufferData(gl.ARRAY_BUFFER,newFloat32Array(vertices),gl.STATIC_DRAW);

triangleVertexPositionBuffer.itemSize=3;

triangleVertexPositionBuffer.numItems=3;

triangleVertexColorBuffer=gl.createBuffer();

gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexColorBuffer);

varcolors=[

1.0,0.0,0.0,1.0,

0.0,1.0,0.0,1.0,

0.0,0.0,1.0,1.0

];

gl.bufferData(gl.ARRAY_BUFFER,newFloat32Array(colors),gl.STATIC_DRAW);

triangleVertexColorBuffer.itemSize=4;

triangleVertexColorBuffer.numItems=3;

}

上面這段代碼創建了三角形的頂點和頂點的顏色數據并放在緩沖區中。

步驟四:渲染 - drawScene

準備好了數據以后,交給WebGL去渲染就好了,這里調用的是gl.drawArrays方法。看代碼:

代碼如下:

functiondrawScene(){

gl.viewport(0,0,gl.viewportWidth,gl.viewportHeight);

gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);

pMatrix=okMat4Proj(45.0,gl.viewportWidth/gl.viewportHeight,0.1,100.0);

mvMatrix=okMat4Trans(-1.5,0.0,-7.0);

gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexPositionBuffer);

gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute,triangleVertexPositionBuffer.itemSize,gl.FLOAT,false,0,0);

gl.bindBuffer(gl.ARRAY_BUFFER,triangleVertexColorBuffer);

gl.vertexAttribPointer(shaderProgram.vertexColorAttribute,triangleVertexColorBuffer.itemSize,gl.FLOAT,false,0,0);

setMatrixUniforms();

gl.drawArrays(gl.TRIANGLES,0,triangleVertexPositionBuffer.numItems);

}

這個函數首先設置了3D世界的背景為黑色,然后設置投影矩陣,設置待繪制對象的位置,然后根據緩沖中的頂點和顏色數據,繪制對象。這里還有一些生成投影矩陣和模型視圖矩形的輔助方法(使用了Oak3D圖形庫中的矩陣輔助方法)與主題關系不大,這里就不詳細解釋了。

基本上流程就是這么多了,更復雜的紋理,光線等都是在這些基礎上加入一些WegGL的特性實現的,這個請參看后面的中文教程,里面有詳細的例子。

怎么樣?使用原生的WebGL開發是一種什么感受?不僅需要有深厚的3D知識,還需要知道各種實現細節。WebGL這樣做是為了靈活的適應各種應用場景,但是對于大多數像我這樣非專業人士來說,很多細節是不需要知道的。這樣就催生了各種輔助開發的類庫,例如這節用到的Oak3D庫(為了演示WebGL開發,例子中只用到了矩陣輔助方法)。下一節會介紹一個用的比較多的Three.js圖形庫。

更多信息請查看網頁制作
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
狠狠色噜噜狠狠色综合久| 欧美一区免费视频| 国内精品国语自产拍在线观看| 999亚洲国产精| 伊人久久亚洲美女图片| 欧美日韩第一区| 一级日韩一区在线观看| 亚洲国产一区二区三区在线播 | 国内精品久久久久久久97牛牛| 最新国产乱人伦偷精品免费网站| 欧美视频日韩| 在线成人www免费观看视频| 在线 亚洲欧美在线综合一区| 在线高清一区| aa日韩免费精品视频一| 99www免费人成精品| 国产女优一区| 男人的天堂成人在线| 一区二区冒白浆视频| 亚洲一区自拍| 欧美黄色免费| 伊人成人在线视频| 国产精品日韩一区二区三区| 久久电影一区| 欧美亚洲免费| 欧美午夜精品| av成人国产| 美日韩精品免费| 欧美日韩精品一区| 一二三区精品| 午夜天堂精品久久久久| 永久久久久久| 玖玖在线精品| 亚洲久久一区| 欧美一区2区三区4区公司二百| 亚洲午夜在线| 美女爽到呻吟久久久久| 亚洲高清视频一区二区| 亚洲三级免费| 欧美日韩免费| 国产精品久久久一区二区三区 | 国产精品一区二区你懂得| 亚洲国产片色| 久久精品网址| 日韩视频精品| 国产综合精品| 久久精品官网| 一区二区91| 红桃视频欧美| 欧美69wwwcom| 亚洲永久视频| 一级成人国产| 欧美视频观看一区| 久久精品系列| 亚洲一区二区三区免费在线观看| 精品91在线| 欧美成人有码| 久久国产精品免费一区| 亚洲作爱视频| 一本一道久久综合狠狠老精东影业| 欧美全黄视频| 欧美一区二区三区免费看| 亚洲成人直播| 激情视频一区二区| 欧美激情综合| 欧美久久成人| 久久综合导航| 老司机免费视频久久| 亚洲一区二区三区涩| 一本不卡影院| 午夜精品区一区二区三| 久久国产欧美精品| 亚洲自啪免费| 免费中文字幕日韩欧美| 久久福利精品| 欧美不卡福利| 黄色成人在线网站| 欧美一进一出视频| 久久国产精品99国产| 亚洲永久免费| 欧美一区网站| 极品中文字幕一区| 亚洲精品久久久久久一区二区| 在线精品亚洲| 国产精品日本一区二区| 韩国久久久久| 99精品欧美| 久久精品1区| 欧美日韩一区在线视频| 黄色欧美成人| 国产日韩一区二区| 亚洲一区二区三区精品视频| 久久久久久久久久久久久久一区| 国产偷久久久精品专区| 亚洲欧美日韩另类精品一区二区三区 | 久久婷婷激情| 欧美激情aⅴ一区二区三区| 国产精品黄色| 一级成人国产| 欧美阿v一级看视频| 国模精品一区二区三区| 91久久精品www人人做人人爽| 伊人成人在线| 免费看的黄色欧美网站| 国内精品久久久久久久影视蜜臀| 一本色道88久久加勒比精品| 久久久久一区二区三区| 好吊视频一区二区三区四区 | 欧美精品一区二区视频| 亚洲精品一区二| 麻豆精品网站| 99视频精品免费观看| 欧美在线视频二区| 中文网丁香综合网| 欧美日本一区| 久久午夜av| 国产三区二区一区久久| 影音先锋国产精品| 欧美成人日韩| 久久av一区二区三区亚洲| 一区在线免费| 欧美日韩亚洲一区二区三区在线观看 | 久久久人人人| 国产欧美日韩一区| 黄色免费成人| 亚洲人成高清| 国内精品福利| 午夜激情一区| 欧美黄污视频| 麻豆九一精品爱看视频在线观看免费| 亚洲毛片播放| 亚洲国产精品一区| 欧美日韩三区四区| 欧美在线首页| 欧美中文字幕| 亚洲欧美成人综合| 国产精品资源| 国产日韩一区欧美| 国产亚洲网站| 国产精品一区视频| 国产精品免费区二区三区观看| 亚洲午夜精品福利| 在线精品亚洲一区二区| 欧美午夜免费| 久久久久网址| 久久一区国产| 久久久精品国产一区二区三区| 国产日韩欧美一区二区三区四区| 激情一区二区| 红桃视频国产精品| 亚洲一区欧美二区| 久久精品人人做人人爽电影蜜月| 国产精品一区二区在线观看| 亚洲一区一卡| 欧美va天堂| 狠狠色噜噜狠狠色综合久| 久久综合福利| 国外成人免费视频| 亚洲国产免费看| 日韩视频不卡| 毛片一区二区| 欧美极品一区| 久久五月天婷婷| 亚洲夜间福利| 国产精品亚洲一区| 欧美日韩国产不卡在线看| 国产精品地址| 国产情侣久久| 久久久亚洲人| 亚洲日韩视频| 麻豆成人在线播放| 伊人成人在线| 蜜桃视频一区| 亚洲国产黄色| 欧美一区二区三区在线免费观看| 黄色日韩在线| 久久本道综合色狠狠五月| 欧美天堂亚洲电影院在线观看| 日韩香蕉视频| 欧美日韩国产免费观看| 中国女人久久久| 欧美日韩视频| 麻豆成人在线播放| 99精品福利视频| 午夜视频精品| 亚洲一区黄色| 你懂的亚洲视频| 夜夜嗨一区二区三区| 欧美日韩精品一本二本三本| 国产一区二区三区久久久久久久久 | 日韩午夜电影| 国产精品xvideos88| 欧美天堂亚洲电影院在线观看| 一本综合久久| 狠狠色综合网| 欧美黄色免费| 久久电影一区| 亚洲视频导航| 亚洲国产婷婷| 国产精品sss| 久久国产毛片| 亚洲一区图片| 亚洲影院免费| 在线综合视频| 亚洲三级网站| 亚洲精品色图| 在线观看成人一级片| 欧美日韩亚洲免费| 久久亚洲免费| 欧美日韩影院| 欧美精品aa| 亚洲欧美一级二级三级| 久久精品网址| 久久亚洲午夜电影| 牛夜精品久久久久久久99黑人| 99国产精品久久久久久久成人热| 亚洲二区精品| 亚洲二区在线| 亚洲人www| 国产欧美日韩视频一区二区三区| 午夜精品视频在线观看一区二区| 久久精品毛片| 欧美精品v日韩精品v国产精品| 欧美96在线丨欧| 午夜日韩视频| 欧美一区在线看| 欧美成人精品| 狠狠色狠狠色综合人人| 亚洲国产导航| 国产亚洲欧美另类一区二区三区| 国产日韩一区欧美| 麻豆久久精品| 国内精品久久久久久久果冻传媒 | 狠狠久久综合婷婷不卡| 国产日韩欧美综合精品| 久久成人在线| 国产精品v欧美精品v日韩| 黄色亚洲在线| 国产精品久久国产愉拍| 亚洲日本久久| 小嫩嫩精品导航| 欧美黄色大片网站| 99riav1国产精品视频| 欧美亚洲一级| 国户精品久久久久久久久久久不卡| 黄色成人在线网站| 一区二区不卡在线视频 午夜欧美不卡'| 国产欧美日韩一区| 欧美成人精品| 国产欧美日本在线| 欧美高清一区| 国产日产高清欧美一区二区三区| 亚洲精品孕妇| 久久一区亚洲| 99精品热6080yy久久| 久久伊人一区二区| 激情综合久久| 欧美成人日本| 国产精品永久| 国内精品久久久久久久果冻传媒 | 先锋影音一区二区三区| 国产精品二区三区四区| 国产精品社区| 精品成人在线| 久久亚洲综合| 国产私拍一区| 亚洲理伦在线| 久久精品中文| 国产一区二区黄色| 亚洲图色在线| 欧美日韩三级电影在线| 免费永久网站黄欧美| 亚洲精品社区| 影音欧美亚洲| 欧美私人啪啪vps| 久久激情综合| 亚洲欧洲一二三| 久久久夜夜夜| 亚洲经典自拍| 国产综合久久| 国产精品theporn| 午夜国产精品视频免费体验区| 另类av一区二区| 欧美日韩一区二区三| 亚洲国产一区二区三区a毛片| 国产日韩欧美一区二区| 久久九九99| 18成人免费观看视频| 性一交一乱一区二区洋洋av| 欧美日本在线| 中日韩在线视频| 欧美另类视频在线| 日韩亚洲国产欧美| 欧美人成在线| 国产精品日本| 黄色欧美日韩| 蜜桃精品久久久久久久免费影院| 欧美日韩在线高清| 国产农村妇女毛片精品久久莱园子| 欧美在线一二三区| 亚洲人久久久| 欧美极品一区| 午夜亚洲视频| 亚洲精品视频一区二区三区| 久久狠狠一本精品综合网| 亚洲成人在线视频网站| 久久综合亚州| 亚洲一区精彩视频| 亚洲激情一区二区| 午夜精品av| 香蕉av777xxx色综合一区| 伊人久久亚洲热| 欧美黄色一级视频| 麻豆成人av| 国产视频一区欧美| 91久久综合| 亚洲第一毛片| 国产在线日韩| 欧美精品一区二区视频| 亚洲欧美网站| 一区二区三区三区在线| 国内精品久久国产| 欧美日韩一区二区三区在线视频| 美女精品在线| 久久国产成人| 美女国产精品| 久久久福利视频| 久久精品网址| 欧美一区综合| 欧美一区二区三区在线播放| 亚洲在线国产日韩欧美| 国产精品久久久久毛片大屁完整版 | 99精品国产福利在线观看免费| 欧美不卡在线| 欧美二区在线| 欧美日韩国产综合视频在线| 你懂的亚洲视频| 欧美区国产区| 欧美日韩一区在线播放| 欧美视频在线观看| 影音先锋国产精品| 亚洲区一区二| 国产精品永久| 欧美一区1区三区3区公司 | 在线免费观看欧美| 国内自拍视频一区二区三区| 国产一区二区中文字幕免费看| 国产一区美女| 在线视频国内自拍亚洲视频| 99国产精品久久久久久久| 国产精品久久久一区二区三区 | 亚洲成人资源| 日韩天堂av| 老鸭窝亚洲一区二区三区| 久久久亚洲人| 国内精品久久国产| 日韩一级精品| 六月丁香综合| 国产精品av久久久久久麻豆网| 亚洲一级一区| 国产伦精品一区二区三区高清版| 免费看的黄色欧美网站| 欧美日韩精品综合| 亚洲精品在线视频观看| 久久福利一区| 伊人婷婷久久| 久久激情一区| 亚洲国产片色| 欧美一区二视频在线免费观看| 亚洲天堂黄色| 亚洲男人影院| 激情综合视频| 性色一区二区三区| 亚洲高清视频一区二区| 久久国产欧美精品| 日韩一级不卡| 欧美日本精品| 欧美亚洲三区| 亚洲美女色禁图| 国产精品99免费看| 噜噜噜91成人网| 妖精视频成人观看www| 午夜精品视频在线观看一区二区| 日韩午夜av| 韩国一区二区三区美女美女秀| 国产精品欧美久久| 在线播放不卡| 欧美日韩一区二区三区在线观看免| 国产日韩欧美综合精品| 亚洲天堂成人| 欧美激情日韩| 久久国产精品一区二区三区四区| 91久久极品少妇xxxxⅹ软件| 欧美高清视频一区| 羞羞视频在线观看欧美| 中文有码久久| 一区二区三区三区在线| 在线观看日韩av电影| 欧美日韩精品免费观看视一区二区 | 美女精品在线|