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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 3D 编程学习总结

發(fā)布時(shí)間:2025/4/14 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 3D 编程学习总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linux下應(yīng)用OGRE開發(fā)3D


linux下應(yīng)用OGRE開發(fā)3D的資料網(wǎng)上很少,今天抽空整理一下。

大部分內(nèi)容參考OGRE主頁http://www.ogre3d.org/。

首先根據(jù)主頁提示,我們可以利用已有資源構(gòu)建一個(gè)工程,具體步驟如下:

第一步,準(zhǔn)備工作,確定你是在linux環(huán)境下,進(jìn)入終端,輸入一下命令:

編譯和配置

sudo apt-get install build-essential automake libtool

需要的依賴

sudo apt-get install libfreetype6-dev libfreeimage-dev libzzip-dev libxrandr-dev libxaw7-

dev freeglut3-dev

下面是可選項(xiàng),一般還是裝上比較穩(wěn)妥,不然后面出現(xiàn)問題不易查找

sudo apt-get install nvidia-cg-toolkit libois-dev libboost-thread-dev

sudo apt-get install doxygen graphviz libcppunit-dev

至此我們的準(zhǔn)備工作已完成。接下來就要下載工程源代碼,然后編譯。

第二步,下載并編譯工程:

下載工程源碼文件:http://www.ogre3d.org/download/source/OGRE 1.7.4 Source for Linux / OSX

解壓文件到/home目錄下:

tar xjf ogre_src_v1-7-4.tar.bz2


進(jìn)入目錄:


cd ogre_src_v1-7-4


新建文件build,這個(gè)文件時(shí)用來存放編譯工程項(xiàng)目的,所有的編譯內(nèi)容都將放在此目錄下:


mkdir build


進(jìn)入此目錄:


cd build


由于此OGRE工程采用的CMake工具鏈進(jìn)行編譯。所以使用CMake命令開始編譯:


cmake ..


編譯器會根據(jù)CMakeLists.txt產(chǎn)生一個(gè)新的CMakeFile文件,接下來的編譯就和Make編譯一樣:


make -j2


如過此處顯示拒絕情況可以加sudo:sudo make -j2


最后一步:


sudo make install


所有的編譯工作已完成,下面就是執(zhí)行工程,看看3D效果的,這里還是要說明一下,如果你的電腦不支


持3D那就郁悶吧,因?yàn)檫@直接影響3D的渲染,結(jié)果當(dāng)然是沒辦法看到執(zhí)行的結(jié)果。如果支持3D渲染就繼


續(xù)一下操作吧!


cd build (這步已經(jīng)執(zhí)行了,只是告訴一下是在這個(gè)目錄下)


cd bin


看到可執(zhí)行文件了吧!


./Samplexxxxxxx ?這個(gè)文件名記不全了,開頭那幾個(gè)字母的文件就這一個(gè),執(zhí)行后會彈出一個(gè)界面,然


后選擇rendersystem,按住不放選中下來菜單,接下來就可以進(jìn)入了,這里你會看到所有你編譯的例子


,3D的,太棒了!如果愿意,你可以修改源文件參數(shù),重新編譯。
========

Android+Unity3D簡單的物體運(yùn)動



  我們來了解一下Translate的使用
  首先我們來看看場景的搭建:建一個(gè)立方體,加一個(gè)點(diǎn)光源。
  我們要實(shí)現(xiàn)的就是讓場景中的立方體延X軸嗖嗖的移動
  那么我們在Project新建一個(gè)js腳本Creat->Javascript
  鍵入代碼
  function Update ()?
{
? ? ? ? transform.Translate(Vector3(1,0,0));
}
  然后將js文件拖到Hierarchy面板的立方體上實(shí)現(xiàn)綁定。
  運(yùn)行一下,我們可以看到,立方體嗖的一聲不見了。它一定是肚子餓了趕去吃飯了。
  好了,我們來修改代碼讓它慢一點(diǎn)。
  function Update ()?
{
? ? ? ? transform.Translate(Vector3(1,0,0)*Time.deltaTime);
}
  運(yùn)行一下,這會它老實(shí)了,慢慢的移動了。
  這是怎么回事呢。接下來我們一步一步的分解代碼。
  首先Update()沒什么好講的了,一直在用,相信大家都明白怎么回事。
  接下來是
  transform:場景中的每一個(gè)對象都有一個(gè)transform,用來儲存和控制物體的位置,旋轉(zhuǎn)和縮放。
  Translate:是transform的函數(shù),用來移動物體。它接受一個(gè)三維向量(Vector3)參數(shù)來移動。其


實(shí)它還有第二個(gè)參數(shù),就是按照自身坐標(biāo)軸移動還是按照世界坐標(biāo)軸移動。這里暫且不表。
  Vector3:表示3D的向量和點(diǎn)。3個(gè)參數(shù)分別代表了向量x,y,z。
  transform.Translate(Vector3(1,0,0));這句代碼的意思就是,讓被綁定的物體,也就是場景中的


立方體,向x軸的方向移動1個(gè)單位.
  Time.deltaTime:是一個(gè)時(shí)間增量,我想應(yīng)該是這一幀的時(shí)間。像flash中的一秒30幀,每幀多少秒


之類的。在這個(gè)程序中它的值是0.016左右。原本移動一個(gè)單位,現(xiàn)在乘以0.016,那肯定慢了。也就是


說,它的作用其實(shí)就是減慢移動的速度。
  OK。
  本文工程源碼下載:
  免費(fèi)下載地址在
  用戶名與密碼都是
  具體下載目錄在 /pub/Android源碼集錦/2011年/11月/Android+Unity3D簡單的物體運(yùn)動/
========

Linux下的OpenGL編程



? ? OpenGL是一個(gè)工業(yè)標(biāo)準(zhǔn)的三維計(jì)算機(jī)圖形軟件接口,它由SGI公司發(fā)布并廣泛應(yīng)用于Unix、OS/2、


Windows/NT等多種平臺,當(dāng)然也包括Linux。在Windows/NT平臺上,一般的開發(fā)工具如VC、BC、Fortran?


Powerstation等都支持直接的OpenGL應(yīng)用的開發(fā);在商用Unix平臺上,Motif同樣很好的支持OpenGL(畢


竟OpenGL最初是工作站上的東西);那么在Linux上呢??
   本文不著力于OpenGL編程的方法和技巧,而是把重點(diǎn)放在如何在Linux平臺上開發(fā)OpenGL程序。介


紹支持OpenGL的幾個(gè)工具包,并輔以詳細(xì)的實(shí)例來闡述。?


1. Linux下OpenGL編程環(huán)境簡介?


   OpenGL不是自由軟件,它的版權(quán)、商標(biāo)(OpenGL這個(gè)名字)都?xì)wSGI公司所有。但在Linux下有


OpenGL的取代產(chǎn)品:Mesa。Mesa提供和OpenGL幾乎完全一致的接口,對利用OpenGL API編程的人來說,


幾乎感覺不到任何差異。Mesa是遵循GPL協(xié)議(部分遵循LGPL協(xié)議)的自由軟件,而且,正是由于Mesa的


自由性,它在對新硬件的支持度等方面都超過了OpenGL。Mesa可以從www.mesa3d.org取得。得到Mesa后


,依照說明即可生成編寫程序所需要的動態(tài)、靜態(tài)連接庫和頭文件。?
   了解OpenGL的讀者都知道,OpenGL本身只提供三維圖形接口,不具備繪制窗口、接受響應(yīng)、處理消


息等功能。這些功能必須由第三方的開發(fā)環(huán)境提供,如上面提及的VC等等。有人會想,既然在Motif下可


以開發(fā)OpenGL程序,那么,使用Linux下的Lesstif也應(yīng)該可以。是的,的確可以,但不幸的是,Linux下


的Lesstif是一個(gè)很不成熟的產(chǎn)品,而且也不具有可移植性,所以應(yīng)用Lesstif開發(fā)的人很少。下面我們


簡單介紹幾個(gè)常用的工具包。?
   在Linux下開發(fā)OpenGL程序,最常用的工具是GLUT(The OpenGL Utility Toolkit)。它可以創(chuàng)建


一個(gè)或多個(gè)OpenGL窗口,響應(yīng)、處理用戶的交互操作、簡單的彈出式菜單以及一些內(nèi)置的繪圖和字體處


理功能。GLUT和OpenGL一樣,可以移植于多種平臺。由于它良好的表現(xiàn),現(xiàn)在它已經(jīng)成為Mesa發(fā)布的標(biāo)


準(zhǔn)套件之一。?
   另一個(gè)很好的開發(fā)工具包是FLTK(Fast Light Tool Kit),這是一個(gè)用C++編寫的圖形界面開發(fā)工


具。和GTK++、KDE不同,它只關(guān)注于圖形界面的設(shè)計(jì),而盡量不牽涉其他的實(shí)際應(yīng)用。這個(gè)特點(diǎn)使得它


比其他許多開發(fā)工具簡練和高效。而且,它同樣也是一個(gè)具有良好移植性的開發(fā)工具。事實(shí)上,它現(xiàn)在


正引來越來越多人的興趣,許多商業(yè)軟件(尤其是致力于開發(fā)嵌入式桌面系統(tǒng)的軟件)都選用了它作為


圖形界面的開發(fā)工具。關(guān)于它的詳細(xì)情況參見作者的另一篇文章《FLTK---一個(gè)優(yōu)秀的圖形界面開發(fā)工具


包》。在FLTK里有一個(gè)組件:Fl_Gl_Window是專門的OpenGL窗口,利用它開發(fā)OpenGL程序相當(dāng)方便。?
   最后要提的是GTK和KDE,它們是目前在Linux下用的最多的開發(fā)工具。GTK本身并不直接支持OpenGL


(新的版本是否支持,尚不太清楚),但有人開發(fā)了支持OpenGL的Widget,叫做GLAREA,需要的讀者可


以到網(wǎng)上去查找或者與本文作者聯(lián)系。KDE提供了對OpenGL的支持,但它的缺陷之一是KDE只運(yùn)行于Linux


