Mogre學習筆記(三)

2021-04-19 06:17:56 字數 1708 閱讀 6576

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