日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图形学实验(1)--OpenGL 入门

發布時間:2024/1/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图形学实验(1)--OpenGL 入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • OpenGL vs2019環境配置
  • 實驗內容熟悉:顯示一個茶壺
  • 圖形的繪制和圖元的生成算法
    • 理解glut程序框架
    • 繪制基本圖形
    • 基本圖元生成程序框架(畫直線圓)
      • 問題與解決
      • 程序
    • 反走樣
    • 顯示字符
    • 不同屬性的點和線
    • 掃描填充算法

OpenGL vs2019環境配置

OpenGL vs2019環境配置
注意每次新開項目都要 在“項目”中,選擇“管理NuGet程序包”,并在瀏覽中搜索“nupengl",兩個都要安裝。

實驗內容熟悉:顯示一個茶壺

關于glNewList() OpenGL顯示列表
OpenGL glViewport()函數

#include <stdlib.h> #include <GL/glut.h>void init(); void display(); void reshape(GLsizei , GLsizei );int main(int argc, char** argv) {//初始化工具包glutInit(&argc, argv);//設置顯示模式//GLUT_SINGLE 設置為單緩存,一般是渲染一張圖片,如果是動畫的話就需要雙緩存//GLUT_RGB設置顏色模式//GLUT_DEPTH設置景深模式 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);//設置窗口屬性//設置窗口在屏幕上位置glutInitWindowPosition(0, 0);//設置窗口大小glutInitWindowSize(500, 500);//打開屏幕窗口glutCreateWindow("My first test");//調用繪圖函數,回調函數,不間斷監聽glutReshapeFunc(reshape);glutDisplayFunc(display);init();//必要的其他初始化函數glutMainLoop();//進入循環return 0; }//初始化函數 void init() {glEnable(GL_DEPTH_TEST);// 用來開啟更新深度緩沖區的功能,也就是,如果通過比較后深度值發生變化了,會進行更新深度緩沖區的操作。啟動它,OpenGL就可以跟蹤再Z軸上的像素,這樣,它只會再那個像素前方沒有東西時,才會繪畫這個像素。 在做繪畫3D時,這個功能最好啟動,視覺效果比較真實。//光照系統//設置一組位置信息,作為光源位置,前三個參數是xyz坐標,最后一個設為0是設定在無限遠處,1則在屏幕前GLfloat posistion[] = { 1.0,1.0,1.0,0.0 };//設置光源屬性 光照系統有8個光源,這里采用的是0號光源GL_LIGHT0//屬性光源位置 GL_POSITION(可以替換成別的屬性),傳入position;glLightfv(GL_LIGHT0, GL_POSITION, posistion);//這兩行相當于設置了一個太陽光//開啟光照模式glEnable(GL_LIGHTING);//開啟0號光源glEnable(GL_LIGHT0);//材質GLfloat ambient[] = { 0.0,0.0,0.0,1.0 };GLfloat diffuse[] = { 0.95,0.05,0.95,1.0 };GLfloat specular[] = { 1.0,1.0,1.0,1.0 };glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);//環境反射glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);//漫反射glMaterialfv(GL_FRONT, GL_SPECULAR, specular);//鏡面反射glMaterialf(GL_FRONT, GL_SHININESS, 50.0);//鏡面反射率,控制光斑大小}void display() {//glClearColor函數設置好清除顏色,即設定背景色glClearColor(0.75f, 0.75f, 0.75f, 1.0f);//glClear利用glClearColor函數設置好的當前清除顏色設置窗口顏色,即啟動背景色glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//你需要在glNewList()和glEndList()塊之間存儲OpenGL命令到顯示列表中來優先渲染。這個過程叫做編譯。glNewList()需要兩個參數,第一個參數是glGenLists()函數返回的索引值,第二個參數是指定模式:是只編譯還是編譯并執行,GL_COMPLILE,GL_COMPLILE_AND_EXECUTE。// 編譯一個顯示列表,存儲一個茶壺glNewList(1, GL_COMPILE);//繪制茶壺glutSolidTeapot(0.5);//void glutWireTeapot(GLdouble size);glEndList();//繪制顯示列表glCallList(1);//gLFlush()作用是將前面寫入緩沖區中的指令(無論是否為滿)立刻送給圖形硬件執行,發送完立即返回;glFlush();}void reshape(GLsizei w, GLsizei h) {//當更改窗口大小時,可使視口會進行相應變換glViewport(0, 0, w, h);//w ,h 在設置窗口大小的的時候會傳到這里//將3d坐標投影成2d坐標glMatrixMode(GL_PROJECTION);glLoadIdentity();//裁剪視口(x min,x max,y min,y max,z min,z max),默認茶壺是初始化在(0,0,0)glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);//將當前所選中的模型視圖矩陣置為單位矩陣,即拋棄之前的更改glMatrixMode(GL_MODELVIEW);glLoadIdentity();}

圖形的繪制和圖元的生成算法

理解glut程序框架

  • 繪制簡單圖形
#include <GL/glut.h>void display();int main(int argc ,char* argv[]) {//初始化工具包glutInit(&argc, argv);//設置顯示模式glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//設置窗口屬性glutInitWindowPosition(100, 100);glutInitWindowSize(400, 400);glutCreateWindow("1812030065 李詩雨");//調用繪圖函數glutDisplayFunc(display);//進入循環glutMainLoop();return 0; }void display() {//設定背景色,并把背景色設置為窗口顏色glClearColor(0.0, 0.0, 0.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);//繪制圖元glColor3f(1.0f, 1.0f, 1.0f);//選取一個顏色,3個參數3f,RGBglRectf(-0.5f, -0.5f, 0.5f, 0.5f);//用前面設定好的顏色繪制一個矩形,用的是斜率>0的對角線的頂點坐標//不裁剪窗口的話,屏幕的坐標位于窗口中心,0.5指占百分比,從坐標中心到窗口邊界的距離百分比為1//繪制三角形glBegin(GL_TRIANGLES);glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0.0f, 1.0f);glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(-0.8f, -0.5f);glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(0.8f, -0.5f);glEnd();//繪制點glPointSize(3);//設置點的大小,范圍是1-20,超過范圍按極值處理glBegin(GL_POINTS);glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(-0.4f, -0.4f);glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(0.0f, 0.0f);glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(0.4f, 0.4f);glEnd();//開始執行glFlush(); }


添加下面代碼
不知道為啥我算出來的那個值看起來少了?用0.25效果還行

//double n = 0.4 * pow(3, 0.5) - 0.5;double n = 0.25;//繪制直線glPointSize(3);//設置點的大小,范圍是1-20,超過范圍按極值處理glBegin(GL_LINES);glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(-0.4f, n);glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(0.4f, n);glEnd();glBegin(GL_LINES);glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(-0.4f, n);glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(0.0f, -0.5f);glEnd();glBegin(GL_LINES);glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(0.4f, n);glColor3f(1.0f, 1.0f, 1.0f); glVertex2f(0.0f, -0.5f);glEnd();


或者

//繪制直線glPointSize(3);//設置點的大小,范圍是1-20,超過范圍按極值處理glBegin(GL_LINE_LOOP);glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(-0.4f, n);glColor3f(0.0f, 1.0f, 0.0f); glVertex2f(0.4f, n);glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(0.0f, -0.5f);glEnd();

繪制封閉多邊形,只有線
改一下前面三角的顏色(好吧是我電腦色差的問題)

繪制基本圖形

多邊形的繪制要從凹點開始繪制

#include <GL/glut.h> void display();int main(int argc, char* argv[]) {//初始化工具包glutInit(&argc, argv);//設置顯示模式glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//設置窗口屬性glutInitWindowPosition(100, 100);glutInitWindowSize(400, 400);glutCreateWindow("1812030065 李詩雨");//調用繪圖函數glutDisplayFunc(display);//進入循環glutMainLoop();return 0; }void display() {//設定背景色,并把背景色設置為窗口顏色glClearColor(0.0, 0.0, 0.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);//繪制多邊形圖形//以凹點為起始開始繪制glBegin(GL_POLYGON);glColor3f(1.0f, 1.0f, 1.0f);glVertex2f(-0.22f, 0.0f);glVertex2f(-0.4f,0.3f);glVertex2f(-0.1f, 0.3f);glVertex2f(0.0f, 0.5f);glVertex2f(0.1f, 0.3);glVertex2f(0.4f, 0.3);glVertex2f(0.22f, 0.0f);glVertex2f(0.4f, -0.3);glVertex2f(0.1f, -0.3);glVertex2f(0.0f, -0.5f);glVertex2f(-0.1f, -0.3);glVertex2f(-0.4f, -0.3f);glEnd();//開始執行glFlush(); }

  • 添加顏色
