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

(轉)glut函數詳解(10)--設備控制API

void glutIgnoreKeyRepeat(int ignore);

確認是否忽略自動的連續擊鍵(即當一個鍵被長時間按下不松開時,判斷其為一次擊鍵或是多次擊鍵).只對當前窗口有效.對glutKeyboardFunc()和glutSpecialFunc()兩個回調函數起作用.

參數:
ignore:(相當于布爾值)
     0  :不忽略,即認為是連續擊鍵
    非0:忽略,即認為是一次擊鍵
 
//*******************************************************************************************
 
void glutSetKeyRepeat(int repeatMode);

設置自動連續擊鍵模式的狀態

參數:repeatMode:
GLUT_KEY_REPEAT_OFF    :關閉自動連續擊鍵
GLUT_KEY_REPEAT_ON     :打開自動連續擊鍵
GLUT_KEY_REPEAT_DEFAULT:將自動連續擊鍵模式重置為默認狀態
注意:這個函數工作在全局范圍內,即它會影響所有窗口而不僅僅是當前窗口,所以當關閉了自動連續擊鍵模式后,確保在關閉當前程序銷毀前,將自動連續擊鍵模式重置為默認狀態.

這個函數的安全性不好,最好使用安全性高的glutIgnoreKeyRepeat(),盡量將操作限制在當前窗口,而不要輕易使用工作在全局狀態下的函數.
 
//*******************************************************************************************


void glutForceJoystickFunc(void);
強制調用當前窗口注冊的操縱桿回調函數glutJoystickFunc()一次.

posted @ 2009-03-03 15:37 小蟲蟲 閱讀(604) | 評論 (0)編輯 收藏

(轉)glut函數詳解(11)--狀態查詢API

int glutGet(GLenum state);

檢索指定的GLUT狀態

參數:
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.
  GLUT_WINDOW_COLORMAP_SIZE:返回顏色索引表的大小.

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

int glutDeviceGet(GLenum type);

檢索設備信息

參數:
type:要檢索的設備信息的名字,為以下常量:
  GLUT_HAS_KEYBOARD 如果鍵盤可用,返回非0值,否則,返回0.
  GLUT_HAS_MOUSE 如果鼠標可用,返回非0值,否則,返回0.
  GLUT_NUM_MOUSE_BUTTONS 返回鼠標支持的按鍵數,如果鼠標不可用,返回0,返回值0,表示檢索的設備不存在,非0表示設備可用.
  GLUT_HAS_SPACEBALL:如果spaceball可用,返回非0值,否則,返回0.
  GLUT_HAS_DIAL_AND_BUTTON_BOX:如果撥號按鍵盒可用,返回非0值,否則,返回0.
  GLUT_HAS_TABLET:如果圖形板可用,返回非0值,否則,返回0.
  GLUT_NUM_SPACEBALL_BUTTONS:返回spaceball支持的按鍵數,如果spaceball不存在,返回0.
  GLUT_NUM_BUTTON_BOX_BUTTONS:返回撥號按鍵盒支持的按鍵數,如果撥號按鍵盒不存在,返回0.
  GLUT_NUM_DIALS:返回撥號按鍵盒支持的撥號數,如果撥號按鍵盒不存在,返回0.
  GLUT_NUM_TABLET_BUTTONS:返回圖形板支持的按鍵數,如果圖形板不存在,返回0.
  GLUT_DEVICE_IGNORE_KEY_REPEAT:如果當前窗口被設置成關閉自動重復按鍵,則返回非0值.
  GLUT_DEVICE_KEY_REPEAT:返回自動重復按鍵的設置狀態.(說明文件上說是返回連續擊鍵的速率,其實此說法有誤.)
  GLUT_HAS_JOYSTICK:如果操縱桿可用,返回非0值,否則,返回0.
  GLUT_OWNS_JOYSTICK:如果glut認為已經成功獲得操縱桿的使用權,則返回非0值.否則,返回0.
  GLUT_JOYSTICK_BUTTONS:返回操縱桿支持的按鍵數,如果操縱桿不存在,返回0.
  GLUT_JOYSTICK_AXES:返回操縱桿支持的操縱軸數,如果操縱桿不存在,返回0.
  GLUT_JOYSTICK_POLL_RATE:返回當前窗口操縱桿被拉動的速率.
