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

posts - 126,  comments - 73,  trackbacks - 0

一、初始化

void glutInit(int* argc,char** argv)

?這個函數用來初始化GLUT庫。對應main函數的形式應是:int main(int argc,char* argv[]);?

這個函數從main函數獲取其兩個參數。

void glutInitWindowSize(int width,int height);
void glutInitWindowPosition(int x,int y);

?設置glut程序要產生的窗口的大小和位置(左上角)。以像素為單位。

void glutInitDisplayMode(unsigned int mode);

?設置圖形顯示模式。參數mode的可選值為:
  • GLUT_RGBA:當未指明GLUT-RGBA或GLUT-INDEX時,是默認使用的模式。表明欲建立RGBA模式的窗口。
  • GLUT_RGB:與GLUT-RGBA作用相同。
  • GLUT_INDEX:指明為顏色索引模式。
  • GLUT_SINGLE:只使用單緩存
  • GLUT_DOUBLE:使用雙緩存。以避免把計算機作圖的過程都表現出來,或者為了平滑地實現動畫。
  • GLUT_ACCUM:讓窗口使用累加的緩存。
  • GLUT_ALPHA:讓顏色緩沖區使用alpha組件。
  • GLUT_DEPTH:使用深度緩存。
  • GLUT_STENCIL:使用模板緩存。
  • GLUT_MULTISAMPLE:讓窗口支持多例程。
  • GLUT_STEREO:使窗口支持立體。
  • GLUT_LUMINACE:luminance是亮度的意思。但是很遺憾,在多數OpenGL平臺上,不被支持。

二、事件處理(Event Processing)

void? glutMainLoop(void)

讓glut程序進入事件循環。在一個glut程序中最多只能調用一次。一旦調用,會直到程序結束才返回。

三、窗口管理(Window Management)

int glutCreateWindow(char* name);

?產生一個頂層的窗口。name 作為窗口的名字,也就是窗口標題欄顯示的內容。

返回值是生成窗口的標記符,可用函數glutGetWindow()加以引用。

int glutCreateSubWindow(int win,int x,int y,int width,int height);

?創建一個子窗口。win是其父窗口的標記符。x,y是相對父窗口的位移,以像素表示。

width,height是子窗口的寬和高。

void glutSetWindow(int win);
int glutGetWindow(void);

?功能分別是:設置標記符為win的窗口為當前窗口;返回當前窗口的標記符。

void glutDestroyWindow(int win);

?銷毀以win標記的窗口。

void glutPostRedisplay(void);

?將當前窗口打上標記,標記其需要再次顯示。

void glutSwapBuffers(void);

?當窗口模式為雙緩存時,此函數的功能就是把后臺緩存的內容交換到前臺顯示。當然,只有單緩存時,使用它的功能跟用glFlush()一樣。?

而使用雙緩存是為了把完整圖畫一次性顯示在窗口上,或者是為了實現動畫。

void glutPositionWindow(int x,int y);

?改變當前窗口的位置:當前窗口是頂層窗口時,x,y是相對于屏幕的的位移;當前窗口若是子窗口時,x,y是相對其父窗口原點的位移。

void glutReshapeWindow(int width,int height);

?改變當前窗口的大小。?

width,height是當前窗口新的寬度和高度值,當然只能是正值。

void glutFullscreen(void);

?讓當前窗口全屏顯示。當前窗口是頂層窗口時才有效。

void glutPopWindow(void);
void glutPushWindow(void);

?對頂層窗口和子窗口均有效。改變當前窗口在棧中相對于其它窗口的次序。

void glutShowWindow(void);
void glutHideWindow(void);
void glutIconifyWindow(void);

?這三個函數作用是改變當前窗口的顯示狀態。
  • glutShowWindow讓當前窗口可視(這時它還是可能被其它窗口擋住)。
  • glutHideWindow讓當前窗口成為不可視狀態。
  • glutIconifyWindow讓當前窗口成為一個圖標,也即是最小化。

void glutSetWindowTitle(char* name);
void glutSetIconTitle(char* name);

?設置當前窗口(必須是頂層窗口)的標題和圖標化時的標題。

void glutSetCursor(int cursor);

?設置當前窗口的光標樣式。?

cursor可選值有許多:如GLUT_CURSOR_RIGHT_ARROW指向右邊的光標,GLUT_CURSOR_LEFT_ARROW指向左邊的光標,GLUT_CURSOR_INFO成為手狀。?
GLUT_CURSOR_DESTROY呈叉狀,GLUT_CURSOR_HELP呈現問號的形狀。等等。