#include <GL/glut.h> void display();int main(int argc, char* argv[]) {//初始化工具包glutInit(&argc, argv);//設置顯示模式glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);//設置窗口屬性glutInitWindowPosition(100, 100);glutInitWindowSize(400, 400);glutCreateWindow("1812030065 李詩雨");//調用繪圖函數glutDisplayFunc(display);//進入循環glutMainLoop();return 0; }void display() {//設定背景色,并把背景色設置為窗口顏色glClearColor(0.0, 0.0, 0.0, 0.0);glClear(GL_COLOR_BUFFER_BIT);//繪制填色多邊形圖形glBegin(GL_POLYGON);//先畫中間的點glColor3ub(255, 255, 255); glVertex2f(0.0f, 0.0f);//以凹點為起始開始繪制glColor3ub(0,0,255);glVertex2f(-0.22f, 0.0f);glColor3ub(255,255,0);glVertex2f(-0.4f, 0.3f);glColor3ub(255,97,0 );glVertex2f(-0.1f, 0.3f);glColor3ub(176,224,230);glVertex2f(0.0f, 0.5f);glColor3ub(255,97,0 );glVertex2f(0.1f, 0.3);glColor3ub(0,255,0 );glVertex2f(0.4f, 0.3);glColor3ub(34,139,34 );glVertex2f(0.22f, 0.0f);glColor3ub(139,252,201);glVertex2f(0.4f, -0.3);glColor3ub(135, 38, 37);glVertex2f(0.1f, -0.3);glColor3ub(255,0,0);glVertex2f(0.0f, -0.5f);glColor3ub(240,230,140 );glVertex2f(-0.1f, -0.3);glColor3ub(0,0,255);glVertex2f(-0.4f, -0.3f);//回到起始點glColor3ub(0, 0, 255); glVertex2f(-0.22f, 0.0f);glEnd();/*glBegin(GL_POINT);glEnd();*///開始執行glutSwapBuffers(); }


哈哈哈哈好丑

  • 問題:實驗要求填色用雙緩存區,我用了之后窗口變成白色
    解決:雙緩存 用glutSwapBuffers();代替glFlush,這個函數的作用是交換兩個緩沖區的內容,并把隱藏的渲染好的顯示出來。

基本圖元生成程序框架(畫直線圓)

唉把這個寫完是真的不容易
很多原本第一次看都難哭的東西,都看幾遍至少都能看懂了,重要是耐心。

問題與解決

char key 這個不能用switch 用了之后,雖然沒有報錯但是這段代碼以下都不能自動提示了。未弄清原因

void Keyboard(unsigned char key, int x, int y) {switch (key){case'1': m_drawmode = 1; break;case'2': m_drawmode = 2; break;case'3': m_drawmode = 3; break;case'4': m_drawmode = 4; break;case'5': m_drawmode = 5; break;default:break;}m_pointnumber = 0;}

這個n控制,真沒看懂怎么回事,設置斷點調試的時候跟直接運行結果不一樣。具體可能是框架的原因吧,暫時先放這里。

//對畫線動畫進行控制if (n == 1){cout << "DDA算法:各點坐標\n";}else if(n==0){return;}

還有這個也很迷,就是直線還挺好理解,放到圓那邊就稍微有點暈,弄錯了會出現一直閃的效果。

//繪制到比上一幀多一個像素點if (i >= n-1) {cout <<"n="<<n<< ", x=" << x << ", y=" << y << ", 取整后 x="<< (int)(x + 0.5) << ", y=" << (int)(y + 0.5) << endl << endl;break;}

程序

