青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

黎明的剔透里伸出了你沁清的曖昧

Graphics|EngineDev|GameDev|2D&3D Art

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  60 隨筆 :: 1 文章 :: 18 評(píng)論 :: 0 Trackbacks

üOpenGL提供頂點(diǎn)數(shù)組函數(shù)
啟用數(shù)組:
glEnableClientState(GLenum array);來(lái)啟動(dòng)指定的數(shù)組
參數(shù)可以為
GL_VERTEX_ARRAY
GL_COLOR_ARRAY
GL_SECOND_COLOR_ARRAY
GL_INDEX_ARRAY
GL_NORMAL_ARRAY
GL_FOG_COORDINATE_ARRAY
GL_TEXTURE_COORD_ARRAY
GL_GLAG_ARRAY
指定數(shù)組中的數(shù)據(jù):
void glVertexPointer(GLint size,GLenum type,GLsize srtide,cinst GLvoid *pointer);
size 是每個(gè)頂點(diǎn)的坐標(biāo)數(shù)目,必須是2,3,4
type 是指定數(shù)組每個(gè)坐標(biāo)的數(shù)據(jù)類型(GL_FLOAT,GL_INT,GL_SHORT,GL_DOUBLE)
stride 是為兩個(gè)相鄰頂點(diǎn)之間的偏移量,單位為字節(jié). stride為0 表明頂點(diǎn)是緊密存儲(chǔ)在數(shù)組中
pointer是數(shù)組中第一個(gè)頂點(diǎn)的第一個(gè)坐標(biāo)的內(nèi)存地址
指定其他數(shù)組數(shù)據(jù)的函數(shù)類似:glColorPointer();

解除引用和渲染
對(duì)單個(gè)數(shù)組元素解除引用:
void glArrayElement(GLuint ith);
這個(gè)函數(shù)對(duì)單個(gè)數(shù)組元素解除引用,參數(shù)ith是要獲得啟用數(shù)組中數(shù)據(jù)的下標(biāo),如果同時(shí)指定了顏色及法線等信息,那么對(duì)于每個(gè)頂點(diǎn)只調(diào)用glArrayElement()一次,減少了函數(shù)調(diào)用的次數(shù),
對(duì)一系列數(shù)組元素解除引用:
void glArrayElements(GLenum mode,GLsize count,GLenum type,void *index);
mode取值和glBegin()參數(shù)值相同,count為元素個(gè)數(shù),type指出了數(shù)組index的數(shù)據(jù)類型:必須為GL_UNSIGNED_BYTE 、GL_UNSIGNED_SHOART 、GL_UNSIGNED_INT
對(duì)一系列相鄰數(shù)組元素解除引用
void glDrawArrays(GLenum mode,GLint first,GLsize count);
在每個(gè)被啟用的數(shù)組中,使用從first到first+count-1對(duì)應(yīng)的數(shù)組元素,來(lái)構(gòu)建一些列幾何圖元,參數(shù)mode指定構(gòu)建哪種圖元-同glBegin()中的參數(shù)一樣
該函數(shù)的第一個(gè)參數(shù)用于指定繪制模式。關(guān)于繪制模式我們稍后會(huì)有詳細(xì)的介紹。
第二個(gè)參數(shù)用于指定所允許的頂點(diǎn)的起始頂點(diǎn)。比如說(shuō),我們之前定義了5個(gè)頂點(diǎn),但是我們?cè)诋嬚叫蔚臅r(shí)候想跳過(guò)第一個(gè)頂點(diǎn),從第二個(gè)頂點(diǎn)開始畫,那么索引就是1(起始索引值為0)。
第三個(gè)參數(shù)要繪制的頂點(diǎn)的個(gè)數(shù)。

static struct
{
    GLubyte colours[
4];
    GLfloat vertices[
3];
     
}
vertexInfoList[] = {
    
{2552550255}{1.0f1.0f0.0f} },
    
{25500255}{-0.5f0.5f0.0f} },
    
{02550255}{-0.5f-0.5f0.0f} },
    
{00255255}{0.5f0.5f0.0f} },
    
{2550255255}{0.5f-0.5f0.0f} }
}
;
 