四、窗口的覆蓋管理

void glutEstablishOverlay(void);

對當前窗口創建覆蓋圖層。該覆蓋圖的模式由初始化顯示模式函數glutDisplayMode()決定。

glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以設置對于當前窗口,是否允許產生由初始化顯示模式函數規定其模式的覆蓋圖層。

void glutUserLayer(GLenum layer);

枚舉量layer可選值為:GLUT_NORMAL,GLUT_OVERLAY.分別選取正常位平面或覆蓋平面。

void glutRemoveLayer(void);

除去覆蓋圖。當沒有覆蓋圖層時,調用這條語句也是安全的,這時系統不做任何事。

void glutPostOverlayRedisplay(void);

標記該覆蓋圖層為需要重新顯示的狀態。

void glutShowOverlay(void);
void glutHideOverlay(void);

顯示當前窗口的覆蓋圖層;隱藏覆蓋圖層。這兩條語句即時執行。注意一下,只有窗口可視時,使用glutShowOverlay才能使其覆蓋圖層可視。當窗口被其他窗口遮擋時,其覆蓋圖層也被遮擋從而不可視。

五、菜單管理

int glutCreateMenu(void (*func)(int value))

當點擊菜單時,調用回調函數func,value為傳遞給回調函數的數值,它由所選擇的菜單條目對應的整數值所決定。

這個函數創建一個新的彈出式菜單,并返回一個唯一的標識次菜單的整型標識符,并將新建的彈出菜單與func函數關聯在一起,這樣,當選擇此菜單中的一個菜單條目時,調用回調函數func.

void glutSetMenu(int menu);
int glutGetMenu(void);

設置當前菜單;獲取當前菜單的標識符

void glutDestroyMenu(int menu);

刪除指定的菜單

void glutAddMenuEntry(char* name, int value);

添加一個菜單條目

void glutAddSubMenu(char* name, int menu);

在當前菜單的底部增加一個子菜單的觸發條目

void glutChangeToMenuEntry(int entry, char* name, int value);

更改當前菜單中指定菜單項

void glutChangeToSubMenu(int entry, char* name, int menu);

將指定的當前菜單中菜單項變為子菜單觸發條目

void glutRemoveMenuItem(int entry);

刪除指定的菜單項

void glutAttachMenu(int button);
void glutDetachMenu(int button);

把當前窗口的一個鼠標按鍵與當前菜單關聯起來;解除鼠標按鍵與彈出式菜單的關聯關系

六、注冊回調

void glutDisplayFunc(void (*func)(void) );

為當前窗口設置顯示回調函數

void glutOverlayDisplayFunc(void (*func)(void) );

注冊當前窗口的重疊層的顯示回調函數

void glutReshapeFunc(void (*Func)(int width, int height) );

指定當窗口的大小改變時調用的函數

void glutKeyboardFunc(void (*func) (unsigned char key, int x, int y) );

注冊當前窗口的鍵盤回調函數

void glutMouseFunc(void (*func) (int button, int state, int x, int y));

注冊當前窗口的鼠標回調函數

func為注冊的鼠標回調函數,這個函數完成鼠標事件的處理

button為鼠標的按鍵,為以下定義的常量

GLUT_LEFT_BUTTON鼠標左鍵
GLUT_MIDDLE_BUTTON鼠標中鍵
GLUT_RIGHT_BUTTON鼠標右鍵

state為鼠標按鍵的動作,為以下定義的常量

GLUT_UP鼠標釋放
GLUT_DOWN鼠標按下

x,y為鼠標按下式,光標相對于窗口左上角的位置

void glutMotionFunc(void (*func)(int x, int y));
void glutPassiveMotionFunc(void (*func)(int x, int y));

設置移動回調函數;設置當前鼠標移動函數

Func為注冊的鼠標移動函數

x,y為鼠標按下式,光標相對于窗口左上角的位置
當鼠標在窗口中按下并移動時調用glutMotionFunc注冊的回調函數
當鼠標在窗口中移動時調用glutPassiveMotionFunc注冊的回調函數

void glutVisibilityFunc(void (*func) (int state) );

設置當前窗口的可視回調函數

Func為指定的可視回調函數

state表示窗口的可視性,為以下常量:

GLUT_NOT_VISIBLE窗口完全不可見
GLUT_VISIBLE窗口可見或部分可見

這個函數設置當前窗口的可視回調函數,當窗口的可視性改變時,該窗口的可視回調函數被調用.只要窗口中的任何一個像素是可見的,或者他的任意一個子窗口中任意一個像素是可見的,GLUT則認為窗口是可見的.

void glutEntryFunc(void (*func) (int state));

設置鼠標的進出窗口的回調函數

Func為注冊的鼠標進出回調函數

state為鼠標的進出狀態,為以下常量之一:

GLUT_LEFT鼠標離開窗口
GLUT_RIGHT鼠標進入窗口

當窗口取得焦點或失去焦點時調用這個函數,當鼠標進入窗口區域并點擊時,state為GLUT_RIGHT,當鼠標離開窗口區域點擊其他窗口時,state為GLUT_LEFT.

void glutSpecialFunc(void (*func) (int key, int x, int y))

設置當前窗口的特定鍵的回調函數

Func為注冊的特定鍵的回調函數

key為按下的特定鍵,為以下定義的常量:

key常量描述
GLUT_KEY_F1F1功能鍵
GLUT_KEY_F2F2功能鍵
GLUT_KEY_F3F3功能鍵
GLUT_KEY_F4F4功能鍵
GLUT_KEY_F5F5功能鍵
GLUT_KEY_F6F6功能鍵
GLUT_KEY_F7F7功能鍵
GLUT_KEY_F8F8功能鍵
GLUT_KEY_F9F9功能鍵
GLUT_KEY_F10F10功能鍵
GLUT_KEY_F11F11功能鍵
GLUT_KEY_F12F12功能鍵
GLUT_KEY_LEFT左方向鍵
GLUT_KEY_UP上方向鍵
GLUT_KEY_RIGHT右方向鍵
GLUT_KEY_DOWN下方向鍵
GLUT_KEY_PAGE_UPPageUp鍵
GLUT_KEY_PAGE_DOWNPageDown鍵
GLUT_KEY_HOMEHome鍵
GLUT_KEY_ENDEnd鍵
GLUT_KEY_INSERTInsert鍵

x,y為當按下鍵時鼠標的坐標,相對于窗口左上角,以像素為單位
注意:ESC,回車和delete鍵由ASCII碼產生.

void glutMenuStatusFunc(void (*func) (int status, int x, int y));

設置菜單狀態回調函數

func是注冊的菜單狀態回調函數

status是當前是否使用菜單,為以下定義的常量

GLUT_MENU_IN_USE菜單正在使用
GLUT_MENU_NOT_IN_USE菜單未被使用

x,y是鼠標按下式,光標相對于窗口左上角的位置

這個函數時glut程序判定是否正在使用菜單,當彈出菜單時,調用注冊的菜單狀態回調函數,同時status設置為常量GLUT_MENU_IN_USE, 當菜單使用完畢時,也調用菜單狀態回調函數,此時status變量變為GLUT_MENU_NOT_IN_USE.從已彈出的菜單中再彈出的菜單不產生菜單狀態回調過程.每個glut程序只有一個菜單狀態回調函數.

glutSpaceballRotateFunc

glutSpaceballButtonFunc

glutButtonBoxFunc

glutDialsFunc

glutTabletMotionFunc

glutTabletButtonFunc

void glutMenuStatusFunc(void (*func) (int status, int x, int y));

設置菜單狀態回調函數

func為注冊的菜單狀態回調函數

status表示當前是否使用菜單,為以下定義的常量

GLUT_MENU_IN_USE菜單正在使用
GLUT_MENU_NOT_IN_USE菜單未被使用

x,y表示鼠標按下式,光標相對于窗口左上角的位置

這個函數時glut程序判定是否正在使用菜單,當彈出菜單時,調用注冊的菜單狀態回調函數,同時status設置為常量GLUT_MENU_IN_USE, 當菜單使用完畢時,也調用菜單狀態回調函數,此時status變量變為GLUT_MENU_NOT_IN_USE.從已彈出的菜單中再彈出的菜單不產生菜單狀態回調過程.每個glut程序只有一個菜單狀態回調函數.

void glutIdleFunc(void (*func) (void));

設置空閑回調函數

func表示當系統空閑時調用的函數,它的形式為void func(void)

void glutTimerFunc(unsigned int msecs, void (*Func)(int value), int value);