(注:對操縱桿的查詢限制在操縱桿的數量為1;鼠標被默認為存在,并且其按鍵數默認是3.)

 //******************************************************************************************
int glutExtensionSupported(const char *name);

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

參數:
extension:指定要測試的OpenGL擴展的名稱,如果給定擴展獲得支持,函數返回非0,否則返回0.
必須要有一個有效的當前窗口來調用glutExtensionSupported().它只返回OpenGL擴展信息,這意味著窗口系統依賴的擴展不被glutExtensionSupported()反映.
例子:
if(!glutExtensionSupported("GL_EXT_texture"))
{
 fprintf(stderr, "Missing the texture extension!");
 exit(1);
}

 //******************************************************************************************
 int glutGetModifiers(void);

返回組合功能鍵的狀態

返回值為以下定義的常量
  GLUT_ACTIVE_SHIFT:當按下shift鍵時
  GLUT_ACTIVE_CTRL:當按下ctrl鍵時
  GLUT_ACTIVE_ALT:當按下alt鍵時

 //******************************************************************************************
 int glutLayerGet(GLenum type);

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

參數:
type:查詢的重疊層狀態常量:
  GLUT_OVERLAY_POSSIBLE:在給定的初始顯示模式下,能否為當前窗口創建重疊層.如果能,返回1;如果不能,返回0.
  GLUT_LAYER_IN_USE:返回當前的使用層,為GLUT_NORMAL(使用正常的顏色層)或GLUT_OVERLAY(使用重疊層).
  GLUT_HAS_OVERLAY:判斷當前窗口是否創建了重疊層.
  GLUT_NORMAL_DAMAGED:如果當前窗口的圖像層在上一次顯示回調函數調用后已經破壞,則返回TRUE.
  GLUT_OVERLAY_DAMAGED:如果當前窗口的重疊層在上一次顯示回調函數調用后已經破壞,則返回TRUE.
  GLUT_TRANSPARENT_INDEX:返回當前窗口覆蓋層的透明顏色索引值,如果沒有覆蓋層則返回-1.


posted @ 2009-03-03 15:37 小蟲蟲 閱讀(991) | 評論 (0)編輯 收藏

(轉)glut函數詳解(9)--回調API

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

posted @ 2009-03-03 15:36 小蟲蟲 閱讀(1108) | 評論 (0)編輯 收藏

(轉)glut函數詳解(8)--調試API

void glutReportErrors(void);

這個函數打印出OpenGL的運行時錯誤,它應該只被用在debug中,因為它的調用會降低OpenGL的速度,它所做的僅僅是不斷調用glGetError()直到沒有錯誤產生.每一個錯誤都以GLUT warning形式報告,并由gluErrorString()產生相應的錯誤信息.

posted @ 2009-03-03 15:34 小蟲蟲 閱讀(452) | 評論 (0)編輯 收藏

(轉)glut函數詳解(7)--字體處理API

void glutBitmapCharacter(void *font, int character);

繪制一個圖像字符

