Irrlicht引擎原始碼剖析 第二天

2021-06-08 00:47:19 字數 1318 閱讀 2413

我們來看看irrlicht.h檔案中宣告的建立引擎裝置物件的函式的形參:

irrlicht_api irrlichtdevice* createdevice(video::edrivertypedevicetype, const core::dimension2d& windowsize, u32 bits, boolfullscene, ieventreceiver* receiver = 0);

引數devicetype:裝置型別,當前可選型別有:video::dt_null, video::dt_software,video::dt_directx8和video::dt_opengl.

引數bits             :在全屏模式下每個畫素的位。若是視窗模式,則忽略。

引數fullscene     :如果值為true,該裝置應在全屏執行。否則裝置執行在視窗模式。

引數receiver      :使用者建立事件接收器。用於返回建立的irrlicht裝置物件的指標,

若建立失敗,則返回null。

可知接下來要看的**是include目錄下的ieventreceiver.h、irrlichtdevice.h、irrtypes.h 

3個頭檔案。

在irrtypes.h中,為了保證引擎的可移植性,對各個資料型別進行了typedef操作。即irrlicht引擎所有基本資料型別的集合。

在ieventreceiver.h中,使用列舉型別分別儲存了gui事件、滑鼠事件和鍵盤事件三種事件型別。將全部事件型別封裝成介面。因為該檔案在預定義中包含了include\core目錄下的position2d.h標頭檔案,所以我們接著先看該標頭檔案。

在position2d.h中,實現了乙個支援2d座標的簡單類模板。預定義中包含了irrtypes.h標頭檔案。有x,y2個成員資料型別,3個建構函式及系列運算子過載函式。在原檔案中實現「+」運算子過載時**有誤,已被我更正。

在irrlichtdevice.h中,在預處理中包含了9個頭檔案,由於其中絕大部分都還沒接觸,所以先不新增。建立了irrlicht引擎裝置類,該類繼承了iunknown類。所以,接下來我們看iunknown.h標頭檔案。

在iunknown.h中,實現iunknown類,該類建立了引用計數機制,通過grab,drop管理物件引用次數。還為每個物件的例項儲存除錯字串,獲取和設定除錯名稱。該類是irrlicht引擎大多數類的基類。

最後在看乙個keycodes.h標頭檔案,在該標頭檔案中,定義了鍵盤的鍵編碼。

over,今天解決8個**檔案,還剩175個。

備註:在標頭檔案irrlicht.h

和irrlichtdevice.h的預處理部分,還有一些標頭檔案尚未新增。 

irrlicht引擎原始碼剖析 引用計數

在研究irrlicht的video driver和scene graph之前,必須先了解在irrlicht中廣泛應用的引用計數機制。irrlicht的介面ireferencecounted實現了引用計數的機制。需要採用引用計數管理的類都會繼承這個介面。irr的引用計數最重要的兩個介面就是grab 和...

irrlicht引擎原始碼剖析 引用計數

在研究irrlicht的video driver和scene graph之前,必須先了解在irrlicht中廣泛應用的引用計數機制。irrlicht的介面ireferencecounted實現了引用計數的機制。需要採用引用計數管理的類都會繼承這個介面。irr的引用計數最重要的兩個介面就是grab 和...

Irrlicht引擎原始碼剖析 第三天

今天開始看include core部分,首先開啟irrmath.h,該檔案在core命名空間裡定義了4個常數,如浮點數比較時的捨入精度,圓周率,以及用於角度與弧度之間轉換的常數值。接著看vector2d.h,該檔案實現了乙個2d向量的模板類,以其相關方法的定義。因為該類中的normalize 方法的...