85 lines
1.9 KiB
C++
85 lines
1.9 KiB
C++
#include "LifeEngine.h"
|
|||
|
|
#define COMPILE_WITH_DX11
|
||
|
|
//#define COMPILE_WITH_SW
|
||
|
|
#include "Globals.h"
|
||
|
|
#include "IScene.h"
|
||
|
|
#ifdef COMPILE_WITH_DX11
|
||
|
|
#include "render/dx11/RendererDX11.h"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifdef COMPILE_WITH_SW
|
||
|
|
#include "RendererSoftware.h"
|
||
|
|
#endif
|
||
|
|
|
||
|
|
namespace LifeGraphics
|
||
|
|
{
|
||
|
|
LifeEngine::LifeEngine()
|
||
|
|
:engine_time(0.01f), appTime(0.0f)
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
LifeEngine::~LifeEngine()
|
||
|
|
{
|
||
|
|
g_pRenderer->BeginCleanup();
|
||
|
|
ResourceManager::me()->ReleaseResources();
|
||
|
|
g_pRenderer->EndCleanup();
|
||
|
|
SAFE_DELETE(g_pRenderer);
|
||
|
|
}
|
||
|
|
|
||
|
|
PluginServer* LifeEngine::GetPluginServer()
|
||
|
|
{
|
||
|
|
return &g_pluginServer;
|
||
|
|
}
|
||
|
|
|
||
|
|
IRenderer* LifeEngine::Init(LifeGraphics::RENDERER_TYPE type, RenderParams params)
|
||
|
|
{
|
||
|
|
switch(type)
|
||
|
|
{
|
||
|
|
case RT_DIRECTX_9:
|
||
|
|
//Nothing for now
|
||
|
|
break;
|
||
|
|
case RT_DIRECTX_10:
|
||
|
|
/*g_pluginServer.LoadPlugin("RendererDX10.dll");
|
||
|
|
g_pRenderer = g_pluginServer.GetRenderer(0);
|
||
|
|
printf(g_pRenderer->GetRendererName().c_str());
|
||
|
|
g_pRenderer->Open(params);*/
|
||
|
|
break;
|
||
|
|
case RT_DIRECTX_11:
|
||
|
|
//g_pluginServer.LoadPlugin("RendererDX11.dll");
|
||
|
|
g_pRenderer = new RendererDX11();
|
||
|
|
g_pRenderer->Open(params);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
//window = params.Window;
|
||
|
|
//window->Event_Resize += NewDelegate(this, &Video::LifeEngine::onWindowResize);
|
||
|
|
|
||
|
|
CG::me()->SetRenderer(g_pRenderer);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
debugDrawer = new IDebugDrawer(g_pRenderer);
|
||
|
|
return g_pRenderer;
|
||
|
|
}
|
||
|
|
|
||
|
|
IRenderer* LifeEngine::GetRenderer()
|
||
|
|
{
|
||
|
|
return g_pRenderer;
|
||
|
|
}
|
||
|
|
|
||
|
|
void LifeEngine::onWindowResize(LifeCore::IRenderWindow* window)
|
||
|
|
{
|
||
|
|
printf("LOOOOOL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n WINDOW RESIZED!!!!!!!!!!!!!!!!!!!!!\n!!!!!!!!!!!!!!!!!!!!!!\n");
|
||
|
|
}
|
||
|
|
|
||
|
|
void LifeEngine::RenderScene(LifeGraphics::IScene* scene, IRenderOutput* output)
|
||
|
|
{
|
||
|
|
scene->Render(output);
|
||
|
|
}
|
||
|
|
IRenderOutput* LifeEngine::CreateRenderOutput(LifeCore::IRenderWindow* wnd){
|
||
|
|
LifeGraphics::ISwapChain* sc = GetRenderer()->CreateSwapChain(wnd);
|
||
|
|
if(sc == nullptr)
|
||
|
|
return nullptr;
|
||
|
|
return new IRenderOutput(wnd, sc);
|
||
|
|
}
|
||
|
|
}
|