int glutBitmapWidth(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:繪制的字符的ASCII碼.


int glutBitmapLength(void *font, const unsigned char *string);

獲取一個圖像字符串的寬度.

參數:
font:同上.
string:想要測量寬度的字符串.

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

void glutStrokeCharacter(void *font, int character);

繪制一個圖形字符

int glutStrokeWidth(void *font, int character);

返回一個圖形字體的寬度

參數:
font:要使用的圖形字體,如下表所示:
  GLUT_STROKE_ROMAN 一種等間距的Roman Simplex字體,僅包括32到127的ASCII字符
  GLUT_STROKE_MONO_ROMAN 一種單一間距的Roman Simplex字體,僅包括32到127的ASCII字符
Character:繪制的字符的ASCII碼.


int glutStrokeLength(void *font, const unsigned char *string);

獲取一個圖形字符串的寬度

參數:
font:同上.
string:想要測量寬度的字符串.

posted @ 2009-03-03 15:32 小蟲蟲 閱讀(1030) | 評論 (0)編輯 收藏

(轉)glut函數詳解(6)--顏色索引表管理API

void glutSetColor(int cell, GLfloat red, GLfloat green, GLfloat blue);

設置當前窗口當前層一個顏色表單元的顏色
參數:
cell:索引值,標記在顏色表中的位置,其值從0開始,并且必須小于顏色表的最大單元數.
當前顏色表的大小可通過調用glutGet(GLUT_WINDOW_COLORMAP_SIZE)獲得.
red:紅色成分
green:綠色成分
blue:藍色成分

//*******************************************************************************************
GLfloat glutGetColor(int cell, int component);

獲取指定的顏色索引的顏色值.
參數:
cell:索引值,標記在顏色表中的位置,其值從0開始,并且必須小于顏色表的最大單元數.
當前顏色表的大小可通過調用glutGet(GLUT_WINDOW_COLORMAP_SIZE)獲得.
component:選擇下列的值:
  GLUT_RED:讓函數返回該索引的紅色成分.
  GLUT_GREEN:讓函數返回該索引的綠色成分.
  GLUT_BLUE:讓函數返回該索引的藍色成分.

//*******************************************************************************************
void glutCopyColormap(int win);

將邏輯顏色表從指定的窗口拷貝到當前窗口
參數:win:窗口標識符,邏輯顏色表從該窗口拷貝到當前的窗口.

posted @ 2009-03-03 15:31 小蟲蟲 閱讀(822) | 評論 (0)編輯 收藏

(轉)glut函數詳解(5)--內建模型API

void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);

繪制線框球體

void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);

繪制實心球體

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

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

void glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);

繪制線框圓錐體

void glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);

繪制實心圓錐體

參數:
radius:圓錐體的半徑
height:圓錐體的高
slices:圓錐體圍繞z軸分割的數目
stacks:圓錐體沿著z軸分割的數目
圓錐體的軸為z軸方向,它的基底位于z=0的平面內,頂點z=height,圓錐體圍繞z軸分割slices個數目,沿著z軸分割stacks個數目.

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

void glutWireCube(GLdouble size);

繪制線框立方體

void glutSolidCube(GLdouble size);

繪制實心立方體

參數:size:立方體的邊長

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

void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);

繪制線框圓環

void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings);

繪制實心圓環

參數:
innerRadius:圓環的內半徑
outerRadius:圓環的外半徑
nsides:圓環腔的分割數
rings:圓環的環線數

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

void glutWireDodecahedron(void);

繪制線框十二面體

void glutSolidDodecahedron(void);

繪制實心十二面體

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

void glutWireTeapot(GLdouble size);

繪制線框茶壺

void glutSolidTeapot(GLdouble size);

繪制實心茶壺

參數:size:茶壺的相對大小

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

void glutWireOctahedron(void);

繪制線框八面體

void glutSolidOctahedron(void);

繪制實心八面體

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

void glutWireTetrahedron(void);

繪制線框四面體

void glutSolidTetrahedron(void);

繪制實心四面體

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

void glutWireIcosahedron(void);

繪制線框二十面體

void glutSolidIcosahedron(void);

繪制實心二十面體


posted @ 2009-03-03 15:30 小蟲蟲 閱讀(1517) | 評論 (0)編輯 收藏

(轉)glut函數詳解(4)--菜單API

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

創建一個新的彈出示菜單
參數:
func:形如void func(int a);當點擊菜單時,調用這個回調函數
value:傳遞給回調函數的數值,它由所選擇的菜單條目對應的整數值所決定
這個函數創建一個新的彈出式菜單,并返回一個唯一的標識次菜單的整型標識符,并將新建的彈出菜單與func函數關聯在一起,這樣,當選擇此菜單中的一個菜單條目時,調用回調函數func.