系統(tǒng),不具有可移植性。在這里,我將主要向大家介紹前面兩個(gè)工具包。?


2. 用GLUT開發(fā)OpenGL程序?


2.1 如何獲得?
   GLUT可以從Mesa中獲得,讀者也可以直接到它的主頁去下載它:               


       http://reality.sgi.com/employees/mjk_asd/glut3/glut3.html。按照說明安裝后在


OpenGL的頭文件GL目錄下將會有GLUT的頭文件glut.h,同時(shí)安裝的還有庫文件libglut.a或libglut.so。


有了它們以后,就可以用GLUT來編程了。?


2.2 一個(gè)簡單的例子?
下面,我們先看一個(gè)簡單的例子。這個(gè)例子畫一個(gè)立體的球。?
/* light.c?
此程序利用GLUT繪制一個(gè)OpenGL窗口,并顯示一個(gè)加以光照的球。?
*/?
/* 由于頭文件glut.h中已經(jīng)包含了頭文件gl.h和glu.h,所以只需要include 此文件*/?
# include < GL / glut.h >?
# include < stdlib.h >?


/* 初始化材料屬性、光源屬性、光照模型,打開深度緩沖區(qū) */?
void init ( void )?
{?
GLfloat mat_specular [ ] = { 1.0, 1.0, 1.0, 1.0 };?
GLfloat mat_shininess [ ] = { 50.0 };?
GLfloat light_position [ ] = { 1.0, 1.0, 1.0, 0.0 };?


glClearColor ( 0.0, 0.0, 0.0, 0.0 );?
glShadeModel ( GL_SMOOTH );?


glMaterialfv ( GL_FRONT, GL_SPECULAR, mat_specular);?
glMaterialfv ( GL_FRONT, GL_SHININESS, mat_shininess);?
glLightfv ( GL_LIGHT0, GL_POSITION, light_position);?


glEnable (GL_LIGHTING);?
glEnable (GL_LIGHT0);?
glEnable (GL_DEPTH_TEST);?
}?
/*調(diào)用GLUT函數(shù),繪制一個(gè)球*/?
void display ( void )?
{?
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);?
glutSolidSphere (1.0, 40, 50);?
glFlush ();?
}?
/* 定義GLUT的reshape函數(shù),w、h分別是當(dāng)前窗口的寬和高*/?
void reshape (int w, int h)?
{?
glViewport (0, 0, (GLsizei) w, (GLsizei) h);?
glMatrixMode (GL_PROJECTION);?
glLoadIdentity ( );?
if (w <= h)?
glOrtho (-1.5, 1.5, -1.5 * ( GLfloat ) h / ( GLfloat ) w,?
1.5 * ( GLfloat ) h / ( GLfloat ) w, -10.0, 10.0 );?
else?
glOrtho (-1.5 * ( GLfloat ) w / ( GLfloat ) h,?
1.5 * ( GLfloat ) w / ( GLfloat ) h, -1.5, 1.5, -10.0, 10.0);?
glMatrixMode ( GL_MODELVIEW );?
glLoadIdentity ( ) ;?
}?


/* 定義對鍵盤的響應(yīng)函數(shù) */?
void keyboard ( unsigned char key, int x, int y)?
{?
/*按Esc鍵退出*/?
switch (key) {?
case 27:?
exit ( 0 );?
break;?
}?
}?


int main(int argc, char** argv)?
{?
/* GLUT環(huán)境初始化*/?
glutInit (&argc, argv);?
/* 顯示模式初始化 */?
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);?
/* 定義窗口大小 */?
glutInitWindowSize (300, 300);?
/* 定義窗口位置 */?
glutInitWindowPosition (100, 100);?
/* 顯示窗口,窗口標(biāo)題為執(zhí)行函數(shù)名 */?
glutCreateWindow ( argv [ 0 ] );?
/* 調(diào)用OpenGL初始化函數(shù) */?
init ( );?
/* 注冊O(shè)penGL繪圖函數(shù) */?
glutDisplayFunc ( display );?
/* 注冊窗口大小改變時(shí)的響應(yīng)函數(shù) */?
glutReshapeFunc ( reshape );?
/* 注冊鍵盤響應(yīng)函數(shù) */?
glutKeyboardFunc ( keyboard );?
/* 進(jìn)入GLUT消息循環(huán),開始執(zhí)行程序 */?
glutMainLoop( );?
return 0;?
}?
   從上面的例子中我們可以看出,GLUT采用一種函數(shù)注冊的機(jī)制來實(shí)現(xiàn)OpenGL繪圖。它的一般流程正


如我們上面的注釋所寫,先是初始化函數(shù),定義窗口,然后執(zhí)行OpenGL初始化程序,這主要是一些需要


全局設(shè)置的環(huán)境變量。接下來是注冊相應(yīng)事件的函數(shù),包括完成實(shí)際繪圖工作的繪制程序、改變OpenGL


窗口大小時(shí)的響應(yīng)函數(shù)、鍵盤事件的響應(yīng)函數(shù)和鼠標(biāo)時(shí)間的響應(yīng)函數(shù)。最后調(diào)用glutMainLoop()函數(shù)


,執(zhí)行在glutReshapeFunc和glutDisplayFunc中注冊的函數(shù),進(jìn)入消息循環(huán)。當(dāng)用戶通過鍵盤和鼠標(biāo)進(jìn)


行交互操作時(shí),它即調(diào)用相應(yīng)的函數(shù)。?
   我們編譯上面的名為light.c的源文件。假定頭文件(目錄GL)放在目錄/usr/local/include下,


庫文件(動態(tài)庫libGL.so.*、libGLU.so.*和libglut.so.*)在目錄/usr/local/lib目錄下,并已經(jīng)運(yùn)行


了ldconfig,則編譯命令為:?
   gcc -I/usr/local/include -L/usr/local/lib -L/usr/X11R6/lib -lglut -lGLU -lGL?
   -lX11 -lXext -lXmu -lXi -lm light.c -o light?
   其中的-lX11 -lXert -lXi -lm 是繪制窗口需要的X的庫,它們默認(rèn)在 /usr/X11R6/lib目錄下。下


面的圖一即是運(yùn)行l(wèi)ight的結(jié)果,當(dāng)按下ESC鍵時(shí),程序會退出。調(diào)整窗口大小時(shí),圖形自動重繪。注意


在上面reshape函數(shù)中,比較w和h的值給出的取景變換,這是一個(gè)常用的技巧。?




          圖一?


2.3 GLUT簡介?
   GLUT常用的函數(shù)主要包括以下幾類:?
   · 初始化函數(shù)。主要就是上面例子中的幾個(gè)函數(shù)。?
   · 消息循環(huán)函數(shù)。即glutMainLoop函數(shù)。?
   · 窗口管理函數(shù)。包括窗口的創(chuàng)建、修改、刪除等。GLUT支持多個(gè)OpenGL窗口。?
   · Overlay管理函數(shù)。當(dāng)用戶顯卡支持Overlay方式時(shí),可以用這些函數(shù)來創(chuàng)建、管理、刪除GLUT


窗口的Overlay。?
   · 菜單管理函數(shù)。定制菜單以及定義菜單相應(yīng)事件。?
   · 事件注冊函數(shù)。除了上面例子中提及的外,還有鼠標(biāo)、空間球(提供三維操作的裝備)、特殊


鍵(Ctrl、Shift、F系列鍵、方向鍵)等設(shè)備的事件注冊函數(shù)。?
   · 字體繪制函數(shù)。用多種字體、字號供選擇。?
   · 簡單幾何體的繪制程序。包括球、立方體、錐體、圓環(huán)體、十二面體、八面體、四面體、二十


面體和茶壺。每種幾何體都有實(shí)體和虛線兩個(gè)選項(xiàng)。?
   · 取狀態(tài)函數(shù)。類似OpenGL的glGet系列函數(shù),取得GLUT的各種狀態(tài)值。?
   · 顏色索引表函數(shù)。?
這些函數(shù)極大的方便了用戶的OpenGL編程。下面我們簡略介紹一下幾個(gè)常用的函數(shù)。?
   · glutPostRedisplay()。發(fā)送消息給函數(shù)glutMainLoop,請求重繪本窗口。利用此函數(shù)可以實(shí)


現(xiàn)動畫。例如在上面的例子中,我們添加一個(gè)全局變量:float move=0.0。并定義函數(shù)MoveSphere如下


:?
void MoveSphere ( void )?
{?
for(int i=0;i<100;i++){?
if ( move<1.0) move+=0.1;?
else move=0.0;?
glutPostRedisplay ( );?
}?
}?
同時(shí)修改函數(shù)display()為:?
void display ( void )?
{?
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);?
glTranslatef ( move, 0.0, 0.0);?
glutSolidSphere (1.0, 40, 50);?
glFlush ();?
}?
   這樣,當(dāng)我們執(zhí)行函數(shù)MoveSphere時(shí),就會看到上面的球從中間向右移動一段距離,然后又回到中


心,繼續(xù)移動。?
   · glutIdleFunc()函數(shù)。這個(gè)函數(shù)注冊一個(gè)空閑程序一直在后臺運(yùn)行。我們將上面的


MoveSphere函數(shù)加以修改,去掉循環(huán),然后在light.c程序的glutMainLoop()函數(shù)調(diào)用前添加一行代碼


:glutIdleFunc (MoveSphere);這樣我們不需要直接調(diào)用函數(shù)MoveSphere,程序一運(yùn)行,它就被反復(fù)調(diào)


用直到我們退出程序?yàn)橹?#xff0c;這和我們前一版本中它只能循環(huán)特定的步數(shù)不一樣。?
   · glutTimerFunc()函數(shù)。和前面的glutIdleFunc()函數(shù)類似,但不同的是它注冊的函數(shù)每隔


