OpenGL學習之API詳解

轉載自http://blog.csdn.net/wenzhy/article/details/3917515

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

註冊當前窗口的顯示回調函數

參數:
func:形爲void func()的函數,完成具體的繪製操作

這個函數告訴GLUT當窗口內容必須被繪製時,那個函數將被調用.當窗口改變大小或者從被覆蓋的狀態中恢復,或者由於調用glutPostRedisplay()函數要求GLUT更新時,執行func參數指定的函數. 
 
 
//*******************************************************************************************
 
void glutReshapeFunc(void (*func)(int width, int height));

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

參數:
func:形如void func(int width, int height)
處理窗口大小改變的函數.
width,height:爲窗口改變後長寬.

這個函數確定一個回調函數,每當窗口的大小或形狀改變時(包括窗口第一次創建),GLUT將會調用這個函數,這個回調函數接受這個窗口新的長寬作爲輸入參數.
 
 
//*******************************************************************************************
 
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));

註冊當前窗口的鍵盤迴調函數

參數:
func:形如void func(unsigned char key, int x, int y)
key:按鍵的ASCII碼
x,y:當按下鍵時鼠標的座標,相對於窗口左上角,以像素爲單位

當敲擊鍵盤按鍵(除了特殊按鍵,即glutSpecialFunc()中處理的按鍵,詳見glutSpecialFunc())時調用.


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

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

參數:
func:形如void func(int button, int state, int x, int y);
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));

當鼠標在窗口中按下並移動時調用glutMotionFunc註冊的回調函數

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

當鼠標在窗口中移動時調用glutPassiveMotionFunc註冊的回調函數

參數: 
func:形如void func(int x, int y);
x,y:鼠標按下式,光標相對於窗口左上角的位置,以像素爲單位


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

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

參數:
func:形如void func(int state);註冊的鼠標進出回調函數 
state:鼠標的進出狀態,爲以下常量之一 
  GLUT_LEFT 鼠標離開窗口 
  GLUT_RIGHT 鼠標進入窗口

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

//******************************************************************************************

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

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

參數:
func:形如void func(int state);指定的可視回調函數 
state:窗口的可視性,爲以下常量 
  GLUT_NOT_VISIBLE 窗口完全不可見 
  GLUT_VISIBLE 窗口可見或部分可見

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

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

設置空閒回調函數

參數:
func:形如void func(void);

當系統空閒時調用.

//*******************************************************************************************
 void glutTimerFunc(unsigned int millis, void (*func)(int value), int value);

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

參數:
millis:等待的時間,以毫秒爲單位
unc:形如void func(int value)
value:指定的一個數值,用來傳遞到回調函數func中

這個函數註冊了一個回調函數,當指定的毫秒數到達後,這個函數就調用註冊的函數,value參數用來向這個註冊的函數中傳遞參數. 但只能觸發一次,若要連續觸發,則需在func中重新設置計時函數glutTimerFunc();

//*******************************************************************************************
void glutMenuStateFunc(void (*func)(int state));

註冊菜單狀態回調函數

參數:
func:形如void func(int state);
state:
  GLUT_MENU_IN_USE:菜單被使用.
  GLUT_MENU_NOT_IN_USE:菜單不再被使用,即菜單被關閉.
如果state代入GLUT_MENU_IN_USE,則當菜單被使用時調用該函數;
如果state代入GLUT_MENU_NOT_IN_USE,則當菜單被關閉時調用該函數.

//*******************************************************************************************

void glutMenuStatusFunc(void (*func)(int status, int x, int y));
設置菜單狀態回調函數
參數:
func:形如void func(int status, int x, int y); 
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 glutSpecialFunc(void (*func)(int key, int x, int y));

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