#include <windows.h> #include <gl/glut.h> #include <iostream> using namespace std; int m_pointnumber = 0;//動畫時繪制點的數目 int m_drawmode = 1;//繪制模式 // 1 DDA算法畫直線 // 2 中點Bresenham算法畫直線 // 3 改進Bresenham算法畫直線 // 4 八分法繪制圓 // 5 四分法繪制橢圓(選作)//初始化窗口 void initial(); //窗口大小改變時調用的登記函數 void ChangeSize(GLsizei w, GLsizei h); //設置鍵盤回調函數 void Keyboard(unsigned char key, int x, int y); //設置時間回調函數 void TimerFunc(int value); //在窗口中繪制圖形 void Redraw(); //繪制坐標線 void DrawCordinateLine(); //繪制一個點,這里用一個正方形代表一個點 void PutPixel(GLsizei x, GLsizei y); //參數說明:x0,y0 起始點 // x1,y1 終止點 // n 掃描轉換時從起點開始輸出的點的數目,用于動畫 // 1 DDA算法畫直線 void DDACreatLine(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei n); // 2 中點Bresenham算法畫直線 void BresenhamLine(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei n); // 3 改進Bresenham算法畫直線 void Bresenham2Line(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei n); //參數說明:x0,y0 圓心坐標 // r 半徑 // n 掃描轉換時從起點開始輸出的點的數目,用于動畫 // 4 八分法繪制圓 void BresenhamCircle(GLsizei x0, GLsizei y0, GLsizei r, GLsizei n); // 5 四分法繪制橢圓(選作) //參數說明:x0,y0 圓心坐標 // a b 長半軸為a 短半軸為b // n 掃描轉換時從起點開始輸出的點的數目,用于動畫 void BresenhamEllipse(GLsizei x0, GLsizei y0, GLsizei a, GLsizei b, GLsizei n);int main(int argc, char* argv[]) {//初始化工具包glutInit(&argc, argv);//初始化顯示模式和窗口屬性glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);glutInitWindowPosition(100, 100);glutInitWindowSize(600, 600);glutCreateWindow("1812030065李詩雨 基本圖元繪制程序");glutDisplayFunc(Redraw);glutReshapeFunc(ChangeSize);glutKeyboardFunc(Keyboard);//鍵盤響應回調函數glutTimerFunc(100, TimerFunc, 1);//窗口初始化initial();glutMainLoop();//啟動主glut事件處理循環return 0;}void initial() {//設置清除色,并設置窗口背景色glClearColor(1.0f, 1.0f, 1.0f, 1.0f);glClear(GL_COLOR_BUFFER_BIT); }void ChangeSize(GLsizei w, GLsizei h) {if (h == 0) h = 1;//設置視區glViewport(0, 0, w, h);//重置坐標系統glMatrixMode(GL_PROJECTION_MATRIX);glLoadIdentity();//建立修剪空間的范圍if (w <= h)glOrtho(0.0f, 250.0f, 0.0f, 250.0f * h / w, 1.0f, -1.0f);elseglOrtho(0.0f, 250.0f * w / h, 0.0f, 250.0f, 1.0f, -1.0f); }void Keyboard(unsigned char key, int x, int y) {if (key == '1') m_drawmode = 1;if (key == '2') m_drawmode = 2;if (key == '3') m_drawmode = 3;if (key == '4') m_drawmode = 4;if (key == '5') m_drawmode = 5;m_pointnumber = 0;cout << "nm_pointer 恢復為 0" << endl;glutPostRedisplay(); }void TimerFunc(int value) {if (m_pointnumber == 0) value = 1;m_pointnumber = value;//用現有的參數重新繪圖(即動畫中新的一幀)glutPostRedisplay();//注意,該函數與其他的回調函數不一樣的地方在于該函數只會被激發一次。為了實現連//續的動畫,必須在定時器函數中再次重新設置定時器回調函數。glutTimerFunc(50, TimerFunc, value + 1); }void Redraw() {//用當前背景色填充窗口glClear(GL_COLOR_BUFFER_BIT);//畫坐標線DrawCordinateLine();switch (m_drawmode){case 1:DDACreatLine(0, 0, 20, 15, m_pointnumber); break;case 2:BresenhamLine(0, 20, 16, 0, m_pointnumber); break;case 3:Bresenham2Line(0, 20, 10, 0, m_pointnumber); break;case 4:BresenhamCircle(10,10,10, m_pointnumber); break;case 5:BresenhamEllipse(10, 10, 8 , 4, m_pointnumber); break;default:break;}glutSwapBuffers(); }void DrawCordinateLine() {glColor3f(0.0f, 0.0f, 0.0f);//坐標線為黑色glBegin(GL_LINES);for (int i = 10; i <= 250; i += 10) {glVertex2f((float)i, 0.0f);glVertex2f((float)i, 250.0f);glVertex2f(0.0f, (float)i);glVertex2f(250.0f, (float)i);}glEnd(); }void PutPixel(GLsizei x, GLsizei y) {//繪制矩形所在的坐標?glRectf(x * 10, y * 10, x * 10 + 10, y * 10 + 10); }void DDACreatLine(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei n) {//設置顏色glColor3f(1.0f, 0.0f, 0.0f);//對畫線動畫進行控制if (n == 1){cout << "DDA算法:各點坐標\n";}else if(n==0){return;}//畫線算法實現GLsizei dx, dy, epsl, i;GLfloat x, y, xincre, yincre;dx = x1 - x0;dy = y1 - y0;x = x0; y = y0;//通過epsl可以通過斜率絕對值確定是x還是y每次自增1if (abs(dx) > abs(dy)) epsl = abs(dx);else epsl = abs(dy);//x y 的增量 例如 xincre=1,yincre=kxincre = (float)dx / epsl;yincre = (float)dy / epsl;//epsl 的值是dx或dy(epsl+1)就決定了要畫像素的數目for (i = 0; i <= epsl; i++) {PutPixel((int)(x + 0.5), (int)(y + 0.5));//繪制到比上一幀多一個像素點if (i >= n-1) {cout <<"n="<<n<< ", x=" << x << ", y=" << y << ", 取整后 x="<< (int)(x + 0.5) << ", y=" << (int)(y + 0.5) << endl << endl;break;}x += xincre;y += yincre;//超出窗口坐標if (x >= 25 || y >= 25) break;} }void BresenhamLine(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei n) {//設置顏色glColor3f(1.0f, 0.0f, 0.0f);if (n == 1){cout << "中點BresenhamLine算法:各點坐標及判別式的值\n";}else if (n == 0) {return;}//畫線算法實現GLsizei dx, dy;GLfloat x, y, d,xincre,yincre;dx = x1 - x0;dy = y1 - y0;x = x0; y = y0;//x y 的增量 xincre = (float)dx / abs(dx);yincre = (float)dy / abs(dy);//x還是y每次自增1 畫線參數不同 d = dx - 2 * min(abs(dx), abs(dy));//max(abs(dx), abs(dy)))就決定了要畫像素的數目for (int i = 0; i <= max(abs(dx), abs(dy)); i++) {PutPixel(x, y); if (d < 0) {//取Puif (max(abs(dx), abs(dy)) == abs(dx)) {y += yincre;}else {x += xincre;}d = d + 2 * max(abs(dx), abs(dy)) - 2 * min(abs(dx), abs(dy));}else {//取pdd = d - 2 * min(abs(dx), abs(dy));}if (max(abs(dx), abs(dy)) == abs(dx)) {x += xincre;}else {y += yincre;}//繪制到比上一幀多一個像素點if (i >= n - 1) {cout << "n=" << n << ", x=" << x << ", y=" << y << ", 判別式 d="<< d << endl << endl;break;}//超出窗口坐標if (x >= 25 || y >= 25) break;} }void Bresenham2Line(GLsizei x0, GLsizei y0, GLsizei x1, GLsizei y1, GLsizei n) {//設置顏色glColor3f(1.0f, 0.0f, 0.0f);if (n == 1){cout << "BresenhamLine算法:各點坐標及判別式的值\n";}else if (n == 0) {return;}//畫線算法實現GLsizei dx, dy;GLfloat x, y, e, xincre, yincre;dx = x1 - x0;dy = y1 - y0;x = x0; y = y0;//x y 的增量 xincre = (float)dx / abs(dx);yincre = (float)dy / abs(dy);//x還是y每次自增1 和 相關參數 取決于 dx 和 dy 的絕對值大小 e = -max(abs(dx), abs(dy));for (int i = 0; i <= max(abs(dx), abs(dy)); i++) {PutPixel(x, y);e += 2 * min(abs(dx), abs(dy));//這個判別式 是距離 都是正的if (e > 0) {e -= 2 * max(abs(dx), abs(dy));if (max(abs(dx), abs(dy)) == abs(dx)) {y += yincre;}else {x += xincre;}}if (max(abs(dx), abs(dy)) == abs(dx)) {x += xincre;}else {y += yincre;}//繪制到比上一幀多一個像素點if (i >= n) {cout << "n=" << n << ", x=" << x << ", y=" << y << ". 判別式 e="<< e << endl << endl;break;}//超出窗口坐標if (x >= 25 || y >= 25) break;} }void BresenhamCircle(GLsizei x0, GLsizei y0, GLsizei r, GLsizei n) {//設置顏色glColor3f(1.0f, 0.0f, 0.0f);if (n == 1){cout << "BresenhamLine算法畫圓:各點坐標及判別式的值\n";}else if(n==0) {return;}GLsizei x, y, d, count;count = 0;x = 0; y = r; d = 1 - r;while ( x<=y){PutPixel(x0 + x, y0 + y); PutPixel(x0 + y, y0 + x);PutPixel(x0 - y, y0 + x); PutPixel(x0 - x, y0 + y);PutPixel(x0 - x, y0 - y); PutPixel(x0 - y, y0 - x);PutPixel(x0 + y, y0 - x); PutPixel(x0 + x, y0 - y);count++;if (count >= n) {cout << "n=" << n << ", x=" << x << ", y=" << y << ". 判別式 d="<< d << endl << endl;break;}if (d < 0) {d += 2 * x + 3;}else {d += 2 * (x - y) + 5;y--;}x++; //超出窗口坐標if (x >= 25 || y >= 25) break;}}void BresenhamEllipse(GLsizei x0, GLsizei y0, GLsizei a, GLsizei b, GLsizei n) {//設置顏色glColor3f(1.0f, 0.0f, 0.0f);if (n == 1){cout << "BresenhamLine算法畫橢圓:各點坐標及判別式的值\n";}else if (n == 0) {return;}GLsizei x, y, count;GLfloat d1, d2;x = 0; y = b; count = 0;d1 = b * b + a * a * (-b + 0.25);while (b * b * (x + 1) <= a * a * (y - 0.5)){PutPixel(x0 + x, y0 + y); PutPixel(x0 - x, y0 - y);PutPixel(x0 - x, y0 + y); PutPixel(x0 + x, y0 - y);count++;if (count >= n) {cout << "n=" << n << ", x=" << x << ", y=" << y << ". 判別式 d1="<< d1 << endl << endl;break;}if (d1 <= 0) {d1 += b * b * (2 * x + 3);x++;}else{d1 += b * b * (2 * x + 3) + a * a * (-2 * y + 2);x++; y--;}//超出窗口坐標if (x >= 25 || y >= 25) break; }if (b * b * (x + 1) >= a * a * (y - 0.5)) {d2 = b * b * (x + 0.5) * (x + 0.5) + a * a * (y - 1) * (y - 1) - a * a * b * b;while (y >= 0){PutPixel(x0 + x, y0 + y); PutPixel(x0 - x, y0 - y);PutPixel(x0 - x, y0 + y); PutPixel(x0 + x, y0 - y);count++;if (count >= n) {cout << "n=" << n << ", x=" << x << ", y=" << y << ". 判別式 d2="<< d2 << endl << endl;break;}if (d2 <= 0){d2 += b * b * (2 * x + 2) + a * a * (-2 * x + 3);x++; y--;}else {d2 += a * a * (-2 * x + 3);y--;}//超出窗口坐標if (x >= 25 || y >= 25) break;}}}




反走樣

原來 changesize的函數不是通用啊。。。。

#include <windows.h> #include <gl/glut.h> #include <iostream> using namespace std; //指定顯示列表 GLuint lineList; //初始化窗口 void initial(); //窗口大小改變時調用的登記函數 void ChangeSize(GLsizei w, GLsizei h);void Displayt(); void Displayw();int main(int argc, char* argv[]) {//初始化工具包glutInit(&argc, argv);//初始化顯示模式和窗口屬性glutInitDisplayMode(GLUT_SINGLE| GLUT_RGB);glutInitWindowSize(600, 600);glutCreateWindow("1812030065李詩雨 原始圖形");glutDisplayFunc(Displayt);glutReshapeFunc(ChangeSize);//窗口初始化initial();glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition(300, 300);glutInitWindowSize(600, 600);glutCreateWindow("1812030065李詩雨 反走樣圖形");glutDisplayFunc(Displayw);glutReshapeFunc(ChangeSize);//窗口初始化initial();glutMainLoop();//啟動主glut事件處理循環return 0;}void initial() {//設置清除色,并設置窗口背景色glClearColor(1.0f, 1.0f, 1.0f, 0.0f);glLineWidth(12.0f);glColor4f(0.0, 0.6, 1.0, 1.0);lineList = glGenLists(1);//定義顯示列表glNewList(lineList, GL_COMPILE);glBegin(GL_LINE_LOOP);glVertex2f(1.0f, 1.0f);glVertex2f(4.0f, 2.0f);glVertex2f(2.0f, 5.0f);glEnd();glEndList(); }void ChangeSize(GLsizei w, GLsizei h) {if (h == 0) h = 1;//設置視區glViewport(0, 0, w, h);//重置坐標系統glMatrixMode(GL_PROJECTION);glLoadIdentity();//建立修剪空間的范圍if (w <= h)gluOrtho2D(0.0, 5.0, 0.0, 6.0 *(GLfloat) h / (GLfloat)w);elsegluOrtho2D(0.0, 5.0 * (GLfloat)w / (GLfloat)h, 0.0, 6.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity(); }void Displayt() {glClear(GL_COLOR_BUFFER_BIT);glCallList(lineList);glFlush(); }void Displayw() {glClear(GL_COLOR_BUFFER_BIT);glEnable(GL_LINE_SMOOTH);//使用反走樣glEnable(GL_BLEND);//使用混合函數glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);//指定混合函數glCallList(lineList);glFlush(); }

顯示字符