特定的事件發(fā)生。時(shí)間的單位是毫秒。?
   · glutBitmapCharacter()函數(shù)。用位圖方式按指定的字體繪制一個(gè)字符串。?
   · glutSolidSphere()函數(shù)。這是繪制幾何體類函數(shù)中的一個(gè)。此函數(shù)繪制一個(gè)球體。?


2.4 一個(gè)更有代表性的例子?
   下面我們來看一個(gè)稍稍復(fù)雜的例子。我們繪制一個(gè)平面,用戶的左鍵點(diǎn)擊被自動連接成一個(gè)多邊形


。當(dāng)用戶點(diǎn)擊右鍵,會彈出菜單供用戶選擇。用戶可以選擇清除、鑲嵌和退出。選擇清除將回到初始狀


態(tài);選擇鑲嵌程序自動對多邊形進(jìn)行三角剖分;選擇退出則終止程序。(見圖二、圖三和圖四)?




       圖二                圖三               圖四?
/* tessdemo.c 多邊形鑲嵌的例子,使用函數(shù)gluTessCallback和函數(shù)gluTessVertex。*/?
#include?
#include?
#include?
#include?


/* 定義允許的最大多邊形數(shù)、多邊形允許的最大頂點(diǎn)數(shù)和可鑲嵌的最大三角形數(shù)*/?
#define MAX_POINTS 256?
#define MAX_CONTOURS 32?
#define MAX_TRIANGLES 256?


/* 用于菜單選項(xiàng)的枚舉類型 */?
typedef enum{ QUIT, TESSELATE, CLEAR } menu_entries;?
static mode_type mode;?


/* 定義繪制模式的枚舉類型 */?
typedef enum{ DEFINE, TESSELATED } mode_type;?
static int menu;?
static GLsizei width, height; /* OpenGL窗口的大小 */?
static GLuint contour_cnt; /* 記錄多邊形數(shù)目 */?
static GLuint triangle_cnt; /* 記錄三角形數(shù)目 */?
static GLuint list_start; /* 用于顯示列表 */?


/* 多邊形結(jié)構(gòu) */?
static struct {?
GLfloat p[MAX_POINTS][2];?
GLuint point_cnt;?
} contours [ MAX_CONTOURS ] ;?


/* 三角形結(jié)構(gòu) */?
static struct {?
GLsizei no;?
GLfloat p [3] [2];?
GLclampf color [3] [3];?
} triangles [ MAX_TRIANGLES ];?


/* 窗口大小改變時(shí),設(shè)定width和height值,用于重新繪制網(wǎng)格 */?
void set_screen_wh ( GLsizei w, GLsizei h )?
{ width = w; height = h; }?


void tesse ( void )?
{ /* 鑲嵌函數(shù),調(diào)用gluTess* 函數(shù)實(shí)現(xiàn)*/ }?


/* 對點(diǎn)擊鼠標(biāo)左鍵事件的響應(yīng)函數(shù):更新當(dāng)前多邊形頂點(diǎn)數(shù)組,并重新繪制 */?
void left_down ( int x1, int y1 )?
{?
GLfloat P[2];?
GLuint point_cnt;?


/* 將GLUT窗口坐標(biāo)變換為GL坐標(biāo):前者(0,0)在左上角而后者在左下角*/?
P[0] = x1; P[1] = height - y1;?


/* 更新頂點(diǎn)數(shù)據(jù) */?
point_cnt = contours [ contour_cnt ] . point_cnt;?
contours [ contour_cnt ] . p [ point_cnt ][ 0 ] = P [ 0 ];?
contours [ contour_cnt ]. p [ point_cnt ] [ 1 ] = P [ 1 ];?


/* 繪制新添加的邊,若為第一個(gè)點(diǎn),則繪制一個(gè)點(diǎn) */?
glBegin ( GL_LINES );?
if ( point_cnt ) {?
glVertex2fv ( contours[contour_cnt].p[point_cnt-1] );?
glVertex2fv ( P );?
}?
else {?
glVertex2fv ( P );?
glVertex2fv ( P );?
}?
glEnd();?
glFinish();?
contours[contour_cnt].point_cnt++;?
}?


/* 點(diǎn)擊鼠標(biāo)中鍵的響應(yīng)事件,有些系統(tǒng)可以用同時(shí)點(diǎn)擊左右鍵模擬:結(jié)束一個(gè)多邊形 */?
void middle_down( int x1, int y1 )?
{?
GLuint point_cnt;?
(void) x1;?
(void) y1;?
point_cnt = contours[contour_cnt].point_cnt;?
/* 連接起始點(diǎn)和最后一個(gè)點(diǎn),構(gòu)成一個(gè)完整的多邊形 */?
if ( point_cnt > 2 )?
{?
glBegin( GL_LINES );?
glVertex2fv( contours[contour_cnt].p[0] );?
glVertex2fv( contours[contour_cnt].p[point_cnt-1] );?
contours[contour_cnt].p[point_cnt][0] = -1;?
glEnd();?
glFinish();?
contour_cnt++;?
contours[contour_cnt].point_cnt = 0;?
}?
}?


/* 處理鼠標(biāo)響應(yīng)的函數(shù),根據(jù)按鍵的類型調(diào)用不同的函數(shù):左鍵和中鍵。 */?
void mouse_clicked( int button, int state, int x, int y )?
{?
/* 將OpenGL的像素坐標(biāo)換為背景的網(wǎng)格坐標(biāo),背景網(wǎng)格為邊長為10的小正方形 */?
x -= x%10;?
y -= y%10;?
switch ( button ) {?
case GLUT_LEFT_BUTTON: /* GLUT發(fā)現(xiàn)左鍵被點(diǎn)擊 */?
if ( state == GLUT_DOWN ) {?
left_down( x, y );?
}?
break;?
case GLUT_MIDDLE_BUTTON: /* 中鍵被點(diǎn)擊 */?
if ( state == GLUT_DOWN ) {?
middle_down( x, y );?
}?
break;?
}?
}?
/* OpenGL繪制函數(shù),有兩種模式 */?
void display( void )?
{?
GLuint i,j;?
GLuint point_cnt;?


glClear( GL_COLOR_BUFFER_BIT );?
switch ( mode )?
{?
case DEFINE: /* 多邊形定義階段 */?
/* 繪制網(wǎng)格,單個(gè)網(wǎng)格大小為10像素,網(wǎng)格數(shù)目取決于OpenGL窗口大小 */?
glColor3f ( 0.6, 0.5, 0.5 );?
glBegin ( GL_LINES );?
for ( i = 0 ; i < width ; i += 10 ){?
for ( j = 0 ; j < height ; j += 10 ) {?
glVertex2i ( 0, j );?
glVertex2i ( width, j );?
glVertex2i ( i, height );?
glVertex2i ( i, 0 );?
}?
}?
/* 繪制多邊形 */?
glColor3f( 1.0, 1.0, 0.0 );?
for ( i = 0 ; i <= contour_cnt ; i++ ) {?
point_cnt = contours[i].point_cnt;?
glBegin( GL_LINES );?
switch ( point_cnt ) {?
case 0:?
break;?
case 1:?
glVertex2fv ( contours[i].p[0] );?
glVertex2fv ( contours[i].p[0] );?
break;?
case 2:?
glVertex2fv( contours[i].p[0] );?
glVertex2fv( contours[i].p[1] );?
break;?
default:?
--point_cnt;?
for ( j = 0 ; j < point_cnt ; j++ ) {?
glVertex2fv ( contours [ i ]. p [ j ] );?
glVertex2fv ( contours [ i ] .p [ j+1 ] );?
}?
if ( contours [ i ].p [ j+1 ] [ 0 ] == -1 )?
{?
glVertex2fv ( contours [ i ]. p [ 0 ] );?
glVertex2fv ( contours [ i ] .p [ j ] );?
}?
break;?
}?
glEnd();?
}?
glFinish();?
break;?


case TESSELATED: /* 繪制鑲嵌后的多邊形,顯示列表由函數(shù)tesse()給出 */?
glColor3f( 0.7, 0.7, 0.0 );?
glCallList( list_start );?
glLineWidth( 2.0 );?
glCallList( list_start + 1 );?
glLineWidth( 1.0 );?
glFlush();?
break;?
}?
glColor3f( 1.0, 1.0, 0.0 );?
}?


/* 菜單選項(xiàng)clear的響應(yīng)函數(shù),將所有變量清零,繪制模式設(shè)為DEFINE */?
void clear( void )?
{?
contour_cnt = 0;?
contours[0].point_cnt = 0;?
triangle_cnt = 0;?
mode = DEFINE;?
glDeleteLists( list_start, 2 );?
list_start = 0;?
}?


/* 菜單選項(xiàng)quit的響應(yīng)函數(shù),退出程序 */?
void quit( void )?
{?
exit( 0 );?
}?


/* 定義菜單的響應(yīng)函數(shù) */?
void menu_selected( int entry )?
{?
switch ( entry ) {?
case CLEAR:?
clear ( );?
break;?
case TESSELATE:?
tesse ( );?
break;?
case QUIT:?
quit ( );?
break;?
}?
/* 選擇菜單后重繪OpenGL窗口 */?
glutPostRedisplay();?
}?


/* 定義快捷鍵響應(yīng)函數(shù) */?
void key_pressed( unsigned char key, int x, int y )?
{?
/* 在此例子中,不需要用表明鼠標(biāo)位置的變量x和y */?
( void ) x; ( void ) y;?
/* 針對不同按鍵,定義動作 */?
switch ( key ) {?
case 'c':?
case 'C':?
clear();?
break;?
case 't':?
case 'T':?
tesse();?
break;?
case 'q':?
case 'Q':?
quit();?
break;?
}?
/* 按鍵后重繪窗口 */?
glutPostRedisplay();?
}?