glClear(GL_COLOR_BUFFER_BIT);
 
glVertexPointer(
3, GL_FLOAT, 16, vertexInfoList[0].vertices);
glColorPointer(
4, GL_UNSIGNED_BYTE, 16, vertexInfoList[0].colours);
 
glDrawArrays(GL_TRIANGLE_STRIP, 
04);


GPU的一個(gè)特點(diǎn)是擁有大規(guī)模的線程以及超大的帶寬。因此,我們用glBegin/glEnd對(duì)去一點(diǎn)點(diǎn)繪制圖形的話對(duì)GPU而言是非常低效的。GPU喜歡做的是一口氣把所有命令讀上來(lái),然后分派到不同的流處理器去執(zhí)行。每條流處理器又有很多個(gè)線程。GPU的流水線比較長(zhǎng),做的工作也是比較特定的。為了方便GPU來(lái)處理主機(jī)端的數(shù)據(jù),我們通常會(huì)把頂點(diǎn)信息以及其相應(yīng)的顏色信息組成連續(xù)存放的數(shù)組形式。這樣既有利于存儲(chǔ)器訪問(wèn),而且也利于GPU快速加載(比如通過(guò)內(nèi)部的DMA)。
glVertexPointer函數(shù)定義了一組頂點(diǎn)數(shù)據(jù)的一個(gè)數(shù)組。其原型如下:

1void glVertexPointer(    GLint      size,
2                                     GLenum      type,
3                                     GLsizei      stride,
4                                     const GLvoid *      pointer);

第一個(gè)參數(shù)指定了每個(gè)頂點(diǎn)的坐標(biāo)分量個(gè)數(shù)。比如,我們這里一個(gè)頂點(diǎn)的坐標(biāo)有三個(gè)分量,分別是:x,y,z。如果只有兩個(gè)分量的話,z分量在處理時(shí)會(huì)被置0;如果有4個(gè)分量,那么就會(huì)增加w分量。w分量用于線性變換,這將是下一講的話題。這個(gè)參數(shù)只能是2、3或4。
第二個(gè)參數(shù)用于指定頂點(diǎn)每個(gè)坐標(biāo)分量的數(shù)據(jù)類型。可以是:GL_SHORT、GL_INT、GL_FLOAT或GL_DOUBLE。在OpenGL ES中沒(méi)有GL_DOUBLE。

這里稍微講一下頂點(diǎn)坐標(biāo)分量的數(shù)據(jù)類型。每個(gè)頂點(diǎn)的所有坐標(biāo)分量必須的數(shù)據(jù)類型必須是一致的,不能定義x分量時(shí)用int,然后定義y 的時(shí)候就用float。并且每個(gè)頂點(diǎn)的坐標(biāo)分量類型必須相同。
在GPU中,其專門有快速浮點(diǎn)計(jì)算,因此提高GPU處理數(shù)據(jù)的速度往往會(huì)使用float類型,而不是int。不過(guò)即使是當(dāng)前主流桌面計(jì)算機(jī)用的GPU,其對(duì)double類型的支持比較弱,因?yàn)閐ouble需要消耗2倍于float的帶寬。所以就目前而言,不管是OpenGL還是OpenGL ES,往往使用GLfloat類型來(lái)定義頂點(diǎn)坐標(biāo),以使得做線性變換計(jì)算時(shí)能充分利用GPU的計(jì)算單元的性能。

第三個(gè)參數(shù)指定相鄰兩個(gè)頂點(diǎn)的偏移字節(jié)數(shù)。上面用的是:glVertexPointer(3, GL_FLOAT, 16, vertexInfoList[0].vertices);
因?yàn)榈谝粋€(gè)頂點(diǎn)的起始地址與第二個(gè)頂點(diǎn)的起始地址之間相差16個(gè)字節(jié)——即sizeof(vertexInfoList[0])。
第四個(gè)參數(shù)用來(lái)指定頂點(diǎn)數(shù)組的起始位置。
glColorPointer與glVertexPointer定義一樣。它用來(lái)指定一組頂點(diǎn)顏色信息的數(shù)組。其原型如下:

1
2
3
4
void glColorPointer(    GLint      size,
                        GLenum      type,
                        GLsizei      stride,
                        const GLvoid *      pointer);


第一個(gè)參數(shù)是每個(gè)顏色信息的分量個(gè)數(shù),在OpenGL中可以是3或4;而OpenGL ES1.1中必須是4。如果是3個(gè)分量,則依次表示紅(R)、綠(G)、藍(lán)(B);如果是4個(gè)分量,那么前三個(gè)與前面的一樣,第四個(gè)分量是alpha,表示透明度。
第二個(gè)參數(shù)用于指定顏色分量的數(shù)據(jù)類型,可以是:GL_BYTE、GL_UNSIGNED_BYTE、GL_SHORT、GL_UNSIGNED_SHORT、GL_INT、GL_UNSIGNED_INT、GL_FLOAT、GL_DOUBLE;不過(guò)在OpenGL ES1.1中,常常使用GL_UNSIGNED_BYTE或GL_FLOAT。
第三個(gè)和第四個(gè)參數(shù)與glVertexPointer一樣。

通過(guò)指定頂點(diǎn)的坐標(biāo)信息和顏色信息,后面就可以利用glDrawArrays進(jìn)行繪制了。

glDrawElements來(lái)繪制圖形。
glDrawElements用于通過(guò)一個(gè)用戶自定義的索引數(shù)組來(lái)繪制圖形。下面看看其原型:

1
2
3
4
void glDrawElements(    GLenum      mode,
                        GLsizei      count,
                        GLenum      type,
                        const GLvoid *      indices);


第一個(gè)參數(shù)用于指定圖元繪制模式;
第二個(gè)參數(shù)用于指定所要繪制頂點(diǎn)的個(gè)數(shù);
第三個(gè)參數(shù)用于指定索引的數(shù)據(jù)類型;
第四個(gè)參數(shù)用于指定索引的起始地址。
這個(gè)函數(shù)可以很方便地用于繪制多個(gè)圖形。首先,頂點(diǎn)信息往往比較大(由于包括了一個(gè)頂點(diǎn)的所有坐標(biāo)分量信息以及顏色分量信息,甚至還有法線信息等),因此如果我們所要繪制的圖形通過(guò)已指定的頂點(diǎn)就能繪制出,就無(wú)需重復(fù)地定義頂點(diǎn),而只需要通過(guò)一個(gè)簡(jiǎn)短的索引數(shù)組就能解決問(wèn)題。
其次,調(diào)用一條命令繪制圖形往往比調(diào)多次效率要高,功耗要小。

在OpenGL中圖元繪制模式有: GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, 以及GL_POLYGON。
在OpenGL ES1.1中,圖元繪制模式有:GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN以及GL_TRIANGLES。
下面我們將逐一介紹。

首先是GL_POINTS,這個(gè)模式是僅繪制頂點(diǎn)。當(dāng)我們使用glDrawArrays時(shí),頂點(diǎn)通過(guò)由glVertexPointer和glColorPointer所指定的順序?qū)⒁来伪焕L制出。
我們可以嘗試一下:

1
glDrawArrays(GL_POINTS, 0, 4);


將上述代碼替換掉原來(lái)的對(duì)glDrawArrays的調(diào)用。

GL_LINE_STRIP模式:
這個(gè)模式用于繪制線段帶。比如現(xiàn)在有頂點(diǎn)v0, v1, v2, v3,那么繪制出的線段為帶由三條線段構(gòu)成,依次為:(v0, v1), (v1, v2), (v2, v3)。

1
glDrawArrays(GL_LINE_STRIP, 0, 4);


將上述代碼替換掉原來(lái)的對(duì)glDrawArrays的調(diào)用,然后查看結(jié)果。


GL_LINE_LOOP模式:
這個(gè)模式與GL_LINE_STRIP模式一樣,除了最后一個(gè)頂點(diǎn)與第一個(gè)頂點(diǎn)仍然連成一條線段。比如,有4個(gè)頂點(diǎn):v0, v1, v2, v3,那么構(gòu)成的線段帶為:(v0, v1), (v1, v2), (v2, v3), (v3, v0),共4條線段。