注冊一個回調函數,當指定時間值到達后,由GLUT調用注冊的函數一次

msecs是等待的時間

Func是注冊的函數

value是指定的一個數值,用來傳遞到回調函數Func中

這個函數注冊了一個回調函數,當指定的毫秒數到達后,這個函數就調用注冊的函數,value參數用來向這個注冊的函數中傳遞參數.

七、色彩管理(未完成)

glutSetColor

glutGetColor

glutCopyColormap

八、狀態檢索

int glutGet(GLenum state);

檢索指定的GLUT狀態

state為指定要檢索的狀態類型,為以下常量

state常量描述
GLUT_WINDOW_X當前窗口的x坐標,以像素為單位
GLUT_WINDOW_Y當前窗口的y坐標,以像素為單位
GLUT_WINDOW_WIDTH當其窗口的寬度,以像素為單位
GLUT_WINDOW_HEIGHT當前窗口的高度,以像素為單位
GLUT_WINDOW_BUFFER_SIZE當前窗口中,顏色分量占用的位數,即用多少bit表示顏色分量
GLUT_WINDOW_STENCIL_SIZE當前窗口中,蒙板分量占用的位數,即用多少bit表示蒙板分量
GLUT_WINDOW_DEPTH_SIZE當前窗口中,深度分量占用的位數,即用多少bit表示深度分量
GLUT_WINDOW_RED_SIZE當前窗口中,紅色分量占用的位數,即用多少bit表示紅色分量
GLUT_WINDOW_GREEN_SIZE當前窗口中,綠色分量占用的位數,即用多少bit表示綠色分量
GLUT_WINDOW_BLUE_SIZE當前窗口中,藍色分量占用的位數,即用多少bit表示藍色分量
GLUT_WINDOW_ALPHA_SIZE當前窗口中,alpha色分量占用的位數,即用多少bit表示alpha色分量
GLUT_WINDOW_ACCUM_RED_SIZE當前窗口累積緩存中,紅色分量占用的位數,即用多少bit表示紅色分量
GLUT_WINDOW_ACCUM_GREEN_SIZE當前窗口累積緩存中,綠色分量占用的位數,即用多少bit表示綠色分量
GLUT_WINDOW_ACCUM_BLUE_SIZE當前窗口累積緩存中,藍色分量占用的位數,即用多少bit表示藍色分量
GLUT_WINDOW_ACCUM_ALPHA_SIZE當前窗口累積緩存中,alpha色分量占用的位數,即用多少bit表示alpha色分量
GLUT_WINDOW_DOUBLEBUFFER如果窗口式雙緩存模式,返回1,否則返回0
GLUT_WINDOW_RGBA如果窗口是RGBA模式,返回1,否則返回0
GLUT_WINDOW_PARENT查詢當前窗口的父窗口個數,如果為頂層窗口返回0
GLUT_WINDOW_NUM_CHILDREN查詢當前窗口的子窗口個數
GLUT_WINDOW_NUM_SAMPLES查詢多重采樣的采樣點個數
GLUT_WINDOW_STEREO查詢是否使用立體模式,是則返回1,否則返回0
GLUT_WINDOW_CURSOR返回光標的整數標示
GLUT_SCREEN_HEIGHT屏幕的高度,以像素為單位
GLUT_SCREEN_WIDTH屏幕的寬度,以像素為單位
GLUT_SCREEN_WIDTH_MM屏幕的寬度,以毫米為單位
GLUT_SCREEN_HEIGHT_MM屏幕的高度,以毫米為單位
GLUT_MENU_NUM_ITEMS查詢當前菜單包含的菜單項的個數
GLUT_DISPLAY_MODE_POSSIBLE查詢窗口系統是否支持當前的顯示模式,1表示支持,0表示不支持
GLUT_INIT_DISPLAY_MODE初始窗口的顯示模式
GLUT_INIT_WINDOW_X初始窗口的x坐標
GLUT_INIT_WINDOW_Y初始窗口的y坐標
GLUT_INIT_WINDOW_WIDTH初始窗口的寬度
GLUT_INIT_WINDOW_HEIGHT初始窗口的高度
GLUT_ELAPSED_TIME返回兩次調用glutGet(GLUT_ELAPSED_TIME)的時間間隔,單位為毫秒

返回值根據查詢的內容返回相應的值,無效的狀態名返回-1.