/* 執(zhí)行一些程序的初始化過程 */?
void myinit( void )?
{?
/* 設(shè)置窗口背景顏色*/?
glClearColor( 0.4, 0.4, 0.4, 0.0 );?
glShadeModel( GL_FLAT );?
glPolygonMode( GL_FRONT, GL_FILL );?


/* 創(chuàng)建一個(gè)菜單,并定義菜單項(xiàng)及該菜單對應(yīng)的響應(yīng)函數(shù) */?
menu = glutCreateMenu( menu_selected );?
glutAddMenuEntry( "clear", CLEAR );?
glutAddMenuEntry( "tesselate", TESSELATE );?
glutAddMenuEntry( "quit", QUIT );?
/* 定義菜單動作方式:點(diǎn)擊右鍵彈出 */?
glutAttachMenu( GLUT_RIGHT_BUTTON );?


/* 注冊鼠標(biāo)事件響應(yīng)函數(shù) */?
glutMouseFunc( mouse_clicked );?
/* 注冊鍵盤事件響應(yīng)函數(shù) */?
glutKeyboardFunc( key_pressed );?


contour_cnt = 0;?
mode = DEFINE;?
}?


/* 定義窗口大小改變時(shí)的響應(yīng) */?
static void reshape( GLsizei w, GLsizei h )?
{?
glViewport( 0, 0, w, h );?


glMatrixMode( GL_PROJECTION );?
glLoadIdentity();?
glOrtho( 0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0 );?
glMatrixMode( GL_MODELVIEW );?
glLoadIdentity();?
set_screen_wh( w, h );?
}?


int main( int argc, char **argv )?
{?
/* 創(chuàng)建窗口 */?
glutInit ( & argc, argv );?
glutInitDisplayMode ( GLUT_SINGLE | GLUT_RGB );?
glutInitWindowSize ( 400, 400 );?
glutCreateWindow( argv[0] );?


myinit();?


glutDisplayFunc( display );?
glutReshapeFunc( reshape );?


glutMainLoop();?
return 0;?
}?


3. 用FLTK開發(fā)OpenGL程序?


   從上面的例子我們不難看出,雖然GLUT為實(shí)現(xiàn)OpenGL編程提供了可能,但是作為應(yīng)用程序,它是遠(yuǎn)


遠(yuǎn)不夠的。它只提供了原始、簡陋的控制和操作方式,沒有一般應(yīng)用程序所需要的按鈕、菜單條、輸入


框等控件。事實(shí)上,GLUT并不是用來單獨(dú)開發(fā)應(yīng)用程序的,它是用作介于OpenGL函數(shù)接口和一般的圖形


界面開發(fā)接口之間的過渡層。在這一點(diǎn)上,它無疑是成功的。Mesa選擇它作為標(biāo)準(zhǔn)套件分發(fā),大多數(shù)圖


形界面開發(fā)工具也保持與它的兼容性。從而使得用GLUT開發(fā)的OpenGL程序有良好的可移植性。?
   和GLUT不同,FLTK本身是一個(gè)圖形界面開發(fā)工具,使用它完全可以開發(fā)實(shí)用的、商用的應(yīng)用程序。


FLTK用C++編寫,使用面向?qū)ο蟮拈_發(fā)技術(shù),它提供多種組件供用戶選用,每個(gè)組件有自己的屬性和事件


。在這里,我們主要講述它的OpenGL窗口組件:Fl_Gl_Window,并充分使用C++的特性。?
   這一節(jié)里,我們繪制一個(gè)可以自由旋轉(zhuǎn)、平移、放縮的小立方體。程序運(yùn)行后如圖五所示。整個(gè)窗


口是一個(gè)由Fl_Window組件定義的一般窗口,中間是一個(gè)OpenGL窗口。我們使用了一些控制工具來調(diào)整小


立方體的屬性。上面的Zoom標(biāo)尺調(diào)整它的大小,左邊和下邊各有一個(gè)平移標(biāo)尺和一個(gè)旋轉(zhuǎn)標(biāo)尺,調(diào)整小


立方體的位置和角度。這些標(biāo)尺都是FLTK的標(biāo)準(zhǔn)組件,它們的作用是根據(jù)用戶的動作返回特定的整數(shù)或


符點(diǎn)數(shù)。?






   Fl_Gl_Window最重要的是兩個(gè)虛函數(shù):draw()、handle()和成員函數(shù)redraw()。函數(shù)draw(


)中定義繪制內(nèi)容,創(chuàng)建窗口和窗口大小改變是這個(gè)函數(shù)被自動調(diào)用。函數(shù)handle()中定義對各種鍵


盤、鼠標(biāo)事件的響應(yīng)。當(dāng)有鍵盤、鼠標(biāo)事件響應(yīng)時(shí),這個(gè)函數(shù)被自動調(diào)用,如何有響應(yīng)事件的函數(shù)被定


義,則會執(zhí)行此函數(shù)。函數(shù)redraw()重繪窗口。在這個(gè)叫做CubeView的例子中,我們派生


Fl_Gl_Window,得到繪制我們這個(gè)小立方體的OpenGL窗口。?


// 文件CubeView.cxx,派生Fl_Gl_Window,得到繪制小立方體的OpenGL窗口?
#include?
#include?
#include?
#include?
#include?
// 派生類CubeView的定義?
class CubeView : public Fl_Gl_Window {?
public:?
double size; // 定義小立方體的大小,供glScalef()函數(shù)使用?
// 構(gòu)造函數(shù),派生自Fl_Gl_Window,定義窗口大小和標(biāo)題?
CubeView(int x,int y,int w,int h,const char *l=0);?
// 設(shè)置和取得垂直方向的旋轉(zhuǎn)角度,供組件標(biāo)尺調(diào)用?
void v_angle(float angle){vAng=angle;};?
float v_angle(){return vAng;};?
// 設(shè)置和取得水平方向的旋轉(zhuǎn)角度,供組件標(biāo)尺調(diào)用?
void h_angle(float angle){hAng=angle;};?
float h_angle(){return hAng;};?
// 設(shè)置水平和垂直方向的偏移量?
void panx(float x){xshift=x;};?
void pany(float y){yshift=y;};?


void draw();?
private:?
void drawCube();?
float vAng,hAng;?
float xshift,yshift;?
float boxv0[3];float boxv1[3];?
float boxv2[3];float boxv3[3];?
float boxv4[3];float boxv5[3];?
float boxv6[3];float boxv7[3];?
};?


// 構(gòu)造函數(shù)的定義?
CubeView::CubeView(int x,int y,int w,int h,const char *l)?
: Fl_Gl_Window(x,y,w,h,l)?
{?
// 設(shè)置變換初值?
vAng = 0.0;?
hAng=0.0;?
size=10.0;?
// 設(shè)置小立方體頂點(diǎn)參數(shù)?
boxv0[0] = -0.5; boxv0[1] = -0.5; boxv0[2] = -0.5;?
boxv1[0] = 0.5; boxv1[1] = -0.5; boxv1[2] = -0.5;?
boxv2[0] = 0.5; boxv2[1] = 0.5; boxv2[2] = -0.5;?
boxv3[0] = -0.5; boxv3[1] = 0.5; boxv3[2] = -0.5;?
boxv4[0] = -0.5; boxv4[1] = -0.5; boxv4[2] = 0.5;?
boxv5[0] = 0.5; boxv5[1] = -0.5; boxv5[2] = 0.5;?
boxv6[0] = 0.5; boxv6[1] = 0.5; boxv6[2] = 0.5;?
boxv7[0] = -0.5; boxv7[1] = 0.5; boxv7[2] = 0.5;?
};?


void CubeView::drawCube() {?
// 繪制一個(gè)半透明的立方體?
#define ALPHA 0.5?
glShadeModel(GL_FLAT);?
// 用不同的顏色繪制六個(gè)面?
glBegin(GL_QUADS);?
glColor4f (0.0, 0.0, 1.0, ALPHA );?
glVertex3fv ( boxv0 ); glVertex3fv ( boxv1 ); glVertex3fv ( boxv2 ); glVertex3fv( boxv3 );?


glColor4f(1.0, 1.0, 0.0, ALPHA);?
glVertex3fv ( boxv0 ); glVertex3fv ( boxv4 ); glVertex3fv ( boxv5 ); glVertex3fv ( boxv1 );?


glColor4f(0.0, 1.0, 1.0, ALPHA);?
glVertex3fv ( boxv2 ); glVertex3fv ( boxv6 ); glVertex3fv ( boxv7 ); glVertex3fv ( boxv3 );?


glColor4f(1.0, 0.0, 0.0, ALPHA);?
glVertex3fv ( boxv4 ); glVertex3fv ( boxv5 ); glVertex3fv ( boxv6 ); glVertex3fv ( boxv7 );?


glColor4f(1.0, 0.0, 1.0, ALPHA);?
glVertex3fv ( boxv0 ); glVertex3fv ( boxv3 ); glVertex3fv ( boxv7 ); glVertex3fv ( boxv4 );?


glColor4f(0.0, 1.0, 0.0, ALPHA);?
glVertex3fv ( boxv1 ); glVertex3fv ( boxv5 ); glVertex3fv ( boxv6 ); glVertex3fv ( boxv2 );?
glEnd();?


// 繪制立方體的輪廓線,一共12條?
glColor3f(1.0, 1.0, 1.0);?
glBegin(GL_LINES);?
glVertex3fv ( boxv0 ); glVertex3fv ( boxv1 );?
glVertex3fv ( boxv1 ); glVertex3fv ( boxv2 );?
glVertex3fv ( boxv2 ); glVertex3fv ( boxv3 );?
glVertex3fv ( boxv3 ); glVertex3fv ( boxv0 );?
glVertex3fv ( boxv4 ); glVertex3fv ( boxv5 );?
glVertex3fv ( boxv5 ); glVertex3fv ( boxv6 );?
glVertex3fv ( boxv6 ); glVertex3fv ( boxv7 );?
glVertex3fv ( boxv7 ); glVertex3fv ( boxv4 );?
glVertex3fv ( boxv0 ); glVertex3fv ( boxv4 );?
glVertex3fv ( boxv1 ); glVertex3fv ( boxv5 );?
glVertex3fv ( boxv2 ); glVertex3fv ( boxv6 );?
glVertex3fv ( boxv3 ); glVertex3fv ( boxv7 );?
glEnd();?
};?