1
glDrawArrays(GL_LINE_LOOP, 0, 4);


請(qǐng)將上述代碼替換掉原來(lái)對(duì)glDrawArrays的調(diào)用,觀察結(jié)果。

GL_LINES模式:
該模式是對(duì)兩個(gè)頂點(diǎn)僅繪制一條線段,并且每個(gè)頂點(diǎn)在且在一條線段上,由該模式下所繪制出的線段組中,不會(huì)有相交的兩條線段。比如有4個(gè)頂點(diǎn):v0, v1, v2, v3,那么繪制出的線段為:(v0, v1), (v2, v3);如果只有三個(gè)頂點(diǎn):(v0, v1, v2),那么將只有(v0, v1)一條線段。

1
glDrawArrays(GL_LINES, 0, 4);

將上述代碼替換掉原來(lái)代碼中對(duì)glDrawArrays的調(diào)用,并觀察結(jié)果。然后將4改為3再觀察結(jié)果

GL_TRIANGLE_STRIP模式:
這個(gè)模式就是示例代碼中所采用的繪制模式。它是將前三個(gè)頂點(diǎn)構(gòu)成一個(gè)三角形后,從第四個(gè)頂點(diǎn)開始由先前所構(gòu)成的三角形的某一條邊作為公共邊然后構(gòu)造后一個(gè)三角形。而構(gòu)造后一個(gè)三角形的繪制順序依賴于構(gòu)造第一個(gè)三角形所采用的繪制順序。

GL_TRIANGLE_FAN模式:
這個(gè)模式在構(gòu)造三角形時(shí)始終以第一個(gè)頂點(diǎn)作為初始頂點(diǎn),然后與后兩個(gè)頂點(diǎn)構(gòu)成三角形,因此構(gòu)造順序猶如打開一把折扇。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static struct
{
    GLubyte colours[4];
    GLfloat vertices[3];
 
}vertexInfoList[] = {       
    { {0, 255, 0, 255}, {-0.5f, -0.5f, -5.0f} },
    { {255, 0, 255, 255}, {0.5f, -0.5f, -3.0f} },
    { {0, 0, 255, 255}, {0.5f, 0.5f, -3.0f} },
    { {255, 0, 0, 255}, {-0.5f, 0.5f, -5.0f} }
};
 
// Drawing code here.
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
glInterleavedArrays(GL_C4UB_V3F, 0, vertexInfoList);
 
glCullFace(GL_BACK);
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);



將上述代碼替換掉1樓中Mac部分代碼片段中的第26到44行,觀察結(jié)果。

GL_TRIANGLES模式:
該模式與GL_LINES模式類似,取三個(gè)頂點(diǎn)構(gòu)成一個(gè)獨(dú)立的三角形,并且頂點(diǎn)數(shù)組中每個(gè)頂點(diǎn)只對(duì)應(yīng)于一個(gè)三角形

ü使用buffer  object
緩存對(duì)象
以前頂點(diǎn)數(shù)據(jù)數(shù)組都保存在客戶端的內(nèi)存中,而有時(shí)候理想保存使用頻繁的客戶端數(shù)據(jù)(例如頂點(diǎn)數(shù)組數(shù)據(jù))的位置是高性能的服務(wù)器內(nèi)存。GL緩存對(duì)象提供了一套機(jī)制,使客戶端可以分配,初始化和渲染服務(wù)器端內(nèi)存。
利用緩沖區(qū)對(duì)象儲(chǔ)存頂點(diǎn)數(shù)據(jù)分為以下幾個(gè)步驟.
①創(chuàng)建緩沖區(qū)對(duì)象.
void glGenBuffers(GLsizei n, GLuint * buffers);
該函數(shù)通過(guò)buffers返回n個(gè)未被使用的緩沖區(qū)表識(shí)符(u int).
GLboolean glIsBuffers(GLuint buffer);
確定buffer是否為已經(jīng)被綁定的緩沖區(qū)表識(shí)符.

