MagicWolf, Всё предусмотренно!
Класс CRoot
Код:
#pragma once
#include "../../video/renderdevice/inc/CRenderDevice.h"
#include "../../core/inc/CCore.h"
#include "../../scene/inc/CSceneManager.h"
namespace unnamed
{
namespace root
{
class CRoot
{
public:
CRoot(void);
public:
~CRoot(void);
public:
core::CCore* createCore(LPCSTR name,int16 width,int16 height);
video::IRenderDevice* createRenderDevice();
scene::CSceneManager* createSceneManager();
private:
scene::CSceneManager* m_SceneMgr;
video::IRenderDevice* m_RenderDevice;
core::CCore* m_Core;
};
};
};
Код:
#include "../inc/CRoot.h"
namespace unnamed
{
namespace root
{
CRoot::CRoot(void)
{
}
CRoot::~CRoot(void)
{
}
core::CCore* CRoot::createCore(LPCSTR name,int16 width,int16 height)
{
m_Core = new core::CCore();
m_Core->createWindow(name,width,height);
return m_Core;
}
video::IRenderDevice* CRoot::createRenderDevice()
{
m_RenderDevice = new video::CRenderDevice();
m_RenderDevice->createDevice(m_Core);
return m_RenderDevice;
}
scene::CSceneManager* CRoot::createSceneManager()
{
m_SceneMgr = new scene::CSceneManager();
m_SceneMgr->setRenderDevice(m_RenderDevice->getDevice());
return m_SceneMgr;
}
};
};
Тоесть если девайс создавать через CRoot то тогда он автоматически связывается с созданным в CRoot окне,если нам нужно два и больше окна/девайса,есть два варианта:
1 - Создать ещё один CRoot
2 - Установит связь(Device<-->Window) в ручную.
Код:
m_Core->createWindow(name,width,height);
m_RenderDevice->createDevice(m_Core);
ВсЁ