void CubeView::draw() {?
if (!valid ( ) ) {?
//valid()當(dāng)窗口大小改變時(shí)改變,導(dǎo)致這一部分內(nèi)容被執(zhí)行,重新設(shè)置窗口?
glLoadIdentity();?
glViewport(0,0,w(),h());?
glOrtho(-10,10,-10,10,-20000,10000);?
glEnable(GL_BLEND);?
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);?
}?


glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );?
glPushMatrix ( );?
// 變換。參數(shù)繪被外部函數(shù)修改?
glTranslatef ( xshift, yshift, 0);?
glRotatef ( hAng, 0, 1, 0 ); glRotatef ( vAng, 1, 0, 0 );?
glScalef ( float ( size ), float ( size ) , float ( size ) );?
// 繪制立方體?
drawCube ( );?
glPopMatrix ( );?
};?
上面的類CubeView定義了一個(gè)繪制立方體的OpenGL窗口,外部函數(shù)可以調(diào)用它的成員函數(shù)v_angle、


h_angle、panx、pany等來修改這個(gè)小立方體的屬性,修改以后,可以調(diào)用函數(shù)redraw()來刷新窗口。


在下面的CubeViewUI.cxx中,我們定義類CubeViewUI,它繪制主窗口,并在其中定義了類CubeView的一


個(gè)實(shí)例:cube。它同時(shí)還定義了用來控制立方體屬性的5個(gè)標(biāo)尺,當(dāng)用戶操作標(biāo)尺時(shí),這些標(biāo)尺調(diào)用


v_angle等函數(shù)來設(shè)置繪制立方體的一些參數(shù)。這一部分和我們的主題關(guān)系不大,不給出具體的代碼。最


后,我們定義main函數(shù),它的內(nèi)容相當(dāng)?shù)暮唵巍?
#include "CubeViewUI.h"?
int main(int argc, char **argv) {?
// 定義類CubeViewUI的一個(gè)實(shí)例?
CubeViewUI *cvui=new CubeViewUI;?
// 設(shè)置FLTK窗口顯示模式?
Fl::visual(FL_DOUBLE|FL_INDEX);?
cvui->show();?
// 進(jìn)入消息循環(huán)?
return Fl::run();?
}?
我們編譯、連接并執(zhí)行程序,就可以得到如圖五所示的結(jié)果。從上面的例子我們可以看出使用FLTK編寫


OpenGL程序的一些優(yōu)點(diǎn),和GLUT它結(jié)構(gòu)清晰,使用方便,而且它和GLUT是兼容的。除了glutInit()、


glutMainLoop()等少數(shù)函數(shù)外,大部分GLUT函數(shù)可以在FLTK中使用。FLTK本身也提供了許多OpenGL函


數(shù),如繪制字符串的gl_draw()等。?


4. 結(jié)束語?


   熟悉掌握了Linux下OpenGL的開發(fā)環(huán)境距離開發(fā)OpenGL程序還有很大的距離,畢竟問題的難點(diǎn)是如


何很好的使用OpenGL的API。本文為即將在Linux下開發(fā)OpenGL的讀者作一些鋪墊和準(zhǔn)備工作,希望并相


信對大家有所幫助。
========

linux openGL "Hello world"



1. 安裝OpenGL相關(guān)工具?


  sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev?


note:
? ? ? ?libgl1-mesa-de 對應(yīng) GL庫;?
? ? ? ?libglu1-mesa-dev對應(yīng)GLU庫 TJe opengl utility ?library;?
? ? ? freeglut3-dev 對應(yīng)glut庫 ?
? ? ? mesa-common-de :This package includes the specifications for the Mesa-specific?


OpenGL extensions, the complete set of release release notes and the development header?


files common to all Mesa packages.?


2. example 上代碼:


#include <GL/glut.h>
#define window_width 640
#define window_height 480
// Main loop


void main_loop_function()
{
// Z angle


? ? static float angle;
// Clear color (screen)


// And depth (used internally to block obstructed objects)


? ? glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Load identity matrix


? ? glLoadIdentity();
// Multiply in translation matrix


? ? glTranslatef(0, 0, -10);
// Multiply in rotation matrix


? ? glRotatef(angle, 0, 0, 1);
// Render colored quad


? ? glBegin(GL_QUADS);
? ? glColor3ub(255, 000, 000);
? ? glVertex2f(-1, 1);
? ? glColor3ub(000, 255, 000);
? ? glVertex2f(1, 1);
? ? glColor3ub(000, 000, 255);
? ? glVertex2f(1, -1);
? ? glColor3ub(255, 255, 000);
? ? glVertex2f(-1, -1);
? ? glEnd();
// Swap buffers (color buffers, makes previous render visible)


? ? glutSwapBuffers();
// Increase angle to rotate


? ? angle += 0.25;
}
// Initialze OpenGL perspective matrix


void GL_Setup(int width, int height)
{
? ? glViewport(0, 0, width, height);
? ? glMatrixMode(GL_PROJECTION);
? ? glEnable(GL_DEPTH_TEST);
? ? gluPerspective(45, (float) width / height, .1, 100);
? ? glMatrixMode(GL_MODELVIEW);
}
// Initialize GLUT and start main loop


int main(int argc, char** argv)
{
? ? glutInit(&argc, argv);
? ? glutInitWindowSize(window_width, window_height);
? ? glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
? ? glutCreateWindow("GLUT Example!!!");
? ? glutIdleFunc(main_loop_function);
? ? GL_Setup(window_width, window_height);
? ? glutMainLoop();
? ? return 0;
}


3. 編譯:
gcc example.cpp -o example -lglut -lGL -lGLU


4. 運(yùn)行:
? ? ./example
========
linux下基于eclipse的opengl開發(fā)環(huán)境搭建


博客分類: opengl
eclipseopenglubuntu?
轉(zhuǎn)自:http://www.cnblogs.com/lycheng/archive/2011/09/13/2174831.html?


1. 安裝OpenGL相關(guān)工具?


  sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev?


? ? ? ?其中,?
? ? ? ?libgl1-mesa-de 對應(yīng) GL庫;?
? ? ? ?libglu1-mesa-dev對應(yīng)GLU庫 TJe opengl utility ?library;?
? ? ? freeglut3-dev 對應(yīng)glut庫 ?
? ? ? mesa-common-de :This package includes the specifications for the Mesa-specific?


OpenGL extensions, the complete set of release release notes and the development header?


files common to all Mesa packages.?


2. 設(shè)置Eclipse?
? ? ? ? 安裝eclipse ? cdt插件?
? ? ? ? 8.0.0 下載地址: http://www.eclipse.org/cdt/downloads.php?




  Project -> properties -> C / C++ Build / Settings -> Tool Setting?


  然后選擇Cross G++ Linker 選擇 Libraries, 在Libraries 中插入: glut GL GLU?


                      在Libraries Search Paths 中插入:?


/usr/include/GL?


3. 測試代碼 example.cpp?
Java代碼 ?收藏代碼
#include <GL/glut.h> ?
#define window_width 640 ?
#define window_height 480 ?
// Main loop ?
??
void main_loop_function() ?
{ ?
// Z angle ?
??
? ? static float angle; ?
// Clear color (screen) ?
??
// And depth (used internally to block obstructed objects) ?
??
? ? glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ?
// Load identity matrix ?
??
? ? glLoadIdentity(); ?
// Multiply in translation matrix ?
??
? ? glTranslatef(0, 0, -10); ?
// Multiply in rotation matrix ?
??
? ? glRotatef(angle, 0, 0, 1); ?
// Render colored quad ?
??
? ? glBegin(GL_QUADS); ?
? ? glColor3ub(255, 000, 000); ?
? ? glVertex2f(-1, 1); ?
? ? glColor3ub(000, 255, 000); ?
? ? glVertex2f(1, 1); ?
? ? glColor3ub(000, 000, 255); ?
? ? glVertex2f(1, -1); ?
? ? glColor3ub(255, 255, 000); ?
? ? glVertex2f(-1, -1); ?
? ? glEnd(); ?
// Swap buffers (color buffers, makes previous render visible) ?
??
? ? glutSwapBuffers(); ?
// Increase angle to rotate ?
??
? ? angle += 0.25; ?
} ?
// Initialze OpenGL perspective matrix ?
??
void GL_Setup(int width, int height) ?
{ ?
? ? glViewport(0, 0, width, height); ?
? ? glMatrixMode(GL_PROJECTION); ?
? ? glEnable(GL_DEPTH_TEST); ?
? ? gluPerspective(45, (float) width / height, .1, 100); ?
? ? glMatrixMode(GL_MODELVIEW); ?
} ?
// Initialize GLUT and start main loop ?
??
int main(int argc, char** argv) ?
{ ?
? ? glutInit(&argc, argv); ?
? ? glutInitWindowSize(window_width, window_height); ?
? ? glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); ?
? ? glutCreateWindow("GLUT Example!!!"); ?
? ? glutIdleFunc(main_loop_function); ?
? ? GL_Setup(window_width, window_height); ?
? ? glutMainLoop(); ?
? ? return 0; ?
} ?




  Run All 之后, 會顯示旋轉(zhuǎn)的方型, 如果不需要IDE, 則可用命令行編譯。?




4. 命令行編譯?


  gcc example.cpp -o example -lglut -lGL -lGLU?


  -o 表示輸出的文件名?


  -l 表示鏈接的庫
========

總結(jié)

以上是生活随笔為你收集整理的Linux 3D 编程学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