int glutLayerGet(GLenum info);

查詢屬于當前窗口的重疊層的狀態

Info表示查詢的重疊層狀態常量

GLUT_OVERLAY_POSSIBLE在給定的初始顯示模式下,能否為當前窗口創建重疊層.如果能,返回1;如果不能,返回0
GLUT_LAYER_IN_USE返回當前的使用層,為GLUT_NORMAL或GLUT_OVERLAY
GLUT_HAS_OVERLAY判斷當前窗口是否創建了重疊層
GLUT_NORMAL_DAMAGED如果當前窗口的圖像層在上一次顯示回調函數調用后已經破壞,則返回TRUE
GLUT_OVERLAY_DAMAGED如果當前窗口的重疊層在上一次顯示回調函數調用后已經破壞,則返回TRUE

int glutDeviceGet(GLenum info);

檢索設備信息

info為要檢索的設備信息的名字,為以下常量

GLUT_HAS_KEYBOARD如果鍵盤可用,返回非0值,否則,返回0
GLUT_HAS_MOUSE如果鼠標可用,返回非0值,否則,返回0
GLUT_NUM_MOUSE_BUTTONS返回鼠標支持的按鍵數,如果鼠標不可用,返回0
返回值0表示檢索的設備不存在,非0表示設備可用

int glutGetModifiers(void);

返回組合功能鍵的狀態

返回值為以下定義的常量

GLUT_ACTIVE_SHIFT當按下shift鍵時
GLUT_ACTIVE_CTRL當按下ctrl鍵時
GLUT_ACTIVE_ALT當按下alt鍵時

int glutExtensionSupported(char* extension);

判定是否支持特定的OpenGL擴展

extension是指定要測試的OpenGL擴展的名稱

如果給定擴展獲得支持,函數返回非0,否則返回0

九、字體渲染

void glutBitmapCharacter(void* font, int character);

繪制一個圖像字符

Font表示要使用的圖像字體,如下表所示:

GLUT_BITMAP_8_BY_13一種固定寬度字體,每個字符都放在一個8x13像素的矩形框內
GLUT_BITMAP_9_BY_15一種固定寬度字體,每個字符都放在一個9x15像素的矩形框內
GLUT_BITMAP_TIMES_ROMAN_10一種10點均勻間距的Times Roman字體
GLUT_BITMAP_TIMES_ROMAN_24一種24點均勻間距的Times Roman字體
GLUT_BITMAP_HELVETICA_10一種10點均勻間距的Helvetica字體
GLUT_BITMAP_HELVETICA_12一種12點均勻間距的Helvetica字體
GLUT_BITMAP_HELVETICA_18一種18點均勻間距的Helvetica字體
Character表示要繪制的字符

int glutBitmapWidth(GLUTbitmapFont font, int character);

返回一個圖像字符的寬度

font是指定的圖像字體,如下表所示:

GLUT_BITMAP_8_BY_13一種固定寬度字體,每個字符都放在一個8x13像素的矩形框內
GLUT_BITMAP_9_BY_15一種固定寬度字體,每個字符都放在一個9x15像素的矩形框內
GLUT_BITMAP_TIMES_ROMAN_10一種10點均勻間距的Times Roman字體
GLUT_BITMAP_TIMES_ROMAN_24一種24點均勻間距的Times Roman字體
GLUT_BITMAP_HELVETICA_10一種10點均勻間距的Helvetica字體
GLUT_BITMAP_HELVETICA_12一種12點均勻間距的Helvetica字體
GLUT_BITMAP_HELVETICA_18一種18點均勻間距的Helvetica字體
character為指定的字符

返回指定字符的寬度,以像素為單位

void glutStrokeCharacter(void* font, int character);

繪制一個圖形字符

Font表示要使用的圖形字體,如下表所示:

GLUT_STROKE_ROMAN一種等間距的Roman Simplex字體,僅包括32到127的ASCII字符
GLUT_STROKE_MONO_ROMAN一種單一間距的Roman Simplex字體,僅包括32到127的ASCII字符
Character為要繪制的字符

int glutStrokeWidth(GLUTstrokeFont font, int character);

返回一個圖形字體的寬度

Font是指定的圖形字體,如下表所示:

GLUT_STROKE_ROMAN一種等間距的Roman Simplex字體,僅包括32到127的ASCII字符
GLUT_STROKE_MONO_ROMAN一種單一間距的Roman Simplex字體,僅包括32到127的ASCII字符
Character為繪制的字符

