• <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>

            (轉)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 小蟲蟲 閱讀(974) | 評論 (0)編輯 收藏

            (轉)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 小蟲蟲 閱讀(591) | 評論 (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 小蟲蟲 閱讀(1097) | 評論 (0)編輯 收藏

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

            void glutReportErrors(void);

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

            posted @ 2009-03-03 15:34 小蟲蟲 閱讀(438) | 評論 (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 小蟲蟲 閱讀(1007) | 評論 (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 小蟲蟲 閱讀(809) | 評論 (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 小蟲蟲 閱讀(1494) | 評論 (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 小蟲蟲 閱讀(973) | 評論 (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 小蟲蟲 閱讀(534) | 評論 (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 小蟲蟲 閱讀(1211) | 評論 (0)編輯 收藏

            僅列出標題
            共3頁: 1 2 3 
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            常用鏈接

            留言簿(5)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久艹| 亚洲精品国产综合久久一线| 麻豆av久久av盛宴av| 亚洲精品乱码久久久久久久久久久久| 亚洲精品第一综合99久久| 亚洲欧美日韩久久精品第一区| 国产国产成人精品久久| 深夜久久AAAAA级毛片免费看| 亚洲精品国产美女久久久| 色综合久久中文综合网| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 国产成人香蕉久久久久| 香港aa三级久久三级老师2021国产三级精品三级在 | 国产精品99久久久精品无码| 国产美女久久久| 精品久久久久久久国产潘金莲| 99久久精品国产麻豆| 久久午夜免费视频| 精品久久久久久国产免费了| 久久亚洲精品国产精品| 久久综合色老色| 品成人欧美大片久久国产欧美...| 亚洲AV无码久久精品蜜桃| 久久久久亚洲精品无码网址| 国产精品毛片久久久久久久| 一本久久a久久精品亚洲| 深夜久久AAAAA级毛片免费看| 久久久久久免费一区二区三区| 久久精品国产男包| 99久久综合国产精品免费| 精品国产婷婷久久久| 久久中文字幕一区二区| 久久国产精品久久| 国产亚洲婷婷香蕉久久精品| 99久久精品国产麻豆| 东京热TOKYO综合久久精品| 国产69精品久久久久9999APGF| 亚洲欧美一级久久精品| 久久久这里有精品| 漂亮人妻被中出中文字幕久久 | 久久99精品国产麻豆宅宅|