Files
LifeProject/LifeGraphics/LifeEngine.cpp
T

85 lines
1.9 KiB
C++
Raw Normal View History

2025-05-13 02:46:21 +03:00
#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);
}
}