②綁定緩沖區(qū)對(duì)象.
void glBindBuffer(GLenum target, GLuint buffer);
target為GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER之一.此函數(shù)有三種不同的行為模式.
當(dāng)buffer首次使用時(shí),就創(chuàng)建一個(gè)緩沖區(qū),并綁定buffer作為其表識(shí)符.當(dāng)綁定到一個(gè)以前創(chuàng)建的緩沖區(qū)時(shí),這個(gè)緩沖區(qū)變成為當(dāng)前活動(dòng)的對(duì)象.當(dāng)綁定buffer值為0時(shí),停止使用緩沖區(qū)對(duì)象.

③使用頂點(diǎn)數(shù)據(jù)分配初始化緩沖區(qū)對(duì)象.
void glBufferData(GLenum target, GLsizeiptr size,const GLvoid * data,GLenum usage);
target同上,size表示分配在顯存當(dāng)中的儲(chǔ)存單位個(gè)數(shù).data是一個(gè)指向內(nèi)存的指針,用于初始化緩沖區(qū)對(duì)象.usage提示數(shù)據(jù)在分配之后如何進(jìn)行度取和寫入,根據(jù)所指定的值OpenGL實(shí)現(xiàn)可能會(huì)對(duì)其進(jìn)行針對(duì)性的優(yōu)化,它有以下幾種可能的值:
GL_STREAM_DRAW,GL_STREAM_READ,GL_STREAM_COPY,
GL_STATIC_DRAW,GL_STATIC_READ,GL_STAIC_COPY,
GL_DYNAMIC_DRAW,GL_DYNAMIC_READ,GL_DYNAMIC_COPY.
Draw-數(shù)據(jù)作為頂點(diǎn)數(shù)據(jù),用于渲染.
Read-數(shù)據(jù)從一個(gè)OpenGL緩沖區(qū)(楨緩沖區(qū)之類的)讀取,并在程序中與渲染并不直接相關(guān)的各種計(jì)算過(guò)程中使用.Copy-數(shù)據(jù)從一個(gè)OpenGL緩沖區(qū)讀取,然后作為頂點(diǎn)數(shù)據(jù),用于渲染.
Stream-緩沖區(qū)的對(duì)象需要時(shí)常更新,但使用次數(shù)很少.
Static-只需要一次指定緩沖區(qū)對(duì)象中的數(shù)據(jù),但使用次數(shù)很多.
Dynamic-數(shù)據(jù)不僅需要時(shí)常更新,使用次數(shù)也很多.

④更新緩沖區(qū)對(duì)象內(nèi)的數(shù)據(jù)

更新數(shù)據(jù)有以下兩種方式:

void glBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid * data);
target同上.由于頂點(diǎn)數(shù)組數(shù)據(jù)的所有格式在緩沖區(qū)對(duì)象內(nèi)同樣有效.所以頂點(diǎn)\顏色\法線等相關(guān)數(shù)據(jù)都可以放入緩沖區(qū)中,所以需要指定一個(gè)offset作為緩沖區(qū)對(duì)象中數(shù)據(jù)的偏移量.size為起始下標(biāo).data 指向更新的數(shù)據(jù).

另一種:

GLvoid * glMapBuffer(GLenum target,GLenum access);
target同上.access為訪問(wèn)數(shù)據(jù)的方式,可以為以下幾個(gè)值:GL_READ_ONLY,GL_WRITE,GL_READ_WRITE.
這個(gè)函數(shù)直接獲得一個(gè)指向被綁定緩沖區(qū)內(nèi)數(shù)據(jù)的指針,通過(guò)給值的方式讀寫緩沖區(qū)對(duì)象.在讀寫完畢之后調(diào)用GLboolean glUnmapBuffer(GLenum target);表示被綁定的緩沖區(qū)對(duì)象更新完成,并且可以釋放.

⑤清除緩沖區(qū)對(duì)象
void glDeleteBuffers(GLsizei n,const GLuint * buffers);
刪除n個(gè)緩沖區(qū)對(duì)象,由buffer表識(shí)符數(shù)組指定.
操作:

 1static const GLfloat g_vertex_buffer_data[] = {
 2   -0.5f-0.5f0.0f,
 3   0.5f-0.5f0.0f,
 4   0.0f,  0.5f0.0f,
 5}