#include <windows.h> #include <gl/glut.h> #include <iostream> using namespace std; void Display(); void ChangeSize(GLsizei w, GLsizei h); void output(int x,int y,const char *string); int main(int argc, char* argv[]) {//初始化工具包glutInit(&argc, argv);//初始化顯示模式和窗口屬性glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(600, 600);glutCreateWindow("1812030065李詩雨 字符顯示");glutDisplayFunc(Display);glutReshapeFunc(ChangeSize);//窗口初始化//initial();glutMainLoop();//啟動主glut事件處理循環return 0;}void ChangeSize(GLsizei w, GLsizei h) {glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, w, 0.0, h); }void output(int x, int y, const char* string) {int len, i;glRasterPos2f(x, y);len = (int)strlen(string);for (int i = 0; i < len; i++) {glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, string[i]);} }void Display() {//設置清除色,并設置窗口背景色glClearColor(1.0f, 1.0f, 1.0f, 0.0f);glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0f, 0.0f, 0.0f);output(100, 100, "hello!");glFlush(); }

不同屬性的點和線

#include <windows.h> #include <gl/glut.h> #include <iostream> using namespace std; int winWidth = 400, winHeight = 300; //窗口的寬度和高度 void myDisplay(void); void ChangeSize(int w, int h);int main(int argc, char* argv[]) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 100);glutInitWindowSize(400, 300);glutCreateWindow("1812030065 李詩雨");glutDisplayFunc(myDisplay);glutReshapeFunc(ChangeSize);glutMainLoop();return 0; } void myDisplay(void) {glClearColor(1.0f, 1.0f, 1.0f, 1.0f);glClear(GL_COLOR_BUFFER_BIT); //用當前背景色填充窗口glColor3f(0.0f, 0.0f, 0.0f); //設置當前的繪圖繪圖RGB顏色//繪制不同大小的點GLfloat sizes[2]; //保存繪制點的尺寸范圍GLfloat step = 0.125; //保存繪制點尺寸的步長GLfloat curSize; //當前繪制的點的大小glGetFloatv(GL_POINT_SIZE_RANGE, sizes);curSize = sizes[0];for (int i = 0; i < 25; i++){glPointSize(curSize);glBegin(GL_POINTS);glVertex3f(25.0 + i * 8, 200.0, 0.0);glEnd();curSize += step * 2;}//繪制一條寬度為5的直線glLineWidth(5);glBegin(GL_LINES);glVertex3f(25.0, 160.0, 0.0);glVertex3f(225.0, 160.0, 0.0);glEnd();//繪制一條虛線glEnable(GL_LINE_STIPPLE);glLineStipple(1, 0x00FF);glBegin(GL_LINES);glVertex3f(25.0, 120.0, 0.0);glVertex3f(225.0, 120.0, 0.0);glEnd();//繪制一條寬度為3的點劃線glLineWidth(3);glLineStipple(1, 0xFF0C);glBegin(GL_LINES);glVertex3f(25.0, 80.0, 0.0);glVertex3f(225.0, 80.0, 0.0);glEnd();//增加重復因子繪制的點劃線glLineStipple(4, 0xFF0C);glBegin(GL_LINES);glVertex3f(25.0, 40.0, 0.0);glVertex3f(225.0, 40.0, 0.0);glEnd();glDisable(GL_LINE_STIPPLE);glFlush(); //刷新OpenGL命令隊列 } void ChangeSize(int w, int h) {winWidth = w; winHeight = h;glViewport(0, 0, w, h); //指定窗口的顯示區域glMatrixMode(GL_PROJECTION); //設置投影參數glLoadIdentity();gluOrtho2D(0.0, winWidth, 0.0, winHeight); }

掃描填充算法

要在項目下新建一個輸入坐標的 polypoints.txt