十、實體繪制

以下所有函數中,radius表示球體的半徑,slices表示球體圍繞z軸分割的數目,stacks表示球體沿著z軸分割的數目。

繪制中心在模型坐標原點,半徑為radius的球體,球體圍繞z軸分割slices次,球體沿著z軸分割stacks次

void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);? 線框球
void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); 實心球

void glutWireCube(GLdouble size); 線框立方體
void glutSolidCube(GLdouble size); 實心立方體

void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 線框圓環
void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 實心圓環

void glutWireIcosahedron(void); 線框20面體
void glutSolidIcosahedron(void); 實心20面體

void glutWireOctahedron(void); 線框8面體
void glutSolidOctahedron(void); 實心8面體

void glutWireTetrahedron(void); 線框4面體
void glutSolidTetrahedron(void); 實心4面體

void glutWireDodecahedron(GLdouble radius); 線框12面體
void glutSolidDodecahedron(GLdouble radius); 實心12面體

void glutWireCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); 線框圓錐體
void glutSolidCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); 實心圓錐體

void glutWireTeapot(GLdouble size); 線框茶壺
void glutSolidTeapot(GLdouble size); 實心茶壺

十一、實例

初始化及簡單平面圖形

#include <GL/glut.h>
void renderScene(void) {
? glClear(GL_COLOR_BUFFER_BIT);
? glBegin(GL_TRIANGLES);
? glVertex3f(-0.5,-0.5,0.0);
? glVertex3f(0.5,0.0,0.0);
? glVertex3f(0.0,0.5,0.0);
? glEnd();
? glFlush();
}

int main(int argc, char **argv) {
? glutInit(&argc, argv);
? glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
? glutInitWindowPosition(100,100);
? glutInitWindowSize(320,320);
? glutCreateWindow("3D Tech- GLUT Tutorial");
? glutDisplayFunc(renderScene);
? glutMainLoop();
? return 0;
}


from: http://blog.chinaunix.net/u1/50920/showart_434138.html

posted on 2010-08-18 14:10 我風 閱讀(7085) 評論(0)  編輯 收藏 引用
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

C++

MyFavorite

搜索

  •  

