• <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>
            posts - 126,  comments - 73,  trackbacks - 0

            一、初始化

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

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

            這個函數(shù)從main函數(shù)獲取其兩個參數(shù)。

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

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

            void glutInitDisplayMode(unsigned int mode);

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

            二、事件處理(Event Processing)

            void? glutMainLoop(void)

            讓glut程序進入事件循環(huán)。在一個glut程序中最多只能調(diào)用一次。一旦調(diào)用,會直到程序結(jié)束才返回。

            三、窗口管理(Window Management)

            int glutCreateWindow(char* name);

            ?產(chǎn)生一個頂層的窗口。name 作為窗口的名字,也就是窗口標題欄顯示的內(nèi)容。

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

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

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

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

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

            ?功能分別是:設(shè)置標記符為win的窗口為當(dāng)前窗口;返回當(dāng)前窗口的標記符。

            void glutDestroyWindow(int win);

            ?銷毀以win標記的窗口。

            void glutPostRedisplay(void);

            ?將當(dāng)前窗口打上標記,標記其需要再次顯示。

            void glutSwapBuffers(void);

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

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

            void glutPositionWindow(int x,int y);

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

            void glutReshapeWindow(int width,int height);

            ?改變當(dāng)前窗口的大小。?

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

            void glutFullscreen(void);

            ?讓當(dāng)前窗口全屏顯示。當(dāng)前窗口是頂層窗口時才有效。

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

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

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

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

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

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

            void glutSetCursor(int cursor);

            ?設(shè)置當(dāng)前窗口的光標樣式。?

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

            四、窗口的覆蓋管理

            void glutEstablishOverlay(void);

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

            glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以設(shè)置對于當(dāng)前窗口,是否允許產(chǎn)生由初始化顯示模式函數(shù)規(guī)定其模式的覆蓋圖層。

            void glutUserLayer(GLenum layer);

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

            void glutRemoveLayer(void);

            除去覆蓋圖。當(dāng)沒有覆蓋圖層時,調(diào)用這條語句也是安全的,這時系統(tǒng)不做任何事。

            void glutPostOverlayRedisplay(void);

            標記該覆蓋圖層為需要重新顯示的狀態(tài)。

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

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

            五、菜單管理

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

            當(dāng)點擊菜單時,調(diào)用回調(diào)函數(shù)func,value為傳遞給回調(diào)函數(shù)的數(shù)值,它由所選擇的菜單條目對應(yīng)的整數(shù)值所決定。

            這個函數(shù)創(chuàng)建一個新的彈出式菜單,并返回一個唯一的標識次菜單的整型標識符,并將新建的彈出菜單與func函數(shù)關(guān)聯(lián)在一起,這樣,當(dāng)選擇此菜單中的一個菜單條目時,調(diào)用回調(diào)函數(shù)func.

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

            設(shè)置當(dāng)前菜單;獲取當(dāng)前菜單的標識符

            void glutDestroyMenu(int menu);

            刪除指定的菜單

            void glutAddMenuEntry(char* name, int value);

            添加一個菜單條目

            void glutAddSubMenu(char* name, int menu);

            在當(dāng)前菜單的底部增加一個子菜單的觸發(fā)條目

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

            更改當(dāng)前菜單中指定菜單項

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

            將指定的當(dāng)前菜單中菜單項變?yōu)樽硬藛斡|發(fā)條目

            void glutRemoveMenuItem(int entry);

            刪除指定的菜單項

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

            把當(dāng)前窗口的一個鼠標按鍵與當(dāng)前菜單關(guān)聯(lián)起來;解除鼠標按鍵與彈出式菜單的關(guān)聯(lián)關(guān)系

            六、注冊回調(diào)

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

            為當(dāng)前窗口設(shè)置顯示回調(diào)函數(shù)

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

            注冊當(dāng)前窗口的重疊層的顯示回調(diào)函數(shù)

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

            指定當(dāng)窗口的大小改變時調(diào)用的函數(shù)

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

            注冊當(dāng)前窗口的鍵盤回調(diào)函數(shù)

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

            注冊當(dāng)前窗口的鼠標回調(diào)函數(shù)

            func為注冊的鼠標回調(diào)函數(shù),這個函數(shù)完成鼠標事件的處理

            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));

            設(shè)置移動回調(diào)函數(shù);設(shè)置當(dāng)前鼠標移動函數(shù)

            Func為注冊的鼠標移動函數(shù)

            x,y為鼠標按下式,光標相對于窗口左上角的位置
            當(dāng)鼠標在窗口中按下并移動時調(diào)用glutMotionFunc注冊的回調(diào)函數(shù)
            當(dāng)鼠標在窗口中移動時調(diào)用glutPassiveMotionFunc注冊的回調(diào)函數(shù)

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

            設(shè)置當(dāng)前窗口的可視回調(diào)函數(shù)

            Func為指定的可視回調(diào)函數(shù)

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

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

            這個函數(shù)設(shè)置當(dāng)前窗口的可視回調(diào)函數(shù),當(dāng)窗口的可視性改變時,該窗口的可視回調(diào)函數(shù)被調(diào)用.只要窗口中的任何一個像素是可見的,或者他的任意一個子窗口中任意一個像素是可見的,GLUT則認為窗口是可見的.

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

            設(shè)置鼠標的進出窗口的回調(diào)函數(shù)

            Func為注冊的鼠標進出回調(diào)函數(shù)

            state為鼠標的進出狀態(tài),為以下常量之一:

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

            當(dāng)窗口取得焦點或失去焦點時調(diào)用這個函數(shù),當(dāng)鼠標進入窗口區(qū)域并點擊時,state為GLUT_RIGHT,當(dāng)鼠標離開窗口區(qū)域點擊其他窗口時,state為GLUT_LEFT.

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

            設(shè)置當(dāng)前窗口的特定鍵的回調(diào)函數(shù)

            Func為注冊的特定鍵的回調(diào)函數(shù)

            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為當(dāng)按下鍵時鼠標的坐標,相對于窗口左上角,以像素為單位
            注意:ESC,回車和delete鍵由ASCII碼產(chǎn)生.

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

            設(shè)置菜單狀態(tài)回調(diào)函數(shù)

            func是注冊的菜單狀態(tài)回調(diào)函數(shù)

            status是當(dāng)前是否使用菜單,為以下定義的常量

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

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

            這個函數(shù)時glut程序判定是否正在使用菜單,當(dāng)彈出菜單時,調(diào)用注冊的菜單狀態(tài)回調(diào)函數(shù),同時status設(shè)置為常量GLUT_MENU_IN_USE, 當(dāng)菜單使用完畢時,也調(diào)用菜單狀態(tài)回調(diào)函數(shù),此時status變量變?yōu)镚LUT_MENU_NOT_IN_USE.從已彈出的菜單中再彈出的菜單不產(chǎn)生菜單狀態(tài)回調(diào)過程.每個glut程序只有一個菜單狀態(tài)回調(diào)函數(shù).

            glutSpaceballRotateFunc

            glutSpaceballButtonFunc

            glutButtonBoxFunc

            glutDialsFunc

            glutTabletMotionFunc

            glutTabletButtonFunc

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

            設(shè)置菜單狀態(tài)回調(diào)函數(shù)

            func為注冊的菜單狀態(tài)回調(diào)函數(shù)

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

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

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

            這個函數(shù)時glut程序判定是否正在使用菜單,當(dāng)彈出菜單時,調(diào)用注冊的菜單狀態(tài)回調(diào)函數(shù),同時status設(shè)置為常量GLUT_MENU_IN_USE, 當(dāng)菜單使用完畢時,也調(diào)用菜單狀態(tài)回調(diào)函數(shù),此時status變量變?yōu)镚LUT_MENU_NOT_IN_USE.從已彈出的菜單中再彈出的菜單不產(chǎn)生菜單狀態(tài)回調(diào)過程.每個glut程序只有一個菜單狀態(tài)回調(diào)函數(shù).

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

            設(shè)置空閑回調(diào)函數(shù)

            func表示當(dāng)系統(tǒng)空閑時調(diào)用的函數(shù),它的形式為void func(void)

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

            注冊一個回調(diào)函數(shù),當(dāng)指定時間值到達后,由GLUT調(diào)用注冊的函數(shù)一次

            msecs是等待的時間

            Func是注冊的函數(shù)

            value是指定的一個數(shù)值,用來傳遞到回調(diào)函數(shù)Func中

            這個函數(shù)注冊了一個回調(diào)函數(shù),當(dāng)指定的毫秒數(shù)到達后,這個函數(shù)就調(diào)用注冊的函數(shù),value參數(shù)用來向這個注冊的函數(shù)中傳遞參數(shù).

            七、色彩管理(未完成)

            glutSetColor

            glutGetColor

            glutCopyColormap

            八、狀態(tài)檢索

            int glutGet(GLenum state);

            檢索指定的GLUT狀態(tài)

            state為指定要檢索的狀態(tài)類型,為以下常量

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

            返回值根據(jù)查詢的內(nèi)容返回相應(yīng)的值,無效的狀態(tài)名返回-1.

            int glutLayerGet(GLenum info);

            查詢屬于當(dāng)前窗口的重疊層的狀態(tài)

            Info表示查詢的重疊層狀態(tài)常量

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

            int glutDeviceGet(GLenum info);

            檢索設(shè)備信息

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

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

            int glutGetModifiers(void);

            返回組合功能鍵的狀態(tài)

            返回值為以下定義的常量

            GLUT_ACTIVE_SHIFT當(dāng)按下shift鍵時
            GLUT_ACTIVE_CTRL當(dāng)按下ctrl鍵時
            GLUT_ACTIVE_ALT當(dāng)按下alt鍵時

            int glutExtensionSupported(char* extension);

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

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

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

            九、字體渲染

            void glutBitmapCharacter(void* font, int character);

            繪制一個圖像字符

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

            GLUT_BITMAP_8_BY_13一種固定寬度字體,每個字符都放在一個8x13像素的矩形框內(nèi)
            GLUT_BITMAP_9_BY_15一種固定寬度字體,每個字符都放在一個9x15像素的矩形框內(nèi)
            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像素的矩形框內(nèi)
            GLUT_BITMAP_9_BY_15一種固定寬度字體,每個字符都放在一個9x15像素的矩形框內(nèi)
            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為繪制的字符

            十、實體繪制

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

            繪制中心在模型坐標原點,半徑為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); 線框圓環(huán)
            void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 實心圓環(huán)

            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 我風(fēng) 閱讀(7074) 評論(0)  編輯 收藏 引用

            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2010年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            C++

            MyFavorite

            搜索

            •  

            積分與排名

            • 積分 - 327122
            • 排名 - 75

            最新評論

            閱讀排行榜

            評論排行榜

            久久93精品国产91久久综合| 久久精品亚洲欧美日韩久久| 久久人妻少妇嫩草AV蜜桃| 精品久久久一二三区| 伊人久久大香线蕉综合Av| 99久久精品国产麻豆| 99热精品久久只有精品| 欧美精品一区二区久久| 精品国产乱码久久久久久郑州公司| 日本福利片国产午夜久久| 久久无码一区二区三区少妇| 亚洲乱码精品久久久久..| 久久久久亚洲AV无码网站| 91精品国产综合久久香蕉| 久久精品国产亚洲αv忘忧草 | 情人伊人久久综合亚洲| 中文成人久久久久影院免费观看| 久久精品国产亚洲AV电影 | 人妻无码久久一区二区三区免费| 久久久久四虎国产精品| 久久综合亚洲欧美成人| 久久婷婷五月综合97色直播| 久久这里只有精品久久| 国内精品久久久人妻中文字幕| 亚洲国产综合久久天堂| 国产成人香蕉久久久久| 狠狠色丁香婷综合久久| 国产激情久久久久久熟女老人| 开心久久婷婷综合中文字幕| 人人狠狠综合久久亚洲88| 久久精品国产99国产精品澳门| 久久免费的精品国产V∧| 久久精品综合网| 亚洲国产婷婷香蕉久久久久久| 久久精品成人免费国产片小草| 久久免费视频网站| 国产精品久久久久久吹潮| 欧美熟妇另类久久久久久不卡| 奇米影视7777久久精品人人爽| 亚洲午夜无码AV毛片久久| 亚洲欧洲中文日韩久久AV乱码|