int main(int argc, char * argv[]) { QApplication app(argc, argv); ResourceManager resourceManager; resourceManager.addLoader(new QtTextureLoader()); resourceManager.addStorer(new QtTextureStorer()); // Initialize plugin manager PluginManager::init(QCoreApplication::applicationFilePath().toStdString()); // Load example plugins PluginManager pluginManager; #ifdef NDEBUG pluginManager.addPath("plugins"); #else pluginManager.addPath("plugins/debug"); #endif pluginManager.scan("painters"); // Choose a painter std::string name = (argc > 1) ? argv[1] : "CubeScape"; std::cout << "Trying to create painter '" << name << "'\n"; gloperate::Painter * painter = nullptr; Plugin * plugin = pluginManager.plugin(name); if (!plugin) { globjects::fatal() << "Plugin '" << name << "' not found. Listing plugins found:"; pluginManager.printPlugins(); return 1; } painter = plugin->createPainter(resourceManager); // Create OpenGL window QSurfaceFormat format; format.setVersion(3, 2); format.setProfile(QSurfaceFormat::CoreProfile); format.setDepthBufferSize(24); QtOpenGLWindow * window = new QtOpenGLWindow(resourceManager, format); window->setPainter(painter); QRect rect = QApplication::desktop()->screenGeometry(); // used to center the mainwindow on desktop // Create main window QMainWindow mainWindow; mainWindow.setGeometry((rect.width() - 1280) / 2, (rect.height() - 720) / 2, 1280, 720); mainWindow.setCentralWidget(QWidget::createWindowContainer(window)); mainWindow.centralWidget()->setFocusPolicy(Qt::StrongFocus); mainWindow.show(); return app.exec(); }
int main(int argc, char * argv[]) { QApplication app(argc, argv); ResourceManager resourceManager; resourceManager.addLoader(new QtTextureLoader()); resourceManager.addStorer(new QtTextureStorer()); PluginManager pluginManager; pluginManager.addSearchPath(QCoreApplication::applicationDirPath().toStdString()); pluginManager.addSearchPath(QCoreApplication::applicationDirPath().toStdString() + "/plugins"); #ifdef NDEBUG pluginManager.scan("painters"); #else pluginManager.scan("paintersd"); #endif // Choose a painter std::unique_ptr<gloperate::Painter> painter(nullptr); std::string name = (argc > 1) ? argv[1] : "PostprocessingPipeline"; Plugin * plugin = pluginManager.plugin(name); if (!plugin) { globjects::fatal() << "Plugin '" << name << "' not found. Listing plugins found:"; pluginManager.printPlugins(); return 1; } AbstractPainterPlugin * painterPlugin = dynamic_cast<AbstractPainterPlugin *>(plugin); if (!painterPlugin) { globjects::fatal() << "Plugin '" << name << "' is not a painter plugin."; return 1; } painter.reset(painterPlugin->createPainter(resourceManager)); // Create Event Provider QtKeyEventProvider * keyProvider = new QtKeyEventProvider(); QtMouseEventProvider * mouseProvider = new QtMouseEventProvider(); QtWheelEventProvider * wheelProvider = new QtWheelEventProvider(); // Create OpenGL window QSurfaceFormat format; format.setVersion(3, 2); format.setProfile(QSurfaceFormat::CoreProfile); format.setDepthBufferSize(16); QtOpenGLWindow * window = new QtOpenGLWindow(resourceManager, format); window->setPainter(painter.get()); window->installEventFilter(keyProvider); window->installEventFilter(mouseProvider); window->installEventFilter(wheelProvider); // Create Mapping QtViewerMapping * mapping = new QtViewerMapping(window); mapping->setPainter(painter.get()); mapping->addProvider(keyProvider); mapping->addProvider(mouseProvider); mapping->addProvider(wheelProvider); QRect rect = QApplication::desktop()->screenGeometry(); // used to center the mainwindow on desktop // Create main window QMainWindow mainWindow; mainWindow.setGeometry((rect.width() - 1280) / 2, (rect.height() - 720) / 2, 1280, 720); mainWindow.setCentralWidget(QWidget::createWindowContainer(window)); mainWindow.centralWidget()->setFocusPolicy(Qt::StrongFocus); mainWindow.show(); return app.exec(); }