#include <gl/glut.h> #include <iostream> #include <vector> #include <fstream> using namespace std;int Vertexs;typedef struct _EdgeItem {float x;int yMax;float reverseK; // 1/k_EdgeItem* next; }EdgeItem; vector<EdgeItem*> g_pItemVector;typedef struct _Point {int x;int y; }Point;typedef struct _EdgePtr {int nScanLine; // Current scan lineEdgeItem* pItem; // Pointer to edge item }EdgePtr;typedef struct _PolyPoints {Point* pPoint; // Pointer to pointsint n; // Number of pointsint yMax; // Max y of all pointsint yMin; // Min y of all points }PolyPoints;EdgePtr* g_pEdgeList; // Edge list EdgePtr* g_pActiveEdgeList; // Active edge list PolyPoints g_polyPoints; // Storage for points of polygonsifstream scin("polypoints.txt");void PutPixel(GLsizei x, GLsizei y) {glRectf(10 * x, 10 * y, 10 * x + 10, 10 * y + 10); }void inputPoints(void) {int n;scin >> n;Vertexs = n;if (n < 3){cout << "number of points can not be less than 3" << endl;exit(0);}g_polyPoints.n = n;g_polyPoints.pPoint = new Point[n];g_polyPoints.yMax = INT_MIN;g_polyPoints.yMin = INT_MAX;int x, y;for (int i = 0; i < n; ++i){scin >> x >> y;g_polyPoints.pPoint[i].x = x;g_polyPoints.pPoint[i].y = y;if (g_polyPoints.yMax < y){g_polyPoints.yMax = y;}if (g_polyPoints.yMin > y){g_polyPoints.yMin = y;}} } // Calculate the reverse of k float calculateReverseK(const Point& p1, const Point& p2) {return (float)(p2.x - p1.x) / (float)(p2.y - p1.y); }// Sort one scan line's list, first sort by x, if x is equal then sort by 1/k void sortOneScanLineEdgeList(EdgePtr& edgePtr) {// Sort by x (select sort)EdgeItem* pEdgeItem = edgePtr.pItem;EdgeItem* pNext;EdgeItem* pTmp;while (pEdgeItem){pNext = pEdgeItem->next;pTmp = pEdgeItem;while (pNext){if (pNext->x < pTmp->x){pTmp = pNext;}pNext = pNext->next;}if (pTmp != pEdgeItem){// Swap xfloat fTmp = pTmp->x;pTmp->x = pEdgeItem->x;pEdgeItem->x = fTmp;// Swap yMaxint iTmp = pTmp->yMax;pTmp->yMax = pEdgeItem->yMax;pEdgeItem->yMax = iTmp;// Swap 1/kfloat kTmp = pTmp->reverseK;pTmp->reverseK = pEdgeItem->reverseK;pEdgeItem->reverseK = kTmp;}pEdgeItem = pEdgeItem->next;}// When the x is the same, then sort by 1/kpEdgeItem = edgePtr.pItem;EdgeItem* pStart = NULL;EdgeItem* pEnd = NULL;while (pEdgeItem){// Find the start pointer and end pointer with the same x, then sort thempEnd = pStart = pEdgeItem;pNext = pStart->next;while (pNext && (pNext->x == pStart->x)){pEnd = pNext;pNext = pNext->next;}// Sort the edge list from pStart to pEnd by 1/k (select sort)while (pStart != pEnd){pTmp = pStart;pNext = pTmp->next;while (pNext != pEnd){if (pNext->reverseK < pTmp->reverseK){pTmp = pNext;}pNext = pNext->next;}// Swap valuesif (pTmp != pStart){// Swap xfloat fTmp = pTmp->x;pTmp->x = pStart->x;pStart->x = fTmp;// Swap yMaxint iTmp = pTmp->yMax;pTmp->yMax = pStart->yMax;pStart->yMax = iTmp;// Swap 1/kfloat kTmp = pTmp->reverseK;pTmp->reverseK = pStart->reverseK;pStart->reverseK = kTmp;}pStart = pStart->next;} // while (pStart != pEnd)pEdgeItem = pEnd->next;} } // Construct the edge list void constructEdgeList(void) {// Construct the edge listint nScanLines = g_polyPoints.yMax - g_polyPoints.yMin + 1;g_pEdgeList = new EdgePtr[nScanLines];memset(g_pEdgeList, 0, sizeof(EdgePtr) * nScanLines);Point* pPoint = g_polyPoints.pPoint;int nScanLine = g_polyPoints.yMin;EdgeItem* pEdgeItem = NULL;for (int i = 0; i < nScanLines; ++i, ++nScanLine) //對每一個掃描線 nScanLine,將多邊形的較低頂點在 nScanLine上的邊,裝入邊表 g_pEdgeList 的 第 nScanLine 分量中{g_pEdgeList[i].nScanLine = nScanLine;for (int j = 0; j < g_polyPoints.n; ++j) //遍歷多邊形的頂點,找到滿足條件的邊{if (pPoint[j].y == nScanLine){int j1 = (j + g_polyPoints.n - 1) % g_polyPoints.n;int j2 = (j + 1) % g_polyPoints.n;// if point j1's y > nScanLine then add this edge to the current scanline's listif (pPoint[j1].y > nScanLine){pEdgeItem = new EdgeItem;pEdgeItem->reverseK = calculateReverseK(pPoint[j], pPoint[j1]);pEdgeItem->x = (float)pPoint[j].x;pEdgeItem->yMax = pPoint[j1].y;// Add pEdgeItem to the scanline's listpEdgeItem->next = g_pEdgeList[i].pItem;g_pEdgeList[i].pItem = pEdgeItem;}// if point j2's y > nScanLine then add this edge to the curretn scanline's listif (pPoint[j2].y > nScanLine){pEdgeItem = new EdgeItem;pEdgeItem->reverseK = calculateReverseK(pPoint[j], pPoint[j2]);pEdgeItem->x = (float)pPoint[j].x;pEdgeItem->yMax = pPoint[j2].y;// Add pEdgeItem to the scanline's listpEdgeItem->next = g_pEdgeList[i].pItem;g_pEdgeList[i].pItem = pEdgeItem;}} // if (pPoints[j].y == nScanLine)} // for (int j = 0; j < g_polyPoints.n; ++j)sortOneScanLineEdgeList(g_pEdgeList[i]);}// Init the active edge listg_pActiveEdgeList = new EdgePtr[nScanLines]; } // free the memory void destroy(void) {if (g_pActiveEdgeList){delete g_pActiveEdgeList;}int nScanLines = g_polyPoints.yMax - g_polyPoints.yMin + 1;EdgeItem* pItem, * pNext;if (g_pEdgeList){for (int i = 0; i < nScanLines; ++i){if (g_pEdgeList[i].pItem){pItem = g_pEdgeList[i].pItem;pNext = pItem;while (pItem){pNext = pItem->next;delete pItem;pItem = pNext;}}}} } void init(void) {glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }void activEdgeListFillPolygon(void) {int nScanLines = g_polyPoints.yMax - g_polyPoints.yMin + 1;memset(g_pActiveEdgeList, 0, sizeof(EdgePtr) * nScanLines);int nScanLine = g_polyPoints.yMin;int i;for (i = 0; i < nScanLines; ++nScanLine, ++i) //找到第一個非空活動邊表 g_pActiveEdgeList[i].pItem{if (g_pEdgeList[i].pItem){g_pActiveEdgeList[i].pItem = g_pEdgeList[i].pItem;break;}}for (int j = i; j < nScanLines; ++j, ++nScanLine){if (g_pActiveEdgeList[j].pItem){// Delete the edge where yMax = nScanLine //填充之前先刪除ymax=y(當前掃描線)的邊結點EdgeItem* pPre = NULL;EdgeItem* pNext = g_pActiveEdgeList[j].pItem;bool bEven = true;while (pNext){if (pNext->yMax == nScanLine){if (!pPre){g_pActiveEdgeList[j].pItem = pNext->next;pNext = pNext->next;}else{pPre->next = pNext->next;pNext = pNext->next;}}else{bEven = !bEven;pPre = pNext;pNext = pNext->next;}} // while (pNext)// Fill the scan line when bFill is truebool bFill = false;pNext = g_pActiveEdgeList[j].pItem; //對當前活動邊表 g_pActiveEdgeList[j].pItem 進行填充while (pNext && bEven){bFill = !bFill;if (bFill) //通過bFill控制填充區間的始點{int x1 = (int)(pNext->x + 0.5);int x2 = (int)(pNext->next->x + 0.5);for (int i = x1; i <= x2; ++i){PutPixel(i, nScanLine);}}pNext = pNext->next;} // while (pNext)pNext = g_pActiveEdgeList[j].pItem;int kk = j + 1;if (kk < nScanLines){while (pNext) //此循環將活動邊表 g_pActiveEdgeList[kk].pItem 每個結點的x變為x+1/k,修正后的結點順序正好倒序了{EdgeItem* pItem = new EdgeItem;pItem->x = pNext->x + pNext->reverseK;pItem->reverseK = pNext->reverseK;pItem->yMax = pNext->yMax;pItem->next = g_pActiveEdgeList[kk].pItem;g_pActiveEdgeList[kk].pItem = pItem;pNext = pNext->next;g_pItemVector.push_back(pItem);} // while (pNext)// Add edge list to active edge listpNext = g_pEdgeList[kk].pItem;EdgeItem* pTemp = NULL;while (pNext) //此循環將邊表 g_pEdgeList[kk].pItem 中第kk掃描線的邊結點信息倒序插在 活動邊表 g_pActiveEdgeList[kk].pItem 之前{pTemp = new EdgeItem;pTemp->reverseK = pNext->reverseK;pTemp->x = pNext->x;pTemp->yMax = pNext->yMax;g_pItemVector.push_back(pTemp);pTemp->next = g_pActiveEdgeList[kk].pItem;g_pActiveEdgeList[kk].pItem = pTemp;pNext = pNext->next;}sortOneScanLineEdgeList(g_pActiveEdgeList[kk]);}} // if (g_pActiveEdgeList[j].pItem)}//這里為了簡單所以把分配的內存放在vector容器中,方便刪除vector<EdgeItem*>::iterator itr = g_pItemVector.begin();vector<EdgeItem*>::iterator endItr = g_pItemVector.end();while (itr != endItr){delete (*itr);++itr;}g_pItemVector.clear(); }//繪制坐標線 void DrawCordinateLine(void) {int i = 0;//坐標線為黑色glColor3f(0.0f, 0.0f, 0.0f);glBegin(GL_LINES);for (i = 10; i <= 250; i = i + 10){glVertex2f((float)(i), 0.0f);glVertex2f((float)(i), 250.0f);glVertex2f(0.0f, (float)(i));glVertex2f(250.0f, (float)(i));}glEnd(); }void DrawPolygonLine(void) {glColor3f(0.0f, 1.0f, 0.0f);glBegin(GL_LINE_LOOP);for (int i = 0; i < Vertexs; ++i){glVertex2i(10 * g_polyPoints.pPoint[i].x, 10 * g_polyPoints.pPoint[i].y);}glEnd();} //繪制一個點,這里用一個正方形表示一個點。 void display(void) {glClear(GL_COLOR_BUFFER_BIT);//畫出坐標線DrawCordinateLine();// Fill a polygonglColor3f(1.0f, 0.0f, 0.0f);activEdgeListFillPolygon();DrawPolygonLine();glutSwapBuffers(); }void reshape(GLsizei w, GLsizei h) {if (h == 0)h = 1;// 設置視區尺寸glViewport(0, 0, w, h);// 重置坐標系統glMatrixMode(GL_PROJECTION);glLoadIdentity();//建立修剪空間的范圍if (w <= h)glOrtho(0.0f, 250.0f, 0.0f, 250.0f * h / w, 1.0, -1.0);elseglOrtho(0.0f, 250.0f * w / h, 0.0f, 250.0f, 1.0, -1.0); } void keyboard(unsigned char key, int x, int y) {switch (key){case 27: // 'VK_ESCAPE' destroy ();      exit (0);break;default:break;} } int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);glutInitWindowSize(600, 600);glutInitWindowPosition(100, 100);glutCreateWindow("1812030065 李詩雨 Optimized active edge list");init();inputPoints();constructEdgeList();glutDisplayFunc(display);glutReshapeFunc(reshape);glutKeyboardFunc(keyboard);glutMainLoop();destroy();return 0; }

總結

