section 3: frame listeners and windows.forms inputframelistener,是ogre最有用的部分,下面我們就先來看一下**:
using system;
using system.collections.generic;
using system.windows.forms;
using mogreframework;
using mogre;
using system.drawing;
namespace tutorial04
catch (system.runtime.interopservices.sehexception)}}
class myogrewindow : ogrewindow
bool framestarted(frameevent evt)
void keydownhandler(object sender, keyeventargs e)
} void keyuphandler(object sender, keyeventargs e)
} void mousedownhandler(object sender, mouseeventargs e)
} void mouseuphandler(object sender, mouseeventargs e)
} void mousemovehandler(object sender, mouseeventargs e)
} }
class scenecreator
void scenecreating(ogrewindow win)}}
framelisteners
在ogre中,我們可以註冊乙個類在每個frame呈現之前和之後接收通知,root提供了framestarted和frameended事件來處理這些。ogre的主要迴圈過程如下:
root物件發起framestarted事件;
root呈現乙個frame;
root物件發起frameended事件。
這個迴圈會一直執行,直到其中乙個event handlers返回false。frameevent物件包括兩個變數,但只有timesincelastframe在乙個framelistener中有用。這個變數記錄了到上一次framestarted或frameended的時間間隔,注意到在framestarted方法中, frameevent.timesincelastframe指的是到上一次framestarted事件的時間,而不是frameended event。
我們寫乙個簡單的framestarted函式:
bool framestarted(frameevent evt)
把它新增到root.framestarted事件中:
this.root.framestarted += new framelistener.framestartedhandler(framestarted);要使程式響應鍵盤、滑鼠事件,必須新增相應的事件響應**,見開頭的**部分。需要強調的是,需要在framestarted方法中新增如下**,使響應被呈現:
camera.position += camera.orientation * mtranslation * evt.timesincelastframe;
按f5執行,就可以用左右上下前後移動攝像頭。
Mogre學習筆記(四)
section 4 the ogre startup sequence在我們寫自己的ogre應用前,必須知道ogre有乙個特殊的啟動順序。他主要分為以下7步 生成乙個root物件 定義資源 resourcegroupmanager.singleton.addresourcelocation loca...
Mogre學習筆記(七)
section 7 skeleton animation今天試圖新增多個模型的骨骼動畫,出了一些問題,鬱悶了一上午之後終於找到了問題所在,下面我們就首先給出tutorial上的一段 看看如何使用骨骼動畫,再說說我遇到的問題吧n n using system using system.drawing ...
Mogre學習筆記(五)
section 5 embed ogre in a windows.forms window 很多時候,我們需要把ogre放到乙個windows.form中,以方便使用,下面給出 先 using system using system.collections.generic using system...