參數:
Func:形如void func(int key, int x, int y);
key:按下的特定鍵,爲以下定義的常量  
  GLUT_KEY_F1:F1功能鍵 
  GLUT_KEY_F2:F2功能鍵 
  GLUT_KEY_F3:F3功能鍵 
  GLUT_KEY_F4:F4功能鍵 
  GLUT_KEY_F5:F5功能鍵 
  GLUT_KEY_F6:F6功能鍵 
  GLUT_KEY_F7:F7功能鍵 
  GLUT_KEY_F8:F8功能鍵 
  GLUT_KEY_F9:F9功能鍵 
  GLUT_KEY_F10:F10功能鍵 
  GLUT_KEY_F11:F11功能鍵 
  GLUT_KEY_F12:F12功能鍵 
  GLUT_KEY_LEFT:左方向鍵 
  GLUT_KEY_UP:上方向鍵 
  GLUT_KEY_RIGHT:右方向鍵 
  GLUT_KEY_DOWN:下方向鍵 
  GLUT_KEY_PAGE_UP:PageUp鍵 
  GLUT_KEY_PAGE_DOWN:PageDown鍵 
  GLUT_KEY_HOME:Home鍵 
  GLUT_KEY_END:End鍵 
  GLUT_KEY_INSERT:Insert鍵
x,y:當按下鍵時鼠標的座標,相對於窗口左上角,以像素爲單位

注意:ESC,回車和delete鍵由ASCII碼產生,即可以用glutKeyboardFunc()處理. 當在鍵盤上敲擊上述按鍵時調用該函數.注意與glutKeyboardFunc()的區別.

//*******************************************************************************************

void glutSpaceballMotionFunc(void (*func)(int x, int y, int z));

註冊一個當前窗口的spaceball平移的回調函數

參數:
func:形如void func(int x, int y, int z);
x,y,z:spaceball的三維空間座標.
paceball即一種特殊的帶3D滾輪的鼠標,不僅可以前後轉動,更可以在三維空間裏滾動,具體圖片,可以在百度裏搜索.

當spaceball在當前註冊的窗口內平移時,調用該函數.

//*******************************************************************************************
void glutSpaceballRotateFunc(void (*func)(int x, int y, int z));

註冊一個當前窗口的spaceball轉動的回調函數

參數:
func:形如void func(int x, int y, int z);
當spaceball在當前註冊的窗口內滾動時調用.

//*******************************************************************************************

void glutSpaceballButtonFunc(void (*func)(int button, int state));

註冊當前窗口的spaceball的按鍵回調函數.

參數:
func:形如void func(int button, int state);
button:按鍵編號,從1開始,可用的按鍵編號可以通過glutDeviceGet(GLUT_NUM_SPACEBALL_BUTTONS)查詢.
state:按鍵狀態
  GLUT_UP:按鍵釋放
  GLUT_DOWN:按鍵按下

當spaceball在當前窗口中敲擊相應的按鍵時調用.

//*******************************************************************************************

void glutButtonBoxFunc(void (*func)(int button, int state));

註冊當前窗口的撥號按鍵盒按鍵回調函數

參數:
func:形如void func(int button, int state);
button:按鍵編號,從1開始,可用的按鍵號可通過glutDeviceGet(GLUT_NUM_BUTTON_BOX_BUTTONS)查詢
state:按鍵狀態
  GLUT_UP:按鍵釋放
  GLUT_DOWN:按鍵按下

當撥號按鍵盒按鍵被按下時調用.


//*******************************************************************************************

void glutDialsFunc(void (*func)(int dial, int value));

註冊當前窗口的撥號按鍵盒撥號回調函數.

參數:
func:形如void func(int dial, value);
dial:dial的編號,從1開始,可通過glutDeviceGet(GLUT_NUM_DIALS)查詢可用編號.
value:dial所撥的值,value是每次所撥的值的累加,直到溢出.

當撥號按鍵盒撥號時被調用.

//*******************************************************************************************
void glutTabletMotionFunc(void (*func)(int x, int y));

註冊圖形板移動回調函數

參數:
func:形如void func(int x, int y);
x,y:圖形板移動的座標.