以上是生活随笔為你收集整理的图形学实验(1)--OpenGL 入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品久久久久999 | 国产精品九九九九九 | 五月婷婷国产 | 在线视频电影 | 福利二区视频 | 99视频国产精品 | av黄色免费看 | 国产成人高清在线 | 五月婷婷毛片 | 欧洲一区二区三区精品 | 中文字幕一区二区三区在线播放 | 黄网站色视频免费观看 | 超碰97在线人人 | 国产精品国产三级国产aⅴ入口 | 成人av免费看 | 美女黄视频免费看 | 久久免费视频这里只有精品 | 亚洲欧美精品一区 | 在线视频日韩欧美 | 99视频国产在线 | 香蕉久草 | 97精品国产91久久久久久久 | 国产1区在线 | 超碰人人草人人 | 欧美9999| 久久永久免费 | 91人人澡人人爽 | 97超碰免费在线 | 亚洲在线高清 | 久久精品99国产国产 | 亚洲理论在线观看 | 国产亚洲精品久久久久久网站 | 国产一区视频在线 | 日韩免费视频线观看 | 亚洲午夜久久久综合37日本 | 久久艹人人 | 激情网站五月天 | 久草 | 色香网| 成人av网页 | 久久久久成人精品亚洲国产 | 国产黄色片一级三级 | 国产一区二区在线免费观看 | 日韩二区三区在线观看 | 国产成人综合在线观看 | 深爱综合网 | 最近日本韩国中文字幕 | 夜夜夜夜夜夜操 | 超级av在线| 亚洲日日射 | 久草精品视频 | 中文字幕精品一区久久久久 | 爱情影院aqdy鲁丝片二区 | 狠狠色狠狠色终合网 | 韩日精品视频 | av黄色在线 | 91pony九色丨交换 | av品善网| 日本aaa在线观看 | 在线观av | 亚洲欧美日韩不卡 | 色综合天天综合网国产成人网 | www在线观看国产 | www.激情五月.com | 免费av片在线 | 亚洲人av免费网站 | 99精品成人| 久草在线费播放视频 | 99久久精品无免国产免费 | 久久久久一区二区三区 | 黄网站a| 中文字幕亚洲不卡 | 久久官网 | 国产福利91精品一区 | 国产精品99久久久精品免费观看 | 色黄久久久久久 | 欧美日韩亚洲在线观看 | 91最新在线观看 | 亚洲视频每日更新 | 国产精品激情偷乱一区二区∴ | 久久这里只有精品视频99 | 亚洲精品乱码久久久久久蜜桃欧美 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 麻豆精品传媒视频 | 激情五月看片 | 亚洲天堂色婷婷 | 日韩av看片 | 婷婷在线不卡 | 中文字幕网址 | 亚洲网久久 | 国产精品美女毛片真酒店 | 不卡的av | 麻豆国产精品一区二区三区 | 亚洲欧洲av| 在线91播放 | 国产最新视频在线观看 | 国产精品久久久久一区二区国产 | 天天操天天插 | 国产成人精品日本亚洲999 | 999在线精品 | 色综合天天天天做夜夜夜夜做 | 中文字幕色婷婷在线视频 | 四川妇女搡bbbb搡bbbb搡 | 国产一区欧美二区 | 在线免费观看黄色小说 | 精品女同一区二区三区在线观看 | 欧美激情精品久久久久久免费 | 黄色午夜网站 | 亚洲视频大全 | 国产亚洲情侣一区二区无 | 在线成人小视频 | 欧美色道| 亚洲午夜精品在线观看 | 综合影视| 久久99深爱久久99精品 | 久久久久97国产 | 中文字幕在线看片 | 成年人在线观看视频免费 | 人人插人人插 | 亚洲国产三级 | 国产 成人 久久 | 国产精品成人久久 | 夜添久久精品亚洲国产精品 | 日日干天夜夜 | 狠狠久久综合 | 视频在线99 | 成人免费网视频 | 久久情网 | 黄色毛片在线观看 | av丝袜在线 | 日本久久成人 | 国产一区高清在线观看 | 国产精品免费久久久久 | 少妇精品久久久一区二区免费 | 天天爱天天操 | 久草在线一免费新视频 | 成人午夜电影网 | 亚洲国产美女精品久久久久∴ | 亚洲精品乱码久久久久久 | 在线播放一区二区三区 | 99爱爱| 四川bbb搡bbb爽爽视频 | av在线电影免费观看 | 青青啪 | 欧美日韩国产综合网 | 久久九九精品 | 操操操综合 | 又黄又爽免费视频 | 欧美日韩aa | 丁香花中文字幕 | 超级碰碰碰免费视频 | 美女黄频在线观看 | 欧美久久久久久久久久 | 91在线视频一区 | 亚州精品一二三区 | 樱空桃av | 天天爽网站 | 免费视频久久久 | 伊人伊成久久人综合网小说 | 五月婷婷视频在线观看 | 久久高清视频免费 | japanesexxxhd奶水 国产一区二区在线免费观看 | 天天干干 | 欧美极品少妇xxxx | 久久久久久久久久久影院 | 欧美日韩久久 | 久久区二区| 日韩欧美综合精品 | 91在线看片 | 99热精品国产 | 久久久久久综合 | 日韩免费一区 | www.黄色片.com| 伊人宗合| av黄色在线观看 | 最新av中文字幕 | 久久试看 | 欧美精品国产综合久久 | 婷婷综合五月天 | 国产一卡在线 | 六月色| 天堂在线成人 | 欧美日本一区 | 国产中文字幕久久 | 在线观看黄色大片 | 西西人体4444www高清视频 | 久久综合之合合综合久久 | 久久久久久久电影 | 在线av资源| 免费视频黄色 | 香蕉久草在线 | 久久电影网站中文字幕 | 成人永久视频 | 欧美日韩精品综合 | 丁香导航| 免费日韩电影 | 夜夜爽88888免费视频4848 | 69视频网站 | 男女视频久久久 | 中文字幕在线视频一区二区 | 精品成人国产 | 亚洲精品毛片一级91精品 | 久久香蕉电影 | 久久久久久毛片 | 96久久久 | 色综合咪咪久久网 | 91在线视频在线观看 | 亚洲美女免费精品视频在线观看 | 久久久久免费精品国产 | 精品国产乱码久久久久久久 | 精品夜夜嗨av一区二区三区 | 国产日韩精品久久 | 久草网首页 | 91麻豆精品91久久久久同性 | 日韩两性视频 | 色 免费观看 | 亚洲粉嫩av | 特级黄录像视频 | 一区在线电影 | 97在线免费观看视频 | 日日夜夜婷婷 | 亚洲免费永久精品国产 | 韩日色视频 | 黄色成人在线 | 亚洲黄色一级大片 | 久久综合九色综合97婷婷女人 | 在线视频观看亚洲 | 狠狠干夜夜爱 | 日韩免费一区二区 | 中文字幕av网站 | 久久久久久国产精品999 | 午夜免费福利视频 | 成人久久久久 | 日韩理论片在线 | 中文字幕在线视频免费播放 | 玖玖爱在线观看 | 国产精品毛片一区二区在线看 | 日韩av免费大片 | 欧美国产日韩在线观看 | 69久久夜色精品国产69 | 国产在线免费观看 | 久久视了 | av大全免费在线观看 | 成人av资源在线 | 久爱精品在线 | 日韩精品一二三 | 少妇高潮冒白浆 | 制服丝袜一区二区 | 日日夜夜免费精品视频 | 中文字幕乱码电影 | 996久久国产精品线观看 | 国产99久久99热这里精品5 | 天天插视频 | 天天·日日日干 | 国产成人av在线影院 | 激情综合网五月激情 | 欧美a级在线播放 | 日韩动漫免费观看高清完整版在线观看 | 日韩中文字幕视频在线 | 韩日精品在线 | 在线观看日韩视频 | 国产美女搞久久 | 在线91色| 日韩中字在线观看 | 欧美大片在线看免费观看 | 香蕉精品视频在线观看 | 在线a亚洲视频播放在线观看 | 成人av播放| 97视频在线免费观看 | 中文字幕在线视频网站 | 激情小说 五月 | 国产精品刺激对白麻豆99 | 欧美日韩国产mv | 亚洲激情电影在线 | 黄色综合 | 色吊丝在线永久观看最新版本 | 伊人久久婷婷 | 中文字幕高清视频 | 在线观看黄av | 婷婷久久一区二区三区 | 1000部国产精品成人观看 | 美腿丝袜一区二区三区 | 91精品在线观看视频 | 日韩av电影免费在线观看 | 波多野结衣在线播放视频 | adc在线观看 | 国产在线观看h | 亚洲人成在线电影 | 在线色资源 | 天天视频色| 深夜免费福利网站 | 插插插色综合 | 久久成人国产精品一区二区 | 久久艹在线观看 | 欧美大片在线观看一区 | 亚洲精品在线观看av | 69国产在线观看 | 夜夜躁狠狠躁日日躁 | 日日碰狠狠添天天爽超碰97久久 | 精品国产欧美一区二区三区不卡 | 2021国产精品视频 | 69视频网站 | 亚洲一级特黄 | 99久久国产免费,99久久国产免费大片 | 亚洲四虎影院 | 天天做日日做天天爽视频免费 | 奇米影视四色8888 | a极黄色片| 亚洲午夜大片 | 免费一级片视频 | 丝袜美腿在线播放 | 深夜成人av | 亚洲 欧美 日韩 综合 | 一级黄色电影网站 | 久久成| 免费看黄在线网站 | 黄色a在线 | 日韩午夜高清 | 国语麻豆 | 久久午夜精品 | 超碰在线97免费 | 国产99久久久精品 | 国产在线视频一区二区三区 | 欧美极品xxxx | 亚洲高清色综合 | 99re8这里有精品热视频免费 | 久久久久国 | 久久男人免费视频 | www.天天成人国产电影 | 婷婷久久一区 | 六月丁香激情综合色啪小说 | 91最新视频 | 91亚洲成人 | 五月婷婷视频在线 | 国产精品成人一区二区三区吃奶 | 色噜噜在线观看 | 国产精品久久久久永久免费观看 | 国产欧美综合在线观看 | 黄色片网站免费 | 免费网址在线播放 | 欧美日韩国产在线精品 | 久久久精品国产免费观看同学 | 亚洲激情在线观看 | 91av原创| 中文字幕国产精品一区二区 | 午夜av剧场| 国产成人精品久久亚洲高清不卡 | 亚洲免费不卡 | 黄色国产高清 | 在线日韩精品视频 | 中文字幕一区二区三区在线视频 | 久久久久久久久影院 | 丁香激情网 | 996久久国产精品线观看 | 国产一级免费在线观看 | 亚洲精品中文字幕在线 | 五月婷婷综合网 | 手机在线永久免费观看av片 | 日韩av网站在线播放 | 日韩a在线看| 女人18精品一区二区三区 | 国产一线在线 | 成年人看片网站 | 国产美女视频免费 | 97视频久久久 | 亚洲在线视频播放 | 中文字幕亚洲精品日韩 | av大全在线观看 | 日日干天天操 | 亚洲高清91 | 国产91精品在线观看 | 亚洲精品在线播放视频 | 亚洲免费永久精品国产 | 黄色免费观看视频 | 亚洲精品1区2区3区 超碰成人网 | 日韩精品中文字幕有码 | 五月婷婷免费 | 久久a热6 | 天天草综合 | 91高清免费看 | 免费进去里的视频 | japanese黑人亚洲人4k | 特级毛片网站 | 在线高清av| 精品在线99 | 午夜丁香网| 久久久久国产精品午夜一区 | 久久激情日本aⅴ | 九九欧美视频 | 国产福利av在线 | www国产一区 | 色综合小说 | 在线黄av| 亚洲精品乱码久久久久久按摩 | 国产群p | 国产精品一区专区欧美日韩 | 六月丁香婷婷网 | 日韩国产欧美视频 | 九九久 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲草视频 | 久久精品人 | 亚洲片在线资源 | 99精品久久久 | 狠狠艹夜夜干 | 亚洲天堂精品视频 | 91香蕉国产在线观看软件 | 97在线看片| 国产原创中文在线 | 久久久久免费精品国产 | 香蕉视频在线观看免费 | 国产精品久久久久一区二区三区共 | 亚洲一区二区精品3399 | 一区二区三区电影在线播 | 91成年人在线观看 | 美女精品国产 | 操老逼免费视频 | 久久免费一 | 午夜精品999 | 日韩三级免费 | 激情久久久久久久久久久久久久久久 | 不卡中文字幕在线 | 天天看天天干 | 免费av大片 | 亚洲三级在线 | 成人免费xxx在线观看 | 亚洲成人麻豆 | 国产精品18久久久久久vr | 91在线视频精品 | 国产视频网站在线观看 | 99r在线播放| 久久精品亚洲综合专区 | 97超碰在线资源 | 久久看毛片| 江苏妇搡bbbb搡bbbb | 久久综合久久久 | 美女视频网 | 精品亚洲免费视频 | 国产一级二级av | 久久99亚洲网美利坚合众国 | 免费视频久久久久久久 | 狠狠插狠狠干 | 日韩黄色在线电影 | 有码中文在线 | 婷婷丁香在线视频 | 亚洲精品a区 | 激情在线五月天 | 欧美成人在线免费 | 最新日本中文字幕 | 三级黄色网址 | 国产一区二区播放 | 婷婷视频 | 国产精品一区二区在线观看 | 在线a人v观看视频 | 国产激情小视频在线观看 | a在线免费观看视频 | 韩日在线一区 | 99久久99精品 | 九九九热精品 | 超黄视频网站 | 婷婷激情久久 | 人人爽影院 | 国产一级高清视频 | 五月天综合 | 久久精品国产亚洲精品 | 国产明星视频三级a三级点| 亚洲 欧美 成人 | 美女视频黄在线观看 | 制服丝袜一区二区 | 久久综合久久久 | 国产成人一二片 | 视频在线一区二区三区 | 午夜视频在线观看网站 | 中文字幕大全 | 男女啪啪网站 | 精品视频在线观看 | 国内精品久久久久久久久久清纯 | 国产高清在线a视频大全 | 免费观看一级视频 | 最新国产精品拍自在线播放 | 激情欧美丁香 | 黄www在线观看 | 免费在线观看亚洲视频 | 亚洲欧美日本一区二区三区 | 日韩成年视频 | 夜夜骑天天操 | 91九色蝌蚪视频 | 国产精品中文字幕在线播放 | 久久激五月天综合精品 | 日韩av女优视频 | 91av视频在线免费观看 | 四虎成人精品在永久免费 | bbbbb女女女女女bbbbb国产 | 99在线观看视频 | 久久精品小视频 | 黄色精品一区二区 | av网在线观看 | 久久99国产精品久久99 | 深爱五月网 | 999国产在线 | 操久| 国产这里只有精品 | 在线观看欧美成人 | 国产99久久精品 | 天天看天天干 | 91视频 - x99av| а中文在线天堂 | 在线精品播放 | 国产女人免费看a级丨片 | 黄色大片中国 | 天天射网 | 99久高清在线观看视频99精品热在线观看视频 | 亚洲综合最新在线 | 天天色草| 欧美在线观看禁18 | 人人爱人人爽 | 天天色综合天天 | 久久久久久久久久久高潮一区二区 | 九九视频在线观看视频6 | 亚洲日本三级 | 欧美日韩精品在线一区二区 | 欧美在线一级片 | 一区二区三区在线观看 | 亚洲电影网站 | 久久免费美女视频 | 国产精品一区二区av | 精品视频久久久 | 精品国产激情 | 菠萝菠萝蜜在线播放 | 亚洲综合婷婷 | 深爱开心激情 | 视频99爱| 人人超在线公开视频 | 久久久久久欧美二区电影网 | 色婷婷综合激情 | 毛片99 | 成年人三级网站 | 色久天| 亚洲视频免费在线观看 | 色99视频 | 日日夜夜精品视频天天综合网 | 久久国产美女视频 | 欧美极品xxx | 中文字幕一区二区三区四区视频 | 久久五月天色综合 | 草久在线观看 | 天堂av在线免费 | 国产一级片视频 | 久久免费看 | 亚洲视频免费视频 | 91成人在线免费观看 | 国产黄免费 | 天天摸日日操 | 精品国产一区二区三区久久久蜜月 | 亚洲91精品在线观看 | 免费在线观看av网址 | 91精品人成在线观看 | 亚洲午夜不卡 | 久久久国产一区二区三区 | 国产精国产精品 | 精品美女在线视频 | 欧美精品小视频 | 涩涩网站免费 | 激情久久小说 | 国内偷拍精品视频 | 色视频在线免费 | 成人福利在线观看 | se视频网址 | 狠狠躁18三区二区一区ai明星 | 日韩va在线观看 | 超碰在线观看97 | 精品国产视频在线观看 | 成人午夜影院 | 一区二区亚洲精品 | 成人免费视频免费观看 | 久久99久久99精品免视看婷婷 | 狠狠的干狠狠的操 | 亚洲欧美国产日韩在线观看 | 毛片永久新网址首页 | 热99在线| 国产日韩精品一区二区 | 国产精品久久久久婷婷 | 国产又粗又猛又黄 | 波多野结衣亚洲一区二区 | 色老板在线视频 | 久久a v视频 | 波多野结衣视频一区 | 久久久久国产一区二区 | 黄色的视频网站 | 中文字幕观看视频 | mm1313亚洲精品国产 | 天天干夜夜夜 | 成人影片在线免费观看 | av免费看在线 | 一级全黄毛片 | 99福利片| 97超视频在线观看 | 久一久久| 久久66热这里只有精品 | 国产理论一区二区三区 | 91黄站| 日韩中文字幕视频在线 | 奇人奇案qvod | 日韩精品一区二区在线观看 | 最近中文字幕免费大全 | 日日草天天干 | 日韩首页 | 欧美网址在线观看 | 色婷婷亚洲精品 | 99视频免费播放 | 亚洲一二三在线 | 狠狠躁夜夜躁人人爽视频 | 欧美精品一区二区性色 | 欧美一区免费在线观看 | 在线www色 | 六月婷婷久香在线视频 | 精品一区二区影视 | 久久久国产一区二区 | 天天夜夜狠狠操 | 天天五月天色 | 国产午夜精品在线 | 精品视频 | 亚洲色综合 | 日韩精品专区在线影院重磅 | 国产不卡在线 | 成片视频免费观看 | 九九九在线观看视频 | 久久综合国产伦精品免费 | 97人人模人人爽人人喊中文字 | 97视频在线免费播放 | 国产高清黄色 | 综合网天天 | 热久久免费国产视频 | 久久精品中文视频 | 日韩三级免费 | 国产小视频你懂的 | 国产精选在线 | av在线网站大全 | 在线观看亚洲精品视频 | 特级西西www44高清大胆图片 | 日日夜夜天天久久 | 91视频久久久久 | 日韩理论片中文字幕 | 午夜精品一区二区三区在线播放 | 国产手机在线精品 | 91九色视频| 国产在线国偷精品产拍免费yy | 麻豆精品传媒视频 | 国产免费专区 | 国产69精品久久99不卡的观看体验 | 国产成人av电影在线 | 天堂资源在线观看视频 | 特黄色大片 | 日产乱码一二三区别免费 | 韩国精品在线 | 久草线 | 97免费在线观看视频 | av电影在线观看完整版一区二区 | 精品一区二区影视 | 午夜精品一二区 | 久久久亚洲电影 | 日本黄色免费在线观看 | 天天操综合网 | a视频在线观看免费 | 亚洲最新av在线 | 午夜aaaa | 婷婷开心久久网 | 一区二区三区在线观看 | 五月天综合婷婷 | 日日婷婷夜日日天干 | 日本精品久久久久中文字幕5 | 亚洲黄在线观看 | 国产精品欧美一区二区 | 久久精品欧美 | 亚洲狠狠婷婷综合久久久 | 九九日韩| 国产小视频精品 | 久久精品五月 | 亚洲精品日韩av | 黄在线免费看 | 日韩电影久久 | 激情深爱五月 | www.国产在线观看 | 中文字幕高清有码 | 在线免费黄色片 | 三级黄免费看 | 久久在线免费视频 | 国产精品久久久久久69 | 国产97视频在线 | 国产1级毛片 | 9ⅰ精品久久久久久久久中文字幕 | 成人在线免费看视频 | 91探花在线视频 | 国产精品久久久99 | 91香蕉视频在线 | 成人av在线播放网站 | 免费在线观看av电影 | 精品一区二三区 | 99精品一区 | 久久综合干 | 免费在线观看av片 | 狠狠操狠狠干天天操 | 欧美大香线蕉线伊人久久 | 久久久久久美女 | 国产一级精品绿帽视频 | 国产精品久久久一区二区 | 久久久国产视频 | 最新中文字幕在线资源 | 五月婷婷,六月丁香 | 中文字幕中文字幕在线中文字幕三区 | 中文字幕免费观看 | 欧美成年网站 | 免费在线中文字幕 | 欧美精品久久久久性色 | 久久五月婷婷丁香社区 | 九九九九免费视频 | 午夜精品久久久久久久99热影院 | av福利网址导航大全 | 免费av的网站 | 久久精品亚洲精品国产欧美 | 91亚色免费视频 | 亚洲婷婷丁香 | 久久av免费电影 | 欧美色黄 | 亚洲国产中文字幕 | 久久精品国产久精国产 | 亚洲精品视频免费在线 | 九九九九精品 | 国产原创在线 | 国产精品一区二区中文字幕 | 在线观看日韩精品视频 | 国产黄色精品视频 | 干天天| 国产99免费 | 免费日韩在线 | 久久99国产精品二区护士 | 激情综合五月天 | 最近2019中文免费高清视频观看www99 | 亚洲精品视频免费观看 | 久久综合九色欧美综合狠狠 | 91福利社区在线观看 | 天天干天天做 | 国产精品一区二区三区视频免费 | av在线电影免费观看 | 麻豆91小视频 | 99精品久久久久久久 | 91日韩精品视频 | 天天色天天色天天色 | 天天干天天干天天干 | 国产精品伦一区二区三区视频 | 操操操综合 | 国产一二三区av | 亚洲热视频 | 国产精品a级| 人人爱人人舔 | 99爱国产精品 | 狠狠色丁香久久婷婷综 | 久久久久久久久久久网站 | 国产999视频| 天天操福利视频 | 激情av在线资源 | 久久伊人综合 | 精品一区二区精品 | 成人av片在线观看 | 黄色av网站在线免费观看 | 国产高清日韩欧美 | 婷婷六月天丁香 | se视频网址 | 丁香视频 | 亚洲区精品 | 国产精品成人自产拍在线观看 | 国产五月婷 | 欧美另类调教 | 日韩欧美国产精品 | 在线观看日韩精品 | 国产麻豆精品免费视频 | 国产精品久久久久久久久久妇女 | 麻豆播放 | 欧美日韩二区三区 | 男女啪啪网站 | 人人狠狠 | 国产精品一区二区久久国产 | 久久久综合香蕉尹人综合网 | 欧美激情综合五月色丁香小说 | 国产中文字幕久久 | 黄色字幕网 | 日韩一区二区三区在线看 | av中文字幕在线看 | 国产一区国产二区在线观看 | 中文字幕在线观看不卡 | 麻豆av一区二区三区在线观看 | 狠狠狠色丁香综合久久天下网 | 国产热re99久久6国产精品 | 在线视频专区 | 久久久久久亚洲精品 | 美女黄频网站 | 日韩区欠美精品av视频 | 国内精品免费 | 国产成人久久精品亚洲 | 伊人中文字幕在线 | 看av在线 | 亚洲天堂网站视频 | 日韩毛片在线一区二区毛片 | 中文字幕中文字幕在线中文字幕三区 | 欧美人体xx | 最新av电影网站 | 日韩最新av | 久久精彩视频 | 国产精品久久久久aaaa九色 | 久久国产精品久久w女人spa | 在线免费中文字幕 | 五月天久久久 | 久久99热国产 | 免费电影一区二区三区 | 亚洲三级网 | 日韩欧美在线高清 | 日本狠狠干 | 国产精品成人一区二区 | 国产午夜亚洲精品 | 麻豆视频在线观看免费 | 国产91av视频在线观看 | 超碰在线人| 国产精品久久久亚洲 | 91视频在线免费观看 | a视频在线播放 | 午夜私人影院久久久久 | 最新国产精品久久精品 | 国产精品久久久网站 | 免费的黄色的网站 | 日韩黄色av网站 | 九九久久电影 | 九九九九色 | 黄污在线看 | 亚洲 av网站| 天堂va在线观看 | 天天色成人 | 探花视频在线版播放免费观看 | 日韩h在线观看 | 97人人澡人人添人人爽超碰 | 久久精品久久久精品美女 | 亚洲视频999 | 开心色激情网 | 国产精品久久久网站 | 日韩r级电影在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 婷婷午夜 | 91免费网 | 亚洲午夜精品久久久久久久久 | 在线视频你懂得 | 免费看片亚洲 | 中文字幕黄网 | 精品乱码一区二区三四区 | 国产麻豆精品一区二区 | 91视频高清| 日韩一级黄色片 | 精品极品在线 | 日韩免费精品 | 在线观看的av网站 | 亚洲专区一二三 | 永久免费的啪啪网站免费观看浪潮 | 久久人人爽人人 | 91高清免费观看 | 亚洲在线网址 | 国产女人18毛片水真多18精品 | 国产一区二区精品久久91 | 超碰免费在线公开 | 在线观看一级视频 | 亚洲视频在线观看免费 | 国产福利免费在线观看 | 丁香婷婷激情国产高清秒播 | 五月天亚洲婷婷 | 国产精品影音先锋 | 91日韩在线专区 | 人人爽人人香蕉 | 国产精品久久久久久久久久久杏吧 | 97精品在线 | 国产精品久久亚洲 | 99久久www | 国产精品一区二区中文字幕 | 成人av影视 | 日韩有码在线观看视频 | 十八岁以下禁止观看的1000个网站 | 国产亲近乱来精品 | 黄在线 | 亚洲国产美女精品久久久久∴ | 999久久a精品合区久久久 | 在线电影a | 亚州国产视频 | 欧美一区二区在线免费观看 | 五月天久久久久久 | 天天操天天操天天干 | 黄网站色欧美视频 | 日韩视频中文字幕 | 国产日产高清dvd碟片 | 国产高清在线精品 | 在线成人一区 | 中文字幕一区二区三区四区久久 | 日本久久电影 | 91九色蝌蚪视频在线 | 91视频这里只有精品 | 成人在线视频你懂的 | 欧美在线视频不卡 | 国产在线欧美在线 | 国产亚洲免费的视频看 | 三级黄色a | 久久久久久久久黄色 | 国产精品久久久久久久久久尿 | 麻豆精品视频 | 99久久电影 | 日本高清免费中文字幕 | 2019中文字幕网站 | 午夜av电影 | 99精品在线免费观看 | 日本在线视频一区二区三区 | 看片网站黄 | 国产午夜精品久久 | 91精品人成在线观看 | 激情综合色图 | 国产精品入口麻豆www | 中文字幕麻豆 | 成人小视频免费在线观看 | 欧美精品久久久久久 | 看国产黄色片 | 久久精品国产精品亚洲 | 欧美亚洲国产日韩 | 不卡精品视频 | 黄色毛片网站在线观看 | 国产福利91精品一区二区三区 | 国产精品高清一区二区三区 | 五月婷婷视频在线 | www久久精品 | 久久99久久99精品免观看软件 | 99久精品 | 五月视频 | 欧美乱码精品一区二区 | 六月丁香激情综合 | 亚洲精品中文在线观看 | 91精品第一页 | 亚洲九九爱| 国产视频在线观看一区 | av在线播放亚洲 | 亚洲午夜精 | 国产在线观看你懂得 | 天天精品视频 | 国产欧美在线一区 | 亚洲一区在线看 | 亚洲精品国产视频 | 毛片永久新网址首页 | 天天做天天爱天天综合网 | 91中文字幕在线 | 日韩aⅴ视频 | www操操操| 国产91综合一区在线观看 | www.xxxx欧美 | 久久系列| 黄色av影院 | 97超视频免费观看 | 天天干天天操天天操 | 国产成人资源 | 国产男女无遮挡猛进猛出在线观看 | 欧美日韩国产精品一区二区 | 久久精品这里热有精品 | 国产福利精品视频 | 中文字幕在线观看视频一区二区三区 | 国产香蕉视频在线播放 | 久久精品久久久精品美女 | 99在线热播| 免费h精品视频在线播放 | 久久久久亚洲国产精品 | 99久久夜色精品国产亚洲 | 亚洲综合激情小说 | 中文字幕av在线 | 亚洲午夜精品久久久久久久久久久久 | 国产视频精品在线 | 国产成人久| 欧美日韩久久一区 | 啪啪凸凸 | 天天爽夜夜爽人人爽一区二区 | 欧美日韩不卡一区二区三区 | 久久tv视频 | 亚洲永久精品国产 | 成人动漫一区二区三区 | 国产精品video爽爽爽爽 | 欧美精品三级在线观看 | 高清一区二区三区av | 99精品视频中文字幕 | 黄网站免费久久 | 777xxx欧美 | 国产一级片视频 | 国产视频亚洲视频 | 麻花传媒mv免费观看 | 高清中文字幕av | 日本婷婷色 | 在线免费观看黄 | 久热电影 | 久久精品5 | 国产亚洲aⅴaaaaaa毛片 | 黄色av一级片 |