//******************************************************************************************
void glutDestroyMenu(int menu);

刪除指定的菜單
menu:被刪除的菜單的標識符

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

int glutGetMenu(void);

獲取當前菜單的標識符

//******************************************************************************************
void glutSetMenu(int menu);

設置為當前菜單
menu:被設置為當前菜單的標識符

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

void glutAddMenuEntry(const char *label, int value);

添加一個菜單條目
參數:
label:菜單條目的名稱
value:傳遞到菜單處理函數的值,即在glutCreateMenu中注冊的回調函數
如果用戶選擇了這個菜單條目,對應的菜單回調函數就被調用,并以value值作為傳遞給此回調函數的參數:

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

void glutAddSubMenu(const char *label, int submenu);

在當前菜單的底部增加一個子菜單的觸發條目
參數:
label:子菜單觸發條目的名稱
submenu:子菜單的標識符

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

void glutChangeToMenuEntry(int item, const char *label, int value);

更改當前菜單中指定菜單項
參數:
item:更改菜單項的索引(最頂層的菜單項的索引為1)
label:菜單條目的名稱
value:傳遞到菜單處理函數的值,即在glutCreateMenu中注冊的回調函數

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

void glutChangeToSubMenu(int item, const char *label, int submenu);

將指定的當前菜單中菜單項變為子菜單觸發條目
參數:
item:更改菜單項的索引(最頂層的菜單項的索引為1)
label:子菜單觸發條目的名稱
submenu:子菜單的標識符

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

void glutRemoveMenuItem(int item);

刪除指定的菜單項
參數:
item:當前菜單中要刪除的菜單項的索引(最頂層的菜單項的索引為1)

 //*****************************************************************************************
void glutAttachMenu(int button);

把當前窗口的一個鼠標按鍵與當前菜單關聯起來

void glutDetachMenu(int button);

解除鼠標按鍵與彈出式菜單的關聯關系

參數:
button:指明何種鼠標按鍵,可用的符號為以下三種:
GLUT_LEFT_BUTTON 鼠標左鍵
GLUT_RIGHT_BUTTON 鼠標右鍵
GLUT_MIDDLE_BUTTON 鼠標中鍵

posted @ 2009-03-03 15:29 小蟲蟲 閱讀(984) | 評論 (0)編輯 收藏

(轉)glut函數詳解(3)--重疊層API

void glutEstablishOverlay(void);

創建當前窗口的重疊層,該重疊層的顯示模式由初始顯示模式決定,應在調用glutEstablishOverlay之前調用,glutInitDisplayMode函數來設置初始的顯示模式. 實現重疊層需要硬件的支持,并不是所有的系統都提供該支持,如果系統不支持重疊層,那么對glutEstablishOverlay函數的調用就會引起運行錯誤,GLUT將終止程序的運行.可以調用glutLayerGet(GLUT_OVERPLAY_POSSIBLE)來判斷系統是否支持在當前窗口中當前的顯示模式下創建重疊層.

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

void glutRemoveOverlay(void);

刪除當前層的重疊層

//*****************************************************************************************
void glutUseLayer(GLenum layer);

改變當前窗口的使用層
參數:layer:指定窗口的使用層,為
GLUT_NORMAL:使用正常的顏色層
GLUT_OVERLAY:使用重疊層

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

void glutPostOverlayRedisplay(void);

標記當前窗口的重疊層需要重繪

//****************************************************************************************
void glutPostWindowOverlayRedisplay(int win);

標記指定窗口的重疊層需要重繪
參數:win:需要重繪的窗口的重疊層的標識符

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

void glutShowOverlay(void);

顯示當前窗口的重疊層

void glutHideOverlay(void);

隱藏當前窗口的重疊層

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

