OpenGL GLUT教程(十) GLUT選單

2021-04-14 05:23:13 字數 2489 閱讀 8214

glut教程

彈出式選單基礎

彈出式選單(像點滑鼠右鍵出來的選單那樣的)也是

glut的一部分,雖然它不能實現我們經常看到的windows系統彈出式選單的所有的功能,但是它也有很大的作用。給乙個程式增加選單提供了乙個比鍵盤更簡單的方法來和程式互動,選擇不同選項,而不用去記那些按鍵。

我們首先要做的是建立選單,建立選單函式

glutcreatemenu的原型如下:

int glutcreatemenu(

void (*func)(int value));

引數:func:為新建的選單處理選單事件的函式名。

這個函式的返回值是選單的識別符號(

menu identifier)。

我們的程式中,我們可以相加多少選單就加多少選單。對每個選單我們要指定乙個**函式,而且我們可以指定相同的函式。下面為選單增加一些條目(出來個空選單也沒什麼用)。

使用的函式是

glutaddmenuentry:

void glutaddmenuentry(

char *name,int value);

引數:name:選單名稱的字串。

value:當你選擇選單裡的一項後,這個值就返回給上面的

glutcreatemenu裡呼叫的函式。

這個函式根據函式名來看,就是給選單裡新增條目的,可以一直新增(這裡有個順序,自己實驗下就明白了的)。

好了現在有了乙個彈出式選單。但還有最後一件事要做,就是把選單和乙個滑鼠鍵連線起來(

void glutattachmenu(

int button);

引數:button: 乙個整數,指定選單和哪個滑鼠鍵關聯起來。

botton 可以去下面的值

;glut_left_button

glut_middle_button

glut_right_button

下面就是乙個應用了上面所有函式的例子。

...
#define red 1
#define green 2
#define blue 3
#define white 4
...
void createglutmenus()
注意

red,blue,green,和white必須定義為整數,再就是你必須為每個選單(選單裡的條目)定義不同的value,

下面我們寫處理選單事件的函式。我們將使用我們的選單來設定三角形的顏色。函式如下:

void proces**enuevents(int option)
}
剩下來的就是把我們的

createglutmenus函式放到main函式裡。下面的**就是當前的main函式。

void main(int argc, char **argv)

glut7.zip)。

下面我們還來看兩個函式,第乙個允許我們斷開滑鼠按鍵和乙個選單的關聯。前面我們用

glutattachmenu來在滑鼠和選單間建立關聯,但我們有時候需要斷開這種關聯。完成這個工作的函式是glutdetachmenu。函式原型如下:

void glutdetachmenu(

int button);

引數:button:要斷開的滑鼠按鍵。

button的取值和

glutattachmenu一樣。因此,要是我們想斷開關聯我們可以這樣:

...
glutdetachmenu(glut_right_button);
...
最後,如果你想恢復被選單使用了的資源,我們可以銷毀(

destroy)它,相應的函式是glutdestroymenu,它的原型如下:

void glutdestroymenu(

int menuidentifier);

引數:menuidentifier:要銷毀的選單的識別符號,它必須和函式

glutcreatemenu返回的值相同。

好了,到這裡你已經知道了基本的在

glut中建立選單,下章我們將探索更多的彈出式選單功能。

(汗 - -||   最近考試,煩。 考完了一定盡快完成這翻譯。 感覺他這說的挺囉嗦的,稍微看下後,再自己看看源**,估計就懂了,再自己寫程式時也無意識的用用選單功能,就基本上會了。    那個識別符號很重要的,別忘了。

nCode DesignLife案例教程十三

在本案例中,我們將使用designlife以批處理模式執行疲勞分析。ncode designlife對有限元應力結果進行疲勞分析。designlife最常用於互動模式,如其他示例所示。它也可以在批處理模式下執行,這可以有物流和效能方面的好處。有限元模型和輸入荷載與ncode designlife案例...

nCode DesignLife案例教程十五

在本案例中,我們將使用designlife的creep engine和hybrid load provider執行蠕變分析。此案例的檔案位於ncode安裝資料夾中的 demo designlife 15 creepanalysis 下。需要的檔案是 constantstress constantte...

nCode DesignLife案例教程十八

本練習的目的是學習如何使用designlife從線性動態有限元結果中進行疲勞計算。在荷載可以顯著激發共振模式的結構中,線性靜態疊加可能無法準確計算產生的應力時程。當共振激發時,某些位置的位移將大於施加靜載荷時的位移,因此模型中的應力也將增加。瞬態有限元分析將通過表示結構中的質量 剛度和阻尼以及在分析...