#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); } }