posted @ 2009-03-03 15:27 小蟲蟲 閱讀(547) | 評論 (0)編輯 收藏

(轉)glut函數詳解(2)--窗口API


int glutCreateWindow(const char *title);

產生一個頂層的窗口.title作為窗口的名字,也就是窗口標題欄顯示的內容.
返回值是生成窗口的標記符,可用函數glutGetWindow()加以引用.
 
//******************************************************************************************
 
int glutCreateSubWindow(int win, int x, int y, int width, int height);
 
創建一個子窗口.win是其父窗口的標記符.x,y是子窗口左上角相對父窗口的位移,以像素表示.width,height是子窗口的寬和高.

 //*****************************************************************************************
void glutDestroyWindow(int win);

銷毀窗口,win是所要銷毀的窗口的標識符.這個函數銷毀指定的窗口以及與窗口關聯的OpenGL上下文,重疊層,子窗口等一切與此窗口相關的內容.

 //*****************************************************************************************
void glutPostRedisplay(void);

標記當前窗口的圖像層需要重新繪制,在glutMainLoop函數的事件處理循環的下一個循環中,將調用該窗口的顯示回調函數重繪該窗口的圖像層.

 //******************************************************************************************
void glutPostWindowRedisplay(int win);

標記指定的窗口需重繪,在glutMainLoop函數的事件處理循環的下一個循環中,將調用該窗口的顯示回調函數重繪該窗口的圖像層.
參數:win:需刷新的窗口標識符

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

void glutSwapBuffers(void);

當窗口模式為雙緩存時,此函數的功能就是把后臺緩存的內容交換到前臺顯示.當然,只有單緩存時,使用它的功能跟用glFlush()一樣.而使用雙緩存是為了把完整圖畫一次性顯示在窗口上,或者是為了實現動畫.

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

int glutGetWindow(void);

返回當前窗口的標識符

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

void glutSetWindow(int win);

設置標記符為win的窗口為當前窗口

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

void glutSetWindowTitle(const char *title);

設置當前窗口(必須是頂層窗口)的標題,窗口一旦建立后,窗口標題就可以由這個函數來改變

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

 void glutSetIconTitle(const char *title);

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

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

 void glutPositionWindow(int x, int y);

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

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

 void glutReshapeWindow(int width, int height);

改變當前窗口的大小.width,height是當前窗口新的寬度和高度值,當然只能是正值.

 //***************************************************************************************
 void glutPopWindow(void);

在同一個父窗口的子窗口中,使當前的子窗口與排列在它前一個位置的子窗***換位置

void glutPushWindow(void);

在同一個父窗口的子窗口中,使當前的子窗口與排列在它后一個位置的子窗***換位置

這兩個函數對頂層窗口和子窗口都起作用,但函數的結果并不立即發生,直到下一個事件循環.

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

 void glutIconifyWindow(void);

讓當前窗口成為一個圖標,也即是最小化,使當前窗口圖標化顯示.

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

void glutShowWindow(void);

顯示當前窗口(這時它還是可能被其它窗口擋住).

//*****************************************************************************************
void glutHideWindow(void);

隱藏當前窗口

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

void glutFullScreen(void);

把當前窗口用全屏顯示,當前窗口是頂層窗口時才有效.

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

 void glutSetCursor(int cursor);

