Posts Tagged ‘ Aquilae

CEGUI,OIS和DirectX的結合

這裡所說的OIS是指Object-Oriented Input System,一個可以跨平台的開源輸入系統。

網路上面搜索OIS的使用教程,基本都是和Ogre引擎結合的,而Aquilae 2是使DirectX 10的,所以在這裡直接寫個OIS以及CEGUI在DirectX環境下面的使用.

首先來看OIS:

先來這裡下載:http://sourceforge.net/projects/wgois/ 然後編譯成一個lib.

在自己的project裡面include”OIS.h”即可,然後在鏈接到那個編譯好的lib.

這裡木有包含遊戲桿的設備初始化,只有鍵盤和鼠標:

OIS::InputManager        *m_pInputManager;      //OIS輸入管理員
OIS::Mouse                *m_pMouse;              //OIS輸入鼠標器
OIS::Keyboard            *m_pKeyboard;          //OIS輸入鍵盤

InputManager對象是必須的,她負責整個輸入系統下面的運作。

接著再進行OIS的創建和初始化:

m_pInputManager = OIS::InputManager::createInputSystem((size_t)m_Hwnd);
m_pKeyboard = static_cast(m_pInputManager->createInputObject( OIS::OISKeyboard, true ));
m_pMouse = static_cast(m_pInputManager->createInputObject( OIS::OISMouse, true));

其中,m_Hwnd是窗口的句柄。createInputObject( OIS::OISMouse, true)這裡面參數true的意思是使用緩衝模式,如果你想使用監聽器來監聽輸入設備,那麼這裡的true參數是必須的。

下面我們開始說輸入設備的監聽器:

這裡的監聽器同時負責鼠標和鍵盤的監聽,所以得繼承來自兩個類:

class InputDeviceListener
	:public OIS::MouseListener,public OIS::KeyListener
{
public:
	//----------------------------------------------------------------------------------
	//構造函式
	//----------------------------------------------------------------------------------
	InputDeviceListener();
	//----------------------------------------------------------------------------------
	//析構函式
	//----------------------------------------------------------------------------------
	~InputDeviceListener();
public:
	//----------------------------------------------------------------------------------
	//鼠標按下
	//----------------------------------------------------------------------------------
	bool mousePressed(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
	//----------------------------------------------------------------------------------
	//鼠標釋放
	//----------------------------------------------------------------------------------
	bool mouseReleased(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
	//----------------------------------------------------------------------------------
	//鼠標移動
	//----------------------------------------------------------------------------------
	bool mouseMoved(const OIS::MouseEvent &evt);
	//----------------------------------------------------------------------------------
	//鍵盤按下
	//----------------------------------------------------------------------------------
	bool keyReleased(const OIS::KeyEvent &evt );
	//----------------------------------------------------------------------------------
	//鍵盤按下
	//----------------------------------------------------------------------------------
	bool keyPressed(const OIS::KeyEvent &evt );
};

Read more

Aquilae 2 啟動

Aquilae Demo再次嘗試了,在Aquilae 2裡面講不會再使用Ogre引擎,而改稱了DirectX 10,畢竟也只是想練手用,好給自己打磨一下圖形基礎.

UI部分將可能不再使用CEGUI,有可能改稱MyGUI.

物理引擎部分將會繼續使用PhysX,現在PhysX 3也出來了,變化和PhysX 2蠻大的,Aquilae使用PhysX 2還是PhysX 3還在考慮之中.

目前正在搭建框架ing…

敬請期待.

Aquilae Demo V1.0裡面的PhysX

Aquilae使用了OGRE作為圖形引擎,同時也使用了NVIDIA的PhysX,是的,使用了PhysX對OGRE封裝好的NxOGRE.

Demo裡面的PhysX效果其實非常簡單,看過Demo就知道,就是一大堆立方體從天而降,即將落到地面的時候被一個球擊中的效果.

代碼非常簡單,算是貼代碼玩吧.


bool PhysX::InitPhysX(SceneManager* mSceneM)
{
	mSceneMgr=mSceneM;

	mWorld= NxOgre::World::createWorld();

	NxOgre::SceneDescription sceneDesc;
	sceneDesc.mGravity = NxOgre::Vec3(0,-9.8f,0);
	sceneDesc.mName = "BloodyMessTutorial2";

	mScene = mWorld->createScene(sceneDesc);

	// 指定一些应用到整个场景的默认物理量
	mScene->getMaterial(0)->setStaticFriction(0.6); // 静摩擦系数
	mScene->getMaterial(0)->setDynamicFriction(0.6); // 动摩擦系数
	mScene->getMaterial(0)->setRestitution(0.3); // 恢复系数

	mRenderSystem = new OGRE3DRenderSystem(mScene);

	//创建场景几何

	CreateBox();
 	mScene->createSceneGeometry(new NxOgre::PlaneGeometry(0,NxOgre::Real3(0,1,0)), Matrix44_Identity);

	return true;
}

Read more

Aquilae V1.0 釋出

終於,為了期末趕工,Aquilae Demo的第一個正式發布版本。為了對付後天的實驗室期末答辯,算是草草完成V1.0版本吧.

恩,這個不是遊戲,僅僅只是一個Demo,展示自然場景。

使用了OGRE,HyDrax,NxOGRE(NVIDIA PhysX),CEGUI

截圖在上一篇網誌裡面可以看到很多,在這裡補上一張截圖。

PhysX碰撞的瞬間.

Read more

Aquilae第一次展示

恩,醜媳婦也要見公婆的,臨近期末,就把貼圖放出來幾張吧。

3D圖形引擎:OGRE
水面效果:HyDrax插件.
物理引擎:NVIDIA PhysX->NxOGRE.
GUI界面:CEGUI引擎.
場景導入:OgreMaxViewer.
火焰,雨滴:粒子系統實現.

Read more

Aquilae:重新开始

就重新开始吧.

之前也感觉Aquilae的代码糟透了.

今天感觉到情绪很低落,甚至早上醒来很久都不想起床,晚上去散步了,朋友向我倾诉那糟糕的情感的事情.

重灌系统,重新开始.

return top