91九色自拍 | 视频1区2区| 色婷婷狠狠五月综合天色拍 | 亚洲精品激情 | 在线视频免费观看 | 免费中文字幕 | 国产视频一区在线播放 | 一区二区久久 | 天天干天天操av | 奇米影视8888在线观看大全免费 | 你操综合| 久久综合九色99 | 亚洲婷婷在线视频 | 国产精品福利午夜在线观看 | 手机成人在线电影 | 一区二区三区视频在线 | 国产成人精品久久久久 | 国产成人一区二区三区免费看 | 国产精品区免费视频 | 欧美伊人网 | 国产黄色片免费看 | 丰满少妇在线观看 | 久久精品一区二区三区中文字幕 | 亚洲精品www久久久久久 | 亚洲免费a | 欧美色婷婷 | 国产精品午夜在线 | 91九色蝌蚪国产 | 五月激情片 | 久久免费中文视频 | 69亚洲视频 | 欧美日韩高清不卡 | 视频一区二区在线观看 | www.五月婷婷| 日韩在线国产精品 | 久久再线视频 | 欧美一级艳片视频免费观看 | 国内精品久久久久久久久久清纯 | 色综合久久天天 | 波多野结衣亚洲一区二区 | 免费精品 | 亚洲成人资源在线 | 欧美精品xx| 91高清一区 | 一级精品视频在线观看宜春院 | 二区中文字幕 | 亚洲精品视频在线观看网站 | 日韩动态视频 | 午夜久久福利 | 亚洲精品国产拍在线 | 91丨精品丨蝌蚪丨白丝jk | 国产福利精品一区二区 | 天天色影院 | 色偷偷网站视频 | 97国产一区二区 | 中文在线8新资源库 | 国产精品免费观看网站 | 97人人添人澡人人爽超碰动图 | 91视视频在线直接观看在线看网页在线看 | 国产成人精品久久亚洲高清不卡 | 久久精品免费电影 | www.夜夜操.com| 国产色网站| 国产午夜激情视频 | 六月丁香伊人 | 精品国产诱惑 | 青青河边草免费视频 | 久久久综合| 91av在线看 | 国产精品免费久久久久 | 99精品偷拍视频一区二区三区 | 久久久久综合视频 | 日韩中文字幕免费视频 | 国产99一区二区 | 亚洲视频网站在线观看 | 人人干人人模 | 国产黑丝袜在线 | 另类五月激情 | 99免费在线视频观看 | 摸bbb搡bbb搡bbbb| 青青草国产成人99久久 | 91av大全 | 久久久99精品免费观看 | 成人啪啪18免费游戏链接 | 97综合视频 | 久久久久国产精品免费 | 狠狠色狠狠色综合日日小说 | 日韩激情小视频 | 天天干天天上 | 国产亚洲精品av | 欧美天天干 | 91香蕉视频 | 国产精品成人久久久久 | 欧美激情视频在线免费观看 | 国产拍揄自揄精品视频麻豆 | 色婷婷久久久综合中文字幕 | 国产黄色成人 | 亚洲一区二区精品在线 | 亚洲黄色高清 | 最新动作电影 | 91福利社区在线观看 | 日韩在线视频播放 | 亚洲干视频在线观看 | 日韩网页 | 干综合网 | 人人澡人人模 | 亚洲欧美国产精品 | 99久久婷婷国产综合亚洲 | 中国一级片免费看 | 国产精品久久久久四虎 | 午夜av免费 | 久久免费观看少妇a级毛片 久久久久成人免费 | 日韩欧美在线高清 | 97碰碰视频 | 欧美日韩午夜 | 亚洲精品视频在线免费播放 | 91精品国产亚洲 | 手机在线永久免费观看av片 | 国产精品第一视频 | 91亚色视频 | 亚洲婷婷在线 | 激情开心网站 | 日韩精品不卡在线观看 | 在线观看视频精品 | 日韩免费看的电影 | 91在线一区二区 | 人成在线免费视频 | 播五月综合| 狠狠色伊人亚洲综合网站野外 | 丁香av| 人人讲 | 成人夜晚看av | 一区精品久久 | av一区二区在线观看中文字幕 | 在线观看91精品国产网站 | 国产精品一区二区果冻传媒 | 欧美精品久久久久久 | 日韩av在线看 | 欧美国产日韩一区二区三区 | 色在线免费观看 | 免费成人在线观看 | www.xxx.性狂虐 | 日本久草电影 | 国产精品青青 | www久久99 | 在线免费黄色av | 亚洲欧洲成人精品av97 | av先锋影音少妇 | 日韩综合精品 | 玖玖玖在线 | 国产精品久久电影观看 | 成人午夜电影免费在线观看 | 日女人免费视频 | 在线观看av大片 | 中文一区二区三区在线观看 | 91精品久久久久久综合五月天 | 四虎国产视频 | 91手机在线看片 | 黄网站污| 伊人五月天综合 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 婷婷色网址 | 激情久久久 | 免费91在线观看 | 最近最新最好看中文视频 | 亚洲激情视频在线观看 | 国产精品免费成人 | 三级a视频 | 久久成人人人人精品欧 | 黄色大片免费网站 | 国产亚洲精品久久久久久 | 中文一区在线 | 福利视频导航网址 | 欧美一级片在线观看视频 | 国产理论一区二区三区 | 一区二区三区精品在线视频 | 91视频免费 | 在线中文字幕观看 | 久久免费视频7 | 韩日精品视频 | 天天操天天射天天插 | 黄色小说18 | 国产精品一区二区三区在线 | 久久久免费精品国产一区二区 | 成人avav | 国产一级在线播放 | 丁香婷婷基地 | 五月婷婷丁香激情 | 99久久精品费精品 | 色婷婷亚洲精品 | 亚洲一级黄色av | 免费看特级毛片 | 97超碰在| 狠狠狠色丁香婷婷综合久久88 | 又长又大又黑又粗欧美 | 国产xxxx | 欧美大片在线观看一区 | 五月婷婷一级片 | 美女在线免费观看视频 | 91试看| 黄色精品免费 | 精品久久久99 | 国产在线高清视频 | 九九热99视频| 日韩电影中文字幕 | 中文字幕在线视频精品 | 91av观看| 精品亚洲男同gayvideo网站 | 久久激情视频 | 日韩系列| 久久一久久 | 99久久这里只有精品 | 久久国产女人 | 人人爽人人爽人人片 | 欧美色伊人 | 国产+日韩欧美 | 国产999视频在线观看 | 99热日本| av黄色免费网站 | 国产精品岛国久久久久久久久红粉 | 久久久久国产一区二区三区 | 99久久激情视频 | 久久亚洲精品国产亚洲老地址 | 欧美精品久久久久久久亚洲调教 | 久草视频视频在线播放 | 亚洲免费视频在线观看 | 日韩黄色免费 | 国产一区二区三区高清播放 | 亚洲国产精品一区二区久久hs | 欧美少妇xxxxxx | 亚洲日本成人网 | 国产一级一级国产 | 亚洲 中文 在线 精品 | 久久婷婷一区 | 少妇做爰k8经典 | 99精品免费久久久久久日本 | 五月婷婷综合在线视频 | 日韩高清不卡一区二区三区 | 成年人精品 | 九九视频一区 | 精品一区二区亚洲 | 亚洲国产日韩一区 | 69av在线播放 | 欧美大片在线看免费观看 | 中文字幕一区二区三区视频 | 激情视频一区二区 | 日韩黄视频 | 国产免费激情久久 | 亚洲婷婷综合色高清在线 | 色综合久久久网 | 婷婷五月色综合 | 国产一级视频在线 | 综合网婷婷 | 成人看片 | 玖玖玖影院| 欧美在线free| 久草免费在线视频观看 | 波多野结衣日韩 | 国产在线黄 | 婷婷丁香六月 | 成年人免费电影 | 国产淫片免费看 | 成年人在线免费看片 | a成人v在线 | 五月婷婷综合网 | 国产精品久久久视频 | 国偷自产中文字幕亚洲手机在线 | 国产精品久久久久免费 | 国产97在线播放 | 亚洲欧洲国产视频 | 久操97 | 日韩免费三区 | 日本一区二区三区视频在线播放 | 亚洲婷婷在线 | 色综合久久久网 | 天天激情综合网 | 亚洲国产精品一区二区久久,亚洲午夜 | 人人干人人上 | 亚洲精品乱码久久久一二三 | 黄色在线免费观看网址 | 国产色婷婷精品综合在线手机播放 | 欧美一级xxxx | 欧美亚洲国产精品久久高清浪潮 | 热re99久久精品国产99热 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 色综合久久88色综合天天 | 超碰日韩 | 五月激情婷婷丁香 | 亚洲国内精品视频 | 中文字幕高清有码 | 亚洲视频在线免费看 | 亚洲欧洲久久久 | 波多野结衣电影一区二区 | 在线免费观看国产黄色 | 久草电影免费在线观看 | 香蕉久久国产 | 午夜在线观看影院 | 久久精品电影网 | 国产伦精品一区二区三区照片91 | 久久精品伊人 | 日韩欧美一区二区三区在线观看 | 午夜私人影院久久久久 | 日韩黄色免费 | 日韩在线精品 | 夜夜躁日日躁 | 久久成人一区 | 黄色在线免费观看网站 | 综合网婷婷 | 国产亚洲日 | 成人欧美一区二区三区在线观看 | 久热只有精品 | 欧美a在线看 | 亚洲欧洲精品一区二区精品久久久 | 国产一区黄色 | 国产精品视屏 | 国产亚洲在线 | 亚洲激情影院 | 亚洲美女视频网 | 成人黄色片免费 | 国产精品18久久久久vr手机版特色 | 精品国产区 | 国产成人在线一区 | 久草视频免费 | 亚洲午夜av久久乱码 | 国产精品一区在线 | 99精品免费久久久久久久久 | 国产亚洲激情视频在线 | 性色av免费在线观看 | 久久歪歪| 日韩电影一区二区在线观看 | 五月婷婷久久丁香 | 久久精品美女视频 | 在线观看色视频 | 伊人www22综合色 | 天天射天天干天天插 | 久久视频免费看 | 99久久久久久久 | 精品国产一区二区三区日日嗨 | 狠狠躁日日躁狂躁夜夜躁 | 日韩精品视频免费在线观看 | 中文在线8新资源库 | 精品久久一二三区 | 欧美日本国产在线观看 | 亚洲精品在 | a级国产片 | 日本在线精品视频 | 日韩精品一区二区三区外面 | 欧美精品久久久久久久久老牛影院 | 天天射综合网站 | 天天视频色版 | 欧美极度另类 | 国产精品国产三级国产 | 毛片美女网站 | 99精品在线观看视频 | 国产精品美女www爽爽爽视频 | 欧美性大战久久久久 | 免费看黄网站在线 | 97超碰人人网 | 国产午夜精品一区二区三区 | 久久激情日本aⅴ | 欧美精品国产综合久久 | 免费在线看成人av | 成人黄色片免费看 | 午夜久久成人 | 久久综合久久综合这里只有精品 | 婷婷国产v亚洲v欧美久久 | 91麻豆国产福利在线观看 | 日本久久精 | 中文字幕在线成人 | 91精品天码美女少妇 | 欧美日韩精品在线观看视频 | 天天天天天天天天操 | 看黄色.com | 欧美激情精品久久久久 | 97av在线视频免费播放 | 99婷婷狠狠成为人免费视频 | 久久婷综合 | 在线观看av网 | 天天av综合网 | 人人玩人人添人人澡超碰 | 国内精品视频在线播放 | 精品国偷自产国产一区 | 在线视频亚洲 | 日本精品久久久一区二区三区 | 黄色免费网站大全 | 久久99久久精品 | 国产一级黄色电影 | 国产精品24小时在线观看 | 狠狠干网站 | 丝袜美腿在线视频 | av大全免费在线观看 | 综合黄色网 | 成人午夜精品久久久久久久3d | 亚洲精品人人 | 国产在线观看二区 | 偷拍精偷拍精品欧洲亚洲网站 | 特级西西444www大胆高清无视频 | 国产亚洲精品女人久久久久久 | 国产一区成人在线 | 日韩毛片在线播放 | 亚洲免费激情 | 亚洲精区二区三区四区麻豆 | 天天综合久久综合 | 在线看一区二区 | av色图天堂网 | 狠狠躁日日躁 | 天天五月天色 | 人人爽爽人人 | 久久网址 | 亚洲精品www| 黄污视频大全 | 免费观看成人网 | 亚洲国产网站 | 91在线色 | 在线看片一区 | 天天操天天射天天舔 | 一区 二区电影免费在线观看 | 一色av | 久久国产精品99精国产 | 在线观看国产区 | 婷婷精品在线视频 | 国产精品一区二区av日韩在线 | 欧美日韩在线观看视频 | 青青看片 | 国产成人区 | 在线免费观看黄色 | 欧美激情综合五月色丁香小说 | 欧美日本中文字幕 | 手机在线看永久av片免费 | 国内精品视频一区二区三区八戒 | 欧美日韩不卡在线 | 怡红院久久 | 久久久影视 | 奇米影视四色8888 | 亚洲电影一区二区 | 丝袜美腿av | 免费av免费观看 | 美女精品网站 | 国产精品免费久久久久久 | 人人揉人人揉人人揉人人揉97 | 5月丁香婷婷综合 | 成人羞羞视频在线观看免费 | 久久久久五月天 | 正在播放 久久 | 欧美va日韩va | 69欧美视频 | 成人福利在线观看 | 国产91在线观看 | 国产福利精品视频 | 少妇高潮冒白浆 | 日精品在线观看 | 精品国产一区二区三区在线 | avhd高清在线谜片 | 500部大龄熟乱视频使用方法 | 免费av的网站 | 在线综合色 | 最近中文字幕高清字幕在线视频 | 欧美国产精品久久久久久免费 | 国产成本人视频在线观看 | 日韩午夜高清 | 九九久久国产精品 | 麻豆精品传媒视频 | 在线电影91| 在线观看国产福利片 | 91麻豆.com| 91精品办公室少妇高潮对白 | 国产成人一区二区啪在线观看 | 激情av一区二区 | 亚洲五月| 日韩特黄一级欧美毛片特黄 | 日本福利视频在线 | 国产黄色高清 | 国产一级免费电影 | 91亚洲国产| 日韩高清不卡一区二区三区 | 日韩精品视频久久 | 中文字幕在线高清 | 97视频在线观看成人 | 久久婷婷网 | 天天摸天天舔 | 日韩欧美专区 | 久久久久亚洲精品中文字幕 | 成人免费共享视频 | 91在线看免费 | 手机版av在线 | 一区二区三区精品在线视频 | 这里只有精品视频在线 | 六月婷婷久香在线视频 | 国产视频精品久久 | 免费看国产精品 | 亚洲日韩中文字幕在线播放 | 超碰97在线看 | 国产一区二区三区 在线 | www.伊人网| 黄色软件视频网站 | 91在线porny国产在线看 | 久久久久久久福利 | 黄色电影网站在线观看 | 97超碰在线久草超碰在线观看 | 国产无遮挡又黄又爽馒头漫画 | 九九久久精品视频 | 国产理论片在线观看 | 亚洲精品tv久久久久久久久久 | 国内精品久久久久久久97牛牛 | 97色婷婷成人综合在线观看 | 国产高清在线观看 | 日韩av手机在线看 | 91香蕉亚洲精品 | 中文日韩在线 | 亚洲专区路线二 | bbbb操bbbb| 久久人人艹| 精品三级av | 福利一区二区 | 狠狠的日 | 亚洲精品99久久久久中文字幕 | 国产在线更新 | 国产精品久久久久久婷婷天堂 | 中文字幕a∨在线乱码免费看 | 国产码电影 | 99视频 | 九九日九九操 | 国产一级性生活视频 | 国内精品视频久久 | 久久视频在线观看免费 | 中文字幕日韩一区二区三区不卡 | av免费成人| 久久理伦片 | 麻豆视频在线免费观看 | 日韩视频免费 | 午夜精品久久久久久久99 | 99热在线观看免费 | 99在线视频免费观看 | 91在线看视频免费 | 久久精品4| 久草在线最新视频 | 国产黄影院色大全免费 | 欧美国产日韩一区 | 午夜婷婷在线观看 | 亚洲国产精品免费 | 三级免费黄色 | 最新婷婷色 | 韩日色视频 | 久久久久久久久久久久久久免费看 | 国产一区免费在线 | 日韩精品在线视频免费观看 | 国产美女免费视频 | 91视视频在线直接观看在线看网页在线看 | 人人澡澡人人 | 天天做天天射 | 在线视频日韩精品 | 免费成人黄色av | 国产亚洲资源 | 久久影院一区 | 久一网站| 91av在线电影 | 干av在线| 就要色综合 | 高清av在线免费观看 | 欧美精品一区二区三区一线天视频 | 九九色在线观看 | 99r在线| 97色狠狠 | 黄色影院在线免费观看 | 国产一级二级三级视频 | 国产精品99久久久精品 | 国产在线精品国自产拍影院 | 婷婷精品在线 | 中文字幕一区二区三区久久蜜桃 | 日韩电影一区二区三区在线观看 | 韩国精品一区二区三区六区色诱 | 久久99热精品这里久久精品 | 国产二区免费视频 | 黄色三级久久 | 欧美日韩中文字幕综合视频 | 美女网站色在线观看 | 国产日韩欧美精品在线观看 | 亚洲国产精品999 | 色久综合| 国产原创av片 | 国产资源在线免费观看 | 97超碰国产在线 | 国产精品久久一区二区三区, | 日韩中文字幕免费电影 | 免费av一级电影 | 久久99爱视频 | 午夜在线资源 | 日韩三级.com| 在线视频专区 | 激情五月播播久久久精品 | 色婷婷免费视频 | 亚洲精品国产精品乱码在线观看 | 免费视频 三区 | 天天操天天操天天操天天操天天操天天操 | 国产精品男女 | 天天爽天天做 | 波多野结衣久久精品 | 一 级 黄 色 片免费看的 | 国产亚洲婷婷免费 | 999视频在线播放 | 久久精品国产亚洲aⅴ | .国产精品成人自产拍在线观看6 | 美女网站免费福利视频 | 亚洲 欧洲av | 最近高清中文在线字幕在线观看 | 香蕉视频在线免费 | 国产精品一区二区三区视频免费 | 日本精品久久久久中文字幕5 | 深夜视频久久 | 精品国产电影一区 | 97色婷婷人人爽人人 | 三上悠亚一区二区在线观看 | 国产91大片 | 欧美日韩国产一二三区 | 中文字幕一二三区 | 丁香六月在线观看 | 91在线你懂的 | 波多野结衣电影久久 | 婷婷成人在线 | 亚洲国产操 | 午夜精品一区二区三区免费 | 国产精品男女 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产成人精品免高潮在线观看 | 午夜精选视频 | 久久国产精品视频免费看 | 国产精品午夜久久 | 欧美人交a欧美精品 | 久久久免费精品国产一区二区 | 福利视频一二区 | 亚洲精品资源在线 | 久久成人国产精品免费软件 | 亚洲欧美色婷婷 | 青青色影院 | 亚洲成人精品影院 | 国产精品色婷婷 | 99久久久国产精品美女 | 婷婷久草| 成人国产精品一区二区 | 天天摸天天操天天舔 | 人人干,人人爽 | 日韩激情第一页 | 精品国产亚洲一区二区麻豆 | 97超碰人人澡| 久久人人爽爽人人爽人人片av | 日韩特级片 | 少妇18xxxx性xxxx片 | 99这里只有久久精品视频 | 亚洲精品中文字幕在线 | 亚洲区精品 | 日韩中文免费视频 | 人人玩人人添人人澡超碰 | 免费黄色在线 | 国产精品一区二区三区视频免费 | 久久久精品国产一区二区电影四季 | 四虎成人精品在永久免费 | 精品日韩在线一区 | 天堂在线一区二区 | 久久综合国产伦精品免费 | 天天操天天操天天操天天操天天操 | 日韩中文字幕免费 | 97超视频免费观看 | 99久久久国产免费 | 亚洲成人精品 | 亚洲精品一区二区在线观看 | www最近高清中文国语在线观看 | 久黄色| 色综合久久久久综合体 | 色视频在线免费 | 日本三级在线观看中文字 | 婷婷国产在线 | 日韩高清 一区 | 亚洲精品中文字幕在线 | 在线免费观看视频你懂的 | 伊人www22综合色 | 久久不射电影院 | 黄色免费观看 | 精品伦理一区二区三区 | 久久久999精品视频 国产美女免费观看 | 色综合天天综合 | 欧美激情第28页 | 亚洲成人国产 | 国产手机在线精品 | 久草视频视频在线播放 | 国产精品18毛片一区二区 | 丝袜一区在线 | 九九亚洲视频 | 视频精品一区二区三区 | 亚洲成人av免费 | 特级毛片aaa| 国产一区二区在线播放视频 | 日韩在线视频二区 | 久久爱资源网 | 久久国产视频网站 | 日韩av不卡在线播放 | 色综合久久88色综合天天人守婷 | 国产区在线 | 久久草视频 | 精品国产乱码久久久久 | 四虎最新入口 | 500部大龄熟乱视频 欧美日本三级 | 在线免费观看涩涩 | 国产精品久久人 | 99久久999久久久精玫瑰 | 日韩一区二区三区免费电影 | 成人在线一区二区三区 | 久草线 | 国产流白浆高潮在线观看 | 国产精品原创 | 国产免费视频在线 | 99这里只有久久精品视频 | 亚洲综合色视频 | 国产精品人人做人人爽人人添 | 亚洲欧美婷婷六月色综合 | 天天爱天天射天天干天天 | 狠狠色狠狠色 | 亚洲免费精品视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 99精品在线观看视频 | 久久国产精品网站 | 国产一区二区三精品久久久无广告 | www.伊人色.com | 17婷婷久久www | 久久一区二区三区四区 | 天堂久久电影网 | 男女拍拍免费视频 | 蜜桃视频在线观看一区 | av在线电影播放 | 日韩欧美国产精品 | 日韩精品免费一区二区三区 | 欧美性大战久久久久 | 国产自在线| 免费在线播放av电影 | 国产精品资源 | 久久久免费高清视频 | 国产精品久久久久久久毛片 | 91精品国产自产91精品 | av电影中文字幕在线观看 | 亚洲一区二区三区四区在线视频 | 婷婷视频在线播放 | 国产精品麻豆果冻传媒在线播放 | 天堂av在线免费 | 国产一区二区免费在线观看 | 91精品国产一区 | 看毛片网站 | 久青草影院 | 日韩电影中文,亚洲精品乱码 | 久久免费在线 | 久久久精品成人 | 久久久久欧美精品999 | 在线视频 国产 日韩 | 日本女人b | a级片网站| 日本精品久久久一区二区三区 | 色视频在线 | 丁香一区二区 | 97视频在线观看成人 | 全黄色一级片 | 日韩经典一区二区三区 | 日韩欧美黄色网址 | 人人躁| 99热最新 | 精品国产1区2区 | se婷婷 | 91香蕉视频 mp4 | 在线亚洲成人 | 波多野结衣视频一区二区 | 麻豆视频在线 | a级国产乱理论片在线观看 特级毛片在线观看 | 免费在线观看的av网站 | 国产精品美女久久久久久 | 国产一级视频免费看 | 久久婷婷综合激情 | 国产精品原创av片国产免费 | 91精品久久久久久综合五月天 | 一区二区三区视频 | 成年人免费观看在线视频 | 久久免费成人网 | 色网影音先锋 | 久久亚洲综合国产精品99麻豆的功能介绍 | 久久69av | 欧美日韩免费视频 | 亚洲成人精品影院 | 日日插日日干 | 亚洲国产午夜精品 | 精品国产99国产精品 | 成人黄在线 | 激情综合啪啪 | 揉bbb玩bbb少妇bbb| 午夜久久福利影院 | 欧美成年黄网站色视频 | 国产 欧美 日本 | 国产三级午夜理伦三级 | 免费在线黄 | 久久免费看a级毛毛片 | 色视频 在线 | 国产精品岛国久久久久久久久红粉 | 精品无人国产偷自产在线 | 欧美一级片在线 | 久久久久久久久久久久av | 久草观看视频 | 一本色道久久精品 | 在线国产黄色 | 国产一区二区三区午夜 | 国产一区影院 | 欧美色综合天天久久综合精品 | 很黄很色很污的网站 | 色噜噜日韩精品欧美一区二区 | 久久久影院官网 | 99在线免费观看视频 | 四虎在线影视 | 日韩免费观看一区二区三区 | 免费三级在线 | 日韩视频免费看 | 99免费精品视频 | 国产精品videoxxxx | 国产另类av | 国产视频中文字幕 | 国产视频 亚洲精品 | 91尤物在线播放 | 丝袜美女在线 | 午夜黄色大片 | 99精品久久久久久久 | 国产成人精品国内自产拍免费看 | 久久a久久 | 国色天香在线观看 | 免费黄色av片 | 欧美性生活久久 | 99婷婷| 亚洲欧洲久久久 | 亚洲精品高清一区二区三区四区 | 免费看成人a | 亚洲视频在线免费看 | 国产亚洲婷婷免费 | 婷婷丁香在线 | 欧美 日韩精品 | 日本成人免费在线观看 | 99视频这里只有 | 黄色a视频免费 | 久久精品一二三 | 免费看一级特黄a大片 | 国产成人精品av在线 | 国产成人久久77777精品 | 亚洲精品乱码久久久久久9色 | 91精品久久久久久久91蜜桃 | 久久免费的精品国产v∧ | 国产区高清在线 | 黄色在线视频网址 | 五月开心婷婷 | 国产高清免费在线观看 | 天天做天天爱天天综合网 | 精品一区精品二区高清 | 国产男女无遮挡猛进猛出在线观看 | 青青草视频精品 | 日韩在线免费电影 | 亚洲资源视频 | 99久久久久成人国产免费 | 亚洲综合一区二区精品导航 | 久久性生活片 | 亚洲人成人天堂h久久 | 免费久草视频 | 国产免费片 | 一级特黄av | 色婷婷狠狠操 | 国产精品视频大全 | 91中文字幕一区 | 午夜电影中文字幕 | 久久看毛片 | 国产一级黄色av | 日日综合 | 88av色 | 国产精品手机在线播放 | 香蕉久草| 色综合久久88色综合天天6 | 欧美日韩国产免费视频 | 日日躁天天躁 | 99久久精品国 | 国产 在线 日韩 | 91视频麻豆视频 | 人人模人人爽 | 91精品久久久久久粉嫩 | 欧美一区日韩精品 | 激情深爱五月 | а天堂中文最新一区二区三区 | 国产精品 999| 国产激情小视频在线观看 | 天天射射天天 | 91精品毛片| 国产私拍在线 | 成人免费看片网址 | 国产91成人在在线播放 | 国产人成看黄久久久久久久久 | 我要色综合天天 | 黄色av成人在线 | 久草视频在线免费 | 日韩免费网址 | 综合色伊人 | 久久99久久精品国产 | 黄污在线观看 | 91丨porny丨九色 | 精品一区 在线 | 免费日韩av片| 亚洲成人黄色网址 | 色九九在线 | 91av视频免费观看 | www.午夜色.com | 久久精品免费电影 | 久久人人爽爽人人爽人人片av | 亚洲精品成人网 | 91网在线观看 | 国产欧美综合视频 | 国产中文字幕视频在线观看 | 九九热.com | 四虎影视精品成人 | 欧美极品xxx| 久久久视频在线 | 一级性视频 | 亚洲精品视频免费观看 | 成人影片在线免费观看 | www色| 在线观看中文字幕一区 | 国产精品 999 | 日韩精品久久久久久久电影99爱 | 国产一级电影免费观看 | 一级黄色av | 婷婷综合电影 | 日韩在线视频观看 | 亚洲精品麻豆视频 | 欧美一级黄色网 | 国产成人一区二区啪在线观看 | 天天干天天综合 | 97人人人人 | 亚州黄色一级 | 黄色一级动作片 | 亚洲精品中文字幕在线 | 国产精品成人免费 | 精品国模一区二区三区 | www麻豆视频| 国内毛片毛片 | 国产无套精品久久久久久 | 久久久久久亚洲精品 | 视频国产在线观看18 | 国产一级在线免费观看 | 人人干人人爽 | 黄色在线网站噜噜噜 | 在线看国产日韩 | 日韩av资源站 | 午夜视频免费在线观看 | 日韩电影精品一区 | 国产91区| 99久久精品免费看国产一区二区三区 | 在线观看免费视频 | 黄色a视频免费 | 婷婷色中文网 | 成人一级影视 | 国产视频黄 | 久久精品看片 | 日韩高清dvd | 91色蜜桃| 亚洲情婷婷 | 国产视频久久久 | 亚洲高清视频在线观看免费 | 午夜精品久久久久久久99婷婷 | 久久高清免费观看 | 国产日韩亚洲 | 国产免费观看av | 亚洲91中文字幕无线码三区 | 二区三区视频 | 日韩电影精品一区 | 激情电影影院 | 五月婷婷激情综合 | 亚洲亚洲精品在线观看 | 天天爽夜夜爽精品视频婷婷 | 国产日韩欧美自拍 | 亚洲区精品视频 | 91免费的视频在线播放 | 亚洲伦理电影在线 | av先锋影音少妇 | 97免费在线观看 | 五月天中文字幕 | 欧美在线观看视频一区二区 | 国产免费二区 | 久久婷五月| 亚洲精品理论 | 国产 日韩 欧美 自拍 | 欧美日韩性视频 | 午夜久久久久久久久久久 | 久久久久久国产一区二区三区 | 日韩免费看的电影 | 国产精品久久网站 | 99久久精品国产观看 | 久久综合九色欧美综合狠狠 | 亚洲视频在线观看 | 在线观看激情av | 91麻豆精品 | 久久国产精品99久久人人澡 | 97在线观看免费视频 | 久久精品久久久精品美女 |