Make GraphicsAppManager work without a platform

This commit is contained in:
2021-01-25 21:22:23 +01:00
parent 9d27784e08
commit 716cd7e94b
2 changed files with 23 additions and 3 deletions

View File

@@ -32,6 +32,24 @@ namespace openVulkanoCpp
window->SetWindowHandler(this);
}
GraphicsAppManager::GraphicsAppManager(IGraphicsApp* app, IWindow* window, RenderAPI::RenderApi renderApi)
: app(app), renderApi(renderApi)
{
Utils::SetThreadName("Main");
Logger::SetupLogger();
if (!app)
{
constexpr auto msg = "The app must not be null!";
Logger::MANAGER->error(msg);
throw std::runtime_error(msg);
}
//platform = std::unique_ptr<IPlatform>(PlatformProducer::CreatePlatform(renderApi));
this->window = window;
renderer = std::unique_ptr<IRenderer>(PlatformProducer::CreateRenderManager(renderApi));
app->SetGraphicsAppManager(this);
window->SetWindowHandler(this);
}
GraphicsAppManager::~GraphicsAppManager() noexcept
{
if (windowTitleFormat.empty()) return;
@@ -73,7 +91,7 @@ namespace openVulkanoCpp
{
Logger::MANAGER->info("Initializing ...");
app->Init();
platform->Init();
if (platform) platform->Init();
window->Init(renderApi);
//TODO restore window settings if there are any set
renderer->Init(static_cast<IGraphicsAppManager*>(this), window);
@@ -100,7 +118,7 @@ namespace openVulkanoCpp
void GraphicsAppManager::LoopTick()
{
platform->Tick();
if (platform) platform->Tick();
if (paused)
{ // The rendering is paused
// No need to burn cpu time if the app is paused

View File

@@ -39,6 +39,8 @@ namespace openVulkanoCpp
public:
explicit GraphicsAppManager(IGraphicsApp* app, RenderAPI::RenderApi renderApi = RenderAPI::Vulkan);
explicit GraphicsAppManager(IGraphicsApp* app, IWindow* window, RenderAPI::RenderApi renderApi = RenderAPI::Vulkan);
~GraphicsAppManager() noexcept override;
public: // Getter
@@ -62,7 +64,7 @@ namespace openVulkanoCpp
public:
void Run() override;
private:
//private:
void StartUp();
void Loop();