日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】Glut处理鼠标事件

發布時間:2025/3/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】Glut处理鼠标事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/wuyong2k/article/details/7839973

目錄(?)[-]

  • 檢測鼠標單擊
  • 檢測動作
  • 檢測鼠標進入或離開窗口
  • 應用
  • 檢測鼠標單擊

    要想在OpenGL中處理鼠標事件非常的方便,GLUT已經為我們的注冊好了函數,只要我們提供一個方法。使用函數glutMouseFunc,就可以幫我們注冊我們的函數,這樣當發生鼠標事件時就會自動調用我們的方法。

    函數的原型是:

    void glutMouseFunc(void(*func)(int button,int state,int x,int y)); 參數: func:處理鼠標click事件的函數的函數名。

    從上面可以看到,處理鼠標單擊事件的函數,一定有4個參數。第一個參數表明哪個鼠標鍵被按下或松開,這個變量可以是下面的三個值中的一個: GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON

    第二個參數表明,函數被調用發生時,鼠標的狀態,也就是是被按下,或松開,可能取值如下: GLUT_DOWN GLUT_UP

    當函數被調用時,state的值是GLUT_DOWN,那么程序可能會假定將會有個GLUT_UP事件,甚至鼠標移動到窗口外面,也如此。然而,如果程序調用glutMouseFunc傳遞NULL作為參數,那么GLUT將不會改變鼠標的狀態。

    剩下的兩個參數(x,y)提供了鼠標當前的窗口坐標(以左上角為原點)。

    檢測動作

    GLUT提供鼠標動作檢測能力。有兩種GLUT處理的motion:active motion和passive motion。Active motion是指鼠標移動并且有一個鼠標鍵被按下。Passive motion是指當鼠標移動時,并有沒鼠標鍵按下。如果一個程序正在追蹤鼠標,那么鼠標移動期間,每一幀將產生一個結果。

    和以前一樣,你必須注冊將處理鼠標事件的函數(定義函數)。GLUT讓我們可以指定兩個不同的函數,一個追蹤passive motion,另一個追蹤active motion。

    它們的函數原型如下:

    void glutMotionFunc(void(*func)(int x,int y)); void glutPassiveMotionFunc(void (*func)(int x,int y)); 參數: Func:處理各自類型motion的函數名。

    處理motion的參數函數的參數(x,y)是鼠標在窗口的坐標。以左上角為原點。

    檢測鼠標進入或離開窗口

    GLUT還能檢測鼠標鼠標離開,進入窗口區域。一個回調函數可以被定義去處理這兩個事件。GLUT里,調用這個函數的是glutEntryFunc,函數原型如下:

    void glutEntryFunc(void(*func)(int state)); 參數: Func:處理這些事件的函數名。

    上面函數的參數中,state有兩個值表明是離開還是進入窗口: GLUT_LEFT GLUT_ENTERED

    應用

    現在想實現的功能就是使用鼠標拖動,來轉動場景中的物體,當鼠標左鍵按下,并且上下左右滑動時,場景中的物體相應的會隨之上下左右旋轉,當鼠標右鍵按下,并且上下滑動時,場景中的物體相應的會隨之移入或是移出屏幕。

    首先,定義幾個全局變量:

    bool mouseLeftDown; bool mouseRightDown; float mouseX, mouseY; float cameraDistance; float cameraAngleX; float cameraAngleY;

    其中,mouseLeftDown和 mouseRightDown變量標志鼠標左右鍵按下與否,mouseX和mouseY變量標志鼠標滑動時,前一刻的鼠標所在位置,cameraDistance這個變量根據鼠標右鍵按下并上下滑動來控制場景中物體移入屏幕的遠近。cameraAngleX和cameraAngleY變量根據鼠標左鍵按下并滑動來控制場景中物體的旋轉。

    void mouseCB(int button, int state, int x, int y) {mouseX = x;mouseY = y;if(button == GLUT_LEFT_BUTTON){if(state == GLUT_DOWN){mouseLeftDown = true;}else if(state == GLUT_UP)mouseLeftDown = false;}else if(button == GLUT_RIGHT_BUTTON){if(state == GLUT_DOWN){mouseRightDown = true;}else if(state == GLUT_UP)mouseRightDown = false;} }void mouseMotionCB(int x, int y) {if(mouseLeftDown){cameraAngleY += (x - mouseX);cameraAngleX += (y - mouseY);mouseX = x;mouseY = y;}if(mouseRightDown){cameraDistance += (y - mouseY) * 0.2f;mouseY = y;}glutPostRedisplay(); }

    在主函數中,調用相應的函數注冊即可:

    glutMouseFunc(mouseCB); glutMotionFunc(mouseMotionCB);

    在場景中物體繪制之前,這樣就可以:

    glTranslatef(0, 0, cameraDistance); glRotatef(cameraAngleX, 1, 0, 0); glRotatef(cameraAngleY, 0, 1, 0); 參考: 鼠標事件處理

    轉載于:https://www.cnblogs.com/lzhitian/archive/2012/12/14/2818389.html

    總結

    以上是生活随笔為你收集整理的【转】Glut处理鼠标事件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美在线视频不卡 | 国产精品亚洲五月天丁香 | 成人精品免费网站 | 久久九九免费视频 | 国内爆初菊对白视频 | 久久尹人 | 视频在线观看电影完整版高清免费 | xxxxxx黄色 | 国产成人精品在线播放 | wwww欧美 | 少妇2做爰bd在线意大利堕落 | 国产激情综合五月久久 | 黄色大片视频 | 色骚综合 | 欧美日韩成人一区二区三区 | 天天弄天天操 | 成人av免费在线看 | 久久久久久久久综合 | 自拍三级| 极品少妇xxxx | 亚洲av成人无码久久精品老人 | 影音先锋制服丝袜 | 五月天激情视频在线观看 | 精品九九在线 | 色综合五月天 | 免费视频二区 | a毛毛片| 91精品在线免费 | 午夜啪啪网 | 日韩精品一区二区三区中文字幕 | 日本一区不卡视频 | 久久久噜噜噜www成人网 | 天堂视频中文在线 | 一区二区三区四区亚洲 | 91av视频网站 | 毛片的网址| 国产91综合| 91麻豆国产在线观看 | 日韩精品视频在线观看网站 | 18成人免费观看网站 | 另类捆绑调教少妇 | 五月天丁香视频 | youjizz.com国产 | 久久久久二区 | 久久黄色一级片 | 久久99影院| 男女黄网站 | 亚洲h视频| 亚洲国产精品久久精品怡红院 | 黄色一级在线视频 | 91成人在线观看国产 | 黄色变态网站 | 精品国产乱码一区二区三 | 在线色综合 | www.99视频 | 国产aⅴ无码片毛片一级一区2 | 欧美高清精品一区二区 | 精品成人一区二区三区 | 加勒比一区二区三区 | 亚洲精品理论 | av一区在线观看 | 婷婷综合久久 | 亚洲精品理论片 | 精品少妇一区二区 | 成人精品一区日本无码网 | 国模av在线 | 亚洲精品国产综合 | 涩涩视频在线 | www.国产精品视频 | 国产免费二区 | 精品视频在线免费 | 久久综合亚洲精品 | 五月天婷婷在线观看 | 亚州av | 精品少妇一区二区三区密爱 | 国产精品美女在线观看 | 欧美黄色片免费看 | 激情综合av| 欧美黑人一区 | 欧美精品自拍视频 | 伊人久久麻豆 | 99久久人妻无码中文字幕系列 | 一级片一区二区三区 | 免费古装一级淫片潘金莲 | 国产精品一区二区在线看 | 色爱综合网 | 婷婷成人av| 国产美女引诱水电工 | 成人高潮片 | 中文字幕一区二区三区人妻电影 | 精品少妇人妻一区二区黑料社区 | 成人三级在线视频 | 久久99精品波多结衣一区 | 久久久久久97 | 一级片在线播放 | 日本少妇在线观看 | 亚洲影院一区 | a级片网站 | 一级片视频播放 |