glut庫下的主要函數

 
glut庫下的主要函數
一 、初始化
1void glutInit(int* argc,char** argv)
這個函數用來初始化GLUT庫。對應main函數的形式應是:
int main(int argc,char* argv[]);
這個函數從main函數獲取其兩個參數。
2void glutInitWindowSize(int width,int height);
void glutInitWindowPosition(int x,int y);
這兩個函數很好理解是設置glut程序要產生的窗口的大小和位置(左上角)。以像素爲單位。
3、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)
1、void  glutMainLoop(void)
      讓glut程序進入事件循環。在一個glut程序中最多隻能調用一次。一旦調用,會直到程序結束才返回。
2、glutReshapeFunc(void (GLUTCALLBACK *func)(int width, int height))
        註冊當前窗口的形狀變化回調函數。當改變窗口大小時,該窗口的形狀改變回調函數將被調用。
3glutDisplayFunc(void (GLUTCALLBACK *func)(void))
 註冊當前窗口的顯示回調函數,當一個窗口的圖像層需要重新繪製時,GLUT將調用該窗口的的顯示回調函數。顯示回調函數不帶任何參數,它負責整個圖像層的繪製。我們的大部分工作將集中在這個函數中。
4glutMouseFunc(void (GLUTCALLBACK *func)(int button, int state, int x, int y))
        設置鼠標器按鍵回調函數,當鼠標的左鍵、右鍵或中鍵被按下時觸發被註冊的函數執行。
5glutMotionFunc(void (GLUTCALLBACK *func)(int x, int y))
設置鼠標器移動回調函數,當鼠標發生移動時執行被註冊的函數。
6glutKeyboardFunc(void (GLUTCALLBACK *func)(unsigned char key, int x, int y))
設置鍵盤迴調函數,當鍵盤有鍵被按下是調用所註冊的函數。
7glutIdleFunc(void (GLUTCALLBACK *func)(void))
       設置空閒回調函數,當CPU空閒時調用該函數。
三、窗口管理(Window Management)
1、int glutCreateWindow(char* name);
    產生一個頂層的窗口。name 作爲窗口的名字,也就是窗口標題欄顯示的內容。
    返回值是生成窗口的標記符,可用函數glutGetWindow()加以引用。
2、int glutCreateSubWindow(int win,int x,int y,int width,int height);
    創建一個子窗口。win是其父窗口的標記符。x,y是相對父窗口的位移,以像素表示。
    width,height是子窗口的寬和高。
3、void glutSetWindow(int win)
    int glutGetWindow(void)
    功能分別是:設置標記符爲win的窗口爲當前窗口;返回當前窗口的標記符。
4、void glutDestroyWindow(int win)
    銷燬以win標記的窗口。
5、void glutPostRedisplay(void)
    將當前窗口打上標記,標記其需要再次顯示。
6、void glutSwapBuffers(void)
    當窗口模式爲雙緩存時,此函數的功能就是把後臺緩存的內容交換到前臺顯示。當然,只有單緩存時,使用它的功能跟用glFlush()一樣。
    而使用雙緩存是爲了把完整圖畫一次性顯示在窗口上,或者是爲了實現動畫。
7、void glutPositionWindow(int x,int y)
    改變當前窗口的位置:當前窗口是頂層窗口時,x,y是相對於屏幕的的位移;當前窗口若是子窗口時,x,y是相對其父窗口原點的位移。
8、void glutReshapeWindow(int width,int height)
    改變當前窗口的大小。
    width,height是當前窗口新的寬度和高度值,當然只能是正值。
9、void glutFullscreen(void)
    讓當前窗口全屏顯示。當前窗口是頂層窗口時纔有效。
10、void glutPopWindow(void)
  void glutPushWindow(void)
    對頂層窗口和子窗口均有效。改變當前窗口在棧中相對於其它窗口的次序。
11、void glutShowWindow(void)
  void glutHideWindow(void)
  void glutIconifyWindow(void)
 這三個函數作用是改變當前窗口的顯示狀態。
    glutShowWindow讓當前窗口可視(這時它還是可能被其它窗口擋住)。
    glutHideWindow讓當前窗口成爲不可視狀態。
    glutIconifyWindow讓當前窗口成爲一個圖標,也即是最小化。
12、glutSetWindowTitle(char* name);
     glutSetIconTitle(char* name);
     設置當前窗口(必須是頂層窗口)的標題和圖標化時的標題。
13、glutSetCursor(int cursor);
     設置當前窗口的光標樣式。
     cursor可選值有許多:如GLUT_CURSOR_RIGHT_ARROW指向右邊的光標,
GLUT_CURSOR_LEFT_ARROW指向左邊的光標,GLUT_CURSOR_INFO成爲手狀。
GLUT_CURSOR_DESTROY呈叉狀,GLUT_CURSOR_HELP呈現問號的形狀。
等等。
四、窗口的覆蓋管理
1、void glutEstablishOverlay(void);
對當前窗口創建覆蓋圖層。該覆蓋圖的模式由初始化顯示模式函數glutDisplayMode()決定。glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以設置對於當前窗口,是否允許產生由初始化顯示模式函數規定其模式的覆蓋圖層。
2、void glutUserLayer(GLenum layer);
枚舉量layer可選值爲:GLUT_NORMAL,GLUT_OVERLAY.分別選取正常位平面或覆蓋平面。
3、void glutRemoveLayer(void);
除去覆蓋圖。當沒有覆蓋圖層時,調用這條語句也是安全的,這時系統不做任何事。
4、void glutPostOverlayRedisplay(void);
標記該覆蓋圖層爲需要重新顯示的狀態。
5、void glutShowOverlay(void);
void glutHideOverlay(void);
顯示當前窗口的覆蓋圖層;隱藏覆蓋圖層。這兩條語句即時執行。注意一下,只有窗口可視時,使用glutShowOverlay才能使其覆蓋圖層可視。當窗口被其他窗口遮擋時,其覆蓋圖層也被遮擋從而不可視。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章