;
 6
 7void myDispaly(){
 8    glClearColor(0.0f0.0f0.0f0.0f);
 9    glClear(GL_COLOR_BUFFER_BIT);
10      
11    // This will identify our vertex buffer
12    GLuint vertexbuffer;
13    // Generate 1 buffer, put the resulting identifier in vertexbuffer
14    glGenBuffers(1&vertexbuffer);
15    // The following commands will talk about our 'vertexbuffer' buffer
16    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
17    // Give our vertices to OpenGL
18    glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);
19    // 1rst attribute buffer : vertices
20    glEnableVertexAttribArray(0);
21    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
22    glVertexAttribPointer(
23                      0,                  // attribute 0. No particular reason for 0, but must match the layout in the shader.
24                      3,                  // size
25                      GL_FLOAT,           // type
26                      GL_FALSE,           // normalized?
27                      0,                  // stride
28                     (void*)0            // array buffer offset
29         
30                 );
31 
32    // Draw the triangle !
33    glDrawArrays(GL_TRIANGLES, 03); // Starting from vertex 0; 3 vertices total -> 1 triangle
34 
35    glDisableVertexAttribArray(0);
36    glutSwapBuffers();
37
38}


glDrawArrays,glDrawElements - [OpenGL]
 

posted on 2012-02-19 14:35 情絕格調(diào)(fresmaster) 閱讀(2192) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Graphics
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大片在线看免费观看| 亚洲欧美国产一区二区三区| 亚洲在线免费观看| 伊人久久综合97精品| 欧美一区二区三区免费观看视频| 黄色精品一区二区| 亚洲欧美日韩视频二区| 一本色道久久加勒比88综合| 久久中文在线| 欧美专区在线| 亚洲国产毛片完整版| 久久综合五月天婷婷伊人| 亚洲无吗在线| 亚洲欧洲日产国产综合网| 鲁大师影院一区二区三区| 久久久精品国产一区二区三区| 亚洲韩国日本中文字幕| 欧美高清在线视频观看不卡| 蜜桃久久av| 蜜臀av性久久久久蜜臀aⅴ| 欧美一区激情| 亚洲一区二区动漫| 亚洲欧美日韩一区二区在线| 亚洲综合色噜噜狠狠| 亚洲一区在线视频| 亚洲综合另类| 亚洲毛片在线观看| 亚洲国产精品va在线看黑人 | 国产精品久久久久久妇女6080| 久久精品人人做人人综合 | 欧美激情91| 欧美日韩第一页| 国产乱码精品一区二区三区五月婷| 激情欧美一区二区三区| 亚洲视频一区在线观看| 91久久嫩草影院一区二区| 国产亚洲精品一区二555| 国产精品入口麻豆原神| 国产在线精品一区二区夜色| 国产一区二区三区免费不卡| 国产欧美一区二区三区在线老狼| 狠狠色丁香久久婷婷综合丁香| 99精品热视频只有精品10| 亚洲欧美日韩成人| 欧美亚洲尤物久久| 久久久久亚洲综合| 女主播福利一区| 9色国产精品| 久久国产夜色精品鲁鲁99| 欧美日韩系列| 亚洲国产婷婷香蕉久久久久久99 | 久久精品一区蜜桃臀影院| 在线亚洲电影| 国产伦精品一区二区三区在线观看| 久久久亚洲成人| 国产精品一区二区在线观看| 亚洲视频第一页| 亚洲国产精品专区久久| 久久久久国产精品麻豆ai换脸| 亚洲欧美日韩中文在线制服| 欧美精品亚洲一区二区在线播放| 国内精品久久久久影院优| 亚洲欧洲日韩在线| 国产精品毛片a∨一区二区三区| 午夜精品在线| 久久这里有精品15一区二区三区| 亚洲国产视频一区| 一本色道久久综合亚洲精品不卡| 国产伦精品一区二区三区四区免费| 麻豆精品视频在线观看视频| 欧美日韩一区二区在线视频 | 亚洲精品一区二区三区四区高清 | 国产综合av| 久久久亚洲成人| 黄色成人小视频| 久久成人在线| 欧美一区二区三区视频在线| 欧美激情精品| 亚洲第一毛片| 亚洲欧洲日本在线| 免费视频一区二区三区在线观看| 久久综合免费视频影院| 国产日韩欧美二区| 欧美一区二区三区视频在线 | 亚洲日韩第九十九页| 欧美一区二区三区视频| 午夜精品久久久久久久99水蜜桃| 久久亚洲二区| 久久中文久久字幕| 国产精品久久久久久久久婷婷| 欧美成人免费大片| 狠狠色狠色综合曰曰| 亚洲欧美日韩精品综合在线观看 | 欧美午夜一区二区| 一区二区三区国产在线| 亚洲欧美日韩一区在线| 久久久久国产免费免费| 欧美v国产在线一区二区三区| 激情成人综合网| 亚洲欧美日韩天堂一区二区| 亚洲免费观看高清完整版在线观看| 亚洲一区二区三区在线观看视频 | 欧美日韩在线大尺度| 亚洲伊人第一页| 欧美黄色一区二区| 欧美激情第一页xxx| 欧美系列亚洲系列| 91久久久久久久久久久久久| 国内成人自拍视频| 欧美日韩在线播放一区| 久久福利毛片| 亚洲国产小视频在线观看| 亚洲美女福利视频网站| 亚洲美女电影在线| 久久只有精品| 久久精品视频亚洲| 国产欧美在线看| 羞羞色国产精品| 亚洲欧美日韩国产精品| 午夜日韩在线观看| 亚洲欧美久久久久一区二区三区| 老司机免费视频一区二区| 亚洲欧洲日本专区| 性亚洲最疯狂xxxx高清| 美脚丝袜一区二区三区在线观看 | 久久女同精品一区二区| 久久久精品欧美丰满| 欧美一区午夜精品| 亚洲欧美日本国产专区一区| 亚洲精品一区二| 蜜桃av综合| 亚洲在线播放电影| 1024成人| 欧美日韩激情网| 亚洲一区二区三区精品动漫| 久久aⅴ国产欧美74aaa| 久久久噜噜噜久噜久久| 国产欧美一区二区精品仙草咪| 欧美日本一区二区视频在线观看| 久久精品视频在线| 日韩视频在线观看国产| 国产欧美视频一区二区三区| 欧美国产视频日韩| 麻豆国产精品va在线观看不卡| 久久午夜色播影院免费高清| 欧美va亚洲va香蕉在线| 欧美综合二区| 欧美亚洲在线视频| 午夜久久tv| 亚洲影院色在线观看免费| 欧美电影在线观看| 国语自产精品视频在线看抢先版结局 | 亚洲高清在线视频| 精品999久久久| 国产日韩精品入口| 狠狠操狠狠色综合网| 国产午夜亚洲精品羞羞网站 | 一区二区三区国产在线观看| 日韩一级在线| 国产精品久久久久久久一区探花| 久久久久免费观看| 国产精品日本一区二区| 激情五月综合色婷婷一区二区| 国产欧美日韩不卡免费| 国产午夜精品一区二区三区视频| 欧美三级中文字幕在线观看| 亚洲一区视频| 亚洲天堂av在线免费| 欧美日韩在线高清| 国产日本欧美一区二区| 欧美日韩精品在线视频| 免费国产一区二区| 久久丁香综合五月国产三级网站| 亚洲国产精品久久久久久女王| 欧美一二三区在线观看| 国产精品综合久久久| 在线视频亚洲欧美| 日韩视频一区二区三区| 亚洲二区精品| 亚洲精品免费网站| 欧美sm视频| 亚洲电影成人| 久久亚洲国产精品日日av夜夜| 欧美日在线观看| 午夜在线精品偷拍| 在线观看一区二区精品视频| 久久免费国产精品1| 亚洲黄页视频免费观看| 老司机精品久久| 一区二区电影免费观看| 亚洲一区二区三区涩| 亚洲欧美日韩精品在线| 性欧美长视频| 性做久久久久久免费观看欧美| 久久精品国产免费看久久精品| 亚洲国产美女久久久久| 亚洲激情视频网| 午夜精品久久久久久久男人的天堂| 久久久人成影片一区二区三区观看| 久久精品官网|