當圖形板移動時調用.

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

註冊當前窗口的圖形板按鍵回調函數

參數:
func:形如void func(int button, int state, int x, int y);
button:按鍵號,通過glutDeviceGet(GLUT_NUM_TABLET_BUTTONS)查詢可用鍵號.
state:按鍵狀態.
  GLUT_UP:按鍵被按下
  GLUT_DOWN:按鍵被釋放

x,y:當按鍵狀態改變時,相對於窗口的座標.

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

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

參數:
func:形如void func(void);指向重疊層的顯示回調函數.

這個函數告訴GLUT當窗口內容必須被繪製時,那個函數將被調用.當窗口改變大小或者從被覆蓋的狀態中恢復,或者由於調用glutPostOverlayRedisplay()函數要求GLUT更新時,執行func參數指定的函數.

//*******************************************************************************************

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

註冊當前窗口狀態的回調函數.

參數:
func:形如void func(int state);
state:窗口狀態.
  GLUT_HIDDEN:窗口不可見
  GLUT_FULLY_RETAINED:窗口完全未被遮擋
  GLUT_PARTIALLY_RETAINED:窗口部分遮擋
  GLUT_FULLY_COVERED:窗口被全部遮擋

當窗口狀態發生相應改變時調用.

//*******************************************************************************************

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

註冊釋放普通按鍵的回調函數

參數:
func:形如void func(unsigned char key, int x, int y);
key:按鍵的ASCII碼.
x,y:釋放按鍵時鼠標相對於窗口的位置,以像素爲單位.

當普通按鍵被釋放時調用.

//*******************************************************************************************


void glutSpecialUpFunc(void (*func)(int key, int x, int y));

註冊釋放特殊按鍵的回調函數

參數:
func:形如void func(int key, int x, int y);
key:特殊按鍵的標識
  GLUT_KEY_F1:F1功能鍵 
  GLUT_KEY_F2:F2功能鍵 
  GLUT_KEY_F3:F3功能鍵 
  GLUT_KEY_F4:F4功能鍵 
  GLUT_KEY_F5:F5功能鍵 
  GLUT_KEY_F6:F6功能鍵 
  GLUT_KEY_F7:F7功能鍵 
  GLUT_KEY_F8:F8功能鍵 
  GLUT_KEY_F9:F9功能鍵 
  GLUT_KEY_F10:F10功能鍵 
  GLUT_KEY_F11:F11功能鍵 
  GLUT_KEY_F12:F12功能鍵 
  GLUT_KEY_LEFT:左方向鍵 
  GLUT_KEY_UP:上方向鍵 
  GLUT_KEY_RIGHT:右方向鍵 
  GLUT_KEY_DOWN:下方向鍵 
  GLUT_KEY_PAGE_UP:PageUp鍵 
  GLUT_KEY_PAGE_DOWN:PageDown鍵 
  GLUT_KEY_HOME:Home鍵 
  GLUT_KEY_END:End鍵 
  GLUT_KEY_INSERT:Insert鍵
x,y:釋放特殊按鍵時鼠標相對於窗口的位置,以像素爲單位.

當特殊按鍵被釋放時調用.

//****************************************************************************************** 
void glutJoystickFunc(void (*func)(unsigned int buttonMask, int x, int y, int z), int pollInterval);

註冊操縱桿的回調函數

參數:
buttonMask:操縱桿按鍵
GLUT_JOYSTICK_BUTTON_A
GLUT_JOYSTICK_BUTTON_B
GLUT_JOYSTICK_BUTTON_C
GLUT_JOYSTICK_BUTTON_D
x,y,z:操縱桿在三維空間內移動的位移量
pollInterval:確定檢測操縱桿的間隔時間,其單位爲毫秒.

該函數在兩種情況下被調用:
1.在pollInterval所規定的時間間隔內調用.
2.在調用glutForceJoystickFunc()函數時調用一次glutJoystickFunc();
//*******************************************************************************************

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章