設置當前窗口的光標樣式.
參數:
cursor:指定鼠標的形狀,為下面的一種值光標的形狀
/* Basic arrows. */
GLUT_CURSOR_RIGHT_ARROW
GLUT_CURSOR_LEFT_ARROW
/* Symbolic cursor shapes. */
GLUT_CURSOR_INFO
GLUT_CURSOR_DESTROY
GLUT_CURSOR_HELP
GLUT_CURSOR_CYCLE
GLUT_CURSOR_SPRAY
GLUT_CURSOR_WAIT
GLUT_CURSOR_TEXT
GLUT_CURSOR_CROSSHAIR
/* Directional cursors. */
GLUT_CURSOR_UP_DOWN
GLUT_CURSOR_LEFT_RIGHT
/* Sizing cursors. */
GLUT_CURSOR_TOP_SIDE
GLUT_CURSOR_BOTTOM_SIDE
GLUT_CURSOR_LEFT_SIDE
GLUT_CURSOR_RIGHT_SIDE
GLUT_CURSOR_TOP_LEFT_CORNER
GLUT_CURSOR_TOP_RIGHT_CORNER
GLUT_CURSOR_BOTTOM_RIGHT_CORNER
GLUT_CURSOR_BOTTOM_LEFT_CORNER
/* Fullscreen crosshair (if available). */
GLUT_CURSOR_FULL_CROSSHAIR:
(在全屏模式下使用,等同于GLUT_CURSOR_CROSSHAIR)
/* Blank cursor. */
GLUT_CURSOR_NONE:不顯示鼠標
/* Inherit from parent window. */
GLUT_CURSOR_INHERIT:使用父窗口的鼠標

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

void glutWarpPointer(int x, int y);

這個函數將鼠標指針移動到一個相對于當前窗口左上角的新的位置,以窗口左上角為原點,右為X軸正方向,下為Y軸正方向,參數x,y是在這個坐標系中的點,可以為負值.如果坐標值超出屏幕可見范圍,則將該值強行控制在屏幕可見范圍以內.一般情況下這個函數最好不要使用, 因為鼠標動作還是留給用戶控制比較人性化.

posted @ 2009-03-03 15:26 小蟲蟲 閱讀(1239) | 評論 (0)編輯 收藏

僅列出標題
共3頁: 1 2 3 
<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

常用鏈接

