Ogre 初學指導 7

2021-06-09 20:18:53 字數 2658 閱讀 2332

幀監聽:滑鼠控制、渲染模式及計時器

此節依然是講解幀監聽中的一些操作:滑鼠(mouse)、渲染模式(render mode)及計時器(timer)

一、滑鼠控制

1、首先建立mouse物件,並用輸入系統例項化輸入物件(mouse)。

如:ois::mouse*_mouse;

_mouse =static_case(_man->createinputobject(ois::oismouse,false));//_man為上一節建立的輸入系統(inputmanager)

2、偵聽函式中,獲得滑鼠操作(capture)以獲取滑鼠狀態

如:_mouse->capture();

float rotx =_mouse->getmousestate().x.rel;//

3、實現滑鼠控制攝像機

根據當前滑鼠的位置進行旋**

如:滑鼠左右晃動(x軸方向變動),鏡頭也跟著變化,即設定攝像機繞y軸轉動。(要了解ogre中的 座標系統,參見第四小節)

float rotx =_mouse->getmousestate().x.rel * evt.timesincelastframe * (-1);

_camera->yaw(ogre::radian(rotx));

二、渲染模式

實體模式(solid)、線框模式(wireframe)、點模式(points)。

1、 建立渲染模式:polygonmode

ogre::polygonmode  _polymode;

2、 初始化:_polymode= ogre::polygonmode::pm_solid;//實體模型

3、 polygonmode是個列舉型別,只含有三個量:pm_solid、pm_wireframe、pm_points。

4、 設定模式切換:假設按鍵keynum= 「r」

keynum= ois::kc_r;

if(_key->iskeydown(keynum))

switch(_polymode)

casepm_solid: _polymode = ogre::polygonmode::pm_wireframe;

break;

casepm_wireframe: _polymode = ogre::polygonmode::pm_points;

break;

casepm_points: _polymode = ogre::polygonmode::pm_solid;

break;

default:

break;

5、 完成設定:_camera->setpolygonmode(_polymode);

三、計時器(timer)

根據「二」中的**,如果進行除錯會發現,當我們按下r鍵時,渲染模式會切換很多次,這是因為我們人手的反應速度小於每一幀的更新時間,這就導致了雖然我們按下了一次鍵但相應n次的結果!

為了解決這一問題,我們使用計時器。每一次當我們按下r鍵,乙個計時器就啟動了,並且只有當足夠的時間過去我們才能處理另乙個r鍵的按下。

1、 定義:ogre::timer_timer;

2、 復位(置零):_timer.reset();

每當我們響應完乙個按鍵後,要記得重新復位,否則,此按鍵只能相應一次

**:

#include

using

namespace

ogre;

class

myframelistener

:public

ogre

::framelistener

~myframelistener()

void

changepolygonmode

(ois

::keycode

keynum

=ois

::kc_r)

}_camera

->

setpolygonmode

(_polymode);

} bool

framestarted

(const

ogre

::frameevent

&evt)

//改變渲染模式

changepolygonmode

();

//模型節點更新位置

//mnode->translate(vector3(10,0,0) *evt.timesincelastframe);

return

true;

} };

class

example1

:public

~example1()

}protected:

void

createscene()

void

createcamera()

void

createframelistener()

private:

scenenode

*msinbadnode;

framelistener

*mframelistener;

}; int

main()

Ogre 初學指導 2

此小節主要學習 1 在3d空間中的幾個基本操作。2 場景是如何被組織的。3 操作不同的3d空間。2 場景組織方式 故意提前講解。場景的組織方式就像一棵倒立的樹,它由根部 root 不斷進行擴充套件。每當有新的模型需要載入到場景中,我們必須先把它掛在root節點或者是root節點的子節點 樹枝 上。場...

Ogre 初學指導 4

如果有疑問或發現錯誤可發e mail聯絡 swazer z 126.com 謝謝!空間座標系統及其操作 但是這一節詳細的講解關於ogre中的3d空間操作。圖ogrespace 上圖是ogre中的座標系統,豎直方向是y軸,左右為x軸,垂直使用者介面的是z軸。這個圖我們必須要時刻了然於胸否則很容易方向混...

軟體測試面試指導初學筆記整理

1 需要的知識 紮實的計算機基礎知識,作業系統,資料庫,資料結構,程式語言,測試理論等等 2 認證 軟體評測師 3 軟體測試的知名 51testing www.51testing.com 測試時代 www.testage.org 4 基礎知識 1.c語言。資料型別,運算子,陣列,程式控制流,if e...