積分與排名

  • 積分 - 328337
  • 排名 - 75

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久成人精品一区二区三区| 日韩亚洲欧美高清| 欧美gay视频激情| 久久成人精品无人区| 亚洲在线一区二区| 久久精品日产第一区二区| 久久久久综合一区二区三区| 免费看av成人| 国产精品超碰97尤物18| 国产精品麻豆成人av电影艾秋| 国产精品激情电影| 国产一区二区三区成人欧美日韩在线观看| 精品va天堂亚洲国产| 亚洲精品一区中文| 午夜精品免费| 免费h精品视频在线播放| 亚洲国产欧美不卡在线观看| 亚洲欧洲一区二区三区| 亚洲免费婷婷| 欧美岛国激情| 国产亚洲精品资源在线26u| 91久久视频| 欧美在线亚洲| 亚洲免费av片| 免费亚洲一区二区| 国产精品亚发布| 亚洲精品在线看| 久久精品中文字幕一区| 欧美黄色视屏| 欧美亚洲日本网站| 欧美激情精品久久久久久蜜臀 | 一区二区三区四区精品| 午夜日韩在线观看| 欧美激情第三页| 午夜视频在线观看一区二区| 欧美刺激性大交免费视频| 国产视频欧美视频| 一区二区三区.www| 欧美99久久| 久久精品国产亚洲精品| 国产精品女人久久久久久| 亚洲精品女av网站| 欧美 日韩 国产一区二区在线视频 | 欧美伦理在线观看| 99天天综合性| 亚洲欧美国产视频| 亚洲激情女人| 久热爱精品视频线路一| 国产一区免费视频| 久久国产日韩欧美| 性欧美1819sex性高清| 国产精品一区二区a| 亚洲欧美国产毛片在线| 一区二区日韩伦理片| 欧美精品综合| 一区二区日韩| 一区二区国产精品| 国产精品乱人伦一区二区| 亚洲性感美女99在线| 99xxxx成人网| 欧美性猛交xxxx乱大交退制版| 亚洲卡通欧美制服中文| 亚洲国产精品久久久久| 欧美好骚综合网| 一本色道88久久加勒比精品| 亚洲精品网址在线观看| 欧美日韩久久| 性欧美暴力猛交另类hd| 亚洲欧美中文日韩v在线观看| 国产欧美日韩中文字幕在线| 久久国产欧美精品| 噜噜爱69成人精品| 一区二区三区四区五区在线| 一区二区三区高清不卡| 国产精品亚洲一区二区三区在线| 久久se精品一区二区| 久久久久在线观看| 日韩午夜激情| 亚洲欧美在线一区二区| 在线电影国产精品| 亚洲精品一区在线观看香蕉| 国产精品高潮呻吟久久| 久久亚洲不卡| 欧美日韩不卡| 久久久女女女女999久久| 欧美电影美腿模特1979在线看| 中文av字幕一区| 亚洲欧美不卡| 亚洲美女毛片| 久久成人精品| 亚洲一区二区综合| 老司机成人在线视频| 亚洲欧美日韩国产另类专区| 久久精品国产亚洲精品| 一区二区精品国产| 欧美在线一二三四区| 亚洲日本成人网| 午夜视频一区二区| 亚洲手机在线| 欧美成人一区二区| 久久久国产一区二区三区| 欧美精品一区二区三区四区| 久久精品国产第一区二区三区| 欧美精品一区二区三区很污很色的| 久久aⅴ国产紧身牛仔裤| 欧美激情一区二区三区全黄| 亚洲第一页在线| 中文国产一区| 欧美在线视频免费观看| 一区二区三区黄色| 久久五月天婷婷| 欧美一区二区三区精品电影| 欧美激情免费观看| 久久久高清一区二区三区| 欧美成人亚洲成人| 噜噜噜噜噜久久久久久91| 欧美色图天堂网| 91久久精品美女高潮| 在线不卡免费欧美| 久久国产精品免费一区| 先锋影音网一区二区| 欧美视频日韩| 一区二区久久久久| 一本一本久久| 欧美日韩在线免费观看| 最新日韩av| 亚洲欧洲在线看| 久久综合中文| 欧美顶级少妇做爰| 亚洲国产欧美日韩精品| 久久综合99re88久久爱| 久久综合999| 一区二区三区在线免费观看| 久久精品国产第一区二区三区最新章节 | 中文av一区二区| 在线视频欧美日韩| 欧美色道久久88综合亚洲精品| 亚洲精品网站在线播放gif| 亚洲精品一区二区三| 欧美福利视频一区| 亚洲日韩成人| 宅男在线国产精品| 国产精品久久久久9999吃药| 亚洲午夜精品久久久久久浪潮| 亚洲欧美另类在线| 国产伦精品一区二区三区免费 | 国产嫩草影院久久久久| 亚洲一级免费视频| 久久国产精品高清| 国内精品一区二区三区| 久久久蜜桃精品| 国产免费观看久久黄| 久久不射2019中文字幕| 久久在线免费视频| 91久久精品日日躁夜夜躁国产| 欧美激情在线观看| 日韩一区二区免费看| 欧美在线在线| 亚洲国产综合91精品麻豆| 欧美经典一区二区| 一区二区三区免费看| 久久蜜桃资源一区二区老牛 | 免费短视频成人日韩| 亚洲黄色有码视频| 在线一区二区三区做爰视频网站| 国产精品久久9| 久久精品一区蜜桃臀影院| 亚洲国产另类久久精品| 午夜精品久久久久久久99樱桃| 影音先锋日韩有码| 欧美视频在线一区| 久久久777| 一个色综合av| 欧美成人四级电影| 午夜精品久久久久久99热软件| 樱花yy私人影院亚洲| 欧美激情乱人伦| 亚洲欧美电影在线观看| 欧美国产一区二区三区激情无套| 亚洲一区二区黄| 亚洲国产欧美在线人成| 国产伦精品一区二区三区免费 | 亚洲国产精品www| 午夜伦理片一区| 亚洲欧洲日韩女同| 国产午夜精品全部视频在线播放| 欧美激情精品久久久久久黑人 | 亚洲精品久久视频| 国产九九精品视频| 欧美日韩成人一区二区三区| 久久精品国产91精品亚洲| 这里是久久伊人| 欧美不卡高清| 久久精品99| 欧美在线黄色| 午夜天堂精品久久久久| 一区二区三区色| 亚洲美女区一区| 日韩视频在线一区| 亚洲欧洲日韩综合二区|