留言簿(5)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩美女在线| 久久九九久久九九| 欧美午夜精品一区二区三区| 亚洲视频在线看| 国产精品99久久久久久久久久久久| 欧美日韩不卡一区| 午夜精彩视频在线观看不卡 | 91久久香蕉国产日韩欧美9色 | 午夜亚洲视频| 久久亚洲私人国产精品va媚药| 国产在线成人| 免费欧美高清视频| 欧美日韩色婷婷| 久久精品人人做人人综合 | 亚洲欧美日韩爽爽影院| 韩国视频理论视频久久| 欧美激情亚洲激情| 欧美视频国产精品| 久久黄色网页| 欧美日韩大片| 久久精品动漫| 欧美精品一区二区精品网| 亚洲男女毛片无遮挡| 久久精品国产精品亚洲精品| 91久久国产精品91久久性色| 亚洲桃花岛网站| **欧美日韩vr在线| 一区二区欧美精品| 亚洲大片免费看| 中文国产亚洲喷潮| 最近看过的日韩成人| 亚洲欧美日本在线| 在线视频一区二区| 久久久久久电影| 午夜精品久久久久影视| 狂野欧美激情性xxxx| 午夜一级在线看亚洲| 欧美激情在线播放| 老色鬼精品视频在线观看播放| 欧美日韩一区二区三区在线| 欧美sm视频| 国产一区深夜福利| 亚洲一区二区成人| 一本久久a久久免费精品不卡| 久久精品国产亚洲精品 | 激情综合在线| 亚洲一区二区在线观看视频| 99ri日韩精品视频| 欧美电影打屁股sp| 免费不卡中文字幕视频| 国产亚洲欧美一区在线观看| 一区二区三区视频观看| 99re6热只有精品免费观看 | 久久精品国产第一区二区三区最新章节| 中国亚洲黄色| 欧美日韩国产综合新一区| 欧美二区在线播放| 一区二区三区在线免费视频| 欧美一区二区黄色| 久久精品国产久精国产思思| 国产精品第13页| 这里是久久伊人| 亚洲视频碰碰| 国产精品av免费在线观看| 亚洲激情成人| 亚洲国产综合在线| 欧美 日韩 国产一区二区在线视频| 美女久久一区| 狠狠色狠色综合曰曰| 日韩系列在线| 欧美日韩国产不卡| 日韩视频在线观看国产| 亚洲一本大道在线| 国产精品白丝av嫩草影院| 亚洲午夜在线观看| 欧美一级一区| 狠狠色综合一区二区| 久久综合久久综合这里只有精品 | 亚洲国产欧美久久| 欧美激情一区在线观看| 9国产精品视频| 欧美综合国产| 亚洲电影有码| 欧美日本亚洲视频| 亚洲四色影视在线观看| 久久精品成人欧美大片古装| 在线看片成人| 欧美日韩xxxxx| 午夜精品久久久久影视| 免费成人网www| 亚洲视频综合| 国模私拍一区二区三区| 欧美mv日韩mv国产网站| 亚洲国产日韩欧美在线99 | 正在播放日韩| 国产伦精品一区二区三区照片91 | 国产精品日韩在线播放| 久久激情久久| 日韩写真视频在线观看| 欧美在线观看一区二区三区| 亚洲国产精品ⅴa在线观看 | 欧美一区二区三区精品电影| 亚洲第一区中文99精品| 午夜精品成人在线视频| 精品动漫3d一区二区三区免费| 欧美激情乱人伦| 久久精品国产99精品国产亚洲性色| 亚洲欧洲日韩综合二区| 久久久综合免费视频| 在线一区欧美| 91久久精品国产91久久| 国产欧美一区二区视频| 欧美久久综合| 久久综合久久久| 亚洲欧美日本在线| 一区二区三区视频免费在线观看| 美女成人午夜| 久久成人亚洲| 亚洲一级片在线观看| 亚洲狠狠丁香婷婷综合久久久| 国产精品综合| 国产精品a级| 欧美日韩不卡| 欧美日韩www| 欧美激情第三页| 久久婷婷丁香| 久久久91精品国产| 亚洲男女自偷自拍图片另类| 日韩视频免费观看高清完整版| 欧美 日韩 国产 一区| 久久精品国产一区二区三| 亚洲欧美视频在线观看视频| 亚洲最黄网站| 日韩午夜在线观看视频| 一区二区三区国产精华| 美女999久久久精品视频| 久久九九99| 久久久久网站| 久久婷婷丁香| 久久综合国产精品| 久久婷婷综合激情| 久久精品72免费观看| 欧美一区2区视频在线观看| 亚洲自拍三区| 小处雏高清一区二区三区| 午夜亚洲性色视频| 久久av资源网站| 久久九九国产| 欧美成人中文字幕| 亚洲国产美国国产综合一区二区| 亚洲电影第1页| 亚洲精品在线观| 亚洲视频网站在线观看| 性久久久久久久久| 久久精品在线播放| 免费在线成人av| 欧美日韩高清在线观看| 欧美午夜视频网站| 国产亚洲精品一区二区| 伊人久久亚洲影院| 亚洲国产精品久久| 一区二区三区四区国产| 亚洲欧美日韩系列| 久久久久久9| 亚洲国产精品999| 一本不卡影院| 久久九九热re6这里有精品| 免费日韩一区二区| 国产精品久久中文| 亚洲大黄网站| 亚洲一区日本| 久久久亚洲精品一区二区三区 | 欧美亚洲综合在线| 久久夜色精品国产| 亚洲精品午夜| 久久国产天堂福利天堂| 欧美日韩国产成人在线91| 国产精品久久亚洲7777| 伊人久久婷婷| 亚洲男人av电影| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲欧美日韩综合| 久热精品视频在线| 国产精品草莓在线免费观看| 尹人成人综合网| 亚洲一本大道在线| 欧美高清日韩| 欧美在线视频观看免费网站| 欧美老女人xx| 欲色影视综合吧| 亚洲欧洲av一区二区| 欧美大胆成人| 午夜精品久久久久久久男人的天堂| 欧美高清一区二区| 国产在线成人| 欧美一区午夜精品| 日韩视频免费大全中文字幕| 久久青草福利网站| 国产日韩av在线播放| 中文成人激情娱乐网|