OSG學習筆記15 OSG中對事件的處理

2021-07-23 14:04:42 字數 1070 閱讀 2066

看了王銳大大的書,我感覺osg中對事件的處理主要是由以下幾塊組成的:

1、事件介面卡 guieventadapter

這個類是作為系統互動事件和osg互動事件的適配介面。這一句話還不是很理解。

原始碼文件裡對於這個類的定義是:事件類,儲存鍵盤、滑鼠和視窗事件。

公有型別包括:

(這些型別都是列舉型別,每個型別中有若干整形常量)

mousebuttonmask

eventtype :osg中定義了的人機互動事件型別

keysymbol:osg中的鍵盤按鍵標識

modkeymask:osg中的鍵盤按鍵標識2

mouseyorientation

scrollingmotion

tabletpointertype

enum touchphase

2、動作介面卡 guiactionadapter

使用者向系統傳遞請求通過guiactionadapter類來實現。所有的動作都會傳遞給平台相關的視窗系統。

3、事件佇列

eventqueue就是事件佇列,可以理解為乙個互動事件的集合,它儲存了乙個guieventadapter的佇列,記錄了所有傳遞給場景的滑鼠和鍵盤事件。

4、事件處理器

guieventhandler,是osg鍵盤和滑鼠互動事件的處理終端,它提供了可擴充套件的虛函式handle(),這個函式是使用者自定義的互動事件處理工具。通過對這個類的派生和虛函式的重構就能夠構建使用者自定義的事件處理器,對相應的事件做出相應的操作。

5、virtual bool osgga::guieventhandler::handle(const guieventadapter& ea,guiactionadapter& aa);

@para1 const guieventadapter& ea : 事件介面卡:通過這個物件來判斷當前要處理的事件型別,它只能被獲取不能修改,所以是const型別。

@para2 guiactionadapter& aa:動作介面卡:反饋動作,大多數時候這個傳入值表示當前所用的檢視物件view,可以用它來獲取或控制視景器的狀態變化。

重構這個函式可以完成各種使用者自定義的互動操作。

OSG學習筆記(一)應用基礎

x軸 預設螢幕水平向右方向。y軸 垂直螢幕向里。z軸 垂直向上。模型仍在渲染當中,損耗並未減少,適用於小模型。osg ref ptrosgcool osgdb readnodefile glider.osg oc setnodemask 0 在記憶體中消失,需要時顯示出來,適用於使用頻率較低的模型。...

OSG學習筆記19 再看pick點選物體

之前一直使用的pick方法就是將第乙個點選到的節點儲存下來,如果場景中只有乙個物體,當然是沒有問題的。當場景中出現多個物體,並且每個物體設定了標籤,是可以被修改還是不能被修改,當兩個物體重合的時候就不能得到正確的結果。正確的做法是 用迭代器遍歷所有獲取到的節點並再遍歷nodepath,找到需要的節點...

osg中幾何體繪製筆記(一)

1 複雜的場景都是由少數的基本圖元構成。我們可以通過構建簡單的圖元來實現複雜場景。2 osg中定義了純基類drawable作為幾何圖元的基類。從drawable派生出9個類,其中比較重要的為geometry和shapedrawable。geometry用來繪製幾何體,使用比較靈活,而shapedra...