/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #include "Host/GraphicsAppManager.hpp" #include "ExampleApps/CubesExampleApp.hpp" #include "ExampleApps/MovingCubeApp.hpp" #include "ExampleApps/TexturedCubeExampleApp.hpp" #include "ExampleApps/BillboardExampleApp.hpp" #include #include #include #include #include #include using namespace OpenVulkano; int main(int argc, char** argv) { std::vector examples = { "Cubes Example App", "Moving Cube Example App", "Textured Cube Example App", "Billboard Example App" }; int selectedExample = 0; ftxui::MenuOption option; auto screen = ftxui::ScreenInteractive::TerminalOutput(); option.on_enter = screen.ExitLoopClosure(); auto menu = ftxui::Menu(&examples, &selectedExample, option); screen.Loop(menu); std::unique_ptr app; switch (selectedExample) { case 0: app = CubesExampleApp::CreateUnique(); break; case 1: app = MovingCubeApp::CreateUnique(); break; case 2: app = TexturedCubeExampleApp::CreateUnique(); break; case 3: app = BillboardExampleApp::CreateUnique(); break; default: throw std::runtime_error("Invalid menu selection!"); break; } GraphicsAppManager manager(app.get()); manager.Run(); return 0; }